Voici un th´eor`eme qui permet de prouver que les algorithmes de Kruskal et de Prim (pour trouver un arbre couvrant minimum d’un graphe connexe pond´er´e) font ce qu’ils doivent faire.
Th´eor`eme 0.1 SoitG= (V, E)un graphe pond´er´e parc:E→ <≥0. SoitT = (V, F) un arbre couvrant minimum deG,F0⊂F et soitC0
∪. C1
∪. . . .∪. Ck−1 une partition de l’ensemble des composantes connexes de GF0 = (V, F0). Soit uv∈E\F0 une arˆete de coˆut minimum parmi celles qui relient les classes Ci
diff´erentes. Alors il existe un ACMT∗= (V, F∗)tel queF0∪ {uv} ⊆F∗. D´emonstration. SoitG, T, V, E, F, F0, S0, . . . Sk−1, uvcomme dans l’´ennonc´e.
On va montrer comment obtenir l’arbreT∗ `a partir deT etuv.
1. Puisque T est connexe, il existe un cheminC dans T deu`av. Siuv est sur C, on a fini: il suffit de prendreT∗=T. Supposons alors queuv6∈F. 2. Soitf ∈E\F0 une arˆete reliant deux classes diff´erentes de composantes connexes de GF0. Alors par le choix de uv comme une arˆete de coˆut minimum, on a
c(uv)≤c(f).
3. Soit f ∈ C (donc dans T) une arˆete reliant deux classes diff´erentes de composantes connexes deGF0 . Alors - par la minimalit´e deT - on a
c(f)≤c(uv).
Pour le voir, on se rappelle que l’ajout d’une arˆete `a un arbre cr´ee un cycle dans le graphe ainsi obtenu et donc le graphe T0 = (V, F”) avec F” = (F∪ {uv})\ {f}est un arbre couvrant de Get
c(f) + X
f6=e∈F
c(e) =c(T)≤c(T0)≤c(uv) + X
f6=e∈F
c(e)
ce qui donne ce qu’on voulait.
4. Donc: pour toute arˆetef qui est dansTet qui relie deux classes diff´erentes de composantes connexes deGF0 on a
c(uv) =c(f).
5. On peut alors prendreT∗= (V, F∗) o`u
F∗= (F\ {f})∪ {uv}
pour n’importe quelle arˆetef d´ecrite en 4. Ceci donnera X
e∈F
=c(T) =c(T∗) = X
e∈F∗
c(e)
6. Pour terminer il suffit de noter que siuv6=Calors une telle arˆetef existe.
2