Algoritmi I Strukture Podataka-Grafovi

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

Visoka poslovna škola strukovnih studija

Blace

Seminarski rad iz predmeta


Algoritmi i strukure podataka

Grafovi

Profesor Student
dr Branislav Jevtović Igor Stoiljković

2009.
Sadržaj:

Uvod............................................3
Istorijski pregled...........................4
Šta je graf?...................................5
Predstavljanje grafova u memoriji
računara.......................................8
Predstavljanje grafova uz pomoć
povezanih listi ..............................9
Obilazak garafa u širinu (BFS)........9
Obilazak grafa u dubinu (DFS)......12
Literatura....................................13

2
Uvod

Teorija grafova je oblast matematike, veoma zastupljena i u


informatici, čija je oblast istraživanje osobina grafova. Neformalno
govoreći, grafovi su sastavljeni od tačaka, odnosno čvorova
(vrhova), i linija među njima, odnosno grana.

Veoma je česta upotreba grafova za opis modela ili struktura


podataka. Struktura jedne veb prezentacije se može predstaviti
slikovito upotrebom grafa. Čvorovi tog grafa su pojedine stranice a
grane grafa su veze kojima se može sa jedne stranice prelaziti na
drugu.

Proučavanje algoritama koji rešavaju probleme upotrebom


grafova predstavlja veoma značajan deo informatičke nauke. Mreže
imaju mnogo primena u proučavanju praktičnih aspekata teorije
grafova i to se zove analiza mreža. Analiza mreža je posebno
značajna za probleme modeliranja i analiziranje mrežnog
saobraćaja, recimo interneta.

3
Istorijski pregled
Temelje teoriji grafova postavio je dobro poznati švajcarski
matematičar Leonhard Euler (Leonard Ojler) (1707.–1783) koji je
1736. godine rešio problem konigsberških mostova. Naime, stari
pruski grad Konigsberg, današnji Kalinjingrad u Rusiji, smešten je na
obalama reke Pregel. Deo grada nalazi se na dve ade (rečna ostrva),
koje su povezane s kopnom i međusobno sa sedam mostova (vidi
sliku ispod).

Građani Konigsberga voleli su šetati po mostovima, ali


nerviralo ih je to što niko nije mogao pronaći način da prošeta
gradom tako da svih sedam mostova pređe samo jednom i zatim se
vrati kući. Za pomoć su se obratili Ojleru koji je u to vreme radio u
Petrogradu. Ojler je vrlo brzo pokazao da je takva šetnja nemoguća.

Pretpostavimo da je takva šetnja moguća. Tada se ona


završava u komponentama kopna A, B, C ili D, eventualno tamo gde
je započela. Primetimo da svaka komponenta kopna u kojoj šetnja
nije započela i nije se završila mora biti spojena sa parnim brojem
mostova, jer za svaki most preko kojeg se dolazi na tu komponentu
mora postojati i most preko kojeg se odlazi sa te komponente. Zato
svaka komponenta koja je spojena s neparnim brojem mostova
mora biti ili početak ili kraj šetnje. Ali u slučaju Konigsberga svaka
komponenta A, B, C i D ima neparan broj mostova s kojima je
povezana, a kako najviše dve komponente mogu biti početak,
odnosno kraj šetnje, zaključujemo da takva šetnja nije moguća.

Ako komponente A, B, C i D prikažemo kao tačke ili vrhove, a


mostove koji ih spajaju kao grane, dobijamo pojednostavljenu šemu
vrhova i njihovih grana, tj. graf.

4
Problem šetanja po konigsberškim mostovima ekvivalentan je
problemu obilaska ovog grafa tako da krenemo iz jednog vrha i sve
grane pređemo tačno jedanput.

Šta je graf?
Definicija 1. Graf G je uređeni par G = (V,E), gde je V
neprazan skup čvorova, a E je skup grana. Svaka grana e ∈ E spaja
dva čvora
u, v ∈ V koji se zovu krajevi grane e. Grana čiji se krajevi
podudaraju zove se petlja, a ako dve ili više grana povezuju isti par
čvorova, zovu se višestruke grane. Ako graf sadrži višestruke grane,
zove se multigraf, a ako nema ni petlje ni višestruke grane, zove se
jednostavan graf. Broj čvorova u grafu označavamo sa V(G), a broj
grana sa E(G).

Primer 1. Graf sa slike pored definiše se na sledeći način:

G = (V,E)
V = {a, b, c, d, e, f}
E = {e1, e2, e3, e4, e5}
e1 = {a, b}
e2 = {b, c}
e3 = {d, e}
e4 = {b, f}
e5 = {f, a}

5
U prikazanom grafu grane su neusmerene, tj. po svakoj grani
se može “ići u oba smera”. Drugim rečima, u primeru 1 se iz vrha a
moglo doći u vrh b isto kao i iz vrha b u vrh a. Ali ponekad su grafovi
usmereni pa grane imaju svoj smer. Na slikama se smer označava
strelicama.

Primer 2. (Slika pored) Kod


zapisivanja koji su čvorovi pridruženi
kojoj grani više ne koristimo
vitičaste, nego okrugle zagrade jer
kod usmerenih grafova postaje bitno
koji čvor je prvi naveden.

e1 = (a, b)
e2 = (b, c)
e3 = (d, e)
e4 = (b, f)
e5 = (f, a)

Definicija 2. Stepen dG(u) čvora u je broj grana s kojima je


čvor spojen, tj. koji su incidentni datom čvoru. Čvor stepena 1 se
naziva list (izolovan čvor). Najmanji i najveći stepen čvora imaju
posebne oznake

 (G)=min dG(u) i ∆(G)=max dG(u).


uєV uєV

Graf G je regularan ako svi čvorovi imaju isti stepen tj. ako je
(G) = ∆(G). Kod usmerenih grafova izlazni stepen je broj grana koje
“izlaze” iz čvora, a ulazni stepen je broj grana koje “ulaze” u čvor.

Definicija 3. Pod okolinom NG(u) čvora u grafa G = (V,E)


podrazumevamo skup svih suseda čvora u:

NG(u)={v є V : {u, v} є E}.

Okolina NG(U) skupa čvorova U c V je skup čvorova iz V koji su


susedi sa bar jednim čvorom iz U.

6
Stepen čvora a je 3, izlazni stepen
Stepen čvora b je je 2,
3. a ulazni stepen je 1.

Vrlo često se javlja potreba da svakoj grani e grafa G


pridružimo realan broj w(e) koji zovemo težina grane e. Takav graf
zovemo težinski graf. Na primer, ako čvorovi grafa predstavljaju
gradove neke države, a grane putevi koje ih povezuju, težina grane
može predstavljati dužinu puta, ili putarinu koju vozač mora da plati
da se vozi tim putem.

Put u grafu je sekvenca čvorova i grana koja počinje čvorom i


završava se čvorom, a za svaku granu su poznati završni čvorovi.
Put dužine n od čvora u do čvora v se definiše kao sekvenca od n+1
čvorova (v0, v1, ... vn) tako da je v0 = u , vn = v. I za svaki čvor "i"
između 1 i k važi da su čvorovi vi i vi+1 susedni (dužina puta jednaka
je broju grana na putu). Prost put je put kod koga su svi čvorovi i
grane različiti.

Ako postoji put nenulte dužine između čvorova vi i vj kaže se


da je čvor vj dostižan iz čvora vi.

Definicija 4. Povezani graf je ako i samo ako postoji prost


put između bilo koja dva njegova čvora. Strogo povezani graf je ako
i samo ako postoji samo po jedan put iz svakog čvora do svih ostalih
čvorova. Graf je kompletan ako je svaki čvor u susedan sa svakim
čvorom v iz grafa. Kompletan graf sa n čvorova imaće n*(n-1)/2
grana.

7
Predstavljanje grafova u
memoriji računara
Jedan način predstavljanja grafa sa n čvorova je uz pomoć
matrice susedstva dimenzija n x n (svaka vrsta i kolona odgovaraju
po jednom čvoru grafa). Ukoliko postoji veza između čvorova vi i vj
tada se u vrsti koja odgovara čvoru vi i koloni koja odgovara
čvoru vj je 1 . (adj[vi, vj] = 1, ako (vi, vj) ivica u G).

Ukoliko je e ukupan broj ivica grafa, tada će u matrici postojati


2e elemenata matrice koji su jednaki 1, ako je G neorijentisan
graf. Ako je G usmeren graf, samo e elemenata matrice će
biti 1.

Primeri predstavljanja grafova uz pomoć matrice susedstva su


dati na sledećim slikama:

8
Predstavljanje grafova uz
pomoć povezanih listi
Za razliku od matrice susedstva koja čuva informaciju o svakoj
mogućoj grani, reprezentacija zasnovana na listama susednosti čuva
informacije samo o postojećim granama. Za svaki čvor
konsturišemo povezanu listu koja sadrži sve čvorove susedne datom
čvoru.

Ulančana reprezentacija grafa ima formu niza od n ulančanih


listi, gde je po jedna ista predviđena za svaki čvor grafa. Svaki
element liste odgovara jednoj grani. Ukoliko je graf težinski, element
liste sadrži i dodatno polje u kojem se smešta težina odgovarajuće
grane w(u, v).

Obilazak garafa u širinu (BFS)


BREADTH-FIRST SEARCH koristi sistemsko pretraživanje koje
traži sve čvorove datog grafa počev od datog (izvornog) čvora koji
se nalazi u nultom nivou. Pored otkrivanja svakog čvora koji je
dostižan iz izvornog čvora, BFS algoritam može računati i rastojanje

9
izvornog čvora do svakog čvora do kojeg postoji put iz izvornog
čvora. Prilikom izvršavanja

10
ovog algoritma u prvom koraku otkrivamo čvorove grafa iz prvog
nivoa, zatim u narednom čvorove grafa iz drugog nivoa, i tako
redom, sve dok ne otkrijemo sve čvorove datog grafa. Izvršenjem
algoritma možemo konstruisati tako zvano BFS stablo koje će
sadržati sve čvorove datog grafa koji su dostižni iz izvornog čvora.
Algoritam se može primeniti na orijentisane i na neorijentisane
grafove.

BFS algoritam boji čvorove grafa u belo, sivo ili crno. (Beli su
svi čvorovi grafa pre početka izvršenja algoritma, sivi su čvorovi
koje obilazimo, a crni su čvorovi čiji su svi susedni čvorovi obiđeni.)

BFS možemo iskoristi za rešavanje sledećih problema:


Testiranje da li je graf povezan, izračunavanje povezane sume za
graf, izračunavanje za svaki čvor u grafu put sa minimalnim brojem
grana od izvornog čvora do tog čvora, ili obaveštenje ukoliko taj put
ne postoji, izračunavanje ciklusa u grafu ili obaveštenje da ciklus
nepostoji.

11
Obilazak grafa u dubinu (DFS)
DFS algoritam, pretražuje graf i otkriva njegoe čvorove sve
"dublje". Kod DFS algoritma pretražujemo granu koja napušta čvor v
i a zatim i sve garedne grane. Kada završimo sa pretragom svih
grana koje napuštaju čvor v vraćamo se unazad da bi smo nastavili
sa pretragom grana koje napuštaju čvor iz kojeg smo stigli u čvor v.
Postupak nastavljamo dok ne otkrijemo sve čvorove koji su dostižni
iz izvornog čvora. Ako su ostali neki neotkriveni čvorovi, jedan od
njih proglašavamo za izvorni čvor i pretražujemo dostižna stabla na
isti način. Postupak se završava kada otkrijemo i poslednji čvor.

Razlika između BFS-a i ovog pretraživanja je u tome što


prilikom DFS-a možemo dobiti više stabla, jer pretraga se može
ponoviti iz više različitih izvora. Opet je inicijalno svaki čvor j ebeo,
siv je kada ga otkrijemo, a crn je kada su svi njegovi susedi
otkriveni.

Upotreba DFS-a: ako predstavimo otkrivanje čvora U sa levom


zagradom "(U" i predstavimo završetak otkrivanja sa desnom
zagradom "U)", onda istoriju otkrivanja čvorova predstavlja dobro
napisan izraz sa dobro postavljenim zagradama.

12
Literatura
"Introduction To Algorithms" (2nd Edition), McGraw Hill

"Introduction to Algorithms(Instructor's Manual)" , Thomas H.


Cormen

"Algorithms", Robert Sedgewick

"Algoritmi i Strukture Podataka 2008_09" , dr Branislav Jevtović

www.wikipedia.com

13

You might also like