Professional Documents
Culture Documents
grafova
Blaženka Divjak Alen Lovrenčić
Varaždin, 2005.
Predgovor
Sadržaj knjige
Prvo poglavlje ove knjige je naslovljeno Uvod, i predstavlja skup osnovnih
pojmova koje je nužno definirati da bi sljedeća poglavlja mogla biti korektno
predstavljena. Ona sadrži opis metoda koje se koriste u matematici, modela
te općenite tehnike koje matematičari koriste u dokazivanju. Uvodno je
poglavlje napisala Blaženka Divjak.
Sljedeće poglavlje predstavlja produžetak prvog, uvodnog poglavlja i
donosi opis matematičke logike, a isto tako dva formalna dedukcijska susta-
va - F-sustav i rezolucijsku proceduru. F-sustav predstavlja formalizaciju
pravila dokazivanja opisanih u poglavlju 1.2. S druge strane, rezolucijska
procedura predstavlja deduktivni sustav, koji je posebno pogodan za dokazi-
vanje teorema pomoću računala. Poglavlje o matematičkoj logici napisao je
Alen Lovrenčić.
U trećem poglavlju se uvode pojmovi koji pripadaju diskretnoj mate-
matici - relacije, funkcije, skupove, pojam rekurzivne jednadžbe, rješavanje
rekurzivnih jednadžbi, te na kraju, diskretnu teoriju vjerojatnosti. Ovo je
poglavlje napisala Blaženka Divjak, osim dijelova o rekurzijama i diskretne
i
ii
područja.
Pri izlaganju teksta su neki dijelovi izostavljeni i ostavljeni za samostalan
rad čitatelja, bilo kao zadaci unutar teksta, bilo kao izostavljeni dokazi ili
problemi. U svakom slučaju, izostavljeni dijelovi su pažljivo odabrani, tako
da bi ih čitatelj tijekom čitanja morao moći bez većih problema i priprema
samostalno izraditi. Autori preporučuju da se zadaci unutar teksta, kao i
dokazi za koje je napomenuto da su ostavljeni za samostalan rad čitatelju,
svakako tijekom čitanja izrade, jer na taj način čitatelj već tijekom samog
čitanja počinje baratati pojmovima koje proučava, što znatno povećava nji-
hovu razumljivost.
Na kraju svakog poglavlja nalaze se zadaci. Zadaci pokrivaju sadržaj
poglavlja uz koje su vezani i svakako se preporučuje da se zadani zadaci
riješe. Oni ne služe samo za ponavljanje gradiva poglavlja, već djelomično i
nadograduju sadržaj. Zadaci mogu čitatelju pokazati koliko je zaista shvatio
ono što je pročitao, ali mu mogu i dodatno objasniti neke detalje koji iz
samog teksta nisu bili jasni.
Osim toga, svako je poglavlje opskrbljeno i problemima. Od čitatelja
se ne očekuje da izradi rješenje svakog problema u knjizi, jer su problemi
zamišljeni kao studijski zadaci, koji zahtjevaju duži rad detaljnije prouča-
vanje literature i dublje upoznavanje područja na koje se odnose. Svakako,
ovi problemi su pogodni za izradu seminarskih radova studenata koji slušaju
kolegije koji pokrivaju područje opisano u ovoj knjizi, ali oni predstavljaju
i ideje za daljnji samostalan rad svim čitateljima zainteresiranim za nado-
gradnju znanja iz danog područja.
Svako poglavlje ima i literaturu koja je korištena pri izradi sadržaja, ali
koja isto tako predstavlja smjernice za daljnji rad čitateljima koji su posebno
zainteresirani za sadržaj dotičnog poglavlja.
Zahvale i pokude
Uobičajeno je da se u predgovoru popišu ljudi koji su autorima pomogli u
izdavanju knjige te da se pokude autori što je u knjizi ostalo još pogrešaka
i što su neki sadržaji možda ostali nedovoljno pokriveni, pa ćemo se i mi
držati tog običaja.
No, uprkos našem pristajanju na običaj, napravit ćemo, matematički
rečeno, inverziju, pa ćemo na početku zahvaliti našim obiteljima. Oni su
nas podupirali pri pisanju ove knjige, često i ne znajući točno o čemu se
radi, imajući puno povjerenje u nas i ono što radimo, odričući se onoga što
im pripada - naše pažnje.
Zahvaljujemo našim recenzentima Mirku Čubrilu, Tihomiru Hunjaku
i Mariu Krniću (abecednim redom) koji su svojim sugestijama doprinijeli
poboljšanju ove knjige, ali koji su, isto tako, garantirajući svojim imenima
kvalitetu ove knjige, omogućili da ona bude izdana. Knjiga je izdana uz
iv
B. Divjak,
A. Lovrenčić
Varaždin, 2005.
Sadržaj
Predgovor i
1 Uvod 1
1.1 Matematičke metode i modeli . . . . . . . . . . . . . . . . . . 1
1.1.1 Znanstvena metoda . . . . . . . . . . . . . . . . . . . 1
1.1.2 Matematički model . . . . . . . . . . . . . . . . . . . . 2
1.1.3 Struktura matematike . . . . . . . . . . . . . . . . . . 3
1.2 Tehnike dokazivanja u matematici . . . . . . . . . . . . . . . 5
1.2.1 Sudovi i matematička logika kao okvir za matematičke
tvrdnje . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Dokazivanje matematičkih tvrdnji . . . . . . . . . . . 7
1.2.3 Matematička indukcija i skup prirodnih brojeva . . . . 8
1.2.4 Princip dobrog uredaja u skupu N . . . . . . . . . . . 11
1.3 Zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Matematička logika 17
2.1 Račun sudova . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.1 Sintaksa . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2 Semantika . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Predikatni račun . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.1 Sintaksa . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.2 Semantika . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.3 Formalni sustavi . . . . . . . . . . . . . . . . . . . . . 33
2.3 Zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4 Projekti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3 Diskretna matematika 45
3.1 Skupovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.1.1 Zadavanje skupa . . . . . . . . . . . . . . . . . . . . . 46
3.1.2 Relacije medu skupovima . . . . . . . . . . . . . . . . 46
3.1.3 Partitivni skup . . . . . . . . . . . . . . . . . . . . . . 47
3.1.4 Operacije na skupovima . . . . . . . . . . . . . . . . . 47
3.1.5 Kartezijev produkt skupova . . . . . . . . . . . . . . . 48
v
vi SADRŽAJ
4 Algoritmi 125
4.1 Pojam algoritma . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.2 Složenost algoritama . . . . . . . . . . . . . . . . . . . . . . . 130
4.3 Pretraživanje i sortiranje . . . . . . . . . . . . . . . . . . . . . 139
4.3.1 Pretraživanje . . . . . . . . . . . . . . . . . . . . . . . 139
4.3.2 Sortiranje . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.3.3 Donja meda složenosti algoritama usporedivanja i sor-
tiranja temeljenih na usporedivanju . . . . . . . . . . 176
4.3.4 Sortiranje u vremenu O(n) . . . . . . . . . . . . . . . 179
4.4 Zadaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
4.5 Projekti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
SADRŽAJ vii
Uvod
1
2 1.1. MATEMATIČKE METODE I MODELI
Proces u Matematička
realnom struktura
svijetu
Slika 1.1
1) 1∈ M,
2) x ∈ M povlači x0 ∈ M.
Tada je M = N.
1. a + b ∈ N (zatvorenost)
POGLAVLJE 1. UVOD 11
2. a · b ∈ N (zatvorenost)
3. a + b = b + a (komutativnost)
4. (a + b) + c = a + (b + c) (asocijativnost)
5. a · b = b · a (komutativnost)
6. (a · b) · c = a · (b · c) (asocijativnost)
9. a · (b + c) = (a · b) + (a · c)
Tvrdnja 1.1 Svaki neprazni podskup skupa prirodnih brojeva ima naj-
manji element.
1.3 Zadaci
1. Dokažite sljedeće tvrdnje:
(a) n3 − 2n je djeljiv s 3.
(b) an − bn je djeljiv s a − b za sve a, b ∈ Z i a − b 6= 0.
Pn
(c) k(k + 1)(k + 2) = 14 n(n + 1)(n + 2)(n + 3).
k=1
14 1.3. ZADACI
Q
n k k+1
1−x2
(d) Za svaki x ∈ R, x 6= ±1 i n ≥ 1 vrijedi (1 + x2 ) = 1−x2
.
k=1
(a) A = {n ∈ N : n2 ≤ 52}
(b) B = {n ∈ N : n2 ≤ 100n}
(c) C = {n ∈ N : n je višekratnik broja 4}
(d) D = {n ∈ N : n je prost broj}
[1] Biggs, N. L.: Discrete Mathematics, Oxford University Press Inc., New
York, 2002.
[2] Dadić, Ž.: Povijest ideja i metoda u matematici i fizici, Školska knjiga,
Zagreb, 1992.
[7] Keller, S.-McNulty; Wilson, A. G.; Wilson, G.: The Impact of Technol-
ogy on the Scientific Method, submitted to: Science Compass, LA-UR-
01-5739
15
16 BIBLIOGRAFIJA
Poglavlje 2
Matematička logika
Pretpostavimo da je pronadena
kontradikcija u aksiomima teorije
skupova. Da li ozbiljno vjerujete da
bi se most mogao srušiti?
Frank Ramsey
17
18 2.1. RAČUN SUDOVA
2.1.1 Sintaksa
Definicija 2.1 (Jezik) Jezik L računa sudova sastoji se od:
2. veznika ¬, ∨, ∧, →, ↔,
3. zagrada }, {, ], [, ), (.
4. Sudovi su samo oni izrazi koji se mogu dobiti konačnim brojem uza-
stopnih primjena pravila 1-3.
• (A ∨ (B ∧ ¬C)),
• (C ↔ (A ∧ ¬B)).
1
Za skup kažemo da je prebrojiv ako je konačan ili bijektivan s N
POGLAVLJE 2. MATEMATIČKA LOGIKA 19
2.1.2 Semantika
U prošlom smo poglavlju objasnili kako se tvore jezični konstrukti jezika
računa sudova. Ovdje ćemo opisati njihovo značenje, odnosno semantiku.
1. F ∨ F ≡ F (idempotentnost)
2. F ∧ F ≡ F (idempotentnost)
3. F ∨ G ≡ G ∨ F (komutativnost)
4. F ∧ G ≡ G ∧ F (komutativnost)
5. F ∨ (G ∨ H) ≡ (F ∨ G) ∨ H (asocijativnost)
6. F ∧ (G ∧ H) ≡ (F ∧ G) ∧ H (asocijativnost)
7. F ∨ (G ∧ H) ≡ (F ∨ G) ∧ (F ∨ H) (distributivnost)
8. F ∧ (G ∨ H) ≡ (F ∧ G) ∨ (F ∧ H) (distributivnost)
9. F ∨ ¬F ≡ >
POGLAVLJE 2. MATEMATIČKA LOGIKA 21
10. F ∧ ¬F ≡ ⊥
12. F ∨ ⊥ ≡ F
13. F ∧ > ≡ F
14. F ∧ ⊥ ≡ ⊥
18. F ∧ (G ∨ H) ≡ (F ∧ G) ∨ (F ∧ H) (distributivnost)
19. F ∨ (G ∧ H) ≡ (F ∨ G) ∧ (F ∨ H) (distributivnost)
20. F → G ≡ ¬G ∨ F
Formalni sustavi
Semantički izvodi, poput izvoda u primjeru 2.3, mogu biti složeni i teški.
Stoga se uvode formalni sustavi za izvodenje, koji se sastoje od pravila
izvoda, koja iz sudova izvode njihove logičke posljedice.
POGLAVLJE 2. MATEMATIČKA LOGIKA 23
Ovdje ćemo prikazati dva sustava: jedan koji se temelji na klasičnom ma-
tematičkom izvodenju, i drugi koji je posebno pogodan za dedukciju pomoću
računala.
Prvi sustav, koji se naziva F -sustav , sastoji se od osam pravila izvoda -
po dva pravila za svaki veznik. Za svaki veznik se definira pravilo uvodenja
i eliminacije. Ovaj se sustav još naziva i sustav prirodne dedukcije jer se
njegovi aksiomi temelje na standardnim logičkim pravilima zaključivanja.
Takoder, ovaj je sustav ponekad referiran kao Fitchov sustav , prema ame-
ričkom logičaru Frederichu Fitchu, koji je prvi formalizirao ovaj sustav,
povodeći se za prirodnim pravilima dedukcije, koje matematičari koriste
u svojoj praksi. Pravila izvoda se u F-sustavu mogu prikazati grafički.
Prva dva pravila se odnose na konjunkciju. Prvo od njih je pravilo
uvodenja konjunkcije (∧ Intro).
F1
⇓
Fn
..
.
⇒ F1 ∧ . . . ∧ Fn
Drugo je pravilo eliminacije konjunkcije (∧ Elim)
F1 ∧ . . . ∧ Fn
..
.
⇒ Fi
Oba ova pravila su jasna i jednostavna.
Sljedeća dva pravila bit će pravila vezana uz disjunkciju. No, prije nego
ih iskažemo, moramo uvesti pojam poddokaza. Poddokaz je segment unutar
dokaza, koji uz dodatne uvjete dokazuje odredenu tvrdnju. Treba još jed-
nom naglasiti da se tvrdnje unutar poddokaza izvode uz dodatne uvjete, koji
općenito ne moraju vrijediti. Stoga tvrdnje koje su dokazane unutar pod-
dokaza takoder ne moraju vrijediti općenito. Zbog toga korištenje tvrdnji
dokazanih u poddokazu izvan poddokaza nije dozvoljeno, osim ako to pravi-
lo izvoda izričito ne nalaže. Jedno takvo pravilo koje omogućuje korištenje
tvrdnje dokazane u poddokazu izvan samog poddokaza jest pravilo elimi-
nacije disjunkcije.
Uvodenje disjunkcije (∨ Intro)
Fi
..
.
⇒ F1 ∨ . . . ∨ Fn
Eliminacija negacije (¬ Elim)
24 2.1. RAČUN SUDOVA
F1 ∨ . . . ∨ Fn
F1
..
.
S
⇓
Fn
..
.
S
⇒ S
Pravilo eliminacije disjunkcije zahtjeva dodatno objašnjenje. Naime, kao
što je već rečeno, F sustav slijedi standardne matematičke tehnike dokazi-
vanja. Neka pravila su samo koraci u direktnom dokazivanju. Takva su
pravila uvodenje i eliminacija konjunkcije te uvodenje disjunkcije. Druga
opet pravila predstavljaju strategije dokazivanja. Takvo je pravilo elimi-
nacija disjunkcije. Pravila koja predstavljaju strategije dokazivanja imaju
u matematici i druge nazive, koji su već spomenuti u poglavlju 1.2, gdje se
ono zove dokaz podjelom na slučajeve.
Sada ćemo uvesti dva pravila koja se odnose na negaciju.
Uvodenje negacije (¬ Intro)
F
..
.
G ∧ ¬G
⇒ ¬F
Eliminacija negacije (¬ Elim)
¬¬F1
..
.
⇒ F
Elimincija negacije je još jedno pravilo koje predstavlja jednostavan ko-
rak direktnog dokaza. S druge strane, uvodenje negacije je još jedna, možda
čak i najčešće korištena, strategija dokazivanja - dokazivanje obaranjem
suprotnog ili dokazivanje svodenjem na kontradikciju, ili pak na latinskom
reductio ab absurdum.
Na kraju, ostali su nam kondicional i bikondicional.
Uvodenje kondicionala (→ Intro)
F
..
.
G
⇒ F →G
Eliminacija kondicionala (→ Elim)
POGLAVLJE 2. MATEMATIČKA LOGIKA 25
F →G
F
..
.
⇒ G
Uvodenje kondicionala je osnovna strategija dokazivanja sudova koji
imaju kauzalnu formu, tj. koje sadrže kondicional. S druge strane, elimi-
nacija kondicionala je samo korak u dokazivanju. Pravilo eliminacije kondi-
cionala ima, medutim, značajnu ulogu u mnogim logičkim sustavima, po-
sebno sustavima koji se koriste u klasičnoj logici. Zato ima i posebno ime -
modus ponens, što u prijevodu znači ”metoda potvrdivanja”.
Uvodenje bikondicionala (↔ Intro)
F
..
.
G
G
..
.
F
⇒ F ↔G
Eliminacija bikondicionala (↔ Elim)
F ↔G
F
..
.
⇒ G
Slično kao što je rečeno za uvodenje kondicionala, uvodenje bikondi-
cionala je osnovna strategija dokazivanja rečenica koje sadrže bikondicional.
Definicija 2.6 Neka je F skup sudova i neka je G sud. Tada se niz sudova
G1 , . . . , Gn : G naziva izvod suda G iz skupa sudova F pomoću formalnog
sustava S ako za svaki i = 1, . . . , n vrijedi jedna od sljedećih tvrdnji
• Gi ∈ F,
• Ako je F `F G onda je F |= G.
• Ako je F |= G onda je F `F G.
7. G ∧ H
8. G (∧ Elim: 7)
9. F ∨ G (∨ Intro: 8)
10. H (∧ Elim: 7)
11. F ∨ H (∨ Intro: 10)
12. (F ∨ G) ∧ (F ∨ H) (∧ Intro: 9,11)
13. (F ∨ G) ∧ (F ∨ H) (∨ Intro: 1,2-6,7-12)
POGLAVLJE 2. MATEMATIČKA LOGIKA 27
Teorem 2.5 Za svaki sud računa sudova postoji logički ekvivalentan sud u
konjunktivnoj normalnoj formi.
Umjesto dokaza ovdje ćemo opisati kako se za zadanu formulu konstruira
ekvivalentan sud u konjunktivnoj normalnoj formi. U propoziciji 2.2 dane
su ekvivalencije čijim se korištenjem svaki sud računa sudova može prevesti
u ekvivalentan sud u konjunktivnoj normalnoj formi. Uz opis koraka dat
ćemo i primjer kako se pojedini koraci konkretno provode.
(A ∨ ¬B) ∧ (A ∨ ¬B ∨ C).
Sada, kad smo iznijeli način pretvaranja suda u konjunktivnu normalnu
formu, možemo opisati postupak dokazivanja pomoću rezolucijskog pravi-
la. Prije nego što se krene u sam izvod, potrebno je urediti pretpostavke
i zaključak koji želimo dokazati. Kod rezolucijskog postupka nikada se za-
ključak ne dokazuje izravno, već se uvijek obara njegova negacija. Stoga
je, prije svega, potrebno negirati zaključak koji želimo dokazati. Nakon
toga se sve pretpostavke i zaključak pretvaraju u konjunktivnu normalnu
formu. Time se dobija skup sudova u konjunktivnoj normalnoj formi, koji
se sastoji od pretpostavki i negacije zaključka. Lako je dokazati da vrijedi
{A, B} ≡ {A ∧ B}. Stoga se svaki sud u konjunktivnoj normalnoj formi u
skupu može zamijeniti s jednim ili više sudova, koji su po svom obliku di-
sjunkti. Na tako dobiven skup disjunkata se primijenjuje pravilo rezolucije,
u želji da se iz skupa izvede prazan disjunkt. Prazan disjunkt ili refutacija
označava se s ⊥ i predstavlja antitautologiju. Dobije li se refutacija, negacija
je zaključka oborena, a zaključak je dokazan.
Da bi se ovaj postupak mogao koristiti potrebno je imati sljedeći teorem:
2.2.1 Sintaksa
Definicija 2.8 Jezik računa predikata ima abecedu koja se sastoji od:
• logičkih veznika ¬, ∨, ∧, →, ↔,
• kvantifikatora ∀, ∃,
• zagrada ), (, ], [, }, {,.
• Atomi su formule.
2.2.2 Semantika
Definicija 2.12 Svako preslikavanje µ : V → C naziva se ograničenje vari-
jabli .
Semantička struktura predikatnog računa M je par M =< I, U >, pri
čemu je I interpretacija, a U domena. Interpretacija I =< ϕ, ψ >, pri čemu
je ϕ pridruživanje koje svakom n-arnom funkcijskom simbolu pridružuje
totalnu funkciju U n → U , a svakoj konstanti pridružuje nularnu funkciju.
Funkcija ψ svakom n-arnom predikatnom simbolu pridružuje n-arnu relaciju
nad U .
Kada se ovako definira semantička struktura predikatnog računa, dom-
ena je u potpunosti odredena interpretacijom i može se izostaviti.
Semantička struktura definira istinitost svakog pojedinog atoma.
Istinitost se definira na sljedeći način:
• µ(x) ∈ C za x ∈ V,
• µ(c) = c za c ∈ C,
• M |=µ ∀xF (x) ako i samo ako za svako prošireno ograničenje varijabli
ν koje se podudara s µ na svim varijablama osim možda na x vrijedi
M |=ν F .
• M |=µ ∃xF (x) ako i samo ako postoji prošireno ograničenje varijabli
ν koje se podudara s µ na svim varijablama osim možda na x za koje
vrijedi M |=ν F .
1. ∀x¬P (x)
∃xP (x)
c
3. P (c)
4. ¬P (c) (∀ Elim: 1)
2. 5. ¬(Q ∧ ¬Q)
6. P (c) ∧ ¬P (c) (∧ Intro: 3,4)
7. ¬¬(Q ∧ ¬Q) (¬ Intro: 5-6)
8. Q ∧ ¬Q (¬ Elim: 7)
9. Q ∧ ¬Q (∃ Elim: c -8)
10. ¬∃xP (x) (¬ Intro: 2-9)
što daje sljedeći teorem:
Teorem 3:
∀x¬P (x)
..
.
⇒ ¬∃xP (x)
I na kraju:
1. ¬∃xP (x)
2. ¬∀x¬P (x)
3. ∃x¬¬P (x) (Teorem 2: 2)
c
4. ¬¬P (c)
P (c) (¬ Elim: 4)
6. ∃xP (x) (∃ Intro: 5)
7. ∃xP (x) ∧ ¬∃xP (x) (∧ Intro: 6,1)
8. ∃xP (x) ∧ ¬∃xP (x) (∃ Elim: 3, c -7)
9. ¬¬∀x¬P (x) (¬ Intro: 2-8)
10. ∀x¬P (x) (¬ Elim: 9)
Dakle,
Teorem 4:
¬∃xP (x)
..
.
⇒ ∀x¬P (x)
***
Kao i za F sustav, i za rezolucijsku proceduru postoji proširenje na račun predikata.
Rezolucijska se procedura u računu predikata definira nad rečenicama. No, kao što ćemo
vidjeti, u računu predikata se svaka rečenica ne može pretvoriti u ekvivalentnu rečenicu
koja bi bila pogodna za rezolviranje.
Svaka se rečenica računa predikata može, medutim, pretvoriti u ekvivalentnu rečenicu
u primitivnoj normalnoj formi.
36 2.2. PREDIKATNI RAČUN
K1 x1 . . . Kn xn M (x1 , . . . , xn ).
Pri tome su K1 , . . . , Kn kvantifikatori, a M (x1 , . . . , xn ) je formula računa predikata
bez kvantifikatora. K1 x1 . . . Kn xn se naziva prefiks, a M (x1 , . . . , xn ) se naziva matrica
rečenice u primitivnoj normalnoj formi.
Teorem 2.7 Svaka rečenica računa predikata ima ekvivalentnu rečenicu u primitivnoj
normalnoj formi.
Umjesto formalnog dokaza ove propozicije navest ćemo algoritam pomoću kojeg će se
rečenica računa predikata moći pretvoriti u rečenicu u primitivnoj normalnoj formi.
Kao prvo, pomoću pravila iz propozicije 2.2 eliminiramo sve kondicionale i bikondi-
cionale. Nakon toga, pomoću ekvivalencija iz propozicije 2.3, te eventualno primjene
pravila dvostruke negacije (propozicija 2.2) sve kvantifikatore izvadimo u prefiks.
Primjer 2.12 Pretvorite formulu ∀x∃y(P (x, y) → Q(x)) ∧ ¬∃x∃y(Q(y) ∨ P (x, x)) u pri-
mitivnu normalnu formu.
Propozicija 2.4 Za svaku rečenicu računa predikata F postoji rečenica računa F 0 koja
je u Skolemovoj normalnoj formi i za koju vrijedi da je F kontradiktorna ako i samo ako
je F 0 kontradiktorna.
POGLAVLJE 2. MATEMATIČKA LOGIKA 37
(a) Ako je egzistencijalni kvantifikator bio prvi u prefiksu, onda izaberemo kon-
stantu koja se ne pojavljuje u formuli te svaki nastup varijable koju je izbačeni
kvantifikator vezao u matrici zamijenimo odabranom konstantom.
(b) Ako je egzistencijalni kvantifikator k-ti u prefiksu, onda izaberemo k-narni
funkcijski simbol koji se do tada nije pojavljivao u formuli te svaki nastup
varijable koju je izbačeni kvantifikator vezao u matrici zamijenimo funkcijom
s odabranim simbolom čiji su argumenti sve varijable koje se u prefiksu nalaze
ispred izbačenog kvantifikatora.
Prije no što krenemo dalje, dat ćemo još jedan primjer skolemizacije rečenice.
No, zbog postojanja varijabli termi koji grafički izgledaju različito mogu ponekad biti
instancirani u isti temeljni term, tj. term bez varijabli. Stoga nije dovoljno pri rezoluciji
gledati samo literale koji grafički izgledaju isto. Potrebno je uvesti postupak koji će takve
terme svoditi na isti term. Taj se postupak naziva unifikacija.
Definicija 2.20 Neka je F formula računa predikata i neka je α = {t1 /v1 , . . . , tn /vn }
valuacija. Tada se formula F α koja se dobije zamjenom varijabli v1 , . . . , vn termima
t1 , . . . , tn naziva instanca formule F .
Definicija 2.21 Neka su α i β valuacije. Tada se njihova kompozicija α◦β, ili αβ definira
na sljedeći način: Za svaku formulu F je F (αβ) = (F α)β.
Maksimalan unifikator je posebno važan jer je on onaj unifikator koji najmanje mijenja
formule, a pri tome ih unificira. Za formule za koje postoji unifikator kažemo da se mogu
unificirati. Stoga je važan sljedeći teorem:
Teorem 2.8 Ako se formule F i G mogu unificirati, onda postoji maksimalni unifikator
od F i G.
Iako je moguće izvesti algoritam koji djeluje na proizvoljnim formulama računa pre-
dikata, nama je za potrebe rezolucije dovoljno definirati unifikaciju nad atomima. Sljedeći
algoritam pronalazi maksimalni unifikator atoma P1 : P (t1 , . . . , tn ) i P2 : P (s1 , . . . , sn )
uvijek kada on postoji.
Teorem 2.9 Gore opisani algoritam radi korektno, tj. pronalazi maksimalni unifikator
atoma P1 i P2 uvijek kada on postoji.
POGLAVLJE 2. MATEMATIČKA LOGIKA 39
Treba reći da se ovaj algoritam može lagano proširiti tako da radi s više od dva atoma.
Tada će skupovi Wi , Ri imati više članova. Tražit će se da u skupu razlika postoji varijabla
i term u kojem se ta varijabla ne pojavljuje, a cilj je, kao i kod slučaja s dva atoma, dobiti
jednočlan skup Wk . Nadalje, ovaj algoritam, u potpunosti nepromijenjen, može se koristiti
i za unifikaciju bilo kojih drugih formula računa predikata. Pri tome treba napomenuti
da, bez obzira na kakvim se formulama ovaj postupak provede, on može unificirati samo
razlike u termima. Ako se pojavi razlika u predikatnom simbolu, logičkom vezniku ili
kvantifikatoru, onda se unifikacija ne može provesti.
Sada, kad smo definirali skolemizaciju i unifikaciju moguće je definirati i rezoluciju za
račun predikata.
Neka je zadan skup rečenica {F1 , . . . , Fn } koje predstavljaju pretpostavke iz kojih
želimo izvesti zaključak - rečenicu G. Prisjetimo se prve karakterizacije logičke posljedice
(teorem 2.1). Ona kaže da je formula G logička posljedica skupa formula {F1 , . . . , Fn } ako
i samo ako je formula
F1 ∧ . . . ∧ Fn ∧ ¬G (2.3)
antitautologija.
Jasno je da se za formulu 2.3 može pronaći ekvikontradiktorna formula u Skolemovoj
normalnoj formi. No, je li potrebno skolemizirati cijelu tu, veliku fromulu? Odgovor
je - nije. Ako pretpostavke i zaključak nemaju zajedničkih varijabli, dovoljno je da se
skolemizira posebno svaka pretpostavka i negacija zaključka. Naime, u tom se slučaju,
zbog propozicije 2.3.5, Skolemove normalne forme pretpostavki i negacije zaključka mogu
povezati konjunkcijama, a nakon toga se svi veznici mogu izvući na početak formule i
tako se dobije Skolemova normalna forma formule 2.3. Kako se radi o rečenicama u
kojima su svi nastupi svih varijabli vezani, a kako su sve varijable koje su vezane vezane
univerzalnim kvantifikatorima, kvantifikatore možemo kod zapisa formule izostaviti. Na
taj ćemo način dobiti formulu koja ne sadrži kvantifikatore. Ovoj se formuli može pronaći
ekvivalentna formula u konjunktivnoj normalnoj formi na isti način kao što smo to radili za
formule računa sudova. Formulu u konjunktivnoj normalnoj formi možemo, kao što je već
rečeno, gledati kao skup disjunkata, koji se mogu medusobno rezolvirati. Sam postupak
rezolucije moramo, medutim, malo proširiti. Naime, kod računa sudova rezolviranjem su
se iz formula otklanjali atomarni sud i njegova negacija. Kod računa predikata otklanjati
se mogu i atomi koji nisu medusobno jednaki. Dovoljno je da se atom i negacija atoma
koje želimo otkloniti mogu medusobno unificirati.
Primjer 2.15 Dokažimo rezolucijom da iz formule ∀x∀y(P (x) → Q(x, y)) i iz ∃xP (x)
slijedi ∃x∀yQ(x, y).
Imamo sljedeće tri formule:
1. ¬P (x1 ) ∨ Q(x1 , y1 )
2. P (c)
3. ¬Q(x3 , f (x3 ))
4. Q(c, y1 ) (Res: 1,2 {c/x1 })
5. ¬P (x3 ) (Res: 1,3 {x3 /x1 , f (x3 )/y1 })
6. ⊥ (Res: 3,4 {c/x2 , f (x3 )/y1 })
Za račun predikata, isto kao i za račun sudova, koristi se semantička rezolucija, hiper-
rezolucija i linearna rezolucija. Ovi se pojmovi mogu pronaći detaljno opisani u [3], ali i
u [6].
2.3 Zadaci
Korištenjem definicije logičke posljedice dokažite da su sljedeće tvrdnje tau-
tologije:
1. {A ∨ B, A → B} |= B
2. {A ∨ B ∨ C, ¬A ∧ ¬B} |= C
3. {A → B, ¬(A ∨ ¬B} |= C
Pronadite konjunktivnu i disjunktivnu normalnu formu sljedećih formula
4. (A ∨ B) ↔ (C ∨ D)
5. (((¬A ∨ B) ∧ ¬C) ∨ D) ∧ ¬E
6. (¬A ∨ B) ∧ (C ∨ ¬D)
7. ¬((A ∨ B) → C)
8. Pomoću F sustava dokažite tvrdnje iz propozicije 2.2
9. Pomoću rezolucije dokažite tvrdnje iz propozicije 2.2
Bez upotrebe formalnih sustava dokažite da su sljedeće tvrdnje tautologije:
10. ∀x∀yP (x, y) → ∃y∀xP (x, y)
11. ∃x∃y(P (x, y) → q(x)) ↔ ¬∀x∀yP (x, y) ∨ ∃xQ(x)
12. ¬(∀x∃yP (x, y) ↔ ∃y∀xP (x, y))
13. ∀x∀yP (x, y) ↔ ∀y∀xP (x, y)
Pronadite Skölemovu normalnu formu sljedećih formula:
14. ∀x∃y(P (x, y) → Q(y)) ∧ ∀x∀y(P (x, x) ∨ Q(y))
15. ∃x(P (x, c) ↔ ∀y(P (f (x, y), y) ∧ ¬Q(x)))
16. Upotrijebom F-sustava dokažite tvrdnje propozicije 2.3
17. Pomoću rezolucijskog postupka dokažite tvrdnje propozicije 2.3
POGLAVLJE 2. MATEMATIČKA LOGIKA 41
2.4 Projekti
1. Definirajte potpunu sintaksu računa sudova u postfiksnoj notaciji.
Nakon toga predefinirajte sve teoreme iz poglavlja, tako da svi zapisi
formula u njima budu u postfiksnoj notaciji.
[1] Apt, K. R.: From Logic Programming to Prolog, Prentice Hall Int.,
London, England, 1997.
[2] Barwise, J.; Etchemendy, J.: The Language of First-Order Logic 3rd
edition, CSLI, Stanford, 1992.
[3] Chang, C.-L.; Lee, C.-T.: Symbolic Logic and Mechanical Theorem
Proving, Accademic Press, New York, 1973.
[6] Doets, K.: From Logic to Logic Programming, MIT Press, Cambridge,
1994.
[7] Flach, P.: Simply Logical, John Wiley & Sons Chichester, England,
1994.
43
44 BIBLIOGRAFIJA
Poglavlje 3
Diskretna matematika
45
46 3.1. SKUPOVI
3.1 Skupovi
Cilj je ovog poglavlja ponavljanje osnovnih pojmova vezanih uz skupove
kako bismo mogli izložiti teme koje slijede u knjizi, a u znatnoj mjeri koriste
skupove.
Pojam skupa u matematiku uvodi Georg Cantor (1845-1918). Skup
pripada osnovnim matematičkim pojmovima, odnosno pojmovima koje ne
definiramo. O skupu razmišljamo kao o kolekciji elemenata (članova), koje
zamišljamo kao cjelinu. Izuzetak je prazan skup ∅, koji nema elemenata.
A ⊆ B ⇔ (∀x ∈ A ⇒ x ∈ B).
Jednakost skupova
A = B ⇔ (A ⊆ B ∧ B ⊆ A).
Pravi podskup
A ⊂ B ⇔ (A ⊆ B ∧ A 6= B),
POGLAVLJE 3. DISKRETNA MATEMATIKA 47
tj.,
A ⊂ B ⇔ (A ⊆ B ∧ (∃x ∈ B, x ∈
/ A)).
P (A) = {X : X ⊆ A} .
CA B = {x : x ∈ A ∧ x ∈
/ B}
= A\B
2. D5 ∪ D9 .
48 3.1. SKUPOVI
3. D6 ∩ D9 ,
D12 \D9 .
1. Zakon idempotencije
A ∪ A = A, A ∩ A = A,
A ∪ ∅ = A, A ∩ ∅ = ∅.
2. Komutativnost
A ∪ B = B ∪ A,
A ∩ B = B ∩ A.
3. Asocijativnost
A ∪ (B ∪ C) = (A ∪ B) ∪ C,
A ∩ (B ∩ C) = (A ∩ B) ∩ C.
4. Distributivnost
A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C) ,
A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C) .
5. De Morganovi zakoni
C (A ∩ B) = C (A) ∪ C (B) ,
C (A ∪ B) = C (A) ∩ C (B) .
6. Dvostruki komplement
C (C (A)) = A.
Definicija 3.1 Neka su A,B dva neprazna skupa. Kartezijev produkt (di-
rektni produkt) skupova A i B je skup
A × B = {(a, b) : a ∈ A, b ∈ B} .
POGLAVLJE 3. DISKRETNA MATEMATIKA 49
Izraz (a1 , a2 , ..., an ) zovemo uredenom n-torkom i kod nje je važan pore-
dak elemenata.
svakom paru (a, b)²A × A pridružen je jedan luk pri čemu se prva kom-
ponenta para naziva izlaznim čvorom grafa, a druga komponenta ulaznim
čvorom. Graf relacije se obično nacrta tako da se njegovi vrhovi rasporede
otprilike kao vrhovi pravilnog mnogokuta, a zatim se lukovima povežu ele-
menti koji su u relaciji. Grafovi imaju veliku vrijednost za vizualizaciju
relacija i njihovih svojstava. Brojne mogućnosti primjene grafova u mode-
liranju problema u različitim znanstvenim područjima i sasvim konkretnih
problema, potakle su razvoj posebne matematičke discipline koja se zove
teorija grafova.
y
2
0 1 2 3 4 x
-1
-2
Slika 3.2
POGLAVLJE 3. DISKRETNA MATEMATIKA 51
Primjer 3.3 A = {a, b, c} , ρ = {(a, b), (a, c), (b, a), (b, b)} .
Odredite ρd , ρ̄ i ρc .
Obrat relacije odreduje se tako da se u parovima koji pripadaju zadanoj
relaciji zamijene prva i druga komponenta, pa imamo
ρc = {(a, a), (a, b), (b, c), (c, a), (c, b), (c, c)} .
ρd = {(a, a), (a, c), (b, a), (b, c), (c, b), (c, c)} .
1. refleksivna tj.
(∀x ∈ A) (x, x) ∈ ρ,
2. simetrična tj.
3. tranzitivna tj.
Kako bismo izrekli važna svojstva relacije ekvivalencije uvest ćemo važan
pojam particije skupa.
1. te klase su neprazne,
3. klase su disjunktne.
Prva tvrdnja i druga tvrdnja očito vrijede jer je zbog svojstva ekviva-
lencije svaki element u relaciji sam sa sobom. Da bismo dokazali treću
tvrdnju pretpostavimo da su [a]ρ i [b]ρ dvije različite klase ekvivalencije.
Pokazat ćemo metodom suprotnog da su u tom slučaju one disjunktne.
Pretpostavimo dakle da postoji element x² [a]ρ ∩ [b]ρ . Zbog toga vrijedi
xρa i xρb. Budući da je ρ relacija ekvivalencije, vrijedi implikacija aρx ∧
xρb =⇒ aρb. To bi pak značilo da elementi a i b pripadaju istoj klasi. Zbog
tranzitivnosti relacije ρ u tom slučaju bi i svi elementi koji su u relaciji s
jednim od ta dva elementa ujedno bili u relaciji i s drugim elementom, pa
njihove klase ekvivalencije ne bi mogle biti različite.
Vrijedi i obrat tj. sljedeća propozicija.
1. (a, b) ρ (c, d) ⇔ a + 2b = c + 2d
2. (a, b) ρ (c, d) ⇔ ab = cd
3. (a, b) ρ (c, d) ⇔ a2 + b = c + d2
4. (a, b)ρ(c, d) ⇔ a2 − b = c + d2
3.3.2 Kongruencije
Modularna ekvivalencija ili kongruencija je primjer relacije ekvivalencije
koja se koristi u informatici (npr. u postupcima programiranja kontrole
odredenih računskih postupaka). Ta relacija prirodno inducira particiju
skupa cijelih brojeva Z. Na primjer, cijeli brojevi su ekvivalentni modulo 2,
ako je njihova razlika paran broj. Tako dobivamo particiju cijelih brojeva na
parne i neparne cijele brojeve. Općenito se može promatrati ekvivalencija
modulo k, gdje je k bilo koji prirodan broj.
a ≡ b (mod k) ⇐⇒ ∃n ∈ Z, a − b = nk
a ≡ b mod n ⇔ ā = b̄, n ∈ N.
a + c ≡ (b + d) mod k,
ac ≡ (bd) mod k.
56 3.3. RELACIJA EKVIVALENCIJE
(a − c) − (b − d) = (n − m) k,
što je ekvivalentno tvrdnji a + c ≡ (b + d) mod k. Nadalje, da bismo dokazali
formulu za množenje kongruencija treba dokazati da je ac − bd djeljivo sa
k. Proširimo izraz ac − bd sa ad i −ad pa računamo ac − ad + ad − bd =
a (c − d)+d (a − b) = akm+dkn = k (am − dn) . Zaključujemo da je ac−bd
djeljivo s k.
Pogrešno bi bilo zaključiti da je formula za dijeljenje kongruencija pri-
rodna, kao što su formule za zbrajanje i množenje kongruencija. Zapravo
kongruenciju možemo dijeliti s brojem koji je relativno prost s modulom k.
Da kongruencije ne možemo dijeliti s proizvoljnim cijelim brojem poka-
zuje sljedeći primjer. Očito vrijedi 90 ≡ 30 mod 12, ali dijeljenjem s brojem 6
dobili bismo 15 ≡ 5 mod 12, a to očito nije istinito. S druge strane dijeljenjem
gornje kongruencije s 5 dobivamo da je 18 ≡ 6 mod 12, što je istinito.
Uzmimo općenito da je ac ≡ bc mod k i M (c, k) = 1. Znači da postoji
cijeli broj n takav da je ac − bc = nk. Sada je c (a − b) = nk i znamo li da
su c i k relativno prosti, tada je a − b = km, gdje je m = n/c. Ukoliko c i k
nisu relativno prosti zaključak ne vrijedi. Vrijedi sljedeća propozicija:
Teorem 3.2 Neka je p prost broj, koji nije djelitelj od a. Tada vrijedi
ap−1 ≡ 1 mod p.
1. 4x ≡ 2 mod 6,
2. 5x ≡ 5 mod 25,
3. x2 ≡ 4 mod 13,
4. x2 ≡ 1 mod 7.
a1 , a2 , ..., a10 ,
x ≡ a1 (mod m1 )
x ≡ a2 (mod m2 ) (3.2)
..
.
x ≡ ar (mod mr )
ima rješenja.
POGLAVLJE 3. DISKRETNA MATEMATIKA 59
x ≡ x0 (mod m1 · m2 · . . . · mr ).
m
Dokaz. Neka je m = m1 · m2 · . . . · mr . Definiramo nj = m j
, j = 1, . . . , r.
Tada je (nj , mj ) = 1. Da bismo pokazali da sustav 3.2 ima rješenja koristimo
sljedeći teorem:
x0 ≡ nj xj ≡ aj (mod mj )
x ≡ aj (mod mj )
y ≡ aj (mod mj ), j = 1, . . . , r
x − y ≡ 0(mod mj ), j = 1, . . . , r
tj.
x ≡ y(mod mj ), j = 1, . . . , r
x ≡ y(mod m1 · m2 · . . . · mr ),
x ≡ 1(mod 5)
x ≡ 5(mod 7)
x ≡ 4(mod 11)
Rješenje:
m1 = 5, m2 = 7, m3 = 11
(mi , mj ) = 1, ∀i, j = 1, 2, 3
m = m1 · m2 · m3 = 385
n1 = mm1 = 385 5 = 77
m 385
n2 = m2 = 7 = 55
n3 = mm3 = 38511 = 35
x = n1 x1 + n2 x2 + n3 x3
x = 77x1 + 55x2 + 35x3 , pri čemu x1 , x2 , x3 zadovoljavaju
77x1 ≡ 1(mod 5)
55x1 ≡ 5(mod 7)
35x1 ≡ 4(mod 11)
x0 = 77 · 3 + 55 · 2 + 35 · 2 = 411 ⇒
x ≡ 411(mod 385)
x ≡ 26(mod 385)
3.3.3 Aritmetika u Zk
Budući da je kongruencija modulo k relacija ekvivalencije, ona definira par-
ticiju skupa Z u neprazne disjunktne klase X0 = 0̄, X1 = 1̄, ..., Xk−1 = k − 1.
Znamo da je
k−1
[
Z= Xi .
i=0
Definicija 3.9 Skup cijelih brojeva modulo k u oznaci Zk je skup svih klasa
ekvivalencije s obzirom na kongruenciju na Z.
POGLAVLJE 3. DISKRETNA MATEMATIKA 61
1. a ⊕b ∈ Zk ,
2. a ⊕b = b ⊕a,
3. (a ⊕ b) ⊕ c = a ⊕ (b ⊕ c) ,
4. a ⊕ 0 = a.
5. a ⊗b ∈ Zk ,
6. a ⊗b = b ⊗a,
7. (a ⊗ b) ⊗ c = a ⊗ (b ⊗ c) ,
8. a ⊗ 1 = a,
9. a ⊗ (b ⊕ c) = (a ⊗ b) ⊕ (a ⊕ c),
(∀x ∈ A) (x, x) ∈ ρc ,
izmedu {1} i {1, 2} te izmedu {1, 2} i {1, 2, 3}, jer se zbog rasporeda na
različite visine i postojeća dva luka podrazumijeva luk izmedu {1} i {1, 2, 3}.
Kad je skup parcijalno ureden ne znači da svaka dva elementa skupa
možemo usporedivati. Uzmimo da je A = {1, 2, 3} i relacija ⊆ dana na
P (A) . Podskupovi {1, 2} i {3} nisu usporedivi, tj. {1, 2} 6⊆ {3} i {3}
6⊆ {1, 2}.
Primjer 3.13 Parcijalno uredeni skup (R, ≤) je lineano uredeni skup, ali
općenito (P (A) , ⊆) nije linearno uredeni skup.
{a}
∅ {a,b}
{b}
Slika 3.3
POGLAVLJE 3. DISKRETNA MATEMATIKA 65
{a,b,c}
∅
Slika 3.4
1. d ¹ a, d ¹ b,
1. a ¹ g, b ¹ g,
je. Medutim ograničeni, strogo padajući niz realnih brojeva ima najveću
donju medu koja je realni broj. Ova je tvrdnja vrlo važna, pa se često
uzima kao aksiom za gradnju skupa realnih brojeva. Taj aksiom zovemo
aksiomom potpunosti za skup realnih brojeva.
Definicija 3.18 Parcijalno uredeni skup (A, ¹) kod kojeg svaka dva ele-
menta imaju najveću donju medu i najmanju gornju medu zovemo mreža
(eng. lattice).
Parcijalno uredeni skupovi (R, ≤) i (P (A) , ⊆) su mreže.
Zadatak 3.13 Dokažite da ako postoji najveća donja meda dvaju eleme-
nata u parcijalno uredenom skupu onda je ona jedinstvena.
Dokažite da ako postoji najmanja gornja meda dvaju elemenata u par-
cijalno uredenom skupu onda je ona jedinstvena.
3.5 Funkcije
Pojam funkcije toliko je važan da se na različite načine i u različitim ulogama
pojavljuje u svim granama matematike, ali i u drugim znanstvenim disci-
plinama i praktičnim problemima.
Evo općenite definicije funkcije.
f ◦ f −1 = id |K , f −1 ◦ f = id |D (3.3)
Definicija −1
¡ −1 ¢3.24 Neka je f bijekcija. Inverzna funkcija f je obrat relacije
¯
f f = f , tj.
f −1 = {(b, a) : (a, b) ∈ f } .
zovemo inverzijom u p.
Označimo sa I (p) ukupan broj inverzija u p.
Definirajmo funkciju sign kao
f : A → B, A, B ⊆ R.
ax + b
f (x) = ,
cx + d
uz uvijet x 6= − dc .
Od transcendentnih funkcija spomenimo:
• ekponencijalnu i logaritamsku, te
• trigonometrijske i ciklometrijske (arkus) funkcije.
Df = {x ∈ R | Q (x) 6= 0} .
p
2k
• iracionalna funkcija oblika f (x) = g (x), k ∈ Z ioma domenu
Df = {x ∈ R | g (x) ≥ 0} .
Df = {x ∈ R | g (x) > 0} .
• ciklomerijske funkcije f (x) = arcsin (g (x)) i f (x) = arccos (g (x)) imaju domenu
Df = {x | −1 ≤ g (x) ≤ 1} .
Γf = {(x, f (x)) | x ∈ Df } .
Eksponencijalne funkcije
Eksponencijalna funkcija je oblika
f (x) = ax , a > 0, a 6= 1, f : R → h0, ∞i
Svojstva:
1. a0 = 1, ∀a.
2. ax > 0, ∀x ∈ R.
3. Os x je horizontalna asimptota.
1 x
Primjer 3.20 f (x) = 2
-2 -1 0 1 2 x
Slika 3.5
-2 -1 0 1 2 x
Slika 3.6
76 3.6. GRAF FUNKCIJE
Logaritamska funkcija
f (x) = loga x, f : h0, ∞i → R
Logaritamska funkcija s bazom a (a > 0, a 6= 1) inverzna je funkcija eksponencijalne
funkcije s bazom a.
Ponovimo osnovna svojstva logaritama. Za realne brojeve a, b i c, pri čemu su a, b > 0,
a 6= 1 vrijedi:
Definicija 3.28
loga b = c ⇔ ac = b (3.6)
Svojstva:
1. loga 1 = 0.
2. loga a = 1.
3. aloga x = x.
4. loga ax = x.
5. loga (xy) = loga x + loga y.
x
6. loga y
= loga x − loga y.
p
7. loga x = p loga x, p ∈ R, p6=0.
logb x
8. loga x = logb a
.
1
9. loga b = logb a
.
-1 0 1 2 3 4 x
-1
-2
Slika 3.7
POGLAVLJE 3. DISKRETNA MATEMATIKA 77
-1 0 1 2 3 4 x
-1
-2
-3
Slika 3.8
Cjelobrojne funkcije
Cjelobrojne funkcije imaju važnu ulogu u informatici. To su realne funkcije realne vari-
jable, čija je kodomena skup cijelih brojeva. Spomenimo funkciju ”najveće cijelo manje
od” (floor - pod) i ”najmanje cijelo veće od” (ceiling - strop). Dakle, za cjelobrojne funkcije
f je kodomena skup cijelih brojeva.
Definicija 3.29 Za svaki realni broj x definiramo bxc kao najveći cijeli broj manji ili
jednak x.
Za svaki realni broj x definiramo dxe kao najmanji cijeli broj veći ili jednak od x.
bxc ≤ x ≤ dxe ,
x−1 ≤ bxc ≤ x,
x ≤ dxe ≤ x + 1.
78 3.6. GRAF FUNKCIJE
Definicija 3.31 Skup A je konačan ako je prazan ili postoji bijekcija iz A u skup Nn =
{1, 2, 3, ..., n} koji se sastoji od prvih n prirodnih brojeva. Ako A nije konačan onda je
beskonačan.
Definicija 3.32 Skup A je prebrojivo beskonačan ako i samo ako |A| = |N|, a prebrojiv
ako i samo ako je konačan ili prebrojivo beskonačan. Beskonačni skup koji nije prebrojiv
je neprebrojiv .
Oznaka kardinalnog broja skupa prirodnih brojeva je. |N| = ℵ0 (alef nula).
Pokazuje se da je |N| = |Z| = |Q| = ℵ0 .
Propozicija 3.12 Skup h0, 1i nije prebrojivo beskonačan i pišemo |h0, 1i| = c (kontinu-
um).
• an = 2n
3n −1
• an = 2
• ak = 2 · ak−1 , k ≥ 2, a1 = 2
• ak = 3 · ak−1 + 1, k ≥ 2, a1 = 1
Aritmetički niz
Jedan od najpoznatijih rekurzivno zadanih nizova je aritmetički niz o kojem
govori definicija 3.33:
a1 = a, an = an−1 + d. (3.8)
Primjer 3.27
an = (an−2 + d) + d = an2 + 2 · d
Uzastopnim ponavljanjem primjene formule 3.8 dolazimo do formule
(n−1)×
z }| {
an = (a1 + d + . . . + d) = a1 + (n − 1) · d
Time smo dobili eksplicitnu formulu za izračunavanje općeg člana arit-
metičkog niza.
Sljedeća zanimljiva formula je ona koja daje sumu prvih n članova arit-
metičkog niza. Ta je formula dana u sljedećoj propoziciji:
n · (n − 1) n
Sn = n · a + · d = (a1 + an ) (3.9)
2 2
Dokaz. Dokaz ide indukcijom po n. Napravite ga sami.
Geometrijski niz
Geometrijski niz je drugi vrlo važan niz koji se može zadati rekurzivno.
a1 = a, an = q · an−1 . (3.10)
Primjer 3.28
(n−1)×
z }| {
an = a1 ·q . . . · q = a1 · q n−1
Za geometrijski se niz, kao i za aritmetički, može izvesti formula za sumu
prvih n članova.
1 − qn
Sn = a · (3.11)
1−q
Dokaz. Indukcijom po n. Izvedite ga sami.
***
No, geometrijski je red konvergentan za q ∈< −1, 1 >. To znači da, pustimo li da
broj članova geometrijskog niza raste prema beskonačnosti, njihova će se suma sve više
približavati nekom broju koji nije beskonačan. Kojem će se broju približavati suma?
Teorem 3.8 Neka je s a1 i an = q · an−1 zadan geometrijski niz i neka je q ∈ h−1, 1i.
Tada je
a1
lim Sn = . (3.12)
n→∞ 1−q
Dokaz. Potrebno je izračunati limes
1 − qn
lim Sn = lim an ·
n→∞ n→∞ 1−q
No, ako je q ∈ h−1, 1i, onda je lim q n = 0, pa tvrdnja slijedi iz linearnosti limesa.
n→∞
Fibonaccijev niz
U XIII. stoljeću poznati matematičar Leonardo Fibonacci iz Pise, bavio
se problemom povećanja broja zečeva razmnožavanjem. Problem je zadan
na sljedeći način: svaki par zečeva starih barem dva mjeseca dobiju par
zečića svaki mjesec, pri tome je uvijek jedan zečić muškog a jedan ženskog
spola. Ako smo započeli uzgoj s jednim parom novorodenih zečića, koliko
ćemo zečeva imati nakon n mjeseci? Fibonacci je dokučio da se broj zečeva
povećava prema sljedećem nizu: 1, 1, 2, 3, 5, 8, 13, 21, . . .. Odnosno prema
nizu koji se može zadati rekurzivno kao
xk − ck · xk + . . . c1 · x + c0 = 0 (3.16)
naziva karakteristična jednadžba linearne homogene rekurzivne jednadžbe
3.15
an = C1 · xn1 + . . . + Ck · xnk .
Dokaz ovog teorema nećemo provoditi. Zainteresirani čitatelj dokaz može
naći u [12], str. 182.
uz početne uvjete
f1 = f2 = 1. (3.18)
Karakteristična jednadžba ove rekurzije je kvadratna jednadžba
x2 − x − 1 = 0.
Stoga su korijeni ove jednadžbe
√ √
1± 1+4 1± 5
x1,2 = = ,
2 2
pa opće rješenje rekurzije 3.17 glasi:
" √ #n " √ #n
1+ 5 1− 5
fn = C1 · + C2 · . (3.19)
2 2
Vrijednosti konstanti C1 i C2 dobivamo iz početnih uvjeta. Uvrstimo li
početne uvjete u jednadžbu 3.19 dobivamo sustav jednadžbi
√ √
1+ 5 1− 5
f1 = 1 = C1 · + C2 · ,
2 2
" √ #2 " √ #2
1+ 5 1− 5
f2 = 1 = C1 · + C2 · .
2 2
(3.20)
Riješimo li ovaj sustav dobit ćemo C1 = √15 i C2 = − √15 . Dakle, opći član
Fibonaccijevog niza iznosi
" √ #n " √ #n
1 1+ 5 1 1− 5
fn = √ · −√ · .
5 2 5 2
x3 − 5 · x2 + 8 · x − 4 = 0.
Uočimo da ovu jednadžbu možemo faktorizirati na sljedeći način:
(x − 1) · (x − 2)2 = 0.
Iz posljednje formule slijedi da jednadžba ima jednostruki korijen 1 i dvo-
struki korijen 2, pa je njeno opće rješenje oblika:
an = C1 · 1n + C2 · 2n + C3 · n · 2n , (3.21)
gdje cu c1 , c2 i c3 proizvoljne konstante. Uvrstimo li početne uvjete u jed-
nadžbu 3.21 dobit ćemo sljedeći sustav:
a1 = 0 = C1 + 2 · C2 + 2 · C3
a2 = 2 = C1 + 4 · C2 + 8 · C3
a3 = 2 = C1 + 8 · C2 + 24 · C3
an = −6 + 4 · 2n − n · 2n .
Treći je slučaj kada rekurzivna jednadžba ima konjugirano kompleks-
ne korijene. Kako govorimo o rekurzivnim jednadžbama s konstantnim re-
alnim koeficijentima, njihove su karakteristične jednadžbe se dobivaju iz-
jednačavanjem polinoma realne varijable s realnim koeficijentima sa nulom.
Prema tome, ako karakteristična jednadžba ima kompleksan korijen, on
mora činiti par korijena s njemu konjugiranim kompleksnim brojem (vidi
[7], str. 51.). Ovaj se slučaj može rješavati slično kao slučaj s realnim ko-
rijenima. Medutim, imamo li korijene z1,2 = a ± b · i, tada ta dva korijena
daju u rješenju:
C1 · (a + b · i)n + C1 · (a − b · i)n .
Primijenimo li de Moivreovu formulu dobit ćemo
C1 · |z1 |n (cos nϕ1 + i sin nϕ1 ) + C2 · |z2 |n (cos nϕ2 + i sin nϕ2 ), (3.22)
POGLAVLJE 3. DISKRETNA MATEMATIKA 85
pri čemu je
a
cos ϕ = √ ,
a + b2
2
b
sin ϕ = √ .
a2 + b2
S druge strane, kako su z1 i z2 konjugirano
√ kompleskni brojevi, njihova je
apsolutna vrijednost jednaka i iznosi a + b2 .
2
Slično, ϕ2 = −ϕ1 , pa je cos nϕ1 = cos nϕ1 i sin nϕ2 = − sin nϕ2 .
Raspišemo li formulu (3.22), uz gore navedene primjedbe pa uzmemo da je
z = z1 , ϕ = ϕ1 te da je K1 = C1 + C2 i K2 = C1 − C2 , dobit ćemo
x2 − 2 · x + 2 = 0
Njeni korijeni su x1,2 = 1 ± i, pa imamo
p √
|z| = 12 + 12 = 2
Nadalje,
√
1 2
cos ϕ = √ = ,
2
1 +12 2
√
1 2
sin ϕ = √ = ,
2
1 +12 2
iz čega slijedi da je
π
ϕ=
4
te da je
√ ³ π π´
an = ( 2)n · K1 · cos n + K2 · i · sin n .
4 4
Uvrstimo li početne uvjete dobivamo sustav jednadžbi
√ ³ π π´
2 = 2 · K1 · cos + K2 · i · sin ,
4 4
³√ ´2 ³ π π´
2 = 2 · K1 · cos 2 + K2 · i · sin 2 ,
4 4
86 3.7. REKURZIVNE RELACIJE
odnosno
à √ √ !
√ 2 2
2 = 2· K1 · + K2 · i · ,
2 2
2 = 2 · (K2 · i) .
iz čega izlazi da je K1 = 1.
Dakle, opće rješenje ove rekurzije je
µ ¶
√ n Π Π
an = ( 2) · cos n + sin n .
4 4
Time smo opisali sve moguće slučajeve koji se javljaju kod rješavanja
linearnih homogenih rekurzivnih jednadžbi s konstantnim koeficijentima.
Sljedeći problem koji se postavlja jest problem rješavanja nehomogenih li-
nearnih rekurzivnih jednadžbi.
Dokaz ovog teorema, kao i prethodna dva, može se naći u [12], str. 188.
Postavlja se problem kako pronaći partikularno rješenje? Za taj pro-
blem ne postoji neka standardna metoda no za neke je funkcije poznat oblik
partikularnog rješenja. Neke od tih funkcija dane su u sljedećoj tablici:
1
Obično se takvo proizvoljno rješenje naziva partikularno rješenje
POGLAVLJE 3. DISKRETNA MATEMATIKA 87
an = 2an−1 + 1,
uz uvjet da je a1 = 1.
Pripadna homogena jednadžba ove rekurzije je an = 2an−1 , a njena karak-
teristična jednadžba je
x − 2 = 0.
Korijen ove jednadžbe je x1 = 2 pa je opće rješenje pripadne homogene
rekurzivne jednadžbe
an = C · 2n .
Iz tablice pročitamo partikularno rješenje, te dobijamo da je opće rješenje
nehomogene rekurzivne jednadžbe
an = C · 2n + A.
Kako bismo pronašli partikularno rješenje, stavljamo da je
an = A.
A = an = 2an − 1 + 1 = 2A + 1.
an = C1 · 2n − 1.
Uvrstimo li početni uvjet, imat ćemo
1 = C1 · 2 − 1.
an = 2n − 1.
Nehomogene rekurzije mogu se jednostavno izračunavati i na drugi način,
bez upotrebe tablice partikularnih rješenja: svodenjem nehomogene rekurzi-
je na homogenu. Prikazat ćemo kako se to radi na rekurzijama iz prethodna
dva zadatka.
an = 2an−1 + 1
an−1 = 2an−2 + 1
an − an−1 = 2an−1 − 2an−2 .
an = 3an−1 − 2an−2 .
Karakteristična jednadžba ove rekurzije je
x2 − 3x + 2 = 0.
Korijeni ove jednadžbe su x1 = 1, x2 = 2, pa je opće rješenje rekurzije oblika:
an = C1 · 1n + C2 · 2n . (3.23)
Kako se prilikom homogenizacije povećao stupanj rekurzije, potrebno je
pronaći još jedan početni uvjet:
a2 = 2a1 + 1 = 3.
Uvrstimo li sada oba početna uvjeta u dobiveno opće rješenje i dobijamo:
1 = C1 + C2 · 2,
3 = C1 + C2 · 4.
an = 2n − 1.
an = 4an−1 + n · 2n+1
2an−1 = 8an−2 + (n − 1) · 2n+1
an − 2an−1 = 4an−1 − 8an−2 + 2n+1 .
x3 − 8x2 + 20x − 16 = 0.
an = C1 · 2n + C2 · n · 2n + C3 · 4n .
Za rješavanje su nam potrebna tri početna uvjeta, pa trebamo izračunati još
a1 i a2 .
a1 = 4 · 4 + 2 · 2 = 20,
a2 = 4 · 20 + 2 · 2 · 22 = 96.
4 = C1 + C3
20 = 2C1 + 2C2 + 4C3
96 = 4C1 + 8C2 + 16C3
an = −4 · 2n + −2 · n · 2n + 8 · 4n .
Prije no što krenemo na metodu rješavanja rekurzija na još jedan način,
pomoću funkcija izvodnica, opisat ćemo još jedan oblik rekurzija koje nisu
linearne, ali se mogu izračunati pomoću linearnih rekurzivnih jednadžbi.
Ove jednadžbe igraju bitnu ulogu u ocjenjivanju složenosti algoritama, jer se
vrlo često javljaju pri ocjeni složenosti algoritama koji su izvedeni metodom
podijeli pa ovladaj . Stoga se ove rekurzije često i nazivaju podijeli pa ovladaj
rekurzije. Ovdje se radi o rekurziji oblika:
an = c · a nk + f (n). (3.24)
Rekurzije se ovog tipa mogu svesti na linearne rekurzije i riješiti pomoću
karakterističnog polinoma.
90 3.7. REKURZIVNE RELACIJE
čime smo dobili linearnu nehomogenu rekurziju prvog reda. Oduzmimo jed-
nadžbu za član sn−1 od jednadžbe za član sn
sn = sn−1 + n
sn−1 = sn−2 + n − 1
sn − sn−1 = sn−1 − sn−2 + 1,
iz čega slijedi da je
sn = 2sn−1 − sn−2 + 1.
Oduzmemo li opet formulu za (n − 1)-vi član niza od formule za n-ti član,
imamo:
sn = 2sn−1 − sn−2 + 1
sn−1 = 2sn−2 − sn−3 + 1
sn − sn−1 = 2sn−1 + 3sn−2 + sn−3 .
x3 − 3x2 + 3x − 1 = 0.
Karakteristična jednadžba ima trostruki korijen x1,2,3 = 1, pa je opće rješe-
nje oblika
sn = C1 · 1n + C2 · n · 1n + C3 · n2 · 1n ,
odnosno
sn = C1 + C2 · n + C3 · n2 .
potrebno je pronaći tri početna uvjeta kako bismo mogli odrediti koeficijente
u općem rješenju:
s0 = a1 = 0,
s1 = a2 = a1 + 2 = 2,
s2 = a4 = a2 + 4 = 6.
POGLAVLJE 3. DISKRETNA MATEMATIKA 91
0 = C1 ,
2 = C1 + C2 + C3 ,
6 = C1 + 2C2 + 4C3 .
sn = n + n2 .
Vratimo se sada zadanoj rekurziji. Sada imamo:
sn = a2n = n + n2 ,
odnosno,
an = log2 n + log22 n.
f (x) = a0 + a1 x + a2 x2 + . . .
1
= 1 + x + x2 + . . . (3.25)
1−x
Jasno je da je
(1 − x)(1 + x + x2 + . . .) = 1 + x − x + x2 − x2 + . . .
= 1 + 0x + 0x2 + . . .
= 1. (3.26)
1
= 1 + 2x + 3x2 + . . . (3.28)
(1 − x)2
odnosno upravo jednadžbu 3.27.
f (x) = a0 + a1 x+ a2 x2 + ...+ an x n + . . .
3xf (x) = 3a0 x + 3a1 x2 + ...+ 3an−1 xn + . . .
dobit ćemo
f (x) − 3xf (x) = a0 + (a1 − 3a0 )x + (a2 − 3a1 )x2 + . . . + (an − 3an−1 )xn + . . .
f (x)(1 − 3x) = 1,
odnosno
1
f (x) = .
1 − 3x
Koristeći jednadžbu 3.25 dobivamo
f (x) = 1 + 3x + 32 x2 + . . . + 3n xn + . . . ,
pa je rješenje
an = 3n .
Permutacije
Prvi kombinatorni problem koji ćemo ovdje prikazati jest problem per-
mutacija. Imamo skup od n različitih elemenata. Postavlja se pitanje, na
koliko različitih načina se ti elementi mogu poredati u uredenu n-torku?
Drugim riječima, koliko različitih nizova od n elemenata, ili permutacija,
možemo načiniti od tih n brojeva? Broj permutacija dan je sljedećom for-
mulom:
P (n) = n! = n · (n − 1) · . . . · 1. (3.29)
94 3.8. DISKRETNA TEORIJA VJEROJATNOSTI
(n1 ,...,nk ) n!
Pn = .
n1 ! · . . . · nk !
Ovakve se permutacije nazivaju permutacije s ponavljanjem.
Primjer 3.38 Neka imamo 5 žutih, 4 crvene i 3 plave kuglice. Ako istoboj-
ne kuglice medusobno ne razlikujemo, na koliko se načina može napraviti
niz od tih kuglica?
12!
P 1 2(5,4,3) = = 27720.
5! · 4! · 3!
Varijacije
Drugi važan kombinatorni pojam koji ćemo ovdje definirati jest pojam va-
rijacije. Postoje dvije vrste varijacija - varijacije bez i sa ponavljanjem.
Pitanje koje se postavlja je, na neki način, proširenje pitanja koje smo
postavili kada smo govorili o permutacijama, samo što se sada niz ne tvori od
svih n elemenata, već od k elemenata. Dakle, koliko različitih nizova duljine
k možemo napraviti od n različitih elemenata, odnosno koliko postoji varija-
cija k-tog razreda od n elemenata bez ponavljanja? Odgovor je dan sljedećom
formulom:
n!
Vn(k) = . (3.31)
(n − k)!
Primjer 3.39 Od 7 vojnika potrebno je izabrati 5 i poredati ih u vrstu. Na
koliko je to načina moguće učiniti?
(5)7!
V7 = 2520
=
2!
Pretpostavimo da se ne radi o skupu, već o multiskupu, tj. da se odredeni
element može izabrati više puta. Pitanje, na koliko se načina može izabrati
k elemenata iz multiskupa, koji sadrži n različitih elemenata, je pitanje va-
rijacija n elemenata k-tog razreda s ponavljanjem. Broj različitih varijacija
k-tog razreda od n elemenata s ponavljanjem je
(k)
V n = nk . (3.32)
POGLAVLJE 3. DISKRETNA MATEMATIKA 95
Kombinacije
Posljednji kombinatorni pojam, koji ćemo definirati, je pojam kombinacija.
Pitanje koje se postavlja je pitanje izbora nekog podskupa danog skupa,
a ne niza elemenata. Dakle, želimo doznati na koliko načina se može iz
skupa od n elemenata izabrati podskup od k elemenata. Onda se govori o
kombinacijama k-tog razreda od n elemenata bez ponavljanja. Njihov broj
je
µ ¶
n n!
Cn(k) = = (3.33)
k k! · (n − k)!
Primjer 3.41 Djeci je u školi za lektiru predloženo 17 knjiga, ali oni moraju
pročitati samo 10. Koliko različitih izbora djeca mogu učiniti?
Djeca mogu učiniti
µ ¶
(10) 17
C17 =
10
17 · 16 · . . . · 2 · 1
=
10 · 9 · . . . · 1 · 7 · 6 · . . . · 1
17 · 16 · 15 · 14 · 13 · 12 · 11
=
7·6·5·4·3·2·1
= 19448
µ ¶
(10) 5 + 10 − 1
C5 =
10
µ ¶
14
=
10
14!
=
10! · 4!
= 1001.
Sljedeće što želimo učiniti, i što će biti vrlo korisno, jest uvesti vezu
izmedu kombinacija i binomnih koeficijenata, te uvesti neke propozicije koje
će nam opisati odnose izmedu različitih binomnih koeficijenata.
µ ¶µ ¶ µ ¶
P
m m n m+n
= , (Vandermondeova konvolucija)
i=1 i r+i m+r
µ ¶2 µ ¶
Pn n 2n
= ,
i=0 µ i ¶ µ
n
¶ µ ¶
Pm m−i n+i m+n+1
= . (Vandermondeova konv.)
i=1 r s r+s+1
Dokazi ovih identiteta mogu se pronaći u [12].
Definicija 3.37 Skup Ω svih mogućih ishoda naziva se skup uzoraka ili
prostor elementarnih dogadaja. Svaki element skupa Ω naziva se elementarni
dogadaj. Svaki podskup skupa Ω naziva se dogadaj.
Dogadaj je svaki rezultat slučajnog pokusa. Npr. imamo li slučajni
pokus bacanja 5 igraćih kocaka, onda se ”palo je pet šestica” smatra doga-
dajem.
Jasno je da su ∅ ⊆ Ω i Ω ⊆ Ω takoder dogadaji. Prvi se naziva nemoguć
dogadaj , a drugi siguran dogadaj .
A ∩ B = ∅.
1. P (∅) = 0
98 3.8. DISKRETNA TEORIJA VJEROJATNOSTI
Odatle slijedi da je
P (∅) = 1 − P (Ω) = 1 − 1 = 0.
k+1
[ k
[
P( Ai ) = P ( Ai ∪ Ak+1 )
i=1 i=1
= P (A ∪ Ak+1 ) = P (A) + P (Ak+1 )
k
X
= P (Ai ) + P (Ak+1 )
i=1
k+1
X
= P (Ai )
i=1
iz toga slijedi da je
P (A ∪ Ac ) = P (Ω) = 1, (3.37)
P (A ∪ Ac ) = P (A) + P (Ac ).
Iz posljednjeg imamo
P (Ac ) = 1 − P (A).
à n
! n
[ X X
P Ai = P (Ai ) − P (Ai ∩ Aj )
i=1 i=1 1≤i<j≤n
X
+ P (Ai ∩ Aj ∩ Ak ) − . . .
1≤i<j<k≤n
à à n
!!
\
n+1
+ (−1) P Ai .
i=1
à n
!
[
P Ai = P (B ∪ An ) = P (B) + P (An ) − P (B ∩ An ). (3.39)
i=1
n−1
à Ãn−1 !!
X X \
n
P (B) = P (Ai ) − P (Ai ∩ Aj ) + . . . + (−1) P Ai .
i=1 1≤i<j≤n−1 i=1
(3.40)
S
n−1
Nadalje, B ∩ An = Ci , što, prema pretpostavci indukcije daje
i=1
POGLAVLJE 3. DISKRETNA MATEMATIKA 101
n−1
X X
P (B ∩ An ) = Ci − P (Ci ∩ Cj ) + . . .
i=1 1<leqi<j≤n−1
n−1
Ãn−1 !
X \
n
+(−1) P Ci
i=1 i=1
n−1
X
= (Ai ∩ An ) (3.41)
i=1
X
− P (Ai ∩ Aj ∩ An ) + . . .
1≤i<j≤n−1
à n
!
\
+(−1)n P Ai
i=1
µ ¶
(5) 10
C6 =
5
10 · 9 · 8 · 7 · 6
=
5·4·3·2·1
= 252.
Broj rezultata bez šestica je jednak broju mogućih izbora pet brojeva
izmedu brojeva 1-5, a to je
µ ¶
(5) 9
C5 = = 126
5
102 3.8. DISKRETNA TEORIJA VJEROJATNOSTI
126
P (B0 ) = .
252
Vjerojatnost da se pojavi točno jedna šestica jest
70
P (B1 ) = .
252
I na kraju, vjerojatnost da se pojave točno dvije šestice jest
35
P (B2 ) = .
252
Konačno, označino li s B dogadaj da su pale najviše dvije šestice, imamo
da je
231
P (B) = P (B0 ) + P (B1 ) + P (B2 ) = .
252
Taj je dogadaj komplementaran našem dogadaju A koji kaže da su pale
najviše 3 šestice. Dakle, vrijedi
1
P (A) = 1 − P (B) = .
12
Gornji račun sadrži neke od važnih zakona koji vrijede za vjerojatnosti.
Isti se rezultat mogao dobiti i neposrednije. Dogadaj A se sastoji od tri
disjunktna poddogadaja:
15
P (A3 ) = ,
252
5
P (A4 ) =
252
1
P (A5 ) = .
252
Ukupno,
21 1
P (A) = P (A3 ) + P (A4 ) + P (A5 ) = = .
252 12
Primjer 3.44 Neka se bacaju četiri jednake igraće kockice. Koja je vjero-
jatnost da su bačena barem dva ista broja?
Izračunajmo, slično prethodnom zadatku, koja je vjerojatnost da su pale
barem dvije šestice.
Označimo li s A(6) dogadaj koji kaže da je palo barem dvije šestice,
prema razmatranjima iz prethodnog primjera, imat ćemo:
1
P (A(1) ) = P (A(2) ) = P (A(3) ) = P (A(4) ) = P (A(5) ) = P (A(6) ) = .
6
Medutim, moramo imati na umu da se dogadaji A(i) i A(j) medusobno
ne isključuju. Naime, može se dogoditi da pri bacanju četiri igraće kockice
istovremeno padnu i dvije šestice i, recimo, dvije jedinice.
Neka imamo dogadaje A(i) i A(j) . Koja je vjerojatnost da su se ta dva
dogadaja dogodila istovremeno? Ta je vjerojatnost
1 1 1
P (A(i,j) ) = 4 =µ ¶=
C6 9 126
4
Dakle, imamo da je
n
X X
P (A) = P (A(i) ) − P (A(i,j) )
i=1 i=1,...,5,j=i+1,...,6
µ ¶
1 6 1 15 111 37
= 6· − · =1− = = .
6 2 126 126 126 42
P (A ∩ B)
P (B|A) = .
P (A)
1. P (∅|A) = 0,
2. P (B C |A) = 1 − P (B|A),
POGLAVLJE 3. DISKRETNA MATEMATIKA 105
Primjer 3.45 Dva stroja izraduju lonce. Prvi stroj izraduje 90% ispravnih
lonaca, a drugi 85%. Od 1000 lonaca, od kojih je 500 izradeno na jednom, a
500 na drugom stroju, izabran je jedan i on je ispravan. Koja je vjerojatnost
da je on proizveden na prvom stroju?
Kao prvo, treba vidjeti koja je vjerojatnost da je izabran ispravan proi-
zvod.
9
Prvi stroj izraduje 10 ispravnih proizvoda, a drugi 1720 . Ukupan broj
9
ispravnih proizvoda je 500 · 10 + 500 · 17
20 = 875. Dakle, ako kažemo da
dogadaj A kaže da je izvučen ispravan lonac onda je
875 7
P (A) = = .
1000 8
Neka je s B označen dogadaj izvlačenja lonca proizvedenog na prvom
stroju. Sada A ∩ B znači da je izvučen ispravan proizvod proizveden na
prvom stroju pa je
450 9
P (A ∩ B) = = .
1000 20
Dakle, tražena vjerojatnost je
9
P (A ∩ B) 20 18
P (B|A) = = 7 = .
P (A) 8
35
[ [
P (A) = P (A ∩ Ω) = P A ∩ Ai = P (A ∩ Ai )
i=1,2,... i=1,2,...
No, kako je
P (A ∩ Ai )
P (A|Ai ) = ,
P (Ai )
izlazi da je
P (A ∩ Ai ) = P (Ai ) · P (A|Ai ),
pa je
X
P (A) = P (Ai ) · P (A|Ai ),
i=1,2,...
P (A ) · P (A|Ai )
P (Ai |A) = P i .
P (Ai ) · P (A|Ai )
j=1,2,...
P (Ai ∩ A)
P (Ai |A) = .
P (A)
Jasno je da je
odakle je
P (Ai ) · P (A|Ai )
P (Ai |A) = P .
P (Aj ) · P (A|Aj )
j=1,2,...
P (X = 1) = 0.5,
P (X = 0) = 0.5.
P (X = 1) = p,
P (X = 0) = q = 1 − p.
Jasno je da je
1
P (X = i) = za svaki i = 1, . . . , n.
n
X = k, k ∈ {0, . . . , 10},
P (X ≤ 2) =?
µ ¶ µ ¶
20 980
·
k 10 − k
P (X = k) = µ ¶
1000
10
POGLAVLJE 3. DISKRETNA MATEMATIKA 109
µ ¶ µ ¶
20 980
·
0 10
P (X = 0) = µ ¶ ≈ 0, 8163179
1000
10
µ ¶ µ ¶
20 980
·
1 9
P (X = 1) = µ ¶ ≈ 0, 1679701
1000
10
µ ¶ µ ¶
20 980
·
2 8
P (X = 2) = µ ¶ ≈ 0, 0147901
1000
10
µ ¶ µ ¶
20 980
·
3 7
P (X = 3) = µ ¶ ≈ 0, 0007296
1000
10
..
.
Iz toga slijedi da je
µ Kolika
¶ je vjerojatnost P (Xn = i)? Lako se vidi da je P (Xn = i) =
n
pi · q n−i . Dakle,
i
n
X µ ¶
n
EXn = i· pi q n−i (3.42)
i
i=1
6
X µ ¶ µ ¶6
6 1
EX6 = i· ·
i 2
i=0
= 3.
µ ¶0 µ ¶1 ... µ ¶n
X= n n n
· p0 q n · p1 q n−1 . . . · pn q 0
0 1 n
n
X µ ¶
n
EXn = i· pi q n−i
i
i=0
n
X µ ¶
n
= i· pi q n−i
i
i=1
n
X ¶ µ
n n−1
= i· pi q n−i
i i−1
i=1
X n µ ¶
n−1
= np pi−1 q n−i
i−1
i=1
Xµ n−1 ¶
n−1
= np pi q n−i
i
i=0
= np(p + q)n−1
= np.
µ ¶
a1 a2 . . .
X= .
p1 p2 . . .
X
EX = ai · pi .
ω∈Ω
P
Dokaz. Neka red X(ω) · P ({ω}) apsolutno konvergira. Tada je
ω∈Ω
112 3.8. DISKRETNA TEORIJA VJEROJATNOSTI
X
EX = X(ω) · P ({ω})
ω∈Ω
X X
= X(ω) · P ({ω})
ai
ω∈Ω
X(ω) = ai
X
= ai · P (X = Ai )
ai
X
= a i · pi .
ai
Dokaz.
X
E(αX + βY ) = (αX + βY )(ω) · P ({ω})
ω∈Ω
X
= (αX(ω) + βY (ω))
ω∈Ω
X X
= α X(ω)P (ω) + β Y (ω)P (ω)
ω∈Ω ω∈Ω
= αEX + βEY.
POGLAVLJE 3. DISKRETNA MATEMATIKA 113
µ
¶ µ ¶
r n−r
Xm ·
k m−k
EX = k· µ ¶
k=0
n
m
µ ¶ µ ¶
r n−r
Xm ·
k m−k
= k· µ ¶
k=1
n
m
Xm µ ¶ µ ¶
1 r n−r
= µ ¶ k· · .
n k m−k
k=1
m
Xm µ ¶ µ ¶
1 r r−1 n−r
EX = µ ¶ k· · ·
n k k−1 m−k
k=1
m
Xm µ ¶ µ ¶
1 r−1 n−r
= r· µ ¶ ·
n k−1 m−k
k=1
m
Xm µ ¶ µ ¶
1 r−1 n−r
= r· µ ¶ (−1) · .
n k m−k−1
k=0
m
Izlazi da je
µ ¶
1 n−1
EX = r · µ ¶
n m−1
m
µ ¶
1 n−1
= r· µ ¶
n n−1 m−1
m m−1
m
= · r.
n
No, matematičko očekivanje nam samo daje očekivanu vrijednost slučaj-
ne varijable. Druga važna informacija koja se može izračunati jest koliki
će biti rasap vrijednosti slučajne varijable oko te očekivane vrijednosti, tj.
koliko se može očekivati da će se vrijednost u većini slučajeva udaljavati od
očekivane vrijednosti?
"µ ¶ #
n+1 2
V arX = E X−
2
Xn µ ¶
n+1 2 1
= i− ·
2 n
i=1
" n n
#
1 X 2 X (n + 1)2
= i − (n + 1) · i+ ·n
n 4
i=1 i=1
n2 − 1
= ,
12
odnosno
√ √
3 · n2 − 1
σX = .
6
Za kraj ovog poglavlja dat ćemo još jedan zanimljiv pojam - pojam
indikatorske slučajne varijable.
½
1 ako se dogadaj A dogodio
I(A) = .
0 ako se dogadaj A nije dogodio
Primjer 3.52 Neka je X slučajna varijabla koja označava broj glava koje
su pale prilikom n bacanja simetričnog novčića.
Neka je Xi slučajna varijabla koja označuje uspjeh i-tog bacanja. Neka
je
Yi = I(X = i),
n
X
X= Yi ,
i=0
Tada je
" n # n
X X n
EX = E Yi = EYi = .
2
i=0 i=0
3.9 Zadaci
1. Odredite skupove A i B takve da vrijedi A ⊆ B i P (A) = P (B).
5. Zadana je relacija
ρ = {(a, b) ∈ S | a je višekratnik od b} ,
S = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
a ¹ b ⇔ a1 + a2 ≤ b1 + b2 .
x ≡ 2(mod 7)
x ≡ 7(mod 11)
x ≡ 5(mod 13).
x ≡ 3(mod 10)
x ≡ 8(mod 15)
x ≡ 5(mod 84).
19. Nadite barem jednu bijekciju f :< 0, 1 >→ R koja osigurava da <
0, 1 > i R imaju jednak kardinalni broj.
118 3.9. ZADACI
20. Neka je
A = {a1 , a2 , a3 , a4 } i
ρ = {(a1 , a1 ), (a2 , a1 ), (a2 , a2 ), (a2 , a3 ), (a2 , a4 ), (a3 , a3 ), (a3 , a4 ),
(a4 , a4 )}.
26. Dokažite sa otvoreni intervali < 1, 2 > i < 0, +∞ > imaju jednake
kardinalne brojeve.
(A ∪ B) ∩ C = A ∪ (B ∩ C).
S T
31. Neka je za svaki n ∈ N, An = {n}. Što je , a što ?
n∈N n∈N
(a) f : R → R, f (x) = 3x − 1
(b) f : R → R, f (x) = 2x3
(c) f : R → R, f (x) = x4
(d) f : R → R × R, f (x) = (x, x)
(e) f : Z × Z → Z, f (m, n) = m − n
(f) f : R+ → R, f (x) = log x − 2
33. Neka je S skup svih binarnih nizova, tj. beskonačnih nizova koji se
sastoje od nula i jedinica. Pokažite da je S neprebrojivo beskonačan.
(a) an = 3 · an−1 , a0 = 1
(b) an = 4 · an−1 − an−2 − 6 · an−3 , a0 = 0, a1 = 1, a2 = 17
(c) an = 2 · an−1 − an−2 , a0 = 0, a1 = 1
(d) an = −an−1 − an−2 , a0 = 0, a1 = 1
(e) an = an−1 + an−2 + 2 + 4 · n, a0 = 0, a1 = 1
(f) an = 2 · an−1 − 3 · an−2 + 3, a0 = 1, a1 = 1
(g) an = a n2 + 2 · n + 3, a1 = 1
36. Bakterije se razvijaju prema shemi: svaka živi jedan sat i svakih pola
sata daje jednu novu bakteriju (dakle, svega dvije tijekom života).
Koliko je potomstvo jedne bakterije nakon 48 sati?
39. Imamo po tri kuglice crvene, plave i žute boje. Na koliko načina ih
možemo razvrstati u tri kutije tako da u svakoj kutiji budu točno tri
kuglice?
120 3.9. ZADACI
44. U neprozirnoj vreći nalazi se devet obojenih kuglica: tri crvene, tri
žute i tri plave. Izvlačimo tri kuglice. Kolika je vjerojatnost da sve tri
izvučene kuglice budu iste boje?
46. Imamo 50 žutih i 50 crvenih sijalica u istoj kutiji. 10% posto žutih i
15% crvenih sijalica ne radi. Iz kutije izvlačimo 10 sijalica i njih 3 ne
radi. Koja je vjerojatnost da su sve pokvarene sijalice crvene?
47. Lovac puca na glinene golubove. Na svakog goluba može ispaliti dva
metka. Vjerojatnost pogotka svakim metkom jest 20%. Lovac puca na
10 golubova. Koliko se očekuje da će lovac pogoditi golubova? Kolika
je standardna devijacija matematičkog očekivanja?
(a) distribuciju za X,
(b) P (1 ≤ X ≤ 3).
3.10 Projekti
1. Promatrajte relacije na S × S i njima pridružene matrice susjedstva.
Relaciji ρ pridružena je matrica M (ρ). Na matricama definiramo
Booleovu aritmetiku (zbrajanje i množenje modulo 2). Pokažite kako
se kompozicija relacija povezuje s operacijama na njima pripadnim ma-
tricama. Interpretirajte na isti način inverz relacije. U kakvoj su vezi
svojstva relacija (refleksivnost, tranzitivnost) te odnos M (ρ) i M 2 (ρ).
(Uputa: upotrijebite literaturu [3])
[1] Cormen, T. H.; Lieserson, C. E,; Rivest, R. L.; Stein, C.: Introduction
to Algorithms, 2nd edition, The MIT Press, Cambrige, 2001.
[2] Devlin, K.: Sets, Functions and Logic, Chapman & Hall/CRC, New
York, 2004.
[6] Lipschutz, S.; Schiller, J.J.: Finite Mathematics, 2nd ed., Schaumm’s
Outline Series, McGrow-Hill, New York, 1995.
[7] Pavković, B., Dakić, B.: Polinomi, Školska knjiga, Zagreb, 1987.
[11] Tucker, A.: Applied Combinatorics, 3rd edition, John Wiley & Sons,
New York, 1995.
[13] Whitesitt, J. E.: Boolen Algebra and Its Application, Dover Publica-
tions, Inc. New York, 1992.
123
124 BIBLIOGRAFIJA
Poglavlje 4
Algoritmi
125
126 4.1. POJAM ALGORITMA
2. r := a mod b.
3. a := b, b := r.
POGLAVLJE 4. ALGORITMI 127
4. Ako je r 6= 0 idi na 2.
5. Vrati a.
Propozicija 4.1 Algoritam 4.1 će uvijek završiti, a kada završi vratit će
najveću zajedničku mjeru brojeva s ulaza.
Dokaz. Prvo dokažimo da algoritam završava. Primijetimo da je ostatak
od dijeljenja uvijek manji od djelitelja. Stoga je r uvijek manji od b, tako
da se b uvijek smanjuje barem za 1. S druge strane, ostatak kod dijeljenja
uvijek je prirodan broj ili 0. Zbog ove dvije činjenice nakon najviše b koraka
r mora postati 0 i u tom trenutku algoritam će stati.
Drugo što trebamo dokazati jest točnost rješenja koje algoritam daje.
Ovaj dokaz ide indukcijom po broju prolaza kroz korake od 2 do 4.
Baza indukcije: ako je u prvom koraku r = 0, onda broj a djeljiv s b,
pa je njihova najveća zajednička mjera broj b, a to je upravo ono što će
algoritam vratiti u ovom slučaju.
Korak indukcije: pretpostavimo da tvrdnja vrijedi kada se do rješenja
dode u najviše k prolaza.
Pretpostavimo da je algoritam završio u k + 1 prolazu. Prema lemi 4.1
Najveća zajednička mjera se, na isti način kao što je definirana za pri-
rodne brojeve, može definirati i za polinome. Štoviše, tom slučaju za njeno
pronalaženje možemo primijeniti algoritam analogan Euklidovom algoritmu
za brojeve. Više o tome može se naći u [8]
Sljedeći algoritam, koji ćemo ovdje obraditi jest Hornerov algoritam ili
Hornerova shema. To je algoritam koji izračunava vrijednost polinoma u
zadanoj točki. Prije negoli zapišemo ovaj algoritam, dokazat ćemo nje-
govu ispravnost. Nas Hornerov algoritam prvenstveno zanima s aspekta
izračunavanja vrijednosti polinoma u zadanoj točki, no sam Hornerov algo-
ritam ima i druge aspekte. Više o tome možete naći u [8].
Polinom n-tog stupnja je funkcija oblika
1. i := n − 1, p := an .
2. p := p · x + ai .
3. i := i − 1.
POGLAVLJE 4. ALGORITMI 129
4. Ako je i ≥ 0 idi na 2.
5. Vrati p.
Algoritam 4.3
ULAZ: Broj x ∈ R
IZLAZ: Vrijednost P (x) = an xn + an−1 xn−1 + . . . + a1 x + a0
1. i := 0, p := 0
2. p := p + ai · xi
3. i := i + 1
4. Ako je i ≤ n idi na 2
5. Vrati p.
Algoritam 4.4
ULAZ: Broj x ∈ R
IZLAZ: Vrijednost P (x) = an xn + an−1 xn−1 + . . . + a1 x + a0
1. i := 0, p := 0, y := 1.
2. p := p + ai · y.
3. i := i + 1, y := y · x.
4. Ako je i ≤ n idi na 2.
5. Vrati p.
složenost
fmax
favg
fmin
n0 Duljina
ulaza
Slika 4.3
Sljedeći problem je što broj operacija koje izvodi algoritam nije fiksan,
već ovisi o veličini ulaza. Dakle, instance problema različitih dimenzija za-
132 4.2. SLOŽENOST ALGORITAMA
Korolar 4.1
|P (n)| = |a0 + a1 n + . . . + am nm |
≤ |a0 | + |a1 |n + . . . + |am |nm
≤ |a0 |nm + |a1 |nm + . . . + |am |nm
= (|a0 | + |a1 | + . . . + |am |)nm = c · nm
|am | |am |
P (n) ≥ nm (|am | − − ... − )
2m 2m
|am |
= nm (|am | − m · )
2m
|am |
= nm (|am | − )
2
|am |
= nm · .
2
Time je dokazano da vrijedi P (n) = Ω(nm ), što zajedno s prije do-
kazanom tvrdnjom P (n) = O(n), a prema korolaru 4.1 daje tvrdnju ove
propozicije.
Iz prethodne propozicije proizlazi sljedeći korolar:
Teorem 4.1
f (n)
1. Ako je lim = 0, onda je f (n) = o(g(n))
n→∞ g(n)
f (n)
2. Ako je lim = C, onda je f (n) = O(g(n))
n→∞ g(n)
g(n)
3. Ako je lim = 0, onda je f (n) = ω(g(n))
n→∞ f (n)
g(n)
4. Ako je lim = C, onda je f (n) = Ω(g(n))
n→∞ f (n)
g(n)
5. Ako je lim = C, C 6= 0, onda je f (n) = Θ(g(n))
n→∞ f (n)
f (n)
lim = 0.
n→∞ g(n)
Onda je i
|f (n)|
lim = 0.
n→∞ |g(n)|
Prema definiciji limesa to znači da za svaki ε > 0 postoji n0 ∈ N takav da
vrijedi da je
¯ ¯
¯ f (n) ¯
¯ ¯
¯ g(n) ¯ < ε.
Dokaz. Vrijedi da je
na 1
lim
b
= lim b−a
n→∞ n n→∞ n
na 1
lim
b
= lim b−a = 0
n→∞ n n→∞ n
logb n
loga n =
logb a
Stavimo li c = log1b a , imamo loga n = c · logb n, odnosno c · logb n ≤
loga n ≤ c · logb n što daje traženu tvrdnju.
Ova propozicija nam govori da logaritmi po svim bazama asimptotski
jednako brzo rastu. Stoga se često, pri ocjeni složenosti algoritma, baza
logaritma zanemaruje i piše se lg n, što znači ”logaritam od n po proizvoljnoj
bazi”.
na · lgb n lgb n
lim = lim .
n→∞ na+1 n→∞ n
na · lgb n cb · b!
lim = lim =0
n→∞ na+1 n→∞ n
Dakle,
POGLAVLJE 4. ALGORITMI 137
na · lg n 1
lim = lim c · = 0
n→∞ na+1 n→∞ n
a a+1
odakle slijedi n · lg n ≺ n .
Druga se tvrdnja pokazuje slično. Dokaz provedite sami.
Iz gornje propozicije izlazi sljedeći korolar:
bn
lim
n→∞ na
a puta L’Hospitalovo pravilo, dobivamo
na a!
lim = lim n =0
n→∞ bn n→∞ b · lna b
2. Refleksivnost:
3. Simetričnost:
Euklid
Tmax (n) = qc · n + c2 ,
odnosno
Euklid
Tmax (n) = Θ(n).
4.3.1 Pretraživanje
Problem pretraživanja može se zadati na sljedeći način:
Problem 4.1
ULAZ: Niz brojeva A = a1 , . . . , an i broj x.
IZLAZ: DA ako je x ∈ A, NE ako x 6∈ A.
Slijedno pretraživanje
Prvi algoritam pretraživanja je ujedno i najjednostavniji oblik pretraživanja
neuredene liste. Algoritam redom usporeduje elemente liste sa zadanom
vrijednošću. Ako je neki od elemenata jednak traženom, algoritam staje i
odgovara da je našao traženu vrijednost. U suprotnom, algoritam prolazi
kroz cijelu listu do kraja i odgovara da nije pronašao zadanu vrijednost.
Algoritam 4.5
ULAZ: Zadana vrijednost x, lista a1 , . . . , an
IZLAZ: Da ako vrijednost x postoji u listi, a ne u suprotnom.
1. i := 1.
4. i := i + 1.
5. Idi na 2.
Jasno je da će ovaj algoritam stati nakon najviše n prolaza kroz korake
od 2 do 5. Isto tako je očito da će algoritam vratiti da ako tražena vrijednost
postoji u listi, dok će u suprotnom vratiti ne.
Pogledajmo sada složenost ovog algoritma. U najgorem slučaju, kada
tražene vrijednosti nema u listi, ovaj algoritam ima n prolaza kroz korake
od 2 do 5, a u (n + 1)-vom prolazu stane u koraku 2. Svi koraci ovog
algoritma su konstantnog trajanja, odnosno za njih je potreban konstantan
broj procesorskih otkucaja. Dakle, složenost ovog algoritma može se opisati
sljedećom formulom:
search
Tmax (n) = c1 + n · c2 + c3 .
Pri tome je c1 vrijeme trajanja prvog koraka algoritma, c2 ukupno vri-
jeme trajanja koraka 2 do 5, a c3 vrijeme trajanja koraka 2. Dakle,
search
Tmax (n) = Θ(n).
Pogledajmo kako ovaj algoritam radi kada tražena vrijednost postoji u
listi. U tom slučaju, za algoritam je najgore da vrijednost bude na posljed-
njem mjestu u listi. Tada se koraci 2 i 3 izvršavaju n puta, a koraci 4 i 5
n − 1 puta. U tom je slučaju
search
Tmax (n) = c1 + n · c2 + (n − 1) · c3
= c1 − c3 + n · (c2 + c3 )
= Θ(n)
search
Tmin (n) = c1 = Θ(1).
Pogledajmo još i prosječni slučaj kada se element nalazi u listi. Pret-
postavljamo da je vjerojatnost da se traženi element nalazi na bilo kojem
mjestu u listi jednaka i iznosi n1 , odnosno, distribucija elemenata je uni-
formna. Ako se element nalazi na i-tom mjestu u listi 1 ≤ i ≤ n, onda se
korak 1 izvršava jednom, koraci 2 i 3 i puta, a koraci 4 i 5 i − 1 puta. Stoga
imamo:
POGLAVLJE 4. ALGORITMI 141
n
X
search 1
Tavg (n) = c1 + · [i · c2 + (i − 1) · c3 ]
n
i=1
n n−1
1 X X
= c1 + [c2 i + c3 i]
n
i=1 i=0
1 n(n + 1) (n − 1)n
= c1 + [c2 + c3 ]
n 2 2
c2 c3
= c1 + · (n + 1) + + · (n − 1)
2 2
c2 c3 c2 c3
= c1 + − + ( + ) · n = Θ(n).
2 2 2 2
Ako je lista neuredena, bolje od ovog algoritma se ne može. Ako su,
medutim, elementi u listi uredeni po veličini, onda se može pronaći bolji
algoritam za odredivanje postojanja neke vrijednosti u listi.
Binarno pretraživanje
Pretpostavimo da je zadana sortirana lista, tj. lista u kojoj su elementi
poredani od najmanjeg do najvećeg.
Pretraživanje koje se u tom slučaju može koristiti, naziva se binarno
pretraživanje. Uredenost liste omogućuje da se ne pregledavaju svi elementi
liste, već samo neki od njih. Prvo usporedujemo zadanu vrijednost s ele-
mentom koji se nalazi u sredini liste (ili otprilike u sredini, ako lista ima
paran broj elemenata). Ako je taj element jednak traženoj vrijednosti, onda
završavamo s pretraživanjem. Ako nije tako, onda se gleda je li vrijednost
srednjeg elementa liste veća ili manja od tražene. Ako je vrijednost veća od
tražene, onda se traženi element, ukoliko se nalazi u listi, mora nalaziti u
njenoj prvoj polovici. Ako je srednji element manji od traženog, onda traženi
element, ukoliko se nalazi u listi, mora biti u drugoj polovici liste. U drugom
se koraku uzima polovica liste u kojoj se može nalaziti traženi element i na
njoj se primjenjuje binarno pretraživanje. Tako se lista smanjuje dok se ne
dode do jednočlane liste, u kojoj se izravno provjerava sadrži li njen element
traženu vrijednost ili ne. Formalno, algoritam izgleda ovako:
1. p := b f +l
2 c.
5. Vrati ne i stani.
Ovakvi algoritmi koji svode problem na jedan ili više problema istog tipa,
ali manje dimenzije nazivaju se podijeli pa ovladaj (engl. divide and conquer)
algoritmi. Podijeli pa ovladaj je vrlo efikasna metoda, koja najčešće daje
vrlo efikasne algoritme.
Dokaz. Treba dokazati da će algoritam uvijek stati, te da će vratiti ispravan
odgovor.
Pretpostavimo da x nije u listi. Tada algoritam sigurno neće stati u
koraku 2. No kod svakog novog poziva funkcije binsearch, njoj se smanji
parametar f ili joj se poveća parametar l. Tako da je nakon konačno mnogo
prolaza sigurno l − f ≤ 1. No, kada se to dogodi, neće biti zadovoljen uvjet
izvršavanja ni koraka 3, ni koraka 4, pa će se izvršiti korak 5 i algoritam će
stati s ispravnim odgovorom.
Pretpostavimo da se x nalazi u listi. Primijetimo da je kod svakog poziva
funkcije binsearch uvijek af ≤ x ≤ al . Drugim riječima, element koji ima
vrijednost x je uvijek izmedu af i al . No, zbog približavanja vrijednosti f i
l u svakom prolazu, na kraju će postati ap = x i algoritam će stati u koraku
2 i to s ispravnim odgovorom.
Odredimo sada složenost ovog algoritma.
Neka je n duljina liste koja se promatra. Ako je n = 1, onda će se, sadrži
li lista vrijednost x, izvršiti samo koraci 1 i 2. Ne sadrži li lista vrijednost
x, izvršit će se korak 1, provjerit će se uvjeti koraka od 2 do 4 i na kraju
će se izvršiti korak 5. Kako su sve operacije u svim koracima elementarne,
složenost je svakog koraka konstantna. Odavde zaključujemo da je
binsearch binsearch
Tmax (1) = Tmin (1) = Θ(1).
No, onda je i
binsearch
Tavg (1) = Θ(1).
Pretpostavimo sada najgori slučaj za veće n-ove. Najgore je za algoritam
kada se vrijednost x ne nalazi u listi. U tom slučaju se izvršava korak 1,
provjerava se uvjet koraka 2, te se izvršava korak 3 ili 4. Primijetimo da
će složenost biti nešto manja ako se izvrši korak 3, jer se onda provjerava
samo uvjet tog koraka, dok se u suprotnom provjerava uvjet koraka 3, ali i
koraka 4. No, ovdje se radi o dodatnom konstantnom vremenu, pa to neće
POGLAVLJE 4. ALGORITMI 143
binsearch binsearch n
Tmax (n) ≤ c1 + Tmax (b c)
2
Rekurzija koju trebamo riješiti glasi:
tn = t n2 + c1 .
To je podijeli pa ovladaj rekurzija. Ona se rješava tako da se stavi supsti-
tucija an = t2n .
Sada je
Izvrši se homogenizacija
an = an−1 + c1
an−1 = an−2 + c1
an − an−1 = an−1 − an−2 ,
an = 2an−1 − an−2 .
Karakteristična jednadžba posljednje rekurzije je
x2 − 2x + 1 = 0.
Ona ima dvostruki korijen x1,2 = 1, pa je opće rješenje rekurzije dano sa
an = C1 · 1n + C2 · n · 1n .,
odnosno,
t2n = C1 + C2 · n.
Iz posljednjega slijedi da je
binsearch
Tmax (n) = tn = C1 + C2 · log2 n.
Drugim riječima,
binsearch
Tmax (n) = O(lg n).
Prosječnu ćemo složenost izračunavati samo za slučaj kada se element
nalazi u listi. Jasno je da, ako se element ne nalazi u listi složenost iznosi
Θ(lg n).
144 4.3. PRETRAŽIVANJE I SORTIRANJE
k
X
binsearch 2i−1
Tavg (k) = EX · c1 = c1 i·
2k − 1
i=1
k
X
c1
= i · 2i−1 .
2k −1
i=1
k
X
R(x) = i · xi−1 .
i=1
k · xk+1 − (k + 1) · xk + 1
R(x) = . (4.2)
(x − 1)2
Uvrstimo li (4.2) u (4.2), dobit ćemo:
binsearch c1 k · 2k+1 − (k + 1) · 2k + 1
Tavg (k) =
2k − 1 12
(k − 1) · 2k + 1
= c1 · (4.3)
· 2k − 1 ¸
k
= c1 (k − 1) + k .
2 −1
· ¸
binsearch lg n
Tavg (n) = c1 · lg(n − 1) + .
n−1
Konačno,
binsearch
Tavg (n) = Θ(lg n).
I na kraju, potrebno je izračunati složenost binarnog pretraživanja u
najboljem slučaju. Najbolji je slučaj kada se traženi element nalazi točno u
sredini liste. Tada se on pronalazi u točno jednom koraku, pa je
binsearch
Tmin (n) = Θ(1).
4.3.2 Sortiranje
Preduvjet koji lista mora zadovoljiti da bi se na njoj moglo primijeniti
binarno pretraživanje jest da lista bude sortirana. To nije jedini algori-
tam i jedina situacija koja zahtjeva sortiranu listu. Zapravo, sortiranje je
jedna od najčešćih operacija koje računalo izvodi. Stoga nije čudno da je
problemu sortiranja posvećena posebna pažnja u teoriji algoritama. Ovdje
ćemo opisati nekoliko različitih algoritama sortiranja i usporediti njihovu
složenost.
Sortiranje izborom
Prvi, vrlo jednostavan algoritam sortiranja je sortiranje izborom (engl. se-
lection sort) . Algoritam radi sljedeće: u listi se pronalazi najmanji element i
on mijenja mjesto s prvim elementom u listi. Nakon toga, prvi će sadržavati
onu vrijednost koju će sadržavati u konačnoj, sortiranoj listi, tj. najmanju
vrijednost u listi. Sada se isti postupak ponavlja za preostale elemente,
osim prvog. Drugim riječima, postupak se ponavlja za elemente od drugog
do posljednjeg. U svakom sljedećem prolazu se dio liste koji treba obraditi
smanjuje za jedan element. Zbog toga, ako je lista dugačka n elemenata,
onda će, nakon n − 1 prolaza, ovaj algoritam sortirati listu.
7 3 5 1 8 4 2 9 6
7 3 5 1 8 4 2 9 6
1 3 5 7 8 4 2 9 6
146 4.3. PRETRAŽIVANJE I SORTIRANJE
1 3 5 7 8 4 2 9 6
1 2 5 7 8 4 3 9 6
1 2 5 7 8 4 3 9 6
1 2 3 7 8 4 5 9 6
1 2 3 7 8 4 5 9 6
1 2 3 4 8 7 5 9 6
1 2 3 4 8 7 5 9 6
1 2 3 4 5 7 8 9 6
1 2 3 4 5 7 8 9 6
1 2 3 4 5 6 8 9 7
1 2 3 4 5 6 8 9 7
1 2 3 4 5 6 7 9 8
1 2 3 4 5 6 7 9 8
1 2 3 4 5 6 7 8 9
Algoritam 4.7
ULAZ: Lista a1 , . . . , an
IZLAZ: Sortirana lista koja se sastoji od istih elemenata kao i ulazna lista.
2. min := i.
3. Za j := 2, . . . , n radi korak 4.
5. swap(ai , amin ).
POGLAVLJE 4. ALGORITMI 147
n−1
X
SelectionSort
Tmax (n) = c1 · n + c2 · i
i=1
n · (n − 1)
= c1 · n + c2 ·
2
c2 c2 2
= (c1 − ) · n + ·n ,
2 2
odnosno
SelectionSort
Tmax (n) = O(n2 ).
U najboljem se slučaju, pridruživanje u koraku 4 neće izvršiti nikad. Taj
slučaj je realan slučaj, kada je lista već unaprijed sortirana. Tada je
n−1
X
SelectionSort
Tmin (n) = c1 · n + c2 · i
i=1
c2 c2 2
= (c1 − )·n+ ·n ,
2 2
odnosno
SelectionSort
Tmin (n) = O(n2 ).
Kako prosječna složenost mora biti izmedu najbolje i najgore, zaključujemo
da je
SelectionSort
Tavg (n) = O(n2 ).
7 3 5 1 8 4 2 9 6
3 7 5 1 8 4 2 9 6
1 7 5 3 8 4 2 9 6
1 7 5 3 8 4 2 9 6
1 5 7 3 8 4 2 9 6
1 3 7 5 8 4 2 9 6
1 2 7 5 8 4 3 9 6
1 2 5 7 8 4 3 9 6
1 2 4 7 8 5 3 9 6
1 2 3 7 8 5 4 9 6
1 2 3 5 8 7 4 9 6
1 2 3 4 8 7 5 9 6
POGLAVLJE 4. ALGORITMI 149
1 2 3 4 5 7 8 9 6
1 2 3 4 5 6 8 9 7
1 2 3 4 5 6 7 9 8
1 2 3 4 5 6 7 8 9
Algoritam 4.8
ULAZ: Lista a1 , . . . , an
IZLAZ: Sortirana lista koja se sastoji od istih elemenata kao i ulazna lista.
1. Za i := 1, . . . , n − 1 radi korake od 2 do 3.
2. Za j := i + 1, . . . , n radi korak 3.
i−1
X
ExchangeSort
Tmax = (n − 1) · c1 + i · c2
i=1
i−1
X
= (n − 1) · c1 + c2 · i
i=1
n · (n + 1)
= (n − 1) · c1 + c2 ·
2
c2 2 c2
= · n + (c1 + ) · n − c1 ,
2 2
iz čega slijedi da je
ExchangeSort
Tmax = Θ(n2 ). (4.4)
U najboljem slučaju, kada je lista unaprijed sortirana, uvjet u koraku
3 se nikada ne ispunjava, pa nema ni jedne zamjene mjesta. Neka je sa c3
150 4.3. PRETRAŽIVANJE I SORTIRANJE
ExchangeSort
Tmin = Θ(n2 ). (4.5)
Kako su maksimalna i minimalna složenost ovog algoritma asimptotski
jednake, slijedi da je i
ExchangeSort
Tavg = Θ(n2 ). (4.6)
Sortiranje umetanjem
Sortiranje umetanjem (engl. insertion sort) je još jedan od osnovnih algo-
ritama sortiranja. Ovaj se algoritam temelji na ideji dijeljenja liste na dva
dijela: prvi koji je već sortiran i drugi koji tek treba sortirati. Na početku
se u prvom dijelu nalazi samo prvi element liste. U svakom se sljedećem
koraku uzima prvi element iz drugog dijela liste i umeće se na odgovarajuće
mjesto u prvom dijelu. U prvom se koraku uzima drugi element liste te se
usporeduje s prvim elementom. Ako je drugi element manji od prvoga, onda
prvi i drugi element mijenjaju mjesta. Nakon toga se uzima treći element,
koji se usporeduje s drugim. Ako je manji, onda drugi element prelazi na
treće mjesto, a promatrani se element usporeduje s prvim. Ako je veći od
prvog, onda se umeće na drugo mjesto, a ako je manji, onda se prvi element
pomiče na drugo mjesto, a promatrani dolazi na prvo mjesto. Isti se pos-
tupak ponavlja za četvrti element liste i tako redom. Za svaki se element
promatra sortirani dio liste. Elementi sortiranog dijela liste usporeduju se
od zadnjeg prema prvome, s promatranim elementom, te se elementi veći od
promatranog pomiču za jedno mjesto dalje u listi. Kada se naide na element
manji od promatranog, onda se promatrani element stavlja iza njega s kojeg
je već prije toga element pomaknut za jedno mjesto dalje. Tako se sortirani
dio liste povećava za jedan element i može se prijeći na sljedeći element liste.
Kada se svi elementi liste obrade na ovaj način, cijela će lista biti sortirana.
7 3 5 1 8 4 2 9 6
3 7 5 1 8 4 2 9 6
POGLAVLJE 4. ALGORITMI 151
U sljedećem koraku pretražujemo prva dva elementa tražeći onaj koji ima
veću vrijednost od 5, a to je drugi element. Njega pomičemo za jedno mjesto
dalje a na njegovo mjesto dolazi treći element.
3 5 1 8 4 2 9 6
3 5 7 1 8 4 2 9 6
1 5 7 8 4 2 9 6
1 3 7 8 4 2 9 6
1 3 5 8 4 2 9 6
1 3 5 7 8 4 2 9 6
1 3 5 7 8 4 2 9 6
Prva dva elementa su manja od 4, pa ostaju gdje jesu, dok se ostali elementi
pomiču za jedno mjesto udesno.
1 3 4 7 8 2 9 6
1 3 4 5 8 2 9 6
1 3 4 5 7 2 9 6
1 3 4 5 7 8 2 9 6
1 2 4 5 7 8 9 6
1 2 3 5 7 8 9 6
1 2 3 4 7 8 9 6
1 2 3 4 5 8 9 6
1 2 3 4 5 7 9 6
152 4.3. PRETRAŽIVANJE I SORTIRANJE
1 2 3 4 5 7 8 9 6
Sljedeći element ostaje na svom mjestu.
1 2 3 4 5 7 8 9 6
Posljednji element ide na šesto mjesto u listi.
1 2 3 4 5 6 8 9
1 2 3 4 5 6 7 9
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
Algoritam 4.9
ULAZ: Lista a1 , . . . , an
IZLAZ: Sortirana lista, koja se sastoji od istih elemenata kao i ulazna lista.
1. Izvrši korake 2-4 za j := 2, . . . , n.
2. p := aj .
3. Izvrši korak 4 za i := 1, . . . , j − 1.
4. Ako je ai > aj onda swap(ai , aj ).
Pogledajmo složenost ovog algoritma. U svakom slučaju koraci 1 i 2
izvršavaju se n − 1 puta, a svaki od njih ima konstantno trajanje. Broj
prolaza kroz korake 3 i 4 povećava se za svaki prolaz kroz korake 1 i 2.
Najgori je slučaj obrnuto sortirana lista. Onda se izvršava maksimalan broj
zamjena elemenata. U tom će slučaju uvjet iz 4 uvijek biti zadovoljen. U
tom slučaju je složenost
n−1
X
inssort (n − 1)n c2 c2
Tmax (n) = c1 · n + c2 · i = c1 · n + c2 · = (c1 − ) · n + · n2 .
2 2 2
i=1
Dakle,
inssort
Tmax (n) = Θ(n2 ).
Slično, ako je lista već sortirana, onda će svaki puta uvjet iz koraka 4
biti neistinit, pa se neće izvršiti nijedno mijenjanje mjesta. No, sve ostale
operacije će se izvršavati. Stoga će biti
inssort
Tmin (n) = Θ(n2 ).
No, u tom je slučaju i
inssort
Tavg (n) = Θ(n2 ).
POGLAVLJE 4. ALGORITMI 153
Mjehuričasto sortiranje
U mjehuričastom sortiranju (engl. bubble sort) prolazi se redom po elemen-
tima liste i svaki se od njih usporeduje sa svojim sljedbenikom. Ako je neki
element veći od sljedbenika, onda im se zamjenjuju mjesta. Nakon prvog
prolaza na kraj liste ”isplivat” će najveća vrijednost. Nakon toga se isti
postupak ponavlja za prvih n − 1 elemenata, pa će nakon prolaza kroz listu
u predposljednji element doći druga najveća vrijednost. Tako će nakon n − 1
prolaza lista biti sortirana.
7 3 5 1 8 4 2 9 6
3 7 5 1 8 4 2 9 6
3 5 7 1 8 4 2 9 6
pa treći i četvrti.
3 5 1 7 8 4 2 9 6
Četvrti i peti element ne mijenjanju mjesta, već mjesta mijenjaju peti i šesti
element.
3 5 1 7 4 8 2 9 6
3 5 1 7 4 2 8 6 9
3 1 5 7 4 2 8 6 9
3 1 5 4 2 7 8 6 9
154 4.3. PRETRAŽIVANJE I SORTIRANJE
3 1 5 4 2 7 6 8 9
1 3 5 4 2 7 6 8 9
1 3 4 2 5 7 6 8 9
1 3 4 2 5 6 7 8 9
1 3 2 4 5 6 7 8 9
1 3 2 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
Iako smo time dobili sortiranu listu, algoritam će izvesti još dva prolaza kroz
listu, za prva tri te za prva dva elementa liste.
Algoritam 4.10
ULAZ: Lista a1 , . . . , an
IZLAZ: Sortirana lista, koja se sastoji od istih elemenata kao i ulazna lista.
2. Ponavljaj korak 3 za j = 1, . . . , n − i.
n−1
X
bubsort
Tmax (n) = c1 · (n − 1) + j · c2
j=1
(n − 1) · n
= c2 · (n − 1) + c2 ·
2
c2 c2 2
= −c1 + (c1 − ) · n + ·n
2 2
= Θ(n2 ) (4.7)
bubsort bubsort
Tmin (n) = Tavg (n) = Θ(n2 ).
Sortiranje spajanjem
Sortiranje spajanjem (engl. merge sort) je prvi algoritam koji ćemo ovdje
opisati, a koji ima složenost manju od kvadratne. Vidjet ćemoda je složenost
ovog algoritma jednaka O(n lg n). Algoritmi sortiranja s takvom složenoš-
ću najčešće koriste metodu podijeli pa ovladaj (engl. divide and conquer).
Podijeli pa ovladaj je metoda kod koje se problem reducira na jedan ili više
problema istog tipa, ali manjih dimenzija, a rješenje originalnog problema
dobija se kompozicijom rješenja reduciranih problema. Sortiranje spajanjem
156 4.3. PRETRAŽIVANJE I SORTIRANJE
koristi algoritam za spajanje dvije sortirane liste u jednu, isto tako, sortiranu
listu.
1. i := 1, j := 1.
2. Ponavljaj korak 3 sve dok je i ≤ k i j ≤ l.
3. Ako je bi < cj onda ai+j−1 := bi , i := i+1 inače ai+j−1 := cj , j := j+1.
4. Ponavljaj korak 5 sve dok je i ≤ k.
5. ai+j−1 := bi , i := i + 1.
6. Ponavljaj korak 7 sve dok je j ≤ l
7. ai+j−1 := cj , j := j + 1.
merge
Tmax (k, l) ≤ c1 + (k + l) · (c2 + c3 )
= O(k + l)
merge
Tavg (n) = O(k + l).
Algoritam sortiranja spajanjem dijeli ulaznu listu na dvije podjednako
duge podliste, sortira ih te ih algoritmom za spajanje spaja u jednu sortiranu
listu. Svaka se od podlista sortira na isti način. Tako se problem smanjuje
dok se ne dode do jednočlanih listi. Sortiranje jednočlane liste je trivijalno,
tj. svaka jednočlana lista je već sortirana.
POGLAVLJE 4. ALGORITMI 157
Algoritam 4.12
ULAZ: Lista a1 , . . . , an
IZLAZ: Sortirana lista, koja se sastoji od istih elemenata kao i ulazna lista.
1. Sortiraj listu a1 , . . . , ab n c .
2
3. Spoji a1 , . . . , ab n c i ab n c+1 , . . . , an .
2 2
lnm l m jnk
mersort mersort merge n
Tmax (n) ≤ 2 · Tmax ( ) + Tmax ( , )
2m
ln 2 2
mersort
≤ 2 · Tmax ( ) + d1 · n + d2 .
2
tn = 2 · t n2 + d1 · n + d2 .
sn = t2n = 2 · t 2n + d1 · 2n + d2
2
= 2 · t2n−1 + d1 · 2n + d2
= sn−1 + d1 · n + d2
sn = 2 · sn−1 + d1 · 2n + d2
sn−1 = 2 · sn−2 + d1 · 2n−1 + d2
sn − sn−1 = 2 · sn−1 − 2 · sn−2 + 2n−1 · d1
Iz toga slijedi
sn = 3 · sn−1 − 2 · sn−2 + 2 · d1 .
sn = 3 · sn−1 − 2 · sn−2 + 2n · d1
2 · sn−1 = 6 · sn−2 − 4 · sn−3 + 2n · d1
sn − 2 · sn−1 = 3 · sn−1 − 8 · sn−2 + 4 · sn−3
158 4.3. PRETRAŽIVANJE I SORTIRANJE
odnosno,
x3 − 5x2 + 8x − 4 = 0.
Ova jednadžba ima dvostruki korijen x1,2 = 2 i jednostruki korijen x3 = 1.
Dakle opće rješenje ove jednadžbe je
sn = C1 · 2n + C2 · n · 2n + C3 · 1n .
Konačno, dobivamo da je
t2n = C1 · 2n + C2 · n · 2n + C3 .
iz čega slijedi da je
tn = C1 · n + C2 · ·n lg n + C3 .
Drugim riječima,
M ergesort
Tmax = O(n lg n).
Ovaj algoritam nije osjetljiv na različitosti instanci. Kakva god bila instanca,
algoritam će imati jednaku složenost. Stoga je
M ergesort M ergesort
Tmin = Tavg = O(n lg n).
Primijećuje se jedan nedostatak sortiranja spajanjem naspram drugih dosa-
da opisanih algoritama sortiranja: sortiranje spajanjem za svoj rad treba do-
datno polje, odnosno dodatni memorijski prostor. Nijedan od dosad opisanih
algoritama, osim sortiranja spajanjem, nema taj nedostatak.
Primjer 4.6 Stavit ćemo listu koju smo i ranije koristili u hrpu.
7 7 3
3 7 5
1 1
3 5 3 4
7 8 4 7 8 5 2
3 2
7 8 5 4
9 6
160 4.3. PRETRAŽIVANJE I SORTIRANJE
3 2
6 8 5 4
9 7
Slika 4.4
Algoritam 4.13
ULAZ: Hrpa H : h1 , . . . , hn i element x
IZLAZ: Hrpa H 0 koja se sastoji od elemenata stoga S i elementa x.
InsHeap
Tmax (n) ≤ c1 + c2 · blog2 nc
= O(lg n).
InsHeap
Tmin (n) ≤ c1 + c2
= O(1).
blog2 nc
X 1
InsHeap
Tavg (n) = c1 + · i · c2
blog2 nc
i=1
1 blog2 nc · (blog2 nc + 1)
= c1 + · · c2
blog2 nc 2
c2
= c1 + · (blog2 nc + 1) = O(lg n)
2
Jedno važno svojstvo hrpe jest to što se najmanji element hrpe uvijek
nalazi u njenom korijenu. Odatle proizlazi ideja sortiranja pomoću hrpe - iz
hrpe se izvadi korijen, stavi se na početak liste, a ostatak hrpe se ponovno
preuredi tako da zadovoljava sva svojstva hrpe.
Postupak pražnjenja hrpe je sljedeći. Iz hrpe se vrijednost korijena pre-
seli u izlaznu listu. Nakon toga se vrijednost najdesnijeg elementa na zadnjoj
razini hrpe preseli u korijen a posljednji se element hrpe obriše. Time je sta-
blo ostalo potpuno. Još je potrebno osigurati uredaj u hrpi. Promatrana
vrijednost, koja narušava uredaj u hrpi nalazi se u korijenu. Usporedimo tu
vrijednost s manjim od djece korijena te ako je promatrana vrijednost veća,
zamjenimo im mjesta. I dalje se promatrana vrijednost, sada smještena na
drugoj razini stabla, usporeduje s manjim svojim djetetom. Ovaj se pos-
tupak ponavlja sve dok promatrana vrijednost ne bude manja od manjeg
djeteta (pa onda i od većeg) ili dok se promatrana vrijednost ne nade u
čvoru bez djece. Sljedeći primjer pokazuje kako se prazni hrpa i kreira sor-
tirana lista.
3 2
6 8 5 4
9 7
3 2
6 8 5 4
3 4
6 8 5 7
9
POGLAVLJE 4. ALGORITMI 163
1, 2
3 4
6 8 5 7
1, 2
6 4
9 8 5 7
1, 2, 3
7 4
6 4 6 5
9 8 5 9 8 7
1, 2, 3, 4
7 5
6 5 6 7
9 8 9 8
164 4.3. PRETRAŽIVANJE I SORTIRANJE
1, 2, 3, 4, 5
8 6
6 7 8 7
9 9
1, 2, 3, 4, 5, 6
9 7
8 7 8 9
1, 2, 3, 4, 5, 6, 7
9 8
8 9
1, 2, 3, 4, 5, 6, 7, 8
1, 2, 3, 4, 5, 6, 7, 8, 9
Slika 4.5
Algoritam 4.14
ULAZ: Hrpa H : h1 , . . . , hn
IZLAZ: Hrpa H 0 koja je dobijena iz hrpe H izbacivanjem vrijednosti koja
se nalazila u korijenu.
5. Vrati p.
DelHeap
Tmax (n) ≤ c1 + c2 · blog2 nc
= O(lg n)
DelHeap
Tmin (n) = c1 + c2
= Θ(1).
DelHeap
Tavg (n) = O(lg n).
Algoritam 4.15
ULAZ: Lista a1 , . . . , an
IZLAZ: Sortirana lista koja se sastoji od istih elemenata kao i ulazna lista.
1. Za i := 1, . . . , n radi korak 2.
2. InsHeap(ai ).
3. Za i := 1, . . . , n radi korak 4.
4. ai := DelHeap.
166 4.3. PRETRAŽIVANJE I SORTIRANJE
n
X n
X
HeapSort InsHeap DelHeap
Tmax (n) = c1 + Tmax (i) + Tmax (i)
i=1 i=1
n
X n
X
≤ c1 + (d1 + d2 · log2 i) + (e1 + e2 · log2 i)
i=1 i=1
≤ c1 + n · d1 + n lg n · d2 + n · e1 + n lg n · e2
= c1 + (d1 + d2 ) · n + (e1 + e2 ) · n lg n
= O(n lg n).
Slično se dobija i da je
HeapSort
Tavg (n) = O(n lg n).
I na kraju,
n
X n
X
HeapSort InsHeap DelHeap
Tmin (n) = c1 + Tmin (i) + Tmin (i)
i=1 i=1
n
X n
X
≤ c1 + d1 + e1
i=1 i=1
≤ c1 + n · d1 + n · e1
= c1 + (d1 + e1 ) · n
= O(n).
Ovako izvedeno sortiranje pomoću hrpe ima istu manu koju smo spome-
nuli kod sortiranja spajanjem - potreban je dodatni memorijski prostor za
hrpu u kojoj mora biti mjesta za još jednu kopiju svakog elementa ulazne
liste. Može li se to izbjeći? Za razliku od sortiranja spajanjem, sortiranje
pomoću hrpe se može izvesti prirodno i bez dodatnog prostora. Polje u
kojem su smješteni elementi može se koristiti ujedno i kao hrpa. Kako?
Kao prvo, potrebno je malo predefinirati hrpu. Hrpa kakvu smo do sada
rabili bila je tzv. min-hrpa, tj. hrpa u kojoj je oznaka roditelja manja
od oznaka njegove djece, tj. u kojoj se u korijenu nalazi najmanji element
hrpe. Max-hrpa se definira obrnuto. Oznaka roditelja u njoj mora biti veća
od oznaka njegove djece. U takvoj hrpi u korijenu će se nalaziti najveći
element u hrpi. Primjer ovakve hrpe za listu iz našeg prethodnog primjera
je
POGLAVLJE 4. ALGORITMI 167
8 5
7 3 4 2
1 6
Slika 4.6
Ovakva se hrpa može izvesti u samom polju koje sadrži ulazne podatke.
Kreće se od prvog elementa. Nakon toga se promatra drugi element polja
i na već ranije opisani način, uz zamjenu usporedbe, prva se dva elementa
pretvore u hrpu. Nakon toga se promatra treći element u polju i iz prva tri
elementa se, na ranije opisani način, stvori hrpa, itd. Tako se radi sve dok
svi elementi polja ne čine hrpu. Nakon toga će se u korijenu nalaziti najveći
element. Brisanje elemenata iz hrpe ide na isti način kao i ranije, samo što
se obrisani element ne stavlja u posebno polje, već korijen mijenja mjesto s
posljednjim elementom u polju. Nakon toga je sigurno da je element, koji
je bio u korijenu, stavljen na svoje završno mjesto u polju, tj. na posljednje
mjesto, pa se broj elemenata u hrpi smanjuje za 1, i hrpa se preureduje tako
da zadovoljava sva tražena svojstva. Ovaj je postupak isto tako već opisan
ranije. Dakle, postupak je sljedeći:
Algoritam 4.16
ULAZ: Lista a1 , . . . , an
IZLAZ: Sortirana lista koja se sastoji od istih elemenata kao i ulazna lista.
2. j = i.
4. swap(a[i], a[i/2]).
5. i := n.
7. swap(a[1], a[i]).
8. i := i − 1.
168 4.3. PRETRAŽIVANJE I SORTIRANJE
9. j := 1.
10. Sve dok je (2 · j + 1 ≤ i) ∧ (max(a[2j], a[2j + 1]) > a[j]) radi korake
11-16.
13. j := 2j.
16. j := 2 · j + 1.
Quicksort algoritam
Sada ćemo obraditi algoritam sortiranja koji danas predstavlja jedan od
vrhunaca algoritama za sortiranje. Promišljanjem kako bi se mogao ubrzati
algoritam sortiranja spajanjem te izbjeći potrebu za upotrebom pomoćnog
polja, nastao je ovaj algoritam. Naime, kod algoritma sortiranja spajanjem,
sortiranje se vrši u dvije faze: dijeljenje liste na manje podliste, te spajanje
podlista u sortiranu listu. Pokušaji ubrzanja faze dijeljenja liste doveli su
do algoritma prirodnog sortiranja spajanjem (natural merge sort) ([6] str
161-163), dok je pokušaj ubrzanja faze spajanja doveo do potpuno novog
algoritma sortiranja - quicksort algoritma. Quicksort algoritam, kao i algo-
ritam sortiranja spajanjem, temelji se na metodi podijeli pa ovladaj, no kod
njega je faza spajanja u potpunosti izbjegnuta.
Kao prvo, potrebno je istaknuti jedan element liste - tzv. pivot element.
Za pivot element se može uzeti prvi element liste, srednji izmedu prva tri
ili ga se može izračunati na bilo koji drugi način. Jedino što je važno jest
da se pivot mora izračunati u vremenu O(1). Nakon toga se elementi u listi
preslaguju tako da u prvom dijelu liste budu elementi koji su manji od pivota,
a u drugom dijelu liste elementi veći od pivota. Nakon toga se algoritam
izvodi rekurzivno za prvi i drugi dio liste. Postupak se ponavlja sve dok
lista nema manje od dva elementa, a tada sortiranje postaje trivijalno.
Primijetimo da nakon što su elementi u podlistama sortirani nije po-
trebno nikakvo spajanje. Naime, zbog preuredenja polja, svi su elementi u
drugom dijelu liste veći od svakog elementa iz prvog dijela liste.
POGLAVLJE 4. ALGORITMI 169
7 3 5 1 8 4 2 9 6
7 3 5 1 8 4 2 9 6
7 3 5 1 6 4 2 9 8
7 3 5 1 6 4 2 9 8
170 4.3. PRETRAŽIVANJE I SORTIRANJE
2 3 5 1 6 4 7 9 8
2 3 5 1 6 4 7 9 8
2 1 5 3 6 4 7 9 8
1 2 5 3 6 4 7 9 8
1 2 5 3 6 4 7 8 9
Sada promatramo jedini preostali niz koji je preostao, koji je dulji od jednog
elementa. Pivot će biti element s vrijednošću 5. Pretraga sprijeda staje na
elementu s vrijednošću 6, a straga na elementu s vrijednošću 4.
1 2 5 3 6 4 7 8 9
Mijenjamo im mjesta.
1 2 5 3 4 6 7 8 9
1 2 4 3 5 6 7 8 9
POGLAVLJE 4. ALGORITMI 171
Preostao je još jedan segment polja, koji ima više od jednog elementa, i njega
takoder sortiramo. Pivot je element s vrijednošću 4. Pretraga sprijeda će
prijeći posljednji element promatranog segmenta. Pivot mijenja mjesto s
elementom na kojeg pokazuje drugi kursor, čime se dobije:
1 2 3 4 5 6 7 8 9
Algoritam 4.17
ULAZ: Lista a1 , . . . , an i kursori i i j na početak, odnosno na kraj dijela
polja koji sortiramo
IZLAZ: Sortirana lista koja se sastoji od istih elemenata kao i ulazna lista.
1. k := i + 1, l := j.
Quicksort Quicksort
Tmax (n) = c1 + c2 + c3 · n + c4 + Tmax (n − 1)
Quicksort
= Tmax (n − 1) + d1 · n + d2
tn = tn−1 + d1 · n + d2 .
Oduzmemo li od jednadžbe za n-ti element niza jednadžbu za n − 1-vi dobit
ćemo:
172 4.3. PRETRAŽIVANJE I SORTIRANJE
tn = tn−1 + d1 · n + d2
tn−1 = tn−2 + d1 · (n − 1) + d2
tn − tn−1 = tn−1 − tn−2 + d1
tn = 2 · tn−1 − tn−2 + d1 .
Oduzmemo li od ove jednadžbe jednadžbu za (n−1)-vi element niza, imamo:
tn = 2 · tn−1 − tn−2 + d1
tn−1 = 2 · tn−2 − tn−3 + d1
tn − tn−1 = 2 · tn−1 − 3 · tn−2 + tn−3
x3 − 3x2 + 3x − 1 = 0.
Ova jednadžba ima jedan trostruki korijen x1,2,3 = 1. Dakle, opće rješenje
ove rekurzije je
tn = C1 · 1n + C2 · n · 1n + C3 · n2 · 1n ,
odnosno,
tn = C1 + C2 · n + C3 · n2 .
Dakle,
Quicksort
Tmax (n) = O(n2 ).
tn ≤ 2 · t n2 + d1 · n + d2 .
Uvedemo li supstituciju sn = t2n i onda imamo
POGLAVLJE 4. ALGORITMI 173
sn = t2n = 2 · t 2n + d1 · 2n + d2
2
= 2 · t2n−1 + d1 · 2n + d2
= 2 · sn−1 + d1 · 2n + d2 .
sn = 2 · sn−1 + d1 · 2n + d2
sn−1 = 2 · sn−2 + d1 · 2n−1 + d2
sn − sn−1 = 2 · sn−1 − 2 · sn−2 + d1 · 2n−1 ,
odnosno,
odnosno,
x3 − 5x2 + 8x − 4 = 0.
Ova jednadžba ima jednostruki korijen x1 = 1 te dvostruki korijen x2,3 = 2.
Dakle, opće rješenje ove jednadžbe je
sn = C1 · 1n + C2 · 2n + C3 · n · 2n .
Konačno,
t2n = C1 + C2 · 2n + C3 · n · 2n .
Iz posljednje formule slijedi da je
tn = C1 + C2 · n + C3 · n · log2 n.
Dakle, u najboljem je slučaju
Quicksort
Tmax = O(n · lg n).
174 4.3. PRETRAŽIVANJE I SORTIRANJE
n
Quicksort 1 X Quicksort Quicksort
Tavg (n) =n+1+ (Tavg (i − 1) + Tavg (n − i))
n
i=1
Pri tome je n+1 broj usporedbi koje algoritam radi prije rekurzivnog poziva.
Dakle, imamo rekurziju
n
1X
tn = (ti−1 + tn−i ) + n + 1.
n
i=1
odnosno
n−1
X
n · tn = 2 · ti + n · (n + 1).
i=0
P
n−1
n · tn = 2· ti + n · (n + 1)
i=0
P
n−2
(n − 1) · tn−1 = 2· ti + n · (n − 1)
i=0
n · tn − (n − 1) · tn−1 = 2tn−1 + n · (n + 1) − n · (n − 1)
Iz toga slijedi da je
n · tn = (n + 1) · tn−1 + 2 · n.
Podijelimo li jednadžbu s n(n + 1), dobit ćemo
POGLAVLJE 4. ALGORITMI 175
tn tn−1 2
= + . (4.8)
n+1 n n+1
Primijenimo li ponovo formulu 4.8 za tn−1 imat ćemo
tn tn−2 2 2
= + +
n+1 n−1 n n+1
tn−3 2 2 2
= + + +
n−2 n−1 n n+1
·
·
·
X1 n+1
t1
= +2
2 i
i=3
No, poznato je da je
n+1
X Z
n+1
1 1
≤ dx = ln(n + 1) − ln 2
i x
i=3 2
iz čega slijedi da je
Quicksort
Tavg ≤ 2 · (n + 1)[ln(n + 2) − ln 2]
tj.
tn = O(n · lg n).
Treba napomenuti da je Quicksort, kao što i njegovo ime kaže, u praksi
brz za većinu slučajeva. No, pri tome treba imati na umu nekoliko stvari.
Prva je da Quicksort ima složenost najgoreg slučaja O(n2 ), pa se može desiti
da za neke instance Quicksort bude spor. Osim toga, izvedba Quicksorta
je složenija od izvedbe, npr., sortiranja umetanjem. Time se želi reći da su
konstante koje se javljaju u formuli vremenske složenosti Quicksorta, znatno
veće od konstanti koje se javljaju u nekim drugim algoritmima sortiranja,
npr. u sortiranju umetanjem. To se ne vidi u krajnjoj asimptotskoj ocjeni
složenosti, ali će to znatno utjecati na brzinu rada kod instanci manje duljine.
Stoga će algoritam sortiranja umetanjem biti znatno brži za male liste (do
otprilike 20 elemenata), dok će Quicksort svoju nadmoć pokazivati tek na
velikim listama (više od 100000 elemenata).
Glavni nedostatak Quicksorta je, kao što je već rečeno, njegova složenost
u najgorem slučaju. Ovaj je problem posebno izražen jer se najgori slučaj
postiže u potpuno sortiranom i obrnuto sortiranom polju. Drugim riječima,
algoritam će imati tendenciju da lošije radi ako je na početku polje uredenije,
176 4.3. PRETRAŽIVANJE I SORTIRANJE
a vrlo često će upravo tako i biti. Naime, podaci su vrlo često djelomično
sortirani. Drugim riječima, često distribucija instanci problema sortiranja
nije uniformna. Kako bi se ovaj problem umanjio u stvarnoj izvedbi Quick-
sorta pivot se pokušava na razne načine ”pametnije” izabrati. Jedna je ideja
da se pivot izabere kao srednji po veličini element od prva tri u listi ili pak
kao srednja vrijednost prva dva elementa. Druga, još bolja ideja je random-
izacija algoritma, tj. pivot se izabire kao slučajni element liste. To znatno
umanjuje mogućnost najgoreg slučaja.
x:A[1]
F x:A[2]
F .
.
.
x:A[n-1]
F x:A[n]
F F
Slika 4.7
x:A[bn/2c]
x:A[bn/4 c] x:A[b3n/4c]
. .
. .
. .
F F F F F F F F
4.3. PRETRAŽIVANJE I SORTIRANJE
Slika 4.8
POGLAVLJE 4. ALGORITMI 179
Sortiranje prebrojavanjem
Sortiranje prebrojavanjem je jako jednostavna i efikasna metoda sortiranja,
uz uvjet da je skup S, iz kojeg se uzimaju vrijednosti elemenata, dovoljno
mali tako da se može definirati polje veličine |S|. Zbog jednostavnosti, uzet
ćemo da su elementi koje sortiramo cijeli brojevi iz segmenta [1, m].
Neka imamo polje A koje se sastoji od n cijelih brojeva iz segmenta
[1, m]. Generira se polje B duljine m, čiji se elementi iniciraju na vrijednost
0. Nakon toga se gledaju elementi polja A redom i ako je A[i] = k onda
se k-ti element polja B povećava za 1. Na kraju tog postupka polje B će
sadržavati frekvenciju svakog broja iz segmenta [1, m] u polju A. Nakon toga
je još samo potrebno redom puniti polje A elementima čiji je broj zapisan u
polju B. Formalno, algoritam će izgledati ovako:
Algoritam 4.18
ULAZ: Polje A od n elemenata, čije su vrijednosti cijeli brojevi iz segmenta
[1, m].
IZLAZ: Sortirano polje koje se sastoji od elemenata iz polja A.
1. Za i = 1, . . . , m radi B[i] = 0.
3. k = 1
6. A[k] = i
7. k = k + 1
T CountSearch (n, m) = c1 + c2 · m + c3 · n.
Odnosno,
Radix sort
Ova metoda potječe iz ranijih vremena računarstva i koristila se kod sorti-
ranja bušenih kartica.
Metoda se temelji na sortiranju vrijednosti liste prema pojedinim zna-
menkama, odnosno prema slovima na pojedinoj poziciji, ako se radi o sor-
tiranju alfanumeričkih podataka. Zbog jednostavnosti, mi ćemo ovdje pret-
postaviti da se radi o sortiranju cjelobrojnih vrijednosti. U svakom se koraku
vrijednosti rasporeduju s obzirom na jednu svoju znamenku, u 10 pomoćnih
polja. No, kako je izvesti? Prva je pomisao da se prvo rasporedivanje izvede
po vodećoj znamenci brojeva, pa nakon toga po drugoj, itd. Ovakav pristup
zahtjeva vrlo mnogo memorijskog prostora. Naime, u drugom prolazu za
to nam je već potrebno 102 = 100 pomoćnih polja, a u trećem 103 = 1000
itd. Ovo predstavlja velik utrošak memorije. Iako se taj utrošak može sma-
njiti na dva polja duljine n, svejedno ostaje kôd, koji je složen za izvedbu.
U ranije doba, kada su se rabile bušene kartice, ovakav algoritam ne bi bio
pogodan za sortiranje kartica. Koristi se ideja da se prvo rasporedivanje vrši
po najmanje značajnoj znamenci (jedinici). Nakon toga se sve vrijednosti
opet upišu u jedno polje, prvo one koje imaju najmanje značajnu znamenku
0, pa onda one koje imaju najmanje značajnu znamenku 1, itd. Tako do-
biveno polje se sortira po drugoj najmanje značajnoj znamenci, itd., sve
do najznačajnije znamenke. Kada se vrijednosti po posljednji puta spoje u
jedno polje, to polje je sortirano. Formalno, ovaj algoritam je:
Algoritam 4.19
ULAZ: Polje A od n elemenata
IZLAZ: Sortirano polje koje se sastoji od elemenata iz polja A.
1. Za i := 0, . . . , n radi Index[i] = 0.
2. k := 0.
3. gotovo := T .
182 4.3. PRETRAŽIVANJE I SORTIRANJE
7. Index[m] := Index[m] + 1.
10. l := 1.
11. Za i := 0, . . . , 10 radi
13. l := l + 1.
15. gotovo := T .
16. k := k + 1.
17. Idi na 4.
Kao prvo, ovaj algoritam nije, kao većina ranije opisanih, intuitivno
jasan. Iz njega nije potpuno jasno da on listu sortira ulazno. Stoga je
potrebno dokazati da je ovaj algoritam zaista korektan.
Teorem 4.5 (Korektnost) Radix sort algoritam sortira svako zadano po-
lje.
Dokaz. Indukcijom po broju znamenaka k, najveće vrijednosti u polju.
Baza indukcije: Neka k = 1. Ako su svi brojevi jednoznamenkasti, onda
ćemo ih u prvom prolazu podijeliti na 10 pomoćnih polja. U prvom će biti
sve nule, u drugom sve jedinice, itd. Kod spajanja će nule doći na početak,
jedinice iza njih itd., pa će polje biti sortirano.
Pretpostavimo da radix sort ispravno sortira brojeve do m znamenaka.
Neka je k = m + 1. Nakon m-tog spajanja brojevi će biti sortirani is-
pravno po posljednjih m znamenaka. U (m + 1)-om razdijelimo brojeve u
10 pomoćnih polja, tako da u prvom budu svi koji imaju vodeću nulu, u
drugom svi koji imaju vodeću jedinicu itd. Osim toga, kako su brojevi bili
sortirani po preostalih m znamenaka, u svakom će pomoćnom polju brojevi
biti sortirani. Kada spojimo pomoćna polja tako da prvo stavimo brojeve
s vodećom nulom, pa one s vodećom jedinicom i tako redom, dobit ćemo
sortirano polje.
POGLAVLJE 4. ALGORITMI 183
u pomoćnu hrpu. Na taj način povećavamo prostor koji ovaj algoritam za-
htjeva, jer koristimo pomoćnu strukturu. Moglo bi se proći i bez toga, ako
bi se sortiralo izravno u ulaznom polju. No, zato bismo trebali modificirati
neki od ranije opisanih algoritama sortiranja. Kada bismo implementirali
bucket sort za stvarno korištenje, tada bismo to i učinili, smanjujući time
njegovu prostornu, ali i vremensku složenost. No, na ovoj razini, nama to
nije u interesu, jer bi to znatno zakompliciralo naše izlaganje, kao i algori-
tam koji bismo dobili, i odvelo nas nepotrebno od biti metode u detalje neke
druge metode sortiranja.
Stoga imamo sljedeći algoritam:
Algoritam 4.20
ULAZ: Polje A od n elemenata
IZLAZ: Sortirano polje koje se sastoji od elemenata iz polja A.
1. Za i := 1, . . . , n radi korak 2.
2. U metni(a[i], h(i)).
3. k := 0.
4. Za i := 1, . . . , n radi korake 5-12.
5. j := 1.
6. Sve dok nije P razan(h(i)) radi korake 7-8.
7. b[j] := Brisi(h(i)).
8. j := j + 1.
9. Ako je j > 1 radi heapsort(b[1], . . . , b[j − 1]).
10. za l := 1, . . . , j − 1 radi korak 11.
11. a[l + k] := b[l].
12. k := k + j − 1.
BucketSort
Tmax (n) ≤ c1 + n · c2 + c3 + c4 + c5 · n + c6 · (n − 1) · lg(n − 1).
Odnosno,
BucketSort
Tmax (n) = O(n · lg n).
Minimalna složenost dobije se ako se pretpostavi u potpunosti uniformna
distribucija elemenata. Tada svaki element dolazi u svoj pretinac hash-
tablice, pa imamo:
BucketSort HeapSort
Tmin (n) ≤ c1 + n · c2 + n · Tmax (1),
odnosno
BucketSort
Tmin (n) ≤ c1 + n · c2 + n · c3 = Θ(n). (4.10)
Za prosječnu složenost treba pretpostaviti uniformnu distribuciju na
veličinu svakog pojedinog elementa, tj. pretpostaviti da je jednako vjero-
jatno da će svaki pojedini element ući u bilo koji pretinac hash-tablice.
" n
#
X
BucketSort heapsort
Tavg (n) = E Θ(n) + Tavg (Ni ) ,
i=1
pri čemu je Ni broj elemenata u i-tom pretincu hash tablice. Zbog linear-
nosti matematičkog očekivanja imamo
" n #
X
BucketSort heapsort
Tavg (n) = n + E Tavg (Ni )
i=1
n
X
heapsort
= n+ E[Tavg (Ni )]
i=1
Xn
heapsort
= n+ Tavg (ENi ).
i=1
186 4.4. ZADACI
BucketSort BucketSort
Tavg (n) = Tmin (n) = Θ(n).
4.4 Zadaci
1. Izvedite algoritme iz poglavlja 4.1 na računalu u programskom jeziku
po želji.
4.5 Projekti
1. Napravite program koji će sortirati datoteku. Za sortiranje u vanj-
skoj memoriji koristi se modificirano sortiranje spajanjem. Kako bi
sortiranje spajanjem radilo što bolje, prije početka sortiranja datoteku
prepišite u drugu datoteku, ali tako da elementi prije prepisivanja pro-
laze kroz hrpu odredene dubine. Elementi se iz ulazne datoteke pune u
hrpu, a iz hrpe se prepisuju u izlaznu datoteku tek kada je hrpa puna
i u nju više ne stane ni jedan element. Cijeli algoritam mora imati
složenost O(n · lg n), pri čemu je n broj čitanja i pisanja podataka u
vanjskoj memoriji.
[2] Cormen, T. H.; Lieserson, C. E,; Rivest, R. L.; Stein, C.: Introduction
to Algorithms, 2nd edition, The MIT Press, Cambrige, 2001.
[6] Knuth, D.E.: The Art of Computer Programming: Sorting and Search-
ing, Addison-Welsey, Reading, Massachusets, 1973.
[8] Pavković, B., Dakić, B.: Polinomi, Školska knjiga, Zagreb, 1987.
189
190 BIBLIOGRAFIJA
Poglavlje 5
Teorija grafova
191
192 5.1. DEFINICIJA GRAFA I OSNOVNA SVOJSTVA
Slika 5.2
Euler je taj problem riješio tako da je prvo načinio model, koji danas
nazivamo grafom. Dijelovi grada odvojeni vodom predstavljali su vrhove, a
mostovi bridove tog grafa. Problem se sada svodio na to da se počevši od
bio kojeg vrha prode kroz sve bridove točno jedanput i vrati na početak.
Takvo se obilaženje u teoriji grafova Euleru u čast danas naziva Eulerova
staza.
POGLAVLJE 5. TEORIJA GRAFOVA 193
1 3
Slika 5.3
Definicija 5.1 Neusmjereni graf (eng. undirected graph) G je par (V, E),
pri čemu je V skup vrhova (eng. vertices) grafa, a E ⊆ V × V skup
neuredenih parova elemenata iz V , koji čini skup bridova (eng. edges) grafa
G.
2
a b
d
1 3
c
4
Slika 5.4
Definicija 5.4 Jednostavni graf, u kojem je svaki par vrhova spojen jednim
bridom, zove se potpuni graf (eng. complete graph). Potluni graf s vrhova
označavamo s Kn .
POGLAVLJE 5. TEORIJA GRAFOVA 195
Slika 5.5
4 2
Slika 5.6
196 5.1. DEFINICIJA GRAFA I OSNOVNA SVOJSTVA
Definicija 5.5 Bipartitni graf (eng. bipartite graph) je graf za čiji skup
vrhova postoji particija V = {X, Y } dva skupa X i Y , tako da svaki brid
ima jedan kraj u X, a drugi u Y .
Potpuni bipartitni graf (eng. complete bipartite graph) je bipartitni
graf kod kojeg je svaki vrh iz X spojen sa svakim vrhom u Y točno jednim
bridom.
Iz prethodne definicije slijedi da je potpuni, odnosno potpuni bipartitni
graf u potpunosti odreden brojem svojih vrhova, odnosno brojem vrhova u
particiji skupa vrhova.
Slika 5.7
Korolar 5.1 U svakom grafu broj vrhova neparnog stupnja je paran broj.
Dokaz. Primijetimo da je
X
d(v) = 2²
v∈V
sumandi neparni brojevi, treba ih biti paran broj, kako bi suma bila paran
broj.
Prethodna se tvrdnja u literaturi može naći pod nazivom Handshaking
lemma ili Lema o rukovanju. Razlog tom nazivu je to što se problem te
tvrdnje može svesti na rješenje sljedećeg problema: u danom skupu ljudi,
broj ljudi koji se rukuju s neparnim brojem drugih ljudi, je paran broj.
Zadatak 5.4 Nadite primjer grafa koji nije jednostavan, ima četiri vrha i
svi su vrhovi različitog stupnja.
• f je bijekcija,
Zadatak 5.5 Nacrtajte sve različite grafove s četiri vrha. Koliko ih ima?
Definicija 5.8 Graf G je regularan ako svi njegovi vrhovi imaju isti stupanj,
tj. d (v) = r, ∀v ∈ V (G). Za graf čiji su svi vrhovi stupnja r kažemo da je
regularan reda r, r-regularan ili r-valentan.
Primjer 5.6 Kolika je suma stupnjeva svih vrhova kod r-regularnog grafa?
X n
X
Iz definicije regularnog grafa slijedi da je d(v) = r = nr.
v∈V i=1
1. A = {1, 2, 3, 4, 5, 6} ,
2. B = {1, 2, 3, 5, 7} ,
3. C = {2, 5, 7, 9} .
2
a b
d
1 3
c
4
Slika 5.8
Teorem 5.2 Graf G je bipartitan ako i samo ako G ne sadrži cikluse ne-
parne duljine.
POGLAVLJE 5. TEORIJA GRAFOVA 201
Ovaj teorem nećemo dokazivati, a njegov se dokaz može naći u [1], str.
190.
Već smo spopmenuli da je pseudograf graf koji može sadržavati petlje i
višestruke bridove.
Definicija 5.12 Pseudograf je povezan ako i samo ako postoji šetnja izme-
du bilo koja dva njegova vrha.
V = V1 ∪ V2 ∪ ... ∪ Vr .
Teorem 5.3 Povezani pseudograf ima Eulerovu stazu ako i samo ako ima
najviše dva vrha neparnog stupnja.
Dokaz. Već je Euler dokazao da ako Eulerova tura postoji, onda u svaki
vrh u koji se ude mora biti moguće i izaći što znači da su stupnjevi bridova
parni brojevi. Pretpostavimo sada da je pseudograf povezan i svi su vrhovi
parnog stupnja i pokažimo da je graf Eulerov. Neka je v vrh u grafu. Ako
vrh ima petlji, treba slijediti svaku petlju bez ponavljanja. Budući da je
broj vrhova u grafu barem 2, postoji barem još jedan vrh v1 , pa povežemo
v i v1 . U v1 prvo obidemo sve petlje, a onda se pomaknemo u sljedeći vrh
v2 (ako postoji). Kad god dodemo u novi vrh, prvo obidemo sve petlje, a
onda izademo iz vrha. Uvijek je moguće izaći iz vrha u koji smo ušli, jer
je stupanj svakog vrha paran broj. Još se moramo uvjeriti da se možemo
vratiti u vrh v. Uzmimo da smo zaokružili turu C1 , tj. vratili smo se prvi
puta u v. Ako smo pri tome obišli sve bridove, posao je završen. Ako to nije
slučaj, tj. tura C1 nije Eulerova, izbacimo iz grafa sve bridove iz C1 te one
vrhove iz C1 , koji su izbacivanjem bridova ostali izolirani. Promatramo graf
G1 = G \ C1 i ponavljamo postupak. Budući da je G povezan onda G1 i C1
imaju barem jedan zajednički vrh u. Krenuvši iz vrha u pronalazimo novu
turu C u G1 i kombiniramo je s prethodnom turom, tako da krenemo iz v,
a kad dodemo do vrha u nastavimo dalje turom C dok se ne vratimo u u,
a tada nastavimo dalje u turi C1 . Tako smo dobili turu C2 , koja ima više
uključenih bridova od C1 . Postupak nastavljamo dok ne iscrpimo sve vrhove
i bridove iz konačnog grafa G.
POGLAVLJE 5. TEORIJA GRAFOVA 203
Korolar 5.2 Povezani graf ima Eulerovu stazu ako i samo ako ima najviše
dva vrha neparnog stupnja. Ako ima točno dva vrha neparnog stupnja, onda
Eulerova staza mora početi i završiti u tim vrhovima.
Dokaz. Prema Eulerovom teoremu graf nema vrhova neparnog stupnja
ako i samo ako dopušta Eulerovu turu. Dakle, pretpostavimo da graf G ima
vrhove neparnog stupnja.
Pretpostavimo da graf G = (V, E) ima Eulerovu stazu koja nije zatvo-
rena. Unutrašnji vrhovi staze su uvijek incidentni s dva brida, pa krajnji
vrhovi staze imaju neparne stupnjeve, a svi ostali vrhovi imaju parne stup-
njeve.
S druge strane, znamo da je broj vrhova neparnog stupnja paran broj.
Dakle,u grafu ne može biti samo jedan vrh neparnog stupnja koji ima Eule-
rovu stazu.
Neka su sada vi i vj jedina dva vrha u G koji imaju neparan stupanj.
Promotrimo dva slučaja.
Prvi slučaj: vrhovi vi i vj nisu susjedni. Dodamo li njihovu spojnicu,
brid eij , u skup svih bridova u grafu G, tada će tako uvećani graf imati sve
vrhove parnog stupnja i dopuštat će Eulerovu turu. Brisanjem brida eij iz
Eulerove ture dobit ćemo Eulerovu stazu koja počinje u vi i završava u vj
ili obrnuto.
Drugi slučaj: vrhovi vi i vj jesu susjedni. Sada skupu vrhova od G
dodamo novi vrh vn , za koji vrijedi da ga brid eni veže s vrhom vi , a brid
enj s vj . Pri tome smo skup bridova E od G uvećali za dva brida eni i
enj . Sada su u uvećanom grafu svi vrhovi parnog stupnja, pa graf dopušta
zatvorenu Eulerovu stazu. Brisanjem vrha vn i bridova eni i enj iz G u G
ostaje Eulerova staza kojoj su vrhovi vi i vj krajnje točke.
Naglasimo da Eulerov teorem i gornji korolar vrijede i u grafu koji sadrži
višestruke bridove, tzv. pseudografu.
Postoji algoritam za traženje Eulerove staze u grafu. Algoritam je pro-
našao Edouard Lucas (1842-1891), ali ga je posvetio M. Fleuryju, pa ga
zovemo Fleuryjev algoritam. Algoritam se temelji na brisanju onih bridova
iz grafa koji ne utječu na povezanost grafa (do kada je to moguće).
Brid eij je most (engl. bridge) u G ako njegovo brisanje daje podgraf od
G s više komponenti povezanosti.
2. k := 0.
4. Graf Gk+1 se dobija iz Gk brisanjem brida ek,k+1 , tj. Gk+1 = (V, Ek+1 )
pri čemu je Ek+1 = Ek \{ek,k+1 }).
Zadatak 5.13 Nadite uvjete pod kojima su potpuni grafovi i potpuni bi-
partitni grafovi Eulerovi.
A = [aij ] .
2
a b
d
1 3
c
4
Slika 5.9
1 2 3 4
1 0 0 1 1
2 0 0 1 0
3 1 0 0 1
4 1 0 1 0
0 0 1 1
0 0 1 0
Matrica susjedstva: A =
1
0 0 1
1 0 1 0
Matrica incidencije M:
a b c d
1 0 0 1 1
2 1 0 0 0
3 1 1 0 1
4 0 1 1 0
1 2 1 0
2 0 1 0
A=
1
1 0 0
0 0 0 0
1 2 1 1 1 3 1 1
2 0 1
1 3 0 1 1
A=
1 ,B = .
1 0 3 1 1 1 2
1 1 3 1 1 1 2 0
208 5.6. HAMILTONOVI CIKLUSI
1. Nacrtajte grafove G i H.
2. Što primjećujete?
3. Odredite preslikavanje vrhova koje vodi do izomorfizma.
4. Odredite preslikavanje bridova koje vodi do izomorfizma.
5. Postoji li matrica P takva da je B = P AP T ?
6. Kako se formira matrica P ?
n−1
Zadatak 5.17 Nadite primjer grafa za koji je d (v) ≥ 2 , a da nije Ha-
miltonov, tj. da ne vrijedi Diracov teorem.
(P,2) (P,8)
6
C D
2 5 3
(P,3)
3 5 (B,8)
(-,0) P B E
(A,7)
4
3 3 5
9 (A,13)
A K
(E,12)
(P,4)
Slika 5.10
Algoritam 5.3
ULAZ: Graf G = (V, E).
IZLAZ: Pseudograf G0 = (V, E 0 )
Primjer 5.10 Nadite zatvorenu minimalnu turu koja sadrži sve bridove
danog grafa.
D 6 C
2 3
7 E 9
4 5
A 8 B
Slika 5.11
1. Neparni vrhovi: A, B, C i D
5.8 Stabla
Pojam stabla u 19 st. uveo je Arthur Cayley proučavajući posebne
klase grafova, koji prikazuju odredene kemijske spojeve (hidrokarbonate).
Ti su grafovi imali jedno važno svojstvo: nisu sadržavali cikluse. Sta-
bla imaju primjenu u rješavanju problema kao što
je povezivanje udaljenih lokacija mrežom. Treba,
npr. povezati lokacije u različitim gradovima, a
koncesionar mreže (bilo da je riječ telefonskim li-
nijama, ili o računalnoj mreži) različito naplaćuje
veze izmedu pojedinih gradova. Takoder, stabla
se mogu primjeniti na problem kada je potrebno
neko područje pokriti telefonskom, električnom ili
vodovodnom mrežom.
Još jedna moguća primjena je u izračunavanju op-
timalnih ruta za povezivanje gradova avionskim
linijama. Neekonomično je da svaki grad, koji ima
aerodrom, bude povezan sa svakim drugim takvim Slika 5.12: Arthur Cayley
gradom, a opet se želi da se avionskom vezom može doći do svakog grada
POGLAVLJE 5. TEORIJA GRAFOVA 215
uz minimalni trošak.
Nadalje, stabla se primijenjuju i u fizikalnoj kemiji. Osim toga, mnoge in-
formacijske strukture u računarstvu se temelje na stablima. Direktoriji i
poddirektoriji koji sadrže podatke predstavljaju vrhove u stablu. Binarna
stabla omogućuju efikasno spremanje uredenih podatka i tako dopuštaju
brzo pretraživanje.
Više o primjenama stabala možete pronaći u [5].
Slika 5.13
Propozicija 5.5 Ako je T = (V, E) stablo s najmanje dva vrha, tada vri-
jedi:
2. Ako iz stabla T izbacimo bilo koji brid dobili smo dva stabla.
3. |E| = |V | − 1.
1. G je stablo.
2. G nema ciklusa, a ima n vrhova i n − 1 brid.
3. Izmedu svaka dva vrha od G postoji točno jedan put.
4. G je povezani graf s n vrhova i ima n − 1 brid.
Dokaz. Teorem se dokazuje po shemi 1 ⇒ 2, 2 ⇒ 3, 3 ⇒ 4, 4 ⇒ 1,
1⇒2
Pretpostavimo da je G stablo, tj. G je povezani graf bez ciklusa. Treba
dokazati da izmedu svaka dva vrha postoji točno jedan put.
Pretpostavimo suprotno, tj. da izmedu vrhova u i v postoje dva različita
puta:
u = u0 , u1 , . . . , up = v
u = v 0 , v1 , . . . , v q = v
Neka je j najmanji indeks takav da je uj 6= vj . Nadalje, kako je za oba
puta završetak (vrh v), sigurno postoji najmanji indeks k (k > j), takav da
je uk = vl za neki l ≤ q. Medutim, time smo konstruirali ciklus u grafu G
koji počinje u uj−1 , nastavlja se po u-putu do uk = vl i vraća se po v-putu
u vj−1 , a to je kontradikcija s pretpostavkom, pa zaključujemo da izmedu
svaka dva vrha u stablu postoji jedinstveni put.
Ostale dijelove dokaza napravite sami. Poslužite se referencom [2].
Put duljine n − 1 najjednostavnije je stablo s n vrhova. Svaki put, osim
trivijalnog kad je n = 1, ima točno dva vrha stupnja 1.
U nekim problemima postoji vrh v ∗ u stablu kojeg želimo posebno is-
taknuti. Taj vrh zovemo korijenom (eng. root), a takvo stablo zovemo
stablo s korijenom ili korijensko stablo (eng. rooted tree) i označavamo ga s
(T, v ∗ ). U stablu s korijenom, vrhovi se mogu smjestiti u nivoe (eng. level).
Općenito, nivo vrha se definira kao duljina puta od korijena do tog vrha.
Korijen se nalazi na nivou 0, njegovi susjedi na nivou 1. Za k ≥ 2 nivo k
sadrži sve vrhove koji su susjedni vrhovima na nivou k − 1. List na nivou
k, u stablu s korijenom, nema susjeda na nivou k + 1. Visina (eng. height)
stabla s korijenom je maksimalna vrijednost od k na kojem postoji neki vrh
stabla. Za jedinstveni vrh v na nivou k − 1 koji je susjedan vrhu u na nivou
k, kažemo da je njegov roditelj ili prethodnik (eng. parent), a za vrh u
kažemo da je dijete ili sljedbenik (eng. child) vrha v.
Vrhove koji nisu niti listovi niti korijen zovemo unutarnjim vrhovima
(eng. internal vertex) stabla ili vrhom odluke (eng. decision vertex). Izraz
vrh odluke dolazi iz teorije odlučivanja gdje se stabla upotrebljavaju kao
model za proces odlučivanja, koji se provodi na više nivoa, a odluka donesena
na jednom nivou utječe na moguću odluku na nekom drugom nivou (mjestu).
U tom se kontekstu stablo zove stablo odlučivanja (eng. decision tree).
korijen
unutarnji vrh v*
list
Slika 5.14
218 5.8. STABLA
Definicija 5.22 Stablo sortiranja (engl. sort tree) ili binarno stablo pre-
traživanja (engl. binary search tree) je binarno stablo T takvo da je:
Primjer 5.12
Slika 5.15
Algoritam 5.4
ULAZ: Niz elemenata iz skupa na kojem je uveden totalni uredaj.
IZLAZ: Stablo sortiranja Tn za taj niz elemenata.
POGLAVLJE 5. TEORIJA GRAFOVA 219
Sada je svaki element u lijevom stablu manji ili jednak od korijena i svaki
element u desnom stablu je veći ili jednak korijenu. Dakle, svi se elementi
iz lijevog stabla trebaju ispisati prije korijena, a svi elementi desnog stabla
poslije korijena. Uočimo da su i lijevo i desno podstablo stabla sortiranja,
pa se prvi element podstabla može promatrati kao korijen.
Opišimo postupak rekurzivnog sortiranja.
2. Ispisujemo korijen.
1 4
2 6
Slika 5.16
× c
a b
Slika 5.17
POGLAVLJE 5. TEORIJA GRAFOVA 221
Primjer 5.15 Evo prefiks koda čijih 9 kodnih riječi korespondira danom
binarnom stablu.
slovo a b c d e f g h i
kodna riječ 0000 0001 001 010 0110 0111 10 110 111
Stablo koje opisuje ovaj kod dano je na slici 5.18.
0 1
0 1 0 1
g
0 1 0 1 0 1
c d e f
0 1 0 1
a b e f
Slika 5.18
Algoritam 5.5
ULAZ: Graf G = (V, E).
IZLAZ: Minimalno razapinjuće stablo T grafa G.
224 5.8. STABLA
Algoritam 5.6
ULAZ: Graf G = (V, E).
IZLAZ: Minimalno razapinjuće stablo T grafa G.
3. Nadimo grafu najbliži slobodni vrh i taj vrh postaje dio grafa.
jedanput. Dakle, konstruiramo podgraf koji sadrži sve vrhove grafa, tj.
razapinjući podgraf.
Ovaj zadatak možemo riješiti na temelju dvije različite osnovne strate-
gije, a obje vode do konstruiranja razapinjućeg stabla u grafu. Prva, koja
prelazi na novi vrh, čim je on dostupan, tzv. potraga prvo u dubinu (depth-
first search - DFS, pronašao ga Tarjan 1972. godine) i druga, gdje se provje-
ravaju svi vrhovi na istoj razini (level) i tek se onda prelazi na sljedeći nivo
tzv. potraga prvo u širinu (breadth-first search - BFS, pronašao ga Dijkstra
1959. godine).
DFS se može promatrati i kao specijalni slučaj opće metode rasta stabla.
U DFS metodi počinjemo u danom vrhu v0 (baza indukcije) i traženo
stablo T se za sada sastoji samo od tog vrha, tj. T = {v0 } . U koraku
indukcije, uzmimo da je x novi vrh u stablu T . Ako je y susjedni vrh
od x u grafu G, koji ne pripada stablu T, uključujemo ga u stablo. Sada
y postaje novi vrh i ponavljamo postupak pretraživanja njegovih susjeda.
Ukoliko nema novih susjeda od y, vraćamo se natrag na vrh, od kojeg smo
došli do y (u našem slučaju na vrh x) i tražimo njegove susjede, koji još
nisu uključeni u stablo T . Kad se u tom postupku vratimo do korijena v0
postupak je završen i traženo stablo T je konstruirano.
Problem MST pripada u probleme rastućeg stabla (eng. tree-growing
problem), dok se ovdje radi o stablu pretraživanja (eng. search tree). Za
razliku od MST problema ovdje nismo pretpostavili da je graf G povezan,
stoga znamo da DFS metoda može naći samo vrhove koji su povezani s v0 .
Stoga vrijedi sljedeći teorem:
Definicija 5.24 Usmjereni graf ili digraf (eng. directed graph, digraph)
je par (V, A), pri čemu je V neprazan skup vrhova grafa, a svaki element
skupa A je uredeni par različitih elemenata iz V. Elementi od A zovu se
lukovi (eng. arc).
Dakle, ako kod bilo kojeg grafa, svakom bridu dodamo orijentaciju, dobit
ćemo usmjereni graf. Obrat ove izjave ne vrijedi, tj. ne može se svaki us-
mjereni graf dobiti iz neusmjerenog. Kod usmjerenog grafa bridovi su pred-
stavljeni kao uredeni parovi vrhova, dok su kod neusmjerenog grafa bridovi
neuredeni parovi vrhova, tj. dvočlani skupovi. Pri crtanju, orijentaciju brida
naznačimo strelicom prema w, ako je sa (v, w) dan luk.
Nadalje, usmjereni graf možemo shvatiti kao prikaz relacije R na ele-
mentima istog skupa A (ρ ∈ A2 ). Sada je (v, w) luk u grafu R ako i samo
ako je vRw. Neka svojstva relacija sada se vizualiziraju na grafu. Svojstvo
simetričnosti na grafu možemo provjeriti tako da uočimo da za svaki luk
(v, w) postoji njemu suprotno orijentirani luk (w, v) tj. da se lukovi uvijek
javljaju u parovima. Refleksivnost se očituje tako da svaki vrh ima petlju.
POGLAVLJE 5. TEORIJA GRAFOVA 227
5.9.2 Turnir
Primjer usmjerenog grafa je graf koji nastaje kao prikaz turnira (engl. tour-
nament) gdje svaki igrač igra protiv svakog drugog. Uočite da na taj način
dobivamo jednostavni potpuni graf, koji pretvaramo u usmjereni graf. Luk
(v, w) nastaje ako igrač v pobijedi igrača w, a luk (w, v) ukoliko w pobijedi
igrača v. Svaki graf takvog oblika zove se turnir. U turniru se mogu javiti
usmjereni ciklusi duljine veće ili jednake 3, ali ne i ciklusi duljine manje od
3. Unatoč tome vrijedi sljedeći teorem.
Teorem 5.10 U svakom turniru postoji usmjereni put koji sadrži sve vr-
hove grafa (usmjereni Hamiltonov put) .
Zadatak 5.24 Turnir je zadan pomoću sljedeće tablice. Uredeni par (x, y)
predstavlja luk, ako je y u stupcu definiranom sa x.
228 5.9. USMJERENI GRAFOVI I MREŽE
a b c d e f
c a f b a a
d c c c b
e d d
f
Tablica 5.1
ai a1 a2 a3 a4 a5 a6
ti 2 4 6 5 4 3
pi − a1 a1 a3 a2 a5
pi a4
Slika 5.19
v p q r s t z
V(v) 0 3 8 13 17 20
Tablica 5.2
a2
4
q s
a1
2 a5
4
a3 a5
p 6 5
t
r
a6
3
Slika 5.20
Sada ćemo za svaki vrh v računati krajnje vrijeme K (v), kad taj dogadaj
treba nastupiti, da bi projekt bio završen u zadanom roku. Ovdje imamo
rekurziju ”unatrag”. Ako je t vrijeme trajanja projekta tada za posljednji
vrh z vrijedi K (z) = t, a za svaki drugi vrh v
gdje je y svaki vrh takav da vx predstavlja luk. Sada definiramo (float time)
F (y, z) kao
F (y, z) = K (z) − V (y) − w (y, z) ,
što znači da aktivnost yz može početi bilo kada u vremenu od V (y) do
V (y) + F (y, z), bez da to utječe na završetak projekta. Aktivnost za yz,
koju je F (y, z) = 0, je kritična aktivnost za projekt. U svakoj mreži projekta
postoji barem jedan put koji se sastoji od kritičnih aktivnosti i zove se
kritični put.
ai a1 a2 a3 a4 a5 a6 a7
ti 1 3 5 4 6 2 3
pi − a1 a1 a3 a2 a5 a3
pi a4 a6
Tablica 5.3
Tablica 5.4
POGLAVLJE 5. TEORIJA GRAFOVA 233
4
q s
2
4
6 5
i
5 t
r 4
3
Slika 5.21
Zbog zakona očuvanja, za bilo koji luk (s, t) vrijedi da je ukupni izlaz iz
s jednak ukupnom ulazu u t. Dakle, izlaz (s) = ulaz (t) , za bilo koji protok
kroz (s, t) . Tu zajedničku vrijednost, koja mjeri ukupni protok kroz mrežu,
zovemo vrijednost protoka.
Vrijednost protoka f na mreži D definira se kao
X
val (f ) = f (i, v) .
v∈V
X
val (f ) ≤ f (x, y) .
x∈S
y∈T
Zakon izvodljivosti f (x, y) ≤ c (x, y), koji vrijedi za svaki luk (x, y) , primi-
jenimo na lukove čiji je početak u skupu S i završetak u T, pa imamo:
X
val (f ) ≤ c (x, y) .
x∈S
y∈T
2. putevi u kojima suprotni luk ( umjesto luka (a, b) promatramo (b, a))
nosi ”kontra-protok”.
za sve 1 ≤ i ≤ k − 1.
POGLAVLJE 5. TEORIJA GRAFOVA 235
Algoritam 5.7
ULAZ: Transportna mreža G = (V, E).
IZLAZ: Maksimalni protok transportne mreže G.
s2 s7
s1
s5 s6
s4
Slika 5.22
Tablica 5.5
Vidi se da nije moguće sve sekcije smjestiti u manje od tri termina, jer
postoji trokut s3 s5 s6 u grafu što znači da nijedan od ta tri vrha ne smije
biti u istom terminu s preostala dva. Dakle, kromatski broj ovog grafa je 3.
Vrhovi se prema tome mogu obojiti s 3 boje.
POGLAVLJE 5. TEORIJA GRAFOVA 239
s2 s7
s1
s5 s6
s4
Slika 5.23
Bojenje vrhova grafa možemo shvaćati i kao particiju skupa svih vrhova
takvu da su u svakom skupu particije samo oni vrhovi koji nemaju zajednički
brid. Dakle, svaki skup particije sadrži samo vrhove iste boje, pa se često
naziva i klasa boje (eng. color class).
1. χ (G) ≤ k + 1,
a b c d e f g
u 1 1 0 0 0 0 1
v 0 1 1 0 1 0 0
z 1 0 0 1 0 1 0
x 0 0 0 0 1 1 1
Tablica 5.6
u v z x
a b c d e f g
Slika 5.24
Teorem 5.16 (P. Hall, 1935) Neka je G bipartitni graf, pri čemu su V1 i V2
podskupovi biparticije. Postoji sparivanje koje zasićuje V1 ako i samo ako
za svaki podskup X ⊆ V1 ,vrijedi da je |X| ≤ |S (X)| .
5.12 Zadaci
1. Odredite broj bridova u potpunom bipartitnom grafu Km,n .
2ε
δ≤ ≤ ∆.
n
4. Imamo sljedeće definicije
a d
b c
Slika 5.25
244 5.12. ZADACI
5 3
2 2
5 4 7
3 6 4 4
A K
4 4
3 6 5
6 5
POGLAVLJE 5. TEORIJA GRAFOVA 245
Slika 5.26
17. Ciklički graf je graf čiji svi vrhovi i bridovi leže na istoj kružnici.
Nadite kromatski broj cikličkog grafa od 2n vrhova i cikličkog grafa
od 2n + 1 vrhova.
Slika 5.27
a b c d e f g h
b a b a b g c a
d c d b f g
h d g c h
e
Tablica 5.7
* ◦
- + e f
a b c d
Slika 5.28
a
10
5 d
4
3 9
6 b
i u
11 4
2 e
8
6
c
Slika 5.29
Slika 5.30
Slika 5.31
gdje je n = m + k.
5.13 Projekti
1. Povezani graf zovemo semieulerov graf ako postoji put u grafu koji
sadrži sve bridove grafa. Povezani graf zovemo semihamiltonov graf
ako postoji put u grafu koji sadrži sve vrhove grafa. Istražite svojstva
takvih grafova i njihovu vezu s Eulerovim i Hamiltonovim grafom.
[1] Biggs, N. L., Discrete Mathematics, Oxford University Press Inc., New
York, 2002.
[3] Garnier, R.: Taylor, J.: Discrete Mathematics for New Technology, IOP
Publishing Ltd, London 1999.
[5] Gross, J.; Yellen, J.: Graph Theory and its Applications, CRC Press,
London, 1999.
[9] Thinbleby, H.: The directed Chinese Postman problem, UCLIC, Lon-
don, http://www.uclic.ucl.ac.uk/harold (27.1.2005.)
251
252 BIBLIOGRAFIJA
Poglavlje 6
Algebarske strukture
253
254 6.1. DEFINICIJA I PRIMJERI ALGEBARSKIH STRUKTURA
◦ a b c
a a c b
b c b a
c b a c
tablica 6.1
6.2 Grupe
Algebarska struktura grupe motivirana je standardnim binarnim operaci-
jama zbrajanja i množenja na skupovima brojeva. Svojstva tih operacija
nabrojena su u prvom dijelu ove knjige. Ovdje dolazi do izražaja važnost
skupa brojeva na kojem je operacija definirana. Ovisno o skupu operacija,
na skupu brojeva postoji struktura grupe ili ne postoji.
Teorije permutacija, dizajna, te latinskih kvadrata samo su neke za koje
je potrebno poznavati teoriju grupa, polja i prstenova.
a ◦ b = c,
(a ◦ b) ◦ c = a ◦ (b ◦ c) .
U skupu cijelih brojeva za svaki cijeli broj a postoji njemu suprotni broj −a
za koji vrijedi a + (−a) = 0. Promatramo li operaciju množenja na skupu Z,
ona na tom skupu nema inverzni (suprotni) element, tj. za svaki cijeli broj
a ne postoji takav broj a0 za koji je a · a0 = 1, jer je za a 6= 0 takav broj
a0 = a1 . Medutim u skupu Q\{0} svaki broj ima multiplikativni inverz.
Dakle, operacija ◦ ima inverzni (suprotni) element na skupu S, ako za
element a ∈ S \ {e} postoji takav broj a0 za koji je
a ◦ a0 = a0 ◦ a = e.
e ◦ e0 = e0 ◦ e = e
e0 ◦ e = e ◦ e0 = e0 .
Dakle, slijedi e = e0 .
x◦a = a◦x=e
x ◦ b = b ◦ x = e.
Sada je
a = a◦e
= a ◦ (x ◦ b)
= (a ◦ x) ◦ b
= e◦b
= b.
a1 = a, a2 = a ◦ a, ..., an = a ◦ an−1 , za n ≥ 2,
a−1 = a0 , a−2 = a0 ◦ a0 , ..., a−n = a−1 ◦ a−(n−1) , za n ≥ 2.
1[3] = [3]
2[3] = [3] +7 [3] = [6]
3[3] = [3] +7 [6] = [2]
4[3] = [3] +7 [2] = [5]
5[3] = [3] +7 [5] = [1]
6[3] = [3] +7 [1] = [4]
7[3] = [3] +7 [4] = [0].
POGLAVLJE 6. ALGEBARSKE STRUKTURE 259
Zadatak 6.7
· ¸
a b
1. Pokažite da je skup matrica oblika , gdje su a, b ∈ Z3 i a 6= 0,
0 1
uz operaciju množenja matrica grupa.
6.2.4 Podgrupe
U prethodnoj točki smo utvrdili da su (Z, +) , (Q, +) , (R, +) grupe i pri tome
je Z ⊂ Q ⊂ R. Kažemo da je grupa koja je sadržana u drugim grupama
njezina podgrupa.
Svaka grupa G koja ima barem dva elementa, ima barem dvije pod-
grupe. To je cijela grupa G, te ({e} , ◦) gdje je e neutralni element u G.
Ove dvije podgrupe zovemo trivijalnim podgrupama. Ostale podgrupe dane
grupe zovemo pravim podgrupama. Pokazuje se da svaka beskonačna grupa
ima pravih podgrupa, dok to ne mora biti slučaj kod konačnih grupa. Poz-
nato je da ako je red grupe prosti broj, onda ona nema pravih podgrupa.
Dokaz ove tvrdnje možete naći u [6], str 22.
Slijede dva teorema koji daju test za podgrupe.
1. ab ∈ P za sve a, b ∈ P,
Zadatak 6.9 Pokažite da su {[0] , [2], [4], [6]} , {[0] , [4]} podgrupe grupe (Z8
,+), gdje je operacija u grupi zbrajanje modulo 8.
· ¸
1 a
Zadatak 6.10 Pokažite da je skup matrica oblika , gdje su a ∈ Z ,
0 1
uz operaciju množenja matrica grupa. Nadalje, ispišite sve elemente gornjeg
262 6.2. GRUPE
a ∼ b ⇔ a−1 b ∈ P
bP = {a ∈ S|a = bx za neki x ∈ P }
Imamo
0[2] = [0],
1[2] = [2],
2[2] = [2] + [2] = [0],
−1[2] = [2].
Tražimo takvo kodiranje kod kojeg će se moći otkriti k ili manje od k
pogrešaka i njega zovemo detektorom k pogrešaka (eng. k-error detecting),
kodiranje u kojem ćemo moći ispraviti k ili manje od k pogrešaka. Takvo
kodiranje zovemo korektorom k pogrešaka (eng. k-error correction). Dakle,
kodiranje opisano u prethodnom odjeljku, koje se temelji na parnom broju
jedinica, je detektor jedne pogreške i korektor 0 pogrešaka.
Ranije smo uočili da mogućnost otkrivanja i ispravljanja pogrešaka ovisi
i o udaljenosti medu riječima. U tu svrhu definiramo minimalnu udaljenost
kodova kao minimum svih udaljenosti medu parovima kodova.
Slijede teoremi koji upotrebom pojma minimalne udaljenosti, daju uvje-
te da bi kod bio detektor k pogrešaka, odnosno korektor k pogrešaka.
Minimalna udaljenost koda definira se kao minimum udaljenosti izmedu
parova kodnih riječi.
k + 1 ≤ d (x, y) ≤ 2k.
kao uredene n-torke kako bismo jasno razdvojili pojedine bitove. Kad nema
opasnosti da se pomiješaju bitovi, kodne riječi ćemo i dalje prikazivati kao
nizove (bez zareza izmedu bitova).
x ⊕ y = (x1 +2 y1 , x2 +2 y2 , ..., xn +2 y2 ) .
1. 11001 ⊗ 01011,
2. 010101 ⊕ 101010.
Zbog zbrajanja modulo 2, znamo da će zbroj biti jedinica ako se na ko-
respodentnim mjestima bitovi razlikuju, a dobit ćemo nulu ako su bitovi
koji se zbrajaju jednaki. Ovo svojstvo nam omogućava identifikaciju ra-
zličitih bitova u kodnim riječima. Zbrojimo li jedinice u kodnoj riječi, koja
predstavlja zbroj dviju kodnih riječi, dobit ćemo udaljenost tih kodnih riječi.
Definicija 6.8 Težina riječi (eng. weight) x je broj w (x) , koji kazuje
koliko jedinica ima u toj riječi, tj. za x = (x1 , x2 , ..., xn ) težina je
n
X
w (x) = xi .
i=1
d (x, y) = x ⊕ y. (6.2)
m = d (x, y) = w (x ⊕ y) .
w (x ⊕ y) ≥ n.
Dakle m ≥ n.
S druge strane, uočimo da je 0 neutralni element u grupi, te da za svaki
x ∈ S vrijedi x ⊕ x = 0. Imamo x ⊕ 0 = x za svaki x ∈ S, pa je
d (x, 0) = w (x ⊕ 0) = w (x) .
1 0 0 0 1 0 1 0
£ ¤ 0 1 0 0 0 1 1 0
E (1101) = x1 x2 x3 x4
0
0 1 0 1 1 0 1
0 0 0 1 0 0 0 1
£ ¤
E (1101) = x1 x2 x3 x4 x1 +2 x3 x2 +2 x3 x1 +2 x2 x3 +2 x4 .
Sada je
u1 = x1 u2 = x2 u3 = x3 u4 = x4
u5 = x1 +2 x3 u6 = x2 +2 x3 u7 = x1 +2 x2 u8 = x3 +2 x4 ,
POGLAVLJE 6. ALGEBARSKE STRUKTURE 273
u1 +2 u3 +u5 =0
u2 +2 u3 +u6 =0
u1 +2 u2 +2 u7 =0
u3 +2 u4 +2 u8 = 0.
KuT = O, (6.3)
1. E (x) = xG, ∀x ∈ Rm ,
£ ¤
2. KuT = O, ∀u ∈ Rn , gdje je K = AT Im .
0 0 1 1 0 0 0 1
1. Nadite E (011) .
na skupu cijelih brojeva, tada (Z\ {0} , ·) nije grupa, jer ne postoji in-
verzni element za množenje u skupu cijelih brojeva. Inverzni element cijelog
broja n bio bi n1 , a to općenito nije cijeli broj. Medutim (Z, ·) ima svoj-
stvo zatvorenosti, asocijativnosti, a postoji i jedinica (neutralni element za
množenje). Takvu strukturu općenito zovemo prsten.
6.5.1 Prsten
U ovoj točki ćemo navesti formalnu definiciju prstena, a u sljedećoj najpoz-
natije primjere prstena. Još jedan važniji primjer prstena (prsten polinoma)
obradit ćemo u posebnoj točki na kraju ovog poglavlja.
Zadatak 6.24 Nadite sve cijele brojeve koji imaju multiplikativni inverz s
obzirom na standardnu operaciju množenja.
Primjer 6.9 Nadite sve kvadratne matrice drugog reda, čiji su elementi
cijeli brojevi, koje
· imaju¸multiplikative inverze.
a b
Neka je A = kvadratna matrica i a, b, c, d ∈ Z. Inverz A−1 od
c d
A dobijemo kao rješenje matričnih jednadžbi AA−1 = A−1 A = I, gdje je I
jedinična matrica. Iz linearne algebre znamo da je
· ¸
−1 1 d −b
A =
ad − bc −c a
a b c
i A−1 postoji ako je ad−bc 6= 0. Nadalje, ovdje treba biti ad−bc , ad−bc , ad−bc ,
d
ad−bc ∈ Z. Sljedeća su rješenja moguća: a = d = ±1 i b = c = 0, b = c = ±1
i a = d = 0. Dakle, sljedeće matrice imaju multiplikativne inverze:
· ¸ · ¸ · ¸ · ¸
1 0 1 0 −1 0 −1 0
A1 = , A2 = , A3 = , A4 =
0 1 0 −1 0 1 0 −1
· ¸ · ¸ · ¸ · ¸
0 1 0 1 0 −1 0 −1
B1 = , B2 = , B3 = , B4 = .
1 0 −1 0 1 0 −1 0
· A1 A2 A3 A4 B1 B2 B3 B4
A1
A2
A3
A4
B1
B2
B3
B4
Tablica 6.2
278 6.5. PRSTENI I POLJA
6.5.3 Polje
Ako umjesto skupa cijelih brojeva promatramo skup realnih brojeva i na
njemu opet operacije standardnog zbrajanja i množenja uočavamo da svaki
realni broj, osim 0, ima multiplikativni inverz. Dakle, (R\{0}, ·) je grupa i
to komutativna. Sada strukturu (R, +, ·) zovemo polje realnih brojeva. Polje
realnih brojeva najpoznatiji je primjer polja. Definirajmo polje u općenitom
slučaju.
Dakle, polje je skup opremljen s dvije operacije, koje imaju odredena
algebarska svojstva, kao što je specificirano u sljedećoj definiciji.
(a) a × (b ◦ c) = (a × b) ◦ (a × c) ,
(b) (a ◦ b) × c = (a × c) ◦ (b × c) , ∀a, b, c ∈ S.
POGLAVLJE 6. ALGEBARSKE STRUKTURE 279
Ukoliko p nije prim broj, Zp nije polje. U slučaju kad p nije prim broj
nije ispunjen aksiom 2.a. iz definicije polja.
Detalji se mogu pročitati u poglavlju o kongruencijama.
U slučaju kada m nije prost broj, (Zm , ⊕, ⊗) komutativni prsten, ali
ne i integralna domena.
a = a1 + a2 i + a3 j + c4 k,
i2 = j 2 = k 2 = ijk = −1.
1. m je prim broj.
2. Zm je integralna domena.
3. Zm je polje.
POGLAVLJE 6. ALGEBARSKE STRUKTURE 281
F n = {(a1 , a2 , ..., an ) : ai ∈ F } ,
a množenje skalarom α s:
1. α ¯ (x ⊕ y) = (α ¯ x) ⊕ (α ¯ y),
2. (α + β) ¯ x = (α ¯ x) + (β ¯ x),
3. α ¯ (β ⊕ x) = (αβ) ¯ x,
4. 1 ¯ x = x.
2x − 3y + z − t = 0
−x + y − 5z + 2t = 0
3x − 5y − 3z = 0
2x − 10t + 28z = 0
¡ ¢
5 (a1 + a2 ) + b1 + b2 , 3 (a1 + a2 ) , b1 + b2 , a1 + a2 + 3 (b1 + b2 ) ,
x2 + 4x + 5 i 4x2 + x + 3,
Skup Pn svih polinoma stupnja manjeg ili jednakog n, s realnim ili kom-
pleksnim koeficijentima, je vektorski prostor, koji zovemo vektorski prostor
polinoma.
Više o toj temi možete naći u [7].
Primijetimo da skup svih polinoma stupnja n, nema strukturu vek-
torskog prostora, jer suma dva polinoma n-tog stupnja može biti manjeg
stupnja od n. Na primjer,
¡ 3 ¢ ¡ ¢
2x − x + 1 + −2x3 + 3x2 + 2x − 2 = 3x2 + x − 1.
6.9 Zadaci
1. Na partitivom skupu P (A) definirana je operacija unije ∪.
E (x1 x2 x3 ) = x1 x2 x3 x1 x2 x3 x1 x2 x3 .
(a) x2 + 3x + 4 i 2x2 + 2x + 3
(b) x4 + 2x3 + x2 + 2x + 1 i 2x4 + 3x3 + 4x2 + 3x + 2
(x + 1)7 = x7 + 1.
6.10 Projekti
1. Promatramo jednakostranični trokut i skup svih transformacija koje
preslikavaju taj trokut u njega samog do na poredak vrhova. Taj skup
zovemo skup simetrija jednakostraničnog trokuta. U simetrije ulaze i
rotacije, dakle sve izometrije trokuta. Pronadite sve takve simetrije
i pokažite da one uz operaciju kompozicije preslikavanja čine grupu.
Ovu strukturu zovemo diedralna 4-grupa. Napišite Cayleyevu tablicu
POGLAVLJE 6. ALGEBARSKE STRUKTURE 289
[1] Biggs, N. L.: Discrete Mathematics, Oxford University Press Inc., New
York, 2002.
[3] Garnier, R.; Taylor, J.: Discrete Mathematics for New Technology, IOP
Publishing Ltd, Bristol, 1999
[4] Gross, J.; Yellen, J.: Graph Theory and its Applications, CRC Press,
London, 1999.
[9] Welsh, D.: Codes and cryptography, Oxford University Press, 1988
291
292 BIBLIOGRAFIJA
Poglavlje 7
Matematička teorija
računalstva
293
294 7.1. JEZICI
7.1 Jezici
Bit cijelog ovog poglavlja je u izradi automata, strojeva, gramatika vezanih
uz pojedine jezike. Stoga ćemo na početku ovog poglavlja obraditi pojam
jezika, te gramatika pomoću kojih se opisuju jezici.
• w0 = ε,
• wk = wk−1 w.
Primjer 7.1 Neka je dana abeceda Σ = {0, 1}. Možemo definirati jezik
koji se sastoji od binarnih brojeva, koji nemaju vodećih nula kao:
L = {w : w = 1v, v ∈ Σ∗ }.
Primjer 7.2 Definirajmo sada jezik nad abecedom Σ = {a, b} koji se sastoji
od riječi koje počinju s konačnim brojem a-ova, iza čega slijedi jednak broj
b-ova:
L = {w : w = an bn }.
• ∅ je regularni izraz.
296 7.1. JEZICI
• (a) ∗ ((b)|(c))∗,
• ((a)|(b)|(c))∗,
• a(b) ∗ (a) ∗ b.
• a ∗ (b|c)∗,
• (a|b|c)∗,
• ab ∗ a ∗ b,
Primjer 7.3 Izvedimo neke riječi koje se nalaze u jezicima opisanim regu-
larnim izrazima iz prethodnog primjera:
• Prvi izraz definira jezik koji se sastoji od riječi koje na početku imaju
proizvoljan broj slova a, nakon čega slijedi proizvoljna riječ koja se
može sastaviti od slova b i c. Dakle sljedeće riječi su u tom jeziku:
ε
POGLAVLJE 7. MATEMATIČKA TEORIJA RAČUNALSTVA 297
b
aaaa
aaabcbbbcbcb
• Ovaj izraz definira riječi koje započinju slovom a, nakon čega ide
proizvoljan broj slova b, pa proizvoljan broj slova a i na kraju jedno
slovo b. Taj jezik sadrži sljedeće riječi:
ab
abbbb
aaaaab
abbbbaab
Primjer 7.4 Napišimo regularni izraz koji će opisivati jezik koji se sastoji
od riječi nad abecedom Σ = {a, b, c}. Riječi su sastavljene tako da počinju
s proizvoljnim brojem b-ova iza kojih slijedi proizvoljan broj c-ova. Ove su
riječi povezane medusobno slovom a. Npr., sljedeće su riječi u tom jeziku:
bbbccacccababca
b ∗ c ∗ (ab ∗ c∗) ∗ .
Interesantan je jezik koji ovaj regularni izraz opisuje: to je jezik koji
se sastoji od svih mogućih riječi sastavljenih od slova a, b i c. Zadatak za
čitatelja je da to dokaže.
w+ ≡ ww ∗ .
Drugim riječima, w+ predstavlja jedno ili više ponavljanja riječi w.
Nadalje, možemo definirati potenciju riječi kao:
n×
z }| {
wn ≡ ww . . . w .
Sada možemo napisati još neke primjere regularnih izraza:
Primjer 7.5
1. a + b ∗ c+ ≡ aa ∗ b ∗ cc∗
298 7.1. JEZICI
2. (a + b) ∗ c ≡ (aa ∗ b) ∗ c
Definicija 7.7 Kontekstno slobodna gramatika ili samo gramatika jest če-
tvorka G = hV, Σ, R, Si pri čemu vrijedi da je:
• V abeceda,
• Σ ⊆ V skup terminala,
• S početni simbol.
Primjer 7.6 Napravimo gramatiku koja će definirati jezik nad abecedom
{a, b} i sastoji se od riječi koje imaju prvo i posljednje slovo a.
V = {a, b, S, A}, Σ = {a, b}, S je startni simbol, a R se definira na
sljedeći način:
S → aA
A → aA
A → bA
A→a
Primjer 7.7 Napravimo gramatiku koja će definirati jezik nad abecedom
Σ = {a, b} te koji se sastoji od riječi koje u sebi imaju paran broj a-ova.
S→A
A → aB
A → bA
A→b
B → aA
B → bB
B→b
B→a
POGLAVLJE 7. MATEMATIČKA TEORIJA RAČUNALSTVA 299
a b b a a a b
Slika 7.2
• S ∈ K početno stanje,
• δ : K × Σ → K funkcija prijelaza.
odnosno
1. Σ = {a, b, c}
K = {q0 , q1 , q2 , q3 , q4 }
S = q0
F = {q3 }
Funkciju δ definiramo sljedećom tablicom:
a b c
q0 q1 q4 q4
q1 q1 q2 q3
q2 q4 q2 q3
q3 q4 q4 q3
q4 q4 q4 q4
Tablica 7.1
q3 c
c
a q1
b
q2 b
a
a,b
a
q0
b,c
q4
Slika 7.3
2. Σ = {a, b, c}
K = {q0 , q1 , q2 , q3 , q4 }
S = q0
F = {q3 }
a b c
q0 q1 q4 q4
q1 q1 q2 q4
q2 q1 q4 q3
q3 q4 q4 q4
q4 q4 q4 q4
Tablica 7.2
a,b,c
c
q3 b
q4 a,b,c
q2
b c
a
b,c
q1 a
a q0
Slika 7.4
3. Σ = {a, b}
K = {q0 , q1 , q2 , q3 , q4 , q5 }
S = q0
F = {q4 }
Funkcija δ dana je sljedećom tablicom
a b
q0 q1 q5
q1 q2 q5
q2 q3 q5
q3 q5 q4
q4 q1 q5
Table 7.3
a a a b
q0 q1 q2 q3 q4
b b b a b
q5
a,b
Slika 7.5
• S ∈ K početno stanje,
• δ : K × Σ × K relacija prijelaza.
Razlika izmedu DKA i NKA je u tome što je kod DKA δ funkcija, dok
je kod N KA δ relacija. Drugim riječima, kod determinističkog je konačnog
automata, stanjem u kojem se automat nalazi i pročitanim znakom s trake,
jednoznačno odredeno stanje u koje će automat prijeći, dok kod NKA nije
tako. Kod NKA za isto stanje i ulazni znak automat ponekad može prijeći
u različita stanja.
Ova relaksacija dovodi, medutim do raznih nedoumica. Kako tretirati
mogućnost izbora? Hoće li automat stanje izabrati nasumce, ne vodeći
računa o rješenju ili će on upravo izabrati onaj izbor koji će dovesti do
rješenja. To su dvije vrste determinizma, od kojih se prvi naziva davolski
ili ”don’t care” nedeterminizam, a drugi andeoski ili ”don’t know” nede-
terminizam. Prvi je nedeterminizam vrlo lako izvesti, no on ne predstavlja
pravi nedeterminizam, koji bi dao veće mogućnosti programu, već pred-
stavlja randomizaciju algoritma. Druga je vrsta nedeterminizma ona koja
304 7.2. KONAČNI AUTOMATI
a q1 b
q0
b b q2 a
a
q1
q2 b
a,b
a,b
a,b q1
Slika 7.6
DKA ⇔ N KA ⇔ εDKA ⇔ RL
Medutim, ovaj niz ekvivalencija nećemo dokazivati jer on prelazi okvire
ove knjige. Dokazi ovih ekvivalencija mogu se naći u [3].
No, postoji još jedno zanimljivo pitanje. Postoje li jezici koji nisu regu-
larni? Drugim riječima, postoji li neki jezik koji nije u u šrafiranom dijelu,
nego je u bijelom dijelu na sljedećoj slici?
RL
Slika 7.7
306 7.2. KONAČNI AUTOMATI
a b b a a a b
b
b
a
Slika 7.8
• Σ ulazna abeceda,
• Γ abeceda stoga,
• S ∈ Σ početno stanje,
• Σ ulazna abeceda,
• Γ abeceda stoga,
• S ∈ Σ početno stanje,
a b ε
(q0 , ⊥) (q0 , 0) (q2 , ⊥)
(q0 , 0) (q0 , 00) (q1 , ε)
(q1 , ⊥) (q2 , ⊥) (q2 , ⊥)
(q1 , 0) (q2 , 0) (q1 , ε) (q2 , 0)
Tablica 7.4
a b ε
(q0 , ⊥) (q0 , 0) (q2 , ⊥)
(q0 , 0) (q0 , 00) (q1 , ε)
(q1 , ⊥) (q2 , ⊥) (q2 , ⊥)
(q1 , 0) (q2 , 0) (q1 , ε)
Tablica 7.5
Ovaj teorem nećemo dokazivati, kao što nismo dokazivali ni teorem 7.1.
Dokazi oba ova teorema mogu se naći u [3] i u [5].
No, dokazat ćemo teorem sličan onome koji smo dokazivali za regularne
jezike u prethodnom poglavlju za kontekstno slobodne jezike:
a S a
b S b
c S c
e
Slika 7.9
No, kako abeceda ima samo |V \Σ| neterminalnih slova, to na tom putu
može biti najviše |V \Σ| različitih unutarnjih čvorova. Zbog toga na tom
putu moraju postojati dva čvora koja imaju istu oznaku. Pri tome treba
napomenuti da nijedan od ta dva čvora ne može biti list, jer listovi i unutarnji
čvorovi ne mogu imati iste oznake. Neka ti čvorovi imaju oznaku A.
To znači da u izvodu riječi w postoji dio izvoda opisan sljedećom she-
mom:
S →∗ uAz →∗ uxz,
dakle izvod riječi uxz. Dakle, uxz ∈ L.
Isto tako, taj se dio izvoda može ponoviti više puta, čime će se dobiti
n
z }| {
S → uAz →∗ uvAyz →∗ . . . →∗ uAz →∗ uv n Ay n z × →∗ uv n xy n z
∗
pa je i uv n xy n z ∈ L za svaki n ∈ N.
Primjer 7.15 Neka je zadan jezik L = {an bn cn }. Pokažite da taj jezik nije
kontekstno slobodan.
Naravno, dokaz se provodi pomoću leme o pumpanju.
Neka je n > k3 . Tada se na riječ w : an bn cn može primijeniti lema
o pumpanju. U tom slučaju mora postojati zapis w : uvxyz takav da je
uv i xy i z ∈ L za svaki i ∈ N0 .
Ako v ili y sadrži različita slova, onda će se u riječi uv i xy i z za i > 1
imati pojavu slova b ispred slova a ili pak pojavu slova c ispred slova b, a to
ne može biti.
POGLAVLJE 7. MATEMATIČKA TEORIJA RAČUNALSTVA 313
CFL
RL
Slika 7.10
RL ⊂ DCF L ⊂ CF L.
Definicija 7.14 Turingov stroj je petorka M = hK, Σ, S, F, δi, pri čemu je:
• S ∈ K početno stanje,
do {L, N, R}. Bez obzira na sve te razlike, svi autori, definirajući Turingov
stroj, definiraju automat iste ekspresivnosti i istih osnovnih svojstava.
Primjer 7.16 Neka je Σ = {a, b}, i neka je zadan jezik L = {an bn } nad
Σ. Napravimo Turingov stroj koji prepoznaje ovaj jezik. On otkida jedan
a sprijeda, pa jedan b straga. Ako ostane višak a-ova ili višak b-ova, onda
riječ nije dobra, a ako ostane prazna riječ, onda je ulazna riječ bila dobra.
. a b t
q0 (., R, q0 ) (., R, q1 ) qF (t, L, qT )
q1 (., L, qF ) (a, R, q1 ) (b, R, q1 ) (t, L, q2 )
q2 (., L, qF ) (a, L, qF ) (t, L, q3 ) (t, L, qF )
q3 (., R, q0 ) (a, L, q3 ) (b, L, q3 ) (t, L, qF )
Tablica 7.6
. a b c t
q0 (., R, q0 ) (c, R, q1 ) (t, L, qT )
q1 (a, R, q1 ) (b, R, q1 ) (c, R, q1 ) (t, L, q2 )
q2 (t, L, q3 )
q3 (., R, q4 ) (a, L, q3 ) (b, L, q3 ) (c, L, q3 )
q4 (c, R, q1 ) (b, R, q5 ) (c, R, q4 )
q5 (b, R, q5 ) (c, R, q5 ) (t, L, q6 )
q6 (., R, qT ) (t, L, q7 )
q7 (., R, q8 ) (b, L, q7 ) (c, L, q7 )
q8 (., R, q5 ) (t, R, qF )
Tablica 7.7
316 7.4. TURINGOVI STROJEVI
Primjer 7.18 Neka su dva broja zapisana u unarnom zapisu, tj. broj n je
prikazan pomoću n nula. Ta dva broja na traci razdvojena su znakom +.
Potrebno je zbrojiti ta dva broja.
Rješenje je jednostavno: treba obrisati jednu nulu s kraja drugog broja,
a znak + treba zamijeniti nulom. Turingov stroj koji radi ovu operaciju
opisan je sljedećom tablicom.
. 0 + t
q0 (., R, q0 ) (0, R, q0 ) (0, R, q1 )
q1 (0, R, q1 ) (t, L, q2 )
q2 (t, R, qT )
Tablica 7.8
Primjer 7.19 Napravimo sada Turingov stroj koji izokreće bilo koju riječ
nad abecedom Σ = {a, b, c} naopako.
Automat radi na sljedeći način. Na početku riječi će ostati praznina
ispred koje se prepisuje prvo slovo riječi. Nakon toga se prepisuje drugo
slovo riječi ispred prvoga, itd., sve do kraja riječi. Kao pomoćni simbol,
kojim ćemo ispunjavati prostor izmedu kreirane riječi i ostatka ulazne riječi
koristit ćemo simbol ..
Stroj je dan sljedećom tablicom.
. a b c t
q0 (., R, q0 ) (., L, qa ) (., L, qb ) (., L, qc ) (t, R, qh )
qa (a, L, q. ) (a, L, qa ) (b, L, qa ) (c, L, qa )
qb (b, L, q. ) (a, L, qb ) (b, L, qb ) (c, L, qb )
qc (c, l, q. ) (a, L, qc ) (b, L, qc ) (c, L, qc )
q. (., R, q1 ) (., R, q1 ) (., R, q1 ) (., R, q1 )
q1 (., R, q0 ) (a, R, q1 ) (b, R, q1 ) (c, R, q1 )
Tablica 7.9
Primjer 7.20 Napravimo Turingov stroj koji će ulazni niz znakova na traci
kopirati, tj. kao izlaz dati dva jednaka niza znakova odvojena razmakom.
Neka je abeceda ovog stroja binarna abeceda, tj. Σ = {0, 1, ., t}.
POGLAVLJE 7. MATEMATIČKA TEORIJA RAČUNALSTVA 317
Stroj će raditi tako da će prvi znak ulaznog niza znakova brisati, i
prepisati ga dva puta. Pri tome će se posljednja riječ na traci trebati pomi-
cati jedno polje desno prije svakog upisivanja slova u drugu riječ, kako bi se
dobilo mjesto za upis novog slova u drugu riječ.
. 0 1 t
q0 (., R, q0 ) (., R, q01 ) (., R, q11 ) (., R, qT )
q01 (0, R, q01 ) (1, R, q01 ) (t, R, q02 )
q02 (0, R, q003 ) (0, R, q103 ) (0, R, q0 4)
q003 (0, R, q003 ) (0, R, q103 ) (0, R, q04 )
q103 (1, R, q003 ) (1, R, q103 ) (1, R, q04 )
q04 (t, R, q005 ) (t, R, q105 ) (t, R, qt04 )
qt05 (0, R, q005 ) (0, R, q105 ) (0, L, q06 )
q005 (0, R, q005 ) (0, R, q105 ) (0, L, q06 )
q105 (1, R, q005 ) (1, R, q105 ) (1, L, q06 )
q06 (0, L, q06 ) (1, L, q06 ) (t, R, q07 )
q07 (0, L, q008 ) (1, L, q108 )
q008 (0, R, q008 ) (0, R, q108 ) (0, L, qrew )
q108 (1, R, q008 ) (1, R, q108 ) (1, L, qrew )
q11 (0, R, q11 ) (1, R, q11 ) (t, R, q12 )
q12 (1, R, q013 ) (1, R, q113 ) (1, R, q1 4)
q013 (0, R, q013 ) (0, R, q113 ) (0, R, q14 )
q113 (1, R, q013 ) (1, R, q113 ) (1, R, q14 )
q14 (t, R, q015 ) (t, R, q115 ) (t, R, qt14 )
qt15 (1, R, q015 ) (1, R, q115 ) (1, L, q16 )
q015 (0, R, q015 ) (0, R, q115 ) (0, L, q16 )
q115 (1, R, q015 ) (1, R, q115 ) (1, L, q16 )
q16 (0, L, q16 ) (1, L, q16 ) (t, R, q17 )
q17 (0, L, q018 ) (1, L, q118 )
q018 (0, R, q018 ) (0, R, q118 ) (0, L, qrew )
q118 (1, R, q018 ) (1, R, q118 ) (1, L, qrew )
qrew (., R, q0 ) (0, L, qrew ) (1, L, qrew ) (t, L, qrew )
Tablica 7.10
Definicija 7.15 Neka je dan jezik L za koji postoji Turingov stroj koji za
svaku riječ w ∈ L staje u stanju qT , a za svaku riječ x 6∈ L staje u stanju
qF . Tada kažemo da je L rekurzivan jezik .
Za rekurzivne jezike kažemo da su odlučivi .
Definicija 7.16 Neka je L jezik za koji postoji Turingov stroj koji za svaku
riječ w ∈ L staje u stanju qT . Tada kažemo da je jezik L rekurzivno prebrojiv .
RCEL
RCL
CFL
RL
Slika 7.11
POGLAVLJE 7. MATEMATIČKA TEORIJA RAČUNALSTVA 319
δ(Qi , Xj ) = (Qk , Xl , Dm )
Definirajmo sljedeći kod:
RCEL coRCEL
RCL
Slika 7.12
Dokaz.
Neka su jezici L1 i L2 rekurzivni. Neka su M1 i M2 Turingovi strojevi
koji odlučuju o jezicima L1 i L2 . Tada konstruiramo Turingov stroj M kako
slijedi.
POGLAVLJE 7. MATEMATIČKA TEORIJA RAČUNALSTVA 321
7.5 Zadaci
1. Napravite determinističke konačne automate koji prihvaćaju sljedeće
jezike nad abecedom {0, 1}:
(a) Skup svih nizova znakova koji započinju s 00 ili završavaju s 11.
(b) Skup svih nizova znakova koji u sebi sadrže tri uzastopne jedinice.
(c) Skup svih nizova znakova koji imaju kao 10 znak broj 1.
0,1 0
q0
q1
0,1
q2
q3
0
Slika 7.13
1
0,1
q0
q1
0
1 0,1
1
q2
q3
0
Slika 7.14
(a) rs = st
(b) (rs)t = r(st)
326 7.5. ZADACI
(a) {02n |n ≥ 1}
(b) {0m 1n 0m+n |m ≥ 1, n ≥ 1}
(c) {0n |n je prost broj}
S → aAA
A → aS
A → bS
A→a
7.6 Projekti
1. Napravite računalni program koji će kao ulaz uzimati datoteku u koju
je zapisana definicija Turingovog stroja i ulazni niz znakova. Program
treba simulirati rad Turingovog stroja i vratiti izlazni niz znakova i
stanje u kojem je stao.
329
Predmetno kazalo
330
BIBLIOGRAFIJA 331
izvod, 25 luk, 49
izvor, 232
maksimalna vrijednost, 74
jezik, 295 masovni problem, 126
deterministički kontekstno matematička indukcija, 9
slobodan, 313 jaka, 10
odlučiv, 318 matematička struktura, 2
rekurivno prebrojiv, 318 matematičko očekivanje, 109
rekurzivan, 318 matrica, 36
kapacitet reza, 234 matrica incidencije, 204
Kartezijev kvadrat, 49 matrica izvodnica, 272
Kartezijev produkt, 48, 49 matrica permutacija, 207
klasa ekvivalencije, 52 matrica susjedstva, 204
klika, 239 max-hrpa, 166
kod metrika, 268
ciklički, 285 min-hrpa, 166
linearni, 270 minimalna udaljenost koda, 269
sistematičan, 268 minimalna vrijednost, 74
kodne riječi, 268 model, 32
kombinacija modus ponens, 25
bez ponavljanja, 95 modus tollens, 26, 29
ponavljanjem, 95 monoid, 257
konačni automat most, 203
deterministički, 299 mreža
nedeterministički, 303 usmjerena, 228
nedeterministički s ε prijelaz-
ima, 305 nadgraf, 222
konjunktivna normalna forma, 27 najkraći put, 210
kontrapozicija, 6 najmanja gornja meda, 66
kontrolna matrica, 273 najmanji zajednički višekratnik,
kontrolni bit, 268 68
korijen, 216 najveća donja meda, 66
kritični put, 229, 231 najveća zajednička mjera, 68
kromatski broj, 237, 240 najveći zajednički djelitelj, 68
kvaternioni, 289 nulgraf, 193
nultočka, 73
lema o rukovanju, 197
list, 215 odlučivanje praznim stogom, 308,
literal, 27 309
negativni, 27 odlučivanje završnim stanjem,
pozitivni, 27 308, 309
logička posljedica, 20 ograničenje varijabli, 31
lokalni maksimum, 74 optimalni ciklus, 209
lokalni minimum, 74 osnovni period, 74
BIBLIOGRAFIJA 333