Erősen összefüggő komponensek meghatározása Algoritmusok és adatszerkezetek 2. Készítette: Tóth István (S23R35)
Erősen összefüggő komponens Irányított gráfban ekvivalenciareláció: a és b csúcs: relációban, ha: a = b, vagy a és b közt minden irányban megy irányított út Az ekvivalenciaosztályok neve: erősen összefüggő komponensek Ha az egész gráf alkotja: erősen összefüggő gráf
Algoritmusok Kosaraju algoritmusa Tarjan algoritmusa a másik kettővel ellentétben két mélységi bejárást használ: kevésbé hatékony Tarjan algoritmusa Útkereső algoritmus
Kosaraju-féle eljárás: elv G irányított gráf Mélységi bejárás G-n, a csúcsok megszámozása: a rekurzív hívások visszatérésének sorrendje szerint G transzponáltjának elkészítése: GT Mélységi bejárás GT-n a legmagasabb számú csúcstól Az erősen összefüggő komponensek: a kapott mélységi erdő fái
Kosaraju-féle eljárás: műveletigény V csúcshalmaz, E élhalmaz: Θ(V+E) futási idő Előnye: egyszerű Hátránya: két mélységi bejárás
Tarjan-féle eljárás: elv G gráf, S verem Mélységi bejárás tetszőleges csúcstól kezdve Nem nézi a korábban már vizsgált csúcsokat A gráf részfái lesznek az erősen összefüggő komponensek A részfák gyökerei lesznek az erősen összefüggő komponensek gyökerei
Tarjan-féle eljárás: elv A csúcsok S-be kerülnek a bejárás sorrendje szerint Amikor az algoritmus befejezte egy részfa vizsgálatát: Elkezdi kiszedni S-ből a csúcsokat, nézi, hogy az adott csúcs gyökere-e a részfának Ha eljut a gyökeréhez: az, és az addig kiszedett csúcsok egy erősen összefüggő komponenst alkotnak
Tarjan-féle eljárás: animáció forrás: http://www.wikipedia.org
Tarjan-féle eljárás: műveletigény V csúcshalmaz, E élhalmaz: O(|V|+|E|) futási idő Előnye: egy mélységi bejárás
Tarjan-féle eljárás: pszeudokód