Skip to content
Snippets Groups Projects
Commit febfc3f8 authored by paul.albuquer's avatar paul.albuquer
Browse files

Edit cours_24.md

parent c5508e4d
Branches
No related tags found
No related merge requests found
Pipeline #40724 passed
...@@ -404,8 +404,8 @@ si distance(u,v) > distance(u,w) + distance(w,v) ...@@ -404,8 +404,8 @@ si distance(u,v) > distance(u,w) + distance(w,v)
tab dijkstra(graph, s, t) tab dijkstra(graph, s, t)
pour chaque v dans graphe pour chaque v dans graphe
distance[v] = infini distance[v] = infini
q = ajouter(q, v) // q est une liste
distance[s] = 0 distance[s] = 0
q = ajouter(q, s) // q est une liste
tant que non_vide(q) tant que non_vide(q)
// sélection de u t.q. la distance dans q est min // sélection de u t.q. la distance dans q est min
u = min(q, distance) u = min(q, distance)
...@@ -444,13 +444,13 @@ tab, tab dijkstra(graph, s, t) ...@@ -444,13 +444,13 @@ tab, tab dijkstra(graph, s, t)
pour chaque v dans graphe pour chaque v dans graphe
distance[v] = infini distance[v] = infini
precedent[v] = indéfini precedent[v] = indéfini
q = ajouter(q, v)
distance[s] = 0 distance[s] = 0
q = ajouter(q, s)
tant que non_vide(q) tant que non_vide(q)
// sélection de u t.q. la distance dans q est min // sélection de u t.q. la distance dans q est min
u = min(q, distance) u = min(q, distance)
si u == t si u == t
retourne distance retourne distance, precedent
q = remove(q, u) q = remove(q, u)
// voisin de u encore dans q // voisin de u encore dans q
pour chaque v dans voisinage(u, q) pour chaque v dans voisinage(u, q)
...@@ -571,8 +571,8 @@ data, element defiler(element) ...@@ -571,8 +571,8 @@ data, element defiler(element)
```C ```C
distance, precedent dijkstra(graphe, s, t): distance, precedent dijkstra(graphe, s, t):
distance[source] = 0
fp = file_p_vide() fp = file_p_vide()
distance[s] = 0
pour v dans sommets(graphe) pour v dans sommets(graphe)
si v != s si v != s
distance[v] = infini distance[v] = infini
...@@ -580,6 +580,8 @@ distance, precedent dijkstra(graphe, s, t): ...@@ -580,6 +580,8 @@ distance, precedent dijkstra(graphe, s, t):
fp = enfiler(fp, v, distance[v]) fp = enfiler(fp, v, distance[v])
tant que !est_vide(fp) tant que !est_vide(fp)
u, fp = defiler(fp) u, fp = defiler(fp)
si u == t
retourne distance, precedent
pour v dans voisinage de u pour v dans voisinage de u
n_distance = distance[u] + w(u, v) n_distance = distance[u] + w(u, v)
si n_distance < distance[v] si n_distance < distance[v]
...@@ -595,20 +597,22 @@ distance, precedent dijkstra(graphe, s, t): ...@@ -595,20 +597,22 @@ distance, precedent dijkstra(graphe, s, t):
```C ```C
distance dijkstra(graphe, s, t) distance dijkstra(graphe, s, t)
--------------------------------------------------------- --------------------O(V*V)--------------------------------
pour v dans sommets(graphe) distance[s] = 0
O(V) si v != s fp = file_p_vide()
pour v dans sommets(graphe) // O(|V|)
si v != s
distance[v] = infini distance[v] = infini
O(V) fp = enfiler(fp, v, distance[v]) // notre impl est nulle fp = enfiler(fp, s, distance[s]) // O(|V|)
------------------O(V * V)------------------------------- ------------------O(V * V)-------------------------------
tant que !est_vide(fp) tant que !est_vide(fp)
O(1) u, fp = defiler(fp) u, fp = defiler(fp) // O(1)
--------------------------------------------------------- ---------------------------------------------------------
O(E) pour v dans voisinage de u pour v dans voisinage de u // O(|E|)
n_distance = distance[u] + w(u, v) n_distance = distance[u] + w(u, v)
si n_distance < distance[v] si n_distance < distance[v]
distance[v] = n_distance distance[v] = n_distance
O(V) fp = changer_priorite(fp, v, n_distance) fp = changer_priorite(fp, v, n_distance) // O(|V|)
--------------------------------------------------------- ---------------------------------------------------------
retourne distance retourne distance
``` ```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment