You are on page 1of 9

Sveučilište u Zagrebu

Prirodoslovno matematički fakultet

Eduard Luka Mudri

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

• Objasniti pojam grafova

• Objasniti DFS algoritam pretraživanja

• Objasniti topološko sortiranje

• Navesti primjenu topološkog sortiranja

• Riješiti više primjera topološkog sortiranja

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

U matematici i računarstvu algoritam je konačan slijed dobro definiranih naredbi


za ostvarenje zadatka, koji će se za dano početno stanje izvršiti u realnom vremenu.
Postoje:

Geometrijski algoritmi

Algebarski algoritmi

Algoritmi za rad na skupovima

Algoritmi za rad sa grafovima

3
3.2 Grafovi

Graf G = (V, E) sastoji se od skupa čvorova V i skupa grana E. Svaka grana


odgovara paru različitih susjednih čvorova. Graf može biti usmjeren ili neusmjeren.
Grane usmjerenog grafa su uredeni parovi čvorova, pri čemu je bitan redoslijed ta
dva čvora. Put v1 do vn je niz čvorova povezan granama (v1 , v2 ),(v2 , v3 ). Kako
izgleda graf možemo vidjeti na slici 1

Slika 1: Primjer grafa.

3.3 DFS algoritam pretrage

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;

Graf se inicijalizira primjenom DFS algoritma gdje se svakom čvoru pridaje


ulazni redni broj te svakom čvoru koji slijedi iz njega za jedan veći. Bitno je samo
znati odrediti koji čvor je početni tj. da ima ulazni redni broj 0. Prilikom pretrage
čvorova svaki čvor sa rednim brojem 0 se izdvaja iz liste grafa u poseban niz. Kada
se naide na čvor sa rednim brojem 0, svakoj grani koja sijedi iz tog čvora se pritom
smanjuje redni broj za 1. Ako u jedan čvor doemo iz više smjerova tada mu se redni
broj povečava. Rezultat ovog algoritma je topološki sortirana lista početnog grafa.

6
Slika 2: Primjer topološkog sortiranja

Topološki sortiran graf sa slike 2 je:


1,2,5,4,8,9,11,3,7,6,10,12,13
1,3,2,7,6,5,4,10,9,8,12,11,13
1,3,7,6,12,2,5,4,10,9,8,11,13

Kao što vidimo, topološko sortiranje nije jedinstveno.

Sortiran graf sa slike 3:


11,2,7,1,5,8,9,3
5,2,8,11,7,3,1,9

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.

You might also like