Pull to refresh

Comments 2

Конец 2024 года, а я тут оставляю первый комментарий.

Спасибо тебе, @bash_mac, очень выручил!!! Это лучшее описание алгоритма Косарайю в рунете на текущий момент.

В википедии, кстати, вообще некорректно написано:

Инвертируем дуги исходного ориентированного графа.
Запускаем поиск в глубину на этом обращённом графе, запоминая, в каком порядке выходили из вершин.
Запускаем поиск в глубину на исходном графе, в очередной раз выбирая не посещённую вершину с максимальным номером в векторе, полученном в п.2.
Полученные из п.3 деревья и являются сильно связными компонентами.

https://ru.wikipedia.org/wiki/Алгоритм_Косарайю

Впрочем не в первый раз вижу математические косяки в википедии :(

Рад, что статья пригодилась)

По поводу Википедии -- у неё алгоритм тот же с точностью до шага инвертирования. По 3 лемме неважно, на исходном графе мы проставляем метки, или на инвертированном. Главное -- чтобы во второй DFS мы шли по меткам в обратном порядке в графе, который инвертирован относительно первого прохода DFS.

У меня первый DFS по исходному графу, а воторой -- по инвертированному. 

У Википедии первый DFS по инвертированному, второй -- по исходному.

Sign up to leave a comment.

Articles