Professional Documents
Culture Documents
Topološko sortiranje
Seminarski rad
Zagreb, 2016.
Sadržaj
1 Ciljevi i zadaci nastavnog sata 3
2 Uvod 3
3 Potrebno predznanje 3
3.1 Algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Grafovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.3 DFS algoritam pretrage . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Topološko sortiranje 5
5 Sažetak 8
2
1 Ciljevi i zadaci nastavnog sata
• Objasniti pojam algoritma
2 Uvod
Zbog sve veće potrebe za pohranom digitalnih podataka traže se i sve bolji i optimal-
niji načini obrade baza podataka. Zbog strukure baze podataka koristimo algoritme
za obradu grafova u koje spada i topološko sortiranje. Najveća korist topološkog
sortiranja je kod obrade instrukcija te dretvi u mikroprocesora osim u radu sa ba-
zama podataka. Prije teme seminara započinjemo sa kratkim osvrtom na potrebna
predznanja.
3 Potrebno predznanje
3.1 Algoritmi
Geometrijski algoritmi
Algebarski algoritmi
3
3.2 Grafovi
Kod bilo kakve obrade podataka u bazi moramo doći do njih. Kako su baze podataka
organizirane kao grafovi tako koristimo algoritme za pretragu grafova. Najpoznatiji
je pretraga u dubinu ili DFS (Depth - First - Search).
4
Algoritam DFS (G, r0 );
Ulaz: G=(V, E) (povezan graf) i r0 (čvor);
Izlaz: Zavisi o primjeni;
Begin:
Označi r0 ;
Izvrši ulaznu obradu na r0 ; (zavisi o primjeni DFS);
For (sve grane (r0 , rn )) do {
If (rn je neoznačen) then DFS (G, rn );
Izvrši izlaznu obradu za (r0 , rn ) };
End;
Pretraga počinje tako da se uzme neki početni čvor r0 koji se označi kao posječen.
Tada se gledaju svi ostali čvorovi vezani na taj koji nisu označeni te se neki od njih
nasumično odabere. Označimo sad taj čvor sa r1 te ga označimo kao posječenog. Sad
rekurzivno nastavljamo pretragu sve dok ne dodemo do nekog čvora rm za kojeg ne
postoji susjedni neoznačeni čvor. Tada se vračamo na početni čvor r0 te pretraga ide
po ostalim neoznačenim čvorovima dok ne dodemo do traženog podatka. Pretraga
se uvijek radi sa nekim ciljem tako da se na čvorovima često rade ulazne i izlazne
obrade.
4 Topološko sortiranje
Neka postoji skup poslova za čiji redoslijed izvršavanja su zadata neka ograničenja
tj. neki poslovi se mogu tek obaviti nakon drugih. Sva ograničenja i ovisnosti su
poznate a traži se takav raspored da po njemu svaki posao započinje tek kad budu
završeni svi poslovi o kojima on zavisi. Takav problem se zove topološko sortiranje.
Prirodno se nameće organizacija problema pomoću grafova.
Najbolji primjer topološkog sortiranja je kod odjevanja. Nemožemo odjenuti
jaknu prije nego odjenemo košulju. Isto tako nemožemo obuči cipele pa na njih
čarape.
5
Algoritam TopSort(G);
Ulaz: G=(V,E) (usmjereni aciklički graf);
Izlaz: polje Rb za svaki čvor v dobiva vrijednost sortiranu vrijednost G;
Begin;
Inicijalizirati v.Ulrb za sve čvorove; npr. pomou DFS
G.rb = 0;
For i = 1 to n do;
If vi .Ulrb = 0 then stavi vi u sortiranu listu;
While lista nije prazna {
Skini čvor v iz grafa;
G.rb = G.rb + 1;
v.Rb = G.rb; }
For sve grane (v,w) do {
w.Ulrb = w.Ulrb - 1;
If w.Ulrb <= 0 then stavi w u sortiranu listu; }
End;
6
Slika 2: Primjer topološkog sortiranja
7
Slika 3: Još jedan primjer sortiranja
5 Sažetak
Zbog strukure baze podataka koristimo algoritme za obradu grafova u koje spada
i topološko sortiranje. Algoritam je konačan slijed dobro definiranih naredbi za
ostvarenje zadatka, koji će se za dano početno stanje izvršiti u realnom vremenu.
Graf G = (V, E) sastoji se od skupa čvorova V i skupa grana E. Graf može biti
usmjeren ili neusmjeren. Najpoznatiji algoritam za pretragu grafova je pretraga u
dubinu ili DFS (Depth - First - Search). Topološko sortiranje je riješenje problema
gdje se traži redoslijed izvršavanja poslova gdje se neki nemogu izvršiti prije drgih.
Ulazni podatci su organizirani u graf dok je izlaz sortirana lista. Topološko sortiranje
nije jedinstveno te daje više riješenja.
8
Literatura
[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein;
Introduction to algorithms; MIT press, 2002.