Adloun

informatique (MP2I/MPI) · Chapitre 23 · Application directe du cours

Problème — Regrouper par arbre couvrant

Unir & trouver, arbres couvrants · niveau 3 (difficile)

Énoncé

On veut répartir points en groupes de manière que les groupes soient le plus séparés possible. On appelle espacement d'une répartition la plus petite distance entre deux points de groupes différents, et l'on cherche à le maximiser.

  • Montrer que retirer les arêtes les plus lourdes d'un arbre couvrant minimal donne une répartition optimale.
  • Écrire l'algorithme. Quel est son lien avec Kruskal ?
  • Vérifier sur un exemple.

Corrigé de la question 1

1. La preuve, en deux temps. Soit un arbre couvrant minimal du graphe complet des distances, et soit la répartition obtenue en retirant de ses arêtes les plus lourdes — elle a bien groupes, puisque retirer une arête d'un arbre le coupe en deux. Notons le poids de la plus légère des arêtes retirées.

Premier temps : l'espacement de vaut exactement . Il est , puisque l'arête retirée de poids joint deux points de groupes différents. Pour l'autre sens, on raisonne sur l'exécution de Kruskal, qui construit en prenant les arêtes par poids croissant : est l'état de la structure unir & trouver au moment où il ne reste que classes, et toutes les arêtes prises jusque-là pèsent . Supposons deux points et de groupes différents avec . Kruskal aurait examiné avant d'atteindre , donc à un instant où et étaient déjà dans des classes distinctes — les classes ne font que fusionner. Il l'aurait donc prise, et et se retrouveraient dans le même groupe. Contradiction.

Second temps : aucune répartition ne fait mieux. Soit une autre répartition en groupes. Comme et que les deux ont groupes, il existe deux points et dans le même groupe de et dans deux groupes différents de . Le chemin de à dans reste entièrement dans un groupe de , donc toutes ses arêtes pèsent . Ce chemin part d'un groupe de et arrive dans un autre : il contient donc une arête dont les extrémités sont dans deux groupes différents de . L'espacement de est majoré par le poids de cette arête, donc par .

Question 2 : comment l'IA t'aide

2. Écrire l'algorithme. Quel est son lien avec Kruskal ?

Élève

Je construis l'arbre couvrant minimal avec Kruskal, puis je trie ses arêtes et je retire les plus lourdes. Ça marche, mais ça me paraît lourd : n'y a-t-il pas plus direct ?

IA

Pendant l'exécution de Kruskal, comment évolue le nombre de classes de la structure unir & trouver à chaque arête prise ? Et dans quel ordre les arêtes de l'arbre sont-elles ajoutées ?

Élève

Chaque union réduit le nombre de classes de , et les arêtes arrivent par poids croissant. Donc les plus lourdes de l'arbre sont les dernières que Kruskal ajouterait.

IA

Que suffit-il alors de changer à Kruskal pour obtenir directement la répartition ? Et comment récupérer l'espacement au passage, sans aucun calcul supplémentaire de distances ?

L'IA ne donne pas la réponse : elle pose la question qui fait avancer. À toi de continuer.

Continue cet exercice avec l'IA

Reprends la question 2 là où le dialogue s'arrête, puis la suite de l'exercice.

Continuer avec l'IA — gratuit, sans inscription

Gratuit, sans inscription. L'IA te guide pas à pas, sans te donner la réponse.

Le cours du chapitre · Tous les exercices du chapitre

Continuer avec l'IA, gratuit →