Vous êtes sur la page 1sur 2

Arbre couvrant minimal d’un graphe (suite) Algorithme de Prim-Jarník

Algorithme similaire à l”algorithme de Dijkstra (dans le cas des graphes


connexes)
On choisit un sommet s aléatoirement qu’on met dans un “nuage” et on
construit l’arbre couvrant minimal en faisant grossir le “nuage” d’un
sommet à la fois.
On garde en mémoire à chaque sommet v, une étiquette d(v) qui ici est
égale au poids minimal parmi les poids des arêtes reliant v à un sommet à
l’intérieur du nuage.
À chaque étape:
On ajoute au nuage le sommet u extérieur ayant la plus petite étiquette d(u)
On met à jour les étiquettes des sommets adjacents à u

IFT2010, H2004, Sylvie Hamel


Université de Montréal
ACM, suite et fin! 1

Exemple: Exemple (suite)


7
! 7 D
2
! 7 D 7 2
7 D B 4
B 4 2
8 B 4 5 9 4
! 9 ! 2 5 F
5 F 5 9 ! C
2 C 5 F 8
8 2 C 3
3 8 8
8 3 E
E !7 8 A
A E 7 37
0 7 A 7
0 7

7
7 7 D
!7 7 D 2
2 7 D 2 B 4
B 4 9 4
5
B 4 5 9 !4 2 5 F
5
8 9 ! 2 5 F C
5 F C 8
2 C 8 8 3
8 8 3 E
8 3 E A 3
E A 0 7
A 7 7
0

IFT2010, H2004, Sylvie Hamel IFT2010, H2004, Sylvie Hamel


Université de Montréal
ACM, suite et fin! 2 Université de Montréal
ACM, suite et fin! 3
Analyse de la complexité en temps Retour au chemin de poids minimal
Opérations sur les graphes: entre deux sommets
On appelle l’opération Incidentes(v) une fois pour chaque sommet v. Donc,
temps total si on utilise une liste d’adjacence de O(m)
L’algorithme de Dijkstra nous permet de trouver, étant donné une source,
Étiquettage: les chemins de poids minimal entre cette source et tous les autres
On peut changer l’étiquette D(u) d’un sommet u jusqu’à O(deg(u)) fois. sommet du graphe. Fonctionne seulement avec des arêtes de poids non-
Donc, au total, l’étiquettage prend un temps O(m) négatifs en O((n+m) log n)
Opérations de liste avec priorités
Chaque sommet est inséré une fois dans la liste et retiré une fois. Chaque L’algorithme de Bellman-Ford nous permet de trouver, étant donné une
insertion et suppresion prend un temps O(log n). Total O(n log n)
source, les chemins de poids minimal entre cette source et tous les autres
La clé de chaque sommet u est modifiée au plus O(deg(u)) et prend un sommet du graphe. Fonctionne avec des arêtes de poids négatifs en
temps O(log n) chaque fois. Total O(m log n) O(nm)
La complexité en temps de Prim-Jarník est donc de O((n+m) log n) Ne trouve pas de solution si le graphe à un cycle de poids total négatif
ou O(m log n) si le graphe est simple et connexe Pourquoi??

IFT2010, H2004, Sylvie Hamel IFT2010, H2004, Sylvie Hamel


Université de Montréal
ACM, suite et fin! 4 Université de Montréal
ACM, suite et fin! 5

Exemple d’exécution
0
1 4
0
-2
1 1 4
! 2 3 !
-2
9 1
4
5 -2 2 3 -1
4
9
!
5
4
Deuxième étape 4
!

Première étape
Dernière étape
0
1 4
0
-2
1 4
1
! 2
-2 3 4
! -2
9 1
5 -2 2 3 -1
4 9
! 5
4
4

Vous aimerez peut-être aussi