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

Corrected Prim pseudo-code

parent 1129d7fd
No related branches found
No related tags found
No related merge requests found
Pipeline #40722 passed
......@@ -436,7 +436,7 @@ P | - | e | e | d | d |
## Structures de données
* Dans quoi allons nous stocker les sommets?
* Dans quoi allons-nous stocker les sommets?
. . .
......@@ -467,7 +467,6 @@ P | - | e | e | d | d |
file_priorité, distance, parent initialisation(graphe)
s_initial = aléatoire(graphe)
distance[s_initial] = 0
parent[s_initial] = indéfini
fp = file_p_vide()
pour s_courant dans sommets(graphe)
si s_courant != s_initial
......@@ -486,7 +485,8 @@ file_priorité, distance, parent initialisation(graphe)
. . .
```C
sommets, parent prim(file_priorité, distance, parent)
distance, parent prim(graphe)
fp, distance, parent initialisation(graphe)
sommets = vide
tant que !est_vide(fp)
s_courant, fp = défiler(fp)
......@@ -496,9 +496,9 @@ sommets, parent prim(file_priorité, distance, parent)
si poids(s_courant, s_voisin) < distance[s_voisin]
parent[s_voisin] = s_courant
distance[s_voisin] = poids(s_courant, s_voisin)
fp = changer_priorité(fp,
s_voisin, poids(s_courant, s_voisin))
retourne sommets, parent
fp = changer_priorité(fp, s_voisin,
poids(s_courant, s_voisin))
retourne distance, parent
```
# Exercice: algorithme de Prim
......@@ -521,23 +521,24 @@ sommets, parent prim(file_priorité, distance, parent)
file_priorité, distance, parent initialisation(graphe)
// choix r et initialisation
pour v dans sommets(graphe)
O(|V|) // initialisation distance et parent
// initialisation distance et parent en O(|V|)
fp = enfiler(fp, v, distance[v])
retourne fp, distance, parent
sommets, parent prim(file_priorité, distance, parent)
distance, parent prim(graphe)
fp, distance, parent initialisation(graphe) // O(|V|)
sommets = vide
tant que !est_vide(file_priorité)
O(|V|) u, fp = défiler(file_priorité)
tant que !est_vide(fp)
u, fp = défiler(fp) // O(|V|)
sommets = insérer(sommets, u)
pour v dans voisinage de u et pas dans sommets
O(|E|) si w(u, v) < distance[v]
si poids(u, v) < distance[v] // O(|E|)
// màj distance + parent
O(|V|) fp = changer_priorité(fp, w, w(u, v))
retourne sommets, parent
fp = changer_priorité(fp, v, poids(u, v)) // O(|V|)
retourne distance, parent
```
* $O(|V|)+O(|E|)+O(|V|^2)=O(|E|+|V|^2)$
* Remarque: $O(|E|)$ n'est pas mutliplié par $O(|V|)$, car les arêtes ne sont parcourues qu'une fois en **tout**.
* Remarque: $O(|E|)$ n'est pas mutliplié par $O(|V|)$, car les arêtes ne sont traitées qu'une fois en **tout**.
# Algorithme de Kruskal
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment