Académique Documents
Professionnel Documents
Culture Documents
1
Lélia Blin Algorithmique des graphes
Arbre
2
Lélia Blin Algorithmique des graphes
T est un arbre
3
Lélia Blin Algorithmique des graphes
Graphe partiel
Un graphe partiel G’(V,E’) d’un graphe G(V,E) est:
Un graphe qui a les mêmes sommets que G.
Un graphe dont l’ensemble des arêtes E’ est inclus dans E.
4
Lélia Blin Algorithmique des graphes
Arbres couvrants
5
Lélia Blin Algorithmique des graphes
Graphe pondéré
4 9
2
11 4
7 10
8 6
1 2
6
Lélia Blin Algorithmique des graphes
8 7
4 9
2
11 4
7 10
8 6
1 2
ω(G)=103
7
Lélia Blin Algorithmique des graphes
Tout arbre couvrant dont la somme des poids des arêtes le constituant est minimal
(maximal).
8 7
4 9
2
11 4
7 10
8 6
1 2
ω(G’)=37
8
Lélia Blin Algorithmique des graphes
Proposition
9
Lélia Blin Algorithmique des graphes
Remarque1
8 7 8 7
4 9 4 9
2 2
11 4 11 4
7 10 7 10
6 6
8 8
1 2 1 2
10
Lélia Blin Algorithmique des graphes
Remarque 2
11
Lélia Blin Algorithmique des graphes
Application
12
Lélia Blin Algorithmique des graphes
Application
En effet le coût d’installation d’un cable peut dépendre de la rue choisie
Présence d’obstacles:
Tramway
Monuments historiques
Ce coût est modélisé par la pondération ω.
Il est facile de voir que
La pondération ω positive
Implique qu’une solution optimale d’un tel problème soit
nécessairement un arbre.
13
Lélia Blin Algorithmique des graphes
Problématique: On veut
14
Lélia Blin Algorithmique des graphes
15
Lélia Blin Algorithmique des graphes
Règles de Tarjan
16
Lélia Blin Algorithmique des graphes
Règles de Tarjan
*R.E. Tarjan. Data structures and network algorithms, volume 44. SIAM Monography, 1983.
17
Lélia Blin Algorithmique des graphes
4 9
2
11 4
7 10
8 6
1 2
18
Lélia Blin Algorithmique des graphes
19
Lélia Blin Algorithmique des graphes
Coupe
8 7
4 9
2
11 4
7 10
8 6
1 2
20
Lélia Blin Algorithmique des graphes
4 9
2
11 4
7 10
8 6
1 2
21
Lélia Blin Algorithmique des graphes
22
Lélia Blin Algorithmique des graphes
Lemme cycle-coupe
8 7
4 9
2
11 4
7 10
8 6
1 2
23
Lélia Blin Algorithmique des graphes
Remarque
24
Lélia Blin Algorithmique des graphes
Algorithme de Tarjan
25
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
26
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
27
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
28
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
29
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
30
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
31
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
32
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
33
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
34
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
35
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
36
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
37
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
38
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
39
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
40
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
41
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
42
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
43
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
44
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
45
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
46
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
47
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
48
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
49
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
50
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
51
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
52
Lélia Blin Algorithmique des graphes
Exemple
Cycle Maximum
Coupe Minimum
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
53
Lélia Blin Algorithmique des graphes
Exemple
En bleu un arbre couvrant de poids minimum T
En rouge un co-arbre à l’arbre T
Un co-arbre est par définition le complémentaire d’un arbre couvrant de G
8 7
A B C
4 2 9
11 4
D E F
7 6 10
8
1 2
G H I
54
Lélia Blin Algorithmique des graphes
Remarques
55
Lélia Blin Algorithmique des graphes
Théorème
56
Lélia Blin Algorithmique des graphes
Squelette de la preuve
Soit un graphe G=(V,E,ω) un graphe non orienté pondéré.
Invariant de la boucle:
A la fin de chaque itération de la boucle les arêtes bleues forment:
Un graphe-partiel sans-cycle de G (Forêt bleu)
Un graphe-partiel sans-cycle de G de poids minimum (Forêt bleu de poids
minimum)
A la fin de l’algorithme:
Les arêtes en bleues forment un arbre couvrant de poids minimum T*(V,E*).
Toutes les arêtes sont colorées.
Les arêtes en rouges forment un co-arbre de T*.
57
Lélia Blin Algorithmique des graphes
58
Lélia Blin Algorithmique des graphes
59
Lélia Blin Algorithmique des graphes
Notations:
B(i) est l’ensemble des arêtes bleues dans G après la ième
exécution de la boucle.
R(i) est l’ensemble des arêtes rouges dans G après la ième
exécution de la boucle.
Hypothèse de récurrence:
∀i≤|E|, il existe un arbre de poids minimum T*(V,E*) tel que
B(i)⊆E* et R(i)⊄E*.
Au départ B(i)=∅ et R(i)=∅ donc l’invariant est vrai.
60
Lélia Blin Algorithmique des graphes
61
Lélia Blin Algorithmique des graphes
63
Lélia Blin Algorithmique des graphes
Supposons que:
la coupe θ coupe au moins une arête e1
d’un cycle #. e2
e2
μ1
64
Lélia Blin Algorithmique des graphes
e2
ek-1,ek∈ θ , ek-1,ek∈#k
μ2
coloriée en rouge ek
65
Lélia Blin Algorithmique des graphes
un ACPM. 4 2 9
arêtes rouges. D E F
7 6 10
Donc θ contient au moins 8
68
Lélia Blin Algorithmique des graphes
Preuve: Conclusion
69
Lélia Blin Algorithmique des graphes
Remarques
70
Lélia Blin Algorithmique des graphes
71
Lélia Blin Algorithmique des graphes
Principe
Formalisation de l’algorithme
Exemple
Justification de l’algorithme
Analyse de la complexité
72
Lélia Blin Algorithmique des graphes
Principe
L'idée principale
Maintenir un sous-graphe partiel connexe
A chaque étape
Connecter un nouveau sommet au sous graphe
partiel existant par l’arête de poids minimum
sortante du graphe partiel.
L'algorithme de Prim va ainsi faire grossir un arbre
jusqu'à ce qu'il couvre tous les sommets du graphe.
73
Lélia Blin Algorithmique des graphes
Principe
L'algorithme part d'une constatation simple :
Dans un arbre couvrant, il existe nécessairement une
arête qui relie l'un des sommets de S avec un sommet
en dehors de S.
Autrement dit une coupe.
Il suffit de choisir parmi les arêtes de la coupe celle de
poids minimum.
Règle bleu
74
Lélia Blin Algorithmique des graphes
Algorithme de Prim
PRIM(G,w)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
75
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A} 11 4
MST={} D E F
7 6 10
8
1 2
G H I
76
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D} 11 4
MST={(A,D)} D E F
7 6 10
8
1 2
G H I
77
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D} 11 4
MST={(A,D)} D E F
7 6 10
8
1 2
G H I
78
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B} 11 4
MST={(A,D),(A,B)} D E F
7 6 10
8
1 2
G H I
79
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B} 11 4
MST={(A,D),(A,B)} D E F
7 6 10
8
1 2
G H I
80
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E} 11 4
MST={(A,D),(A,B),(B,E)} D E F
7 6 10
8
1 2
G H I
81
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E} 11 4
MST={(A,D),(A,B),(B,E)} D E F
7 6 10
8
1 2
G H I
82
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I} 11 4
MST={(A,D),(A,B),(B,E),(B,I)} D E F
7 6 10
8
1 2
G H I
83
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I} 11 4
MST={(A,D),(A,B),(B,E),(B,I)} D E F
7 6 10
8
1 2
G H I
84
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H} 11 4
MST={(A,D),(A,B),(B,E),(B,I),(I,H)} D E F
7 6 10
8
1 2
G H I
85
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H} 11 4
MST={(A,D),(A,B),(B,E),(B,I),(I,H)} D E F
7 6 10
8
1 2
G H I
86
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H,G}
MST={(A,D),(A,B),(B,E),(B,I),(I,H), D
11
E
4
F
(H,G)} 7 6 10
8
1 2
G H I
87
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H,G}
MST={(A,D),(A,B),(B,E),(B,I),(I,H), D
11
E
4
F
(H,G)} 7 6 10
8
1 2
G H I
88
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H,G,C}
MST={(A,D),(A,B),(B,E),(B,I),(I,H), D
11
E
4
F
(H,G),(B,C)} 7 6 10
8
1 2
G H I
89
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H,G,C}
MST={(A,D),(A,B),(B,E),(B,I),(I,H), D
11
E
4
F
(H,G),(B,C)} 7 6 10
8
1 2
G H I
90
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H,G,C}
MST={(A,D),(A,B),(B,E),(B,I),(I,H), D
11
E
4
F
(H,G),(B,C)} 7 6 10
8
1 2
G H I
91
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H,G,C,F}
MST={(A,D),(A,B),(B,E),(B,I),(I,H), D
11
E
4
F
(H,G),(B,C),(C,F)} 7 6 10
8
1 2
G H I
92
Lélia Blin Algorithmique des graphes
Exemple de Prim
ACPM-PRIM(G,w,s)
S = {s}; s est un sommet quelconque de V
MST = {}; ensemble des arêtes de l'arbre
tant que (|S| < |V|)
(u,v) = arête de poids min ayant u∈S et v∈V-S;
S = S∪{v};
MST = MST ∪{(u,v)};
Fin tant que
8 7
A B C
4 2 9
S={A,D,B,E,I,H,G,C,F}
MST={(A,D),(A,B),(B,E),(B,I),(I,H), D
11
E
4
F
(H,G),(B,C),(C,F)} 7 6 10
8
1 2
G H I
93
Lélia Blin Algorithmique des graphes
Théorème
94
Lélia Blin Algorithmique des graphes
Preuve de correction
95
Lélia Blin Algorithmique des graphes
Preuve de complexité
L'algorithme comporte |V| étapes (Entrée des sommets
dans S).
A chaque étape il faut déterminer:
l'arête sortante de poids minimum.
Une implémentation possible consiste à chaque étape:
Vérifier toutes les arêtes incidentes à un sommet de S,
Déterminer si elles sont sortantes
Garder celle de poids minimum.
96
Lélia Blin Algorithmique des graphes
Preuve complexité
97
Lélia Blin Algorithmique des graphes
Principe
Formalisation de l’algorithme
Exemple
Justification de l’algorithme
Analyse de la complexité
98
Lélia Blin Algorithmique des graphes
Principe
99
Lélia Blin Algorithmique des graphes
Principe
100
Lélia Blin Algorithmique des graphes
Algorithme de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
101
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
102
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
103
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
104
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
105
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
106
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
107
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
108
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
109
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
110
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
111
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
112
Lélia Blin Algorithmique des graphes
Exemple de Kruskal
ACPM-KRUSKAL(G,w,s)
1. E ensemble des arêtes de G triées dans l’ordre croissant
2. F = {}; ensemble des arêtes de l'arbre couvrant
3. Pour chaque élément e de E et tant que |F|<|V|-1 faire
4. Si F ∪ e ne forme pas de cycle alors
5. F = F ∪ e;
6. Fin Si
7. Fin pour
8 7
A B C
ω{G,H}=1 ω{A,B}=8
ω{B,E}=2 ω{D,G}=8
4 2 9
ω{H,I}=2 ω{C,F}=9
ω{A,D}=4 ω{F,I}=10 11 4
D E F
ω{B,I}=4 ω{A,G}=11
ω{E,H}=6 7 6 10
8
ω{B,C}=7
1 2
ω{E,G}=7 G H I
Fin car |F|=|V|-1
113
Lélia Blin Algorithmique des graphes
Théorème
114
Lélia Blin Algorithmique des graphes
Preuve
115
Lélia Blin Algorithmique des graphes
Preuve de correction
116
Lélia Blin Algorithmique des graphes
Complexité
117
Lélia Blin Algorithmique des graphes
Complexité
118
Lélia Blin Algorithmique des graphes
Complexité
119
Lélia Blin Algorithmique des graphes
Conclusion
Nous avons vu deux algorithmes pour le problème de l’arbre
couvrant de poids minimum
L’algorithme de Prim
Maintient une composante connexe
Temps: O(|E| + |V| × log|V|)
L’algorithme de Kruskal
Maintient l’absence de cycle
Temps: O(|E|log|E|)
120