diff --git a/slides/cours_25.md b/slides/cours_25.md index ed8ee2b7b4b6b57242601496540c5bf526388309..7052768a9312ea941e09e64a45064a2f16e8fc13 100644 --- a/slides/cours_25.md +++ b/slides/cours_25.md @@ -2,17 +2,17 @@ title: "Graphes - Généralités" date: "2022-05-03" patat: - eval: - tai: - command: fish - fragment: false - replace: true - ccc: - command: fish - fragment: false - replace: true - images: - backend: auto + eval: + tai: + command: fish + fragment: false + replace: true + ccc: + command: fish + fragment: false + replace: true + images: + backend: auto --- # Questions @@ -135,21 +135,14 @@ $$ # Algorithme de Dijkstra -## Avez-vous une idée de comment chercher pour un plus court chemin? - -``` - - - - - - - - - +## Comment chercher pour un plus court chemin? +. . . ``` +si distance(u,v) > distance(u,w) + distance(w,v) + on passe par w plutôt qu'aller directement +``` # Algorithme de Dijkstra @@ -222,4 +215,167 @@ tab, tab dijkstra(graph, s, t) retourne distance, précédent ``` -## Comment faire pour avoir toutes les plus petites distances à tous les autres noeuds? \ No newline at end of file +# Algorithme de Dijkstra + +## Comment faire pour avoir toutes les plus petites distances à tous les autres noeuds? + +. . . + +```C +pile parcours(précédent, s, t) + sommets = vide + u = t + si u != s || précédent[u] != indéfini // on a atteint t + tant que vrai // la source est atteinte + sommets = empiler(sommets, u) + u = précédent[u] + si u == s + retourne sommets + retourne sommets +``` + +# Algorithme de Dijkstra + +::: columns + +:::: column + + + +:::: + +:::: column + +. . . + +![1 visité, `D[2]=1`, `D[4]=3`.](figs/dijkstra_1.png) + +:::: + +::: + +# Algorithme de Dijkstra + +::: columns + +:::: column + + + + +:::: + +:::: column + +. . . + +![2 visité, `D[3]=2`, `D[7]=3`.](figs/dijkstra_2.png) + +:::: + +::: + +# Algorithme de Dijkstra + +::: columns + +:::: column + + + + +:::: + +:::: column + +. . . + +![3 visité, `D[7]=3` inchangé, `D[6]=6`.](figs/dijkstra_3.png) + +:::: + +::: + +# Algorithme de Dijkstra + + +::: columns + +:::: column + + + + +:::: + +:::: column + +. . . + +![4 visité, `D[7]=3` inchangé, `D[5]=9`.](figs/dijkstra_4.png) + +:::: + +::: + +# Algorithme de Dijkstra + +::: columns + +:::: column + + + + +:::: + +:::: column + +. . . + +![7 visité, `D[5]=7`, `D[6]=6` inchangé.](figs/dijkstra_5.png) + +:::: + +::: + +# Algorithme de Dijkstra + +::: columns + +:::: column + + + + +:::: + +:::: column + +. . . + +![`6` visité, `D[5]=7` inchangé.](figs/dijkstra_6.png) + +:::: + +::: + +# Algorithme de Dijkstra + +::: columns + +:::: column + + + +:::: + +:::: column + +. . . + + + +:::: + +::: \ No newline at end of file