En théorie des graphes, une composante fortement connexe d'un graphe orienté G est un sous-graphe de G possédant la propriété suivante, et qui est maximal pour cette propriété : pour tout couple (u, v) de nœuds dans ce sous-graphe, il existe un chemin de u à v.
Un graphe est dit fortement connexe s'il est formé d'une seule composante fortement connexe. De manière générale, un graphe se décompose de manière unique comme union de composantes fortement connexes deux à deux disjointes.
Graphe des composantes fortement connexes
Le graphe H des composantes fortement connexes de G est défini de la manière suivante :
- à chaque composante fortement connexe de G lui est associé un nœud de H;
- il existe un arc (U, V) de H si et seulement s'il existe un arc (u, v) de G tel que u et v sont des nœuds respectifs des composantes fortement connexes U et V.
Le graphe des composantes fortement connexes est un graphe orienté toujours acyclique. Inversement, tout graphe acyclique est isomorphe au graphe de ses composantes fortement connexes.
Algorithmes
Plusieurs algorithmes permettent de calculer la décomposition en composantes fortement connexes d'un graphe en temps linéaire :
- l'algorithme de Kosaraju, fondé sur l'algorithme de parcours en profondeur, nécessite deux parcours du graphe (plus précisément, un parcours du graphe et un de son transposé) ;
- l'algorithme de Tarjan ne nécessite qu'un seul parcours en profondeur ;
- l'algorithme de Gabow (Gabow 2000)[1].
Utilisations
Certains algorithmes utilisent la décomposition en composantes fortement connexes comme une première étape, c'est le cas par exemple d'un algorithme pour le problème 2-SAT[2].
Notes et références
Voir aussi
Wikiwand - on
Seamless Wikipedia browsing. On steroids.