diff --git a/slides/cours_25.md b/slides/cours_25.md index 45e9ade5784e85e96d81ff0dd83d665f7883db99..eb6e6a086ac21280888899823c93201e91ebbefe 100644 --- a/slides/cours_25.md +++ b/slides/cours_25.md @@ -523,31 +523,15 @@ distance, précédent dijkstra(graphe, s, t):  -# Complexité de l'algorithme de Dijkstra? +# Limitation de l'algorithme de Dijkstra -\footnotesize +## Que se passe-t-il pour? + +{width=50%} + +## Quel est le problème? . . . -```C -distance, précédent dijkstra(graphe, s, t): - distance[source] = 0 - fp = file_p_vide() ----------------------------------------------- - pour v dans sommets(graphe) - si v != s -O(V) distance[v] = infini - fp = enfiler(fp, v, distance[v]) ----------------------------------------------- - tant que !est_vide(fp) -O(V) u, fp = défiler(fp) - ---------------------------------------------- - pour v dans voisinage de u - O(E) n_distance = distance[u] + w(i, v) - si n_distance < distance[v] - distance[v] = n_distance - fp = changer_priorité(fp, v, n_distance) - ---------------------------------------------- ----------------------------------------------- - retourne distance -``` +* L'algorithme n'essaiera jamais le chemin `s->x->y->v` et prendra direct `s->v`. +* Ce problème n'apparaît que s'il y a des poids négatifs. diff --git a/slides/figs/exemple_neg.png b/slides/figs/exemple_neg.png new file mode 100644 index 0000000000000000000000000000000000000000..56fe75a23580b955eb62487b9aa3c7a97874bdb2 Binary files /dev/null and b/slides/figs/exemple_neg.png differ