bfs i dfs.pdf

29
Overviev BFS-analiza DFS algoritam Predstavljanje grafova BFS algoritam Grafovski algoritmi Mnogi raˇ cunarski problemi – definisani u terminima grafova; Graf – G =(V, E); V – neprazan skup ˇ cije elemente nazivamo ˇ cvorovi grafa; E V × V – skup ˇ cije elemente nazivamo grane grafa; Vreme neophodno za izvršenje graf algoritma obiˇ cno zavisi od broja ˇ cvorova (|V|) grafa i broja grana grafa (|E|). Elementarni graf algoritmi – predstavljanje i pretraživanje grafa; Algoritam pretraživanja može da otkrije puno o strukturi grafa. Predstavljanje grafa – dva standardna naˇ cina: kolekcija listi susedstva matrica susedstva

Upload: stefan-sokolovic

Post on 06-Feb-2016

65 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

Grafovski algoritmi

Mnogi racunarski problemi – definisani u terminima grafova;

Graf – G = (V, E);V – neprazan skup cije elemente nazivamo cvorovi grafa;E ⊆ V × V – skup cije elemente nazivamo grane grafa; Vreme

neophodno za izvršenje graf algoritma obicno zavisi od brojacvorova (|V|) grafa i broja grana grafa (|E|). Elementarni graf

algoritmi – predstavljanje i pretraživanje grafa;Algoritam pretraživanja može da otkrije puno o strukturi grafa.Predstavljanje grafa – dva standardna nacina:

kolekcija listi susedstva

matrica susedstva

Page 2: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

Lista susedstva

Lista susedstva – cešci 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 kojise sastoji od |V| listi od kojih svaka odgovara po jednom cvoruiz V.u ∈ V, Adj[u] = {v | (u, v) ∈ E} – skup svih suseda cvora u uG (može da sadrži i pokazivace na cvorove)

Za usmereni graf G – suma dužina svih listi susedstva je |E|;Za neusmereni graf G – suma dužina svih listi susedstva je2|E|;U oba slucaja u memoriji je potrebno O(V + E) prostora.

Page 3: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

Lista susedstva (cont.)

Lista susedstva – može biti prilagodjena predstavljanjutežinskih grafova;Težinski grafovi – svakoj grani se pridružuje težina zadatafunkcijom w : E 7→ Rw – težinska funkcija;(u, v) ∈ E, w(u, v) – težina grane koju u listu susedstva reci usmeštamo sa cvorom v

Nepovoljnost ovakvog predstavljanja – ne postoji mogucnostbrzog ispitivanja da li v ∈Adj[u].

Ovo se prevazilazi predstavljanjem grafa matricom susedstva.

Page 4: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

Matrica susedstva

Za predstavljanje grafa matricom susedstva – pretpostavka dasu cvorovi numerisani sa 1, 2, . . . , |V| proizvoljnim redom;A – matrica susedstva dimenzije |V| × |V|; A = (aij)

|V|i,j=1

aij =

{

1, (i, j) ∈ E

0, u protivnom

Neophodna memorija – O(|V|2)

Za neusmerene grafove – A = AT;Kod težinskih grafova – težinu grane w(u, v) smestamo u vrstuu i kolonu v matrice susedstvaZa nepostojece grane – NIL, 0 ili ∞.

Page 5: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam-pretraživanje grafa po širini

- Jedan od najjednostavnijih algoritama za pretraživanje grafa(prototip za mnoge važne graf algoritme);

Primer:Prajmov algoritam za nalaženje minimalnog razmakau stablu,

Dijkstrov algoritam najkraceg puta iz jednog izvora

Za dati graf G = (V, E) i fiksirani izvorni cvor s, BFS sesistemski krece niz grane grafa G da otkrije svaki cvor koji jedostižan iz s.Istovremeno algoritam racuna distancu (najmanji broj grana) izs u svaki dostižni cvor.

Page 6: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam (cont.)

BFS algoritam proizvodi prvo-po-širini stablo iz s u v, kojeodgovara najkracem putu izmedju cvorova s i v.Algoritam radi i na usmerenim i na neusmerenim grafovima.Pretraživanje je dobilo ovakav naziv, jer ukazuje na granicuizmedju otkrivenih i neotkrivenih cvorova, uniformno po širini tegranice. To znaci da algoritam najpre otkriva sve cvorove kojisu na distanci k od s, pre otkrivanja svih cvorova na distancik + 1. Da bi davao informaciju o tome koji su cvorovi otkriveni,a koji nisu, algoritam ih boji belo, sivo ili crno.Tokom pretraživanja, cvor na koji se prvi put nailazi (koji je prviput otkriven) je obojen belo.Sivi i crni cvorovi su ranije otkrivenii granica medju njima utvrdjuje se ponašanjem u algoritmu.

Page 7: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam (cont.)

Opis:

Ako su (u, v) ∈ E i ako je cvor u crn, cor v je ili siv ili crn, štoznaci da su svi susedni cvorovi crnog cvora vec otkriveni. Sivicvorovi za susede mogu imati i bele cvorove.

BFS algoritam pretraživanja konstruiše, takozvano, prvo poširini stablo inicijalizovano u izvornom cvoru s.

Page 8: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam (cont.)

Kako algoritam radi?

Kada otkrijemo beli cvor v u toku skeniranja liste susedstva vecotkrivenog cvora u, cvor v i grana (u, v) dodaju se u stablo.Kaemo da je u prethodnik, roditelj cvora v u stablu.

Cvor se otkriva samo jedan put, pa svaki cvor može imatinajviše jednog roditelja. Veze sa prethodnikom i sledbenikm uprvom po širini stablu definisane su u odnosu na koren s: ako jecvor u na putu od s do cvora v, onda je u prethodnik od v i v jesledbenik od u.

BFS procedura podrazumeva da je ulazni graf G = (V, E)predstavljen listama susedstva.

Page 9: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam (cont.)

Ova procedura cuva nekoliko dodatnih informacija za svaki cvoru grafu.

Boja svakog cvora u smeštena je u promenljivoj u.color,prethodnik od u smešten je u promenljivoj u.π.

Ako u nema prethodnika (u = s ili u nije otkriven), onda jeu.π = NIL.

Distanca od izvora s do cvora u smešta se u promenljivu u.d.

Algoritam koristi FIFO kju Q da bi olakšao upravljanje sivimcvorovima.

Page 10: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam (cont.)

Page 11: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam (cont.)

Rezultat pretraživanja BFS algoritma može da zavisi odredosledakojim se posecuju susedi datog cvora, pa stablomožeda varira, ali distanca koja se algoritmom racuna ne.

Page 12: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Predstavljanje grafovaBFS algoritam

BFS algoritam (cont.)

Page 13: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

BFS-analiza

Napomena:

Pre nego što dokažemo razlicite osobine BFS pretraživanja,analiziracemo njegovo prolazno vreme na ulaznom grafuG = (V, E).

Posle inicijalizacije svaki je cvor smešten u kju najviše jednom.

Operacije ENQUEUE i DEQUEUE uzimaju O(1) vremena, pa jekompletno vreme posveceno kju operacijama O(V).

Obzirom da selistasusedstva svakog cvora skenira samo kadase cvor ukloni iz kjua, svaka se lista susedstva skenira najvišejednom. Suma dužina svih listi je O(E), odakle je jasno da jeprolazno vreme BFS algoritma O(V+E).

Page 14: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi

Definicija:

Definisacemo distancu najkraceg puta δ(s, v) izmedju cvorova si v kao minimalni broj grana na proizvoljnom putu iz s u v.

Ako put iz s u v ne postoji stavicemo δ(s, v) = ∞.

Put dužine δ(s, v) iz s u v je najkraci put.

Pokazacemo da distanca koju racuna BFS jeste upravodistanca najkraceg puta.

Lema 1:Neka je G = (V, E) usmeren ili neusmeren graf i s ∈ V proizvol-jan cvor. Tada za granu (u, v) ∈ E važi δ(s, v) 6 δ(s, u) + 1.

Page 15: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

Dokaz: Ako je cvor u dostižan iz s, dostižan je i iz v. U ovomslucaju najkraci put iz s u v ne može biti duži od najkraceg putaiz s u u plus grana (u, v), pa u ovom slucaju nejednakost važi.Ako u nije dostižan iz s onda je δ(s, u) = ∞ i, u ovom slucaju,nejednakost važi.

Napomena:

Cilj nam je da pokažemo da je v.d = δ(s, v), zaproizvoljan cvorv ∈ V ulaznog grafa G.

Page 16: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

Lema 2:Neka je G = (V, E) usmeren ili neusmeren graf i pretpostavimoda BFS prolazi kroz G od izvornog cvora s ∈ V. Tada, zasvaki cvor v ∈ V vrednost v.d koja se izracunava algoritmomogranicava odozgo δ(s, v), tj.v.d > δ(s, v).

Dokaz: Koristimo indukciju po broju ENQUEUEoperacija.Polazna induktivna pretpostavka je kada ses ukloni izkjua. U ovom slucaju je s.d = 0 = δ(s, s) i v.d = ∞ > δ(s, v),za svaki v ∈ V \ {s}.

Pretpostavimo daje posle vadjenja cvora u iz kjua u.d > δ(s, u).

Page 17: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

Da bi ucinili induktivni korak, uocimo beli cvor v, koji je otkrivenza vreme ispitianja cvora u. Prema induktivnoj pretpostavci jeu.d > δ(s, u) i v.d = v.u + 1 > δ(s, u) + 1 > δ(s, v).

Cvor v je umetnutu kju sada i nikad više, jer je samo sadaobojen u sivo. Zato se vrednost v.d više ne menja i induktivnapretpostavka je ocuvana.Lema 3:Pretpostavimo da za vreme izvršenja BFSa na grafu G = (V, E)kju Q sadrži cvorove 〈v1, v2, . . . vr〉, gde je v1 glava od Q, a vr

rep. Tada je

vr.d 6 v1.d + 1, vi.d 6 vi+1.d,

za i ∈ {1, 2, . . . r − 1}.

Page 18: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

Dokaz: Izvodimo indukcijom po broju kju operacija. Inicijalno,kada kju sadrži samo s lema sigurnovaži.

Moramo da pokažemo da lema važi posle ubacivanjai brisanjacvora iz kjua.Ako je glava v1 kjua uklonjena v2 postaje novaglava. Prema induktivnoj pretpostavci je v1.d 6 v2.d, a tadaimamo i vr.d 6 v1.d + 1 6 v2.d + 1, tako da lema važi i kadajev2 glava.

Ubacivanje cvora zahteva bliže ispitivanje koda. Kada ubacimocvor v u kju Q, on postaje vr+1. U to vreme vecsmo iz kjuaizbacili cvor u, cija je lista susedstva upravo pocela da seskenira.

Prema indukcijskoj pretpostavci, za novu glavu v1 je u.d 6 v1.d.

Page 19: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

Tako dobijamo

vr+1.d = v.d = u.d + 1 6 v1.d + 1.

Takodje važi vr.d 6 u.d + 1 = v.d = vr+1.d.

Posledica:Pretpostavimo da su za vreme izvršenja BFS algoritma na grafuG = (V, E) cvorovi vi i vj ubaceni u kju Q i da je vi ubaceno prevj. Tada je vi.d 6 vj.d, u vremenu kada je vj ubaceno.

Page 20: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

Teorema:Neka je G = (V, E) usmeren ili neusmeren graf i da se BFSizvršava od izvornog cvora s ∈ V. Tada BFS otkriva svaki cvor vdostižan iz s i odredjuje distancu v.d = δ(s, v). Štaviše, za svakicvor v 6= s dostižan iz s jedan od najkracih puteva jeste najkraciput iz s u v.π iza koga je grana (v.π, v).

Dokaz izvodimo kontrapozicijom. Pretpostavimo da postoji cvorcija distanca v.d u BFSu nije jednaka distanci najkraceg puta ineka je v prvi cvor za koji je v.d > δ(s, v). Znaci da v mora bitidostižan iz s, jer je, u protivnom, δ(s, v) = ∞ > v.d. Neka je uneposredni prethodnik od v.

Page 21: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

Tada je δ(s, v) = δ(s, u) + 1. Kako je δ(s, u) < δ(s, v) i kako jeu pronadjen pre v važi u.d = δ(s, u), pa je

v.d > δ(s, v) = δ(s, u) + 1 = u.d + 1.

U ovom slucaju i vremenu cvor v može 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, štoje takodje kontradikcija.

Ako je v siv, obojen je posle izbacivanja nekog cvora w koji jeuklonjen iz kjua pre u. Dakle,

v.d = w.d + 1 6 u.d + 1,

Page 22: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritamNajkra ci putevi

Najkraci putevi (cont.)

pa nas i ovaj slucaj dovodi do kontradikcije. Prema tome,v.d = δ(s, v).

Svi cvorovi dostižni iz s su otkriveni BFS algoritmom. Ako jev.π = 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).

Page 23: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

DFS algoritam-Pretraživanje grafa po dubini

Strategija DFS pretraživanja podrazumeva pretraživanje podubini grafa.

DfS pretraživanje otkriva grane koje izlaze iz cvora v, koji jenajskorije otkriven. Kada se sve grane iz v otkriju, koristimo"backtrack" za pretraživanje grana koje napuštaju cvor iz kogaje v otkriven. Ovaj proces se nastavlja sve dok ne otkrijemo svecorove dostižne iz izvornog cvora. Ako ima još neotkrivenihcvorova, jedan od njih se koristi kao izvorni cvor i ispitivanje seponavlja iz tog izvora. Postupaknastavljamo dok svi cvorovinisu otkriveni.

Page 24: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

Razlike u odnosu na BFS

U ovom pretraživanju može da se formira nekoliko stabalajer pretraživanje može da se vrši iz nekoliko izvora,

Prethodnik (praizvor) u ovom pretraživanju definiše sedrugacije:

Gπ = (V, Eπ), gde je Eπ = {(v.π, v) | v ∈ V, v.π 6= NIL},

Podgraf prethodnika u DFS obrazuje depth-first forest kojase sastoji od nekoliko depth-first stabala. Eπ skup grana tihstabala.

Page 25: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

DFS algoritam (cont.)

Kao i u BFS algoritmu, cvorovi se tokom pretraživanja boje,cime se identifikuje njihov status.

Inicijalno je svaki cvor beo, posivi kada se otkrije i pocrni kadaje završen (kada je lista susedstva kompletno ispitana).

Ova tehnika garantuje da se svaki cvor završava u tacnojednom depth-first stablu.

Pored formiranja depth-first šume, DFS takodje svakom cvorupridružuje dva vremenska koraka:

- Prvi, v.d koji snima kada je cvor v prvi put otkriven (obojensivo)

- Drugi, v.f koji pamti kada je lista susedstva za v završena(obojen crno)

Page 26: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

DFS algoritam (cont.)

Ovi vremenski koraci se koriste u mnogim graf algoritmima.

DFS beleži kada je cvor u otkriven u promenljivoj u.d i kada jecvor u završenu promenljivoj u.f.

Ovi vremenski koraci su celi brojevi izmedju 1 i 2|V|, jer postojijedan dogadjaj otkrivanja i jedan završavanja za svaki od |V|cvorova.

Za svaki cvor u je u.d < u.f i cvor je

beo - pre u.d;

siv - izmedju u.d i u.f;

crn - posle u.f.

Ulazni graf u DFS može biti usmeren ili neusmeren.

Page 27: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

DFS algoritam (cont.)

Page 28: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

DFS algoritam (cont.)

Page 29: BFS i DFS.pdf

OvervievBFS-analiza

DFS algoritam

DFS algoritam (cont.)

Pri inicijalizaciji u DFS algoritmu uvodi se globalni brojacvremena time. Zatim se proverava svaki cvor i kada je nadjenalgoritam prelazi na proceduru VISIT. Svaki put kada pozivamoovu proceduru u postaje koren novog stabla u DF šumi.Procedure u DFS uzimaju O(V) vremena.

Procedura VISIT poziva se tacno jednom za svaki cvor v ∈ V,jer se poziva samo za bele cvorove koji se odmah farbaju usivo. U toku izvršenja DFS-VISIT(v) petlja se izvršava |Adj[v]|puta. Kako je

v∈V

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

prolazno vreme procedure je O(E).

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