You are on page 1of 32

GRAFOVSKI ALGORITMI

OPTIMIZACIONI ALGORITMI
Optimizacioni problemi koriste teinske grafove.
Optimizacioni zadatak se svodi na zahtev da se od polaznog grafa doe do
razapinjueg stabla ija je teina najmanja.
U praksi ovakvih problema ima mnogo.
Postoje mnogi algoritmi za njihovo reavanje, kao to su naprimer:
1. Kruskalov,
2. Primov,
3. Dijkastrin i mnogi drugi.
PRIMOV ALGORITAM
Tokom svoje krijere u Bell Labs, Robert Prim je zjedno s kolegom
Dozefom Krusklom rzvio dv rzliit lgoritm (vidi pohlepni lgoritm)
z pronlenje minimlnog razapetog stbl u teinskom grfu,
To je bio glvni kmen spoticnj u dizjnu runrskih mre.
Primov lgoritm je prvobitno prono mtemtirBojteh Jrnik 1930.
godine
Nezvisno od njeg g je Prim otkrio 1957. godine.
Edsher Djkstr g je ponovo prono ksnije, 1959. godine.
Zbog tog se ponekd nziv DJP lgoritm ili Jrnikov lgoritm.
Primov algoritam je algoritam u teoriji grafova koja nalazi minimalno
razapinjue stablo za povezani teinski graf.
To znai da nalazi podskup grana koje formiraju stablo koje ukljuuje sve
vorove, takav da je ukupna teina stabla minimalna.
U poetku je stablo prazno pa ga poinjemo graditi definisanjem
proizvoljnog vrha koristei skup vorova poetnog grafa.
Postupak nastavljamo dodavanjem grana u stablo koji ima osobinu da
povezuje jedan vor koji se ve nalazi u stablu i jedan koji se se u njemu ne
nalazi, pazei pri tome da je teina te grane bude minimalna.
Na kraju definisani algoritam od dobijenog grafa daje traeno minimalno
razapinjajue stablo.
Algoritam postepeno poveava veliinu stabla poevi od jednog vora, dok
ne povee sve vorove.
Algoritam se moe prikazati sledeim opisom:

Izabere se proizvoljni vor iz G i stavi se u stablo T.


Izabere se grana najmanje teine iz skupa grana koje sadre predhodni
vor i obrazuje se stablo.
Dok je broj vorova stabla < broja vorova grafa, ponavljati postupak.
Izaberi vor koji ne pripada stablu, a susedan je nekom voru iz stabla, a pri
tome je teina ivice koja ih spaja minimalna.
Stavi taj vor zajedno s njemu pripadajuim granom u stablo.
Postupak ponavljati sve dok svaki vor grafa G ne bude u stablu.
ALGORIRAM:

Ulaz: Povezan teinski graf G(V, E)


Inicijalizacija: V' = {x}, gde je x proizvoljan vor iz V, E'= {}
ponavljanje dok ne postane V'=V:
Izaberi granu (u, v) iz E sa minimalnom teinom, takvu da je u iz V' a v
nije iz V' (ako ima vie grana iste teine, izabrati proizvoljnu)
Dodaj v u V', i (u, v) u E'
Izlaz: G(V', E') je minimalno razapinjue stablo
Primer:
Od datog teinskog grafa sa slike, formirati minimalno razapinjue stablo
koristei Primov algoritam.
a 2 b
3 4
1 2
c
4
2
e 3 d
Biramo jedan vor proizvoljno za poetnu taku, odnosno koren stabla.
Neka je to vor a.
Iz vora a moemo da stignemo u vor b sa udaljeniu 2, zatim u vor d sa
udaljenou 3 i u vor e sa udaljenou 1. Kako je vor e na najmanjoj
udaljenosti od a, pridodaemo ga stablu kao i njegovu granu (a,e).
a 2 b
3 4
1 2
c
4
2
e 3 d
Sada posmatramo oba vora novog stabla a i e. Njihove udaljenosti do
vorova grafa su: iz a do b duina 2, iz a u d duina 3, iz vora e u b
duina 4, iz e u duina 3. Najmanja duina je 2 iz a u b, tako da vor b i
granu (a,b) pridodajemo stablu.

a 2 b
3 4
1 2
c
4
2
e 3 d
a 2 b
3 4
1 2
c
4
2
e 3 d

Proces se nastavlja. Sada posmatramo vorove b i e. Najmanja udaljenost


je iz b u d duine 2, tako da stablu pridodajemo vor d i granu (bd).

a 2 b
3 4
1 2
c
4
2
e 3 d
a 2 b
3 4
1 2
c
4
2
e 3 d

I konano, iz b u c moemo granom duine 4, a iz d u c granom duine 2,


pa dodajemo vor c i krau granu (d,c).

a 2 b
3 4
1 2
c
4
2
e 3 d
Zraeno minimalno razapeto stablo bi izgledalo :

e
b

c
Primer
Primovog
algoritma
KRUSKALOV ALGORITAM
Kruskalov algoritam je jo jedan od algoritama koji odreuju stablo
minimalne duine.

Algoritam:

1. Poeti sa grafom koga sainjavaju samo vorovi grafa G, tj. iz originalnog


grafa ukloniti sve grane.
2. Sortirati sve grane L grafa G u neopadajui niz prema njihovim duinama.
3. Dodavati grane inicijalnom grafu po sortiranom redosledu vodei rauna o
tome da se ne formira kontura.
4. Ponavljati korak 3 sve dok broj dodatih grana ne bude n - 1.
Primer:: Od datog teinskog grafa sa slike, formirati minimalno razapinjue
b 3 d stablo
8 5
a 4 g
3
11 e 7 Popisaemo sve grane grafa i njihove duine i
2 1 sortirati ih u neopadajui niz:
c 6

6 3 i
2 h
f
grane duina sortirana grane duina
(a,b) 8 (e,h) 1
(a,c) 11 (c,e) 2
(b,c) 3 (f,h) 2
(b,d) 3 (b,c) 3
(c,e) 2 (b,d) 3
(c,f) 6 (h,i) 3
(d,g) 5 (d,e) 4
(e,h) 1 (d,g) 5
(f,h) 2 (g,h) 6
(h,i) 3 (c,f) 6
(g,i) 7 (g,i) 7
(g,h) 6 (a,b) 8
(d,e) 4 (a,c) 11
Ne koristiti grane koje bi stvorile konture. To su grane (a,c), (d,e), (g,h), (g,i) i (c,f).

b 3 d
8 5
a g
3
e
2 1
c
3 i
2 h
f
Drugi nain
1. Uoiti bilo koju konturu grafa.
2. Iz uoene konture iskljuiti granu sa najveom duinom.
Ponavljati korake 1 i 2 sve dok ne ostane n - 1 grana, tj. dok ne bude
vie kontura.
b 3 d
8 5
a 4 g
3
11 e 7
2 1
c 6

6 3 i
2 h
f

Poeemo od zadatog grafa i uoiti npr. konturu (a, b, c, a). Od grana koje
sainjavaju ovu konturu biramo onu sa najveom duinom i briemo je. To je grana
(a, c). Sve uoene konture i izbrisane grane su date u sledeoj tabeli:
Kontura Grana koja se brie
(a, b, c, a) (a, c)
(b, c, e, d, b) (d, e)
(b, c, e, h, g, d, b) (g, h)
(b, c, e, h, i, g, d, b) (i, g)
(c, e, h, f, c) (c, f)
Nakon ovog postupka dobili smo graf
b 3 d
8 5
a g
3
11 e
2 1
c
6 3 i
2 h
f
DIJKASTRIN ALGORITAM

Dijkstrin algoritam, koji je dobio ime po holandskom informatiaru Edsheru


Dejkstri (1930-2002), i slui za nalaenje najkraeg puta u grafu.
Koristi se i za orijentisane i neorijentisane grafove sa nenegativnim
teinama.
Na primer, ako vorove predstavimo kao gradove, a vrednosti grana kao
rastojanja izmeu onih gradova koji su direktno povezani, Dijkstrin algoritam
nalazi najkrai put izmeu dva grada, ili najbri put, ili najjeftiniji put.
Spada u takozvane pohlepne algoritme , kod kojih se pamti trenutna
vrednost puta d kao najkraeg puta, od polaznog vora do nekod drugog na
putu.
1.
U startu svi vorovi imaju koordinate , 0
Prva koordinata predstavlja duinu puta, a druga predhodni vor.

2.
Poeti od v1 ,0 i promeniti ga u v1 0,0 i ovaj vor uiniti stalnim.
Svi ostali vorovi u ovom trenutku su privremeni.
vj vj vk vj
vk vk
3. Kada vor postane stalan, za svaki vor r
vk m, vsusedan sa ,
dodati razdaljinu m izmeu i . Ako je ova vrednost manja od tekue
razdaljine dodeljene voru , zameniti tu razdaljinu ovim zbirom i drugu
koordinatu iz ureenog para zameniti sa vorom
3.Odrediti minimalnu razdaljinu dodeljenu privremenim
vorovima. Odgovarajui vor zameniti stalnim.
4. Ako nije stalan vor vratiti se na korak 2.
vn
5. Ako jeste stalan vor razdaljina dodeljena
v
je najkraenrastojanje od iv n
vn
v1 vn
6 Obrnutim obilaskom odvih vorova dobija se najkrai
put.
Primer:
Dat je teinski graf na slici. Nai najkrai put od A do F.

D
7
B 2
10
5 2 F
3
4
A
6 7 E
C
Krenuemo od A ka ostalim vorovima.
Svaki vor ima dve koordinate, prva oznaava duinu najkraeg puta do tog
vora u tom trenutku, a druga oznaava predhodni vor na najkraem putu.
Dok se put ne pronae prva komponenta je , a druga je 0.

D , 0
7
B , 0 10
2

5 2 F , 0
3
4
A , 0 6 7 E , 0
C , 0
Ako je A prvi vor na putu, on postaje stalni vor sa koordinatama (0,0).

Poto su vorovi B i C susedni sa A, vrednost ( 5,A ) dodelimo ureenom


paru vora B,
vrednost ( 6,A ) dodelimo ureenom paru vora C.
Uzimamo manju od dodeljnih vrednosti, a to je 5 i B( 5,A ) postaje stalan
vor.

D , 0
7
B(5,A) 2
10
5 2 F , 0
3
4
A(0,0) 6
C(6,A)
7 E , 0
Vraajui se na predhodni korak, razmatramo privremene vorove C, D, E,
F susedne sa B.
U svakom sluaju dodajmo razdaljinu AB razdaljini do posmatranih
vorova.
Za C imamo 5+3=8, za D imamo 5+7=12, za E imamo 5+2=7 i za F imamo
5+10=15. Poto nova razdaljina ka C nije manja od one koja je ve
dodeljena ovom voru, ne menjamo vrednost C( 6,A ). Nove vrednosti za
vorove D,E,F su manje i one se dobijaju prolaskom kroz B i postaju nove
D( 12,B ), E( 7,B ),F( 15,B )
D(12,B)
D , 0 B(5,A)
7
2
7 10
B(5,A) 2
10 5 2
F , 0 3 F(15,B)
5 2
3 4
4 A(0,0) 6 7 E(7,B)
A(0,0) 6
C(6,A)
7 E , 0 C(6,A)
C(8,B)
Uzimamo najmanju od razdaljina dodeljenih privremenim vorovima, a to je
6 i C( 6,A ) postaje stalan vor.

D(12,B)
7
B(5,A) 2
10
5 2
3 F(15,B)
4
A(0,0) 6 7 E(7,B)
C(6,A)
Sada koristimo novi stalni vor C. Korak 2 ne daje nove promene, a
korakom 3 vor E ( 7,B ) postaje novi stalni vor.

D(12,B) D(12,B)
7 7
B(5,A) 2 B(5,A) 2
10 10
5 2 5
3 F(15,B) 2 F(15,B)
3
4 4
A(0,0) 6 7 E(7,B) A(0,0) 6 7 E(7,B)
C(6,A)
C(6,A) E(13,C)
Nastavljajui imamo od F( 15,B ) do F( 11,E ) i F postaje stalan vor.

D(12,B)
7
B(5,A) 2
10
5 2
3 F(11,E)
4
A(0,0) 6 7 E(7,B)
C(6,A)

Kada smo stigli do vora F zavrili smo algoritam i


dobijamo da je najkrae rastojanje od A do F 11.
Najkrai put je dakle put ABEF.
Korakom 2 dobijamo promenu od F( 15,B ) do F( 11,E ) i
F postaje stalan vor.
D(12,B)
7
B(5,A) 2
10
5 2
3 F(11,E)
4
A(0,0) 6 7 E(7,B)
C(6,A)

Kada smo stigli do vora F zavrili smo algoritam i


dobijamo da je najkrae rastojanje od A do F 11.
Najkrai put je dakle put ABEF.

You might also like