Алгоритм Косараджу (англ. kosaraju algorithm) — алгоритм для знаходження компонент сильної зв’язності орієнтованого графа. Ахо, Хопкрофт і Ульман приписують його до неоприлюдненого паперу від 1978. Він використовує факт, що транспонований граф (той самий граф з оберненими напрямками ребер) має ті самі компоненти сильної зв'язності, що й початковий граф.
Алгоритм Косараджу працює так:
- Нехай G орієнтований граф і S порожній стек.
- Допоки S не містить всі вершини:
- Вибрати довільну вершину v не з S. Виконати пошук в глибину від v. По завершені пошуку в глибину для кожної вершини u, заштовхуємо u на S.
- Обернути всі ребра для отримання транспонованого графа.
- Доки S непорожній (містить вершину в порядку завершення, на верхівці стека — останнє завершення пошуку в глибину):
- Виштовхнути вершину v з S. Виконати пошук в глибину від v. Набір відвіданих вершин дасть компоненту сильної зв'язності, що містить v; записати це і видалити всі ці вершини з графа G і стека S. Так само можна використати пошук в ширину.
Лема
Розглянемо дві суміжні компоненти сильної зв'язності в G (зображення праворуч). Нехай f(v) — порядок завершення для вершини v в DFS-циклі. Тоді:
Доведення послуговується фактом, що мета-граф (ущільнений граф) такий, в якому всі компоненти сильної зв'язності стягнуті до однієї вершини є ациклічним.
Наслідок: найбільше значення f матиме в компоненті-джерелі (англ. source SCC), тобто вершина лежатиме на верхівці стека.
Складність
Якщо на вході граф описаний за допомогою [en], алгоритм виконує два повних обходи графа, отже виконується за Θ(V+E) (лінійний) час, який є оптимальним, бо збігається з нижньою межею (кожен алгоритм повинен обійти всі вершини і ребра). Це концептуально найпростіший ефективний алгоритм, але не настільки швидкий як і , які виконують лише один обхід графа.
Якщо граф представлено через матрицю суміжності, алгоритм потребує час Ο(V2).
Посилання
- Опис і доведення алгоритму Косараджу [ 19 листопада 2011 у Wayback Machine.] (англ.)
- (англ.)
- (англ.)
Це незавершена стаття про алгоритми. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm Kosaradzhu angl kosaraju algorithm algoritm dlya znahodzhennya komponent silnoyi zv yaznosti oriyentovanogo grafa Aho Hopkroft i Ulman pripisuyut jogo do neoprilyudnenogo paperu vid 1978 Vin vikoristovuye fakt sho transponovanij graf toj samij graf z obernenimi napryamkami reber maye ti sami komponenti silnoyi zv yaznosti sho j pochatkovij graf Algoritm Kosaradzhu pracyuye tak Nehaj G oriyentovanij graf i S porozhnij stek Dopoki S ne mistit vsi vershini Vibrati dovilnu vershinu v ne z S Vikonati poshuk v glibinu vid v Po zaversheni poshuku v glibinu dlya kozhnoyi vershini u zashtovhuyemo u na S Obernuti vsi rebra dlya otrimannya transponovanogo grafa Doki S neporozhnij mistit vershinu v poryadku zavershennya na verhivci steka ostannye zavershennya poshuku v glibinu Vishtovhnuti vershinu v z S Vikonati poshuk v glibinu vid v Nabir vidvidanih vershin dast komponentu silnoyi zv yaznosti sho mistit v zapisati ce i vidaliti vsi ci vershini z grafa G i steka S Tak samo mozhna vikoristati poshuk v shirinu LemaRozglyanemo dvi sumizhni komponenti silnoyi zv yaznosti v G zobrazhennya pravoruch Nehaj f v poryadok zavershennya dlya vershini v v DFS cikli Todi max v C 1 f v gt max v C 2 f v displaystyle max v in C 1 f v gt max v in C 2 f v Dovedennya poslugovuyetsya faktom sho meta graf ushilnenij graf takij v yakomu vsi komponenti silnoyi zv yaznosti styagnuti do odniyeyi vershini ye aciklichnim Naslidok najbilshe znachennya f matime v komponenti dzhereli angl source SCC tobto vershina lezhatime na verhivci steka f 1 gt f 2 gt f 4 f 1 gt f 3 gt f 4 displaystyle f 1 gt f 2 gt f 4 f 1 gt f 3 gt f 4 SkladnistYaksho na vhodi graf opisanij za dopomogoyu en algoritm vikonuye dva povnih obhodi grafa otzhe vikonuyetsya za 8 V E linijnij chas yakij ye optimalnim bo zbigayetsya z nizhnoyu mezheyu kozhen algoritm povinen obijti vsi vershini i rebra Ce konceptualno najprostishij efektivnij algoritm ale ne nastilki shvidkij yak i yaki vikonuyut lishe odin obhid grafa Yaksho graf predstavleno cherez matricyu sumizhnosti algoritm potrebuye chas O V2 PosilannyaOpis i dovedennya algoritmu Kosaradzhu 19 listopada 2011 u Wayback Machine angl angl angl Ce nezavershena stattya pro algoritmi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi