Skip to content
Snippets Groups Projects
Commit 84d5a584 authored by Pierre Kunzli's avatar Pierre Kunzli
Browse files

modifs cours 25

parent 02e16eb4
No related branches found
No related tags found
No related merge requests found
---
title: "Graphes - Généralités"
title: "Graphes - Plus court chemin avec l'algorithme de Dijkstra"
date: "2022-05-03"
patat:
eval:
......@@ -172,8 +172,9 @@ tab dijkstra(graph, s, t)
si u == t
retourne distance
q = remove(q, u)
pour chaque v dans voisinage(u, q) // voisin de u encore dans q
n_distance = distance[u] + w(i, v)
// voisin de u encore dans q
pour chaque v dans voisinage(u, q)
n_distance = distance[u] + w(u, v)
si n_distance < distance[v]
distance[v] = n_distance
retourne distance
......@@ -207,8 +208,9 @@ tab, tab dijkstra(graph, s, t)
si u == t
retourne distance
q = remove(q, u)
pour chaque v dans voisinage(u, q) // voisin de u encore dans q
n_distance = distance[u] + w(i, v)
// voisin de u encore dans q
pour chaque v dans voisinage(u, q)
n_distance = distance[u] + w(u, v)
si n_distance < distance[v]
distance[v] = n_distance
précédent[v] = u
......@@ -217,7 +219,7 @@ tab, tab dijkstra(graph, s, t)
# Algorithme de Dijkstra
## Comment faire pour avoir toutes les plus petites distances à tous les autres noeuds?
## Comment reconstruire un chemin ?
. . .
......@@ -225,11 +227,12 @@ tab, tab dijkstra(graph, s, t)
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
// on a atteint t ou on ne connait pas de chemin
si u != s && précédent[u] != indéfini
tant que vrai
sommets = empiler(sommets, u)
u = précédent[u]
si u == s
si u == s // la source est atteinte
retourne sommets
retourne sommets
```
......@@ -392,7 +395,7 @@ pile parcours(précédent, s, t)
* Elle existe en deux saveurs: `min` ou `max`:
* File `min`: les éléments les plus petits sont retirés en premier.
* File `max`: les éléments les plus grands sont retirés en premier.
* On s'intéresse à la `max`.
* On regarde l'implémentation de la `max`.
## Comment on fait ça?
......@@ -408,7 +411,7 @@ pile parcours(précédent, s, t)
booléen est_vide(élément) // triviale
élément enfiler(élément, data, priorité)
data défiler(élément)
rien modifiier_priorité(élément, data, priotié)
rien modifier_priorité(élément, data, priotié)
nombre priorité(data) // utilitaire
```
......@@ -465,7 +468,7 @@ data, élément défiler(élément)
retourne tmp, n_élément
```
# Algorithme de Dijkstra avec file
# Algorithme de Dijkstra avec file de priorité min
```C
distance, précédent dijkstra(graphe, s, t):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment