Professional Documents
Culture Documents
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:
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
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
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:
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
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).
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)