Adloun

informatique (MP2I/MPI) · Chapitre 23 · Exercice de TD

Combien d'arbres couvrants minimaux ?

Unir & trouver, arbres couvrants · niveau 2

É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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre