On construit une suite
\(G_k=(S,A_k)\) de sous-graphe de
\(G\) par récurrence, c’est-à-dire qu’on définit
\(G_0\text{,}\) et ensuite, ayant défini
\(G_k=(S,A_k)\) pour
\(k\geq 0\text{,}\) on définit
\(G_{k+1}\text{.}\) On va continuer le processus jusqu’à ce que le graphe obtenu soit un arbre. Ce processus se terminera nécessairement en un nombre fini d’étape, disons
\(n\) étapes. À la fin, on posera
\(T=G_n\text{.}\)
On pose
\(G_0=G\text{.}\) Ensuite, on suppose qu’on a défini
\(G_k=(S,A_k)\) un graphe simple connexe pour
\(k\geq 0\text{.}\) Si
\(G_k\) est un arbre, alors il s’agit d’un arbre couvrant pour
\(G\text{,}\) et on a terminé. Si au contraire
\(G_k\) n’est pas un arbre, on doit définir
\(G_{k+1}\) un graphe simple connexe contenant une arête de moins que
\(G_k\text{.}\)
Puisque
\(G_k\) n’est pas un arbre,
\(G_k\) possède un cycle, disons le cycle
\(s_0, s_1, \dots, s_{m-1}, s_m\text{,}\) avec
\(s_{m}=s_0\text{.}\) On pose alors
\(G_{k+1}=(S,A_{k+1}):= G_k-\{s_{m-1}, s_m\}=(S,A_k-\{s_{m-1},s_m\})\text{.}\) Le graphe obtenu est donc un graphe avec les mêmes sommets que
\(G\text{,}\) possédant une arête de moins que le graphe
\(G_k\text{.}\) On doit vérifier qu’il s’agit toujours de graphe connexe. Or, par le lemme
7.4.8, on sait que
\(G_{k+1}\) est connexe.
Puisqu’on enlève une arête à chaque étape, et que le nombre d’arêtes de
\(G\) est fini, on doit nécessairement arriver à un point où
\(G_k\) ne possède pas de cycle. Si le processus se termine avec
\(k=n\text{,}\) alors on pose
\(T=G_n\text{.}\) Puisque
\(T\) possède les mêmes sommets que
\(G\text{,}\) est connexe et ne possède aucun cycle.
\(T\) est donc bien un arbre couvrant de
\(G\text{.}\)