You are on page 1of 70

Univerzitet u Kragujevcu

Prirodno-matematicki fakultet
Dr Miroslav Petrovic, dr Tatjana Aleksic
Teorijske osnove informatike 3
Skripta
2012/13.
Glava 1
Uvod u teoriju grafova
1.1 Grafovi
Definicija 1.1. Graf G je ureden par (V (G), E(G)), gde je V (G)
konacan neprazan skup elemenata koji se zovu cvorovi, a E(G) je
konacan skup razlicitih neuredenih parova razlicitih elemenata skupa
V (G) koji se zovu grane.
Graf G se moze geometrijski predstaviti crtezom u ravni.

Cvorovi
grafa se predstavljaju tackama ravni, a grane grafa linijama koje pove-
zuju odgovarajuce cvorove.
Na slici 1.1 dat je graf G = (V (G), E(G)), gde je V (G) = {v
1
, v
2
, v
3
,
v
4
}, E(G) = {{v
1
, v
2
}, {v
1
, v
3
}, {v
2
, v
3
}, {v
3
, v
4
}}. Kod grafova cesto
vazi poznata izreka da slika vredi hiljadu reci: strukturu navedenog
grafa je lakse shvatiti iz geometrijskog predstavljanja nego iz denicije
G = ({v
1
, v
2
, v
3
, v
4
}, {{v
1
, v
2
}, {v
1
, v
3
}, {v
2
, v
3
}, {v
3
, v
4
}}) .
2
Skup V (G) zove se skup cvorova, a skup E(G) skup grana grafa
G. Ako ne postoji mogucnost zabune, koriste se krace oznake V i E,
respektivno. Broj cvorova grafa G zove se red grafa i oznacava se sa
n. Broj grana grafa G oznacava se sa m.

Cesto se grana {v, w}, gde
su v i w cvorovi grafa G, oznacava sa vw.
Ako je e = vw grana grafa G, tada za granu e kazemo da spaja
cvorove v i w, a za ove cvorove kazemo da su susedni. Takode kazemo
da je grana e incidentna cvorovima v i w, i da je cvor w sused cvora v.
Skup svih cvorova grafa G koji su susedni cvoru v oznacava se sa N(v)
i zove se susedstvo cvora v. Za sve grane grafa G koje su incidentne
istom cvoru kazemo da su susedne grane.
Ako u deniciji 1.1 izostavimo ogranicenje da grane moraju biti
razlicite tada se odgovarajuci matematicki objekat zove multigraf (slika
1.2). Dve ili vise grana koje spajaju isti par cvorova zovu se visestruke
grane.
Ako u deniciji 1.1 takode izostavimo ogranicenje da grane moraju
da spajaju razlicite cvorove i dopustimo mogucnost postojanja petlji,
tada se odgovarajuci matematicki objekat zove pseudograf (slika 1.3).
Za multigraf sa slike 1.2 je V (G) = {v
1
, v
2
, v
3
, v
4
}, a E(G) = {{v
1
,
v
2
}, {v
1
, v
3
}, {v
1
, v
3
}, {v
2
, v
3
}, {v
2
, v
3
}, {v
2
, v
3
}, {v
3
, v
4
}}. Za pseudo-
graf sa slike 3 je V (G) = {v
1
, v
2
, v
3
, v
4
}, a E(G) = {{v
1
, v
2
}, {v
1
, v
3
},
{v
1
, v
3
}, {v
2
, v
2
}, {v
2
, v
2
}, {v
2
, v
3
}, {v
2
, v
3
}, {v
2
, v
3
}, {v
3
, v
4
}, {v
4
, v
4
}}.
Ako se posmatraju grafovi, a ne multigrafovi ili pseudografovi, tada
se cesto koristi termin prosti grafovi, kako bi se istakla cinjenica da
su visestruke grane i petlje iskljucene. U ovoj knjizi uglavnom cemo
razmatrati proste grafove.
3
1.2 Izomorzam grafova
Definicija 1.2. Dva grafa G
1
= (V
1
, E
1
) i G
2
= (V
2
, E
2
) su izo-
morfna ako postoji bijekcija f : V
1
V
2
koja odrazava osobinu sused-
nosti cvorova, tj.
(v, w V
1
) (vw E
1
f(v)f(w) E
2
).
Preslikavanje f zove se izomorzam. Grafovi G
1
i G
2
sa slike 1.4
su izomorfni, jer je preslikavanje
f =
_
v
1
v
2
. . . v
6
v

1
v

2
. . . v

6
_
ocigledno izomorzam.
Relacija izomorfnosti dva grafa je reeksivna, simetricna i tran-
zitivna. Dakle, relacija izomorfnosti je relacija ekvivalencije u skupu
svih grafova, pa je mozemo proglasiti za jednakost grafova. Prema
tome, grafovi su jednaki ako i samo ako su izomorfni.
Iz same denicije je ocigledno da su izomorfni grafovi, u stvari,
isti grafovi, ali razlicito predstavljeni odnosno nacrtani. Zbog toga
je znacajno pitanje kako se moze prepoznati graf, tj. kako se moze
utvrditi da li su dva grafa izomorfna. Problem izomorzma grafova
je izuzetno tezak i do danas nije poznat odgovarajuci algoritam bitno
razlicit od neposrednog proveravanja.
4
1.3 Stepen cvorova
Stepen cvora v, u oznaci d(v), jednak je broju grana koje su
sa cvorom v incidentne. Za graf G sa slike 1.1 je d(v
1
) = d(v
2
) = 2,
d(v
3
) = 3 i d(v
4
) = 1.
Ako je V (G) = {v
1
, v
2
, . . . , v
n
}, tada se za stepene cvorova koriste
krace oznake d
1
, d
2
, . . . , d
n
, respektivno. Minimalan i maksimalan ste-
pen grafa G u oznaci (G) i (G), respektivno, denisu se na sledeci
nacin: (G) = min{d
1
, d
2
, ..., d
n
}, (G) = max{d
1
, d
2
, ..., d
n
}. Za graf
sa slike 1.1 je (G) = 1, (G) = 3.

Cvor stepena 0 grafa G zove se izolovani cvor.


Ako saberemo sve stepene cvorova dobijamo dvostruki broj grana,
jer svaka grana doprinosi sumi stepena cvorova dva puta: po jedanput
za svaki krajnji cvor grane. Dakle, vazi jednakost
(1.1) d
1
+ d
2
+ ... + d
n
= 2m.
Neposredno iz ove jednakosti i cinjenice da ako je zbir nekoliko
celih brojeva paran, tada je broj neparnih sabiraka takode paran sledi
tvrdenje.
Teorema 1.1. Broj cvorova neparnog stepena je u svakom grafu
paran.
Teorema 1.1. je u literaturi poznata kao teorema o rukovanju: U
svakom drustvu broj osoba koje su se rukovale neparan broj puta
je paran. Ovde osobe iz drustva predstavljaju cvorove grafa, tako
da izmedu dva cvora postoji grana ukoliko su se odgovarajuce osobe
rukovale.
1.4 Podgrafovi
Definicija 1.3. Neka su G = (V (G), E(G)) i H = (V (H), E(H))
dva grafa. Graf H je podgraf grafa G, u oznaci H G, ako i samo
ako V (H) V (G) i E(H) E(G). Ako je V (H) = V (G), tada se H
zove razapinjuci podgraf grafa G.
5
Na slici 1.5 prikazani su graf G, njegov podgraf H i razapinjuci
podgraf H
1
.
Neka je V
1
proizvoljan neprazan podskup skupa V (G). Za graf H,
ciji je skup cvorova V
1
i u kome su dva cvora susedna ako i samo ako
su susedni u grafu G, kaze se da je indukovan skupom V
1
. Graf H se
naziva indukovani podgraf grafa G. Graf H
2
na slici 1.5 je indukovani
podgraf grafa G indukovan skupom cvorova {v
1
, v
2
, v
3
, v
5
}.
Ako je e grana grafa G, tada je G e podgraf grafa G dobijen iz
G izostavljanjem grane e. Opstije, G{e
1
, . . . , e
k
} je podgraf grafa G
dobijen iz G izostavljanjem grana e
1
, . . . , e
k
. Slicno, ako je v cvor grafa
G, tada je Gv podgraf grafa G dobijen iz G izostavljanjem cvora v i
svih grana grafa G koje su incidentne cvoru v. Opstije, G{v
1
, . . . , v
k
}
je podgraf grafa G dobijen iz G izostavljanjem cvorova v
1
, . . . , v
k
i svih
grana incidentnih bilo kome od njih. Ovi pojmovi ilustrovani su na
slici 1.6.
1.5 Putevi i konture
Niz grana oblika v
0
v
1
, v
1
v
2
, . . . , v
r1
v
r
grafa G ili skraceno W =
v
0
v
1
v
2
. . . v
r1
v
r
zove se setnja duzine r u grafu G.

Cvor v
0
zove
6
se pocetni, a cvor v
r
zavrsni cvor setnje.

Cvorovi v
1
, . . . , v
r1
su
unutrasnji cvorovi setnje.

Setnja sa pocetnim cvorom v
0
i zavrsnim
cvorom v
r
zove se (v
0
-v
r
) setnja i kaze se da spaja cvorove v
0
i v
r
. U
setnji se i cvorovi i grane mogu ponavljati.

Setnja W

= v
i
v
i+1
. . . v
j1
v
j
(0 i < j r) zove se deo setnje W izmedu cvorova v
i
i v
j
i oznacava
se sa W

[v
i
, v
j
].
Ako su sve grane setnje v
0
v
1
. . . v
r
razlicite ona se zove staza duzine
r. Ako su svi cvorovi setnje (a samim tim i sve grane) razliciti, tada
se setnja zove put (ili otvoreni put) duzine r.
U grafu Gna slici 1.7 v
1
v
2
v
4
v
3
v
2
v
1
v
5
v
3
je jedna (v
1
-v
3
) setnja duzine
7, v
1
v
3
v
2
v
4
v
3
v
5
je jedna (v
1
-v
5
) staza duzine 5, dok je v
1
v
2
v
4
v
3
v
5
jedan
(v
1
-v
5
) put duzine 4.

Setnja ili staza je zatvorena ako je v


0
= v
r
.

Setnja u kojoj su
cvorovi v
0
, v
1
, . . . , v
r
svi razliciti sa izuzetkom pocetnog i krajnjeg
cvora koji se poklapaju zove se kontura (ili zatvoreni put).
Kontura je parna ako ima paran broj grana, a neparna u suprot-
nom slucaju. Kontura duzine 3 zove se trougao.
U grafu G na slici 1.7 v
1
v
3
v
4
v
3
v
1
je jedna zatvorena setnja duzine
4, a v
1
v
2
v
3
v
1
kontura duzine 3.
Ako su v i w cvorovi grafa G, duzina najkraceg puta izmedu njih
zove se rastojanje izmedu cvorova v i w i oznacava se sa d(v, w). Naj-
vece rastojanje izmedu dva cvora u grafu G zove se dijametar grafa G
i oznacava se sa d(G). Dakle,
d(G) = max
v,wV (G)
d(v, w) .
7
1.6 Povezanost grafa
Definicija 1.4. Graf G je povezan ako se svaka dva njegova cvora
mogu povezati putem. Ako postoje cvorovi koji se ne mogu povezati
putem, graf je nepovezan.
Nepovezan graf se sastoji od dva ili vise odvojenih delova. Ovi
odvojeni delovi nazivaju se komponente povezanosti (ili krace kompo-
nente) grafa. Tacnije, komponenta grafa kojoj pripada neki cvor v
je podgraf obrazovan skupom svih onih cvorova koji se mogu spojiti
putem sa cvorom v, ukljucujuci tu i cvor v.
Ako su G
1
, ..., G
k
(k 2) komponente povezanosti grafa G tada je
V (G
i
) V (G
j
) = (i, j = 1, ..., k; i = j), V (G) = V (G
1
) . . . V (G
k
)
i E(G) = E(G
1
) . . . E(G
k
). U ovom slucaju kazemo da je graf G
unija svojih komponenti povezanosti i pisemo G = G
1
. . . G
k
.
Definicija 1.5. Podgraf G
1
grafa G je maksimalan u odnosu na
neku osobinu ako on ima tu osobinu, a nju nema ni jedan od podgrafova
grafa G u kojima se G
1
sadrzi kao pravi podgraf.
Uz ovakvu terminologiju komponente grafa G su njegovi maksi-
malni povezani podgrafovi.
Na slici 1.8 graf G
1
je povezan, a graf G
2
nepovezan. Graf G
2
ima
sest komponenti povezanosti.
U vezi sa pitanjem povezanosti grafova interesantni su i sledeci
pojmovi.
Definicija 1.6. Artikulacioni cvor grafa je cvor cijim se udalja-
vanjem iz grafa povecava broj komponenata grafa.
8
Definicija 1.7. Most grafa je grana cijim se udaljavanjem iz grafa
povecava broj komponenata grafa. Grana koja je incidentna sa cvorom
stepena 1 naziva se viseca grana.
Svaka viseca grana predstavlja most grafa. Za graf na slici 1.9
oznaceni su sa a, m, v redom artikulacioni cvorovi, mostovi i visece
grane.
1.7 Specijalni grafovi
Medu brojnim grafovima pojedini, zbog svojih specicnih oso-
bina, imaju veci znacaj od drugih. Zbog toga su dobili i posebna
imena. U ovom poglavlju navedeno je nekoliko vrsta takvih grafova.
Ako su svi cvorovi grafa G stepena r, tada se G zove regularan graf
stepena r. Iz jednakosti (1.1) sledi da regularan graf stepena r ima
m =
1
2
nr grana. Odavde se vidi da ne postoje za svako n i r regularni
grafovi stepena r sa n cvorova. Potrebno je, naime, da bar jedan od
brojeva n i r bude paran.
Posebno su interesantni regularni grafovi stepena dva. Povezani
regularni grafovi stepena dva zovu se konture. Oznaka za konturu sa
n cvorova je C
n
. Na slici 1.10 prikazane su konture C
3
, C
4
, C
5
, C
6
i
C
7
. Za neke od ovih kontura upotrebljavaju se i nazivi iz geometrije:
trougao, cetvorougao, itd.
9
Regularni grafovi stepena tri imaju paran broj cvorova. Na slici
1.11 dato je nekoliko regularnih grafova stepena tri.
Graf cija su svaka dva cvora susedna zove se kompletan graf. Oznaka
za kompletan graf sa n cvorova je K
n
. Na slici 1.12 prikazani su gra-
fovi K
1
, K
2
, K
3
, K
4
i K
5
. Ocigledno, kompletan graf K
n
je regularan
graf stepena n 1 i ima m =
1
2
n(n 1) =
_
n
2
_
grana.
Prazan graf je graf u kojem nikoja dva cvora nisu susedna. To je
0-regularan graf, tj. graf koji se sastoji samo od izolovanih cvorova.
Bipartitan graf je graf ciji se skup cvorova moze razbiti na dva
disjunktna skupa (partitivni skupovi ) na takav nacin da svaka grana
spaja cvor prvog skupa sa cvorom drugog skupa. Kompletan bipartitan
graf je bipartitan graf kod koga je svaki cvor prvog skupa susedan sa
svakim cvorom drugog skupa. Ako partitivni skupovi sadrze r i s
cvorova, respektivno, tada se kompletan bipartitan graf oznacava sa
K
r,s
. Proizvoljan kompletan bipartitan graf oblika K
1,s
zove se zvezda.
Na slici 1.13 prikazani su grafovi K
3,3
i K
1,5
.
10
k-partitan graf je graf ciji se skup cvorova moze razbiti na k me-
dusobno disjuktivnih skupova na takav nacin da svaka grana spaja
dva cvora koji leze u razlicitim partitivnim skupovima.
Kompletan k-partitan graf je k-partitan graf, takav da su svaka
dva cvora iz razlicitih partitivnih skupova povezana granom, a da
ni jedna grana ne povezuje cvorove iz istog skupa. Ako partitivni
skupovi sadrze redom n
1
, n
2
, ..., n
k
cvorova kompletan k-partitan graf
se oznacava sa K
n
1
,n
2
,...,n
k
.
Graf koji ne sadrzi nijednu konturu kao podgraf naziva se suma.
Ako je graf, uz to, povezan, on se naziva stablo. Zbog znacaja stabala
u teoriji grafova njima je posveceno citavo poglavlje 2.
Stablo u kojem nijedan cvor nema stepen veci od dva naziva se
put
1
. Put sa n cvorova obelezava se sa P
n
. Na slici 1.14 prikazano je
prvih sest puteva.
1.8 Komplement grafa
Definicija 1.8. Komplement G grafa G je graf koji ima iste cvo-
rove kao G, pri cemu su dva cvora susedna u G ako i samo ako ti
cvorovi nisu susedni u G.
1
Treba razlikovati pojmove puti konturakoji su sadrzani u nekom grafu
(odeljak Putevi i konture) i grafove koji se nazivaju puti kontura.
11
Iz denicije sledi (G) = G, tj. komplement komplementa je polazni
graf. Na slici 1.15 prikazan je jedan par uzajamno komplementarnih
grafova.
Teorema 1.2. Ako je G nepovezan graf, njegov komplement G je
povezan (tj. bar jedan od grafova G i G je povezan graf ).
Dokaz. Potrebno je dokazati da su u G proizvoljna dva cvora v i
w povezana putem.
Ako cvorovi v i w pripadaju razlicitim komponentama povezanosti
u G, tada su oni susedni u G, tj. povezani su putem duzine 1.
Ako, pak, cvorovi v i w pripadaju istoj komponenti povezanosti u
G posmatrajmo cvor u koji ne pripada toj komponenti povezanosti.
Na osnovu denicije komplementa cvor u je u G susedan sa cvorovima
v i w. Stoga su cvorovi v i w povezani u G putem duzine 2.
Graf G je samokomplementaran ako i samo ako je izomorfan svom
komplementu G. Trivijalan primer samokomplementarnog grafa je
graf K
1
. Drugi primeri samokomplementarnih grafova dati su na slici
1.16.
12
Za samokomplementarne grafove vazi sledeca teorema.
Teorema 1.3. Samokomplementaran graf G ima 4r ili 4r + 1
cvorova, pri cemu je r prirodan broj.
Dokaz. Neka je G graf sa n cvorova i m grana. Komplement G
takode ima m grana jer je izomorfan sa G. Objedinjavanjem skupova
grana iz G i G dobija se kompletan graf, pa je 2m =
n(n1)
2
. Odavde
je n(n 1) = 4m. Prirodni brojevi n i n 1 su uzastopni i jedan od
njih je neparan i uzajamno prost sa brojem 4. Sledi
4|n(n 1) (D(4, n 1) = 1 D(4, n) = 1)
(4|n(n 1) D(4, n 1) = 1) (4|n(n 1) D(4, n) = 1)
4|n 4|(n 1) .
Odavde zakljucujemo da je n = 4r ili n = 4r + 1.
1.9 Grafovi i matrice
Grafu G sa skupom cvorova V (G) = {v
1
, v
2
, ..., v
n
} i skupom grana
E(G) = {e
1
, e
2
, ..., e
m
} mogu se na prirodan nacin pridruziti sledece
dve matrice.
Matrica incidencije grafa G je n m matrica B(G) = (b
ij
), gde je
b
ij
=
_
1, ako je cvor v
i
incidentan sa granom e
j
,
0, u suprotnom slucaju.
Broj jedinica u i-toj vrsti jednak je broju grana incidentnih sa
cvorom v
i
, tj. njegovom stepenu d(v
i
). S druge strane, u svakoj koloni
su po dve jedinice, sto odgovara cinjenici da je svaka grana incidentna
sa dva cvora.
Matrica susedstva grafa G je n n matrica A(G) = (a
ij
), gde je
a
ij
=
_
1, ako su cvorovi v
i
i v
j
susedni,
0, u suprotnom slucaju.
13
Matrica susedstva je ocigledno simetricna matrica i brojevi jedinica
u i-toj vrsti i i-toj koloni jednaki su d(v
i
). Na glavnoj dijagonali nalaze
se nule. Regularni grafovi stpena r imaju matricu susedstva u kojoj se
u svakoj vrsti i svakoj koloni nalazi tacno r jedinica. Matrica susedstva
kompletnih grafova ima na glavnoj dijagonali elemente jednake nuli;
ostali elementi matrice jednaki su 1.
Za graf G sa slike 1.17 matrica incidencije odnosno matrica sused-
stva je
B(G) =
_

_
1 1 1 0 0
1 0 0 1 0
0 1 0 1 1
0 0 1 0 1
_

_
, A(G) =
_

_
0 1 1 1
1 0 1 0
1 1 0 1
1 0 1 0
_

_
.
Teorema 1.4. Neka je A = (a
ij
) matrica susedstva proizvoljnog
grafa G ciji su cvorovi v
1
, v
2
, ..., v
n
. Elemenat a
(k)
ij
iz i-te vrste i j-te
kolone matrice A
k
jednak je broju razlicitih (v
i
v
j
) setnji duzine k u
grafu G.
Dokaz. Dokaz cemo izvesti matematickom indukcijom po k. Za
k = 1 teorema je tacna na osnovu denicije matrice susedstva A.
Pretpostavimo da teorema vazi za k = s 1. Po deniciji matricnog
mnozenja elemenat na mestu (i, j) u matrici A
s+1
= A A
s
jednak je
a
(s+1)
ij
= a
i1
a
(s)
1j
+ a
i2
a
(s)
2j
+ + a
in
a
(s)
nj
.
Neka su v
t
1
, v
t
2
, . . . , v
t
l
cvorovi do kojih se moze doci iz cvora v
i
setnjom duzine 1. Tada je
(1.2)
a
(s+1)
ij
= a
it
1
a
(s)
t
1
j
+ a
it
2
a
(s)
t
2
j
+ + a
it
l
a
(s)
t
l
j
= a
(s)
t
1
j
+ a
(s)
t
2
j
+ + a
(s)
t
l
j
.
14
Po induktivnoj pretostavci a
(s)
tpj
(p = 1, 2, ..., l) predstavlja broj (v
tp

v
j
) setnji duzine s, a to je istovremeno i broj (v
i
v
j
) setnji duzine
s + 1 koje prolaze kroz cvor v
tp
. Sumiranjem ovakvih izraza za svako
t
p
dobija se broj svih (v
i
v
j
) setnji duzine s + 1, tj. izraz (1.2).
Mnogi prakticni problemi mogu se na prirodan nacin opisati jezi-
kom teorije grafova. Medu takve probleme spada, na primer, analiza i
sinteza elektricnih kola, segmentacija programa u racunarstvu, analiza
mreza sa protokom roba ili informacija, indentikacija hemijskih je-
dinjenja itd. S obzirom na slozenost i velicinu grafova koji se tom prili-
kom javljaju, namece se potreba za razvojem algoritama pogodnih za
primenu na racunaru. U vezi sa tim osnovno pitanje predstavlja repre-
zentacija grafova u racunaru. Na ovom mestu isticemo tzv. matricnu
reprezentaciju grafova.
Najcesce susretana matricna reprezentacija grafa je pomocu ma-
trice susedstva. Ova reprezentacija zahteva n
2
(n je broj cvorova)
memorijskih lokacija u racunaru i veoma je neprakticna za grafove sa
malim brojem grana, sto je u praksi cest slucaj. S druge strane, ona je
pogodna ne samo za proste grafove vec i za multigrafove i pseudogra-
fove. U tom cilju na poziciju preseka i-te vrste i j-te kolone stavlja se
broj grana koje spajaju i-ti cvor grafa sa j-tim cvorom. Istaknimo da
je zbog simetricnosti matrice susedstva moguce ustedeti skoro 50% me-
morijskih resursa ako se pamte samo elementi ispod (ili iznad) glavne
dijagonale.

Sto se algoritama tice, ova reprezentacija je pogodnija za
algoritme koji glavne operacije sprovode nad cvorovima. Pored toga,
neke osnovne operacije, kao sto su dodavanje grana, brisa- nje grana i
slicno, se pri ovoj reprezentaciji izvode jednostavno i eka- sno.
Druga matricna reprezentacija grafa je pomocu matrice incidencije.
Treba, medutim, naglasiti da je ova reprezentacija veoma neekonomi-
cna u pogledu memorijskih resursa (jer se u svakoj koloni nalaze samo
dva nenulta elementa) i rede se koristi.
Pored spomenutih matricnih reprezentacija grafa u racunaru po-
stoje i druge reprezentacije koje ovom prilikom necemo razmatrati.
15
Glava 2
Stabla
2.1 Denicija i osobine stabala
Definicija 2.1. Povezan graf koji ne sadrzi konture kao podgra-
fove naziva se stablo. Nepovezan graf koji ne sadrzi konture kao pod-
grafove naziva se suma.
Stabla i sume su specijalna vrsta grafova sa vrlo interesantnim
osobinama i od posebnog su interesa u racunarstvu i elektrotehnici.
Ocigledno, komponente povezanosti sume su stabla. Uobicajena
oznaka za stablo je T. Stablo je netrivijalno ako ima vise od jed-
nog cvora. U nastavku posmatracemo samo netrivijalna stabla i tu
cinjenicu necemo posebno isticati.
Sledeca teorema omogucava da se pojam stabla denise i na neke
druge ekvivalentne nacine.
Teorema 2.1. Neka je G graf sa n cvorova. Tada su sledeci is-
kazi ekvivalentni.
1
0
Graf G je povezan graf koji ne sadrzi nijednu konturu.
2
0
Graf G je povezan graf sa m = n 1 grana.
3
0
Graf G je graf bez kontura koji ima m = n 1 grana.
4
0
Graf G je minimalan povezan graf, tj. graf G je povezan, ali
udaljavanjem bilo koje grane postaje nepovezan graf.
16
v
6
v
1
v
2
v
3 v
4
v
5
v
7
T
v
6
v
1
v
2
v
3
v
4
v
5
v
7
G
Slika 2.1
5
0
Graf G je maksimalan graf koji ne sadrzi konture, tj. graf G
ne sadrzi konture, ali se dodavanjem nove grane izmedu bilo koja dva
cvora formira tacno jedna kontura u G.
6
0
Svaka dva cvora grafa G su povezana tacno jednim putem.
Na osnovu prethodne teoreme vidimo da se za deniciju stabla
moze uzeti bilo koji od ekvivalentnih iskaza 1
0
-6
0
. U tom slucaju
preostali iskazi predstavljaju tvrdenja koja treba dokazati.
Sve osobine izlozene u teoremi 2.1. ilustrovacemo na primeru stabla
T i grafa G koji nije stablo (slika 2.1).
Graf T je povezan graf koji ne sadrzi nijednu konturu. On ima
n = 7 cvorova i m = n 1 = 6 grana. Zbog toga T zadovoljava sve
osobine iz iskaza 1
0
,2
0
i 3
0
.
Graf G je povezan graf sa n = 7 cvorova, ali ima m = 7 = 6 = n1
grana i sadrzi konturu 2 3 5 4 2. Zbog toga za G nijedan iskaz
1
0
,2
0
i 3
0
teoreme 2.1. nije tacan.
Graf T je minimalan povezan graf jer, ako izbacimo bilo koju
njegovu granu, on postaje nepovezan (tacnije svaka njegova grana
je most). Graf G nije minimalan povezan graf jer ako izbacimo na
primer njegovu granu {3, 5}, on ostaje povezan. Primetimo da smo
izbacivanjem ove grane dobili jedno stablo.
Graf T je maksimalan graf koji ne sadrzi konture, jer ubacivanjem
nove grane dobijamo tacno jednu konturu u T. Na primer, ako bi
grafu T dodali granu {1, 2} dobili bi konturu 1231. Graf G nije
maksimalan graf koji ne sadrzi konture, jer ima konturu 23542.
Svaka dva cvora grafa T su povezana tacno jednim putem. Na
primer, cvorove 1 i 5 povezuje samo jedan put 1-3-4-5. Medutim kod
17
grafa G postoje dva cvora 1 i 6 koji su povezani sa dva razlicita puta
1-2-3-5-6 i 1-2-4-5-6.
Na slici 2.2 prikazana su sva stabla sa najvise sest cvorova. Graf
K
1
je jedino stablo sa jednim cvorom. To je tzv. trivijalno stablo.
Takode, postoje jedinstvena stabla sa dva i tri cvora. To su grafovi P
2
i P
3
. Treba primetiti da sa porastom broja n, broj razlicitih stabala sa
n cvorova naglo raste. Stabla sa n cvorova dobijaju se od stabala sa
n 1 cvorova dodavanjem jednog cvora i jedne grane na sve moguce
nacine, iskljucujuci vec dobijena izomorfna stabla.
Slika 2.2
Teorema 2.2. 1
o
Stablo sadrzi bar dva cvora stepena 1.
2
o
Ako je u cvor stepena 1 stabla T, tada je graf T u takode
stablo.
Dokaz. 1
o
Neka je T stablo i P = u
1
u
2
...u
k
(k 2) najduzi put
u T. Dokazacemo da su cvorovi u
1
i u
k
stepena 1. Pretpostavimo,
suprotno, da cvor u
1
, osim u
2
, ima bar jos jednog suseda v. Ako
v / V (P) tada je vu
1
u
2
...u
k
put duzi od P, sto je kontradikcija sa
izborom puta P. Ako v V (P), recimo v = u
i
(2 < i k), tada
je u
1
u
2
...u
i
u
1
kontura u T, sto je kontradikcija sa cinjenicom da je T
18
stablo. Dakle, cvor u
1
je stepena 1. Na slican nacin se dokazuje da je
i cvor u
k
stepena 1.
2
o
Neka su u
1
i u
2
proizvoljni cvorovi grafa T u.

Cvorovi u
1
i u
2
pripadaju stablu T i postoji jedinstven put P u T koji ih povezuje.
Unutrasnji cvorovi puta P su stepena 2 i zato su razliciti od cvora
u. Dakle, put P pripada grafu T u, pa zakljucujemo da je graf T u
povezan. Posto graf T ne sadrzi konture, ni njegov podgraf T u ne
sadrzi konture. Zakljucujemo da je T u stablo.
Stablo sa n cvorova koje ima tacno 2 cvora stepena 1 predstavlja
put P
n
. Stablo sa n cvorova koje ima n1 cvorova stepena 1 predsta-
vlja zvezdu S
n
. Za n 6 putevi i zvezde su neki od grafova sa slike
2.2.
Teorema 2.3. Svaki povezan graf sadrzi pokrivajuci podgraf oblika
stabla.
Dokaz. Neka je uv proizvoljna grana povezanog grafa G koja pri-
pada nekoj konturi C tog grafa. Tada postoje najmanje dva puta u
grafu koji povezuju cvorove u i v, Q

i Q

= uv. Ako se iz grafa G


udalji grana uv dobijeni graf G uv je povezan. Zaista, neka su x i
y proizvoljni cvorovi grafa G uv. Ti cvorovi su u grafu G povezani
putem P. Ako grana uv ne pripada putu P, tada je P put u grafu
G uv koji povezuje cvorove x i y. Ako pak, grana uv pripada putu
P, tj. P = x. . . uv . . . y, tada put P

+ Q

+ P

povezuje cvorove x
i y u grafu G uv. Ovde su sa P

i P

oznaceni delovi puta P, tj.


P

= [x, u], P

= [v, y].
Udaljimo, sada, iz grafa G proizvoljnu granu koja pripada nekoj
konturi tog grafa. Ponavljajmo ovaj postupak sve dok u grafu postoji
neka kontura. Posto se na ovaj nacin ne moze narusiti povezanost
grafa, na kraju se dobija povezan graf bez kontura, tj. stablo. Dobi-
jeno stablo je pokrivajuci podgraf polaznog grafa.
Kao neposredna posledica teorema 2.1. i 2.3. dobija se sledece
tvrdenje.
Posledica 2.1 Svaki povezan graf sa n cvorova poseduje najma-
nje n 1 grana. Graf sa n cvorova i sa manje od n 1 grana je
nepovezan.
19
2.2 Korenska stabla
Korenska stabla nalaze vrlo vazne primene u racunarskim nau-
kama, na primer, u organizaciji baza podataka, u kodiranju i dekodi-
ranju nizova karaktera, u teorijskom racunarstvu za prikazivanje ma-
tematickih formula itd. Korenska stabla nalaze primenu i u botanici,
kao i u genealogiji (na primer za prikazivanje rodbinskih odnosa u vidu
porodicnih stabala).
Definicija 2.2. Korensko stablo je ureden par RT = (T, r), gde
je T stablo, a r jedan njegov cvor, koji se naziva koren stabla.
Od jednog istog stabla mozemo dobiti vise razlicitih korenskih sta-
bala. Na slici 2.3 prikazano je kako se od stabla T sa slike 2.1 mogu
formirati dva korenska stabla RT
1
i RT
2
koja se dobijaju kada se u T
dva razlicita cvora proglase za koren (koren je oznacen crnim cvorom).
U korenskom stablu RT
1
za koren je izabran cvor 3, a u korenskom
stablu RT
2
cvor 6. Zato mozemo pisati RT
1
= (T, 3) i RT
2
= (T, 6).

Cvorovi nekog korenskog stabla mogu se klasikovati u odnosu na


njihovo rastojanje od korena uvodenjem pojma nivoa cvora.
Definicija 2.3. Nivo cvora v korenskog stabla RT = (T, r) je
jednak duzini puta u stablu T od korena r do cvora v. Najveci nivo
cvora u RT naziva se visina korenskog stabla RT.
Nivo cvora v se uobicajeno oznacava sa n(v), a visina korenskog
stabla sa h.
v
6
v
1
v
2
v
3
v
4
v
5
v
7
RT
1
v
6
v
1 v
2
v
3
v
4
v
5 v
7
RT
2
Slika 2.3
20
v
6
v
1
v
2
v
3
v
4
v
5
v
7
RT
1
nivo 0
nivo 1
nivo 2
v
6
v
1 v
2
v
3
v
4
v
5 v
7
RT
2
nivo 0
nivo 1
nivo 2
nivo 3
Slika 2.4
Kako je put od korena do svakog cvora jedinstven, to je nivo svakog
cvora jednoznacno odreden. Nivo korena jednak je 0, jer je svaki cvor
povezan sa samim sobom putem duzine 0. Nivoi susednih cvorova se
razlikuju za 1. Primetimo, da smo nivo cvora v mogli da denisemo i
kao rastojanje korena r od cvora v.
Nivoi korenskog stabla RT
1
sa slike 2.3 dati su u sledecoj tabeli
v 3 1 4 2 5 6 7
n(v) 0 1 1 1 2 2 2
,
pa je visina ovog stabla h = 2. Nivoi cvorova korenskog stabla RT
2
dati su u sledecoj tabeli
v 6 4 5 3 7 1 2
n(v) 0 1 2 2 2 3 3
i njegova visina je h = 3.
U uobicajenoj geometrijskoj interpretaciji nekog korenskog stabla
svi njegovi cvorovi koji imaju isti nivo nalaze se na istoj visini, pri
cemu se cvorovi razlicitih nivoa predstavljaju odozgo nadole, prema
svom rastucem nivou.
Na primer stabla, RT
1
i RT
2
sa slike 2.3 vec su geometrijski pred-
stavljena na prethodni nacin. Ona se mogu, u skladu sa nivoima svojih
cvorova preciznije protumaciti kao na slici 2.4.
Posto korenska stabla nalaze primenu i u genealogiji za formiranje
porodicnih stabala, uobicajena terminologija korenskih stabala oslanja
se na nazive odgovarajucih rodbinskih odnosa.
21
Definicija 2.4. Neka je RT = (T, r) korensko stablo sa skupom
cvorova V .
Ako su cvorovi u, v V susedni i cvor u ima manji nivo od cvora
v, tj. n(u) = n(v) 1, tada je cvor u roditelj cvora v, a cvor v je dete
cvora u.
Svaki cvor iz V koji nema decu naziva se list (ili terminalni od-
nosno zavrsni cvor). Svaki cvor iz V koji nije list zove se unutrasnji
cvor stabla RT.
Preci cvora u V , koji nije koren, su svi cvorovi razliciti od u koji
pripadaju putu u T od korena r do cvora u. Potomci cvora u V koji
nije list su svi cvorovi iz V koji imaju cvor u kao pretka.
Podstablo sa korenom v V korenskog stabla RT je podgraf stabla
T indukovan cvorom v V i svim njegovim potomcima.
Iz osobine stabala sledi da u korenskom stablu svaki cvor, osim
korena, ima tacno jednog roditelja.
Pojam podstabla u jednom korenskom stablu je veoma bitan, ne
samo za uvodenje jos nekih vaznih pojmova, vec i zbog znacajne uloge
u primenama o cemu ce vise biti reci u narednom odeljku.
Za korensko stablo RT
1
sa slike 2.3 vazi sledece.

Cvor 4 je roditelj cvorova 5, 6 i 7, a cvorovi 5, 6 i 7 su deca cvora


4.
Listovi stabla RT
1
su cvorovi 1, 2, 5, 6, 7, a njegovi unutrasnji cvorovi
su 3, i 4.
Preci cvora 7 su 4, i 3 a potomci cvora 3 su cvorovi 1, 2, 4, 5, 6, 7.
Podstablo sa korenom 4 indukovano je cvorovima 4, 5, 6, 7.
U zavisnosti od toga koliko dece moze imati svaki cvor korenska
stabla se mogu klasikovati na sledeci nacin.
Definicija 2.5. Korensko stablo se naziva t-arno stablo ako i
samo ako svaki njegov unutrasnji cvor ima najvise t dece. Za t = 2
t-arno stablo se naziva binarno stablo.
Striktno t-arno stablo je t-arno stablo ciji svaki unutrasnji cvor
ima tacno t dece.
Potpuno t-arno stablo je striktno t-arno stablo kod koga svi listovi
imaju isti nivo.
22
T
1
T
2
T
3
Slika 2.5
Na slici 2.5 data su tri t-arna stabla. Prvo od njih je 3-arno stablo
(ponekad se naziva trinarno stablo), koje nije striktno. Drugo stablo
je striktno 3-arno stablo, a trece stablo je potpuno binarno stablo.
Definicija 2.6. Balansirano korensko stablo je korensko stablo u
kome se nivoi bilo koja dva njegova lista razlikuju najvise za 1.
Posto je visina h nekog korenskog stabla jednaka najvecem nivou
njegovog lista, kod balansiranog korenskog stabla nivo svakog lista
jednak je h ili h 1. Svako potpuno t-arno stablo je balansirano
korensko stablo, jer svi njegovi listovi imaju nivo h.
Stablo T
2
sa slike 2.5 nije balansirano jer ima visinu 3, a u njemu
postoji list nivoa 1. Ostala stabla sa slike 2.5 su balansirana.
Nadalje cemo u ovom i narednom odeljku razmatrati samo binarna
stabla i njihove primene.
Ilustrujmo na primeru binarnog stabla da striktno t-arno stablo
ne mora biti balansirano, kao ni da balansirano ne mora biti striktno.
Binarno stablo B
1
sa slike 2.6 je balansirano, jer za nivoe njegovih
listova vazi: n(4) = n(6) = 2 = h 1 i n(7) = 3 = h. Medutim ovo
stablo nije striktno, posto unutrasnji cvorovi 2 i 5 imaju samo po jedno
dete. Binarno stablo B
2
sa slike 2.6 je striktno, jer svi njegovi unu-
trasnji cvorovi 1,2 i 4 imaju dva deteta. Medutim ono nije balansirano
jer se nivoi listova 3 i 6 razlikuju za vise od 1 (n(3) = 1, n(6) = 3).
Primetimo da striktno binarno stablo B
2
nije potpuno, jer ima listove
razlicitih nivoa: n(3) = 1, n(5) = 2, n(7) = 3.
23
v
1
v
2
v
3
v
4
v
5
v
6
v
7
B
1
v
1
v
2
v
3
v
4 v
5
v
6
v
7
B
2
Slika 2.6
Kod binarnih stabala ponekad imamo potrebu da razlikujemo decu
svakog unutrasnjeg cvora, i u skladu sa tim uvodi se pojam uredenog
stabla.
Definicija 2.7. Uredeno binarno stablo B je binarno stablo u
kome se kod svakog unutrasnjeg cvora jedno njegovo dete smatra za
levo, a drugo za desno. U slucaju da cvor ima samo jedno dete i ono
je ili levo ili desno dete.
Levo podstablo unutrasnjeg cvora v uredenog binarnog stabla B je
podstablo stabla B sa korenom u levom detetu cvora v.
Desno podstablo unutrasnjeg cvora v uredenog binarnog stabla B je
podstablo stabla B sa korenom u desnom detetu cvora v.
Pojmove uvedene poslednjom denicijom mozemo ilustrovati na
primeru binarnog stabla B
1
sa slike 2.6.

Cvor 5 je levo dete, a cvor 6
desno dete unutrasnjeg cvora 3 ovog stabla.

Cvor 5 ima samo desno
dete, a to je cvor 7. Levo podstablo cvora 1 je podstablo sa korenom
2 indukovano cvorovima 2 i 4. Desno podstablo cvora 1 je podstablo
sa korenom 3 indukovano cvorovima 3, 5, 6 i 7.
Primer 2.1. Odrediti koliko ima uredenih binarnih stabala sa tri
cvora (oznacena sa 1,2 i 3) kod kojih je cvor 1 koren, cvor 2 njegovo
dete, a cvor 3 dete cvora 2.
Resenje. Posto u jednom takvom stablu svaki od cvorova 2 i 3
moze biti levo ili desno dete, ovakvih binarnih stabala ima ukupno 4
i sva su ona prikazana na slici 2.7.
24
v
1
v
1
v
1
v
1
v
2
v
2
v
2
v
2
v
3
v
3
v
3
v
3
T
1
T
2
T
3
T
4
Slika 2.7
2.3 Primene binarnih stabala
Uredena binarna stabla imaju veliku primenu u racunarstvu. Ovde
cemo razmotriti tri ovakve primene: u prikazivanju algebarskih for-
mula, u organizaciji skupa uredenih podataka u racunaru i u kodiranju
podataka.
2.3.1 Stabla kodiranja
Sva slova, kao i drugi simboli, u racunaru se cuvaju u vidu niski
bitova odnosno niski jedinica i nula. Na primer, ako su simboli dati
u vidu ASCII simbola (skracenica od American Standard Code for
Information Interchange), oni ce se sastojati od niski duzine 7 bitova,
plus dodatni bit (jer bajt ima 8 bitova) koji koristimo za proveru
parnosti da bi se pri prenosu podataka eliminisale greske.
Neka A predstavlja skup svih simbola koje zelimo da sacuvamo.
Skup A uvek mozemo da sacuvamo u obliku binarnih niski, neke ksne
duzine n, sastavljenih od nula i jedinica. Takav nacin skladistenja ima
veliku prednost, u slucaju da je potrebno da se niske dekodirajuu
simbole skupa A. Tada, prvih n bitova obrazuje prvi simbol skupa A,
narednih n bitova obrazuju drugi simbol itd.
Ako je kolicina podataka sa kojima radimo velika, pozeljno je da
mozemo izvrsiti neku vrstu sazimanja podataka, tj. da za njihovo
cuvanje upotrebimo manje prostora. Ocigledan nacin za to je da ni-
skama koje koristimo za cuvanje podataka promenimo duzinu, tako da
krace niske koristimo za simbole koji se cesce koriste, odnosno duze za
simbole koji se rede koriste. Na taj nacin vrsimo ustedu memorijskog
prostora za skladistenje podataka, a i brzi prenos podataka sa jednog
medija na drugi.
25
Medutim, prilikom cuvanja podataka u obliku niski bitova koje
imaju razlicite duzine, dolazimo do problema kako da utvrdimo gde
se jedna niska zavrsava, a druga pocinje. Na primer, ako je slovo a
kodirano sa 10, b sa 101, e sa 11, m sa 1011 i n sa 110, da li ce niska
1011110 predstavljati rec bea (101|11|10) ili mn (1011|110)?
Da bi se obezbedilo jednoznacno dekodiranje pri kodiranju sim-
bola binarnim kodovima razlicitih duzina, dovoljno je da se svaki od
ovih kodova ne sadrzi ni u jednom drugom kodu kao njegova pocetna
podniska. Skup kodova koji zadovoljava ovaj uslov zove se preksni
kod. Dakle, kada procitamo nisku sastavljenu od nula i jedinica, koja
predstavlja simbol skupa A, znamo da je to simbol koji trazimo, a
ne pocetak nekog drugog simbola. Na osnovu toga sledeca nula ili
jedinica predstavlja pocetak narednog simbola koji dekodiramo. Na
primer, ako niske 111, 1011, 1001, 110, 01 predstavljaju slova a, e, i, o
i u, respektivno, u azbuci od pet slova, onda ako procitamo prve tri
cifre niske 110 znamo da one predstavljaju slovo o posto nijedno drugo
slovo ne pocinje sa ove tri cifre. Na slican nacin, ako su sledece tri
cifre 011, znacemo da 01 predstavlja slovo u, a 1 pocetak narednog
slova.
Posmatrajmo proizvoljno uredeno binarno stablo. Ako neka nje-
gova grana vodi od roditelja do levog deteta njoj ce odgovarati bit
0, a ako vodi od roditelja do desnog deteta njoj ce odgovarati bit 1.
Kako svakom listu odgovara jedinstven put od korena stabla do lista,
to svakom listu mozemo da pridruzimo nisku bitova koji odgovaraju
granama na putu od korena do tog lista. Ta niska bitova naziva se
kod putanje do lista. Sada se svakom listu moze dodeliti neki simbol
koji se moze kodirati pomocu koda putanje do tog lista. Takvo jedno
stablo se zove stablo kodiranja.
Skup svih kodova putanje do lista u proizvoljnom uredenom binar-
nom stablu predstavlja preksni kod, jer se put od korena do jednog
lista ne moze sadrzati u putu od korena do nekog drugog lista.
Primer 2.2. U korenskom stablu na slici 2.8 listovima su pri-
druzeni simboli a, b, c, d, e, f. Za svaki od tih simbola odrediti njegov
kod putanje do lista, a zatim dekodirati niz bitova 00111010000.
Resenje. Kad god u putu od korena do lista idemo ulevo toj grani
odgovara bit 0, a kad idemo udesno odgovara bit 1. Na taj nacin
26
e f
d c
a b
Slika 2.8
dolazimo do toga da svakom od simbola a, b, c, d, e, f odgovara sledece
kodiranje:
a 000, b 001, c 01, d 10, e 110, f 111.
Dati kod je preksni kod, pa prilikom dekodiranja mozemo izvrsiti
podelu na 001|110|10|000, sto nam daje rec beda.
Vratimo se sada na ranije pomenutu ideju da se za simbole koji se
cesce javljaju koriste krace niske bitova, a za rede duze niske bitova.
U tu svrhu uvodi se tezina koda i slicno tezina korenskog stabla.
Definicija 2.8. Neka su zadati simboli s
1
, s
2
, . . . , s
n
, gde se sim-
bol s
i
javlja sa frekvencijom f
i
, i neka duzina binarne niske koja ga
kodira iznosi l
i
. Tada se tezina koda denise kao
w = l
1
f
1
+ l
2
f
2
+ + l
n
f
n
.
Ista formula vazi za tezinu binarnog stabla kod koga je listu koji od-
govara simbolu s
i
, dodeljena frekvencija f
i
, a rastojanje od korena do
tog lista jednako je l
i
.
U nastavku izlozicemo Hafmanov algoritam, koji je razvio Hafman
1952. godine. Taj algoritam odreduje Hafmanovo stablo za simbole
s
1
, s
2
, . . . , s
n
, kojima odgovaraju frekvencije f
1
, f
2
, . . . , f
n
. Hafmanovo
stablo predstavlja stablo sa minimalnom tezinom. Zbog toga i odgo-
varajuci kod, tzv. Hafmanov kod ima minimalnu tezinu.
Hafmanov algoritam
1. Konstruisati skup stabala S od kojih se svako sastoji od jednog
cvora s
i
, kome je pridruzena frekvencija f
i
.
27
2. Odrediti stabla T
1
, T
2
S cijim korenima su pridruzene dve
najmanje frekvencije f
1
i f
2
(f
1
f
2
).
3. Obrazovati binarno stablo T kome je levo podstablo T
1
, desno
podstablo T
2
i korenu je pridruzena frekvencija f
1
+ f
2
.
4. U skupu S zameniti stabla T
1
i T
2
novim stablom T.
5. Ponavljati korake 2-4 sve dok u S ne ostane samo jedno stablo.
Hafmanov algoritam u svakoj iteraciji radi sa skupom podstabala
S, polazeci od skupa stabala sa samo jednim cvorom dodeljenih sim-
bolima s
1
, s
2
, . . . , s
n
. U svakoj iteraciji spajaju se ona dva podstabla
iz S cijim korenima su pridruzene dve najmanje frekvencije. Stablo
koje ostane poslednje u skupu S je trazeno Hafmanovo stablo cijim
listovima su dodeljeni simboli s
1
, s
2
, . . . , s
n
.
Primer 2.3. Neka su data slova a, b, c, d, e, f sa odgovarajucim
frekvencijama pojavljivanja:
simbol a b c d e f
frekvencija 25 15 8 12 20 6
Odrediti Hafmanovo stablo i na osnovu njega Hafmanov kod. Kodirati
rec beda pomocu tog Hafmanovog koda.
Resenje. Dacemo prikaz rada Hafmanovog algoritma po iteraci-
jama (koraci 2-4). Stabla cemo zvati prema cvoru u korenu. Listovi
su nazvani prema odgovarajucim simbolima.
Prva iteracija
2. Frekvencije u neopadajucem poretku:
stablo f c d b e a
frekvencija 6 8 12 15 20 25
.
3. Dve najmanje frekvencije su 6 i 8 i njima odgovaraju stabla f
i c koja menjamo stablom T
1
cijem korenu je pridruzena frekvencija
6 + 8 = 14.
4. Nove frekvencije su:
stablo T
1
d b e a
frekvencija 14 12 15 20 25
.
28
Druga iteracija
2. Frekvencije u neopadajucem poretku:
stablo d T
1
b e a
frekvencija 12 14 15 20 25
.
3. Dve najmanje frekvencije su 12 i 14 i njima odgovaraju stabla d
i T
1
koja menjamo stablom T
2
cijem korenu je pridruzena frekvencija
12 + 14 = 26.
4. Nove frekvencije su:
stablo T
2
b e a
frekvencija 26 15 20 25
.
Treca iteracija
2. Frekvencije u neopadajucem poretku:
stablo b e a T
2
frekvencija 15 20 25 26
.
3. Dve najmanje frekvencije su 15 i 20 i njima odgovaraju stabla
b i e koja menjamo stablom T
3
cijem korenu je pridruzena frekvencija
15 + 20 = 35.
4. Nove frekvencije su:
stablo T
3
a T
2
frekvencija 35 25 26
.

Cetvrta iteracija
2. Frekvencije u neopadajucem poretku:
stablo a T
2
T
3
frekvencija 25 26 35
.
3. Dve najmanje frekvencije su 25 i 26 i njima odgovaraju stabla a
i T
2
koja menjamo stablom T
4
cijem korenu je pridruzena frekvencija
25 + 26 = 51.
4. Nove frekvencije su:
stablo T
4
T
3
frekvencija 51 35
.
29
d
b a e
f c
T
1
T
2
T
3
T
4
T
5
Slika 2.9
Peta iteracija
2. Frekvencije u neopadajucem poretku:
stablo T
3
T
4
frekvencija 35 51
.
3. Dve najmanje frekvencije su 35 i 51 i njima odgovaraju stabla T
3
i T
4
koja menjamo stablom T
5
cijem korenu je pridruzena frekvencija
35 + 51 = 86.
4. Nove frekvencije su:
stablo T
5
frekvencija 86
.
Stablo T
5
je Hafmanovo stablo, predstavljeno na slici 2.9. U njemu
su sadrzana sva stabla koja su odredena u koraku 3. svake iteracije.
Za svaki simbol mozemo odrediti njegov Hafmanov kod tako sto
pratimo bitove koji su pridruzeni svakoj grani na putu od korena Haf-
manovog stabla do lista u kome se nalazi taj simbol. Time dobijamo
Hafmanov kod za navedene simbole:
a b c d e f
10 00 1111 110 01 1110
Sada je lako kodirati rec beda: 00|01|110|10 odnosno 000111010.

30
Treba primetiti da Hafmanov kod nije uvek jedinstven. Naime,
ukoliko se u neopadajucem nizu frekvencija pojavljuju jednake fre-
kvencije tada se moze promeniti redosled stabala kojima odgovaraju
jednake frekvencije i na taj nacin dobiti neko drugo Hafmanovo stablo,
a samim tim i drugi Hafmanov kod.
2.3.2 Binarna stabla pretrazivanja
Binarna stabla predstavljaju odlicno sredstvo za uredivanje poda-
taka, tako da se bilo koji podatak moze lako pronaci ili pak utvrditi da
nedostaje. Ocigledno je najmanje ekasan nacin pretrazivanja onaj, u
kome podatke ispitujemo jedan po jedan i u kome smo prinudeni da,
ukoliko neki podatak nedostaje, ispitamo sve podatke. Binarna stabla
pretrazivanja nam omogucuju da izbegnemo takav pristup. Jedini po-
treban uslov je da je skup podataka potpuno ureden nekom relacijom
poretka. Na primer, ako ovaj skup sadrzi brojeve on moze biti potpuno
ureden relacijom ili . Ako skup sadrzi reci on je obicno ureden
prema leksikografskom poretku, tj. poretku reci u recniku. Ovakvom
skupu podataka moze se pridruziti binarno stablo pretrazivanja, koje
se denise na sledeci nacin.
Definicija 2.9. Neka je dat skup podataka A = {a
1
, a
2
, . . . , a
n
}
koji je potpuno ureden u odnosu na neku relaciju poretka . Za podatak
a
i
kazemo da je manji od podatka a
j
, tj. podatak a
j
je veci od podatka
a
i
ako i samo ako je a
i
a
j
.
Binarno stablo pretrazivanja je uredeno binarno stablo od n cvorova
u kome je svakom podatku iz A dodeljen jedan cvor, pri cemu za svaki
unurtasnji cvor v vazi:
1
0
svi podaci u levom podstablu cvora v su manji od podatka kome
je dodeljen cvor v;
2
0
svi podaci u desnom podstablu cvora v su veci od podatka kome
je dodeljen cvor v;
Primer 2.4. Na slici 2.10 prikazano je binarno stablo pretrazivanja
za skup podataka A = {30, 20, 45, 35, 25, 50, 10, 15, 40} potpuno ureden
relacijom .
31
10
15
20
25
30
35
40
45
50
Slika 2.10
U korenu stabla nalazi se broj 30. U njegovom levom podstablu su
brojevi manji od 30, a u njegovom desnom podstablu su brojevi veci od
30. Ovu osobinu imaju i svi ostali unutrasnji cvorovi ovog stabla.
Binarna stabla pretrazivanja igraju vrlo vaznu ulogu pri organiza-
ciji i cuvanju podataka u racunaru.

Cuvanje skupa podataka u vidu
stabla omogucava njegovo ekasno pretrazivanje.
U nastavku razmotricemo nacine formiranja binarnog stabla pre-
trazivanja, kao i nacine njegovog koriscenja. Pretpostavimo da skup
podataka cine imena, tj. A = {Lazar, Dejan, Milan, Goran, Nenad,
Marko, Bojan,
-
Dorde, Petar, Dragan}. Pocecemo sa imenom Lazar
koje cemo postaviti za koren stabla. Posto je ime Dejan manje od
imena Lazar (u leksikografskom poretku se nalazi ispred imena La-
zar), ono ce postati njegovo levo dete kao sto je prikazano na slici 2.11
Sledece ime je Milan, koje je vece od imena Lazar, pa ce zato postati
njegovo desno dete (slika 2.12).
Razmotrimo, sada, ime Goran. Posto je ono manje od imena Lazar,
spusticemo se do levog deteta Dejan. Posto je ime Goran manje od
imena Dejan, ono ce postati njegovo levo dete, kao sto je prikazano na
slici 2.13.
U nastavku razmatramo ime Nenad. Posto je ime Nenad vece od
imena Lazar, spusticemo se do desnog deteta, tj. do imena Milan.
Lazar
Dejan
Slika 2.11
Lazar
Dejan Milan
Slika 2.12
32
Lazar
Dejan
Goran
Milan
Slika 2.13
Lazar
Dejan
Goran
Milan
Nenad
Slika 2.14
Kako je ime Nenad vece od imena Milan ono ce postati njegovo desno
dete, kao sto je prikazano na slici 2.14.
Sledece ime je Marko koje je vece od imena Lazar. Zbog toga
se spustamo do desnog deteta Milan. Posto je ime Marko manje od
imena Milan ono ce postati njegovo levo dete (slika 2.15).
Na osnovu onoga sto je do sada receno moze se nazreti obrazac za
formiranje binarnog stabla pretrazivanja. Kada dodemo do cvora sa
nekim imenom, ako je ime koje zelimo da stavimo manje od imena
koje se nalazi u tom cvoru, prelazimo na levo dete, odnosno prelazimo
na desno dete ako je to ime vece od imena na tom cvoru. Ako na cvoru
nema imena, u taj cvor cemo postaviti ime koje zelimo da smestimo
na stablo.
Sada cemo kompletirati stablo koriscenjem ovog postupka. Sledece
ime je Bojan. Ime Bojan je manje od imena Lazar, pa prelazimo na
levo dete, tj. ime Dejan. Ime Bojan je manje od imena Dejan, pa
prelazimo na njegovo levo dete, tj. ime Goran. Ime Bojan je manje
od imena Goran, pa prelazimo na njegovo levo dete. Posto na njemu ne
postoji ime , ime Bojan postavljamo za levo dete, kao sto je prikazano
na slici 2.16.
Lazar
Dejan
Marko Goran
Milan
Nenad
Slika 2.15
Lazar
Dejan
Marko Goran
Milan
Nenad
Bojan
Slika 2.16
33
Lazar
-
Dorde
Dejan
Marko Goran
Milan
Nenad
Bojan
Slika 2.17
Lazar
-
Dorde
Dejan
Petar
Marko Goran
Milan
Nenad
Bojan
Slika 2.18
Naredno ime koje zelimo da postavimo u stablo je
-
Dorde. Ime
-
Dorde je manje od imena Lazar, tako da idemo na njegovo levo dete,
tj. na ime Dejan. Ime
-
Dorde je vece od imena Dejan, pa idemo na
njegovo desno date. Posto tamo ne postoji ime,
-
Dorde postaje desno
dete imena Dejan (slika 2.17).
Sledece ime koje zelimo da skladistimo je Petar. Posto je ono vece
od imena Lazar, prelazimo na desno dete, tj. na ime Milan. Posto je
ime Petar vece od imena Milan, idemo na desno dete, tj. ime Nenad.
Kako je ime Petar vece i od imena Nenad, idemo ponovo na desno
dete, gde ne postoji ime, pa ce zato ime Petar postati desno dete
imena Nenad, kao sto je prikazano na slici 2.18.
Na kraju ostaje da postavimo ime Dragan na svoje mesto. Ime
Dragan je manje od imena Lazar, pa prelazimo na njegovo levo dete,
tj. na ime Dejan. Kako je ime Dragan vece od imena Dejan, idemo
na desno dete, tj na ime
-
Dorde. Kako je ime Dragan manje od imena
-
Dorde, idemo na levo dete, gde ne postoji ime. Zato ime Dragan
postaje levo dete imena
-
Dorde (slika 2.19).
Lazar
-
Dorde
Dragan
Dejan
Petar
Marko Goran
Milan
Nenad
Bojan
Slika 2.19
34
Sada cemo dati algoritam za ubacivanje imena u binarno stablo
pretrazivanja, koji ako se izuzme postavljanje imena u koren, daje
binarno stablo pretrazivanja.
Algoritam ubaci element
1. Pocnite od korenskog cvora.
2. Ako je element manji od objekta cvora, predite na levo dete.
3. Ako je element veci od objekta cvora, predite na desno dete.
4. Ponovite korake 2 i 3 dok ne naidete na cvor koji nije denisan.
5. Ako cvor nije denisan, denisite cvor i ubacite elemenat.
Kada smo opisali metodu za pravljenje binarnog stabla pretrazivanja,
lako mozemo da opisemo postupak trazenja nekog elementa. U osnovi
se koristi isti postupak, sa tom razlikom sto pored provere da li je ime
manje ili vece od onog u cvoru, proveravamo da li su ona ista. Ako
jesu postupak je zavrsen. Ako nisu, nastavljamo istim postupkom kao
u prethodnom slucaju. Ako stignemo do cvora koji nije denisan, za-
kljucujemo da se ime ne nalazi u stablu. U nastavku je dat algoritam
za trazenje imena.
Algoritam trazi element
1. Pocnite od korenskog cvora.
2. Ako je element manji od objekta cvora, predite na levo dete.
3. Ako je element veci od objekta cvora, predite na desno dete.
4. Ako je element jednak objektu cvora, ime je pronadeno, izvrsite
odgovarajucu akciju i zavrsite.
5. Ponovite korake 2 i 3 dok ne naidete na cvor koji nije denisan.
6. Ako ste stigli do cvora koji nije denisan i ime se ne nalazi u
stablu, izvrsite odgovarajucu akciju i zavrsite.
Ocigledno je da put pretrazivanja ne moze biti duzi od visine sta-
bla.
Na kraju cemo opisati i metodu kako da iz stabla obrisemo cvor.
Metoda je sazeta u sledecem algoritmu.
Algoritam obrisi cvor v
0
1. Ako cvor v
0
nema dece uklonite ga.
2. Ako cvor v
0
ima samo jedno dete, uklonite cvor v
0
i zamenite
ga njegovim detetom.
35
a
b
c
d
e f
g
h
r i
Slika 2.20
3. Ako cvor v
0
ima dvoje dece, pronadite desno dete v
1
cvora v
0
, a
zatim pronadite levo dete (ako postoji) cvora v
1
. Nastavite da uzimate
levo dete svakog sledeceg cvora, dok ne dodete do cvora v koji nema
levo dete. Zamenite cvor v
0
sa v i neka desno dete cvora v postane
levo dete roditelja cvora v. Ako levo dete cvora v
1
ne postoji, zamenite
cvor v
0
cvorom v
1
.
Primer 2.5. Posmatrajmo stablo dato na slici 2.20.
Ako uklonimo cvor r, dobicemo stablo dato na slici 2.21. Ako
uklonimo cvor c, dobicemo stablo dato na slici 2.22.
Ako u polaznom stablu obrisemo cvor b, preci cemo na desno dete
f, a zatim na levo dete c. Posto cvor c nema levo dete, on ce predsta-
vljati zamenu koju trazimo, pa cemo cvor b zameniti cvorom c, a cvor
a
b
c
d
e f
g
h
i
Slika 2.21
a
b
d
e f
g
h
r i
Slika 2.22
36
a
c
d
e f
g
h
r i
Slika 2.23
a
b
c
d
e f
g
r
i
Slika 2.24
d ce postati levi cvor cvora f. Tako cemo dobiti stablo prikazano na
slici 2.23.
Da smo umesto b uklonili cvor h, isli bismo desno do cvora i,
pa posto ovaj cvor nema levo dete, on ce predstavljati zamenu koju
trazimo.

Cvor h zamenjujemo cvorom i i dobijamo stablo prikazano
na slici 2.24.
2.3.3 Prikazivanje algebarskih formula

Cesto se u racunarstvu jedna algebarska formula predstavlja u


obliku striktnog uredenog binarnog stabla, koje se formira po sledecim
principima. Binarne operacije formule se prikazuju kao unutrasnji
cvorovi ovog stabla, dok njegovim listovima odgovaraju promenljive
i konstante formule. Za svaki unutrasnji cvor vazi da njegovo levo
podstablo prikazuje levu podformulu, a njegovo desno podstablo pri-
kazuje desnu podformulu nad kojima se vrsi operacija dodeljena ovom
cvoru. Zbog toga cvorovi operacija manjeg prioriteta imaju manji
nivo, a cvorovi operacija veceg prioriteta veci nivo. Tako ce opera-
cija najmanjeg prioriteta, tj. ona koja se poslednja izvrsava prilikom
izracunavanja formule, odgovarati korenu binarnog stabla. Da bi sta-
blo koje se dodeljuje algebarskoj formuli bilo striktno, potrebno je da
ona sadrzi samo binarne operacije.
Primer 2.6. Predstaviti algebarsku formulu 6 (a + 4) + (b c) :
(3 + d) u obliku striktnog uredenog binarnog stabla.
Resenje. Ovoj algebarskoj formuli odgovara uredeno binarno sta-
blo prikazano na slici 2.25.
37
*
a b c d
6
3 4
:
+
+
+
Slika 2.25
Listovima stabla odgovaraju promenljive i konstante algebarske
formule: 6, a, 4, b, c, 3, d, dok su unutrasnjim cvorovima dodeljeni znaci
operacija formule. Korenu stabla odgovara operacija + koja je naj-
nizeg prioriteta. Levo podstablo korena odgovara podformuli
6(a+4), a desno podstablo korena odgovara podformuli (bc) : (3+d)
(slika 2.26). Korenu levog podstabla odgovara operacija , a korenu
desnog podstabla operacija :. Unutrasnji cvorovi kojima odgovaraju
ove operacije su nivoa 1, jer su ove operacije nizeg nivoa u odnosu na
operacije +, i + koje odgovaraju unutrasnjim cvorovima nivoa 2.
Jedna algebarska formula se moze rekonstruisati na osnovu svog
binarnog stabla koriscenjem nekog od algoritama za obilazak svih
cvorova binarnog stabla. Postoje tri standardna nacina obilaska: KLD,
LKD i LDK. Slova K,L,D su skracenice od reci koren, levo i desno
podstablo, pa nazivi ovih obilazaka oznacavaju redoslede po kojima
se oni vrse. Na primer, kod KLD obilaska prvo obilazimo koren, a
zatim celo njegovo levo podstablo i na kraju celo njegovo desno pod-
stablo, pri cemu za oba ova podstabla koristimo isti KLD princip
(slika 2.26).
*
a b c d
6
3 4
:
+
+
Slika 2.26
38
Posmatrajmo binarno stablo prikazano na slici 2.25.
Pri KLDobilasku ovog stabla, gde se prvo obilazi koren, zatim levo
podstablo, pa desno podstablo, redosled obilaska cvorova je sledeci:
+ 6 + a 4 : b c + 3 d
Pri LKD obilasku ovog stabla, gde se prvo obilazi levo podstablo,
zatim koren, pa desno podstablo, redosled obilazaka cvorova je sledeci:
6 a + 4 + b c : 3 + d
Pri LDK obilasku ovog stabla, gde se prvo obilazi levo, zatim
desno podstablo, pa koren, redosled obilaska cvorova je sledeci:
6 a 4 + b c 3 d + : +
Redosled cvorova dobijen KLD obilaskom pretstavlja algebarsku
formulu napisanu u tzv. preksnoj notaciji. U njoj se svaka operacija
pise pre svojih operanada (na primer +a4). Redosled cvorova dobijen
LDK obilaskom pretstavlja postksnu notaciju algebarske formule u
kojoj se svaka operacija pise posle svojih operanada (na primer a4+).
Primetimo da redosled cvorova 6 a + 4 + b c : 3 + d, dobi-
jen LKD obilaskom, odgovara uobicajenom citanju (u tzv. inksnoj
notaciji) formule 6 (a + 4) + (b c) : (3 + d), denisane stablom sa
slike 2.25, ali bez njenih zagrada. Zbog toga ovaj obilazak ne odreduje
formulu jednoznacno.
Iz primera 2.6 sledi da KLD i LDK obilasci cvorova stabala jedne
algebarske formule denisu ovu formulu (u preksnoj i postksnoj
notaciji) na jednoznacan nacin, dok LKD obilazak zahteva dodatak
zagrada da bi algebarska formula bila tacno odredena. Zbog toga
KLD i LDK obilasci nalaze veci primenu u racunarstvu.
2.4 Stabla i pretrage grafova
U mnogim grafovskim algoritmima zahteva se obilazak (ili pretraga
ili prosledivanje) pre svega cvorova (ali i grana) grafa po nekom utvrde-
nom principu. Na primer, polazeci od proizvoljnog cvora, mozemo se
upustiti prvo u obilazak njegovih suseda, pa zatim suseda tih suseda
39
itd. dok ne obidemo sve cvorove grafa. U jednom takvom procesu,
stalno cemo imati da smo jedan deo cvorova vec obisli, a da se u
narednom koraku vrsi izbor sledeceg kandidata za obilazak. Posto je
taj izbor uglavnom viseznacan, moguce je uvesti neka pravila kojima
se regulise prioritet u izboru potencijalnih kandidata za naredni korak
u obilasku. U tom kontekstu navescemo dve vrste pretraga grafa:
-pretragu u dubinu;
-pretragu u sirinu.
I jednom i drugom pretragom istovremeno se konstruise razapi-
njuce stablo grafa koje se naziva stablo pretrage u dubinu odnosno
stablo pretrage u sirinu.
Pocecemo sa metodom pretrage u dubinu. U njoj za dati graf
G biramo bilo koji cvor v
0
grafa i postavljamo ga za koren stabla
pretrage T. Zatim pokusavamo da obrazujemo sto je moguce duzi
put u stablu T. Kada put stigne do kraja, obrazujemo list, vracamo
se nazad do roditelja lista i pokusavamo da formiramo novi put. Na
roditelja se vracamo, samo kada isprobamo sve moguce puteve koji
krecu od njegovog deteta. To znaci, u kontekstu stabla koje pravimo,
da pokusavamo da stignemo do najdubljih ili najvecih mogucih nivoa.
Nakon izbora cvora v
0
za koren stabla, biramo cvor susedan korenu
i obrazujemo granu stabla. Zatim biramo cvor koji je susedan pret-
hodno izabranom cvoru i obrazujemo novu granu. Dok izvrsavamo
ovaj postupak, svaki izabrani cvor obelezavamo kako bi se koristio
samo jednom. Ako od bilo kog cvora v izaberemo neki drugi cvor w
i pritom utvrdimo da je on vec dodat stablu, tada granu (v, w) ne
mozemo dodati stablu T. Takve grane nazivamo povratnim granama.
Pre nego sto granu proglasimo povratnom, proveravamo da cvor w nije
roditelj cvora v, posto u tom slucaju grana (v, w) vec postoji u stablu.
Dakle, izbegavamo da razmatramo roditelja cvora v kada biramo cvor
w za moguci novi cvor. Ako je grana (v, w) povratna grana, ostajemo
na cvoru v i biramo susedan cvor ako je to moguce. Po deniciji, svaka
grana grafa mora da predstavlja ili granu stabla ili povratnu granu.
U algoritmu, skup grana stabla nazvacemo GRANE STABLA, a
skup povratnih grana POVRATNE GRANE. Pretpostavicemo da su
na pocetku svi cvorovi obelezeni oznakom n (skracenica od reci nov), i
da nakon sto ih upotrebimo njihovu oznaku menjamo u u (skracenica
od reci upotrebljen).
40
Algoritam pretrage u dubinu
1. Oznacite svaki od cvorova grafa G simbolom n (nov).
2. Izaberite proizvoljan cvor v
0
grafa G i postavite ga za koren
stabla.
3. Promenite oznaku cvora v
0
iz n u u (upotrebljen) i neka je
v = v
0
.
4. Ako postoji cvor w susedan cvoru v koji nije izabran preci na
korak 5. Ako su svi cvorovi susedni cvoru v vec izabrani preci na korak
6.
5. Ako cvor w ima oznaku n, dodajte granu (v, w) skupu GRANE
STABLA, promenite oznaku cvora w u u, neka je v = w, i ponovite
korak 4.
Ako cvor w ima oznaku u i ako w nije roditelj cvora v, dodajte
granu (v, w) skupu POVRATNE GRANE i ponovite kokak 4.
6. Ako je v = v
0
, neka je v =roditelj(v) i ponovite korak 4.
Ako je v = v
0
zavrsite postupak.
Uocimo da, dok god bilo koji cvor v ima susedan i neiskoriscen
cvor w, produzavacemo put od cvora v ka w. Kada vise ne mozemo
da idemo dalje, prelazimo na korak 6 i vracamo se na roditelja cvora
v.
Primer 2.7. Odredimo razapinjuce stablo pretrage u dubinu grafa
sa slike 2.27.
v
0
v
1
v
2
v
3
v
4
v
5
v
6
Slika 2.27
41
v
0
v
1
v
2
v
3
v
4
v
5
v
6
(n)
(n)
(n) (n)
(n)
(u)
(u)
(a)
v
0
v
1
v
2
v
3
v
4
v
5
v
6
(u)
(u)
(u) (u)
(u)
(u)
(u)
(b)
Slika 2.28
Resenje. Biramo na proizvoljan nacin cvor v
0
za koren. Menjamo
oznaku cvora v
0
iz n u u. Posto je cvor v
1
susedan cvoru v
0
i posto cvor
v
1
ima oznaku n, dodajemo granu (v
0
, v
1
) skupu GRANE STABLA i
menjamo oznaku cvora v
1
u u (slika 2.28a).
Sa cvora v
1
prelazimo na cvor v
2
posto je on susedan cvoru v
1
.

Cvor v
2
ima oznaku n, pa dodajemo granu (v
1
, v
2
) skupu GRANE
STABLA i menjamo oznaku cvora v
2
u u.
Sada cemo izabrati cvor koji je susedan cvoru v
2
.

Cvor v
3
je su-
sedan cvoru v
2
i ima oznaku n. Zato granu (v
2
, v
3
) dodajemo skupu
GRANE STABLA i menjamo oznaku cvora v
3
u u.

Cvor v
3
je susedan cvoru v
4
koji ima oznaku n. Zbog toga granu
(v
3
, v
4
) dodajemo skupu GRANE STABLA i menjamo oznaku cvora
v
4
u u.

Cvor v
4
je susedan cvoru v
5
koji ima oznaku n. Zbog toga granu
(v
4
, v
5
) dodajemo skupu GRANE STABLA i menjamo oznaku cvora
v
5
u u.

Cvor v
5
je susedan cvoru v
6
koji ima oznaku n. Zbog toga granu
(v
5
, v
6
) dodajemo skupu GRANE STABLA i menjamo oznaku cvora
v
6
u u (slika 2.28b).
Posle cvora v
6
biramo cvor v
1
, posto je on susedan cvoru v
6
. Medu-
tim, cvor v
1
vec ima oznaku u. Zato granu (v
6
, v
1
) dodajemo skupu
POVRATNE GRANE.
Posto ne postoji vise nijedan cvor, osim njegovog roditelja, koji je
susedan cvoru v
6
, vracamo se na cvor v
5
. Ali, posto ni tamo ne postoji
nijedan cvor susedan cvoru v
5
vracamo se na cvor v
4
. Jedini cvor koji
42
je susedan cvoru v
4
, a da vec nije izabran je cvor v
0
, koji ima oznaku
u. Zato granu (v
4
, v
0
) dodajemo skupu POVRATNE GRANE.
Zatim se vracamo u cvor v
3
, ali posto tamo ne postoji nijedan cvor
susedan cvoru v
3
, vracamo se na cvor v
2
. Jedini cvor koji je susedan
cvoru v
2
, a do sada nije izabran je cvor v
0
koji ima oznaku u. Zbog
toga granu (v
2
, v
0
) dodajemo skupu POVRATNE GRANE.
Nije preostao vise nijedan cvor za proveru iz v
2
, pa se vracamo u
cvor v
1
. Medutim ni u cvoru v
1
ne postoje cvorovi koje mozemo da
proverimo, tako da se vracamo u cvor v
0
. Ni u cvoru v
0
nije preostao
nijedan cvor za proveru, pa smo tako postupak priveli kraju.
Dobijeno stablo pretrage u dubinu je stablo sa slike 2.28b, pri cemu
je
GRANE STABLA = {(v
0
, v
1
), (v
1
, v
2
), (v
2
, v
3
), (v
3
, v
4
), (v
4
, v
5
), (v
5
, v
6
)}
i
POVRATNE GRANE = {(v
6
, v
1
), (v
4
, v
0
), (v
2
, v
0
), (v
1
, v
0
)}.

Predimo sada na metodu pretrage u sirinu. U njoj, ako je dat


graf G, biramo bilo koji cvor v
0
grafa i postavljamo ga za koren stabla
pretrage T. Za svaki od cvorova v grafa G, susedan cvoru v
0
, dodajemo
cvor v i granu (v, v
0
) stablu T. Ovi cvorovi predstavljaju cvorove nivoa
1. Sada cemo uzeti svaki od cvorova v
i
nivoa 1 i za svaki od cvorova v
j
grafa G, koji je susedan cvoru v
i
, a ranije nije izabran, dodacemo cvor
v
j
i granu (v
i
, v
j
) stablu T.

Cvorovi koje smo dobili u ovom koraku,
predstavljaju cvorove nivoa 2. Postupak ponavljamo sve dok stablu
ne dodelimo sve cvorove grafa G. Graf T konstruisan na opisani nacin
predstavlja razapinjuce stablo grafa G.
Prilikom pravljenja algoritma, potrebno je da znamo kada smo
cvor i granu dodali stablu da bismo stablo mogli da opisemo i kako
bismo mogli da eliminisemo mogucnost da neki cvor upotrebimo vise
puta. Takode, treba da znamo na koji smo nivo dodali cvor, posto je
ekasnije da, prilikom odredivanja listova na sledecem nivou, koristimo
samo cvorove na prethodnom nivou. Pored toga, neophodno je da
smo u stanju da cvorove biramo pojedinacno kako bismo mogli da
odredimo nove cvorove koje cemo dodati stablu. Za realizaciju ovog
43
zadatka mogu se uvesti prioriteti za cvorove koji nisu izabrani, o cemu
ovde necemo detaljnije govoriti. U nastavku cemo usvojiti da V i E
oznacavaju skup cvorova i skup grana grafa G, a V
T
i E
T
skup cvorova
i skup grana stabla pretrage T. Kada cvor v dodamo stablu, n(v) ce
oznacavati nivo na kome je cvor dodat.
Algoritam pretrage u sirinu
1. Izaberite proizvoljan cvor v
0
grafa G. Neka v
0
V
T
i n(v
0
) = 0.
2. Za svaki cvor v V \ V
T
, takav da je cvor v susedan cvoru v
0
,
neka v V
T
, (v
0
, v) E
T
i n(v) = 1.
3. Neka je i = 1.
4. Izaberite v
j
V
T
, tako da je n(v
j
) = i.
5. Izaberite v V \ V
T
. Ako je cvor v susedan cvoru v
j
, neka je
v V
T
, (v
j
, v) E
T
i n(v) = i + 1.
6. Ponavljajte korak 5. dok ne ispitate sve elemente skupa V \V
T
.
(Uocite da se skup V \ V
T
stalno menja.)
7. Ponavljajte korake 4, 5 i 6 dok ne izaberete sve cvorove v
j
za
koje je n(v
j
) = i.
8. Neka je i = i + 1.
9. Ponavljajte korake 4-8 sve dok ne bude V = V
T
.
Primer 2.8. Odredimo razapinjajuce stablo pretrage u sirinu grafa
sa slike 2.27.
Resenje. Pretpostavimo da smo cvor v
0
izabrali za prvi cvor. Tada
je n(v
0
) = 0 i v
0
V
T
. Posto je cvor v
1
susedan cvoru v
0
, neka
v
1
V
T
, (v
0
, v
1
) E
T
i n(v
1
) = 1. Takode, cvor v
2
je susedan cvoru
v
0
, tako da v
2
V
T
, (v
0
, v
2
) E
T
i n(v
2
) = 1. Konacno, cvor v
4
je
susedan cvoru v
0
, tako da v
4
V
T
, (v
0
, v
4
) E
T
i n(v
4
) = 1. Na taj
nacin smo dobili stablo prikazano na slici 2.29a.
Razmotrimo sada cvorove v za koje je n(v) = 1. Pocnimo sa
cvorom v
1
i odredimo cvorove koji su susedni cvoru v
1
, a do sada
nisu iskorisceni. Posto je cvor v
6
susedan cvoru v
1
, neka v
6
V
T
,
(v
1
, v
6
) E
T
i n(v
6
) = 2. Ne postoji vise nijedan neupotrebljen cvor,
susedan cvoru v
1
, tako da prelazimo na cvor v
2
. Posto je cvor v
3
susedan cvoru v
2
, neka je v
3
V
T
, (v
2
, v
3
) E
T
i n(v
3
) = 2. Kako
ne postoji nijedan neupotrebljen cvor, susedan cvoru v
2
, prelazimo na
44
v
0
v
1
v
2
v
3
v
4
v
5
v
6
(a)
v
0
v
1
v
2
v
3
v
4
v
5
v
6
(b)
Slika 2.29
cvor v
4
.

Cvor v
4
je susedan cvoru v
5
, pa je v
5
V
T
, (v
4
, v
5
) E
T
i n(v
5
) = 2. Posto smo upotrebili sve cvorove, postupak smo priveli
kraju i dobili stablo prikazano na slici 2.29b.
Da bismo uocili razliku izmedu stabala dobijenih pretragom u
dubinu, odnosno u sirinu, posmatrajmo pretragu kompletnog grafa.
Tada se redom dobijaju stabla od kojih je prvo izomorfno putu, a
drugo zvezdi. Dakle, imamo dve ekstremne situacije u pogledu struk-
ture. Ostala razapinjuca stabla kompletnog grafa mogla bi se dobiti
nekim kombinovanim strategijama.
45
Glava 3
Teorija grafova nastavak
3.1 Planarni grafovi
Planarni grafovi su oni grafovi koji se mogu nacrtati u ravni tako
da im se grane ne seku.
Ako je planaran graf predstavljen na opisani nacin u ravni, on deli
ravan na vise konacnih zatvorenih oblasti i jednu beskonacnu oblast.
Svaka konacna oblast naziva se okce ili celija. Ako je graf povezan,
tada granicna linija okca predstavlja konturu grafa, a ako uz to ne
sadrzi mostove niti artikulacione cvorove, tada je i granicna linija bes-
konacne oblasti kontura grafa.
Grafovi K
4
, K
5
e i K
3,3
e su primeri planarnih grafova (slika
3.1).
Planarni graf se moze pretstaviti u ravni tako da svaka njegova
grana bude predstavljena jednom duzi. Za planarne grafove sa slike
3.1 jedno takvo predstavljanje dato je na slici 3.2.
46
Svi grafovi sa 4 i manje cvorova su planarni grafovi. To sledi
iz cinjenice da je kompletan graf K
4
planaran i da je svaki podgraf
planarnog grafa takode planaran graf. Jedini graf sa 5 cvorova koji
nije planaran je kompletan graf K
5
(teorema 3.1.). Naime, graf K
5
e
je planaran (slika 3.1), pa su i svi ostali grafovi sa 5 cvorova kao njegovi
razapinjuci podgrafovi planarni.
Najprostiji grafovi koji nisu planarni su grafovi K
5
i K
3,3
.
Teorema 3.1. Grafovi K
5
i K
3,3
nisu planarni.
Dokaz. Pretpostavimo da je K
5
planaran graf. Tada se graf K
5
moze nacrtati u ravni tako da se nikoje dve njegove grane ne seku.
Neka je V (K
5
) = {v
1
, v
2
, v
3
, v
4
, v
5
}.
Grane v
1
v
2
, v
2
v
3
i v
3
v
1
obrazuju konturu C (slika 3.3). Konruta
C deli ravan na dve oblasti: unutrasnju oblast (oznacenu sa intC) i
spoljasnju oblast (oznacenu sa extC).

Cvor v
4
lezi u jednoj od oblasti
intC ili extC, recimo u intC. Tada i grane v
1
v
4
, v
2
v
4
i v
3
v
4
takode
leze u intC. Na taj nacin je oblast intC podeljena na tri disjunktne
47
oblasti S
1
, S
2
i S
3
. Sa S
i
(i = 1, 2, 3) je oznacena oblast koja ne sadrzi
cvor v
i
, a sa C
i
njen rub.

Cvor v
5
lezi u jednoj od oblasti S
1
, S
2
, S
3
i extC. Ako v
5
S
i
,
tada v
i
lezi u spoljasnosti krive C
i
. Tada grana v
5
v
i
sece konturu C
i
,
a time i neku od grana grafa G. Slicno, ako v
5
extC, grana v
5
v
4
sece konturu C, tj. jednu od grana v
1
v
2
, v
2
v
3
, v
3
v
1
. U oba slucaja to
je kontradikcija sa pretpostavkom da je K
5
planaran graf.
Na slican nacin moze se dokazati da graf K
3,3
nije planaran.
Kako je svaki podgraf planarnog grafa takode planaran, graf koji
sadrzi K
5
ili K
3,3
kao podgraf, nije planaran. Jasno je da ni jedan
potpuni graf sa vise od cetiri cvora nije planaran.
Dodavanjem (umetanjem) novih cvorova na grane grafa G dobija
se novi graf koji se zove potpodela grafa G.
U svakoj potpodeli neke od grana grafa G zamenjene su putevima.
Razlicitim granama odgovaraju disjunktni putevi.
Na slici 3.4 prikazane su potpodele grafa K
5
odnosno grafa K
3,3
.
Potpodele grafova K
5
i K
3,3
nisu planarni grafovi. Dokaz ovog
tvrdenja je slican dokazu teoreme 3.1. Zbog toga svaki planarni graf ne
sadrzi potpodelu grafa K
5
ili potpodelu grafa K
3,3
, kao podgraf. Vazi,
medutim i obrnuto. Svaki graf koji ne sadrzi ni potpodelu grafa K
5
ni potpodelu grafa K
3,3
je planaran. Ovaj rezultat su dobili nezavisno
jedan od drugog ruski matematicar Pontrjagin 1929. (nepublikovan
dokaz) i poljski matematicar Kuratovski 1930. godine.
Sledeca teorema poznata je kao teorema Pontrjagin-Kuratovskog i
predstavlja jednu od najznacajnijih teorema u teoriji grafova.
Teorema 3.2. Graf G je planaran ako i samo ako ne sadrzi, kao
podgraf, ni potpodelu grafa K
5
ni potpodelu grafa K
3,3
.
48
Na osnovu teoreme Pontrjagin-Kuratovskog, Petersonov graf nije
planaran. Nije tesko ustanoviti da on sadrzi kao podgraf potpodelu
grafa K
3,3
(slika 3.5). Beli cvorovi su u jednoj klasi, srarani cvorovi
u drugoj, a crni cvorovi su dobijeni umetanjem na grane grafa K
3,3
.
Punim linijama su istaknute grane potpodele. Treba naglasiti da Pe-
tersonov graf ne sadrzi potpodelu grafa K
5
, jer je on 3-regularan graf
i ne sadrzi cvorove stepena 4.
Primer planarnog grafa je graf pridruzen mrezi puteva, ako se is-
kljuci mogucnost postojanja nadvoznjaka i raznih saobracajnih petlji.
Postoje i tehnicke primene u kojima se zahteva da graf koji od-
govara datom tehnickom sistemu bude planaran. Najnovija tehnika
je tehnika stampanih kola. Potrebne veze se ostvaruju pomocu tan-
kog sloja providnog materijala koji je nanesen na neprovidnu plocu.
Ukrsta- nje pojedinih veza ovde nije dozvoljeno jer bi dovelo do nezeljenog
kratkog spoja. Zbog toga je od interesa raspoznati da li je dati graf
elektricnih veza planaran. Na slican nacin se planarni grafovi poja-
vljuju i u tehnici integrisanih kola.
3.1.1 Ojlerova teorema
Medu najstarije teoreme teorije grafova spada i sledeca Ojlerova
teorema za planarne grafove.
Teorema 3.3. Povezan planaran graf sa n cvorova i m grana deli
ravan na f = mn + 2 oblasti.
Dokaz. Dokaz cemo sprovesti matematickom indukcijom po broju
grana. Minimalan broj grana koje sadrzi povezan graf sa n cvorova
je m = n 1. Graf tada predstavlja stablo. Stablo ne ogranicava ni
49
jednu konacnu oblast, pa je f = 1. Dakle, Ojlerova teorema vazi za
m = n 1.
Neka je G povezan, planaran graf sa m grana i neka je f broj
oblasti za G (m > n 1). Tada graf G sadrzi bar jednu konturu
C. Pretpostavimo da Ojlerova formula vazi za grafove sa m1 grana.
Posmatrajmo proizvoljnu granu e koja pripada konturi C. Kako e nije
most u G, graf G e je povezan planaran graf sa n cvorova, m 1
grana i f 1 oblasti (uklanjanjem grane e od dve oblasti koje razdvaja
nastaje jedna). Po induktivnoj pretpostavci za graf Ge vazi Ojlerova
formula, tj. f 1 = m 1 n + 2. Odavde sledi da za graf G sa m
grana vazi f = mn + 2, sto je i trebalo dokazati.
Brojne su posledice Ojlerove teoreme. Navedimo nekoliko njih.
Teorema 3.4. U povezanom, planarnom grafu postoji bar jedan
cvor stepena manjeg od 6.
Dokaz. Pretpostavicemo suprotno, da takav cvor ne postoji. Tada
su svi cvorovi grafa stepena veceg ili jednakog 6. Zbog toga je
2m = d
1
+ d
2
+ + d
n
6 + 6 + + 6
. .
n
= 6n,
tj. n
1
3
m. Svaka oblast O
i
(i = 1, 2, . . . , f) koju odreduje graf u
ravni ogranicena je sa najmanje tri grane, dok se svaka grana po dva
puta pojavljuje kao granica (za istu oblast ako je most, odnosno za
dve razlicite oblasti u suprotnom slucaju). Stoga je
2m =| O
1
| + | O
2
| + + | O
f
| 3 + 3 + + 3
. .
f
= 3f ,
tj. f
2
3
m.
Na osnovu Ojlerove formule je
2 = f m+ n
2
3
mm+
1
3
m = 0 .
Dobijena kontradikcija potvrduje tacnost teoreme.
50
Teorema 3.5. Graf K
3,3
nije planaran graf.
Dokaz. Pretpostavimo da je graf K
3,3
planaran. Tada je n = 6,
m = 9 i f = m n + 2 = 5. Svaka oblast O
i
(i = 1, 2, . . . , f) koju
odreduje ovaj graf u ravni odredena je sa najmanje cetiri grane. Na-
ime, nikoja tri cvora ne obrazuju sa odgovarajucim granama trougao.
Zbog toga je
2m =| O
1
| + | O
2
| + + | O
f
| 4 + 4 + + 4
. .
f
= 4f ,
tj. m 2f. Sledi 9 10, sto je nemoguce.
Na slican nacin, koriscenjem Ojlerove teoreme, dokazuje se da graf
K
5
nije planaran.
Planaran graf G je maksimalan ako dodavanjem ma koje nove
grane prestaje da bude planaran. Drugim recima graf G + vw je
neplanaran za svaki par cvorova v, w V (G), pri cemu (v, w) /
E(G). Posledica toga je da su granice svih oblasti maksimalnog grafa
(ukljucujuci i beskonacnu) trouglovi.
Teorema 3.6. Ako je G maksimalan planaran graf sa n (n 3)
cvorova i m grana, tada je m = 3n 6.
Dokaz. Oznacimo sa f
i
broj oblasti ogranicenih sa i grana (i 3).
Kako je G maksimalan planaran graf, sve oblasti su ogranicene sa 3
grane, pa je f = f
3
. Svaka grana je granica za dve oblasti, pa sledi
3f = 3f
3
= 2m, tj. f =
2
3
m. Kada se to uvrsti u Ojlerovu formulu
dobija se
2
3
m = mn + 2, tj. m = 3n 6.
Direktna posledica ove teoreme je sledece tvrdenje.
Posledica 3.1 Za svaki planaran graf sa n (n 3) cvorova i m
grana vazi nejednakost m 3n 6.
51
3.2 Bojenje grafova
Graf se boji na taj nacin sto se svakom cvoru pridruzuje neka boja,
tj. svaki cvor se boji jednom bojom. Graf je pravilno obojen ako su
svaka dva susedna cvora obojena razlicitim bojama. Pravilno bojenje
grafa G u kojem je upotrebljeno k boja zove se, jednostavno, k-bojenje.
Xromatski broj (G) grafa G jednak je najmanjem broju boja po-
trebnih da se graf pravilno oboji. Ako je (G) = k, kazemo da je graf
G k-hromatski, a ako je (G) k, kazemo da je graf G k-obojiv.
Na primer, kompletan graf K
n
je n-hromatski, put P
n
(n 2)
je 2-hromatski, a kontura C
n
je 2-hromatski ili 3-hromatski graf u
zavisnosti od toga da li je n paran ili neparan broj. Primetimo da
ako je G bipartitan graf, tada je G 2-obojiv graf. Ako graf G ne
sadrzi nijednu granu, tj. ako se sastoji samo od izolovanih cvorova, sve
cvorove mozemo obojiti istom bojom i njegov hromatski broj jednak
je 1.
Skup svih cvorova grafa obojenih istom bojom naziva se hromatska
klasa. Razumljivo nikoja dva cvora iste hromatske klase nisu susedna.
Za takve cvorove kazemo da su nezavisni. Otuda je hromatski broj
grafa G jednak minimalnom broju disjunktnih podskupova, hromat-
skih klasa, na koje se skup cvorova V (G) moze razbiti, tako da su
cvorovi svake klase nezavisni.
Sledece dve osobine su direktne posledice denicije hromatskog
broja.
Teorema 3.7. Ako je H podgraf grafa G, tada je (H) (G).
Teorema 3.8. Ako je G graf sa komponentama G
1
, G
2
, ..., G
s
(s
1), tada je
(G) = max
1is
(G
i
).
Ako graf G sadrzi, kao podgraf, kompletan graf sa k cvorova, tada
je (G) k. U skupu kompletnih podgrafova grafa G postoje oni
koji imaju najvise cvorova. Takvi kompletni podgrafovi nazivaju se
klike grafa. Za graf G denise se velicina K(G) koja je jednaka broju
cvorova proizvoljne klike grafa. Ocigledno je
(G) K(G).
52
Medutim, nikakva druga veza ne postoji izmedu (G) i K(G). Za
proizvoljne unapred zadate prirodne brojeve s i t (s t) postoji graf
za koji je (G) = s i K(G) = t. Specijalno, postoje grafovi bez
trouglova (K(G) = 2) sa proizvoljno velikim hromatskim brojem.
Neke druge ocene hromatskog broja grafa mozemo dobiti posma-
tranjem stepena cvorova grafa d
1
, d
2
, ..., d
n
. Neka je (G) maksimalan
stepen grafa G. Tada vazi sledeca teorema.
Teorema 3.9. Za hromatski broj (G) povezanog grafa G vazi
(3.1) (G) (G) + 1 .
Dokaz. I ovo tvrdenje dokazacemo indukcijom po broju cvorova n.
Za n = 1 je (G) = 0 i (G) = 1.
Pretpostavimo da tvrdenje vazi za svaki graf sa manje od n cvorova
i posmatrajmo graf G sa n cvorova. Neka je G

= G v, v V (G).
Tada je prema indukcijskoj pretpostavci (G

) (G

) +1. To znaci
da se cvorovi grafa G

mogu obojiti sa (G

)+1 boja. Kako je (G

)
(G), postoji i ((G) + 1)-bojenje grafa G

. Neka je (G) + 1 =
k. Kako je d
G
(v) (G) < k, postoji bar jedna boja kojom nije
obojen nijedan sused cvora v u G. Bojeci tom bojom cvor v dobija se
((G) + 1)-bojenje grafa G. Otuda je (G) (G) + 1.
Neposredna posledica ove teoreme je da graf ciji je hromatski broj
k, obavezno sadrzi cvor stepena k 1. Dalje, ocena iz teoreme
3.9. je dosta gruba. Na primer, za zvezdu K
1,n
vazi (K
1,n
) = n, a
(K
1,n
) = 2 (jer je zvezda bipartitan graf). Ipak, ta ocena je najbolja
moguca u smislu da za pojedine grafove vazi jednakost. Za neparnu
konturu C
2k+1
je (C
2k+1
) = 2, a (C
2k+1
) = 3. Slicno je (K
n
) =
n 1, a (K
n
) = n. Moze se dokazati da su to jedini grafovi kod
kojih vazi jednakost u (3.1). Rezultat je dokazao Bruks (R.L.Brooks,
1941).
Teorema 3.10. Ako je G povezan graf koji nije ni neparna kon-
tura, ni kompletan graf, tada je
(G) (G) .
53
Veza izmedu hromatskog broja grafa i njegove strukture veoma je
komplikovana. Ona je jedino za bihromatske grafove, tj. one gra-
fove koji se mogu obojiti sa dve boje poznata i izrazena je sledecom
teoremom koju je dokazao Kening (D. K oning).
Teorema 3.11. Neprazan graf je bihromatski ako i samo ako ne
sadrzi (kao podgraf ) nijednu konturu sa neparnim brojem cvorova.
Bojenje grafova se pojavljuje i u nekim tehnickim problemima. Na
primer, jedan problem optimizacije koriscenja memorije racunara se
svodi na odredivanje hromatskog broja grafa. Neka su x
1
, x
2
, . . . , x
n
numericke velicine koje se pojavljuju u jednom kompjuterskom pro-
gramu. Za pamcenje vrednosti ovih velicina kompjuter rezervise po
jednu celiju u svojoj memoriji. Medutim, moze da se desi da, na pri-
mer, velicine x
i
i x
j
nikada u toku rada programa nisu istovremeno
potrebne. Drugim recima, nije potrebno da se pamti vrednost velicine
x
i
kada se pamti vrednost velicine x
j
i obrnuto. U takvoj situaciji
moguce je za velicine x
i
i x
j
rezervisati samo jednu celiju u memoriji
racunara. Da bi se ostvarila maksimalna usteda memorijskog prostora
obrazuje se graf G ciji cvorovi odgovaraju velicinama x
1
, x
2
, ..., x
n
.
Dva cvora u G su susedna ako i samo ako je bar u jednom trenutku
rada programa potrebno istovremeno znati obe cvorovima odgova-
rajuce velicine. Kada se cvorovi grafa G pravilno oboje, velicine koje
odgovaraju cvorovima iste boje mogu da se smeste u istu celiju me-
morije racunara. Na taj nacin se broj potrebnih celija memorije svodi
sa n na (G).
3.2.1 Problem cetiri boje
Na kraju navodimo neke cinjenice iz istorije teorije grafova koje
objasnjavaju motivaciju za terminologiju koriscenu u ovom odeljku.
Godine 1879. Keli (A. Cayley) je clanovima londonskog geograf-
skog drustva postavio cuveni problem cetiri boje.
Problem cetiri boje sastoji se u tome da se dokaze da se svaka
geografska karta moze obojiti sa cetiri boje tako da je svaka drzava
obojena jednom bojom i da susedne drzave budu obojene razlicitim
bojama. Pod susednim drzavama se podrazumevaju drzave koje imaju
54
zajednicku granicnu liniju, ali ne i one koje imaju jednu ili vise izo-
lovanih zajednickih tacaka. Naravno, podrazumeva se da se problem
odnosi ne samo na stvarne geografske karte vec na sve karte koje se
mogu zamisliti. Pri tome se zahteva da se celokupna teritorija jedne
drzave sastoji od jednog dela, tj. ne dozvoljava se da se jedna drzava
sastoji od vise odvojenih delova.
Problem cetiri boje moze se prevesti na jezik teorije grafova. Na
slici 3.6 prikazan je nacin na koji se svakoj geografskoj karti moze
pridruziti jedan graf.

Cvorovi pridruzenog grafa su proizvoljno iza-
brani po jedan u svakoj drzavi, a cvorove susednih drzava spajaju
grane. Beskonacna oblast u ravni takode se smatra drzavom.
Na ovaj nacin pridruzeni graf geografskoj karti je planaran, jer se
moze nacrtati tako da mu se grane ne seku. Problem ekvivalentan
problemu cetiri boje glasi:
Dokazati da je svaki planaran graf 4-obojiv.
Prvi ozbiljan pokusaj da se resi problem cetiri boje napravio je
Kempe (A.B.Kempe). On je 1880. godine objavio dokazproblema
cetiri boje. Rec dokaz je namerno stavljena pod znake navoda, jer je
desetak godina kasnije, tacnije 1890. godine Hivud (P.J.Heawood) ot-
krio gresku i tako oborio Kempov dokaz. Medutim ni sam Hivud nije
uspeo da resi problem. Dokazao je samo da se svaka geografska karta
moze obojiti sa 5 boja. Tada je problem cetiri boje ponovo oziveo i
postao izazov za matematcki svet. Od tada je proslo puno vremena
da bi tek 1976. godine americkim matematicarima Apelu i Hejkenu
(K.Appel i W.Haken) uz pomoc racunara poslo za rukom da dodu do
dugo ocekivanog dokaza. Njihov dokaz je veoma dug i komplikovan
55
i oslanja se na rezultate niza matematicara koji su objavljivani rani-
jih decenija. Oni su uz pomoc racunara obradili oko 2000 razlicitih
relevantnih konguracija i za to utrosili oko 1200 casova racunarskog
vremena.
3.3 Ojlerovi i Hamiltonovi grafovi
3.3.1 Ojlerovi grafovi
Kroz centar nekadasnjeg pruskog grada Keningsberga, danas Kali-
njingrada, protice reka Pregel. Na reci su dva ostrva povezana medju-
sobno i sa obalama reke sa sedam mostova kao na slici 3.7.
Prica se da su se stanovnici Keningsberga zabavljali pokusavajuci
da obidu sedam mostova, a da pri tome svaki od njih predu tacno
jedanput. Nikome od njih to nije poslo za rukom, a nisu bili u stanju
ni da dokazu da je tako nesto neizvodljivo. Prvi koji je u tome uspeo
bio je cuveni svajcarski matematicar Ojler (Leonhard Euler, 1786).
Ojlerov dokaz nepostojanja odgovarajuce setnje Ke- ningsberskim mo-
stovima smatra se prvim rezultatom, a samim tim i pocetkom teorije
grafova. U njegovu cast citava jedna klasa grafova dobila je ime Ojle-
rovi grafovi.
Ojlerova staza je staza koja tacno jedanput prolazi kroz svaku
granu grafa. Ona moze da bude otvorena ili zatvorena. Graf koji
poseduje zatvorenu Ojlerovu stazu zove se Ojlerov graf.
Odgovor na pitanje koji grafovi poseduju Ojlerovu stazu daje slede-
ca teorema.
Teorema 3.12. Povezan graf G sa bar jednom granom poseduje
Ojlerovu stazu ako i samo ako sadrzi 0 ili 2 cvora neparnog stepena.
56
Napomena. Povezanost grafa je, ako se izuzmu neki trivijalni
slucajevi, potreban uslov za egzistenciju Ojlerove staze. Naime, od
nepovezanih grafova Ojlerovu stazu mogu eventualno imati samo oni
grafovi koji sadrze tacno jednu komponentu u kojoj se nalaze grane.
Prethodna teorema vazi ne samo za proste grafove vec i za multi-
grafove. Ako se obale reke Pregel i ostrva uzmu za cvorove, a mostovi
za grane dobija se multigraf na slici 3.8. On nema Ojlerovu stazu, jer
ima cetiri cvora neparnog stepena.
Ojlerove staze su od interesa za organizacije koje u velikim grado-
vima raznose postu, naplacuju racune ili vrse usluge po domacinstvima.
Postar ce, na primer, najracionalnije razneti postu u svom rejonu ako
kroz svaku ulicu prode tacno jedanput. Organizatori velikih izlozbi
moraju, da bi posetioce proveli pored svih eksponata, da odrede jednu
Ojlerovu stazu u grafu odredenom izlozbenim prostorom i razmestajem
eksponata.
Ojlerove staze pojavljuju se i u zadacima tzv. rekreativne mate-
matike. Problem je u tome da se zadata ravna gura, koja se sastoji
od izvesnog broja tacaka (cvorova) i spojnica koje ih povezuju, nacrta
u jednom potezuili kako se jos kaze bez podizanjaolovke sa pa-
pira. Pri tome se svakom spojnicom mora preci tacno jedanput, dok je
kroz cvorove dozvoljeno prolaziti vise puta. Prevedeno na jezik teorije
grafova potrebno je nacrtati Ojlerovu stazu datog grafa (gure).
3.3.2 Hamiltonovi grafovi
Slicno Ojlerovim i Hamiltonovi grafovi imaju svoju predistoriju.
Godine 1857. poznati irski matematicar Hamilton (Ser William Ro-
wan Hamilton) lansirao je sledecu igru na dodekaedru. Dodekaedar je
57
jedan od pet pravilnih poliedara. Ima 12 strana, 20 temena i 30 ivica.
Sve strane su pravilni petouglovi i u svakom temenu sticu se po tri
strane. Hamilton je temena dodekaedra obelezio imenima 20 svetskih
metropola i postavio zadatak da se nade put oko sveta. Pod tim
je podrazumevao putanju ivicama dodekaedra koja kroz svako teme
(metropolu) prolazi tacno jedanput i pocinje i zavrsava se u istom
temenu.
Radi bolje preglednosti umesto samog dodekaedra bolje je posma-
trati njegovu stereografsku projekciju
1
(slika 3.9). Tada se Hamiltonov
put oko svetasvodi na konturu koja prolazi kroz sve cvorove tako do-
bijenog grafa tacno jedanput. Na slici 3.9 punim linijama prikazana
je jedna takva kontura.
Hamiltonov put je put koji kroz sve cvorove grafa prolazi tacno
jedanput. Put koji pocinje i zavrsava se u istom cvoru a kroz sve ostale
cvorove grafa prolazi tacno jedanput naziva se zatvoren Hamiltonov
put ili Hamiltonova kontura. Graf koji poseduje Hamiltonovu konturu
kao pokrivajuci podgraf naziva se Hamiltonov graf.
I pre Hamiltona resavani su slicni problemi. Jedan od najpozna-
tijih je problem konjickog skoka (konj ili skakac kao sahovska gura).
Ovaj problem glasi: Da li je moguce skakacem obici sva polja sahovske
table tako da se svako polje obide tacno jedanput? Ili drugim recima:
Da li u grafu pridruzenom skakacu postoji Hamiltonov put?
1
Oko svakog pravilnog poliedra moze se opisati sfera S. Uocimo ravan koja
dodiruje sferu S u nekoj tacki A i obelezimo sa B dijametralno suprotnu tacku
na sferi S. Tacke A i B biramo tako da se se razlikuju od temena pravilnog
poliedra. Preslikavanje koje svakoj tacki M ravni pridruzuje tacku M

, drugu
tacku preseka (razlicitu od B) prave BM i sfere S, zove se stereografska projekcija.
58
O problemu konjickog skoka postoji obimna literatura. Ispitivana
je ne samo egzistencija resenja na sahovskim tablama razlicitih dimen-
zija, vec i nacin konstrukcije i broj resenja. Dokazano je da problem
konjickog skoka ima resenje na svim pravougaonim sahovskim tablama
dimenzije mn (m 3, n 3), izuzev slucajeva 3 3, 3 5, 3 6 i
4 4.
Pitanje egzistencije i nalazenja Hamiltonovog puta je daleko tezi
problem od analognog problema za Ojlerove staze. Dok egzistencija
Ojlerove staze zavisi samo od stepena cvorova, kod Hamiltonovih pu-
teva to ne mora biti slucaj.
Na slici 3.10 data su dva grafa sa po 16 cvorova, od kojih oba
imaju iste stepene cvorova (svi cvorovi imaju stepen 3). Medutim
prvi od njih poseduje Hamiltoniv put, a drugi ne. Iz ovog primera
se vidi da egzistencija Hamiltonovog puta zavisi od nijih pojedinosti
strukture grafa nego sto su to stepeni cvorova. Problem egzistencije
Hamiltonovih puteva je jedan od najtezih problema u teoriji grafova i
do danas nije resen u opstem slucaju.
Poznato je vise potrebnih i vise dovoljnih uslova da graf bude Ha-
miltonov. Na primer, ako je G Hamiltonov graf, tada zbog prisustva
Hamiltonove konture G nema artikulacione cvorove. Prema tome G
je 2-povezan graf
2
. Dakle, vazi sledeca teorema.
2
Graf G je 2-povezan graf ako i samo ako je najmanji broj cvorova koje je
potrebno udaljiti iz grafa G da bi se dobio nepovezan graf ili graf K
1
jednak 2.
59
Teorema 3.13. Svaki Hamiltonov graf je 2-povezan.
Drugi manje ocigledan potreban uslov sadrzan je u sledecoj teo-
remi.
Teorema 3.14. Neka je G Hamiltonov graf, S neprazan pravi
podskup skupa V (G) i c(G S) broj komponenti povezanosti grafa
GS. Tada je
c(GS) | S | .
Ako posmatramo samo skupove kardinalnosti 1 dobijamo kao posle-
dicu teoremu 3.13..
Kao ilustrativan primer za primenu teoreme 3.14. moze da posluzi
graf G na slici 3.11. Ako se za S uzme skup od 3 crnacvora, tada je
G S = K
2
K
1
K
1
K
1
, tj. c(G S) = 4 > 3 =| S |. Zato graf
G nema Hamiltonovu konturu.
Dovoljni uslovi za Hamiltonove grafove su daleko brojniji od potre-
bnih. Vecina tih dovoljnih uslova tvrdi da ako graf G ima dovoljno
granatada je on Hamiltonov. Dokaz sledece teoreme sadrzi osnovnu
ideju metoda koji objedinjuje veci broj dovoljnih uslova, a moze biti
primenjen i na druge probleme u teoriji grafova.
Teorema 3.15. Neka je G graf sa n cvorova i v i w dva nesu-
sedna cvora u G, takva da je
d(v) + d(w) n.
Tada je graf G Hamiltonov ako i samo ako je graf G+vw Hamiltonov.
60
Kao posledicu ove teoreme dobijamo sledecu teoremu Orea (Ore,
1960).
Posledica 3.2 (Oreova teorema). Neka je G graf sa n (n 3)
cvorova, takav da za svaka dva nesusedna cvora v i w vazi
d(v) + d(w) n.
Tada je G Hamiltonov graf.
Dokaz. Dodajuci nesusednim cvorovima grafa G grane i prime-
njujuci teoremu 3.15., dobijamo da je graf G Hamiltonov ako i samo
ako je kompletan graf K
n
Hamiltonov.
Direktna posledica Oreove teoreme je teorema Diraka (G.Dirac,
1952).
Posledica 3.3 (Dirakova teorema). Ako je G graf sa n (n 3)
cvorova, takav da je d(v)
1
2
n za svaki cvor v V (G), tada je G
Hamiltonov graf.
61
Glava 4
Kombinatorna optimizacija
4.1 Tezinski grafovi
Ekstremalni zadaci na konacnim (ili prebrojivim) skupovima prouca-
vaju se pod imenom kombinatorna optimizacija. Takvi zadaci se
obicno mogu formulisati kao zadaci na tzv. tezinskim grafovima.
Tezinski graf je graf u kome je svakoj grani dodeljen neki broj. Dru-
gim recima, grafu G = (V, E) pridruzeno je preslikavanje w : E R
koje svakoj grani e E dodeljuje broj w(e) kao tezinu. Funkcija
w zove se tezinska funkcija grafa. U raznim interpretacijama tezina
grane predstavlja njenu duzinu, propusnu moc (ili kapacitet), pouzda-
nost, cenu kostanja, prenos itd. Inace, tezine grana su u kombinator-
noj optimizaciji, po pravilu, celi ili realni brojevi. U elektrotehnici i
drugim naukama, tezine grana mogu biti i kompleksni brojevi.
Neki ekstremalni zadaci kombinatorne optimizacije formulisu se
na potpunim tezinskim grafovima. Kod takvih grafova svakoj grani e
izmedu cvorova v
i
i v
j
pridruzena je tezina (duzina) w(e) = d
ij
. Od
velicina d
ij
moze se formirati kvadratna matrica D = (d
ij
). Matrica
D naziva se tezinska matrica.
Tezinski graf G, tj. uredena trojka G = (V, E, w), cesto se na-
ziva i mreza. U raznim interpretacijama njima odgovaraju konkretne
zicke mreze, kao sto su telekomunikacione mreze, racunarske mreze,
saobracajne mreze itd.
Isticemo da se ekstremalni problemi u diskretnim strukturama ne
mogu resavati tradicionalnim sredstvima diferencijalnog racuna. U
62
ovom poglavlju ove probleme resavacemo uz pomoc grafovskih tehnika
koje su za slucaj mreza najprirodnije sredstvo.
Razmatracemo problem najkrace povezujuce mreze, zatim problem
ekstremalnih puteva u mrezi i na kraju jedan izuzetno tezak problem
poznat kao problem trgovackog putnika.
4.2 Najkraca povezujuca mreza
Neka je dato n gradova koje treba povezati telefonskom mrezom
najkrace duzine. Posmatrajmo graf trazene mreze, u kome su gra-
dovi cvorovi, a grane telefonske linije. Duzina telefonske linije izmedu
dva grada pridruzuje se odgovarajucoj grani grafa kao duzina (tezina)
grane.
Graf trazene telefonske mreze ocigledno mora biti povezan. On
ne sme da sadrzi konture, jer bi se neke grane u konturama mogle
udaljiti, a da se ne narusi povezanost grafa. Povezan graf bez kontura
je stablo. Dakle, graf najkrace povezujuce mreze je stablo.
Neka su u opstem slucaju gradovi numerisani sa 1, 2, . . . , n. Neka
je, dalje, d
ij
rastojanje izmedu gradova i i j. Formirajmo potpuni
tezinski graf G u kome je grani e izmedu cvorova i i j pridruzena tezina
(duzina) d
ij
. Na taj nacin grafu G pridruzena je tezinska matrica ili
matrica rastojanja D.
Najkracoj povezujucoj mrezi za datih n gradova odgovara u grafu
G razapinjuci podgraf oblika stabla. Problem se svodi na nalazenje
razapinjuceg stabla minimalne duzine, tj. minimalnog razapinjuceg
stabla.
Moze se pokazati da u potpunom grafu sa n cvorova ima n
n2
razapinjucih stabala. Posto je i za umerene vrednosti n broj n
n2
veoma veliki, ne dolazi u obzir konstrukcija svih razapinjucih stabala
i nalazenje najkraceg stabla grubom silom.
U nastavku opisacemo dva klasicna algoritma za nalazenje mini-
malnog razapinjuceg stabla u potpunom tezinskom grafu G, ili opstije
u proizvoljnom povezanom tezinskom grafu G.
Prvi algoritam, Kruskalov algoritam, koncepcijski je veoma jedno-
stavan i spada u grupu tzv. prozdrljivih algoritama. Sastoji se od
63
v
0
v
1
v
2
v
3
v
4
v
5
v
6
1
2
2
3
3
4
4
5
6
8
Slika 4.1
uzimanja grana najmanje tezine, takvih da se pri tome ne stvaraju
konture u obrazovanju stabla T = (V, E).
Kraskalov algoritam
1. Sortirati grane ulaznog grafa u neopadajuci poredak (po tezina-
ma) i sve ih markirati kao nerazmatrane. Za izlazni graf uzeti graf bez
grana (razapinjuci podgraf ulaznog grafa).
2. Izabrati iz skupa nerazmatranih grana onu koja je najlaksa,
markirati je kao razmatranu i prikljuciti (bar privremeno) izlaznom
grafu. Ako ta grana ne obrazuje u njemu konturu zadrzati je, a ako
obrazuje konturu odbaciti je.
3. Ako je broj grana rezultirajuceg grafa n 1 (polazni graf je
povezan i ima n cvorova) prekinuti rad. U suprotnom slucaju preci na
korak 2.
Primer 4.1. Razmotrimo tezinski graf predstavljen na slici 4.1.
Resenje. Grane ovog tezinskog grafa sortirane u neopadajuci po-
redak su: w(v
0
v
3
) = 1, w(v
5
v
6
) = 2, w(v
3
v
4
) = 2, w(v
2
v
3
) = 3,
w(v
0
v
1
) = 3, w(v
0
v
2
) = 4, w(v
4
v
5
) = 4, w(v
0
v
5
) = 5, w(v
0
v
6
) = 6,
w(v
1
v
2
) = 8.
Najpre cemo izabrati granu v
0
v
3
i prikljuciti je izlaznom grafu, a
zatim cemo redom izlaznom grafu dodavati grane v
5
v
6
, v
3
v
4
, v
2
v
3
, v
0
v
1
i dobiti
E = {v
0
v
3
, v
5
v
6
, v
3
v
4
, v
2
v
3
, v
0
v
1
}.
64
v
0
v
1
v
2
v
3
v
4
v
5
v
6
1
2
2
3
3
4
Slika 4.2
Sledeca grana po redu je v
0
v
2
koju ne smemo dodati izlaznom grafu,
jer bi ona dovela do formiranja kontura. Zbog toga, izlaznom grafu
dodajemo sledecu granu po redu v
4
v
5
. Dobijamo
E = {v
0
v
3
, v
5
v
6
, v
3
v
4
, v
2
v
3
, v
0
v
1
, v
4
v
5
}.
Kako je broj grana rezultirajuceg grafa 6 (n=7), postupak je zavrsen
i dobijeno minimalno razapinjuce stablo prikazano je na slici 4.2.
Primov algoritam
1. Izaberite cvor v
0
grafa G i granu najmanje tezine e
1
iz skupa
grana koje sadrze cvor v
0
, da biste obrazovali stablo T
1
.
2. Ukoliko ste dobili stablo T
k
sa granama e
1
, e
2
, . . . , e
k
i ako po-
stoji cvor koji nije u stablu T
k
, izaberite granu minimalne tezine, koja
je susedna grani stabla T
k
i koja ima cvor koji ne pripada stablu T
k
.
Dodajte ovu granu stablu T
k
da biste dobili stablo T
k+1
.
3. Ponavljajte korak 2 dok svaki cvor grafa G ne bude u stablu.
Primer 4.2. Razmotrimo tezinsko stablo iz primera 4.1 dato na
slici 4.1.
Resenje. Ako pocnemo od cvora v
0
, izabracemo prvo granu v
0
v
3
,
posto ona ima minimalnu tezinu. Na osnovu toga stablo T
1
ce sadrzati
granu v
0
v
3
. Zatim cemo izabrati granu v
3
v
4
, jer je ona sada grana sa
minimalnom tezinom, pri cemu jedan njen cvor pripada stablu T
1
i
dobicemo stablo T
2
prikazano na slici 4.3.
Sada mozemo da biramo izmedu dve grane, koje imaju istu tezinu
i samo jedan cvor u stablu T
2
. Pretpostavimo da smo izabrali granu
v
0
v
1
, tako da smo dobili stablo T
3
(slika 4.3).
65
v
0
T
2
v
3
v
4
1
2
v
0
v
1
T
3
v
3
v
4
1
2
3
v
0
v
1
v
3
v
4
v
5
T
4
1
2
3
4
v
0
v
1
v
2
v
3
v
4
v
5
T
5
1
2
3
3
4
Slika 4.3
Dalje, izabracemo granu v
2
v
3
, posto ona predstavlja granu sa mi-
nimalnom tezinom i samo jedan njen cvor pripada stablu T
3
. Na taj
nacin dobicemo stablo T
4
prikazano na slici 4.3.
Sada biramo granu v
4
v
5
, jer je ona grana sa minimalnom tezinom
i tacno jedan njen cvor pripada stablu T
4
. Na ovaj nacin dobijamo
stablo T
5
prikazano na slici 4.3.
Konacno izaberimo granu v
5
v
6
, posto ona ima minimalnu tezinu i
posto samo jedan njen cvor pripada stablu T
5
, a drugi cvor je v
6
, jer
je to jedini preostao cvor. Tako smo dobili stablo T
6
, koje predstavlja
trazeno minimalno razapinjujuce stablo (slika 4.2).
4.3 Ekstremalni putevi u mrezi
Mnogi problemi iz prakse mogu se tretirati kao problemi vezani za
ekstremalne puteve u tezinskom grafu, tj. mrezi. U tom kontekstu
posmatracemo sledece optimizacione zadatke.
66
1
0
Za dati par cvorova mreze, recimo s i t, naci duzinu najkraceg
puta i bar jedan najkraci put od cvora s do cvora t.
2
0
Za dati cvor mreze, recimo s, naci duzinu najkraceg puta i bar
jedan najkraci put od cvora s do bilo kog od preostalih cvorova mreze.
3
0
Za bilo koji par cvorova mreze naci duzinu najkraceg puta i bar
jedan najkraci put izmedu njih.
Pored navedenih zadataka u literaturi su razmatrane i razlicite
njihove varijacije. Recimo, moguce je traziti puteve koji prolaze kroz
neki ili neke ksirane cvorove odnosno grane itd. Moguce je traziti i
vise najkracih puteva rangiranih po duzini, tj. prvi, drugi, ... najkraci
put.
Mi cemo izloziti algoritam Dijkstra , ogranicavajuci se na resavanje
zadataka 1
0
i 2
0
. Ovaj algoritam se zasniva na tehnici poznatoj kao
obelezavanje (dodeljivanje oznaka). Uobicajno je da na pocetku oznaka
svakog cvora, sem pocetnog koja je jednaka 0, bude jednaka . U toku
rada algoritma oznake odgovaraju duzinama trenutno nadenih puteva
od pocetnog cvora do preostalih, dok na kraju postaju denitivne i
odgovaraju stvarnim duzinama najkracih puteva.
Izlozeni algoritam sadrzi u sebi dve operacije (ili obrade): obradu
grana i obradu cvorova. Pod obradom grane e = xy podrazumeva se
provera nejednakosti
d(y) > d(x) + w(e)
(d(x) i d(y) su oznake cvorova x i y, redom, a w(e) je tezina grane e)
i ako ona vazi tada se oznaka cvora y menja, tj. d(y) = d(x) + w(e).
Pod obradom cvora x podrazumeva se obrada svih grana e = xy koje
izlaze iz cvora x.
Algoritam Dijkstra
Korak 1. Svim cvorovima mreze dodeliti sledece privremene oznake:
cvoru s dodeliti oznaku d(s) = 0, a svim ostalimcvorovima, ukljucujuci
i cvor t, dodeliti oznake d(x) = .
Korak 2. Ako nema cvorova sa privremenim oznakama preci na
korak 3. U suprotnom, pronaci cvor x koji ima najmanju privremenu
oznaku.

Cvoru x dodeliti stalnu oznaku i obraditi ga, tj. za svaku
granu e = xy (cvor y ima privremenu oznaku), ako je d(y) > d(x) +
w(e) staviti d(y) = d(x) + w(e). Zatim ponoviti korak 2.
67
Korak 3. Sada se prelazi na postupak izdvajanja najkraceg puta.
Izdvojimo najkraci put izmedu cvorova s i t. Od svih cvorova susednih
cvoru t odredimo cvor x
k
za koji je
(4.1) d(t) d(x
k
) = w(x
k
t).
Ponavljanjem opisanog postupka, tj. odredivanjem cvora x
k1
, sused-
nog cvoru x
k
za koji je
(4.2) d(x
k
) d(x
k1
) = w(x
k1
x
k
),
i tako dalje, na kraju se dolazi do cvora x
1
, kome je susedan cvor s, i
za koji je
(4.3) d(x
1
) d(s) = w(sx
1
).
Na taj nacin dobija se put koji ide preko cvorova s, x
1
, . . . , x
k1
, x
k
, t.
Sabiranjem jednakosti (4.1), (4.2) i tako dalje za sve cvorove na tom
putu i imajuci u vidu da je d(s) = 0, dobija se da je duzina ovog puta
jednaka oznaci cvora t, tj.
d(t) = w(sx
1
) + w(x
1
x
2
) + + w(x
k1
x
k
) + w(x
k
t).
Primetimo da se u ovoj verziji algoritma dobija resenje zadatka 2
0
.
Resenje zadatka 1
0
se dobija ako se u koraku 2. prekine dalji rad kada
cvor t dobije stalnu oznaku.
4.4 Problem trgovackog putnika
Neka je dato n gradova koje treba da obide trgovacki putnik tako da
troskovi puta budu minimalni. Postoje dve varijante ovog problema.
U prvoj varijanti putnik mora da se vrati u grad iz koga je posao
(srediste preduzeca), a u drugoj varijanti pocetni i zavrsni grad puta
trgovackog putnika su razliciti.
Problem trgovackog putnika razmatracemo na potpunom tezinskom
grafu G sa cvorovima 1, 2, . . . , n i tezinskom matricom D = (d
ij
). Pod-
setimo se da je Hamiltonov put u proizvoljnom grafu put koji prolazi
kroz svaki cvor grafa tacno jedanput. Prema tome, put trgovackog
68
putnika u grafu G moze se interpretirati kao Hamiltonov put. Na
taj nacin se problem trgovackog putnika moze formulisati na sledeci
nacin:
Problem. Odrediti najkraci Hamiltonov put u potpunom tezinskom
grafu G.
Primetimo da Hamiltonov put u potpunom grafu sa n cvorova de-
nise jednu permutaciju skupa {1, 2, . . . , n} i obrnuto, permutacija
odreduje Hamiltonov put. Zbog toga se problem trgovackog put-
nika moze, u principu, resiti generisanjem svih permutacija skupa
{1, 2, . . . , n}, izracunavanjem duzina svih Hamiltonovih puteva i oda-
biranjem najkraceg puta. Medutim, ovo bi bio neekasan algoritam
jer je broj permutacija n! veoma veliki i problem postaje neresiv i za
veoma brze racunare.
Za problem trgovackog putnika moze se formulisati jedna vrsta
prozdrljive procedure: u svakom koraku trgovacki putnik posecuje
grad koji mu je najblizi. Medutim, mogu se konstruisati prosti primeri
koji pokazuju da ovakva procedura daje vrlo losa resenja.
Za resavanje problema trgovackog putnika koristi se algoritam gra-
nanja i ogranicavanja. Postoje razne varijante ovog algoritma od kojih
navodimo jednu.
Neka je H skup svih Hamiltonovih puteva u tezinskom grafu G i
neka je S skup svih razapinjucih stabala u G. Posto put predstavlja
stablo, vazi relacija H S. Problem minimalnog razapinjuceg sta-
bla se stoga naziva relaksacioni problem za problem trgovackog put-
nika. Problem trgovackog putnika svescemo na resavanje vise pro-
blema nalazenja minimalnog razapinjuceg stabla.
Nade se minimalno razapinjuce stablo u grafu G. Ako je ovo sta-
blo put, to je Hamiltonov put i ujedno resenje problema trgovackog
putnika.
Ako dobijeno stablo nije put, ono sadrzi bar jedan cvor v ste-
pena d (d 3). Neka su e
1
, e
2
, . . . , e
d
grane koje se sticu u cvoru v.
Sa sigurnoscu mozemo tvrditi da bar jedna od grana e
1
, e
2
, . . . , e
d
ne
pripada optimalnom resenju problema trgovackog putnika. Stavimo
w(e
i
) = i resimo problem minimalnog razapinjuceg stabla u tom
slucaju (i = 1, 2, . . . , d). Na ovaj nacin mi smo nas problem razgra-
nali na d potproblema. U svakom od tih potproblema tezina jedne od
grana e
1
, e
2
, . . . , e
d
jednaka je i ona se nece naci u resenju problema
69
minimalnog razapinjuceg stabla.
Na svakom od potproblema ponavljamo opisanu proceduru i na
taj nacin dobijamo strukturu potproblema oblika stabla (grananje).
U nekim situacijama pojavice se medusobno jednaki potproblemi, pa
ih ne treba tretirati dvaput.
Kad tad se u nekom od potproblema pojavi put kao resenje re-
lasakcionog zadatka. Zapamti se duzina ovog puta i tretiraju dalji
potproblemi. Ako je duzina minimalnog razapinjuceg stabla u nekom
od potproblema veca od duzine ranije nadenog Hamiltonovog puta,
taj problem se vise ne razgranava, jer nema sanse da se u vezi sa
njim nade Hamiltonov put koji je kraci od postojeceg (ogranicavanje).
Ako se u nekom potproblemu dobije Hamiltonov put manje duzine od
ranije nadenog Hamiltonovog puta, pamti se novi put a raniji zabora-
vlja. Kad se iscrpe svi potproblemi, Hamiltonov put koji je zapamcen
predstavlja resenje trgovackog putnika.
70