diff --git a/slides/cours_26.md b/slides/cours_26.md index 58886e19b59e0a6c809c2615b52c798ee5ef6b5d..db566a5b9cfc41c9c0b1dee9491a52f034419f58 100644 --- a/slides/cours_26.md +++ b/slides/cours_26.md @@ -826,7 +826,7 @@ file_priorité, distance, parent initalisation(graphe) . . . ```C -sommets, parent initalisation(file_priorité, distance, parent) +sommets, parent prim(file_priorité, distance, parent) sommets = vide tant que !est_vide(file_priorité) u, fp = défiler(file_priorité) @@ -839,3 +839,253 @@ sommets, parent initalisation(file_priorité, distance, parent) retourne sommets, parent ``` +# Exemple d'algorithme de Prim + +::: columns + +:::: {.column width="40%"} + +## Un exemple + + + +:::: + +:::: column + +``` +FP | e | d | b | c | a | +---------------------------------- +D | 0 | inf | inf | inf | inf | + + | e | d | b | c | a | +---------------------------------- +P | - | - | - | - | - | +``` + +## Devient? + +. . . + +``` +FP | d | b | c | a | +---------------------------- +D | 4 | 5 | 5 | inf | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | e | - | +``` + +:::: + +::: + +# Exemple d'algorithme de Prim + +::: columns + +:::: {.column width="40%"} + +## Un exemple + + + +:::: + +:::: column + +``` +FP | d | b | c | a | +---------------------------- +D | 4 | 5 | 5 | inf | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | e | - | +``` + +## Devient? + +. . . + +``` +FP | a | c | b | +---------------------- +D | 2 | 4 | 5 | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | d | d | +``` + +:::: + +::: + +# Exemple d'algorithme de Prim + +::: columns + +:::: {.column width="40%"} + +## Un exemple + + + +:::: + +:::: column + +``` +FP | a | c | b | +---------------------- +D | 2 | 4 | 5 | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | d | d | +``` + +## Devient? + +. . . + +``` +FP | c | b | +---------------- +D | 4 | 5 | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | d | d | +``` + +:::: + +::: + +# Exemple d'algorithme de Prim + +::: columns + +:::: {.column width="40%"} + +## Un exemple + + + +:::: + +:::: column + +``` +FP | c | b | +---------------- +D | 4 | 5 | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | d | d | +``` + +## Devient? + +. . . + +``` +FP | b | +---------- +D | 5 | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | d | d | +``` + +:::: + +::: + +# Exemple d'algorithme de Prim + +::: columns + +:::: {.column width="40%"} + +## Un exemple + + + +:::: + +:::: column + +``` +FP | b | +---------- +D | 5 | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | d | d | +``` + +## Devient? + +. . . + +``` +FP | +---- +D | + + | e | d | b | c | a | +---------------------------------- +P | - | e | e | d | d | +``` + +:::: + +::: + +# Exercice: algorithme de Prim + +## Appliquer l'algorithme de Prim à (15min): + + + +# Exercice: algorithme de Prim + +## Solution + + + +# Complexité de l'algorithme de Prim + +\footnotesize + +```C +file_priorité, distance, parent initalisation(graphe) + // choix r et initialisation + pour v dans sommets(graphe) +O(|V|) // initialisation distance et parent + fp = enfiler(fp, v, distance[v]) + retourne fp, distance, parent +sommets, parent prim(file_priorité, distance, parent) + sommets = vide + tant que !est_vide(file_priorité) +O(|V|) u, fp = défiler(file_priorité) + sommets = insérer(sommets, u) + pour v dans voisinage de u et pas dans sommets + O(|E|) si w(u, v) < distance[v] + // màj dista + parent + O(|V|) fp = changer_priorité(fp, w, w(u, v)) + retourne sommets, parent +``` + +* $O(|V|)+O(|E|)+O(|V|^2)=O(|E|+|V|^2)$ +* Remarque: $O(|E|)$ n'est pas mutliplié par $O(|V|)$, car les arêtes parcourues qu'une fois en **tout**. + +# Algorithme de Kruskal + diff --git a/slides/figs/prim_exercice.png b/slides/figs/prim_exercice.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9995b006845743663243acc9af7641c92a8fbf Binary files /dev/null and b/slides/figs/prim_exercice.png differ diff --git a/slides/figs/prim_solution.png b/slides/figs/prim_solution.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c207245814b89147c62f64b0c51d1a59840fc8 Binary files /dev/null and b/slides/figs/prim_solution.png differ