You are on page 1of 71

1.5.

Algoritam za konstrukciju
razapinjućeg drveta
1 2

4 5
Slika 1.24. Pet gradova izmedju kojih je moguće
putovati bez presedanja

www.vtsurosevac.com 1
1.5. Algoritam za konstrukciju
razapinjućeg drveta

• Pod razapinjućim drvetom mreže


G = (N,A) podrazumeva se drvo koje
sadrži sve čvorove početne mreže.

www.vtsurosevac.com 2
Pretpostavimo da želimo da smanjimo
broj parova gradova međusobno
povezanih direktnim saobraćajem.

Kako da reorganizujemo mrežu linija


železničkog saobraćaja? Dva moguća
rešenja proizvoljno odabrana iz skupa
mogućih rešenja prikazana su na
slikama 1.25 (a) i 1.25 (b).

www.vtsurosevac.com 3
1.5. Algoritam za konstrukciju
razapinjućeg drveta
1 2 1 2

3 3

4 5 4 5
(a) (b)

Slika 1.25. Dva prizvoljno odabrana rešenja


rekonstrukcije mreže linija železničkog saobraćaja
www.vtsurosevac.com 4
1.5. Algoritam za konstrukciju
razapinjućeg drveta
• Kako smo dobili ova rešenja? Da li ima i
nekih drugih mogućih rešenja?

• Algoritam za konstrukciju razapinjućeg drveta


ispituje za svaku granu originalne mreže da li
treba da bude uključena u razapinjuće drvo ili
ne.
• Napomenimo da je redosled kojim se ispituju
pojedine grane potpuno proizvoljan.
Ispitivanje grane se često naziva i bojenjem
grane. www.vtsurosevac.com 5
1.5. Algoritam za konstrukciju
razapinjućeg drveta
Granu koju treba uključiti u razapinjuće
drvo treba obojiti zelenom bojom.
Crvenom bojom se boje grane koje se ne
uključuju u razapinjuće drvo. Prilikom
ispitivanja određene grane proverava se
da li bi uključenje te grane u drvo dovelo
do stvaranja ciklusa. Grana se uključuje u
drvo ukoliko njeno uključenje u drvo ne
stvara ciklus.

www.vtsurosevac.com 6
1.5. Algoritam za konstrukciju
razapinjućeg drveta
Prilikom konstruisanja drveta grane već
uključene u drvo čine jednu ili više
povezanih komponenti.

Grana koja se ispituje stvoriće cikluse u


drvetu ukoliko oba njena čvora
pripadaju istoj komponenti.

www.vtsurosevac.com 7
1.5. Algoritam za konstrukciju
razapinjućeg drveta
KORAK 1:

Proizvoljno izabrati granu koja nije


“petlja” (koja sama po sebi nije ciklus).
Obojiti ovu granu u zeleno i oba njena
čvora smestiti u komponentu.

www.vtsurosevac.com 8
1.5. Algoritam za konstrukciju
razapinjućeg drveta
KORAK 2:
Izabrati bilo koju neobojenu granu
koja nije “petlja” (ukoliko takva grana
ne postoji završiti sa algoritmom, što
znači da odgovarajuće pripadajuće
drvo ne postoji). Po izvršenom izboru
neobojene grane moguće su sledeće
4 situacije:

www.vtsurosevac.com 9
1.5. Algoritam za konstrukciju
razapinjućeg drveta
(I) Oba čvora ove grane pripadaju istoj
komponenti.
(II) Jedan čvor grane pripada
komponenti, a drugi čvor grane ne
pripada nijednoj komponenti.
(III) Ni jedan ni drugi čvor ne pripadaju
nijednoj komponenti.
(IV) Čvorovi pripadaju različitim
komponentama.
www.vtsurosevac.com 10
1.5. Algoritam za konstrukciju
razapinjućeg drveta
U slučaju (I) granu treba obojiti u
crveno (ne treba je uključiti u drvo) i
vratiti se na početak koraka 2.

U slučaju (II) granu treba obojiti u


zeleno (uključiti je u drvo). Čvor koji nije
pripadao ni jednoj komponenti treba
uključiti u komponentu kome pripada
čvor na drugom kraju grane.
www.vtsurosevac.com 11
1.5. Algoritam za konstrukciju
razapinjućeg drveta
Kada se desi slučaj (III) granu treba
obojiti u zeleno (uključiti je u drvo), a
oba njena čvora treba dodeliti praznoj
komponenti.
U slučaju (IV) obojiti granu u zeleno
(uključiti je u drvo), a čvorove iz obe
komponente dodeliti jednoj komponenti.
Druga komponenta ostaje prazna.
www.vtsurosevac.com 12
1.5. Algoritam za konstrukciju
razapinjućeg drveta
KORAK 3:
Ukoliko svi čvorovi pripadaju jednoj
komponenti završiti sa algoritmom.
(Zelene grane u ovom slučaju
sačinjavaju pripadajuće drvo). U
suprotnom slučaju (kada svi čvorovi ne
pripadaju jednoj komponenti) vratiti se
na korak 2.

www.vtsurosevac.com 13
1.5. Algoritam za konstrukciju
razapinjućeg drveta
• Primenimo algoritam za konstrukciju razapinjućeg
drveta na problem rekonstrukcije mreže linija
železničkog saobraćaja (slika 1.24.)
• Neka je redosled kojim ćemo ispitivati grane sledeći:
– (1, 2), (4, 5), (1, 4), (2, 5), (1, 3), (2, 3), (3, 4),
(3, 5).

1 2

zelena boja
crvena boja

Slika 1.26. Uključenje grane (1, 2) u razapinjuće


drvo (komponenta 1)
www.vtsurosevac.com 14
1.5. Algoritam za konstrukciju
razapinjućeg drveta
komponenta 1
Komponenta 1
1 2

komponenta 2
Komponenta 2
4 5

zelena boja
crvena boja

Slika 1.27. Komponente 1 i 2 po izvršenom


ispitivanju grana (1, 2) i (4, 5)
www.vtsurosevac.com 15
1.5. Algoritam za konstrukciju
razapinjućeg drveta
Komponenta 1
komponenta 1

1 2

4 5 zelena boja
crvena boja

Slika 1.28. Komponenta 1


po izvršenom ispitivanju grana (1, 2), (4, 5), (1, 4)
www.vtsurosevac.com 16
1.5. Algoritam za konstrukciju
razapinjućeg drveta
1 2

4 5
zelena boja
crvena boja

Slika 1.29. Komponenta 1 po izvršenom ispitivanju grana


(1, 2), (4, 5), (1, 4), i (2, 5)
www.vtsurosevac.com 17
1.5. Algoritam za konstrukciju
razapinjućeg drveta
1 2

4 5

Slika 1.30. Razapinjuće drvo u slučaju kada su


grane ispitivane sledećim redosledom: (1, 2), (4, 5),
(1, 4), (2, 5), (1, 3), (2, 3), (3, 4), (3, 5)
www.vtsurosevac.com 18
1.5. Algoritam za konstrukciju
razapinjućeg drveta
Pretpostavimo da grane ispitujemo
sledećim redosledom: (1, 2), (2, 3), (1, 3),
(3, 4), (4, 5), (3, 5), (2, 5), (1, 4).

Primenom algoritma za konstrukciju


razapinjućeg drveta dobija se pripadajuće
drvo prikazano na slici 1.27.

www.vtsurosevac.com 19
1.5. Algoritam za konstrukciju
razapinjućeg drveta
1 2

4 5

Slika 1.31. Razapinjuće drvo u slučaju kada su


grane ispitivane sledećim redosledom: (1, 2), (2, 3),
(1, 3), (3, 4), (4, 5), (3, 5), (2, 5), (1, 4)
www.vtsurosevac.com 20
1.5. Algoritam za konstrukciju
razapinjućeg drveta
• Redosled kojim se vrši ispitivanje
grana utiče na oblik razapinjućeg
drveta.
• Pridružimo svakoj grani originalne
mreže određeni broj koji predstavlja
dužinu grane.

www.vtsurosevac.com 21
1.5. Algoritam za konstrukciju
razapinjućeg drveta
U odredjenim slučajevima
zainteresovani smo za pronalaženje
takvog razapinjućeg drveta koje ima
najmanju dužinu svih grana.

Ovaj problem se rešava primenom


algoritma za iznalaženje
razapinjujućeg drveta najmanje
dužine.
www.vtsurosevac.com 22
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje
dužine
• Neka je dato n gradova koje treba
povezati saobraćajnicama.
• Najkraće pripadajuće drvo možemo
interpretirati kao minimalno potrebnu
dužinu puteva kojima ćemo direktno ili
indirektno povezati svih n gradova,
pretpostavljajući pri tome da svi putevi
počinju, odnosno završavaju se u
nekom paru gradova.
www.vtsurosevac.com 23
Prim-ov algoritam (1957) za
iznalaženje najkraćeg razapinjućeg
drveta

KORAK 1: Sa konstrukcijom najkraćeg


razapinjućeg drveta počinje se u nekom
proizvoljnom čvoru i. Zatim se pronađe
čvor najbliži čvoru i. Neka je to neki čvor j.
Čvor j i veza (i, j) se uključuju u najkraće
pripadajuće drvo. Zatim se kidaju (ukoliko
postoje) grane koje bi onemogućile
stvaranje drveta.

www.vtsurosevac.com 24
KORAK 2: Ukoliko su svi čvorovi
povezani, najkraće razapinjuće drvo je
pronađeno. Ukoliko postoje još uvek
neki izolovani čvorovi prelazimo na
korak 3.

KORAK 3: Izolovani čvor koji je


najbliži do sada formiranom najkraćem
‚razapinjućem drvetu uključuje se
zajedno sa odgovarajućom granom u
sastav najkraćeg razapinjućeg drveta.
Ukoliko postoje grane koje
onemogućavaju stvaranje drveta treba
ih prekinuti. Po završetku ovog koraka
vraćamo se ponovo na korak 2.
www.vtsurosevac.com 25
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje
dužine
Primer: Odrediti najkraće razapinjuće drvo
transportne mreže prikazane na slici 1.32.
(dužine pojedinih grana naznačene su na
slici 1.32.) primenom Prim-ovog algoritma.

www.vtsurosevac.com 26
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
a
9
8 6 b
7 4
d e c
6
12 6 11 5
10
h 7 f
14 8
g
4 9
5 12
15
i j

Slika 1.32. Mreža G za koju treba odrediti razapinjuće


drvo najmanje dužine primenom Prim-ovog algoritma
www.vtsurosevac.com 27
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje
dužine
Započnimo sa konstrukcijom najkraćeg
razapinjućeg drveta od čvora a.
a

Slika 1.33. Grana (a, e)

www.vtsurosevac.com 28
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje
dužine
a

e
6

h
Slika 1.34. Grane (a, e) i (e, h)

www.vtsurosevac.com 29
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
a

e
6

Slika 1.35. Grane (a, e), (e, h) i (h, j)

www.vtsurosevac.com 30
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje
dužine
a

6 b
7
e
6

Slika 1.36. Grane (a, e), (e, h), (h, j) i (e, b)


www.vtsurosevac.com 31
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
a

6 b
7 4
e c

6
h

Slika 1.37. Grane (a, e), (e, h), (h, j), (e, b) i (b, c)
www.vtsurosevac.com 32
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje
dužine
a

6 b
7 4
e c

6 5

h f

Slika 1.38. Grane (a, e), (e, h), (h, j), (e, b), (b, c) i (c, f)
www.vtsurosevac.com 33
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
a
8 6 b
7 4
d e c

6 5

h f

Slika 1.39. Grane (a, e), (e, h), (h, j), (e, b), (b, c), (c, f) i (a, d)
www.vtsurosevac.com 34
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
a
8 6 b
7 4
d e c

6 5

h f
8
g
4

Slika 1.40. Grane (a, e), (e, h), (h, j), (e, b), (b, c), (c, f) ,
(a, d) i (g, h)
www.vtsurosevac.com 35
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
a
8 6 b
7 4
d e c

6 5

h f
8
g
4
5

i j

Slika 1.41. Razapinjuće drvo najmanje dužine


dobijeno primenom Prim-ovog algoritma
www.vtsurosevac.com 36
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
• Kruskal-ov algoritam

• Kruskal-ov algoritam (1956) za iznalaženje


razapinjućeg drveta najmanje dužine
zasnovan je na algoritmu za konstrukciju
razapinjućeg drveta. Ovaj algoritam se
sastoji od sledećih algoritamskih koraka:

www.vtsurosevac.com 37
KORAK 1: Napraviti listu sortiranih
grana originalne mreže u rastećem
poretku njihovih dužina (na prvom
mestu liste je najkraća grana, a na
poslednjem najduža). U slučaju kada
dve ili više grana imaju istu dužinu
proizvoljnim redosledom ih uključiti u
listu jednu iza druge.

KORAK 2: Primeniti algoritam za


konstrukciju razapinjućeg drveta
ispitujući grane redosledom na kome se
nalaze na listi.
www.vtsurosevac.com 38
Primer: Odrediti najkraće razapinjuće drvo
transportne mreže prikazane na slici 1.32.
primenom Kruskal-ovog algoritma.

Sortirajmo grane po rastućem poretku


njihovih dužina. Redosled kojim treba
ispitivati grane prilikom primene
algoritma za konstrukciju
razapinjućeg drveta je sledeći:
(b, c), (h, j), (c, f), (g, i), (a, e), (e, h),
(b, f), (e, b), (h, f), (a, d), (g, h), (a, b),
(f, j), (d, g), (b, h), (a, g), (i, h), (d, i),
(i, j).
www.vtsurosevac.com 39
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine

komponenta 1
Slika 1.42 Grana (b, c)

www.vtsurosevac.com 40
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
b

komponenta 1

h komponenta 2

Slika 1.43. Grane (b, c) i (h, j)


www.vtsurosevac.com 41
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
b

komponenta 1 c

h f

komponenta 2 j

Slika 1.44. Grane (b, c), (h, j) i (c, f)


www.vtsurosevac.com 42
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
b

komponenta 1 c

komponenta 3 h f

i komponenta 2 j

Slika 1.45. Grane (b, c), (h, j), (c, f) i (g, i)


www.vtsurosevac.com 43
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
komponenta 1
a
b

e c

komponenta 4

h f
komponenta 3

i komponenta 2 j

Slika 1.46. Grane (b, c), (h, j), (c, f) i (g, i)


www.vtsurosevac.com 44
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
komponenta 1
a
b

e c

h f
komponenta 3

i komponenta 2 j

Slika 1.47. Grane (b, c), (h, j), (c, f), (g, i) i (e, h)
www.vtsurosevac.com 45
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
komponenta 1
a
b

e c

h f
komponenta 3

i komponenta 2 j

Slika 1.48. Grane (b, c), (h, j), (c, f), (g, i), (e, h) i (b, f)
www.vtsurosevac.com 46
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
komponenta 1
a
b

e c

h f
komponenta 2

i j

Slika 1.49. Grane (b, c), (h, j), (c, f), (g, i), (e, h), (b, f) i (e, b)
www.vtsurosevac.com 47
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
komponenta 1
a
b

e c

h f
komponenta 2

i j

Slika 1.50. Grane (b, c), (h, j), (c, f), (g, i), (e, h), (b, f),
(e, b) i (h, f)

www.vtsurosevac.com 48
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
komponenta 1
a
b

d e c

h f
komponenta 2

i j

Slika 1.51. Grane (b, c), (h, j), (c, f), (g, i), (e, h), (b, f),
(e, b), (h, f) i (a, d)
www.vtsurosevac.com 49
1.6. Algoritmi za iznalaženje
razapinjućeg drveta najmanje dužine
komponenta 1
a
b

d e c

h f

zelena boja
i j crvena boja

Slika 1.52. Svi čvorovi pripadaju jednoj komponenti


www.vtsurosevac.com 50
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine

KORAK 1: Napraviti listu sortiranih grana


originalne mreže u opadajućem poretku (na
prvom mestu liste je najduža grana, a na
poslednjem najkraća). U slučaju kada dve ili
više grana imaju istu dužinu proizvoljnim
redosledom ih uključiti u listu jednu iza druge.
KORAK 2: Primeniti algoritam za
konstrukciju razapinjućeg drveta ispitujući
grane redosledom na kome se nalaze na listi.

www.vtsurosevac.com 51
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine

Primer: Odrediti razapinjuće drvo najveće


dužine mreže prikazane na slici 1.32.

www.vtsurosevac.com 52
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
Sortirajmo grane po opadajućem poretku
njihovih dužina. Redosled kojim treba
ispitivati grane prilikom primene algoritma
za konstukciju razapinjućeg drveta je
sledeći:
(i, j), (d, i), (i, h), (a, g), (b, h), (d, g), (a, b),
(j, f), (a, d), (g, h), (f, h), (b, e), (b, f), (e, h),
(a, e), (g, i), (c, f), (b, c), (h, j).
www.vtsurosevac.com 53
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine

komponenta 1

i j

Slika 1.53. Grana (i, j)

www.vtsurosevac.com 54
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine

komponenta 1

i j

Slika 1.54. Grane (i, j), (d, i)


www.vtsurosevac.com 55
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
d
komponenta 1

i j

Slika 1.55. Grane (i, j), (d, i) i (i, h)


www.vtsurosevac.com 56
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a

komponenta 2
d
komponenta 1

i j

Slika 1.56. Grane (i, j), (d, i), (i, h) i (a, g)


www.vtsurosevac.com 57
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine

komponenta 2
a komponenta 1
b

i j

Slika 1.57. Grane (i. j), (d, i), (i, h), (a, g) i (b, h)
www.vtsurosevac.com 58
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

i j

slika 1.58. Grane (i, j), (d, i), (i, h), (a, g), (b, h) i (d, g)
www.vtsurosevac.com 59
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

i j

Slika 1.59. Grane (i, j), (d, i), (i, h), (a, g), (b, h) i (d, g)
www.vtsurosevac.com 60
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine

a komponenta 1
b

h f

i j

Slika 1.60. Grane (i, j), (d, i), (i, h), (a, g), (b, h), (d, g) i (j, f)
www.vtsurosevac.com 61
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

h f

i j

Slika 1.61. Grane (i, j), (d, i), (i, h), (a, g), (b, h), (d, g) i (j, f)

www.vtsurosevac.com 62
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

h f

i j

Slika 1.62. Grane (i, j), (d, i), (i, h), (a, g), (b, h), (d, g) i (j, f)
www.vtsurosevac.com 63
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

h f

i j

Slika 1.63. Grane (i, j), (d, i), (i, h), (a, g), (b, h), (d, g) i (j, f)
www.vtsurosevac.com 64
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

d e

h f

i j

Slika 1.64. Grane (i, j), (d, i), (i, h), (a, g), (b, h),
(d, g), (j, f) i (b, e)
www.vtsurosevac.com 65
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

d e

h f

i j

Slika 1.65. Grane (i, j), (d, i), (i, h), (a, g), (b, h), (d, g),
(j, f) i (b, e)
www.vtsurosevac.com 66
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine

a komponenta
komponent11
Component
b

d e

h f

i j

Slika 1.66. Grane (i, j), (d, i), (i, h), (a, g), (b, h), (d, g),
(j, f) i (b, e)
www.vtsurosevac.com 67
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a komponenta 1
b

d e

h f

i j

Slika 1.67. Grane (i, j), (d, i), (i, h), (a, g),
(b, h), (d, g), (j, f) i (b, e)
www.vtsurosevac.com 68
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće
dužine
a komponenta 1
b

d e

h f

i j

Slika 1.68. Grane (i, j), (d, i), (i, h), (a, g),
(b, h), (d, g), (j, f) i (b, e)
www.vtsurosevac.com 69
1.7. Algoritam za iznalaženje
razapinjućeg drveta najveće dužine
a
b

d e c

h f

i j

Slika 1.69. Pripadajuće drvo najveće


dužine mreže prikazane na slici 1.32.
www.vtsurosevac.com 70
Literatura:

Dušan Teodorović, Transportne mreže, Saobraćajni fakultet,


Beograd, 2007. (str. 25-43).

www.vtsurosevac.com 71

You might also like