You are on page 1of 29

Overviev

BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

Grafovski algoritmi

Mnogi racunarski problemi definisani u terminima grafova;


Graf G = (V, E);
V neprazan skup c ije elemente nazivamo c vorovi grafa;
E V V skup c ije elemente nazivamo grane grafa; Vreme
neophodno za izvrenje graf algoritma obicno zavisi od broja
c vorova (|V|) grafa i broja grana grafa (|E|). Elementarni graf
algoritmi predstavljanje i pretraivanje grafa;
Algoritam pretraivanja moe da otkrije puno o strukturi grafa.
Predstavljanje grafa dva standardna nacina:
kolekcija listi susedstva
matrica susedstva

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

Lista susedstva

Lista susedstva c eci nacin za predstavljanje grafova;


Dobar nacin za predstavljanje retkih grafova, |E| |V|2 .
Matrica susedstva pogodna za guste grafove, |E| |V|2
Reprezentacija od G = (V, E) listom susedstva niz Adj koji
se sastoji od |V| listi od kojih svaka odgovara po jednom c voru
iz V.
u V, Adj[u] = {v | (u, v) E} skup svih suseda c vora u u
G (moe da sadri i pokazivace na c vorove)
Za usmereni graf G suma duina svih listi susedstva je |E|;
Za neusmereni graf G suma duina svih listi susedstva je
2|E|;
U oba slucaja u memoriji je potrebno O (V + E) prostora.

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

Lista susedstva (cont.)

Lista susedstva moe biti prilagodjena predstavljanju


teinskih grafova;
Teinski grafovi svakoj grani se pridruuje teina zadata
funkcijom w : E 7 R
w teinska funkcija;
(u, v) E, w(u, v) teina grane koju u listu susedstva reci u
smetamo sa c vorom v
Nepovoljnost ovakvog predstavljanja ne postoji mogucnost
brzog ispitivanja da li v Adj[u].
Ovo se prevazilazi predstavljanjem grafa matricom susedstva.

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

Matrica susedstva

Za predstavljanje grafa matricom susedstva pretpostavka da


su c vorovi numerisani sa 1, 2, . . . , |V| proizvoljnim redom;
|V|
A matrica susedstva dimenzije |V| |V|; A = (aij )i,j=1
aij =

1,
0,

(i, j) E
u protivnom

Neophodna memorija O (|V|2 )


Za neusmerene grafove A = AT ;
Kod teinskih grafova teinu grane w(u, v) smestamo u vrstu
u i kolonu v matrice susedstva
Za nepostojece grane NIL, 0 ili .

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

BFS algoritam-pretraivanje grafa po irini

- Jedan od najjednostavnijih algoritama za pretraivanje grafa


(prototip za mnoge vane graf algoritme);
Primer:
Prajmov algoritam za nalaenje minimalnog razmakau stablu,
Dijkstrov algoritam najkraceg puta iz jednog izvora
Za dati graf G = (V, E) i fiksirani izvorni c vor s, BFS se
sistemski krece niz grane grafa G da otkrije svaki c vor koji je
dostian iz s.
Istovremeno algoritam racuna distancu (najmanji broj grana) iz
s u svaki dostini c vor.

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

BFS algoritam (cont.)

BFS algoritam proizvodi prvo-po-irini stablo iz s u v, koje


odgovara najkracem putu izmedju c vorova s i v.
Algoritam radi i na usmerenim i na neusmerenim grafovima.
Pretraivanje je dobilo ovakav naziv, jer ukazuje na granicu
izmedju otkrivenih i neotkrivenih c vorova, uniformno po irini te
granice. To znaci da algoritam najpre otkriva sve c vorove koji
su na distanci k od s, pre otkrivanja svih c vorova na distanci
k + 1. Da bi davao informaciju o tome koji su c vorovi otkriveni,
a koji nisu, algoritam ih boji belo, sivo ili crno.
Tokom pretraivanja, c vor na koji se prvi put nailazi (koji je prvi
put otkriven) je obojen belo.Sivi i crni c vorovi su ranije otkriveni
i granica medju njima utvrdjuje se ponaanjem u algoritmu.

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

BFS algoritam (cont.)

Opis:
Ako su (u, v) E i ako je c vor u crn, c or v je ili siv ili crn, to
znaci da su svi susedni c vorovi crnog c vora vec otkriveni. Sivi
c vorovi za susede mogu imati i bele c vorove.
BFS algoritam pretraivanja konstruie, takozvano, prvo po
irini stablo inicijalizovano u izvornom c voru s.

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

BFS algoritam (cont.)

Kako algoritam radi?


Kada otkrijemo beli c vor v u toku skeniranja liste susedstva vec
otkrivenog c vora u, c vor v i grana (u, v) dodaju se u stablo.

Kaemo
da je u prethodnik, roditelj c vora v u stablu.

Cvor
se otkriva samo jedan put, pa svaki c vor moe imati
najvie jednog roditelja. Veze sa prethodnikom i sledbenikm u
prvom po irini stablu definisane su u odnosu na koren s: ako je
c vor u na putu od s do c vora v, onda je u prethodnik od v i v je
sledbenik od u.
BFS procedura podrazumeva da je ulazni graf G = (V, E)
predstavljen listama susedstva.

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

BFS algoritam (cont.)

Ova procedura c uva nekoliko dodatnih informacija za svaki c vor


u grafu.
Boja svakog c vora u smetena je u promenljivoj u.color,
prethodnik od u smeten je u promenljivoj u..
Ako u nema prethodnika (u = s ili u nije otkriven), onda je
u. = NIL.
Distanca od izvora s do c vora u smeta se u promenljivu u.d.
Algoritam koristi FIFO kju Q da bi olakao upravljanje sivim
c vorovima.

Overviev
BFS-analiza
DFS algoritam

BFS algoritam (cont.)

Predstavljanje grafova
BFS algoritam

Overviev
BFS-analiza
DFS algoritam

Predstavljanje grafova
BFS algoritam

BFS algoritam (cont.)

Rezultat pretraivanja BFS algoritma moe da zavisi od


redosledakojim se posecuju susedi datog c vora, pa stablomoe
da varira, ali distanca koja se algoritmom racuna ne.

Overviev
BFS-analiza
DFS algoritam

BFS algoritam (cont.)

Predstavljanje grafova
BFS algoritam

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

BFS-analiza

Napomena:
Pre nego to dokaemo razlicite osobine BFS pretraivanja,
analiziracemo njegovo prolazno vreme na ulaznom grafu
G = (V, E).
Posle inicijalizacije svaki je c vor smeten u kju najvie jednom.
Operacije ENQUEUE i DEQUEUE uzimaju O (1) vremena, pa je
kompletno vreme posveceno kju operacijama O (V).
Obzirom da selistasusedstva svakog c vora skenira samo kada
se c vor ukloni iz kjua, svaka se lista susedstva skenira najvie
jednom. Suma duina svih listi je O (E), odakle je jasno da je
prolazno vreme BFS algoritma O (V+E).

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi

Definicija:
Definisacemo distancu najkraceg puta (s, v) izmedju c vorova s
i v kao minimalni broj grana na proizvoljnom putu iz s u v.
Ako put iz s u v ne postoji stavicemo (s, v) = .
Put duine (s, v) iz s u v je najkraci put.
Pokazacemo da distanca koju racuna BFS jeste upravo
distanca najkraceg puta.
Lema 1:
Neka je G = (V, E) usmeren ili neusmeren graf i s V proizvoljan c vor. Tada za granu (u, v) E vai (s, v) 6 (s, u) + 1.

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

Dokaz: Ako je c vor u dostian iz s, dostian je i iz v. U ovom


slucaju najkraci put iz s u v ne moe biti dui od najkraceg puta
iz s u u plus grana (u, v), pa u ovom slucaju nejednakost vai.
Ako u nije dostian iz s onda je (s, u) = i, u ovom slucaju,
nejednakost vai.
Napomena:
Cilj nam je da pokaemo da je v.d = (s, v), zaproizvoljan c vor
v V ulaznog grafa G.

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

Lema 2:
Neka je G = (V, E) usmeren ili neusmeren graf i pretpostavimo
da BFS prolazi kroz G od izvornog c vora s V. Tada, za
svaki c vor v V vrednost v.d koja se izracunava algoritmom
ogranicava odozgo (s, v), tj.v.d > (s, v).
Dokaz: Koristimo indukciju po broju ENQUEUE
operacija.Polazna induktivna pretpostavka je kada ses ukloni iz
kjua. U ovom slucaju je s.d = 0 = (s, s) i v.d = > (s, v),
za svaki v V \ {s}.
Pretpostavimo daje posle vadjenja c vora u iz kjua u.d > (s, u).

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

Da bi ucinili induktivni korak, uocimo beli c vor v, koji je otkriven

za vreme ispitianja
c vora u. Prema induktivnoj pretpostavci je
u.d > (s, u) i v.d = v.u + 1 > (s, u) + 1 > (s, v).

Cvor
v je umetnutu kju sada i nikad vie, jer je samo sada
obojen u sivo. Zato se vrednost v.d vie ne menja i induktivna
pretpostavka je ocuvana.
Lema 3:
Pretpostavimo da za vreme izvrenja BFSa na grafu G = (V, E)
kju Q sadri c vorove hv1 , v2 , . . . vr i, gde je v1 glava od Q, a vr
rep. Tada je
vr .d 6 v1 .d + 1,
za i {1, 2, . . . r 1}.

vi .d 6 vi+1 .d,

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

Dokaz: Izvodimo indukcijom po broju kju operacija. Inicijalno,


kada kju sadri samo s lema sigurnovai.
Moramo da pokaemo da lema vai posle ubacivanjai brisanja
c vora iz kjua.Ako je glava v1 kjua uklonjena v2 postaje nova
glava. Prema induktivnoj pretpostavci je v1 .d 6 v2 .d, a tada
imamo i vr .d 6 v1 .d + 1 6 v2 .d + 1, tako da lema vai i kadaje
v2 glava.
Ubacivanje c vora zahteva blie ispitivanje koda. Kada ubacimo
c vor v u kju Q, on postaje vr+1 . U to vreme vecsmo iz kjua
izbacili c vor u, c ija je lista susedstva upravo pocela da se
skenira.
Prema indukcijskoj pretpostavci, za novu glavu v1 je u.d 6 v1 .d.

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

Tako dobijamo
vr+1 .d = v.d = u.d + 1 6 v1 .d + 1.
Takodje vai vr .d 6 u.d + 1 = v.d = vr+1 .d.
Posledica:
Pretpostavimo da su za vreme izvrenja BFS algoritma na grafu
G = (V, E) c vorovi vi i vj ubaceni u kju Q i da je vi ubaceno pre
vj . Tada je vi .d 6 vj .d, u vremenu kada je vj ubaceno.

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

Teorema:
Neka je G = (V, E) usmeren ili neusmeren graf i da se BFS
izvrava od izvornog c vora s V. Tada BFS otkriva svaki c vor v
dostian iz s i odredjuje distancu v.d = (s, v). tavie, za svaki
c vor v 6= s dostian iz s jedan od najkracih puteva jeste najkraci
put iz s u v. iza koga je grana (v., v).
Dokaz izvodimo kontrapozicijom. Pretpostavimo da postoji c vor
c ija distanca v.d u BFSu nije jednaka distanci najkraceg puta i
neka je v prvi c vor za koji je v.d > (s, v). Znaci da v mora biti
dostian iz s, jer je, u protivnom, (s, v) = > v.d. Neka je u
neposredni prethodnik od v.

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

Tada je (s, v) = (s, u) + 1. Kako je (s, u) < (s, v) i kako je


u pronadjen pre v vai u.d = (s, u), pa je
v.d > (s, v) = (s, u) + 1 = u.d + 1.
U ovom slucaju i vremenu c vor v moe biti beo, siv ili crn.
Pokazacemo da svaki od ovih slucajeva dovodi do kontradikcije.
Ako je v beo v.d = u.d + 1 to je nemoguce.
Ako je v crn, znaci da je vec udaljen iz kjua, pa je v.d 6 u.d, to
je takodje kontradikcija.
Ako je v siv, obojen je posle izbacivanja nekog c vora w koji je
uklonjen iz kjua pre u. Dakle,
v.d = w.d + 1 6 u.d + 1,

Overviev
BFS-analiza
DFS algoritam

putevi
Najkraci

Najkraci putevi (cont.)

pa nas i ovaj slucaj dovodi do kontradikcije. Prema tome,


v.d = (s, v).
Svi c vorovi dostini iz s su otkriveni BFS algoritmom. Ako je
v. = u, to je v.d = u.d + 1. Tako je najkraci put iz s u v,
najkraci put iz s u v. plus put niz granu (v., v).

Overviev
BFS-analiza
DFS algoritam

DFS algoritam-Pretraivanje grafa po dubini

Strategija DFS pretraivanja podrazumeva pretraivanje po


dubini grafa.
DfS pretraivanje otkriva grane koje izlaze iz c vora v, koji je
najskorije otkriven. Kada se sve grane iz v otkriju, koristimo
"backtrack" za pretraivanje grana koje naputaju c vor iz koga
je v otkriven. Ovaj proces se nastavlja sve dok ne otkrijemo sve
c orove dostine iz izvornog c vora. Ako ima jo neotkrivenih
c vorova, jedan od njih se koristi kao izvorni c vor i ispitivanje se
ponavlja iz tog izvora. Postupaknastavljamo dok svi c vorovi
nisu otkriveni.

Overviev
BFS-analiza
DFS algoritam

Razlike u odnosu na BFS

U ovom pretraivanju moe da se formira nekoliko stabala


jer pretraivanje moe da se vri iz nekoliko izvora,
Prethodnik (praizvor) u ovom pretraivanju definie se
drugacije:
G = (V, E ), gde je E = {(v., v) | v V, v. 6= NIL},
Podgraf prethodnika u DFS obrazuje depth-first forest koja
se sastoji od nekoliko depth-first stabala. E skup grana tih
stabala.

Overviev
BFS-analiza
DFS algoritam

DFS algoritam (cont.)

Kao i u BFS algoritmu, c vorovi se tokom pretraivanja boje,


c ime se identifikuje njihov status.
Inicijalno je svaki c vor beo, posivi kada se otkrije i pocrni kada
je zavren (kada je lista susedstva kompletno ispitana).
Ova tehnika garantuje da se svaki c vor zavrava u tacno
jednom depth-first stablu.
Pored formiranja depth-first ume, DFS takodje svakom c voru
pridruuje dva vremenska koraka:
- Prvi, v.d koji snima kada je c vor v prvi put otkriven (obojen
sivo)
- Drugi, v.f koji pamti kada je lista susedstva za v zavrena
(obojen crno)

Overviev
BFS-analiza
DFS algoritam

DFS algoritam (cont.)

Ovi vremenski koraci se koriste u mnogim graf algoritmima.


DFS belei kada je c vor u otkriven u promenljivoj u.d i kada je
c vor u zavrenu promenljivoj u.f.
Ovi vremenski koraci su celi brojevi izmedju 1 i 2|V|, jer postoji
jedan dogadjaj otkrivanja i jedan zavravanja za svaki od |V|
c vorova.
Za svaki c vor u je u.d < u.f i c vor je
beo - pre u.d;
siv - izmedju u.d i u.f;
crn - posle u.f.
Ulazni graf u DFS moe biti usmeren ili neusmeren.

Overviev
BFS-analiza
DFS algoritam

DFS algoritam (cont.)

Overviev
BFS-analiza
DFS algoritam

DFS algoritam (cont.)

Overviev
BFS-analiza
DFS algoritam

DFS algoritam (cont.)

Pri inicijalizaciji u DFS algoritmu uvodi se globalni brojac


vremena time. Zatim se proverava svaki c vor i kada je nadjen
algoritam prelazi na proceduru VISIT. Svaki put kada pozivamo
ovu proceduru u postaje koren novog stabla u DF umi.
Procedure u DFS uzimaju O (V) vremena.
Procedura VISIT poziva se tacno jednom za svaki c vor v V,
jer se poziva samo za bele c vorove koji se odmah farbaju u
sivo. U toku izvrenja DFS-VISIT(v) petlja se izvrava |Adj[v]|
puta. Kako je
X

|Adj[v]| = O (E),

vV

prolazno vreme procedure je O (E).


Dakle, prolazno vreme za DFS je O (V+E).

You might also like