Sortare topologică

Sortarea topologică  este ordonarea vârfurilor unui graf direcționat fără contur în funcție de ordinea parțială dată de muchiile digrafului pe mulțimea vârfurilor acestuia.

Exemplu

Pentru Conte

există mai multe secvențe consistente ale vârfurilor sale, care pot fi obținute folosind o sortare topologică, de exemplu:

Se poate observa că oricare două vârfuri adiacente care nu sunt incluse în relația de ordine parțială pot fi permutate în succesiune .

Algoritmul lui Kahn (1962)

Unul dintre primii algoritmi și cel mai potrivit pentru execuția manuală.

Să fie dat un grafic simplu orientat fără contur . Se notează prin mulțimea de vârfuri astfel încât . Adică  , mulțimea tuturor vârfurilor de la care există un arc până la vârf . Fie  șirul dorit de vârfuri.

pentru moment alege orice vârf astfel încât și șterge din toate

Prezența a cel puțin unui contur în grafic va duce la faptul că la o anumită iterație a ciclului nu va fi posibilă selectarea unui nou vârf .

Un exemplu despre cum funcționează algoritmul

Să fie dat un grafic . În acest caz, algoritmul va rula după cum urmează:

Etapa
0
unu
2
3
patru
5

În al doilea pas , vârful poate fi ales în loc de , deoarece ordinea dintre și nu este specificată.

Algoritmul lui Tarjan ( 1976)

Pe un computer, o sortare topologică poate fi făcută în timp și memorie O( n ) prin parcurgerea tuturor nodurilor folosind căutarea depth-first și scoaterea vârfurilor la punctul de ieșire.

Cu alte cuvinte, algoritmul este următorul:

Pasul algoritmului:

Exemplu

Exemplul va fi pe același grafic, dar ordinea în care selectăm vârfurile de ocolit este c, d, e, a, b.

Etapa Actual alb Stivă (gri) Ieșire (negru)
0 a, b, c, d, e
unu c a, b, d, e c
2 d a fi c, d
3 e a, b c, d, e
patru 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
opt e a, b c, d, e
9 A b A c, d, e
zece b a, b c, d, e
unsprezece A A b, c, d, e
12 a, b, c, d, e
13 b a, b, c, d, e

Aplicație

Cu ajutorul sortării topologice, se construiește o secvență corectă de acțiuni, fiecare dintre acestea putând depinde de cealaltă: succesiunea de promovare a cursurilor de formare de către studenți, instalarea programelor folosind managerul de pachete , construirea codurilor sursă a programelor folosind Makefiles .

Este posibil să construiți o listă de afișare a obiectelor într- o proiecție izometrică cunoscând relațiile ordinale pereche dintre obiecte (care dintre cele două obiecte ar trebui desenat primul).

Vezi și

Link -uri

Literatură