Algorithme de Kosaraju par étagÚre

En fait, il existe déjà un article sur Habré sur cet algorithme, mais il ne couvre pas la preuve de l'exactitude et certaines étapes de l'algorithme. J'ai décidé de créer une version plus de référence de cet article avec une analyse complÚte.





Cet article sera utile pour les étudiants qui étudient la discipline "Algorithmes et Théorie des Graphiques", ainsi que pour ceux qui souhaitent améliorer / rafraßchir leurs connaissances des algorithmes sur les graphiques.





Afin de comprendre l'algorithme de Kosarayu, vous devez connaßtre certains concepts de la théorie des graphes





Concepts de base

sommets fortement connectés u, v
sommets fortement connectés u, v

Les sommets u, v sont appelĂ©s fortement connectĂ©s si le graphe G contient un chemin (pas forcĂ©ment une ligne droite) u → v Et v → u (On note les sommets fortement connectĂ©s par u↔v)









Des composants fortement connectés
Des composants fortement connectés

Les composants fortement connectés sont des sous-graphes fortement connectés maximum par inclusion.





Inverser le graphique - changer la direction de toutes les arĂȘtes du graphique Ă  l'opposĂ© (une arĂȘte bidirectionnelle reste elle-mĂȘme)





Inverser un graphique - le processus de rotation des bords dans la direction opposĂ©e (un bord bidirectionnel restera lui-mĂȘme)





Plusieurs lemmes assez Ă©vidents peuvent ĂȘtre citĂ©s:





1. Un composant fortement connecté est l'ensemble des sommets inclus dans l'ensemble des cycles qui

ont au moins un sommet commun





cycles connexes 1 et 2, 2 et 3
cycles connectés 1 et 2, 2 et 3

2.





3. u ↔ v v ↔ w, u ↔ v ↔ w





4.





:





  1. (DFS), «» . «», DFS  ( ).





    DFS  









  2. DFS .





DFS





, : : , :





  1. DFS





  2. ( , , )





,





:













1:

'?'

DFS ( 2 , ; , , )



, - ( ) 1



, () ( ) -- DFS -- .





2:









3:

DFS, ,





DFS









3









, :







u v ⇔ DFS





:

⇒

u v G, ( 2), , .

⇐





u v . , r .





r 3 , 1 , u v. 2 :





  1. r . u r v r ( 2). u v ( 3)





  2. r , v. r v , r — ( , v , r, ). ( , ), , v r 3 ( )





, 1 2 , u v





O(V+E)





, , O(V+E) . ( )





, O(V+E)





, — O(V+E)





, O(V+E) .





, .





Par exemple: projeter un réseau de transport sur un graphe. L'algorithme aidera à vérifier le réseau de transport nouvellement créé pour l'accessibilité de chaque sommet à partir de chaque sommet (pour s'assurer qu'il y a un chemin de la périphérie au centre et à l'arriÚre).





Vous pouvez tester le systĂšme de conduits dans les bĂątiments avec un algorithme; flux de courant dans les dispositifs Ă  semi-conducteurs





Vous pouvez penser plus largement: nous projetons le systĂšme circulatoire d'un ĂȘtre vivant que vous avez Ă©tĂ© chargĂ© de crĂ©er dans le cadre d'un projet de gĂ©nie gĂ©nĂ©tique, quelque part en 2077). L'algorithme vous aidera Ă  savoir si le sang passe du cƓur aux organes et retour.








All Articles