MOCA CO9
1/3
Arbre couvrant de poids minimum
G = (S, A) Graphe connexe et une arête a / c a
Arbre couvrant
T c a / T est un arbre, x S , (x , y) T. Ainsi le poids de T = c a.
Le problème est de chercher un graphe T / le poids de T soit minimum.
Cycle et co-cycle
Cycle : chaîne dont le 2 extrémités coïncident ( est un cycle).
Co-cylce : ensemble des arêtes ayant une extrémité dans le
cycle et une autre hors du cycle ( est un co-cycle).
Propriétés
Z : a T (ensembles des arêtes n’appartenant pas à T).
Propriété 1 : Z si faux alors T (impossible car un arbre est sans cycle)
Propriété 2 : T Si faux toutes arêtes de n’est pas une arête de T (impossible)
Définition
(x , y) est un approximant / X A , Y A si et seulement si il existe T un arbre couvrant de poids minimum / X
T, Y T. approximant (x,y) / X A , Y A ssi T arbre couvrant de poids minimum / X T, Y T.
On note Z est l’ensemble des arêtes (ensemble des arêtes X ensemble des arêtes Y). Z = A \ {X Y}
Règles
Règles 1 : / X = , Y
Soit une arête de poids minimal a Y
(X {a} , Y) est un approximant
1 - si X {a} T => T est de poids minimal
T c’est un approximant
2 - si a T
c e c a
On supprime e de T
On ajoute a à T
=> T’ est un arbre couvrant de poids minimum
Règles 2 : / Y = , Z
si X T alors impossibilité
Soit une arête de poids maximal a Z
(X , Y {a}) est un approximant
1 - si a T => T est de poids minimal
T c’est un approximant
2 - si a T
c a c e
On supprime a de T
On ajoute e à T
=> T’ est un arbre couvrant de poids minimum
S
X
T
a T
e
a
T
a
MOCA CO9
2/3
Algorithme générique et démonstration
Algorithme Générique
X <-
Y <-
Z <- A
Tant que Règle 1 ou Règle 2 applicable faire
Selon choix Règle 1 ou Règle 2
A est uniedans X ou Y
Fin selon
Fin tant que
Fin Algorithme Générique
( , ) est un approximant. Après chaque passage on a (X , Y) est un approximant.
Supposons qu’à la fin de l’algorithme tout sommet de s a une arête (s , t) X.
X couvre tous les sommets et est connexe, X est un approximant
=> X acyclique
=> X est un arbre couvrant de poids minimum.
Résolution
Algorithme KRUSKAL
Trier les arêtes par poids croissant (a1, a2, …, an)
Pour i de 1 à n faire
Si T { ai} ne créer pas de cycle alors
T = T { ai}
Fin si
Fin pour
Fin Algorithme KRUSKAL
2
3
4
3
1
2
2
3
4
3
1
2
2
3
4
3
1
2
2
3
4
3
1
2
2
3
4
3
1
2
impossible
car cycle
MOCA CO9
3/3
Algorithme PRIM
Marquer arbitrairement un sommet
Tant qu‘il existe un sommet faire
Choisir a de poids minimum dans (T) a = (x , y) / x T , y T
Ajouter a à T T = T {a}
Fin Tant que
Algorithme PRIM
2
3
4
3
1
2
2
3
4
3
1
2
2
3
4
3
1
2
2
3
4
3
1
2
2
3
4
3
1
2
a
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !