Topologinen lajittelu

Topologinen lajittelu  on ääriviivattoman suunnatun graafin kärkien järjestystä sen kärkijoukossa olevan digraafin reunojen antaman osittaisen järjestyksen mukaan .

Esimerkki

Countille

sen kärkipisteistä on useita johdonmukaisia ​​sekvenssejä, jotka voidaan saada topologisella lajittelulla, esimerkiksi:

Voidaan nähdä, että mitkä tahansa kaksi vierekkäistä kärkeä, jotka eivät sisälly osittaisjärjestyssuhteeseen, voidaan permutoida sekvenssissä .

Kahnin algoritmi (1962)

Yksi ensimmäisistä algoritmeista ja sopivin manuaaliseen suorittamiseen.

Olkoon ääriviivaton orientoitu yksinkertainen graafi . Merkitään joukko pisteitä siten, että . Eli  joukko kaikkia pisteitä , joista on kaari kärkeen . Antaa olla  haluttu kärkijono.

Valitse toistaiseksi mikä tahansa huippupiste ja poista se kaikista

Vähintään yhden ääriviivan läsnäolo graafissa johtaa siihen, että syklin tietyllä iteraatiolla ei ole mahdollista valita uutta kärkeä .

Esimerkki algoritmin toiminnasta

Olkoon kuvaaja annettu . Tässä tapauksessa algoritmi toimii seuraavasti:

askel
0
yksi
2
3
neljä
5

Toisessa vaiheessa kärki voidaan valita sijasta , koska järjestystä ja välillä ei ole määritetty.

Tarjanin algoritmi ( 1976)

Tietokoneella topologinen lajittelu voidaan tehdä O( n ) ajassa ja muistissa läpikäymällä kaikki kärjet käyttämällä syvyyshakua ja tulostamalla kärjet poistumispisteessä.

Toisin sanoen algoritmi on seuraava:

Algoritmin vaihe:

Esimerkki

Esimerkki on samassa graafissa, mutta järjestys, jossa valitsemme ohitettavat kärjet, on c, d, e, a, b.

Vaihe Nykyinen Valkoinen Pino (harmaa) Poistu (musta)
0 a, b, c, d, e
yksi c a, b, d, e c
2 d a, b, e c, d
3 e a, b c, d, e
neljä 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
kahdeksan e a, b c, d, e
9 a b a c, d, e
kymmenen b a, b c, d, e
yksitoista a a b, c, d, e
12 a, b, c, d, e
13 b a, b, c, d, e

Sovellus

Topologisen lajittelun avulla rakennetaan oikea toimintosarja, joista jokainen voi riippua toisistaan: opiskelijoiden suorittamien koulutuskurssien järjestys, ohjelmien asennus paketinhallinnan avulla , ohjelmien lähdekoodien rakentaminen Makefilesin avulla .

On mahdollista rakentaa näyttölista kohteista isometriseen projektioon , kun tiedetään objektien väliset järjestyssuhteet (kumpi näistä kahdesta objektista tulee piirtää ensin).

Katso myös

Linkit

Kirjallisuus