Combien d'arbres couvrants minimaux ?
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 23 — Unir & trouver, arbres couvrants
Énoncé
- Montrer que si tous les poids sont distincts, l'arbre couvrant minimal est unique.
- La réciproque est-elle vraie ?
- Donner un graphe à trois arêtes ayant trois arbres couvrants minimaux.
Corrigé
1. Supposons deux arbres couvrants minimaux distincts et , et soit l'arête de plus petit poids appartenant à l'un et pas à l'autre — disons ; elle est unique car les poids sont distincts. Ajouter à crée un cycle, qui contient au moins une arête (sinon contiendrait un cycle). Cette est dans , donc par le choix de . Alors est un arbre couvrant de poids : n'était pas minimal. Contradiction.
2. Non, et le graphe de l'exercice précédent en est le contre-exemple : le poids y figure deux fois ( et ), le poids aussi ( et ), et pourtant la force brute ne trouve qu'un arbre de poids sur les arbres couvrants. La distinction des poids est suffisante, pas nécessaire.
3. Le triangle dont les trois arêtes pèsent . Il a arbres couvrants — on en écarte une, au choix — et tous trois pèsent : les trois sont minimaux (vérifié par énumération). De même, le carré de côtés unitaires a arbres couvrants, tous minimaux de poids .
Ce qu'il faut en retenir pour l'écriture du code. Kruskal rend un arbre minimal, celui que son ordre de tri lui a fait rencontrer. Deux exécutions avec deux tris différents peuvent rendre des ensembles d'arêtes différents — de même poids. Un jeu de tests doit donc comparer des poids, jamais des listes d'arêtes.
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.