Előfeltétele, hogy egy DAG gráfban, azaz egy irányított körmentes gráfban,
nincs $s$-ből elérhető irányított kör, így negatív kör sem. Ha teljesül az előfeltétel az
algoritmus
$\emptyset$-t ad vissza. Különben megtalál egy irányított kört, aminek egyik csúcsával tér vissza.
Ebből
elindulva a $\pi$ címkék mentén, a kör fordított irányban bejárható.
Működése:
Elkészítjük a gráf egy topologikus rendezését mélységi keresés (DFS)
segítségével. A topologikus rendezés csak az $s$-ből elérhető
részgráfot próbálja topologikusan
rendezni. A topológikus rendezést érdemes úgy elkészíteni, hogy a mélységi bejárás során a
befejezési idők szerinti
sorrendben berakjuk a csúcsokat egy verembe. Ha a gráf mégis tartalmazna kört, a DFS futása közben
ez kiderülne, és akkor leáll az
algoritmust. Ezután kiterjesszük a csúcsokat a topologikus rendezésnek megfelelő sorrendben,
így
végzünk fokozatos közelítést. Azaz mindig kiveszünk egy csúcsot a veremből és erre végzünk fokozatos
közelítést.
Műveletigény:
Minden csúcsot és élt legfeljebb egyszer terjesztünk ki. Ezek alapján a futási
idő a
topologikus rendezéssel és a csúcsok kiterjesztésével együtt:
- $n = |G.V|$ (csúcsok száma), $m = |G.E|$ (élek száma)
- $MT(n, m) \in \Theta(n + m)$
- $mT(n,m) \in \Theta(n)$