Topologické řazení

Topologické třídění  je řazení vrcholů bezkonturového orientovaného grafu podle dílčího řádu daného hranami digrafu na množině jeho vrcholů.

Příklad

Pro hraběte

existuje několik konzistentních sekvencí jeho vrcholů, které lze získat pomocí topologického řazení, například:

Je vidět, že libovolné dva sousední vrcholy, které nejsou zahrnuty ve vztahu částečného řádu, mohou být v posloupnosti permutovány .

Kahnův algoritmus (1962)

Jeden z prvních algoritmů a nejvhodnější pro ruční provádění.

Nechť je dán bezkonturový orientovaný jednoduchý graf . Označme množinou vrcholů tak, že . Tedy  množina všech vrcholů, ze kterých vede oblouk k vrcholu . Nechť  je požadovaná posloupnost vrcholů.

pro tuto chvíli vyberte libovolný vrchol a odstraňte ze všech

Přítomnost alespoň jedné kontury v grafu povede k tomu, že při určité iteraci cyklu nebude možné vybrat nový vrchol .

Příklad toho, jak algoritmus funguje

Nechť je uveden graf . V tomto případě bude algoritmus probíhat následovně:

krok
0
jeden
2
3
čtyři
5

Ve druhém kroku lze zvolit vrchol místo , protože pořadí mezi a není určeno.

Tarjanův algoritmus ( 1976)

Na počítači lze topologické řazení provést v čase a paměti O( n ) procházením všech vrcholů pomocí vyhledávání do hloubky a výstupem vrcholů na výstupním bodě.

Jinými slovy, algoritmus je následující:

Krok algoritmu:

Příklad

Příklad bude na stejném grafu, ale pořadí, ve kterém vybíráme vrcholy, které se mají obejít, je c, d, e, a, b.

Krok Proud Bílý Zásobník (šedá) Odejít (černá)
0 a, b, c, d, e
jeden C a, b, d, e C
2 d a, b, e c, d
3 E a, b c, d, e
čtyři d a, b c, d E
5 C a, b C d, e
6 a, b c, d, e
7 d a, b c, d, e
osm E a, b c, d, e
9 A b A c, d, e
deset b a, b c, d, e
jedenáct A A b, c, d, e
12 a, b, c, d, e
13 b a, b, c, d, e

Aplikace

Pomocí topologického třídění je sestavena správná posloupnost akcí, z nichž každá může záviset na druhé: posloupnost absolvování školení studenty, instalace programů pomocí správce balíčků , vytváření zdrojových kódů programů pomocí Makefiles .

Je možné sestavit seznam zobrazení objektů v izometrické projekci se znalostí párových ordinálních vztahů mezi objekty (který z těchto dvou objektů by měl být nakreslen jako první).

Viz také

Odkazy

Literatura