Skip to content
Snippets Groups Projects
Verified Commit 979a3941 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

corrected a lot of typos

parent f0244f2b
Branches
No related tags found
No related merge requests found
...@@ -32,7 +32,7 @@ initialiser(graphe) // tous sommets sont non-visités ...@@ -32,7 +32,7 @@ initialiser(graphe) // tous sommets sont non-visités
file = visiter(sommet, vide) // sommet est un sommet file = visiter(sommet, vide) // sommet est un sommet
// du graphe // du graphe
tant que !est_vide(file) tant que !est_vide(file)
v = défiler(file) v = defiler(file)
file = visiter(v, file) file = visiter(v, file)
file visiter(sommet, file) file visiter(sommet, file)
...@@ -463,7 +463,7 @@ tab dijkstra(graph, s, t) ...@@ -463,7 +463,7 @@ tab dijkstra(graph, s, t)
. . . . . .
* Pour chaque nouveau noeud à visiter, il suffit d'enregistrer d'où on est venu! * Pour chaque nouveau noeud à visiter, il suffit d'enregistrer d'où on est venu!
* On a besoin d'un tableau `précédent`. * On a besoin d'un tableau `precedent`.
## Modifier le pseudo-code ci-dessus pour ce faire (3min matrix) ## Modifier le pseudo-code ci-dessus pour ce faire (3min matrix)
...@@ -475,7 +475,7 @@ tab dijkstra(graph, s, t) ...@@ -475,7 +475,7 @@ tab dijkstra(graph, s, t)
tab, tab dijkstra(graph, s, t) tab, tab dijkstra(graph, s, t)
pour chaque v dans graphe pour chaque v dans graphe
distance[v] = infini distance[v] = infini
précédent[v] = indéfini precedent[v] = indéfini
q = ajouter(q, v) q = ajouter(q, v)
distance[s] = 0 distance[s] = 0
tant que non_vide(q) tant que non_vide(q)
...@@ -489,8 +489,8 @@ tab, tab dijkstra(graph, s, t) ...@@ -489,8 +489,8 @@ tab, tab dijkstra(graph, s, t)
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
précédent[v] = u precedent[v] = u
retourne distance, précédent retourne distance, precedent
``` ```
# Algorithme de Dijkstra # Algorithme de Dijkstra
...@@ -500,14 +500,14 @@ tab, tab dijkstra(graph, s, t) ...@@ -500,14 +500,14 @@ tab, tab dijkstra(graph, s, t)
. . . . . .
```C ```C
pile parcours(précédent, s, t) pile parcours(precedent, s, t)
sommets = vide sommets = vide
u = t u = t
// on a atteint t ou on ne connait pas de chemin // on a atteint t ou on ne connait pas de chemin
si u != s && précédent[u] != indéfini si u != s && precedent[u] != indéfini
tant que vrai tant que vrai
sommets = empiler(sommets, u) sommets = empiler(sommets, u)
u = précédent[u] u = precedent[u]
si u == s // la source est atteinte si u == s // la source est atteinte
retourne sommets retourne sommets
retourne sommets retourne sommets
...@@ -538,11 +538,11 @@ pile parcours(précédent, s, t) ...@@ -538,11 +538,11 @@ pile parcours(précédent, s, t)
## Trois fonction principales ## Trois fonction principales
```C ```C
booléen est_vide(élément) // triviale booléen est_vide(element) // triviale
élément enfiler(élément, data, priorité) element enfiler(element, data, priorite)
data défiler(élément) data defiler(element)
rien modifier_priorité(élément, data, priotié) rien changer_priorite(element, data, priorite)
nombre priorité(data) // utilitaire nombre priorite(element) // utilitaire
``` ```
## Pseudo-implémentation: structure (1min) ## Pseudo-implémentation: structure (1min)
...@@ -550,10 +550,10 @@ nombre priorité(data) // utilitaire ...@@ -550,10 +550,10 @@ nombre priorité(data) // utilitaire
. . . . . .
```C ```C
struct élément struct element
data data
priorité priorite
élément suivant element suivant
``` ```
# Les files de priorité # Les files de priorité
...@@ -563,61 +563,61 @@ struct élément ...@@ -563,61 +563,61 @@ struct élément
. . . . . .
```C ```C
élément enfiler(élément, data, priorité) element enfiler(element, data, priorite)
n_élément = créer_élément(data, priorité) n_element = creer_element(data, priorite)
si est_vide(élément) si est_vide(element)
retourne n_élément retourne n_element
si priorité(d) > priorité(e.d) si priorite(n_element) > priorite(element)
n_élément.suivant = élément n_element.suivant = element
retourne n_élément retourne n_element
sinon sinon
tmp = élément tmp = element
préc = élément prec = element
tant que !est_vide(tmp) && priorité < tmp.priorité tant que !est_vide(tmp) && priorite < priorite(tmp)
préc = tmp prec = tmp
tmp = tmp.suivant tmp = tmp.suivant
prev.suivant = n_élément prev.suivant = n_element
n_élément.suivant = tmp n_element.suivant = tmp
retourne élément retourne element
``` ```
# Les files de priorité # Les files de priorité
## Pseudo-implémentation: défiler (2min) ## Pseudo-implémentation: defiler (2min)
. . . . . .
```C ```C
data, élément défiler(élément) data, element defiler(element)
si est_vide(élément) si est_vide(element)
retourne AARGL! retourne AARGL!
sinon sinon
tmp = élément.data tmp = element.data
n_élément = élément.suivant n_element = element.suivant
libérer(élément) liberer(element)
retourne tmp, n_élément retourne tmp, n_element
``` ```
# Algorithme de Dijkstra avec file de priorité min # Algorithme de Dijkstra avec file de priorité min
```C ```C
distance, précédent dijkstra(graphe, s, t): distance, precedent dijkstra(graphe, s, t):
distance[source] = 0 distance[source] = 0
fp = file_p_vide() fp = file_p_vide()
pour v dans sommets(graphe) pour v dans sommets(graphe)
si v != s si v != s
distance[v] = infini distance[v] = infini
précédent[v] = indéfini precedent[v] = indéfini
fp = enfiler(fp, v, distance[v]) fp = enfiler(fp, v, distance[v])
tant que !est_vide(fp) tant que !est_vide(fp)
u, fp = défiler(fp) u, fp = defiler(fp)
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]
distance[v] = n_distance distance[v] = n_distance
précédent[v] = u precedent[v] = u
fp = changer_priorité(fp, v, n_distance) fp = changer_priorite(fp, v, n_distance)
retourne distance, précédent retourne distance, precedent
``` ```
# Algorithme de Dijkstra avec file # Algorithme de Dijkstra avec file
...@@ -633,13 +633,13 @@ O(V) si v != s ...@@ -633,13 +633,13 @@ O(V) si v != s
O(V) fp = enfiler(fp, v, distance[v]) // notre impl est nulle O(V) fp = enfiler(fp, v, distance[v]) // notre impl est nulle
------------------O(V * V)------------------------------- ------------------O(V * V)-------------------------------
tant que !est_vide(fp) tant que !est_vide(fp)
O(1) u, fp = défiler(fp) O(1) u, fp = defiler(fp)
--------------------------------------------------------- ---------------------------------------------------------
O(E) pour v dans voisinage de u O(E) 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]
distance[v] = n_distance distance[v] = n_distance
O(V) fp = changer_priorité(fp, v, n_distance) O(V) fp = changer_priorite(fp, v, n_distance)
--------------------------------------------------------- ---------------------------------------------------------
retourne distance retourne distance
``` ```
...@@ -667,7 +667,7 @@ O(V) fp = changer_priorité(fp, v, n_distance) ...@@ -667,7 +667,7 @@ O(V) fp = changer_priorité(fp, v, n_distance)
## A chaque étape donner: ## A chaque étape donner:
* Le tableau des distances à `a`; * Le tableau des distances à `a`;
* Le tableau des prédécessueurs; * Le tableau des prédécesseurs;
* L'état de la file de priorité. * L'état de la file de priorité.
# Algorithme de Dijkstra (corrigé) # Algorithme de Dijkstra (corrigé)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment