Topologinen lajittelu on ääriviivattoman suunnatun graafin kärkien järjestystä sen kärkijoukossa olevan digraafin reunojen antaman osittaisen järjestyksen mukaan .
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ä .
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 kaikistaVähintään yhden ääriviivan läsnäolo graafissa johtaa siihen, että syklin tietyllä iteraatiolla ei ole mahdollista valita uutta kärkeä .
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.
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 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 |
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).
Lajittelualgoritmit | |
---|---|
Teoria | Monimutkaisuus O merkintä Tilaussuhde Lajittele tyypit kestävää Sisäinen Ulkoinen |
Vaihto | |
Valinta | |
insertit | |
fuusio | |
Ei vertailuja | |
hybridi | |
Muut | |
epäkäytännöllistä |