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ů.
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 .
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šechPřítomnost alespoň jedné kontury v grafu povede k tomu, že při určité iteraci cyklu nebude možné vybrat nový vrchol .
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.
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 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 |
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í).
Algoritmy řazení | |
---|---|
Teorie | Složitost O zápis Objednávkový vztah Seřadit typy udržitelného Vnitřní Externí |
Výměna | |
Výběr | |
vložky | |
fúze | |
Žádné srovnání | |
hybridní | |
jiný | |
nepraktický |