Kruskal, à la main
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 23 — Unir & trouver, arbres couvrants
Énoncé
Sur le graphe à sept sommets dont les arêtes sont
dérouler Kruskal : donner l'ordre de tri, les arêtes prises, les arêtes écartées et le poids total.
Corrigé
Ordre de tri (poids croissant ; les ex æquo se départagent comme on veut) :
ad(5) ce(5) df(6) ab(7) be(7) bc(8) ef(8) bd(9) eg(9) fg(11) de(15)
Le déroulé, en suivant les classes :
| Arête | Classes avant | Décision | Classes après |
|---|---|---|---|
| prise | |||
| prise | |||
| prise | |||
| prise | |||
| prise | |||
| et ensemble | écartée | --- | |
| et ensemble | écartée | --- | |
| ensemble | écartée | --- | |
| prise | tout | ||
| ensemble | écartée | --- | |
| ensemble | écartée | --- |
Six arêtes prises — soit , comme annoncé —, cinq écartées, et un poids total de
Une force brute sur les sous-ensembles confirme : ce graphe possède arbres couvrants, le plus léger pèse , et c'est le seul de ce poids.
Deux remarques de méthode. L'algorithme s'arrête quand il a arêtes : les quatre dernières lignes du tableau sont du travail inutile, et une mise en œuvre soignée sort de la boucle dès que le compteur atteint . Et si, en fin de parcours, on n'en a pas , c'est que le graphe n'est pas connexe — Kruskal le détecte sans effort supplémentaire.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.