Topológiai rendezés

A topológiai rendezés egy kontúr nélküli irányított gráf  csúcsainak rendezése a digráf élei által adott részleges sorrend szerint a csúcsok halmazán.

Példa

Grófnak

csúcsainak számos konzisztens sorozata van, amelyeket topológiai rendezéssel kaphatunk meg, például:

Látható, hogy bármely két szomszédos csúcs, amely nem szerepel a részleges sorrendű relációban, permutálható a sorozatban .

Kahn algoritmusa (1962)

Az egyik első algoritmus, és a legalkalmasabb a kézi végrehajtásra.

Legyen adott egy kontúrmentes orientált egyszerű gráf . Jelölje a csúcsok halmazával , hogy . Azaz az  összes csúcs halmaza, ahonnan ív van a csúcsra . Legyen  a kívánt csúcssorozat.

egyelőre válasszon egy ilyen csúcsot , és törölje az összesből

Legalább egy kontúr jelenléte a gráfban ahhoz a tényhez vezet, hogy a ciklus egy bizonyos iterációjánál nem lehet új csúcsot kiválasztani .

Példa az algoritmus működésére

Legyen adott egy gráf . Ebben az esetben az algoritmus a következőképpen fut:

lépés
0
egy
2
3
négy
5

A második lépésben a csúcs helyett választható , mivel a és közötti sorrend nincs megadva.

Tarján algoritmusa ( 1976)

Számítógépen a topológiai rendezés O( n ) időben és memóriában végezhető úgy, hogy az összes csúcsot bejárjuk mélységi kereséssel , és kiadjuk a csúcsokat a kilépési ponton.

Más szavakkal, az algoritmus a következő:

Az algoritmus lépése:

Példa

A példa ugyanazon a gráfon lesz, de a kikerülendő csúcsok kiválasztásának sorrendje: c, d, e, a, b.

Lépés Jelenlegi fehér Stack (szürke) Kilépés (fekete)
0 a, b, c, d, e
egy c a, b, d, e c
2 d a, b, e c, d
3 e a, b c, d, e
négy 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
nyolc e a, b c, d, e
9 a b a c, d, e
tíz b a, b c, d, e
tizenegy a a b, c, d, e
12 a, b, c, d, e
13 b a, b, c, d, e

Alkalmazás

A topológiai rendezés segítségével a műveletek helyes sorrendje épül fel, amelyek mindegyike függhet egymástól: a hallgatók tanfolyamok teljesítésének sorrendje, programok telepítése a csomagkezelő segítségével , programforráskódok létrehozása a Makefiles segítségével .

Lehetőség van objektumok megjelenítési listájának felépítésére izometrikus vetületben az objektumok közötti páros ordinális relációk ismeretében (a két objektum közül melyiket kell először megrajzolni).

Lásd még

Linkek

Irodalom