Les arbres (Prim et Kruskal)

publicité
Mathématique (graphes)
Les arbres (Prim et Kruskal)
En théorie des graphes, un arbre est un graphe non orienté, acyclique (graphe qui ne contient
aucun cycle) et connexe. Un ensemble d'arbres est appelé une forêt.
Une feuille : Sommet dont le degré est égal à 1.
Un nœud : Sommet dont le degré est supérieur à 1.
Exemple :
ca
aa
ba
da
ea
Arbre à 1 nœud et 4 feuilles
Algorithme de Prim
L'algorithme de Prim calcule un arbre couvrant minimal dans un graphe connexe valué et
non orienté. Un arbre couvrant est un arbre inclus dans un graphe et qui connecte tous les
sommets de ce graphe. Dans ce cas de figure l’arbre couvrant est donc un sous-ensemble
d'arêtes formant un arbre sur l'ensemble des sommets du graphe initial, et tel que la somme des
poids de ces arêtes soit minimale.
Si le graphe n'est pas connexe, alors l'algorithme détermine un arbre couvrant minimal d'une
composante connexe du graphe.
Algorithme :
 L'algorithme consiste à faire croître un arbre depuis un sommet. On commence avec un
seul sommet puis à chaque étape, on ajoute une arête de poids minimum adjacente à
l'arbre en construction.
Exemple :
2
b

a
4
d
1e itération : Localement a :
b pour 2
c pour 3
d pour 4
2e itération : Localement b :
c pour 1
e pour 4
3e itération : Localement c :
d pour 2
e pour 3
4e itération : Localement d :
e pour 5
3
2
1 4
c 3
e
5
a
4
2
b
3 1 4
2 c 3e
d
5
2
b
3 1 4
2 c 3e
d
5
2
b
a
3 1 4
4
2 c 3
e
d
5
a
4
a
4
d
2
3
2
Arbre couvrant minimal : (a, b, c, d, e)
b
1 4
c 3
e
5
Algorithme de Kruskal
Tout comme l’algorithme de Prim, l'algorithme de Kruskal a pour but de rechercher l'arbre
recouvrant de poids minimum d’un graphe connexe, valué et non-orienté.
Algorithme :
 L'algorithme considère toutes les arêtes du graphe par poids croissant et pour chacune
d'elle, il la sélectionne si elle ne crée pas un cycle.
Exemple :
2
8
a
c
4
e
2
d
{a, e}
2
5
1
6
{d, c}
1
b
2
{d, e}
2
{c, b}
2
1e itération :
On choisit l’arrête de poids minimum
soit {d,c} (en cas d’égalité le choix à
ce moment est totalement arbitraire).
2e itération :
On choisit {a,e} de manière arbitraire
entre toutes les autres arêtes de poids
2 ne formant pas de cycle.
3e itération :
On choisit {d,e} (nécessaire pour que
le graphe courant soit connexe) de
manière arbitraire par rapport à {c,b}.
On « verrouille » alors {a,d} et {c, e}
puisqu’on a déjà parcouru a, d, c et e ;
ces arêtes ne seront donc jamais
empruntées.
e
4 itération :
On choisit {c,b} car c’est l’arête de
poids minimum restante parmi les
non verrouillées.
Tous les sommets ont été parcourus et
l’ensemble forme un arbre (connexe et
acyclique), l’algorithme se termine.
{b, e}
4
{c, e}
5
{a, d}
6
8
a
b
2
c
{a, b}
8
2
4
5
e
1
6
2
d
8
a
c
b
2
5
2
4
e
1
6
2
d
8
a
b
2
c
2
4
5
e
1
6
2
d
8
a
c
b
2
1
6
d
Arbre couvrant minimal : (a, e, d, c, b)
2
5
4
2
e
Téléchargement