Adloun

Probleme – Rendre un graphe fortement connexe

Exercice · niveau 3 (difficile) · informatique (MP2I/MPI), chapitre 24 — Composantes fortement connexes et couplages

Énoncé

On dispose d'un graphe orienté et l'on veut lui ajouter le moins d'arcs possible pour le rendre fortement connexe.

Corrigé

1. Zéro arc : il n'y a rien à faire. Le test de l'exercice « Tester la forte connexité en deux parcours » le décide en .

2. La minoration. Le quotient est acyclique et a au moins deux sommets. Une composante source n'a aucun arc entrant, une composante puits aucun arc sortant. Dans le graphe final, fortement connexe, tout sommet doit avoir au moins un arc entrant et un arc sortant.

Chaque source a donc besoin d'au moins un arc entrant nouveau : les arcs existants n'entrent pas dans une source, et un arc nouveau n'a qu'une extrémité d'arrivée, donc ne peut servir qu'à une seule source. Il faut au moins arcs. Le même raisonnement sur les puits en donne au moins . Comme il s'agit du même ensemble d'arcs — un arc nouveau peut à la fois sortir d'un puits et entrer dans une source —, on obtient la minoration et non .

Un quotient acyclique à au moins deux sommets a toujours au moins une source et un puits, donc : le cas est bien celui de la question 1.

3. La construction. Appelons paire un couple formé d'une source et d'un puits tel que soit accessible depuis . On commence par choisir paires deux à deux disjointes — aucune source ni aucun puits n'apparaît deux fois —, avec maximal. On ajoute alors les arcs qui les enchaînent en un cycle :

Il reste sources et puits non appariés. On raccroche chacun d'eux au cycle par un arc : pour une source restante , un arc ; pour un puits restant , un arc . Coût total :

Le graphe obtenu est fortement connexe. Depuis n'importe quel sommet, on descend le quotient — acyclique et fini — jusqu'à un puits ; de ce puits, un arc ajouté mène à une source du cycle ; et depuis une source du cycle on rejoint toute autre source en parcourant le cycle, puis toute composante en descendant. Tout sommet atteint donc , et atteint tout sommet.

Il reste à savoir que . C'est le point délicat, et c'est un théorème d'Eswaran et Tarjan que nous admettons : dans le quotient d'un graphe orienté, on peut toujours choisir paires source-puits deux à deux disjointes. Avec , le coût devient , et la minoration de la question 2 montre qu'on ne peut pas faire mieux.

Une remarque sur cet appariement : ce n'est pas un couplage biparti ordinaire, et le théorème de Hall de l'exercice « Hall et König » ne s'applique pas. Sur le quotient réduit à , avec et puits, il n'y a qu'une source pour deux puits : , et l'on retrouve bien arcs, à savoir et .

4. La vérification. Sur graphes orientés tirés au hasard (de à sommets), on compare au nombre minimal d'arcs trouvé par recherche exhaustive — on essaie tous les ensembles de arc, puis de , etc. : aucun désaccord.

Sur le graphe de la figure du chapitre — composantes , , avec le quotient —, on a (seule est source) et (seule est puits) : un seul arc suffit, et l'ajout de referme le cycle. La force brute confirme.

Ce que le problème illustre. On a remplacé un problème sur par un problème sur son quotient, qui est acyclique donc beaucoup plus simple. C'est l'usage annoncé au début du chapitre : la décomposition en composantes fortement connexes est la manière standard de rendre acyclique un graphe qui ne l'est pas. Ici, elle transforme une question de connexité en un dénombrement de sources et de puits.

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.