Aller au contenu

Composantes Fortement Connexes (Kosaraju)

Deux DFS sur le graphe et son transposé

Exercice Avancé · Graphes · prepa scientifique et economique (CPGE)

Enonce

Implémenter kosaraju(G) qui renvoie la liste des composantes fortement connexes (chacune sous forme de liste de sommets).

Tester sur un graphe contenant 3 CFC distinctes : par exemple {0:[1], 1:[2], 2:[0,3], 3:[4], 4:[5,6], 5:[3], 6:[]}.

Signature attendue

def kosaraju(G: dict) -> list:

📖 Rappel de cours

Dans un graphe orienté, deux sommets $u$ et $v$ sont dans la même composante fortement connexe (CFC) s'il existe un chemin de $u$ à $v$ et un chemin de $v$ à $u$. Les CFC partitionnent les sommets.

Algorithme de Kosaraju (1978) :

  1. DFS sur $G$ : noter l'ordre de fin des sommets (post-ordre)
  2. Construire le graphe transposé $G^T$ (toutes les arêtes inversées)
  3. DFS sur $G^T$ en visitant les sommets dans l'ordre inverse du post-ordre. Chaque arborescence du second DFS est une CFC.

Pourquoi ça marche :

Les CFC d'un graphe et de son transposé sont identiques. En attaquant $G^T$ depuis le sommet de plus haut post-ordre dans $G$, on est sûr de rester dans une seule CFC : on ne peut pas « déborder » vers une autre CFC car cela demanderait un cycle dans le DAG des CFC.

Application phare : compilateurs (analyse de variables vivantes), 2-SAT, analyse de dépendances cycliques.

← Exercices sur les graphes en Python — BFS, DFS, Dijkstra

Exercices du meme theme

  • Détection de Cycle (graphe orienté)
  • Diamètre d'un Arbre
  • Algorithme de Floyd-Warshall
  • Algorithme A* sur Grille
  • Flot Maximal — Edmonds-Karp
  • Critère de Delaunay (in-circle)

La correction commentee, les indices progressifs, l'execution du code dans le navigateur et la verification par l'IA sont reserves aux abonnes.

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Essai gratuit
Testez toutes les fonctionnalités sans engagement
En continuant, vous acceptez notre politique de confidentialité.
Déjà abonné ? Se reconnecter
Recevez un lien de connexion par email
Parcourir gratuitement →
Aperçu limité · sans inscription · sans vérification IA
€4,99
/ mois · accès illimité · résiliable
Paiement sécurisé
En vous abonnant, vous acceptez nos conditions et politique de confidentialité.
Résiliation possible depuis votre espace PayPal.

Chargement...

Initialisation de l'environnement

Prepa🐍ython
Progresser en Python & SQL · Prépa scientifique
Progression
0 / 0
Solo
— / —
Python... SQL...
Recherche
🔬 Bac a sable Python ↗ 🧪 Bac a sable SQL ↗ 📝 Concours blanc ↗ 🏖️ Code à la plage ↗ 📚 Listes de rentrée ↗ 🛠️ Admin ↗
Tu aimes PrepaPython ?
Fais-le savoir !
← Retour à l'accueil Mentions legales & confidentialite