You are on page 1of 205

El

ek
tro
ns
ko
izd
an
je
(20
19)
El
ek
tro
ns
ko
izd
an
je
(20
19)
Predrag Janičić Mladen Nikolić

1 9)
(20
VEŠTAČKA INTELIGENCIJA je
an
izd
ko
ns
tro
ek
El

Beograd
2019.
Autori:
dr Predrag Janičić, redovni profesor na Matematickom fakultetu u Beogradu
dr Mladen Nikolić, docent na Matematickom fakultetu u Beogradu
VEŠTAČKA INTELIGENCIJA

...
...

Obrada teksta, crteži i korice: autori

1 9)
( 20
je
an
izd
ko
ns
tro
ek
El

©2018. Predrag Janičić i Mladen Nikolić


Ovo delo zašticeno je licencom Creative Commons CC BY-NC-ND 4.0 (Attribution-NonCommercial-NoDerivatives 4.0
International License). Detalji licence mogu se videti na veb-adresi http://creativecommons.org/licenses/by-nc-nd/
4.0/. Dozvoljeno je umnožavanje, distribucija i javno saopštavanje dela, pod uslovom da se navedu imena autora.
Upotreba dela u komercijalne svrhe nije dozvoljena. Prerada, preoblikovanje i upotreba dela u sklopu nekog drugog nije
dozvoljena.
Sadržaj

9)
Sadržaj 5

1
I Pretraga 9

20
1 Rešavanje problema korišćenjem pretrage 11
1.1 Elementi problema pretrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

(
1.2 Rešenje problema i kvalitet algoritama pretrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
je
1.3 Neinformisana i informisana pretraga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
an
2 Neinformisana pretraga 17
2.1 Obilazak grafa u dubinu i širinu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Dejkstrin algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
izd

3 Informisana pretraga 25
3.1 Pohlepna pretraga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Pretraga Prvo najbolji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
ko

3.3 Algoritam A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
ns

4 Igranje strateških igara 45


4.1 Šenonove opšte strategije za igranje igara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2 Legalni potezi i stablo igre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
tro

4.3 Otvaranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.4 Središnjica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.5 Završnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
ek

5 Genetski algoritmi 59
El

5.1 Opšti genetski algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60


5.2 Komponente genetskog algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Svojstva genetskih algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.4 Primeri primene genetskih algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

II Logika i deduktivno zaključivanje 71

6 Rešavanje problema korišćenjem logike 73


6.1 Modelovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.2 Rešavanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7 Iskazna logika 75
7.1 Sintaksa iskazne logike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.2 Semantika iskazne logike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7.3 Istinitosne tablice i odlučivost problema zadovoljivosti . . . . . . . . . . . . . . . . . . . . . . . . 81
7.4 Logičke posledice i logički ekvivalentne formule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.5 Normalne forme i potpuni skupovi veznika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

5
7.6 Problem SAT i algoritam DPLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.7 Rešavanje problema svodenjem na SAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

8 Logika prvog reda 101


8.1 Sintaksa logike prvog reda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
8.2 Zamena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.3 Semantika logike prvog reda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
8.4 Logičke posledice, logički ekvivalentne formule, zamena . . . . . . . . . . . . . . . . . . . . . . . . 109
8.5 Normalne forme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.6 Unifikacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.7 Metod rezolucije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.8 Prirodna dedukcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.9 Rešavanje problema svodenjem na problem valjanosti . . . . . . . . . . . . . . . . . . . . . . . . . 128

9 PROLOG 131
9.1 Metod rezolucije i PROLOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

9)
9.2 Sintaksa i semantika u PROLOG-U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
9.3 Stablo izvodenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

1
9.4 Operator sečenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

20
9.5 Negacija kao neuspeh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
9.6 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
9.7 Ugradeni predikati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

(
9.8 Primeri rešavanja problema primenom PROLOG-a . . . . . . . . . . . . . . . . . . . . . . . . . . 148

III Mašinsko učenje i induktivno zaključivanje


je 159
an
10 Uvod u mašinsko učenje 161
izd

10.1 Primeri primena mašinskog učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161


10.2 Pojam generalizacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.3 Primer problema učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.4 Nadgledano i nenadgledano učenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
ko

10.5 Modeli zakonitosti u podacima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164


10.6 Podaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.7 Izbori u dizajnu sistema koji uči . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
ns

11 Nadgledano mašinsko učenje 167


tro

11.1 Dizajn algoritama nadgledanog učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167


11.2 Regresija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
11.3 Klasifikacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
ek

11.4 Tehnike evaluacije i konfigurisanja algoritama učenja . . . . . . . . . . . . . . . . . . . . . . . . . 192

12 Nenadgledano učenje 199


El

12.1 Klasterovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

6
Predgovor

Ova knjiga nastala je na osnovu beleški koji prate predavanja za predmet Veštacka inteligencija koje smo

9)
držali akademskih godina od 2007/08 do 2017/18 (prvi autor) i vežbe od 2007/08 do 2011/12 (drugi autor).
Knjiga treba da olakša pripremu pratećeg ispita, ali nadamo se da može da bude zanimljiva svima koje interesuje
ova oblast računarstva.

1
Zahvaljujemo koleginici Danijeli Simić koja je kreirala zadatke za pismene ispite iz predmeta Veštacka in-

20
teligencija od 2011/12, a od kojih su mnogi navedeni na kraju lekcija kao zadaci za vežbu. Zahvaljujemo
kolegama koje su nam dale dragocene komentare i savete, pre svega Filipu Mariću, Miroslavu Mariću i Dušku

(
Vitasu. Zahvaljujemo na veoma pažljivom čitanju, ispravkama i komentarima i studentima koji su slušali pred-
met „Veštačka inteligencija“, pre svega Nemanji Mićoviću, Mladenu Canoviću, Jani Protić, Vojislavu Stankoviću,
je
Nikoli Premčevskom, Nikoli Ajzenhameru, Uni Stanković, Jeleni Simović, Nikoli Dimitrijeviću, Vladimiru Simo-
novskom, Petru Vukmiroviću, Danielu Doži, Ivanu Baleviću, Milanu Kovačeviću, Nebojši Ložnjakoviću, Milošu
an
Samardžiji, Vojislavu Grujiću, Nemanji Antiću, Denisu Aličiću, Dalmi Beara, Mateji Marjanoviću i Dordu
Nemetu. Za nedostatke i propuste u knjizi, odgovorni su, medutim, samo autori.
izd

Ova knjiga dostupna je (besplatno) u elektronskom obliku preko internet strana autora.
ko

Predrag Janičić i Mladen Nikolić


ns

Beograd, februar 2019.


tro
ek
El

7
El
ek
tro
ns
ko
izd
an
je
(20
19)
El
ek
tro
ns
ko Deo I

izd Pretraga

an
je
(20
19)
El
ek
tro
ns
ko
izd
an
je
(20
19)
Glava 1

Rešavanje problema korišćenjem pretrage

Veštačka inteligencija bavi se, prevashodno, problemima u kojima se javlja kombinatorna eksplozija, pro-

9)
blemima čije rešavanje zahteva razmatranje ogromnog broja mogućnosti. Rešavanje takvih problema obično se
svodi na neku vrstu pretrage, sistematičnog postupka obrade velikog broja mogućnosti. Kako je sve mogućnosti

1
često nemoguće razmotriti u razumnom vremenu, potrebno je pretragu usmeravati kako bi se razmotrile mogućnosti

20
koje su izglednije da daju rešenje problema. Neke od realnih primena algoritama pretrage su pronalaženje naj-
kraćih puteva, igranje logičkih igara, navigacija robota, automatsko nalaženje redosleda sklapanja delova u

(
industriji, dizajn proteina sa odredenim traženim svojstvima, rešavanje logističkih problema i slično.
Problemi pretrage često zahtevaju pronalaženje niza koraka ili akcija kojima se ostvaruje cilj kada to ne može
je
biti ostvareno pojedinačnim koracima ili akcijama. Pretraga može biti shvaćena i šire, pa će u daljem tekstu
biti opisani i neki problemi i algoritmi optimizacije.
an
Problemi i algoritmi pretrage mogu se opisati i u terminima agenata. U tom slučaju, smatra se da pretragu
sprovodi agent, da se agent tokom pretrage može naći u različitim stanjima, da agent pokušava da dode do
završnog stanja, itd. Takva formulacija ne menja ništa suštinski u problemu ili algoritmima, ali može biti
izd

pogodna zbog uniformnosti kroz različite podoblasti veštačke inteligencije.


Primer 1.1. Slagalica 15 (ili Lojdova slagalica) sastoji se od 15 kvadrata rasporedenih na tabli veličine 4x4
polja. Kvadrati su numerisani brojevima od 1 do 15. Slagalicu je potrebno urediti tako da su polja poredana
ko

redom od prvog reda i da je poslednje polje u četvrtom redu prazno. Taj raspored polja može se kompaktno
zapisati kao [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, _] i prikazan je na slici 1.1.
ns
tro

1 2 3 4
5 6 7 8
ek

9 10 11 12
El

13 14 15

Slika 1.1: Ciljni raspored za slagalicu „15“

Kada je dat proizvoljan raspored polja na tabli, u svakom koraku može se pomeriti jedno od dva ili jedno od
tri ili jedno od četiri polja. Dakle, za svaki raspored broj mogućih akcija je izmedu dva i četiri.
Slagalicu je moguće složiti tako što se razmatraju svi mogući koraci, a zatim svi mogući koraci u dobijenim
stanjima i tako dalje, sve dok se ne naide na traženi, ciljni raspored (razmatranje svih mogućih koraka za početni
raspored [_, 2, 3, 4, 6, 5, 10, 12, 9, 1, 8, 15, 13, 14, 7, 11] ilustrovano je na slici 1.2). Očigledno, ovaj pristup sigurno
dovodi do rešenja za bilo koju početnu poziciju. Isto tako, očigledno je da je ovaj pristup potpuno nepraktičan
i zahteva razmatranje ogromnog broja mogućnosti. Zaista, za proizvoljnu početnu poziciju, slagalicu je moguće
složiti u najviše 80 koraka, pri čemu postoje početne pozicije za koje ne postoji rešenje u manje od 80 koraka. To
znači da je za garantovano pronalaženje rešenja potrebno ispitati više od 280 mogućnosti, što je naravno praktično
neizvodivo. Zbog toga, praktično sprovodivo rešenje zahteva neku dodatnu ideju i usmeravanje pretrage, kako
ne bi bile razmatrane sve mogućnosti. Jedna moguća ideja bi bila da se razmatraju samo koraci koji vode do
pozicija koje su bliže rešenju, pri čemu se za odredivanje „rastojanja pozicije od ciljne pozicije“ može uzeti zbir

11
12

2 3 4
6 5 1012
9 1 8 15
1314 7 11

6 2 3 4 2 3 4
5 1012 6 5 1012
9 1 8 15 9 1 8 15
1314 7 11 1314 7 11

2 3 4 6 2 3 4 6 2 3 4 2 3 4 2 5 3 4 2 3 4
6 5 1012 5 1012 9 5 1012 6 5 1012 6 1012 6 5 1012
9 1 8 15 9 1 8 15 1 8 15 9 1 8 15 9 1 8 15 9 1 8 15
1314 7 11 1314 7 11 1314 7 11 1314 7 11 1314 7 11 1314 7 11

9)
...

1
20
1 2 3 4
5 6 7 8

(
9 101112
131415

je
Slika 1.2: Stablo pretrage za slagalicu „15“
an
Budimpešta
izd

340
300 380
840
Zagreb 320
ko

640
390
400 370 Beograd
590
290 Bukurešt
ns

290
450
190
450 360
Sarajevo 430
tro

230 280 300


320
170
350 240 Sofija
Podgorica 170
ek

190
Skoplje

Slika 1.3: Graf koji opisuje problem puteva izmedu gradova


El

rastojanja svakog polja od njegove ciljne pozicije. Medutim, ova jednostavna ideja ne dovodi do rešenja. Naime,
u nekim pozicijama nema koraka koji vodi ka boljoj poziciji (pozicija u korenu stabla na slici 1.2, je jedna takva
pozicija).

Primer 1.2. U skupu gradova od kojih su neki medusobno povezani putevima, zadatak je od jednog grada stići
do nekog drugog zadatog grada. Ovaj problem može se razmatrati kao problem pretrage: pretraga može da kreće
od početnog grada, da se zatim razmatraju svi gradovi do kojih se može doći neposredno, i tako dalje, sve dok
se ne dode do ciljnog grada. Primer ovakvog problema ilustrovan je na slici 1.3. Konkretan zadatak može biti,
na primer, nalaženje puta od Zagreba do Bukurešta.
Bitno su različite varijante problema u kojoj jesu i u kojoj nisu unapred poznati svi gradovi i putevi izmedu
njih. U prvom slučaju, bitno je i da li su poznate dužine puteva izmedu gradova ili vazdušna rastojanja.

Primer 1.3. Jednu od najstarijih grupa matematičkih problema čine geometrijski konstruktivni problemi. Zada-
tak je lenjirom i šestarom, na osnovu datih ograničenja ili datih početnih tačaka, konstrusati traženu geometrijsku
figuru. Lenjirom i šestarom može se konstruisati prava koja je odredena dvema tačkama, krug čije je središte
13 1. Rešavanje problema korišćenjem pretrage

jedna tačka i koji sadrži drugu tačku, moguće je konstruisati presek dve prave i moguće je konstruisati presek
prave i kruga — ovo su takozvane elementarne konstrukcije. I ovaj problem može se razmatrati kao problem
pretrage: pretraga može da kreće od početnih figura, zatim se razmatraju svi mogući koraci (sve moguće primene
elementarnih konstrukcija nad postojećim figurama), i tako dalje, sve dok se ne dobije tražena figura.
Primer 1.4. Kao problem pretrage može da se opiše kretanje robota od polazne do ciljne tačke u nepoznatnom
okruženju. Robot u većini trenutaka može da promeni smer i brzinu kretanja i u zavisnosti od tih akcija može
do cilja da stigne pre ili kasnije.
Problemi pretrage obično mogu da se pogodno opišu u terminima grafova (a i da se vizualizuju na odgova-
rajući način). Graf može da opisuje prostor stanja i mogućih akcija i tada je svakom čvoru grafa pridruženo
jedno stanje, a svakoj grani jedna akcija. Graf koji opisuje prostor stanja može da bude usmeren ili neusmeren.
Neusmeren je ako za svako stanje 𝐴 iz kojeg se može nekom akcijom doći do stanja 𝐵, postoji odgovarajuća
akcija iste cene kojom se iz stanja 𝐵 može doći do stanja 𝐴. U primeru slagalice, graf prostora stanja je neusme-
ren i svakom čvoru grafa pridružen je jedan raspored. I u primeru gradova, graf prostora stanja je neusmeren,
a svakom čvoru pridružen je jedan grad (slika 1.3). Za igru šah, medutim, graf bi bio usmeren (jer postoje

9)
pozicije 𝐴 i 𝐵 takve da se iz 𝐴 može jednim potezom doći do 𝐵, ali ne i obratno).
Pretraživanjem, obilaskom grafa prostora stanja nastaje stablo pretraživanja ili stablo pretrage (slika 1.2). U
stablu pretrage svakom čvoru pridruženo je jedno stanje, ali jedno stanje može da bude posećeno više puta tokom

1
obilaska, te može da se nalazi u više čvorova stabla pretrage. Zato stablo pretrage može da bude beskonačno

20
i onda kada je prostor stanja konačan. Kada se kaže „čvor“, obično je iz konteksta jasno da li se misli na čvor
prostora stanja ili na čvor u stablu pretrage, a često se isto označavaju čvor i stanje koje mu je pridruženo.

(
U mnogim problemima veštačke inteligencije potrebno je obići neki graf ili odrediti najkraći put izmedu dva
čvora grafa i ovi problemi se, dakle, prirodno razmatraju kao problemi pretrage. Opšti problem nalaženja puta
je
(eng. path finding) može se opisati na sledeći način: dat je graf svojim čvorovima i granama izmedu nekih od
njih i zadatak je naći put izmedu dva zadata čvora (polazni čvor i ciljni čvor). Granama grafa mogu da budu
an
pridružene nenegativne cene i zadatak može da bude nalaženje puta izmedu zadata dva čvora takvog da je zbir
cena svih grana koje pripadaju putu minimalan. Postoji mnogo algoritama za rešavanje ovog problema i oni
izd

imaju mnoge primene, uključujući primene u planiranju obilazaka i putovanja, dizajniranju čipova, rutiranju u
računarskim mrežama, navigaciji robota, industriji igara, itd.

1.1 Elementi problema pretrage


ko

Da bi se neki problem razmatrao kao problem pretrage i rešavao primenom algoritama pretrage, on treba
da ima odredenu strukturu i odredene elemente:
ns

Skup mogućih stanja: U toku procesa pretrage razmatraju se različita stanja. Za odlučivanje u datom tre-
tro

nutku potrebno je poznavanje skupa svih raspoloživih stanja.


Polazno stanje: Rešavanje problema kreće od jednog odredenog stanja, koje nazivamo polaznim stanjem.
ek

Test cilja: Problem je rešen ako se dode do ciljnog stanja, završnog stanja. Potrebno je da postoji raspoloživ
efektivan test koji proverava da li se došlo do ciljnog stanja tj. do završetka procesa pretrage.
El

Skup mogućih akcija: U svakom koraku pretrage može se preduzeti neki korak, neka akcija. Niz akcija
preduzetih u odgovarajućim trenucima treba da dovede do rešenja problema. Skup mogućih akcija može
biti isti u svakom stanju ili može da se razlikuje od stanja do stanja, što zavisi od problema koji se rešava.
Funkcija prelaska: Ova funkcija preslikava par stanje-akcija u novo stanje, dobijeno izborom neke akcije u
nekom stanju. Ukoliko ova funkcija nije poznata, nije poznato u koje će se stanje dospeti posle preduzima-
nja odredene akcije i proces odlučivanja postaje kompleksniji. Funkcija prelaska nije poznata, na primer,
u slučaju delovanja u nepoznatoj ili promenljivoj okolini. Jedan način rešavanja ovakvih problema je
korišćenjem informacija iz iskustva, odnosno aproksimiranjem ove funkcije pomoću procesa koji se zasniva
na analizi pokušaja i grešaka.
Cena akcije: Ovo je funkcija koja preslikava par stanje-akcija u numeričku vrednost — cenu preduzimanja
date akcije u datom stanju.

Kod nekih problema nabrojani elementi se lako i prirodno uočavaju, dok je kod drugih najpre potrebno
preformulisanje problema.
Stanja koja su neposredno dostupna iz nekog stanja zovemo i susedima tog stanja a ponekad i decom tog
stanja.
1.2. Rešenje problema i kvalitet algoritama pretrage 14

Primer 1.5. Elementi problema iz primera 1.1 mogu biti definisani na sledeći način:

• Skup stanja: skup svih permutacija [𝑠1 𝑠2 . . . 𝑠16 ] za 𝑠𝑖 ∈ {_, 1, 2, . . . , 15}.

• Polazno stanje i završno stanje: polazno stanje može biti bilo koje stanje slagalice (za neke od njih ciljni
raspored nije moguće dobiti).

• Test cilja: provera da li je stanje jednako [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, _].

• Skup akcija: može biti {𝑙𝑒𝑣𝑜, 𝑑𝑒𝑠𝑛𝑜, 𝑔𝑜𝑟𝑒, 𝑑𝑜𝑙𝑒}, gde se date akcije odnose na pomeranje praznog polja levo,
desno, gore i dole. Iako je naizgled prirodnije kao akcije razmatrati pomeranje kvadrata susednih praznom
polju na prazno polje, ovakva formulacija je jednostavnija zbog uniformnosti.

• Funkcija prelaska: preslikava stanja i akcije u stanja koja nastaju pomeranjem praznog polja na neku od
četiri moguće strane.

• Cena akcije: može biti konstantna za svaku akciju (na primer, 1), pošto se sva pomeranja mogu smatrati

9)
jednako skupim. Cena rešenja je u tom slučaju jednaka ukupnom broju pomeranja potrebnih za slaganje
slagalice.

1
Primer 1.6. Elementi problema stizanja iz jednog grada u drugi (primer 1.2) su:

20
• Skup stanja: skup gradova koji su dostupni iz polaznog grada (neposredno ili posredno).

(
• Polazno stanje: polazno stanje je grad iz kojeg se kreće.

• Test cilja: provera da li je tekući grad jednak ciljnom gradu. je


an
• Skup mogućih akcija: kretanje ka susednim gradovima (skup mogućih akcija u ovom problemu se razlikuje
od stanja do stanja, jer su za različite gradove različiti i skupovi direktno dostupnih gradova).
izd

• Funkcija prelaska: odredena je vezama izmedu gradova (i smerom u kojem se kreće iz tekućeg grada).

• Cena akcije: na primer, dužina puta ili cena goriva potrebnog za prevoz izmedu susednih gradova.

Primer 1.7. U slučaju kretanja robota (primer 1.4), bilo bi potrebno odrediti moguće smerove kretanja i diskre-
ko

tizovati intervale u kojima se menja smer kretanja. Takode, bilo bi potrebno odlučiti da li se pokreti različitim
delovima robota mogu preduzimati simultano ili ne. Posle toga bi se navedeni elementi problema mogli lako
ns

definisati.
tro

1.2 Rešenje problema i kvalitet algoritama pretrage


Rešenje problema pretrage je niz koraka (akcija) koji vode od polaznog stanja do ciljnog stanja.
Kao i kod drugih vrsta algoritama, kod algoritama pretrage potrebno je poznavati njihova svojstva kako bi
ek

se lakše izvršio izbor pogodnog algoritma za dati problem. Najvažnija opšta svojstva koje algoritmi pretrage
mogu da imaju su sledeća:
El

Potpunost je svojstvo koje garantuje da će algoritam naći neko rešenje problema ako rešenja uopšte postoje.
Ovo svojstvo je očito poželjno, ali se u nekim slučajevima ne zahteva. Naime, u slučaju vrlo teških
problema često je moguće formulisati heuristike koje ne garantuju pronalaženje rešenja, ali u visokom
procentu slučajeva nalaze dobra rešenja mnogo brže nego potpuni algoritmi.

Optimalnost je svojstvo koje garantuje nalaženje rešenja sa najmanjom cenom (pri čemu se cenom rešenja
može smatrati zbir cena akcija koje se preduzimaju)1 . Optimalno rešenje je rešenje sa najmanjom cenom
i ono ne mora biti jednoznačno definisano. Moguće je da algoritam koji nema svojstvo optimalnosti često
pronalazi rešenja bliska optimalnim, ali u značajno kraćem vremenu.

Vremenska složenost govori, kao i za druge vrste algoritama, o tome koliko će vremena biti potrebno za
sprovodenje procesa pretrage. Obično se razmatra vremenska složenost najgoreg i prosečnog slučaja.

Prostorna složenost govori, kao i za druge vrste algoritama, o tome koliko je memorije potrebno za sprovodenje
procesa pretrage. Obično se razmatra prostorna složenost najgoreg i prosečnog slučaja.
1 Svojstvo optimalnost algoritma može da ima i drugačije značenje: da je (vremenska ili prostorna) složenost algoritma najbolja

medu svim algoritmima koji rešavaju taj problem.


15 1. Rešavanje problema korišćenjem pretrage

1.3 Neinformisana i informisana pretraga


Prilikom rešavanja nekog problema, mogući su različiti stepeni poznavanja detalja samog problema. U
primeru pronalaženja puta od grada do grada (primer 1.2), moguće je na primer:

1. potpuno nepoznavanje rastojanja izmedu gradova;


2. poznavanje rastojanja samo izmedu susednih gradova (koja se, na primer, mogu pročitati sa putokaza);
3. poznavanje vazdušnih rastojanja od svih gradova do ciljnog grada (koja se, na primer, mogu proceniti na
osnovu mape);
4. tačno poznavanje putnog rastojanja izmedu svih parova (ne nužno susednih) gradova.

Prema dostupnosti informacija koje mogu pomoći u pronalaženju ciljnog stanja u toku pretrage, problemi
pretrage se dele na probleme informisane i neinformisane pretrage. U skladu sa tim, moguće je formulisati i
algoritme koji mogu da iskoriste dostupne informacije, pa stoga i algoritme delimo na algoritme informisane i

9)
neinformisane pretrage.
U problemu iz primera 1.2, ako su raspoložive samo informacije o direktno dostupnim stanjima, u pitanju

1
je problem neinformisane pretrage i za rešavanje je moguće koristiti standardne algoritme za pretragu u širinu
ili u dubinu. Ukoliko su poznata vazdušna rastojanja izmedu gradova, ona bi se mogla iskoristiti kao procena

20
korisna za navodenje pretrage i u tom slučaju bi problem pripadao grupi problema informisane pretrage. U
tom slučaju mogu se koristiti specijalizovani algoritmi u zavisnosti od vrste informacija koje su na raspolaganju.

(
Za problem pronalaženja najkraćih puteva u grafu, algoritam A* može da iskoristi, na primer, informaciju o
euklidskom rastojanju izmedu čvorova u grafu. U slučaju problema igranja šaha, egzaktan algoritam pretrage
je
minimax se može kombinovati sa heurističkom procenom pozicije (na primer, korišćenjem informacije o figurama,
mogućnosti mata u malom broju poteza i slično).
an
Pitanja i zadaci
izd

Pitanje 1.1. Navesti barem pet opštih elemenata svakog problema pretrage.
Pitanje 1.2. Kako se, prema dostupnosti informacija koje mogu pomoći u pronalaženju ciljnog stanja u toku
pretrage, dele problemi pretrage?
ko
ns
tro
ek
El
El
ek
tro
ns
ko
izd
an
je
(20
19)
Glava 2

Neinformisana pretraga

9)
U svim problemima pretrage, podrazumeva se da je moguće opaziti tekuće stanje, preduzimati akcije i
prepoznati ciljno stanje. Specifično za „neinformisanu pretragu“ (eng. uninformed) je to što nema dodatnih
informacija koje mogu pomoći u pronalaženju ciljnog stanja. U primeru pronalaženja puta izmedu dva grada,

1
scenario neinformisane pretrage odgovara situaciji u kojoj se u svakom gradu zna koji je to grad, moguće je

20
izabrati jedan od puteva ka drugim gradovima, moguće je pamtiti posećene gradove i prepoznati odredišni,
ali nema nikakvih informacija o rastojanjima izmedu gradova (karte, putna signalizacija, itd). Tipičan primer

(
problema neinformisane pretrage je i problem lavirinta koji je opisan u nastavku.

je
Primer 2.1. Lavirint (u ravni) sastoji se od skupa povezanih hodnika kojima je moguće kretati se (slika 2.1
(levo)). Svaki hodnik ima jedno ili više polja i dva kraja. Jedno polje je ulaz, a jedno izlaz iz lavirinta. Ulaz,
an
izlaz, krajeve hodnika, kao i polja koja su zajednička za dva hodnika zovemo čvorovima lavirinta. Cilj je pronaći
put od ulaza do izlaza preko čvorova lavirinta. Elementi ovog problema su sledeći:
izd

• Skup stanja: skup čvorova lavirinta.

• Polazno stanje: ulaz u lavirint.

• Ciljno stanje: izlaz iz lavirinta.


ko

• Skup mogućih akcija: izbor puta (tj. sledećeg čvora lavirinta) u svakom koraku.
ns

• Funkcija prelaska: odredena je vezama izmedu čvorova lavirinta.


tro

Elementi problema pretrage (stanja i relacija prelaska), pa i problema neinformisane pretrage se najčešće
prirodno izražavaju pomoću grafova, tako da su i algoritmi neinformisane pretrage najčešće formulisani u vidu
algoritama obilaska grafova. U slučaju lavirinta, radi se o grafu čiji čvorovi su čvorovi lavirinta, a grane putevi
ek

izmedu tih čvorova lavirinta (slika 2.1 (desno)).


Jedan način pronalaženja izlaza u lavirintu je držati se desne strane hodnika i pratiti zidove dok se ne naide
El

na izlaz. Kao što će biti navedeno u nastavku, to rešenje odgovara upravo obilasku grafa u dubinu (sve dok se
ne naide na traženi čvor grafa).

2.1 Obilazak grafa u dubinu i širinu


Obilazak grafa u dubinu (eng. depth-first search — DFS) i u širinu (eng. breadth-first search — BFS) su
metode neinformisane pretrage koje ispituju sve čvorove u grafu tražeći rešenje, obično – neki specifičan čvor.
Oni sistematski pretražuju ceo graf bez ikakvog navodenja. Posebna pažnja će biti posvećena bektrekingu, jednoj
modifikaciji obilaska grafa u dubinu.

2.1.1 Pretraga u dubinu


Pretraga u dubinu je pretraga koja napreduje obradujući najpre polazni čvor, zatim njegove potomke, zatim
njihove potomke i tako dalje sve dok se ne naide na traženi čvor i sve dok ti potomci postoje. Ukoliko više nema
potomaka koje treba ispitati, pretraga se vraća unazad do čvora čiji svi potomci nisu ispitani i nastavlja dalje.
U nerekurzivnoj verziji, čvorovi se obično čuvaju na steku, tj. u LIFO listi. Da ne bi došlo do beskonačne petlje,
potrebno je čuvati informaciju o čvorovima koji su već posećeni. Ovaj postupak opisan je algoritmom DFS

17
2.1. Obilazak grafa u dubinu i širinu 18

1 2 22 19 20

4 3 11 12

6 5 10 21

9 14 13 17

7 8 15 16 18

1
2
3
4 5
6 9 10
7 11

9)
8 12
13 19

1
14 22
17 20

20
15
18 21
16

(
Slika 2.1: Primer lavirinta (gore levo), graf prostora stanja koji odgovara lavirintu (gore desno), stablo koje
odgovara obilasku grafa lavirinta u dubinu (dole)
je
an
Algoritam: DFS (pretraga u dubinu)

Ulaz: Graf 𝐺, polazni čvor i ciljni čvor


izd

Izlaz: Put od polaznog do ciljnog čvora u grafu 𝐺 (ako postoji takav put)
1: na stek 𝑝𝑢𝑡 i u skup posećenih čvorova stavi samo polazni čvor;
ko

2: dok god stek 𝑝𝑢𝑡 nije prazan radi


3: uzmi čvor 𝑛 sa vrha steka 𝑝𝑢𝑡;
4: ako je 𝑛 ciljni čvor onda
ns

5: izvesti o uspehu i vrati put konstruisan na osnovu sadržaja steka 𝑝𝑢𝑡;


6: ako 𝑛 nema potomaka koji nisu posećeni onda
tro

7: izbaci 𝑛 sa steka 𝑝𝑢𝑡;


8: inače
9: izaberi prvog takvog potomka 𝑚 i dodaj ga na vrh steka 𝑝𝑢𝑡 i u skup posećenih čvorova;
ek

10: izvesti da traženi put ne postoji.


El

Slika 2.2: DFS — algoritam pretrage u dubinu.

1 5

2 6

3 4

Slika 2.3: Primer obilaska grafa primenom algoritma DFS (oznake čvorova ukazuju na poredak obilaska čvorova)

na slici 2.2 a slika 2.3 ilustruje obilazak jednog grafa primenom algoritma DFS. Prikazani algoritam, ukoliko
pronade ciljni čvor, u tom trenutku na steku 𝑝𝑢𝑡 sadrži redom čvorove koji čine traženi put.
19 2. Neinformisana pretraga

Primer 2.2. Algoritam DFS može se upotrebiti za pronalaženje izlaza iz lavirinta koji je opisan grafom (pri
čemu algoritam vraća ceo put od ulaza do izlaza). Praćenje hodnika lavirinta držeći se desne strane odgovara
pretrazi u dubinu.

Primer 2.3. Ukoliko se, pošavši od Zagreba traži put do Bukurešta primenom algoritma DFS i ukoliko se
prilikom izbora sledećeg grada prednost daje južnijem, bio bi pronaden put Zagreb-Sarajevo-Podgorica-Skoplje-
Sofija-Bukurešt. Ovaj put je po dužini vrlo loš izbor, što je i bilo očekivano pošto algoritam ne uzima u obzir
dužine puteva izmedu gradova. Kako se može naći najkraći put, biće prikazano kasnije.

Budimpešta

1
Zagreb

Beograd

9)
Bukurešt
2 6

1
Sarajevo

20
5
3 Sofija
Podgorica 4

(
Skoplje

Slika 2.4: Traženje puta od Zagreba do Bukurešta primenom algoritma DFS


je
an
izd

Bektreking (eng. backtracking) je modifikovana varijanta pretrage u dubinu. Modifikacija se sastoji u tome
da se bektrekingom ne mora obići ceo graf, već se napredovanje u dubinu prekida i ranije ako se ustanovi da
se ciljni čvor ne nalazi medu potomcima tekućeg čvora i tada nastupa vraćanje na prethodni čvor. Prirodan
primer za bektreking je rešavanje problema osam dama.
ko

Primer 2.4. Problem osam dama formulisan je 1848. godine i od tada je bio predmet mnogih matematičkih
i informatičkih istraživanja. Problem ima jednostavnu formulaciju: rasporediti osam dama na šahovskoj tabli
ns

tako da se nikoje dve dame ne napadaju. Skup polja koja jedna dama napada definisan je u skladu sa opštim
pravilima šaha i ilustrovan je na slici 2.5 (levo). Jedno moguće rešenje ovog problema prikazano je na slici 2.5
tro

(sredina). Problem „𝑛 dama” je uopštenje problema na 𝑛 dama koje treba rasporediti na tabli dimenzija 𝑛 × 𝑛
tako da se nikoje dve ne napadaju.
U svakom rešenju, očigledno, u jednoj koloni ne mogu biti dve dame, pa se problem može preformulisati na
ek

sledeći način: na tabli 𝑛 × 𝑛 rasporediti 𝑛 dama tako da u svakoj koloni bude po jedna i da se nikoje dve ne
napadaju.
Problem dama predstavlja jedan od tipičnih problema koji se rešavaju primenom bektrekinga. Prostor stanja
El

koji se analizira u ovom slučaju čine svi različiti rasporedi 0 do 8 dama. Postoji grana od jednog stanja (raspo-
reda) ka drugom ukoliko se drugi može dobiti od prvog dodavanjem jedne dame na slobodno polje na tabli. Neki
raspored moguće je dobiti različitim redosledima dodavanja dama polazeći od prazne table, ali se dodavanjem

8
0Z0Z0Z0Z 8
0ZQZ0Z0Z 8
0L0Z0Z0Z
7
Z0Z0Z0Z0 7
Z0Z0ZQZ0 7
Z0Z0Z0Z0
6
0Z0Z0Z0Z 6
0Z0L0Z0Z 6
0Z0ZQZ0Z
5
Z0Z0Z0Z0 5
ZQZ0Z0Z0 5
Z0L0Z0Z0
4
0Z0L0Z0Z 4
0Z0Z0Z0L 4
0Z0Z0Z0Z
3
Z0Z0Z0Z0 3
Z0Z0L0Z0 3
Z0ZQZ0Z0
2
0Z0Z0Z0Z 2
0Z0Z0ZQZ 2
0Z0Z0Z0Z
1
Z0Z0Z0Z0 1
L0Z0Z0Z0 1
L0Z0Z0Z0
a b c d e f g h a b c d e f g h a b c d e f g h

Slika 2.5: Problem osam dama: kretanje dame u šahu (levo), jedno rešenje problema (sredina), situacija kada
je u pretrazi nužno vratiti se na prethodni izbor (desno)
2.1. Obilazak grafa u dubinu i širinu 20

/ \ ...
4
0Z0Z 4
0Z0Z
3
Z0Z0 3
Z0Z0
2
0Z0Z 2
QZ0Z
1
L0Z0 1
Z0Z0
a b c d a b c d
/ \ \
4
0Z0Z 4
0L0Z 4
0L0Z
3
ZQZ0 3
Z0Z0 3
Z0Z0
2
0Z0Z 2
0Z0Z 2
QZ0Z
1
L0Z0 1
L0Z0 1
Z0Z0
a b c d a b c d a b c d
/ / \ \
4
0Z0Z 4
0L0Z 4
0L0Z 4
0L0Z
3
ZQZ0 3
Z0Z0 3
Z0Z0 3
Z0Z0
2
0Z0Z 2
0ZQZ 2
0Z0Z 2
QZ0Z

9)
1
L0Z0 1
L0Z0 1
L0Z0 1
Z0L0
a b c d a b c d a b c d a b c d

1
| |

20
4
0L0Z 4
0L0Z
3
Z0Z0 3
Z0ZQ
2
0ZQZ 2
QZ0Z

(
1
L0Z0 1
Z0L0
a b c d a b c d

Slika 2.6: Prikaz dela stabla pretrage za rešavanje problema četiri dame primenom bektrekinga. Oznaka X
je
an
označava polja na kojima je pokušano postavljanje dame, ali je ustanovljeno da se u tom slučaju napada
sa nekom od već postavljenih dama. Eksplicitno su prikazani samo rasporedi u kojima se postavljene dame
izd

medusobno ne napadaju.

dama ne može dobiti tabla sa manjim brojem dama. Dakle, radi se o usmerenom acikličnom grafu. Polazno
ko

stanje je prazna tabla, a ciljno stanje je bilo koje stanje koje zadovoljava uslove problema (za osam dama postoji
92 rešenja).
Opisani graf prostora stanja sadrži i rasporede u kojima se više od dve dame napadaju. U stablu pretrage,
ns

svaki put od prazne table do ovakvog rasporeda mora sadržati raspored sa tačno dve dame koje se napadaju.
Kako se duž puteva kroz stablo pretrage dame samo dodaju, postupak pretrage se ne isplati nastavljati nakon što
tro

se naide na takav raspored. Na slici 2.5 (desno) prikazan je jedan raspored koji nema smisla ispitivati dalje. Na
slici 2.6, prikazan je deo stabla pretrage koja koristi bektreking za problem četiri dame (za problem osam dama
stablo pretrage preveliko je za ilustraciju).
ek

Na prethodnom primeru mogu se uočiti neke tipične osobine bektrekinga. Bektreking se zasniva na proširivanju
tekućeg parcijalnog rešenja. Polazno parcijalno rešenje je prazno rešenje. U prethodnom primeru, to je prazna
El

šahovska tabla, a proširivanje parcijalnog rešenja se vrši dodavanjem dame na tablu. Proširivanje parcijalnog
rešenja u nekim slučajevima nije isplativo ili nije moguće i tada se pretraga vraća unazad, odakle dolazi i ime
tehnike. U problemu dama, nije isplativo nastaviti pretragu ukoliko je dostignut raspored u kojem se dve dame
napadaju). Prilikom izbora naredne grane u pretrazi, prati se neki poredak izbora, u slučaju problema dama,
na primer – sledeće prazno polje u skladu sa nekom numeracijom polja.

2.1.2 Pretraga u širinu


Pretraga u širinu razmatra čvorove koji su susedni tekućem čvoru, a kasnije razmatra, redom, sve njihove
potomke. U traganju za čvorom koji zadovoljava neki uslov, biće pronaden onaj na najmanjem rastojanju (pri
čemu se pod rastojanjem misli na broj grana) od polaznog čvora. Čvorovi koji se razmatraju obično se čuvaju u
redu, tj. u FIFO listi. I u ovom pristupu, da ne bi došlo do beskonačne petlje, potrebno je čuvati informaciju o
čvorovima koji su već posećeni. Ovaj postupak opisan je algoritmom BFS na slici 2.7. U prikazanom algoritmu,
informacija o posećenim čvorovima ne čuva se eksplicitno, već kroz informaciju o čvoru prethodniku. Slika 2.8
ilustruje obilazak grafa primenom algoritma BFS.

Primer 2.5. U slučaju pronalaženja puta od Zagreba do Bukurešta, biće pronaden put Zagreb-Beograd-Bukurešt
21 2. Neinformisana pretraga

Algoritam: BFS (pretraga u širinu)

Ulaz: Graf 𝐺, polazni čvor i ciljni čvor


Izlaz: Najkraći put od polaznog do ciljnog čvora u grafu 𝐺 (ako postoji takav put)
1: stavi samo polazni čvor u red 𝑆;
2: dok god red 𝑆 nije prazan radi
3: uzmi čvor 𝑛 sa početka reda 𝑆 i obriši ga iz reda;
4: ako je 𝑛 ciljni čvor onda
5: izvesti o uspehu i vrati put od polaznog do ciljnog čvora (idući unazad od ciljnog čvora);
6: za svaki od potomaka 𝑚 čvora 𝑛 za koji nije definisan roditelj radi
7: zapamti 𝑛 kao roditelja i dodaj 𝑚 na kraj reda 𝑆;
8: izvesti da traženi put ne postoji.

9)
Slika 2.7: BFS — algoritam pretrage u širinu.

1
20
1 5

(
2 4

3 je 6
an
Slika 2.8: Primer obilaska grafa primenom algoritma BFS (oznake čvorova ukazuju na poredak obilaska čvorova)
izd

(slika 2.9). Na početku, tekući grad je Zagreb. Iz Zagreba, pronalaze se Sarajevo, Beograd i Budimpešta. Oni
ko

čine novi red 𝑆 i za njih se pamti da je prethodni grad Zagreb, koji se uklanja iz reda. Iz Sarajeva se pronalazi
put do Podgorice koja se dodaje na kraj reda 𝑆, a Sarajevo se iz njega uklanja. Iz Beograda se pronalazi put do
Skoplja i Bukurešta, koji se dodaju na kraj reda 𝑆, a Beograd se iz njega uklanja. Iz Budimpešte se ne pronalazi
ns

put ni do jednog grada koji već nije obraden. Budimpešta se uklanja iz reda. Iz Podgorice se ne pronalazi put ni
do jednog grada koji već nije obraden. Podgorica se uklanja iz reda. Iz Skoplja se pronalazi put do Sofije koja
tro

se dodaje na kraj reda 𝑆, a Skoplje se iz njega uklanja. Kada Bukurešt postane grad koji se analizira, konstatuje
se da je to ciljni grad, konstruiše se put i algoritam se zaustavlja.
ek

DFS pretraga je pogodnija od BFS pretrage za usmeravanje koje bira čvorove koji više obećavaju. Vremenska
složenost oba algoritma je proporcionalna zbiru čvorova i grana grafa koji se pretražuje (𝑂(|𝑉 | + |𝐸|)), a
El

prostorna je proporcionalna broju čvorova (𝑂(|𝑉 |)).

2.2 Dejkstrin algoritam


Dejkstrin algoritam (razvio ga je holandski informatičar Edzger Dejkstra 1959. godine) je algoritam za pre-
tragu grafa koji nalazi najkraće puteve u grafu sa nenegativnim cenama koje su pridružene granama. Algoritam
se može koristiti za odredivanje najkraćeg puta od datog čvora do datog ciljnog čvora, ali i za odredivanje
najkraćih puteva od svih čvorova grafa do datog ciljnog čvora.
Ideja Dejkstrinog algoritma može se ilustrovati na sledeći način. Pretpostavimo da je skup čvorova vezan
nitima (i da cenom puta od jednog do drugog čvora smatramo dužinu niti koja ih vezuje). Uzmimo čvor koji je
izabran za polazni i počnimo da podižemo celu konfiguraciju (tako da nikoje dve niti nisu upletene). Postepeno
se čvorovi, jedan po jedan, odvajaju od tla. Najmanje rastojanje izmedu nekog od tih čvorova i polaznog čvora
je upravo direktno rastojanje izmedu njih. Opšta ideja algoritma je slična: postoje čvorovi koji su već podignuti
sa tla i oni koji su još uvek na tlu. Za one koji su podignuti sa tla već znamo najkraće puteve od polaznog
čvora. U svakom koraku možemo još jedan čvor „podići sa tla“ i izračunati njegovo najmanje rastojanje od
polaznog čvora (razmatrajući samo one čvorove koji su mu susedni i koji su već iznad tla). Ukoliko na kraju
ovog postupka na tlu ostanu još neki čvorovi, to znači da do njih ne postoji put od polaznog čvora.
2.2. Dejkstrin algoritam 22

4 Budimpešta

1
Zagreb

3 Beograd
Bukurešt
2 7
Sarajevo

Sofija
Podgorica 5 6
Skoplje

Zagreb

1 9)
Sarajevo Beograd

20
Budimpešta

(
Skoplje
Podgorica
je
Bukurešt
an
Sofija
izd

Slika 2.9: Traženje puta od Zagreba do Bukurešta primenom algoritma BFS: gore je prikazan graf prostora
stanja, a dole stablo pretrage
ko
ns

Algoritam: Dejkstrin algoritam

Ulaz: Graf 𝐺, polazni čvor i ciljni čvor


tro

Izlaz: Najkraći put od polaznog do ciljnog čvora u grafu 𝐺 (ako postoji takav put)
1: stavi sve čvorove grafa u skup 𝑄;
ek

2: dok god skup 𝑄 nije prazan radi


3: izaberi iz 𝑄 čvor 𝑛 sa najmanjim ustanovljenim rastojanjem od polaznog čvora i obriši ga iz 𝑄;
El

4: ako je 𝑛 ciljni čvor onda


5: konstruiši put od polaznog do ciljnog čvora (idući unazad od ciljnog čvora) i izvesti o uspehu;
6: za svaki čvor 𝑚 iz 𝑄 koji je direktno dostupan iz 𝑛 radi
7: ako je tekuće rastojanje od polaznog čvora do 𝑚 veće od rastojanja od polaznog čvora do 𝑚 preko
čvora 𝑛 onda
8: promeni informaciju o roditelju čvora 𝑚 na čvor 𝑛 i upamti novo rastojanje;
9: izvesti da traženi put ne postoji (𝑄 je prazan skup i uspeh nije prijavljen).

Slika 2.10: Dejkstrin algoritam.

Dejkstrin algoritam prikazan je na slici 2.10. U svakoj iteraciji, bira se čvor 𝑛 iz skupa čvorova 𝑄 (to su čvorovi
koji su „na tlu“) takav da je vrednost tekućeg najmanjeg rastojanja od polaznog čvora do njega najmanja. Taj
čvor se tada briše iz skupa 𝑄. Ukoliko je to ciljni čvor, onda se konstruiše traženi put od polaznog čvora (koristeći
informaciju o roditeljskim čvorovima). Inače, za svaki čvor 𝑚 iz 𝑄 koji je susedan čvoru 𝑛 proverava se da li
se (preko 𝑛) može popraviti tekuće najmanje rastojanje od polaznog čvora i, ako može, čvor 𝑛 se postavlja za
23 2. Neinformisana pretraga

roditelja čvora 𝑚. Invarijanta petlje je da se za čvorove koji nisu u 𝑄 zna najkraće rastojanje od polaznog
čvora.
U najjednostavnijoj implementaciji Dejkstrinog algoritma, skup 𝑄 se implementira kao obična povezana lista
ili niz. Složenost algoritma sa takvom implementacijom skupa 𝑄 je 𝑂(|𝑉 |2 + |𝐸|) = 𝑂(|𝑉 |2 ), gde je |𝑉 | broj
čvorova, a |𝐸| broj grana grafa. Za retke grafove (koji imaju mnogo manje grana od |𝑉 |2 ), Dejkstrin algoritam
može se implementirati efikasnije. Na primer, varijanta koja koristi binarni min-hip1 za odredivanje tekućeg
najbližeg čvora ima složenost 𝑂((|𝐸| + |𝑉 |) log |𝑉 |).
Primer 2.6. Na slici 2.11 tabela prikazuje efekat primene Dejkstrinog algoritma na prikazani graf. U ovom
primeru, čvor 𝐴 je polazni, a čvor 𝐹 ciljni čvor. Polje tabele za neki čvor prikazuje vrednost najmanjeg nadenog
rastojanja od polaznog do tog čvora.

𝐴 3 𝐵
2 5
6
𝐶 4 𝐷 5

9)
2
1 1

1
𝐸 4 𝐹

20
korak B C D E F čvor 𝑛
1 ∞ ∞ ∞ ∞ ∞ 𝐴

(
2 3 2 6 4 ∞ 𝐶
3 3 2 6 3 ∞ 𝐵
4
5
3 2 6 3 je 8 𝐸
an
3 2 5 3 7 𝐷
6 3 2 5 3 6 𝐹
izd

Slika 2.11: Primer primene Dejkstrinog algoritma

Primer 2.7. Slika 2.12 i prateća tabela ilustruje izvršavanje Dejkstrinog algoritma na problemu nalaženja puta
ko

od Bukurešta do Podgorice (najkraći put je Bukurešt-Sofija-Skoplje-Podgorica).


ns
tro
ek
El

1 Min-hip je specifična stablolika struktura koja zadovoljava hip-svojstvo: ako je 𝐵 potomak čvora 𝐴, onda je vrednost pridružena

čvoru 𝐴 manja od vrednosti pridružene čvoru 𝐵. U skladu sa tim, najmanji element je uvek koren stabla. Max-hip se definiše
analogno.
2.2. Dejkstrin algoritam 24

9)
5 Budimpešta

1
20
340
380
840

(
Zagreb
390
400 3 Beograd
290 je
590
Bukurešt
1
an
6
450 360
Sarajevo 430
230
izd

2
7 240 Sofija
350
Podgorica 4
Skoplje
korak Bg So Bud Sk Pg Sa Zg čvor 𝑛
ko

1 ∞ ∞ ∞ ∞ ∞ ∞ ∞ Bukurešt
2 590 360 840 ∞ ∞ ∞ ∞ Sofija
ns

3 590 360 840 600 ∞ ∞ ∞ Beograd


4 590 360 840 600 1040 880 980 Skoplje
tro

5 590 360 840 600 950 880 980 Budimpešta


6 590 360 840 600 950 880 980 Sarajevo
7 590 360 840 600 950 880 980 Podgorica
ek

Slika 2.12: Traženje puta od Bukurešta do Podgorice primenom Dejkstrinog algoritma


El
Glava 3

Informisana pretraga

9)
Informisana (ili heuristička) pretraga koristi ne samo informaciju o mogućim akcijama (koracima) u svakom
stanju, već i dodatno znanje o konkretnom problemu koje može da usmerava pretragu ka stanjima koja više
obećavaju, za koje postoji nekakvo očekivanje da brže vode ciljnom stanju, tj. rešenju problema. Ta informacija

1
može biti nekakva ocena, mera „kvaliteta“ stanja, a može da bude zasnovana i na informacijama vezanim za

20
početno ili ciljno stanje. Ta mera kvaliteta često nije egzaktna, nego predstavlja nekakvu procenu, heurističku
meru.1

(
Funkciju koja ocenjuje kvalitet stanja zovemo funkcija evaluacije. Ukoliko je funkcija evaluacije označena sa
𝑓 , onda 𝑓 (𝑛) označava ocenu stanja 𝑛. Podrazumevaće se da su cene akcija (ili cene grana grafa) nenegativne.
je
Već je rečeno da se problemi pretrage često mogu pogodno zadati u terminima grafova koji opisuju prostor
stanja, pa će se umesto „stanja“ i „ocena stanja“ govoriti i „čvor” i „ocena čvora“.
an
Prilikom rešavanja problema pretragom, generiše se stablo pretrage (obično samo implicitno) čijim su
čvorovima pridružena stanja. Pošto kroz jedno isto stanje može da se prode više puta tokom pretrage, može
izd

da bude više čvorova stabla pretrage sa istim tim stanjem. Pošto ocena stanja može da zavisi od trenutnog
konteksta procesa pretrage, obično je preciznije reći „ocena čvora (stabla pretrage)“ nego „ocena stanja“.

3.1 Pohlepna pretraga


ko

Pohlepnim algoritmom naziva se algoritam koji bira lokalno optimalne akcije, tj. teži neposrednom povećanju
ns

vrednosti neke ciljne funkcije. Ovakav algoritam ne procenjuje dugoročni kvalitet izabranih akcija, tj. koliko
one doprinose ostvarenju konačnog cilja, već bira akciju koja se na osnovu znanja dostupnog u trenutku izbora
procenjuje kao najbolja medu raspoloživim akcijama. Jedna varijanta pohlepne pretrage u grafu prikazana je
tro

na slici 3.1. Prikazani algoritam može se modifikovati tako da prelazi na sledeći čvor samo ako njegova ocena
popravlja ocenu tekućeg čvora, a inače vraća tekući čvor kao najbolji pronadeni.
ek

Primer 3.1. U primeru pronalaženja najkraćih puteva izmedu gradova (primer 1.2), ako je u svakom gradu
moguće videti tablu sa tačnim rastojanjima do susednih gradova, pohlepni informisani algoritam bi kao funkciju
El

evaluacije 𝑓 (𝑛) mogao da koristi tačno rastojanje od tekućeg čvora do čvora 𝑛 (tj. da uvek za sledeći grad bira
najbliži grad). Ukoliko su, na osnovu mape, poznata vazdušna rastojanja izmedu gradova, pohlepni informisani
algoritam bi kao funkciju evaluacije 𝑓 (𝑛) mogao da koristi vazdušno rastojanje od 𝑛 do ciljnog grada (tj. da uvek
za sledeći grad bira onaj koji je najbliži ciljnom vazdušnim putem).
Ako je u svakom gradu moguće i videti tablu sa tačnim rastojanjima do susednih gradova i poznata su
vazdušna rastojanja izmedu gradova, pohlepni informisani algoritam bi kao funkciju evaluacije 𝑓 (𝑛) mogao da
koristi zbir tačnog rastojanja od tekućeg čvora do čvora 𝑛 i vazdušnog rastojanja od 𝑛 do ciljnog grada. Dakle,
tada se, u svakom koraku, kao sledeći grad, kao grad koji najviše obećava, bira grad 𝑛 za koji je zbir tačnog
rastojanja od tekućeg grada do 𝑛 i vazdušnog rastojanja od 𝑛 do ciljnog grada najmanji. Ovaj pristup biće
ilustrovan primerom traženja puta od Podgorice do Budimpešte (slika 3.2). Iz Podgorice su neposredno dostupni
Sarajevo, Beograd i Skoplje, a ocene dužina puteva do cilja preko tih gradova su 640km, 770km i 990km, te se
ide u Sarajevo. Iz Sarajeva su neposredno dostupni Zagreb, Beograd i Podgorica, a ocene dužina puteva preko tih
1 Heuristike su tehnike za usmeravanje i sužavanje pretrage u problemima u kojima se javlja kombinatorna eksplozija. Reč

„heuristika“ potiče od grčke reči „heurisko“ koja znači „tražiti“ ili „otkrivati“. Srodna grčka reč „heureka“ ili „eureka“ znači „našao
sam“ ili „otkrio sam“ i obično se vezuje za Arhimeda i njegov uzvik kada je došao do jednog znamenitog otkrića. Aristotel je koristio
termin „heuristika“ za otkrivanje novog znanja (ili demonstriranje postojećeg) kroz komunikaciju i interakciju izmedu izlagača i
slušalaca. Perl (1984) pod heuristikama smatra „kriterijume, metode ili principe za izbor izmedu nekoliko mogućih akcija onu koja
obećava da će biti najkorisnija za postizanje nekog cilja”.

25
3.1. Pohlepna pretraga 26

Algoritam: Pohlepna pretraga u grafu

Ulaz: Graf 𝐺, polazni čvor i ciljni čvor


Izlaz: niz koraka od polaznog do ciljnog čvora ili neuspeh (neuspeh ili beskonačna petlja su mogući i ako postoji
put izmedu ova dva čvora)
1: tekući čvor 𝑛 postavi na polazni čvor;
2: ponavljaj beskonačno
3: ako je 𝑛 ciljni čvor onda
4: izvesti o uspehu i vrati rešenje konstruišući put od polaznog do ciljnog čvora;
5: ako nema direktno dostupnih čvorova iz tekućeg čvora onda
6: izvesti o neuspehu;
7: od čvorova koji su direktno dostupni iz tekućeg čvora kao novi tekući čvor 𝑛 izaberi čvor 𝑚 koji ima
najbolju ocenu 𝑓 (𝑚).

9)
Slika 3.1: Algoritam pohlepne pretrage.

1
20
Budimpešta

340

(
300 380
840
320
Zagreb

400
390
370
410
Beograd
640
je
an
640 590
290 290 Bukurešt
450
190
450
izd

Sarajevo 360
430
230 280 300
320
170
350 240 Sofija
Podgorica 170
190
ko

Skoplje
Podgorica
ns

640 770 990


tro

Sarajevo
Beograd Skoplje

700 790
ek

610

Zagreb Podgorica
El

Beograd

380

Budimpešta

Slika 3.2: Traženje puta od Podgorice do Budimpešte primenom pohlepnog algoritma: na slici gore je prikazan
graf koji opisuje prostor stanja, a na slici dole prikazano je stablo pretrage

gradova su 700km, 610km i 790km, te se ide u Beograd. Iz Beograda su neposredno dostupni Sarajevo, Zagreb,
Budimpešta, Bukurešt, Skoplje, Podgorica, a ocene dužina puteva preko tih gradova su 700km 690km, 380km,
1230km, 1070km i 1010km, te se ide u Budimpeštu. Pronadeni put je, dakle, Podgorica-Sarajevo-Beograd-
Budimpešta i njegova stvarna dužina je 900km. Medutim, stvarna dužina puta Podgorica-Beograd-Budimpešta
je manja i iznosi 830km, što znači da je napravljeni izbor pogrešan, tj. nije najbolji mogući. Ovaj ishod ilustruje
opšti problem pohlepne pretrage, a to je da je moguće pronaći rešenje koje nije najbolje. Štaviše, u opštem
slučaju, moguće je ne pronaći rešenje i ako ono postoji, a moguće je i ostati u beskonačnoj petlji.
27 3. Informisana pretraga

Primer 3.2. U slučaju Lojdove slagalice, kao ocena rastojanja od tekućeg do ciljnog stanja može se koristiti
zbir Menhetn rastojanja svakog od 15 polja slagalice do njegovog ciljnog mesta. Menhetn rastojanje izmedu dva
polja 𝐴 i 𝐵 definiše se kao najmanji broj polja koji je potrebno preći kako bi se došlo od 𝐴 do 𝐵, krećući se
isključivo horizontalno ili vertikalno2 . U slučaju stanja slagalice u korenu levog stabla na slici 3.3, Menhetn
rastojanje polja 1 do njegovog pravog mesta je 3, zato što je na tom putu potrebno preći preko dva polja krećući
se naviše, a potom jedno polje krećući se ulevo. Mogući su i drugi putevi, ali njihova dužina nije manja. Ukupna
ocena rastojanja za to stanje slagalice je 0+0+0+1+1+2+1+0+3+2+2+0+0+2+2=16. Pretraga se nastavlja
dok ocena tekućeg stanja može da se popravi. Pohlepna pretraga može se formulisati tako da se u svakom koraku
preduzima potez koji vodi ka najmanjoj oceni rastojanja u odnosu na tekuće stanje.

2 3 4 1 2 3
6 5 10 12 15 5 10 4
9 1 8 15 9 12 6 8
13 14 7 11 13 14 7 11

1 9)
6 2 3 4 2 3 4 1 2 3 1 2 3 4
5 10 12 6 5 10 12 15 5 10 4 15 5 10

20
9 1 8 15 9 1 8 15 9 12 6 8 9 12 6 8
13 14 7 11 13 14 7 11 13 14 7 11 13 14 7 11

(
Slika 3.3: Stanje slagalice (levo) u kojem nema poteza koji vodi u stanje sa boljom ocenom rastojanja i stanje
je
slagalice (desno) iz kojeg postoji niz koraka koji poboljšavaju ocenu rastojanja (pomeranjem praznog polja
nadole), ali se završava u stanju iz kojeg svi potezi pogoršavaju ocenu.
an
U slučaju stanja slagalice u korenu slike 3.3 (levo), pohlepna pretraga ne može da nastavi pošto dato stanje
izd

predstavlja lokalni minimum ocene rastojanja jer se bilo kojim potezom ta ocena uvećava za 1.
S druge strane, ukoliko je polazna konfiguracija 3.3 (desno) ocena rastojanja se smanjuje pomeranjem polja
4 naviše a zatim i pomeranjem naviše polja 8 i 11. Nakon toga se dolazi do stanja koje je lokalni minimum i
pretraga se zaustavlja.
ko

Navedeni primeri pokazuju da predloženom jednostavnom pohlepnom pretragom nije moguće rešiti Lojdovu
slagalicu.
ns

Algoritmi zasnovani na pohlepnoj pretrazi obično su veoma jednostavni, često veoma efikasni i mogu da
daju kvalitetne rezutate ali ne garantuju optimalnost pa ni potpunost procesa rešavanja. Štaviše, ukoliko se
tro

u svakom koraku bira najbolja raspoloživa akcija, pohlepni algoritam se možda neće ni zaustavljati. Pohlepna
pretraga obično se ponaša dobro u slučaju problema kod kojih kvalitet odluke u nekom stanju pretrage ne zavisi
od budućih odluka ili ako se dati problem može aproksimirati problemom za koji to važi.
ek

3.1.1 Pohlepna pretraga u matematičkoj optimizaciji i u slučaju diferencijabilne funkcije cilja


El

Pohlepni algoritmi mogu se koristiti i za rešavanje problema matematičke optimizacije. Ovi problemi pret-
postavljaju postojanje funkcije cilja i skupa dopustivih rešenja. U zavisnosti od formulacije problema, potrebno
je naći dopustivo rešenje sa minimalnom ili maksimalnom vrednošću funkcije cilja. Takvo rešenje naziva se
optimalnim rešenjem problema optimizacije. Ovakvi problemi ne moraju pretpostavljati postojanje stanja, ak-
cija i drugih elemenata problema pretrage. U kontekstu matematičke optimizacije, pohlepni algoritmi obično
se nazivaju algoritmima penjanja uzbrdo pošto biraju susedna dopustiva rešenja koja imaju najviše vrednosti
funkcije cilja. Pohlepni algoritmi imaju sledeće slabosti:

Opasnost od lokalnih maksimuma: Lokalni maksimumi su tačke u prostoru pretrage čiji susedi imaju ma-
nju vrednost funkcije cilja od nje, ali je njena vrednost manja od vrednosti globalnog maksimuma. Algo-
ritmi penjanja uzbrdo nemaju načina da utvrde da se nalaze u lokalnom maksimumu (slika 3.4, levo)

Neefikasnost u slučaju grebena: Grebeni predstavljaju uske staze koje opadaju ili rastu duž nekog pravca
(slika 3.4, desno). U takvim problemima, penjanje uzbrdo može da ne vodi u smeru staze rasta, već je
potrebno da napravi mnogo cik-cak koraka da se uspne uz greben (ili da se spusti niz greben).
2 Rastojanje se zove Menhetn, jer podseća na kretanje ulicama Menhetna koje su medusobno normalne ili paralelne: od jednog

do drugog bloka moguće je kretati se ulicama, ali nije moguće prolaziti blokove dijagonalno.
3.1. Pohlepna pretraga 28

Slika 3.4: Situacija u kojoj pohlepna pretraga može da vrati samo lokalni maksimum (levo) i greben (desno)

9)
Opasnost od platoa: Platoi predstavljaju oblasti prostora pretrage u kome funkcija cilja ima konstantnu
vrednost. Zbog toga je nemoguće odrediti koju akciju treba preduzeti.

1
Postoje razne varijacije osnovnog penjanja uzbrdo koje pokušavaju da se izbore sa navedenim problemima.

20
Takvo je na primer stohastičko penjanje uzbrdo koje ne bira uvek susedno stanje koje ima najveću vrednost, ali
verovatnoća da odredeno stanje bude izabrano je veća što je veća njegova vrednost. Druga varijacija je penjanje

(
uzbrdo sa slučajnim restartovanjem kod kojeg se posle pronalaženja lokalnog maksimuma proces pretrage ponovo
pokreće iz slučajno generisanog polaznog stanja. Ovaj metod omogućava pronalaženje globalnog maksimuma
je
sa verovatnoćom koja se približava 1 kada se povećava broj pokušaja.
Metode pretrage i matematičke optimizacije često pokušavaju da iskoriste neku zakonitost u strukturi pro-
an
stora pretrage, odnosno prostora dopustivih rešenja. Tako, metode penjanja uzbrdo, u slučaju diferencijabilne
funkcije cilja, obično počivaju na korišćenju koncepta gradijenta. Ukoliko je data diferencijabilna funkcija cilja
𝑓 : R𝑛 → R, gradijent se definiše kao vektor parcijalnih izvoda te funkcije:
izd

(︂ )︂
𝜕𝑓 𝜕𝑓 𝜕𝑓
∇𝑓 = , ,...,
𝜕𝑥1 𝜕𝑥2 𝜕𝑥𝑛
ko

Gradijent izračunat u odredenoj tački a ∈ R𝑛 predstavlja vektor u prostoru R𝑛 u čijem smeru funkcija 𝑓
najstrmije raste u okolini tačke a. Stoga se kretanjem u ovom smeru može doći do lokalnog maksimuma.
Kretanjem u suprotnom smeru može se doći do lokalnog minimuma. U tradiciji matematičke optimizacije, često
ns

se koristi formulacija traženja minimuma, a metoda za traženje minimuma može se upotrebiti i za nalaženje
maksimuma ukoliko se primeni na funkciju −𝑓 umesto na funkciju 𝑓 . U slučaju traženja minimuma, princip
tro

kretanja u smeru suprotnom od gradijenta je osnova algoritma Najstrmiji spust ili gradijentnog spusta. Algoritam
Najstrmiji spust prikazan je na slici 3.5.
ek

Algoritam: Najstrmiji spust

Ulaz: Diferencijabilna funkcija 𝑓 (x), polazna tačka a0 i preciznost 𝜀


El

Izlaz: Lokalni minimum funkcije 𝑓 (ukoliko postoji)


1: postavi 𝑛 na 0;
2: ponavljaj
3: izračunaj vrednost ∇𝑓 (an );
4: izvrši kretanje u smeru suprotnom od gradijenta do sledeće tačke an+1 ;
5: uvećaj 𝑛 za 1;
6: dok nije ispunjen uslov |𝑓 (an ) − 𝑓 (an−1 )| ≤ 𝜀|𝑓 (an−1 )|
7: vrati an kao rešenje.

Slika 3.5: Algoritam Najstrmiji spust.

U praksi se obično ne očekuje pronalaženje same tačke lokalnog minimuma, s obzirom na to da se ne radi
o diskretnom prostoru, te se opisani postupak prekida kada razlika u vrednosti funkcije 𝑓 u odnosu na njenu
prethodnu vrednost postane dovoljno mala.
29 3. Informisana pretraga

𝑥3

35

30

25

20

15

10

5
−1
s1
−1
s3 0
1 s2
𝑥1 2 −5
3 a1 a0 1
2

9)
3 𝑥2
s4

1
Slika 3.6: Ilustracija problema pronalaženja optimalne pozicije za lekarsku stanicu.

( 20
Navedeni opšti algoritam potrebno je precizirati na nekoliko mesta. Poznavanje gradijenta i proizvoljno
kretanje u suprotnom smeru u praksi ipak ne garantuje nalaženje minimuma, jer je u zavisnosti od dužine
je
koraka moguće preći preko minimuma, nastaviti dalje i doći i do rešenja goreg od tekućeg. Stoga je u svakom
koraku potrebno odrediti pogodnu vrednost 𝜆𝑛 koja se koristi u izboru nove tačke:
an
an+1 = an − 𝜆𝑛 ∇𝑓 (an )
izd

Vrednosti 𝜆𝑛 mogu se definisati na različite načine. Dovoljan uslov za konvergenciju dat je Robins-Monroovim
uslovima koji kažu da se za vrednosti 𝜆𝑛 mogu uzeti bilo koji brojevi koji zadovoljavaju sledeće uslove:

∑︁ ∞
∑︁
𝜆𝑛 = ∞ 𝜆2𝑛 < ∞
ko

𝑛=0 𝑛=0

Intuitivno, prvi uslov garantuje da su koraci pretrage dovoljno veliki da pretraga ne uspori prerano i da stoga
ns

uopšte ne stigne do minimuma, dok drugi garantuje da su koraci dovoljno mali da optimizacioni proces ne
divergira. Jedan izbor koji zadovoljava ove uslove je 𝜆𝑛 = 𝑛+1
1
.
tro

Prikazani algoritam ne garantuje pronalaženje globalnog minimuma. U slučaju da funkcija ima veći broj
minimuma, od izabrane polazne tačke zavisiće rešenje koje algoritam daje i može se desiti da ono bude samo
lokalni (a ne i globalni) minimum.
ek

Primer 3.3. Potrebno je izgraditi lekarsku stanicu koja bi opsluživala četiri sportske lokacije. Stanica bi trebalo
da bude relativno blizu svim lokacijama. Jedan povoljan izbor njene lokacije bi bila tačka x takva da je zbir
El

4
∑︁
𝑓 (x) = ‖x − s𝑖 ‖2
𝑖=1

minimalan, gde važi x = (𝑥1 , 𝑥2 ), s1 = (0, 0), s2 = (0, 1), s3 = (2, 0) i s4 = (3, 3).
Zapisano drugačije, funkcija 𝑓 jednaka je:

𝑓 (x) = (𝑥1 − 0)2 + (𝑥2 − 0)2 + (𝑥1 − 0)2 + (𝑥2 − 1)2 +


(𝑥1 − 2)2 + (𝑥2 − 0)2 + (𝑥1 − 3)2 + (𝑥2 − 3)2
= 4𝑥21 + 4𝑥22 − 10𝑥1 − 8𝑥2 + 23

Gradijent funkcije 𝑓 jednak je


∇𝑓 (x) = (8𝑥1 − 10, 8𝑥2 − 8)
Neka je polazna tačka a0 = (1, 1) i 𝜀 = 10−6 . Vrednost gradijenta ∇𝑓 (a0 ) u prvoj iteraciji je (−2, 0). Vrednost
parametra 𝜆𝑛 je 𝑛+1
1
. Tabela 3.7 prikazuje kako se menjaju relevantne vrednosti prilikom primene gradijentnog
spusta.
3.2. Pretraga Prvo najbolji 30

𝑛 an 𝜆𝑛 ∇𝑓 (𝑎𝑛 )
0 (1, 1) 1 (-2,0)
1 (3, 1) 1/2 (14,0)
2 (−4, 1) 1/3 (-42,0)
3 (10, 1) 1/4 (70,0)
4 (−7.5, 1) 1/5 (-70,0)
5 (6.5, 1) 1/6 (42,0)
6 (−0.5, 1) 1/7 (-14,0)
7 (1.5, 1) 1/8 (2,0)
8 (1.25, 1) 1/9 (0,0)
9 (1.25, 1) - -

Slika 3.7: Izvršavanje gradijentnog spusta u problemu odredivanja lokacije bolnice.

9)
Primetno je da na početku algoritam pravi velike korake, što je posledica relativno velike vrednosti 𝜆𝑛 .
Medutim, kako se ona smanjuje, koraci postaju manji i dolazi se do tačnog rešenja. U opštem slučaju, retko se

1
dešava zaustavljanje sa tačnim rešenjem. U ovom konkretnom slučaju, rešenje je moglo da bude pronadeno i

20
analitički — rešavanjem jednačina ∇𝑓 (x) = 0, ali to u opštem slučaju nije moguće.

Za diferencijabilne funkcije postoje više metoda lokalne optimizacije, medu kojima je algoritam Najstrmiji

(
spust najjednostavniji. Nedostatak ovog algoritma je što je konvergencija često spora. Brže alternative su ili
je
komplikovanije ili prave dodatne pretpostavke o svojstvima funkcije (poput konveksnosti) ili zahtevaju dodatne
informacije o ciljnoj funkciji (poput parcijalnih izvoda drugog reda).
an
3.2 Pretraga Prvo najbolji
izd

Pristup pretrage prvo najbolji (engl. best-first search) predstavlja osnovu za različite algoritme pretrage grafa
(pri čemu je u vidu grafa opisan prostor stanja i akcija za neki problem). Rešenjem se smatra niz čvorova (tj. put)
od polaznog do ciljnog čvora u grafu. U toku primene algoritma, svakom čvoru stabla pretrage pridružuje se
ko

informacija o njegovom prethodniku (roditelju) u mogućem rešenju, isto kao u Dejkstrinom algoritmu.
Da bi se izbegle beskonačne petlje (tj. beskonačno obradivanje istog stanja, tj. beskonačni nizovi čvorova
stabla pretrage u kojima je isto stanje), održavaju se dve liste stanja/čvorova:
ns

• zatvorena lista (ili lista zatvorenih stanja) – lista stanja za koje su već ispitani svi susedi (tj. sva neposredno
tro

dostupna stanja);

• otvorena lista (ili lista otvorenih stanja) – lista stanja koja su već posećena, ali nisu obradeni svi njihovi
ek

susedi.

Implementacija otvorene liste treba da omogućava efikasan pristup elementu sa najboljom ocenom 𝑓 (𝑛). Jed-
El

nostavnosti radi, u nastavku će se često isto označavati čvor stabla pretrage i njegovo stanje.
Na početku je u otvorenoj listi samo polazno stanje, a zatvorena lista je prazna. Suštinska ideja je da se u
svakoj iteraciji, analizira element otvorene liste sa najboljom ocenom i obraduju se iz njega neposredno dostupna
stanja. Ukoliko se naide na ciljno stanje – zadatak je rešen i algoritam završava rad. Precizniji opis algoritma
dat je na slici 3.8.
Algoritam Prvo najbolji ne pretenduje da daje optimalno rešenje (tj. da otkrije najbolji put do ciljnog čvora)
niti pruža ikakve garancije u tom smislu. Ipak, da bi se uvećale šanse da se pronade što kraći put izmedu dva
čvora, kada se analizira čvor 𝑚 koji je direktno dostupan iz tekućeg čvora 𝑛 (u skladu sa prikazanim algoritmom),
u slučaju da je čvor 𝑚 već u otvorenoj ili zatvorenoj listi, može se proveriti da li je put od polaznog čvora do
čvora 𝑚 preko čvora 𝑛 bolji od postojećeg puta do 𝑚; ako jeste, treba promeniti informaciju o roditelju čvora
𝑚 na čvor 𝑛, a ako je 𝑚 bio u zatvorenoj listi, prebaciti ga u otvorenu.
Ako je broj stanja i akcija konačan, algoritam se očigledno zaustavlja i ima svojstvo potpunosti, o čemu
govori naredna teorema.

Teorema 3.1. Ako je broj stanja i akcija konačan, algoritam Prvo najbolji se zaustavlja i nalazi traženi
put uvek kada on postoji.
31 3. Informisana pretraga

Algoritam: Prvo najbolji

Ulaz: Graf 𝐺, polazni čvor i ciljni čvor


Izlaz: Niz koraka od polaznog do ciljnog čvora (ako postoji put izmedu ova dva stanja)
1: zatvorenu listu postavi na praznu listu, u otvorenu listu stavi samo polazni čvor;
2: dok god ima elemenata u otvorenoj listi radi
3: izaberi čvor 𝑛 (tekući čvor) iz otvorene liste koji ima najbolju ocenu 𝑓 (𝑛);
4: ako je 𝑛 ciljni čvor onda
5: izvesti o uspehu i vrati rešenje konstruišući put od polaznog do ciljnog čvora (idući unazad — od
ciljnog čvora);
6: za svaki čvor 𝑚 koji je direktno dostupan iz 𝑛 radi
7: ako 𝑚 nije ni u otvorenoj ni u zatvorenoj listi onda
8: dodaj ga u otvorenu listu i označi 𝑛 kao njegovog roditelja;
9: izbaci 𝑛 iz otvorene liste i dodaj ga u zatvorenu listu;

9)
10: izvesti da traženi put ne postoji (otvorena lista je prazna i uspeh nije prijavljen).

1
Slika 3.8: Algoritam Prvo najbolji.

( 20
Ako funkcija 𝑓 (𝑛) vraća dubinu čvora 𝑛 (u DFS obilasku grafa počev od polaznog čvora), onda se navedeni
algoritam ponaša kao algoritam obilaska u širinu. Ako funkcija 𝑓 (𝑛) vraća zbir cena od polaznog čvora do čvora
𝑛, onda se navedeni algoritam ponaša kao Dejkstrin algoritam. je
Opšti algoritam Prvo najbolji predstavlja bitnu modifikaciju algoritma jednostavnog pohlepnog pristupa.
an
Iako oba u jednom čvoru koriste slično navodenje i biraju (najpre) najbolji susedni čvor (tj. čvor 𝑛 sa najboljom
vrednošću 𝑓 (𝑛)) algoritam Prvo najbolji, za razliku od jednostavnog pohlepnog pristupa omogućava vraćanje na
izd

čvorove koji nisu ispitani jer je neka od alternativa obećavala više. Delom zbog toga, ovim pristupom omogućava
se uspešan nastavak pretrage i u slučajevima kada bi pohlepna pretraga naišla na plato ili na lokalni optimum
beskonačnih petlji (zahvaljujući pamćenju obradenih čvorova u zatvorenoj listi).
Primer 3.4. U slučaju primera slagalice diskutovanog u primeru 3.2 (slika 3.3), situacija prikazana levo pred-
ko

stavlja lokalni minimum, zbog čega se pohlepna pretraga zaustavlja. Algoritam Prvo najbolji će odabrati jedan
od mogućih poteza, ali će alternativno stanje čuvati u otvorenoj listi i možda ga obraditi kasnije. U situaciji
ns

prikazanoj desno, pohlepnom pretragom se prazno polje spušta do donjeg desnog ugla, čime se dolazi do lokalnog
optimuma i pohlepna pretraga ne može da nastavi. Medutim, u slučaju algoritma Prvo najbolji, stanja koja su
bila alternative ispitanim stanjima su i dalje u otvorenoj listi i ispituju se dalje. Stoga je algoritam Prvo najbolji
tro

u stanju da reši slagalicu, ali ne garantuje nalaženje rešenja koje se sastoji od najmanjeg broja poteza.
ek

3.3 Algoritam A*
Algoritam A* pretraga ili, kraće, algoritam A* (čita se „a zvezda“, engl. „a star“) za odredivanje najkraćeg
El

puta izmedu dva čvora grafa, jedan je od fundamentalnih i najpopularnijih algoritama veštačke inteligencije.
Zasnovan je na korišćenju heuristika za usmeravanje pretrage, ali ipak ima svojstva kao što su potpunost i
optimalnost. Prvu verziju algoritma A* razvili su Hart, Nilsson i Raphael 1968. godine, a u narednim godinama
uvedeno je nekoliko modifikacija.
Algoritam A* je varijanta algoritma Prvo najbolji u kojoj se koristi funkcija evaluacije 𝑓 koja ima sledeću
specifičnu formu:
𝑓 (𝑛) = 𝑔(𝑛) + ℎ(𝑛),
gde je 𝑔(𝑛) cena puta od polaznog čvora do čvora 𝑛, a ℎ(𝑛) je procenjena (heuristička) cena najjeftinijeg puta
od čvora 𝑛 do ciljnog čvora. Dok se traga za najkraćim putem, uvek se zna tekuća minimalna cena (a može
se menjati tokom primene algoritma) od polaznog čvora do čvora 𝑛 (tj. tekuća vrednost 𝑔(𝑛)), ali se vrednost
ℎ(𝑛) može samo procenjivati. Od kvaliteta heuristike u velikoj meri zavisi ponašanje i efikasnost algoritma.
Izbor kvalitetne heuristike jedan je od najvažnijih i najtežih izazova u dizajniranju konkretnih implementacija
algoritma A*. Ciljni čvor 𝑡 može se prepoznati i za njega je vrednost heuristike jednaka 0, ali za sve druge
čvorove ne postoji opšti pristup koji daje kvalitetnu heuristiku.
Algoritam A* traži optimalno rešenje (tj. otkriva najbolji put do ciljnog čvora) i zato za svaki čvor na koji
naide proverava da li je do njega ranije već bio pronaden neki lošiji put i, ako jeste, zamenjuje ga novim, boljim
putem. Takva provera je u algoritmu Prvo najbolji bila opciona, a u algoritmu A* je obavezna.
3.3. Algoritam A* 32

Pored toga što je specijalan slučaj metoda Prvo najbolji, algoritam A* je uopštenje Dejkstrinog algoritma.
Kao i u Dejkstrinom algoritmu, čvorovi koje tek treba obraditi čuvaju se u listi, sortiranoj prema nekom
kriterijumu. Algoritam A* često ispituje manje čvorova nego Dejkstrin algoritam. To smanjenje proističe iz
korišćenja heuristike koja procenjuje rastojanje do ciljnog čvora. Ključna razlika izmedu dva algoritma je u
tome što Dejkstrin algoritam (kao algoritam neinformisane pretrage) uzima u obzir samo cenu od polaznog do
tekućeg čvora — vrednost 𝑔(𝑚), a A* (kao algoritam informisane pretrage) koristi vrednost funkcije evaluacije
𝑓 (𝑚) = 𝑔(𝑚) + ℎ(𝑚).
Opis algoritma A* dat je na slici 3.9. Prilikom dodavanja čvora 𝑚 u otvorenu listu, vrednost 𝑔(𝑚) se može
izračunati na inkrementalan i efikasan način: vrednost 𝑔(𝑚) jednaka je zbiru vrednosti funkcije 𝑔 za roditelja
čvora 𝑚 i ceni puta od roditelja do 𝑚.

Algoritam: A*

Ulaz: Graf 𝐺, polazni čvor i ciljni čvor


Izlaz: Najkraći put od polaznog do ciljnog čvora (ako postoji put izmedu ova dva čvora)

9)
1: zatvorenu listu postavi na praznu listu, u otvorenu listu stavi samo polazni čvor;

1
2: dok god ima elemenata u otvorenoj listi radi
3: izaberi čvor 𝑛 (tekući čvor) iz otvorene liste koji ima najbolju ocenu 𝑓 (𝑛);

20
4: ako je 𝑛 ciljni čvor onda
5: izvesti o uspehu i vrati rešenje konstruišući put od polaznog do ciljnog čvora (idući unazad — od

(
ciljnog čvora);
6: za svaki čvor 𝑚 koji je direktno dostupan iz 𝑛 radi
7:
8:
ako 𝑚 nije ni u otvorenoj ni u zatvorenoj listi onda je
dodaj ga u otvorenu listu i označi 𝑛 kao njegovog roditelja. Izračunaj i pridruži vrednost 𝑓 (𝑚)
an
čvoru 𝑚;
9: inače
izd

10: ako put od polaznog čvora do čvora 𝑚 preko čvora 𝑛 je bolji (kraći ili jeftiniji) od postojećeg
puta do 𝑚 (trenutna vrednost 𝑔(𝑚)) onda
11: promeni informaciju o roditelju čvora 𝑚 na čvor 𝑛 i ažuriraj vrednosti 𝑓 (𝑚) i ako je 𝑚 bio
u zatvorenoj listi, prebaci ga u otvorenu;
ko

12: izbaci 𝑛 iz otvorene liste i dodaj ga u zatvorenu listu;


13: izvesti da traženi put ne postoji (otvorena lista je prazna i uspeh nije prijavljen).
ns

Slika 3.9: Algoritam A*


tro

Ako algoritam naide na čvor 𝑚 koji je već u otvorenoj ili zatvorenoj listi, to znači da je pronaden novi
put do čvora 𝑚. Tada se proverava da li je put od polaznog čvora do već posećenog čvora 𝑚 preko čvora 𝑛
ek

bolji od postojećeg puta. Ako jeste bolji, potrebno je ažurirati vrednost 𝑔(𝑚). To može da se desi i za čvor 𝑚
koji pripada zatvorenoj listi: ako to jeste slučaj, potrebno je čvor 𝑚 ponovo ispitati kao otvoreni čvor. Ovo je
El

neophodno kako bi se obezbedilo pronalaženje najboljeg puta od polaznog do ciljnog čvora.


Korišćenje algoritma A* nije uvek jednostavno. Često je algoritam potrebno prilagoditi specifičnom problemu
a uvek je, u kontekstu aplikacija koje rade u realnom vremenu, važno imati u vidu vremensku složenost, prostornu
složenost, upravljanje memorijom i različite dodatne faktore. Neki od dodatnih, specifičnih zahteva mogu da
iziskuju dodatno matematičko znanje i izračunavanja i specifične implementacione tehnike i strukture. Svi ti
moduli treba da budu uklopljeni u kompaktan i efikasan sistem za nalaženje puta.

3.3.1 Svojstva algoritma A*


Može se dokazati da je algoritam A* potpun i da je pod odredenim uslovima optimalan:

Potpunost: Ako su broj čvorova i broj akcija konačni, ako postoji put izmedu dva čvora, algoritam A* će, kao
i svaki Prvo najbolji algoritam, naći jedan takav (ukoliko je raspoloživo dovoljno vremena i memorijskog
prostora). Čak i ako je heuristička funkcija veoma loša, ciljni čvor će biti dostignut u konačnom broju
koraka.
Optimalnost: Od svih puteva izmedu dva data čvora, algoritam A* vratiće najkraći (tj. vratiće optimalno
rešenje) ako je funkcija ℎ dopustiva (eng. admissible). Funkcija ℎ je dopustiva ako nikada ne precenjuje
33 3. Informisana pretraga

stvarno rastojanje izmedu tekućeg čvora i ciljnog čvora, tj. ako za svaki čvor važi:

ℎ(𝑛) ≤ ℎ* (𝑛),

gde je ℎ* (𝑛) cena najkraćeg puta od čvora 𝑛 do ciljnog čvora (tj. ℎ* je idealna, optimalna heuristika).
Ukoliko funkcija ℎ nije dopustiva, ali ne precenjuje stvarnu cenu za više od 𝑑, onda je cena puta koji će
pronaći algoritam A* viša od cene najkraćeg za ne više od 𝑑.
Funkcija ℎ je konzistentna (eng. consistent) ako ima vrednost 0 za ciljni čvor i za bilo koja dva susedna
čvora 𝑚 i 𝑛 važi:
𝑐(𝑛, 𝑚) + ℎ(𝑚) ≥ ℎ(𝑛)
gde je 𝑐(𝑛, 𝑚) cena pridružena (moguće usmerenoj) grani (𝑛, 𝑚). Svaka konzistentna funkcija je dopustiva,
ali obratno ne važi.

Teorema 3.2. Ako je ℎ konzistentna heuristika, onda je ona i dopustiva.

9)
Dokaz: Neka ℎ* (𝑛) je jednako najkraćem rastojanju od čvora 𝑛 do ciljnog čvora 𝑠 (tj. neka je ℎ* optimalna

1
heuristika). Dokažimo da, ako je ℎ konzistentna heuristika, onda za svaki čvor 𝑛 važi ℎ(𝑛) ≤ ℎ* (𝑛).

20
Dokaz izvedimo po broju čvorova izmedu 𝑛 i ciljnog čvora 𝑠 na najkraćem putu izmedu njih.
Ako izmedu 𝑛 i 𝑠 na najkraćem putu nema čvorova, onda iz uslova konzistentnosti važi 𝑐(𝑛, 𝑠)+ℎ(𝑠) ≥

(
ℎ(𝑛), pa kako je ℎ* (𝑛) = 𝑐(𝑛, 𝑠) i ℎ(𝑠) = 0, važi ℎ* (𝑛) ≥ ℎ(𝑛).

𝑚
je
an
𝑛
𝑠
izd

Pretpostavimo da tvrdenje važi za svaki čvor za koji je broj čvorova do ciljnog čvora na najkraćem
putu manji od 𝑘, za 𝑘 > 0. Ako izmedu 𝑛 i 𝑠 na najkraćem putu ima 𝑘 čvorova, gde je 𝑘 > 0, neka
je 𝑚 prvi čvor na koji se naide posle čvora 𝑛 na najkraćem putu do 𝑠. Od čvora 𝑚 do 𝑠 ima 𝑘 − 1
ko

čvorova, pa na osnovu induktivne hipoteze (ℎ* (𝑚) ≥ ℎ(𝑚)) i na osnovu svojstva konzistentnosti važi

ℎ* (𝑛) = 𝑐(𝑛, 𝑚) + ℎ* (𝑚) ≥ 𝑐(𝑛, 𝑚) + ℎ(𝑚) ≥ ℎ(𝑛),


ns

što je i trebalo dokazati. 


tro

Ako je funkcija ℎ konzistentna, nije potrebno proveravati da li je put preko tekućeg čvora do jednom
zatvorenog čvora bolji od postojećeg (jer sigurno nije). Dakle, ako je funkcija ℎ konzistentna, algoritam
ek

A* je optimalan i još jednostavniji nego u opštem slučaju. Dokaz optimalnosti dat je u nastavku i zasniva
se na nekoliko pomoćnih tvrdenja. U tvrdenjima se pominju vrednosti 𝑓 i 𝑔 i treba imati na umu sledeće:
El

vrednosti funkcije 𝑔, pa onda i 𝑓 za neko stanje mogu se menjati u toku primene algoritma, ali u stablu
pretrage svaki čvor ima vrednosti 𝑔 i 𝑓 koje se ne menjaju. Može da bude više čvorova stabla pretrage
kojima je pridruženo jedno isto stanje, tj. isti čvor grafa.
Lema 3.1. Ako je ℎ konzistentna heuristika, onda u svakom trenutku primene algoritma, duž svakog puta
kroz stablo pretrage, vrednosti 𝑓 (𝑛) nisu opadajuće.

Dokaz: Ako je u nekom trenutku primene algoritma čvor stabla pretrage 𝑚 tekući i ako je njegov roditelj
čvor 𝑛, onda važi:

𝑓 (𝑚) = 𝑔(𝑚) + ℎ(𝑚) = 𝑔(𝑛) + 𝑐(𝑛, 𝑚) + ℎ(𝑚) ≥ 𝑔(𝑛) + ℎ(𝑛) = 𝑓 (𝑛)

Tvrdenje leme onda sledi na osnovu jednostavnog induktivnog argumenta. 

Lema 3.2. Ako je ℎ konzistentna heuristika, za niz čvorova redom proglašenih za tekuće, niz vrednosti
𝑓 (𝑛) u stablu pretrage čini neopadajući niz.
3.3. Algoritam A* 34

Dokaz: U svakoj iteraciji, algoritam bira za tekući čvor čvor iz otvorene liste sa najmanjom vrednošću
𝑓 (𝑛) (te svi preostali čvorovi u skupu otvorenih čvorova imaju veće ili jednake vrednosti 𝑓 ). Svi
budući tekući čvorovi su preostali čvorovi iz otvorene liste, potomci tih čvorova ili potomci njihovih
potomaka. Na osnovu prethodne leme onda sledi da svi budući čvorovi imaju vrednosti 𝑓 veće ili
jednake 𝑓 (𝑛). Kako ovo važi za svaki tekući čvor 𝑛, sledi tvrdenje leme, tj. algoritam proglašava
čvorove tekućim u neopadajućem poretku po 𝑓 (𝑛). 

Lema 3.3. Ako je ℎ konzistentna heuristika, kad neki čvor stabla pretrage 𝑛 postane tekući, do njego-
vog stanja je već pronaden optimalan put. Drugim rečima, svaki čvor koji postaje tekući biće čvor sa
najmanjom cenom za to stanje.

Dokaz: Kada algoritam proglasi neki čvor tekućim, pri čemu je to prvi takav čvor za odgovarajuće stanje
𝑛, on ima neke vrednosti 𝑔(𝑛) = 𝑔0 i 𝑓 (𝑛) = 𝑓0 . Pretpostavimo da 𝑔(𝑛) nije optimalan put i

9)
pretpostavimo da je optimalan put do istog stanja moguće dostići u nekoj kasnijoj iteraciji, u nekom
budućem čvoru koji ima vrednosti 𝑔1 i 𝑓1 . Kako je 𝑔1 cena optimalnog puta do 𝑛, važi 𝑔0 > 𝑔1 , pa

1
i 𝑔0 + ℎ(𝑛) > 𝑔1 + ℎ(𝑛), tj. 𝑓0 > 𝑓1 . S druge strane, na osnovu prethodne leme, važi 𝑓0 ≤ 𝑓1 , što je

20
kontradikcija. 

(
Teorema 3.3. Ako je ℎ konzistentna heuristika, ako je pronaden put do ciljnog čvora, on je sigurno
optimalan. je
an
izd

Dokaz: Algoritam vraća nadeni put čim ciljni čvor po prvi put postane tekući. Na osnovu prethodne
leme, ako je ℎ konzistentna heuristika, kad ciljni čvor postane tekući, do njega je već pronaden
optimalan put, što daje tvrdenje teoreme. 
ko

Upravo lema 3.3 govori da za čvorove dostupne iz tekućeg čvora koji su već zatvoreni, ne mora da se
proverava da li njihova vrednost 𝑔 treba da bude ažurirana. Ovo tvrdenje u slučaju konzistentne heuristike
ns

obezbeduje jednostavniju i efikasniju implementaciju algoritma A*.


Ako je funkcija ℎ konzistentna, onda je ona i dopustiva. Obratno ne važi nužno: funkcija ℎ može da bude
tro

dopustiva, a da ne bude konzistentna.

Složenost: Vremenska složenost algoritma A* zavisi od heuristike. U najgorem slučaju, broj obradenih
ek

čvorova je eksponencijalan u odnosu na dužinu najkraćeg puta. U tom slučaju, i prostorna i vremen-
ska složenost algoritma A* jednake su kao za BFS algoritam.
El

Broj obradenih čvorova polinomski zavisi od dužine najkraćeg puta ako heuristika ℎ zadovoljava sledeći
uslov:
|ℎ(𝑥) − ℎ* (𝑥)| ≤ 𝑂(log ℎ* (𝑥))

gde je ℎ* idealna heuristika, tj. funkcija koja vraća cenu najkraćeg puta od čvora 𝑥 do ciljnog čvora.
Ukoliko funkcija 𝑓 * odgovara najkraćim putevima, onda algoritam A* obraduje sve čvorove za koje važi
𝑓 (𝑛) < 𝑓 * (𝑛), kao i neke čvorove 𝑛 za koje važi 𝑓 (𝑛) = 𝑓 * (𝑛).

Prethodna tvrdenja sugerišu da algoritam A* najbolje performanse (najmanji broj obradenih čvorova) daje
kada je funkcija heuristike bliska idealnoj funkciji heuristike. S druge strane, optimalnost je garantovana samo
ako funkcija heuristike nikada ne precenjuje stvarnu cenu puta. Zajedno, to govori da dobra funkcija heuristike
mora da bude veoma pažljivo konstruisana, tako da bude što bliža idealnoj funkciji, ali da je nikada ne premašuje.

Primer 3.5. U sledećem grafu zadatak je naći najkraći put od 𝐴 do 𝐸. Pored čvorova grafa zapisane su
procenjene dužine puta do čvora 𝐸, tj. vrednosti funkcije ℎ. Naredna tabela ilustruje primenu algoritma A*
(odgovarajuće stablo pretrage prikazano je na slici 3.10).
35 3. Informisana pretraga

𝐴 5 𝐺
6 6
6 4

𝐷 3 𝐻 2 𝐵
5 4 1
4 3 5 3 2

𝐶 𝐹 𝐸
6 3 0
tekući stanje otvorene liste u zatvorenu listu
čvor [čvor(roditelj,g+h)] se dodaje
A(-, 0+6)

9)
A(6) D(A,6+5), G(A,5+6) A(-)
D(11) G(A,5+6), F(D,9+3), H(D,9+4), C(D,10+6) D(A)

1
G(11) F(D,9+3), H(D,9+4), C(D,10+6) G(A)

20
F(12) B(F,12+1), H(D,9+4), C(D,10+6) F(D)
B(13) H(D,9+4), E(B,14+0), C(D,10+6) B(F)
H(13) B(H,11+1), E(B,14+0), C(D,10+6) H(D)

(
B(12) E(B,13+0), C(D,10+6) B(H)
E(13) C(D,10+6)
je
Na kraju primene algoritma, kada je čvor 𝐸 postao tekući čvor, konstruiše se traženi put (koristeći infor-
an
macije o roditeljma za čvorove iz zatvorene liste: 𝐴 − 𝐷 − 𝐻 − 𝐵 − 𝐸. Korišćena heuristika je dopustiva, pa je
pronadeni put optimalan.
izd

S druge strane, heuristika nije konzistentna jer važi 𝑐(𝐻, 𝐵) + ℎ(𝐵) = 2 + 1 < 4 = ℎ(𝐻) (primetimo da
vrednosti 𝑓 za čvorove koji postaju tekući nisu neopadajuće). Zato je nužno i za zatvorene čvorove proveravati
da li se put do njih može popraviti. To i jeste bio slučaj za čvor 𝐵: u koraku u kojem se 𝐻 briše iz zatvorene
liste, u nju se dodaje čvor 𝐵 jer je do njega pronaden bolji put (preko 𝐻) od ranije postojećeg. Ukoliko to ne bi
ko

bilo radeno, algoritam bi se ponašao na sledeći način:

5
ns

𝐴 𝐺
6 6
tro

6 4

𝐷 3 𝐻 2 𝐵
ek

5 4 1
4 3 5 3 2
El

𝐶 𝐹 𝐸
6 3 0
tekući stanje otvorene liste u zatvorenu listu
čvor [čvor(roditelj,g+h)] se dodaje
A(-, 0+6)
A(6) D(A,6+5), G(A,5+6) A(-)
D(11) G(A,5+6), F(D,9+3), H(D,9+4), C(D,10+6) D(A)
G(11) F(D,9+3), H(D,9+4), C(D,10+6) G(A)
F(12) B(F,12+1), H(D,9+4), C(D,10+6) F(D)
B(13) H(D,9+4), E(B,14+0), C(D,10+6) B(F)
H(13) E(B,14+0), C(D,10+6) H(D)
E(14) C(D,10+6)
Na kraju primene algoritma, kada je čvor 𝐸 postao tekući čvor, konstruiše se put: 𝐴 − 𝐷 − 𝐹 − 𝐵 − 𝐸. Ovo
jeste put od čvora 𝐴 do čvora 𝐸, ali nije najkraći mogući. Ovo ponašanje posledica je činjenice da funkcija ℎ
nije konzistentna: kada heuristika nije konzistentna, neophodno je proveravati i zatvorene čvorove.
3.3. Algoritam A* 36

6𝐴1

11 𝐷 11 𝐺
6𝐴1

11 𝐷 2 11 𝐺

6𝐴 16 𝐶 12 𝐹 13 𝐻
6𝐴1

9)
11 𝐷 2 11 𝐺 3

6𝐴 16 𝐶 12 𝐹 13 𝐻 6𝐴 13 𝐻

1
6𝐴1

20
11 𝐷 2 11 𝐺 3

6𝐴 16 𝐶 12 𝐹 4 13 𝐻 6𝐴 13 𝐻

(
12 𝐷 13 𝐻 13 𝐵
6𝐴1

11 𝐷 2
je 11 𝐺 3
an
6𝐴 16 𝐶 12 𝐹 4 13 𝐻 6𝐴 13 𝐻

12 𝐷 13 𝐻 13 𝐵 5
izd

𝐻𝐹 𝐸
6𝐴1

11 𝐷 2 11 𝐺 3
ko

6𝐴 16 𝐶 12 𝐹 4 13 𝐻 6 6𝐴 13 𝐻

12 𝐷 13 𝐻 12 𝐵 5 𝐺 𝐷 𝐹 𝐵
ns

𝐻𝐹𝐸
6𝐴1
tro

11 𝐷 2 11 𝐺 3

6𝐴 16 𝐶 12 𝐹 4 13 𝐻 6 6𝐴 13 𝐻
ek

12 𝐷 13 𝐻 12 𝐵 5 𝐺 𝐷 𝐹 𝐵7

𝐻𝐹𝐸 𝐻𝐹𝐸
El

6𝐴1

11 𝐷 2 11 𝐺 3

6𝐴 16 𝐶 12 𝐹 4 13 𝐻 6 6𝐴 13 𝐻

12 𝐷 13 𝐻 12 𝐵 5 𝐺 𝐷 𝐹 𝐵7

𝐻𝐹𝐸 𝐻𝐹𝐸 8

Slika 3.10: Stablo pretrage tokom primene algoritma A* na problem iz primera 3.5 (levo od čvora je zapisana
njegova 𝑓 vrednost, a desno redni broj u nizu tekućih čvorova)
37 3. Informisana pretraga

Ukoliko se za isti problem koristi konzistentna funkcija, rezultat će biti optimalan put od 𝐴 do 𝐸, a neće biti
potrebno proveravati jednom zatvorene čvorove. U narednom primeru koristi se konzistentna heuristika ℎ čija
se vrednost razlikuje u odnosu na prethodnu samo za čvor 𝐻 i daje optimalni put 𝐴 − 𝐷 − 𝐻 − 𝐵 − 𝐸.

𝐴 5 𝐺
6 6
6 4

𝐷 3 𝐻 2 𝐵
5 3 1
4 3 5 3 2

𝐶 𝐹 𝐸
6 3 0

9)
tekući stanje otvorene liste u zatvorenu listu
čvor [čvor(roditelj,g+h)] se dodaje

1
A(-, 0+6)

20
A(6) D(A,6+5), G(A,5+6) A(-)
D(11) G(A,5+6), H(D,9+3), F(D,9+3), C(D,10+6) D(A)

(
G(11) H(D,9+3), F(D,9+3), C(D,10+6) G(A)
H(12) B(H,11+1), F(D,9+3), C(D,10+6) H(D)
B(12)
F(12)
F(D,9+3), E(B,13+0), C(D,10+6)
E(B,13+0), C(D,10+6)
je B(H)
F(D)
an
E(13) C(D,10+6)
izd

Primer 3.6. U primeru pronalaženja najkraćih puteva izmedu gradova (primer 1.2), ako su poznata rastojanja
izmedu gradova vazdušnim putem, algoritam A* može kao heurističku funkciju ℎ(𝑛) da koristi vazdušno rasto-
janje od čvora 𝑛 do ciljnog čvora, kao i u primeru 3.1. Tabela na slici 3.11 ilustruje izvršavanje algoritma A*
na primeru puta Podgorica-Budimpešta. Nadeni put je Podgorica-Beograd-Budimpešta, za razliku od pohlepne
ko

pretrage koja pronalazi put Podgorica-Sarajevo-Beograd-Budimpešta.

Budimpešta
ns

340
tro

300 380
840
Zagreb 320
640
390410
370 560
ek

400 Beograd
640 590
290 290 Bukurešt
450
190
El

450 360
Sarajevo 430
230 280 300
320
170
350 240 Sofija
Podgorica 170
190
Skoplje
tekući stanje otvorene liste u zatvorenu
čvor [čvor(roditelj,g+h)] listu se
dodaje
Pg(-,0+560)
Pg Sa(Pg,230+410), Bg(Pg,450+320), Sk(Pg,350+640) Pg(-)
Sa Bg(Pg,450+320), Sk(Pg,350+640), Zg(Sa,630+300) Sa(Pg)
Bg Sk(Pg,350+640), Zg(Sa,630+300), Bud(Bg,830+0) Bg(Pg)
Bud Sk(Pg,350+640), Zg(Sa,630+300)

Slika 3.11: Graf koji opisuje problem puteva izmedu gradova.


3.3. Algoritam A* 38

5
1 2 3 4
5 6 11 7
9 10 8
13 14 15 12

4 4 6
1 2 3 4 1 2 3 4 1 2 3 4
5 6 11 7 5 6 11 7 5 6 11
9 10 8 12 9 10 8 9 10 8 7
13 14 15 13 14 15 12 13 14 15 12

Slika 3.12: Stablo pohlepne pretrage na primeru slagalice u kojem se polazno stanje nalazi na platou.

Primer 3.7. Slika 3.12 prikazuje stanje slagalice i tri moguća naslednika, koja imaju ocenu rastojanja istu

9)
kao i polazno stanje ili veću. Stoga, kako se polazno stanje nalazi na platou, pristup čiste pohlepne pretrage je
nemoćan već na početku.

1
Za isto polazno stanje, algoritam A* pronalazi rešenje od pet poteza – levo, gore, desno, dole, dole. Stablo

20
pretrage vršene algoritmom A* je prikazano na slici 3.13 i odgovara procesu pretrage u kojem se medu stanjima
naslednicima prvo razmatra pogrešan, ali po proceni rastojanja, jednako obećavajuć potez nadole.

(
3.3.2 Specijalni slučajevi primene
je
Obilasci grafa u dubinu i širinu mogu se smatrati specijalnim slučajevima algoritma A*.
an
Za obilazak grafa u dubinu, može se koristiti algoritam A* sa 𝑔(𝑛) = 0 i pogodno kreiranom funkcijom ℎ.
Na primer, neka je vrednost 𝐶 inicijalizovana na neku veoma veliku vrednost. Kad god se obraduje neki čvor,
vrednost 𝐶 se pridružuje kao vrednost funkcije ℎ svim njegovim susedima koji nisu posećeni ranije. Nakon svake
izd

dodele neka se smanjuje vrednost 𝐶 za jedan. Time će vrednost ℎ(𝑛) da bude veća za čvorove na koje se ranije
naišlo. Ovako definisana funkcija ℎ nije nužno dopustiva.
Za 𝑔(𝑛) = 0, algoritam A* predstavlja specijalnu varijantu pristupa Prvo najbolji, koja najpre obraduje
čvorove sa najboljom heurističkom vrednošću. Ova varijanta algoritma nije nužno optimalna.
ko

Dejkstrin algoritam, kao specijalni slučaj obilaska grafa u širinu, takode je specijalni slučaj algoritma A* u
kojem je ℎ(𝑛) = 0 za svaki čvor 𝑛. Ovakva funkcija ℎ je konzistentna i garantuje nalaženje optimalnog puta.
ns

Skup otvorenih čvorova širi se ravnomerno, slično koncentričnim krugovima oko polaznog čvora, baš kao kod
Dejkstrinog algoritma. S druge strane, sa boljom heuristikom, skup otvorenih čvorova će se brže širiti ka ciljnom
tro

čvoru.
Opšti algoritam A* često se primenjuje za pronalaženje puta na uniformnoj, kvadratnoj mreži čvorova (koja
odgovara, na primer, diskretizovanoj ili rasterizovanoj mapi). Tada on dobija specifičnu formu. Pretpostavimo
ek

da je mreža pravilna (sačinjena od kvadrata) i da ima pravougaonu formu. Dodatno, pretpostavljamo da neki
čvorovi (tj. neki kvadrati, neka polja mreže) nisu dostupni i da oni predstavljaju prepreke. Svako polje povezano
je sa svakim susednim poljem (osim sa preprekama), te ima (izuzev polja na rubu) četiri susedna polja (ali
El

neka od njih mogu biti prepreke i kao takve nedostupne). Svakom horizontalnom ili vertikalnom pokretu obično
se pridružuje (stvarna) cena 1. Funkcija heuristike ℎ može se zadati na različite načine. Kada se izračunava
vrednost ℎ, obično se, jednostavnosti i efikasnosti radi, ignorišu sve prepreke jer vrednost ℎ(𝑛) je procenjeno a
ne stvarno rastojanje, a ignorisanjem prepreka biće potcenjeno stvarno rastojanje (što upravo i jeste poželjan
uslov). Jedan način zadavanja heuristike ℎ je euklidsko rastojanje izmedu dva polja (𝑑((𝑥1 , 𝑦1 ), (𝑥2 , 𝑦2 )) =
(𝑥2 − 𝑥1 )2 + (𝑦2 − 𝑦1 )2 ). Ova funkcija je konzistentna i dopustiva (te obezbeduje optimalnost), ali je zahtevna
√︀

što se tiče vremena izračunavanja (što može biti kritično za mape sa milionima čvorova). Drugi primer funkcije
heuristike je Menhetn rastojanje u kojem se broji ukupan broj polja predenih horizontalno ili vertikalno da bi se
došlo od jednog do drugog polja (𝑑((𝑥1 , 𝑦1 ), (𝑥2 , 𝑦2 )) = |𝑥2 −𝑥1 |+|𝑦2 −𝑦1 |). Ova heuristika je dopustiva (jer nikad
ne precenjuje stvarno rastojanje), te garantuje pronalaženje optimalnog puta. Ukoliko su na mreži dozvoljeni
i dijagonalni potezi, onda se√svakom horizontalnom ili vertikalnom potezu obično pridružuje cena 1, a svakom
dijagonalnom potezu cena 2 ≈ 1.414 (ovakva cena odgovara euklidskom rastojanju izmedu središta polja;
zbog efikasnosti, ove vrednosti se obično množe nekom konstantom, na primer, 10, i zaokružuju na ceo broj). U
ovom slučaju, Menhetn rastojanje može da precenjuje rastojanje do ciljnog čvora, te nije dopustiva heuristika
i ne garantuje pronalaženje najkraćeg puta. No, ovo rastojanje u praksi često daje dobre rezultate i pronadeni
putevi su obično dovoljno dobri, čak i ako nisu najkraći. U slučaju da su dozvoljeni i dijagonalni potezi, kao
dopustiva heuristika može da se koristi Čebiševljevo rastojanje (𝑑((𝑥1 , 𝑦1 ), (𝑥2 , 𝑦2 )) = 𝑚𝑎𝑥(|𝑥2 − 𝑥1 |, |𝑦2 − 𝑦1 |)).
39 3. Informisana pretraga

0 + 5 (1)
1 2 3 4
5 6 11 7
9 10 8
13 14 15 12

1 + 4 (2) 1+4 (3) 1+6


1 2 3 4 1 2 3 4 1 2 3 4
5 6 11 7 5 6 11 7 5 6 11
9 10 8 12 9 10 8 9 10 8 7
13 14 15 13 14 15 12 13 14 15 12

2+5 2+5 2+3 (4) 2+5


1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
5 6 11 7 5 6 11 7 5 6 7 5 6 11 7
9 10 8 12 9 10 8 9 10 11 8 9 10 15 8

9)
13 14 15 13 14 15 12 13 14 15 12 13 14 12

3+4 3+2 (5) 3+4

1
1 2 3 4 1 2 3 4 1 2 4

20
5 6 7 5 6 7 5 6 3 7
9 10 11 8 9 10 11 8 9 10 11 8

(
13 14 15 12 13 14 15 12 13 14 15 12

4+3
1 2 3 1 2 3 4je
4 + 1 (6)
an
5 6 7 4 5 6 7 8
9 10 11 8 9 10 11
13 14 15 12 13 14 15 12
izd

5+2 5 + 0 (7)
1 2 3 4 1 2 3 4
5 6 7 8 5 6 7 8
ko

9 10 11 9 10 11 12
13 14 15 12 13 14 15
ns

Slika 3.13: Stablo pretrage vršene algoritmom A*, na primeru slagalice u kojem se polazno stanje nalazi na
platou. U prikazu stabla, medu naslednicima svakog stanja su samo stanja koja nisu već dodata u zatvorenu
tro

listu. U zagradama su navedeni redni brojevi pod kojim stanja postaju tekuća.
ek

I kada heuristika nije konzistentna, mogu da se ne ažuriraju (i otvaraju ponovo) zatvoreni čvorovi. I ovakav
pristup često daje dovoljno dobra i efikasna rešenja, iako ne nužno optimalna.
El

Primer 3.8. Vrednosti funkcija 𝑓 , 𝑔 i ℎ su napisane u svakom polju uniformne mreže: vrednost funkcije 𝑓
je zapisana gore-levo, vrednost funkcije 𝑔 dole-levo, a vrednost funkcije ℎ dole-desno. Vrednost funkcije 𝑓 za
svako polje je, kao i obično, zbir vrednosti funkcija 𝑔 i ℎ. Polazni čvor označen je zelenom, a ciljni crvenom
bojom. Dozvoljeni su horizontalni, vertikalni i dijagonalni potezi. Otvorena polja su označena tankim zelenim
kvadratima, a zatvorena debljim crvenim kvadratima u okviru polja. Strelice ukazuju na tekućeg roditelja polja.
Postupak je isti kao kod opšteg algoritma: u svakoj iteraciji bira se polje iz otvorene liste sa najmanjom
vrednošću funkcije 𝑓 . To, tekuće polje izbacuje se iz otvorene liste i dodaje u zatvorenu listu. Proveravaju se
sva susedna polja, ne razmatrajući polja koja su u zatvorenoj listi ili nisu dostupna. Ako susedno polje nije već
u otvorenoj listi, izračunavaju se vrednosti funkcija 𝑔, ℎ i 𝑓 za njega i označava se da je tekuće polje njegov
roditelj. Ako je susedno polje već u otvorenoj listi, proverava se da li je put preko tekućeg polja bolji, tj. proverava
se da li je vrednost funkcije 𝑔 za to susedno polje manja ako se do njega dolazi preko tekućeg polja. Ukoliko to
nije tačno, ne preduzima se ništa, a ako jeste, tekuće polje postaje novi roditelj tog susednog polja i njemu se
pridružuju nove vrednosti 𝑔 i 𝑓 .
Pretraga kreće od polaznog polja jer je na početku samo ono u otvorenoj listi. U poljima levo, desno, gore
i dole od polaznog polja, vrednost funkcije 𝑔 je 10. U dijagonalnim poljima vrednost funkcije 𝑔 je 14. Ove
vrednosti odgovaraju približnom euklidskom rastojanju (pomnoženom sa 10 i zaokruženom). Vrednosti funkcije
ℎ izračunavaju se na osnovu Menhetn rastojanja (pomnoženog sa 10) do ciljnog polja i zanemarujući prepreku.
3.3. Algoritam A* 40

𝑓
𝑔 ℎ
74 60 54 74 60 54
1460 1050 1440 1460 1050 1440
60 40 60 40
1050 1030 1050 1030
74 60 54 74 60 54
1460 1050 1440 1460 1050 1440

108 94 80 74
2880 2470 2060 2450
74 60 54 94 74 60 54
1460 1050 1440 2470 1460 1050 1440
60 40 80 60 40 82 68 82

9)
1050 1030 2060 1050 1030 7210 68 0 7210
74 60 54 94 74 60 54 74 68 88
1460 1050 1440 2470 1460 1050 1440 5420 5810 6820

1
88 74 108 94 80 74 74 74 74 102

20
2860 2450 2880 2470 2060 2450 3440 4430 5420 7230
108 94 88 88 88
3870 3460 3850 4840 5830

(
108 94 80 74
2880 2470 2060 2450
94 74 60 54 je
an
2470 1460 1050 1440
80 60 40 82 68 82
2060 1050 1030 7210 68 0 7210
izd

94 74 60 54 74 68 88
2470 1460 1050 1440 5420 5810 6820
108 94 80 74 74 74 74 102
2880 2470 2060 2450 3440 4430 5420 7230
108 94 88 88 88
ko

3870 3460 3850 4840 5830

Slika 3.14: Ilustracija rada algoritma A* na uniformnoj mreži


ns
tro

Polazno polje briše se iz otvorene liste i dodaje u zatvorenu listu. U otvorenoj listi je samo njegovih osam
susednih polja. Od svih njih, bira se ono sa najmanjom vrednošću funkcije 𝑓 (40), to je polje neposredno desno
od polaznog polja i ono će biti sledeće tekuće polje.
ek

Tekuće polje izbacuje se iz otvorene liste, dodaje se u zatvorenu listu i onda se proveravaju njegova susedna
polja (naravno, samo ona koja nisu u zatvorenoj listi i nisu prepreke). Preostala četiri polja su već u otvorenoj
El

listi, pa je potrebno proveriti da li put preko tekućeg čvora popravlja njihove trenutne ocene. Razmotrimo, na
primer, polje neposredno iznad tekućeg polja: vrednost funkcije 𝑔 za njega je 14. Ukoliko bi se do njega dolazilo
preko tekućeg polja, vrednost funkcije 𝑔 bila bi 20 (10 je cena od polaznog do tekućeg čvora i 10 je cena prelaska
od tekućeg polja). Dakle, na ovaj način se ne može popraviti vrednost funkcije 𝑔 u polju iznad i ona ostaje
nepromenjena.
Opisani postupak sprovodi se za sva četiri susedna polja i, u ovom slučaju, utvrduje se da ocena nijednog ne
može da se popravi. Time je obrada tekućeg polja završena i traži se novo tekuće polje. Od preostalih sedam
polja u otvorenoj listi bira se ono sa najmanjom vrednošću funkcije 𝑓 . Ukoliko postoji više takvih svejedno je
koji izabrati. Neka je, na primer, izabrano polje neposredno ispod prethodnog tekućeg polja.
Za tekuće polje neće se razmatrati susedna polja koja su u zatvorenoj listi kao i ona koja su nedostupna
(tj. prepreke). No, može se (iako to nije nužno i zavisi od konkretne primene) zabraniti ispitivanje polja koje je
desno-dole od tekućeg polja. Naime, može se smatrati da je dijagonalni potez od tekućeg do tog polja nemoguć zbog
prepreke koja se nalazi desno od tekućeg polja. Ukoliko se prihvati takvo ograničenje, ostaje još tri susedna polja
koja treba razmotriti. Dva polja ispod tekućeg polja nisu u otvorenoj listi, pa se dodaju zajedno sa izračunatim
vrednostima funkcija i informacijom da im je roditelj tekuće polje. Za polje levo od tekućeg polja se proverava
da li se može smanjiti vrednost funkcije 𝑔 (odgovor je — ne) i time je završena obrada tekućeg polja.
Opisani postupak se nastavlja dok ciljno polje ne postane tekuće.
41 3. Informisana pretraga

U konkretnom primeru, nakon nekoliko iteracija, vrednosti funkcija 𝑔 i 𝑓 , kao i roditeljsko polje promenili su
se za polje dva polja ispod polaznog polja. Ranije je ovo polje imalo vrednost funkcije 𝑔 jednaku 28 (i vrednost
funkcije 𝑓 jednaku 88) i roditeljsko polje je bilo gore-desno. Kasnije, ovo isto polje ima vrednost funkcije 𝑔
jednaku 20 (i vrednost funkcije 𝑓 jednaku 80), a roditeljsko polje je gore. Ova izmena dogodila se u nekoj
iteraciji u meduvremenu. U ovom slučaju ona ne utiče na pronadeni put, ali su ovakve izmene u opštem slučaju
veoma česte i utiču na konačno rešenje.
Kada tokom pretrage ciljno polje postane tekuće, traženi put od polaznog čvora se konstruiše jednostavno.
Kreće se od ciljnog čvora i prelazi na roditeljski sve dok se ne dode do polaznog čvora. Ovako odreden niz polja
u suporotnom poretku daje traženi put od polaznog do ciljnog polja.

3.3.3 Implementaciona pitanja


Algoritam A* se obično primenjuje u aplikacijama koje rade u realnom vremenu, te je neophodno da je
efikasno implementiran. Otvorena lista se često implementira kao binarni min-hip (kako bi se brzo dolazilo do
elementa sa najmanjom vrednošću funkcije 𝑓 ), a zatvorena lista kao heš tabela3 . Korišćenjem ovih funkcija,
operacije za dodavanje u i brisanje elemenata iz otvorene liste zahtevaju vreme 𝑂(log 𝑉 ), gde je 𝑉 broj čvorova

9)
grafa, a dodavanje čvora u zatvorenu listu i proveravanje da li je već u zatvorenoj listi zahteva vreme 𝑂(1).
Zahtevi za memorijskim prostorom su za algoritam A* često još veći problem nego vremenska složenost.

1
Ipak, ukoliko broj čvorova grafa nije preveliki, može da bude isplativo i statičko alociranje potrebnog prostora

20
(ili dinamičko alociranje većih blokova) koji onda može da se koristi u savezu sa min-hip strukturom, kako bi
se izbegle česte i skupe operacije dinamičkog alociranja (i dealociranja) za pojedinačne čvorove.

(
Potrebno je eliminisati račun sa decimalnim brojevima i koristiti samo celobrojnu aritmetiku. Ukoliko cene
imaju vrednosti koje nisu celobrojne (na primer, 1.414) potrebno ih je pomnožiti sa, na primer, 1000 i koristiti
samo zaokružene vrednosti.
je
Najgori slučaj za algoritam A* je kada ne postoji put izmedu polaznog i ciljnog čvora. U tu svrhu može se
an
implementirati brza provera da li uopšte postoji put izmedu dva čvora: dva čvora su povezana ako i samo ako
pripadaju povezanim delovima grafa. Ako se za svaki čvor može lako proveriti kom delu grafa pripada, onda je
i navedena provera jednostavna.
izd

Kada se algoritam A* primenjuje za pronalaženje puta na uniformnoj mreži, on daje korake u osam mogućih
smerova što kasnije često dovodi do neprirodnih puteva sačinjenih od segmenata sa jednim od osam nagiba.
Takve puteve je potrebno unaprediti omekšavanjem, tj. zameniti sličnim putevima koji izgledaju prirodnije.
ko

Pitanja i zadaci
ns

Pitanje 3.1. Kako se naziva algoritam pretrage koji uvek bira lokalno optimalne akcije?

Pitanje 3.2. Šta, umesto globalnog ekstremuma, pohlepna pretraga može vratiti kao rezultat?
tro

Pitanje 3.3. Šta je plato u problemima pretrage?


ek

Pitanje 3.4. Kako se zove oblast prostora pretrage u kojem ciljna funkcija ima konstantnu vrednost?

Pitanje 3.5. Čemu je jednaka vrednost 𝑓 (𝑛) koja se u algoritmu A* pridružuje čvoru 𝑛?
El

Pitanje 3.6. Šta, za razliku od Dejkstrinog algoritma, algoritam A* uzima u obzir?


Pitanje 3.7. Da li je algoritam A* opštiji od Dejkstrinog algoritma? Da li je Dejkstrin algoritam opštiji od
algoritma A*?

Pitanje 3.8. Kada se algoritam A* ponaša isto kao Dejkstrin algoritam?

Pitanje 3.9. Da li se tokom primene algoritma A*, može promeniti vrednost 𝑔(𝑛) za čvor 𝑛? Da li se tokom
primene algoritma A*, može promeniti vrednost ℎ(𝑛) za čvor 𝑛? Da li se tokom primene algoritma A*, može
promeniti vrednost 𝑓 (𝑛) za čvor 𝑛?

Pitanje 3.10. Kako se zove skup iz kojeg se u glavnoj petlji algoritma A* bira tekući čvor?

Pitanje 3.11. Kakva struktura se koristi za čuvanje vrednosti funkcije evaluacije u okviru algoritma A*?
Obrazložiti.

3 Heš tabela je struktura podataka koja povezuje vrednosti i ključeve. Ona omogućava efikasno nalaženje vrednosti na osnovu

ključa. To se postiže preslikavanjem ključa heš funkcijom u heš vrednost koja služi kao indeks niza na kojem se nalazi odgovarajuća
vrednost.
3.3. Algoritam A* 42

Pitanje 3.12. Da li je, na samom početku primene algoritma A*, lista zatvorenih čvorova prazna?
Pitanje 3.13. Koji čvor se, prilikom primene algoritma A*, prvi dodaje u listu otvorenih čvorova?
Pitanje 3.14. Kada se, u okviru algoritma A*, u listu zatvorenih čvorova dodaje novi element?
Pitanje 3.15. Tokom primene algoritma A*, ako se ispituje tekući čvor i naide na njegov susedni čvor 𝑣 koji
nije u zatvorenoj listi, ali jeste u otvorenoj listi, šta treba uraditi?
Pitanje 3.16. Da li je na kraju primene algoritma A* lista otvorenih čvorova nužno prazna?
Pitanje 3.17. Da li je na kraju primene algoritma A* lista zatvorenih čvorova nužno prazna?
Pitanje 3.18. Šta je uslov zaustavljanja za algoritam A*?
Pitanje 3.19. Za koje grafove je algoritam A* najpogodniji za primenu?
Pitanje 3.20. Kada kažemo da je funkcija heuristike ℎ u algoritmu A* dopustiva, a kada kažemo da je
konzistentna?

9)
Pitanje 3.21. Šta znači to da je algoritam A* potpun?

1
Pitanje 3.22. Pod kojim uslovom je algoritam A* potpun?

20
Pitanje 3.23. Pod kojim uslovom je algoritam A* optimalan (nalazi najkraći put)?

(
Pitanje 3.24. Ukoliko je 𝑓 * funkcija koja odgovara najkraćem putu izmedu dva čvora u grafu, koje čvorove
obraduje algoritam A*?
je
Pitanje 3.25. Kada je u algoritmu A* broj obradenih čvorova polinomski u odnosu na dužinu najkraćeg puta?
an
Pitanje 3.26. Kako se zove rastojanje izmedu dva čvora u kojem se broji ukupan broj polja predenih horizon-
talno ili vertikalno od prvog do drugog?
izd

Pitanje 3.27. Koliko je Mehnetn rastojanje izmedu donjeg levog i gornjeg desnog polja šahovske table?
Pitanje 3.28. Kada se algoritam A* primenjuje na uniformnoj mreži, koja funkcija se obično primenjuje
kao heuristika? Da li je ova heuristika dopustiva? Zašto se primenjuje ova heuristika, šta je njena ključna
ko

osobina?
Pitanje 3.29. Kada se algoritam A* primenjuje na uniformnoj mreži, šta se obično koristi kao cena puta do
ns

susednog čvora koji je desno, a šta do susednog čvora gore-desno?


tro

Zadatak 3.1. Data je tabla za igru kao na sledećoj slici. Potrebno je naći najjeftiniji put od polja A do polja
B pri čemu dijagonalno kretanje nije dozvoljeno. Cena prelaska sa belog na belo polje je 1, cena prelaska sa
belog na sivo polje je 4 i cena prelaska sa sivog na belo polje je takode 4. Crno polje nije dostupno. Prikazati
izvršavanje algoritma A* za ovaj problem. Za ocenu cene kretanja od nekog polja do cilja, koristiti Menhetn
ek

rastojanje od tog polja do cilja.


El

B
Zadatak 3.2. Potrebno je naći najjeftiniji put od grada A do grada E. Procenjene cene puta od različitih
gradova su (A,105), (B,100), (C,50), (D,20). Stvarne cene putovanja izmedu gradova su (A,B,20), (A,C,50),
(A,D,100), (B,C,20), (B,E,110), (C,D,30), (D,E,30). Izmedu ostalih gradova nema puteva. Da li je zadata
heuristika dopstiva? Da li je zadata heuristika konzistentna? Prikazati izvršavanje algoritma A* na ovom
problemu.
Zadatak 3.3. U datom grafu, algoritmom A* naći najkraći put od gornjeg levog do donjeg desnog čvora. Pri
tom, brojevi pored čvorova predstavljaju vrednosti heurističke procene cene puta preko tog čvora, dok brojevi
iznad lukova predstavljaju tačne cene prelaska od čvora do čvora.
2c 1 c1

2 3
c c
1 1 0
43 3. Informisana pretraga

Zadatak 3.4. U datom grafu, algoritmom A*, naći najkraći put od čvora A do čvora F. Podvučeni brojevi
predstavljaju vrednosti heurističke funkcije u čvorovima, a ostali cene prelaska preko grana.
𝐴2 2 𝐵2
2 2 2
2
6
𝐶1 𝐷1 𝐸1
6
6 2
𝐹0

Zadatak 3.5. Algoritmom A* naći put od čvora A do čvora E. Heuristička procena cene puta izmedu dva
čvora je broj grana koje je potrebno preći na tom putu. Stvarne cene su date pored grana.
𝐴 10 𝐵

8
1

9)
4
6
𝐶

1
1

20
𝐷 1 𝐸

Zadatak 3.6. Algoritmom A* naći put od čvora V3 do čvora V1. Heuristička procena cene puta izmedu dva

(
čvora je broj grana koje je potrebno preći na tom putu. Stvarne cene su date pored grana.

7
𝑉3 9 je 𝑉2
an
3
8 1
𝑉4 4
𝑉5
2
izd

1 5
𝑉0 𝑉1

Zadatak 3.7. Na datoj tabli primeniti algoritam A*. Kao heuristička mera rastojanja izmedu dva čvora
koristi se Menhetn rastojanje. S označava start, a C cilj. Stupanje na belo polje košta 2, na sivo 6, a crna
ko

polja su neprohodna.
S
ns

C
tro

Zadatak 3.8. Na datoj tabli primeniti algoritam A*. Kao heuristička mera rastojanja izmedu dva čvora
kojirsti se Menhetn rastojanje. S označava start, a C cilj. Stupanje na belo polje košta 1, na sivo 6, a crna
ek

polja su neprohodna.
C
El

S
Zadatak 3.9. Pera peca na mostu 𝐴 bez mnogo uspeha. Od druga koji je na mostu 𝐵 je čuo da je tamo
ulov veliki. Pera procenjuje vreme u minutima koje mu je potrebno da autom doe. do mosta 𝐵 kao najmanji
broj ostrva preko kojih mora da pree.. Vremena koja su mu potrebna za prelazak preko svakog od ostrva su na
priloženoj slici zapisana na tim ostrvima, ali ih Pera ne zna. Kako bi zapamtio najkraći put i za ubuduće,
Pera se odlučuje da ga nae. algoritmom A* . Opisati Perinu pretragu.

1 𝐴 1 1

3 𝐵 1
El
ek
tro
ns
ko
izd
an
je
(20
19)
Glava 4

Igranje strateških igara

9)
Automatsko igranje strateških igara kao što je šah davnašnji je izazov. Još početkom dvadesetog veka
španski pronalazač Tores Kevedo (Torres y Quevedo) konstruisao je (i prikazao na svetskoj izložbi u Parizu

1
1914. godine) elektro-mehanički uredaj El Ajedrecista („ Šahista“) koji je, kao beli, igrao šahovsku završnicu
„kralj i top protiv kralja“ i iz svake pozicije nepogrešivo pobedivao (iako ne u najmanjem mogućem broju

20
poteza). Opšte razmatranje teorije igara započeo je Džon fon Nojman (John von Neumann) postavljanjem
opšteg problema (1928. godine): Igrači 𝑆1 , 𝑆2 , . . . , 𝑆𝑛 igraju datu igru Γ. Kako treba da igra igrač 𝑆𝑚 da

(
bi ostvario najbolji mogući rezultat? Već od polovine dvadesetog veka, problemi ove vrste bili su važan i često
pokretački, motivišući izazov za oblast u nastajanju – veštačku inteligenciju. Neki od najvećih (ili makar najšire
je
poznatih) uspeha veštačke inteligencije ostvareni su upravo na polju strateških igara: računari su već odavno
pobedili svetske šampione u igrama bekgemon, dame i šah (tada važeći svetski šampion Gari Kasparov partiju
an
šaha izgubio je od računara 1997. godine), a početkom 2016. godine i u igri go. Iako su ovi programi veoma
uspešni, njihovi principi odlučivanja kvalitativno (po pitanjima apstrahovanja, analogija, pravljenja planova
izd

i sl.) i dalje su veoma različiti od ljudskih. Većina najznačajnijih programa za igranje igara zasnovana je
na efikasnim algoritmima pretrage, a odnedavno (na primer, za igru go, pa i šah) i na naprednim tehnikama
mašinskog učenja.
U nastavku neće biti upuštanja u analize pojedinačnih igara, već će biti opisani opšti pojmovi i algoritmi
ko

koji mogu da se koriste za širok spektar strateških igara. Preciznije, biće razmatrani algoritmi za igre nulte
sume za dva igrača bez nepoznatih informacija, dakle — igre kod kojih igrači, grubo rečeno, imaju analogne,
simetrične mogućnosti i svaki igrač zna koje poteze na raspolaganju ima protivnik. U ovu kategoriju spadaju,
ns

na primer, igre šah, dame, go, reversi, iks-oks, četiri u nizu, mankala, a ne spadaju, na primer, igre u kojima
igrač ne zna karte koje ima protivnik, nepoznati broj koji treba pogoditi itd.
tro

4.1 Šenonove opšte strategije za igranje igara


ek

Moderna istorija programiranja strateških igara počinje člankom Programming a digital computer for playing
Chess Kloda Šenona (Claude Shannon) iz 1950. godine. U tom tekstu, Šenon je opisao dve opšte strategije za
El

izbor poteza:

A: Minimaks procedurom vrši se pretraživanje stabla igre sa odredenom funkcijom evaluacije i ocenjivanje
legalnih poteza; bira se potez sa najboljom ocenom (videti poglavlje 4.4.2).

B: Potez se bira na osnovu trenutne pozicije/situacije u igri i na osnovu odgovarajuće, unapred pripremljene
tabele.

Pristup zasnovan na Šenonovoj A strategiji naziva se „sistematskim“ ili „dubinskim pretraživanjem“ a i pri-
stupom „gruba sila plus jednostavna vrednosna funkcija“. Ako bi se pretraživanje stabla igre vršilo do završnih
stanja, efektivno bi bili ispitivani svi mogući tokovi nastavka partije i mogao bi da bude izabran zaista najbolji
potez. Medutim, to (a ponekad čak ni pretraživanje stabla igre do dubine od svega nekoliko poteza) za netrivi-
jalne igre nije praktično ostvarivo. Zbog toga, efikasna primena Šenonove A strategije svodi se na pretraživanje
stabla igre do relativno male dubine algoritmima koji su usmereni heuristikama i uz dobro osmišljenu, ali jed-
nostavnu funkciju evaluacije za ocenu nezavršnih pozicija igre (umesto jednostavne „trovrednosne“ funkcije za
ocenu završnih pozicija). Ovakvim pristupom gubi se svojstvo po kojem se pretraživanjem dobija zaista naj-
bolji potez, a obim pretraživanja i različitih izračunavanja ostaje, najčešće, i dalje veoma veliki. Precizni opisi
pojmova stabla igre, funkcije evaluacije, algoritama minimaks tipa i drugih dati su u poglavlju 4.4.

45
4.2. Legalni potezi i stablo igre 46

Šenonova strategija B tipa zasniva se na jednostavnoj tabeli („baza završnice“) koja zamenjuje izračunavanje
u toku izvršavanja. U kontekstu igara, ovaj pristup zahteva postojanje unapred pripremljene tabele sa dve
kolone: u jednoj su moguće pozicije/stanja igre, a u drugoj optimalni potezi. Jedna od „klasičnih“ primera ovog
pristupa je program za igranje šahovske završnice kralj i kraljica protiv kralja i topa koji je 1977. godine kreirao
Kenet Tompson (Kenneth Thompson, tvorac operativnog sistema UNIX). Tabela koju je koristio program
sadržavala je sve moguće pozicije za oba igrača i optimalne poteze za sve te pozicije (pri čemu se pod optimalnim
potezom za igrača koji ima kralja i kraljicu smatra potez koji vodi pobedi u najmanjem broju poteza, a za slabijeg
– potez koji maksimalno odlaže poraz). Tabela je imala oko tri miliona vrsta i program koji se na njoj zasnivao
bio je, naravno, nepogrešiv. Tabela je kreirana korišćenjem retrogradne analize: za optimalnu igru igrača koji
ima kraljicu, najpre se prepoznaju i označavaju pozicije u kojima je protivnik matiran (mat u 0 poteza); dalje,
prepoznaje se i označava svaka pozicija i u tabelu se upisuje odgovarajući potez nakon kojeg, ma šta da odigra
protivnik, postoji mat u najviše 𝑑 poteza (za takve pozicije važi da postoji mat u najviše 𝑑+1 poteza). Nedavno
su (2012. godine), korišćenjem istog pristupa, na moskovskom univerzitetu kreirane Lomonosov tabele optimalih
poteza za sve šahovske završnice sa najviše sedam figura na tabli. Tabela sadrži više od 500 triliona pozicija
(pri čemu se u tabeli ne čuvaju mnoge pozicije koje se mogu dobiti od drugih simetrijama i rotacijama). U
ovom pristupu, znanje o igri ne nalazi se niti u samom programu koji igra, niti u tabeli, već u programu koji je

9)
tabelu generisao.
Šenonova strategija A u procesu izbora poteza zahteva malo memorije i mnogo izračunavanja, a strate-

1
gija B malo izračunavanja i mnogo memorije. Na toj skali odnosa količine podataka koji se koriste i obima

20
izračunavanja, čovekov način zaključivanja je izmedu ovih krajnosti i bitno se od njih razlikuje po svojoj prirodi.
Upravo priroda čovekovog načina razmišljanja i želja da se on oponaša, vodi ka novim algoritmima za igranje
strateških igara.

(
4.2 Legalni potezi i stablo igre je
an
Pravila konkretne igre definišu legalna stanja (tj. legalne pozicije) i legalne poteze za svaku legalnu poziciju.
Za svaku legalnu poziciju može se efektivno odrediti skup legalnih poteza. Neke legalne pozicije mogu biti
početne pozicije a neke završne. U nekim igrama, legalni potez može biti i dalje, u situaciji kada igrač koji je na
izd

redu nema na raspolaganju legalnih poteza i preskače svoj red (takve situacije ne postoje u šahu, ali postoje,
na primer, u igri reversi).1
Prostor stanja igre može se opisati grafom čiji su čvorovi legalne pozicije, a grane legalni potezi. Taj graf je
usmeren jer nije nužno da postoje potezi u oba smera koji povezuju dva stanja (na primer, u šahu pešak može da
ko

ide samo napred, ne i nazad). Stablo igre je stablo u čijim su čvorovima legalne pozicije i za svaki čvor njegovi
neposredni potomci su sve pozicije do kojih se iz tog čvora može doći legalnim potezom. Od korena do bilo
ns

kog lista naizmenično se, dakle, smenjuju grane koje odgovaraju potezima prvog i drugog igrača. Kompletno
stablo igre je stablo igre u čijem je korenu početna pozicija igre, a svi listovi su završne pozicije igre i svakom
tro

listu pridružen je ishod – pobeda prvog igrača, nerešeno ili pobeda drugog igrača. Kompletno stablo igre ima
onoliko listova koliko data igra ima različitih mogućih tokova. Taj broj je kod većine igara (čak i kod veoma
jednostavnih) ogroman i onemogućava kompletno pretraživanje u cilju izbora poteza. Na slici 4.1 ilustrovan je
deo kompletnog stabla igre za igru iks-oks.
ek

U procesu traženja poteza, stablo pretrage se ne kreira eksplicitno, kao struktura, već samo implicitno
procesom obilaska pozicija.
El

4.3 Otvaranje
U strateškim igrama, umesto da se na samom početku igre program upusti u proces pretrage, obično se
koriste knjige otvaranja (opening book) — koje su zasnovane na ljudskom iskustvu i koje sadrže informacije o
poznatim i kvalitetnim potezima koji se često javljaju u otvaranju. Knjiga otvaranja koristi se, ne zahtevajući
mnogo vremena za izvršavanje, dok god je to moguće (u šahu, na primer, obično za prvih desetak poteza) sa
očekivanjem da se dode do bolje pozicije nego da je program koristio druga znanja. Kada više nije moguće
koristiti knjigu otvaranja, prelazi se na druge strategije izbora poteza.
Ukoliko protivnik odigra neki neuobičajen potez koji ne postoji u knjizi otvaranja, program je primoran da
promeni pristup i da počne da vrši pretragu nastavka stabla igre. Takav neuobičajeni potez može, medutim,
često da bude rizičniji za igrača koji ga je odigrao nego za program koji u daljem toku može da kompenzuje
rano napuštanje knjige otvaranja i iskoristi slabosti protivnika.
Ukoliko za neku poziciju postoji u biblioteci više mogućih nastavaka, izbor može da se načini po odredenim
verovatnoćama koje mogu da se koriguju tokom rada programa ili i prema dužini koja u stablu sledi iza odredenog
1 U implementacijama, struktura koja opisuje potez treba da sadrži informacije dovoljne da bi potez bio odigran, ali i da bi

mogao da bude vraćen, tj. da iz dobijene pozicije može da se rekonstruiše polazna pozicija.
47 4. Igranje strateških igara

x
... ... ...
x x

o
... ... ... ... ... ... ... ... ...
xo x o x

o
. ................ . ... ... ...
x x

o o oo
o ...
xox x x x x

o o xo o
x x ... o ... ... ... ... ... ... ...
xox xox xox xxx

9)
završno stanje
. ................ . . ....... .

1
20
Slika 4.1: Deo stabla igre za igru iks-oks

(
poteza (kao težnja da se što duže ostane u poznatim varijantama). Pomenuti pristup može da se realizuje, na
je
primer, na sledeći način: neka je, na osnovu biblioteke otvaranja, u nekom trenutku na raspolaganju 𝑛 poteza.
an
Svakom od njih neka je pridružena ocena 𝑚𝑖 (1 ≤ 𝑖 ≤ 𝑛) na osnovu empirijske procene i na osnovu dubine
biblioteke partija koja sledi za 𝑖-tim potezom (te ocene predstavljaju karakterističan, dodatni deo biblioteke
partija). Ukoliko empirijske procene govore da je 𝑖-ti potez bolji, to je ocena 𝑚𝑖 veća. Takode, ocena 𝑚𝑖 je
izd

veća ukoliko je veća dubina biblioteke partija koja sledi za 𝑖-tim potezom. Tada se, u toj poziciji, 𝑖-ti potez
(1 ≤ 𝑖 ≤ 𝑛) bira sa verovatnoćom
𝑚𝑖
𝑝𝑖 = ∑︀𝑛 .
𝑗=1 𝑚𝑗
ko

Na taj način izbegava se determinističko ponašanje programa u otvaranju: bolji potezi (u smislu neke procene)
se biraju češće, ali ne uvek. Ocene 𝑚𝑖 mogu se tokom vremena i korigovati.
ns

Biblioteka otvaranja može biti statička (sadržati odreden, konačan broj varijanti u svakom potezu i infor-
macije o potezima samo do odredene dubine) ili se proširivati tokom samog izvršavanja programa.
tro

4.4 Središnjica
ek

Savremeni programi za strateške igre u središnjici najčešće koriste dubinsko pretraživanje (sa jednostavnom
funkcijom evaluacije) stabla igre koje odgovara Šenonovoj A strategiji. Kod većine programa za kompleksnije
strateške igre, pored kvalitetne funkcije evaluacije, od ključne važnosti su algoritmi koji se koriste za pretraživanje
El

stabla igre. Pri pretraživanju stabla igre u središnjici, funkcija evaluacije se izračunava samo za čvorove na
nekoj odredenoj dubini, a ostalim čvorovima se pozicija ocenjuje na osnovu ocena nekih od čvorova-potomaka.
Pretraživanje stabla igre odredeno je funkcijom evaluacije, algoritmom pretraživanja, heuristikama, dubinom
pretraživanja, itd.

4.4.1 Statička ocena pozicije i funkcija evaluacije


U cilju odredivanja dobrog (ne nužno zaista najboljeg) poteza za igrača koji je na potezu, čvorovima stabla
igre mogu se dodeliti neke ocene, na osnovu koje čvorovi tj. pozicije i potezi mogu da se porede po kvalitetu.
Funkcija evaluacije (eng. evaluation function) ili vrednosna funkcija je statička ocena koja se, u skladu sa
specifičnim karakteristikama konkretne igre, dodeljuje poziciji pri čemu se ne ispituju ni pozicije iz kojih se
došlo u tu poziciju niti mogući nastavci. Gotovo sve znanje o igri koje se koristi u središnjici partije sadržano
je u funkciji evaluacije i u najvećoj meri od nje zavisi kvalitet igre programa. Potrebno je da sadrži što više
relevantnih informacija, ali s druge strane, kako se izračunava mnogo puta, potrebno je da bude što jednostavnija.
Funkcija evaluacije obično preslikava skup svih mogućih pozicija u simetričan segment [−𝑀, 𝑀 ]:

ℱ : 𝒫 ↦→ [−𝑀, 𝑀 ]
4.4. Središnjica 48

Tada se vrednost 𝑀 dodeljuje samo završnim čvorovima u kojima je pobednik prvi igrač, a vrednost −𝑀 samo
završnim čvorovima u kojima je pobednik drugi igrač.2
U igrama nulte sume, smisao funkcije evaluacije za protivnike u igri za dva igrača je suprotan — ono što
je najbolje stanje za jednog igrača najlošije je za drugog i obratno. Dakle, funkcija evaluacije za simetrične
pozicije (za zamenjene uloge igrača) treba da daje vrednosti koje se razlikuju samo po znaku.
Najjednostavnija je tzv. trovrednosna funkcija: ona se primenjuje samo na završne pozicije igre i ima samo
tri različite vrednosti – za pobedu prvog, za pobedu drugog igrača i za nerešen ishod (na primer, 1, -1 i 0).
Trovrednosna funkcija zahteva pretraživanje stabla igre do završnih čvorova, pa je, zbog potencijalno velike
dubine pretraživanja, ova funkcija za većinu igara praktično neupotrebljiva.
U šahu funkcija evaluacije obično uključuje „materijal“ (tj. vrednost ukupnog materijala), pokretljivost figura,
pešačku strukturu, rokade i slično. Beloj kraljici, na primer, može da bude pridružena vrednost 100, topu 50,
lovcu i konju 30, pešaku 10, dok mat belog nosi ocenu 1000 (i sve suprotno za crnog igrača).
Ocene završnih pozicija mogu se korigovati dodavanjem (odnosno oduzimanjem) dubine odgovarajućeg čvora
u pretraživanju, kako bi se od svih varijanti koje vode u pobedu izabrala ona koja vodi pobedi u najmanjem
broju koraka (odnosno kako bi se, ukoliko je poraz neizbežan, taj poraz maksimalno odložio).

9)
5

1
𝑚𝑎𝑥

20
5 1 −2

(
je 𝑚𝑖𝑛
an
5 7 1 −2 2

𝑚𝑎𝑥
izd

5 7 1 1 −2 2 −1 5 7 1 1 −2 2 −1
ko

Slika 4.2: Stablo pretrage sa ilustracijom algoritma Minimax


ns
tro

4.4.2 Algoritam minimaks


Algoritam minimaks je ključni element Šenonove A strategije i on je u osnovi skoro svih algoritama za
izbor poteza pretraživanjem stabla igre. Minimaks algoritam pretraživanjem stabla igre za igrača koji je na
ek

potezu odreduje najbolji mogući potez u datoj situaciji — pri čemu se pod „najboljim“ podrazumeva najbolji za
zadati čvor, zadatu dubinu pretraživanja i za izabranu funkciju evaluacije. Pretpostavimo da funkcija evaluacije
za igrača koji je na potezu ima pozitivan smisao (tj. bolji je potez ako obezbeduje veću vrednost funkcije) i,
El

jednostavnosti radi, da se pretraživanje vrši do fiksne dubine stabla. Funkcijom evaluacije ocene se dodeljuju
samo najdubljim čvorovima u pretraživanju (pretraživanje se vrši do fiksne dubine i najdublji čvorovi ne moraju
da predstavljaju završna stanja igre); dalji postupak je rekurzivan: kao ocena čvoru dodeljuje se minimum
ocena čvorova-potomaka, ako je u tom čvoru na potezu protivnik, a kao maksimum ocena čvorova potomaka,
u suprotnom (slika 4.2). Ocena početnog čvora je maksimum ocena čvorova–neposrednih potomaka i rezultat
je potez kojem odgovara taj maksimim. Dakle, algoritam karakteriše minimizovanje ocene kada je na potezu
protivnik i maksimizovanje ocene kada je na potezu sâm igrač, pa otuda i ime algoritma. Opis algoritma dat je
na slici 4.3.

Primer 4.1. Na slici 4.4 prikazan je primer primene algoritma na šah (pojednostavljenu verziju na tabli 4x4).
Kao najbolji potez za koreni čvor bira se prvi potez naveden u sledećem redu – potez koji vodi u mat u dva poteza.

Algoritam minimaks (kao i ostali algoritmi zasnovani na minimaksingu) vrši izbor poteza samo na osnovu
vrednosti koje su pridružene čvorovima na maksimalnoj dubini pretraživanja. To znači da se ne ispituju potezi
koji dalje slede (a to ispitivanje često bi promenilo odluku o izabranom potezu). Dodatno, kada je neki potez
odabran na osnovu čvorova na nekoj dubini i odigran, informacija o tome se ne koristi u procesu izbora narednog
2 Funkcije evaluacije obično se, efikasnosti radi, implementiraju kao celobrojne funkcije.
49 4. Igranje strateških igara

Algoritam: Minimax

Ulaz: funkcija evaluacije 𝑓 , pozicija


Izlaz: potez
1: 𝑣 := 𝑀 𝑎𝑥(𝑓, pozicija)
2: vrati potez kojem odgovara vrednost 𝑣

Algoritam: Max

Ulaz: funkcija evaluacije 𝑓 , pozicija


Izlaz: vrednost pozicije
1: ako je pozicija završna ili na najvećoj dozvoljenoj dubini onda
2: vrati 𝑓 (pozicija)

9)
3: 𝑣 := −∞

1
4: za svaku poziciju 𝑠 do koje se može doći u jednom potezu radi

20
5: ako 𝑀 𝑖𝑛(𝑓, 𝑠) > 𝑣 onda
6: 𝑣 := 𝑀 𝑖𝑛(𝑓, 𝑠)

(
7: vrati 𝑣

Algoritam: Min je
an
Ulaz: funkcija evaluacije 𝑓 , pozicija
Izlaz: vrednost pozicije
izd

1: ako je pozicija završna ili na najvećoj dozvoljenoj dubini onda


2: vrati 𝑓 (pozicija)
3: 𝑣 := +∞
ko

4: za svaku poziciju 𝑠 do koje se može doći u jednom potezu radi


5: ako 𝑀 𝑎𝑥(𝑓, 𝑠) < 𝑣 onda
ns

6: 𝑣 := 𝑀 𝑎𝑥(𝑓, 𝑠)
7: vrati 𝑣
tro

Slika 4.3: Algoritam Minimax


ek

poteza (na primer, ako je u šahu neki potez izabran jer odgovara čvoru dubine tri u kojem se protivniku daje
El

šah, u sledećem potezu pretraživanje kreće iznova i često neće biti izabran potez koji vodi do šaha protivniku,
sada u dva poteza). Dakle, pri pretraživanju stabla igre razmatraju se („vide se“) samo čvorovi na nekoj fiksnoj
dubini – ni oni posle, ni oni pre njih. Za ovakvo ponašanje često se kaže da ima efekat horizonta (eng. horizon
effect).

4.4.3 Algoritam Alfa-beta


Algoritam Alfa-beta (ili 𝛼−𝛽) otkriven je sredinom dvadesetog veka nezavisno od strane nekoliko istraživača.
Semjuel sa jedne strane i Ričards, Hart, Levin i Edvards sa druge, formulisali su nezavisno ranu verziju algoritma
početkom pedesetih godina. Makarti je slične ideje predstavio 1956. godine, tokom znamenite konferencije u
Darmutu. Brudno je, ponovo nezavisno, otkrio Alfa-beta algoritam i objavio ga 1963. godine.
Alfa-beta algoritam zasnovan je na tzv. alfa i beta odsecanju stabla igre i predstavlja heuristikama ubrzan
algoritam minimaks. Osnovni postupak ocenjivanja čvorova je minimaks tipa: funkcijom evaluacije ocenjuju se
samo čvorovi na nekoj odabranoj dubini, a zatim se rekurzivnim postupkom (minimaksingom) ocenjuju čvorovi
prethodnici. Postupak „alfa odsecanje“ biće opisan pretpostavljajući da funkcija evaluacije za igrača koji je na
potezu ima pozitivan smisao (bolje su veće ocene).
Neka je u tekućem čvoru na potezu igrač 𝐴 koji traži najbolji potez (za njega je bolji potez onaj sa boljom
4.4. Središnjica 50

1000
4
0S0Z
3
Z0J0
2
0Z0Z
1
j0Z0
a b c d
/ ... | ... \
1000 50 0
4
0S0Z 4
0S0J 4
0Z0Z
3
Z0Z0 3
Z0Z0 3
Z0J0
2
0ZKZ 2
0Z0Z 2
0Z0Z
1
j0Z0 1
j0Z0 1
jRZ0
a b c d a b c d a b c d
| | | ... \
1000 50 0
4
0S0Z 4
0S0J 4
0Z0Z

9)
3
Z0Z0 3
Z0Z0 3
Z0J0
2
kZKZ 2
kZ0Z 2
0Z0Z

1
1
Z0Z0 1
Z0Z0 1
ZkZ0
a b c d a b c d a b c d

20
/ ... | ... \ / ... \ / ... \
1000 50 50 50 50 0 0

(
4
RZ0Z 4
0Z0S 4
0S0Z 4
0S0Z 4
RZ0J 4
0Z0Z 4
0Z0Z
3
Z0Z0 3
Z0Z0 3
Z0Z0 3
Z0ZK 3
Z0Z0 3
ZKZ0 3
Z0ZK
2
1
kZKZ
Z0Z0
2
1
kZKZ
Z0Z0
2
1
kZ0J
Z0Z0
2
1
kZ0Z
Z0Z0
2
1
kZ0Z
Z0Z0
2
1
0Z0Z
ZkZ0
je 2
1
0Z0Z
ZkZ0
an
a b c d a b c d a b c d a b c d a b c d a b c d a b c d

Slika 4.4: Ilustracija rada algoritma Minimax


izd

ocenom); neka je ocenjeno 𝑛 od 𝑚 (𝑛 < 𝑚) njegovih legalnih poteza i neka su dobijene ocene 𝑤1 , 𝑤2 ... 𝑤𝑛 i
neka je 𝑤𝑘 najveća od njih. Razmatramo 𝑛 + 1-i legalni potez (slika 4.5); nakon tog poteza protivnik (igrač 𝐵)
ko

ima više mogućnosti i igrač 𝐴 traži onu sa najmanjom ocenom; za svaku ocenu 𝑤𝑖′ legalnih poteza u tom čvoru,
svakako važi da je veća ili jednaka zajedničkom minimumu 𝑤𝑚𝑖𝑛 ′
(𝑤𝑖′ ≥ 𝑤𝑚𝑖𝑛

) koji predstavlja ocenu čvora;
ns

dakle, ako se u tom pretraživanju dode do ocene 𝑤𝑗 koja je manja ili jednaka oceni 𝑤𝑘 (𝑤𝑗′ ≤ 𝑤𝑘 ) sigurno je

da je i ocena čvora manja ili jednaka oceni 𝑤𝑘 (𝑤𝑚𝑖𝑛 ′


≤ 𝑤𝑘 ). S obzirom na to da se u početnom čvoru traži
maksimum ocena mogućih poteza, to znači da taj čvor (sa ocenom 𝑤𝑚𝑖𝑛′
≤ 𝑤𝑘 ) ne utiče na ocenu početnog čvora
tro

(jer je 𝑤𝑚𝑖𝑛 ≤ 𝑤𝑘 ≤ 𝑤𝑚𝑎𝑥 ), pa se dalje pretraživanje poteza protivnika u tekućem čvoru može prekinuti bez

uticaja na rezultat pretraživanja — može da se izvrši „odsecanje stabla“ (slika 4.5). „Beta odsecanje“ potpuno
je analogno i primenjuje se na čvorove u kojima je na potezu protivnik. Naravno, s obzirom na smisao funkcije
ek

evaluacije, maksimumi pominjani u „alfa odsecanju“ zamenjuju se minimumima i obratno (slika 4.5). Algoritam
Alfa-beta prikazan je na slici 4.6.
El

Kako je stablo igre obično ogromno, ubrzavanje minimaks algoritma heuristikama „alfa-odsecanje“ i „beta-
odsecanje“ ima izuzetan značaj. Posebno je važna činjenica da i Alfa-beta algoritam nalazi zaista najbolji mogući
potez za zadati čvor i zadatu dubinu pretraživanja, što znači da heuristike koje se primenjuju ne narušavaju tu
osobinu minimaks algoritma.

Primer 4.2. Na slici 4.7 prikazan je primer primene algoritma Alfa-beta na šah (pojednostavljenu verziju na
tabli 4x4). Sa 𝑋 su označeni delovi stabla igre kod kojih je došlo do odsecanja

Ukoliko se u svakom čvoru potezi ispituju od najlošijeg ka najboljem (u smislu tekućeg čvora), tada nema
nijednog alfa ili beta odsecanja, pa se Alfa-beta algoritam svodi na algoritam minimaks. S druge strane, najviše
alfa i beta odsecanja ima kada se najpre ispituju potezi najbolji u smislu tekućeg čvora (za korišćenu funkciju
evaluacije i za zadatu dubinu) i tada algoritam Alfa-beta daje najbolji efekat (tj. ispituje najmanji broj čvorova
stabla). Naravno, nije moguće unapred znati koji je potez najbolji u datom čvoru, ali se i dobrim procenama
(izborom jednog od boljih poteza) postižu dobri efekti. Upravo na toj ideji zasnivaju se i neke varijacije Alfa-beta
algoritma.
51 4. Igranje strateških igara

𝑤𝑛+1 < 𝑤𝑘 −2 < 5


5

𝑚𝑎𝑥
𝑤𝑘 𝑤𝑛 𝑤𝑛+1 5 1 −2
𝛼 odsecanje 7>5 𝛼 odsecanje
𝑚𝑖𝑛
𝑤𝑗′ 5 7 1 −2 2
𝛽 odsecanje
𝑚𝑎𝑥
5 7 1 1 −2 2 −1

9)
Slika 4.5: Stablo pretrage sa ilustracijom algoritma Alfa-beta

1
20
4.4.4 Heuristika kiler
Heuristika kiler (eng. killer) ima za cilj da se u mnogim čvorovima najpre razmatra najbolji (ili makar veoma

(
dobar) potez, kako bi bilo što više alfa i beta odsecanja. Ova heuristika je opšta i ne koristi specifična znanja o
igri.
je
Neka se u pretraživanju stabla Alfa-beta algoritmom prvi put ocenjuje neki čvor na dubini 𝑑 (𝑑 ≥ 1) i neka
an
je 𝑊 najbolji pronadeni potez u smislu tog čvora. Taj potez zvaćemo kiler potezom za dubinu 𝑑. U svakom
sledećem čvoru na dubini 𝑑, ispitivanje poteza počinjemo sa kiler potezom za tu dubinu. Ukoliko se pokaže da je
za taj čvor bolji neki drugi potez (𝑊 ′ ), onda taj potez postaje kiler potez za dubinu 𝑑. Ukoliko se pretraživanje
izd

stabla igre vrši do dubine 𝑑𝑚𝑎𝑥 , opisana heuristika primenjuje se za sve dubine 𝑑 takve da je 1 ≤ 𝑑 ≤ 𝑑𝑚𝑎𝑥 − 1.
Smisao kiler heuristike je sledeći: ukoliko je u jednoj grani stabla na dubini 𝑑 najbolji potez 𝑊 , ima izgleda
da je on najbolji (ako je legalan) i u drugim granama stabla na istoj dubini. Ilustrujmo to na primeru šaha:
neka igraču koji je na redu preti mat u sledećem potezu i neka nijedan njegov potez ne može da otkloni tu
ko

pretnju. Pretraživanjem stabla, u čvoru u kojem je na potezu protivnik, otkriva se matni potez i on postaje
kiler potez (za dubinu 1). Pri daljem pretraživanju stabla, na dubini 1 najpre se ispituje taj potez i kako on vodi
ns

pobedi protivnika, alfa odsecanje čini nepotrebnim dalje ispitivanje poteza u tom čvoru. Time se broj čvorova
stabla koje u ovakvoj situaciji treba ispitati drastično smanjuje.
tro

Alfa-beta algoritam proširen kiler heuristikom zovemo Alfa-beta/kiler algoritam. Primenom kiler heuristike
ne menja se rezultat Alfa-beta algoritma (za istu funkciju evaluacije i istu dubinu pretraživanja) — tj. dobija se
potez sa istom ocenom (ne nužno i isti potez) kao primenom algoritama Alfa-beta ili minimaks, ali najčešće sa
bitno manjim brojem ispitanih čvorova stabla.
ek
El

4.4.5 Iterativni Alfa-beta/kiler algoritam


Za dubinu pretraživanja 𝑑𝑚𝑎𝑥 iterativni Alfa-beta/kiler algoritam realizuje se na sledeći način: najpre se vrši
pretraživanje stabla igre do dubine 1 (svejedno je kojim algoritmom, jer do dubine 1 nema alfa i beta odsecanja)
i najbolji pronadeni potez postaje kiler potez za nivo 0 — za početni čvor. Dalje se primenjuje algoritam Alfa-
beta/kiler redom za dubine 𝑑, gde je 2 ≤ 𝑑 ≤ 𝑑𝑚𝑎𝑥 , i dobijeni najbolji potez postaje kiler potez za početni čvor.
Kao najbolji potez bira se onaj dobijen završnom primenom Alfa-beta/kiler algoritma za dubinu 𝑑𝑚𝑎𝑥 .
Efekti iterativnog algoritma su, u svakoj iteraciji, slični efektima Alfa-beta/kiler algoritma, s tim što u
iterativnom algoritmu postoji i kiler potez za početni čvor u pretraživanju. Ima izgleda da je u svakoj iteraciji
taj kiler potez bolje odabran i da daje bolje rezultate (veći broj alfa i beta odsecanja). Druga važna i dobra
osobina iterativnog algoritma je to što za slučaj prekida pretraživanja, praktično u svakom trenutku ima smisleni
rezultat kao najbolji pronadeni potez za neku kompletno završenu iteraciju (videti poglavlje 4.4.7). Ono što
izgleda kao mana algoritma — višestruko pretraživanje nekih čvorova — ne utiče bitno na performanse algoritma.
Naime, u odnosu na vreme utrošeno za završnu iteraciju, vreme utrošeno na sve ostale iteracije praktično je
zanemarljivo. Pored toga, s obzirom na (najčešće) dobro odabran kiler potez za početni čvor, završna iteracija
će obično zahtevati ispitivanje manjeg broja čvorova od Alfa-beta/kiler algoritma za istu dubinu.
I primenom iterativnog Alfa-beta/kiler algoritma dobija se potez sa najboljom ocenom za datu funkciju
evaluacije i datu dubinu pretraživanja, isto kao i algoritmi minimaks, Alfa-beta i Alfa-beta/kiler.
4.4. Središnjica 52

Algoritam: Alfa-beta

Ulaz: funkcija evaluacije 𝑓 , pozicija


Izlaz: potez
1: 𝑣 = 𝑀 𝑎𝑥(𝑓, 𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎, −∞, +∞)
2: vrati potez kojem odgovara vrednost 𝑣

Algoritam: Max

Ulaz: funkcija evaluacije 𝑓 , pozicija, alfa vrednost 𝛼, beta vrednost 𝛽,


Izlaz: vrednost pozicije
1: ako je pozicija završna ili na najvećoj dozvoljenoj dubini onda
2: vrati 𝑓 (𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎)
3: 𝑣 := −∞

9)
4: za svaku poziciju 𝑠 do koje se može doći u jednom potezu radi
5: ako 𝑀 𝑖𝑛(𝑓, 𝑠, 𝛼, 𝛽) > 𝑣 onda

1
6: 𝑣 := 𝑀 𝑖𝑛(𝑓, 𝑠, 𝛼, 𝛽)

20
7: ako 𝑣 ≥ 𝛽 onda
8: vrati 𝑣

(
9: ako 𝑣 > 𝛼 onda
10: 𝛼 := 𝑣
11: vrati 𝑣 je
an
Algoritam: Min

Ulaz: funkcija evaluacije 𝑓 , pozicija, alfa vrednost 𝛼, beta vrednost 𝛽,


izd

Izlaz: vrednost pozicije


1: ako je pozicija završna ili na najvećoj dozvoljenoj dubini onda
2: vrati 𝑓 (𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎)
ko

3: 𝑣 := +∞
4: za svaku poziciju 𝑠 do koje se može doći u jednom potezu radi
ns

5: ako 𝑀 𝑎𝑥(𝑓, 𝑠, 𝛼, 𝛽) < 𝑣 onda


6: 𝑣 := 𝑀 𝑎𝑥(𝑓, 𝑠, 𝛼, 𝛽)
tro

7: ako 𝑣 ≤ 𝛼 onda
8: vrati 𝑣
9: ako 𝑣 < 𝛽 onda
ek

10: 𝛽 := 𝑣
11: vrati 𝑣
El

Slika 4.6: Algoritam Alfa-beta

4.4.6 Stabilno pretraživanje


Nedostatak pristupa u kojem se pretraživanje stabla igre vrši do fiksne dubine je u tome što funkcija evalu-
acije, koja se primenjuje na čvorove na najvećoj dubini, ne razmatra moguće nastavke za pozicije na najvećoj
dubini. Te ocene, ma koliko funkcija evaluacije bila dobra, mogu da budu varljive i da vode lošem izboru poteza
(u šahu se, na primer, može izabrati potez zbog nekog, naizgled dobrog, završnog čvora u kojem se zarobljava
protivnikov top, ali se ne zna da nakon toga može da bude izgubljena kraljica ili da sledi mat). Zbog toga
se primenjuje „stabilno pretraživanje“ (eng. quiscence searching): vrši se pretraživanje do neke fiksne dubine,
ali se pretraživanje nastavlja i dalje ukoliko je, po nekom kriterijumu, završni čvor „nestabilan“. Maksimalna
dubina dodatnog pretraživanja takode treba da bude ograničena. Stabilno pretraživanje može se primenjivati u
kombinaciji sa svakom od ranije opisanih tehnika.
Kriterijumi stabilnosti poteza odreduju se u skladu sa specifičnostima konkretne igre. U šahu, na primer,
pozicija se može smatrati stabilnom ukoliko igrač koji je na potezu nije pod šahom, ukoliko mu kraljica ne „visi“,
ukoliko ne „visi“ nijedna protivnikova figura i ukoliko ne preti neposredno izvodenje nekog protivnikovog pešaka.
Savremeni programi za šah često pretražuju stablo igre do dubine 4 ili 6 (tj. 4 ili 6 polupoteza) sa dodatnim,
53 4. Igranje strateških igara

1000
4
0J0S
3
Z0Z0
2
0Z0S
1
j0Z0
a b c d
/ \ ...
1000 100
4
0J0S 4
0J0S
3
Z0Z0 3
Z0ZR
2
0Z0Z 2
0Z0Z
1
j0ZR 1
j0Z0
a b c d a b c d
/ \ / ... X
1000 1000 100
4
0J0S 4
0J0S 4
0J0S

9)
3
Z0Z0 3
Z0Z0 3
Z0ZR
2
kZ0Z 2
0j0Z 2
kZ0Z

1
1
Z0ZR 1
Z0ZR 1
Z0Z0
a b c d a b c d a b c d

20
/ ... \ / ... X / ... \
1000 100 1000 100 100

(
4
0J0Z 4
0ZKS 4
0J0Z 4
0J0S 4
0ZKS
3
Z0Z0 3
Z0Z0 3
Z0Z0 3
Z0Z0 3
Z0ZR
2
1
kZ0S
Z0ZR
2
1
kZ0Z
Z0ZR
2
1
0j0S
Z0ZR
2
1
kZ0Z
Z0ZR
2
1
kZ0Z
Z0Z0
je
an
a b c d a b c d a b c d a b c d a b c d

Slika 4.7: Ilustracija rada algoritma Alfa-beta


izd

stabilnim pretraživanjem do dubine 16 ili više.


ko

4.4.7 Prekidi i vremenska ograničenja


Vremenska ograničenja su važna u programiranju strateških igara: potrebno je da program izabere smislen
ns

potez i ukoliko se pretraživanje stabla igre prekine pre nego što se izvrši kompletan algoritam. Prekidi mogu
biti izazvani akcijom korisnika ili ograničenjima vremena raspoloživog za jedan potez ili za celu partiju3 . Kod
tro

do sada opisanih algoritama, ako algoritam nije kompletno izvršen (i, na primer, ispitani su samo neki, povoljni
odgovori protivnika), odabrani potez može biti veoma loš. Izuzetak je iterativni Alfa-beta/kiler algoritam, jer
praktično u svakom trenutku (prva iteracija traje zanemarljivo) ima neku kompletno završenu iteraciju, te će
ek

biti izbegnuti makar najjednostavniji previdi.


El

4.4.8 Svojstva algoritama Minimax i Alfa-beta

Definicija 4.1 (Faktor grananja). Neka je 𝐴 deterministički algoritam za pretraživanje uniformnog stabla
igre stepena 𝑏 (svi njegovi čvorovi osim listova imaju tačno po 𝑏 neposrednih potomaka), dubine 𝑑 i sa
listovima kojima su pridružene vrednosti po raspodeli 𝐹 . Ako je sa 𝐼𝐴 (𝑑, 𝑏, 𝐹 ) označen očekivani broj
završnih čvorova koje algoritam 𝐴 ispituje, tada vrednost

𝑅𝐴 (𝑏, 𝐹 ) = lim [𝐼𝐴 (𝑑, 𝑏, 𝐹 )]1/𝑑


𝑑→∞

zovemo faktor grananja algoritma 𝐴.

Faktor grananja je ključna karakteristika algoritama za pretraživanje stabla igre jer govori o očekivanom broju
završnih čvorova koje nekim algoritmom treba ispitati. Naime, ukoliko je 𝑅 faktor grananja nekog algoritma,
onda je očekivani broj ispitanih čvorova za dubinu pretraživanja 𝑑 jednak 𝑅𝑑 . Na primer, za šahovsku središnjicu
procenjuje se da je faktor grananja izmedu 35 i 38, a za igru go oko 250.
3 Ukoliko je ograničeno vreme raspoloživo za celu partiju, program mora i da ga ekonomično deli na procenjeni broj poteza.
4.4. Središnjica 54

Ako se uniformno stablo stepena 𝑏 i dubine 𝑑 pretražuje minimaks algoritmom, biće ispitano 𝑏𝑑 završnih
čvorova stabla, pa je faktor grananja algoritma minimaks za svaku raspodelu 𝐹 očigledno jednak 𝑏:
𝑅𝑚𝑖𝑛𝑖𝑚𝑎𝑥 (𝑏, 𝐹 ) = 𝑏.
Ukoliko se u svakom čvoru stabla igre ispituju potezi od najlošijeg ka najboljem, onda, očigledno, nema
nikakvih odsecanja i algoritam Alfa-beta se ponaša kao algoritam Minimaks. S druge strane, algoritam Alfa-beta
ponaša se najbolje ukoliko se u svakom čvoru najpre ispituje najbolji potez za taj čvor i o tome govori naredna
teorema.

Teorema 4.1. Ukoliko je stablo igre uniformno (svaki čvor koji nije list ima tačno 𝑏 dece) i ukoliko se
u svakom čvoru najpre ispituje najbolji potez za taj čvor, onda algoritam Alfa-beta, primenjen do fiksne
dubine 𝑑 ispituje 𝑂(𝑏𝑑/2 ) listova.

Dokaz: Neka 𝑇 (𝑑) označava broj listova koje treba ispitati za odredivanje egzaktne ocene čvora na nivou 𝑑 (za
zadato stablo), pri čemu je u ovom konkretnom kontekstu pogodno da se nivoi broje od listova – njima

9)
odgovara nivo 0.
Neka 𝐿(𝑑) označava broj listova koje treba ispitati za odredivanje (samo) ograničenja ocene čvora na nivou

1
𝑑 dovoljnog da obezbedi odsecanja u nastavku primene algoritma.

20
4

𝑚𝑎𝑥

(
4 ≤3 ≤1

4 ≥6 ≥7 3 je 1
an
4 2 6 7 3 0 0 1 −1 −4
izd

Slika 4.8: Ilustracija za broj listova potreban za izračunavanje egzaktne ocene čvora i procene ocene čvora
ko

Važi 𝑇 (0) = 1 i 𝐿(0) = 1. Kako se u svakom čvoru najpre ispituje najbolji potez, onda važi (slika 4.8):
𝑇 (𝑑) = 𝑇 (𝑑 − 1) + (𝑏 − 1)𝐿(𝑑 − 1)
ns

𝐿(𝑑) = 𝑇 (𝑑 − 1)
odakle sledi
tro

𝑇 (𝑑) = 𝑇 (𝑑 − 1) + (𝑏 − 1)𝑇 (𝑑 − 2)
Karakteristična jednačine ove veze je 𝑡2 − 𝑡 − (𝑏 − 1) i njena rešenja su

ek

(1− 1+4(𝑏−1) √︀
𝑡1 = 2 = 1/2 − 𝑏 − 3/4

El

(1+ 1+4(𝑏−1) √︀
𝑡2 = 2 = 1/2 + 𝑏 − 3/4
Dakle, važi
(︁ √︀ )︁𝑑 (︁ √︀ )︁𝑑
𝑇 (𝑑) = 𝑎 · 1/2 − 𝑏 − 3/4 + 𝑏 · 1/2 + 𝑏 − 3/4
√ 𝑑
i 𝑇 (𝑑) = 𝑂( 𝑏 ) tj. 𝑇 (𝑑) = 𝑂(𝑏𝑑/2 ) 

Navedena teorema govori da algoritam Alfa-beta ispituje barem 𝑂(𝑏𝑑/2 ) listova, tj. njegov faktor grananja
je reda većeg ili jednakog 𝑂(𝑏1/2 ). Kiler heuristika u iterativnoj verziji često postiže dobar poredak poteza u
svakom čvoru, pa ponašanje reda 𝑂(𝑏𝑑/2 ) nije nerealno očekivati. Ovaj rezultat govori i da je (uz dobar poredak
poteza), Alfa-beta algoritmom moguće birati poteze analizirajući stablo do dva puta veće dubine nego primenom
minimaks algoritma.
Problem odredivanja faktora grananja Alfa-beta algoritma za funkciju 𝐹 sa ravnomernom raspodelom a bez
pretpostavke da se najpre ispituje najbolji potez mnogo je složeniji. Odgovor na pitanje o faktoru grananja
Alfa-beta algoritama daje sledeća teorema.4
4 Zapravo, preciznije tvrdenje je da se vrednost 𝑅𝛼−𝛽 (𝑏, 𝐹 ) može ograničiti odozgo sa 𝜉𝑏 /(1 − 𝜉𝑏 ), gde je 𝜉𝑏 pozitivno rešenje
jednačine 𝑥𝑏 + 𝑥 − 1 = 0. Vrednost 𝜉𝑏 /(1 − 𝜉𝑏 ) se za 𝑏 takvo da je 𝑏 ≤ 1000 može aproksimirati sa 0.925 · 𝑏0.747 , što se dalje može
ograničiti sa 𝑏3/4 .
55 4. Igranje strateških igara

Teorema 4.2. Za faktor grananja Alfa-beta algoritma za stablo stepena 𝑏 (koji nije mnogo veliki, tj. za
koji je 𝑏 ≤ 1000) i za ravnomernu raspodelu 𝐹 važi:

𝑅𝛼−𝛽 (𝑏, 𝐹 ) = 𝑂(𝑏3/4 )

Važno je i sledeće srodno tvrdenje.

Teorema 4.3. Algoritam Alfa-beta je asimptotski optimalan algoritam za pretraživanje stabla igre.

Navedeno tvrdenje znači da ne postoji algoritam za pretraživanje stabla igre koji, u opštem slučaju, asimp-
totski ispituje manje završnih čvorova nego algoritam Alfa-beta. Modifikacije algoritma Alfa-beta opisane u
prethodnom delu veoma često u praksi daju bolje rezultate nego osnovni algoritam. Ipak, faktori grananja
ovih algoritama ne razlikuju se od faktora grananja Alfa-beta algoritma i u opštem slučaju oni ne garantuju

9)
asimptotski manje ispitanih završnih čvorova stabla nego algoritam Alfa-beta.

1
4.5 Završnica

20
U igrama kao što je šah, završnica iziskuje specifične tehnike. Naime, pristupi koji se zasnivaju na dubinskom
pretraživanju ne daju dobre rezultate u završnici jer kvalitetna igra iziskuje jako veliku dubinu pretraživanja.

(
Problem završnice je još teži ako se postavi zahtev za korektnom ili optimalnom igrom/taktikom5 . Ukoliko se,
je
tehnikama koje se koriste u središnjici, sistematsko pretraživanje vrši do završnih čvorova time se obezbeduje
optimalna strategija (naravno, za većinu igara to je u praksi nemoguće izvesti). Optimalnu igru u šahovskoj
an
završnici praktično je nemoguće obezbediti (za uobičajena vremenska ograničenja), jer su moguće završnice u
kojoj igrač ima dobijenu poziciju, ali ne može da matira protivnika u manje od dvadeset poteza6 , pa takva
završnica za optimalnu igru zahteva dubinu pretraživanja veću od dvadeset. Slični problemi važe i za korektnu
izd

taktiku.
U nastavku su opisani neki od pristupa koji se koriste u šahovskim završnicama. Neki od njih zasnovani su
na pristupima koji se koriste u središnjici, ali uz korišćenje posebne ili više posebnih funkcija evaluacije.
ko

Skupovi pozicija kao klase ekvivalencija. Bramerov opšti algoritam (1975) za završnicu izgleda ovako:
ns

(a) generiši skup svih legalnih poteza — skup 𝑄;


tro

(b) odaberi najbolje ocenjeni elemenat skupa 𝑄 — element 𝑞;

(c) odigraj potez 𝑞;


ek

Ključni korak algoritma (korak (b)) zasnovan je na sledećoj ideji: neka je skup 𝑄* skup svih regularnih
El

pozicija u igri i neka je svaka od tih pozicija svrstana u tačno jedan od podskupova koji razlažu 𝑄* (to razlaganje
definiše se u skladu sa prirodom konkretne igre tako da istom skupu pripadaju suštinski slične pozicije – na
primer, u šahu, sve pozicije „kralj i pešak protiv kralja“); svakom od tih skupova (odnosno klasa ekvivalencije)
pridružena je jedinstvena ocena i jedinstvena funkcija evaluacije. Ocenjivanje koje se pominje u koraku (b)
Bramerovog algoritma svodi se na sabiranje ocene klase pozicija i ocene pozicije koja toj klasi pripada. Na taj
način ocenjuju se svi legalni potezi iz datog čvora i to bez ikakvog pretraživanja preko dubine 1. Kao najbolji bira
se potez kojem odgovara najveća zbirna ocena. Opisani algoritam ima brojne varijacije (uključujući varijacije
uporedivanja elemenata iz različitih klasa ekvivalencije, provere izabranog poteza pretraživanjem u dubinu itd.).
Opisani algoritam u izvesnoj meri odgovara čovekovom načinu razmišljanja. On može biti veoma efikasan,
jer poredenje poteza vrši po ključnim parametrima za konkretnu završnicu (na primer, u šahu, po rastojanju
izmedu dva kralja), a ne po opštim kriterijumima koji se koriste u središnjici. Algoritam zahteva kompleksno
definisanje mnogih relevantnih klasa pozicija u završnici i pratećih funkcija evaluacije.
5 Za taktiku kažemo da je korektna ukoliko u dobijenoj poziciji sigurno vodi do pobede i ukoliko pri (teorijskoj) remi–poziciji

sigurno vodi bar remiju. Za taktiku kažemo da je optimalna ukoliko u dobijenoj poziciji vodi pobedi u najmanjem broju poteza,
odnosno ukoliko u izgubljenoj poziciji poraz maksimalno odlaže. Očigledno, ako je taktika optimalna, onda je i korektna, ali ne
važi obratno.
6 Lomonosov tabele pokazale su da postoje pozicije u kojima beli dobija, ali ne nužno u manje od (čak) 545 poteza.
4.5. Završnica 56

Mali saveti. Jedan od pristupa koji se primenjuje u šahovskim završnicama je i pristup malih saveta (eng.
advice texts). Navedimo, kao ilustraciju, jedan „mali savet“ za završnicu „kralj i top protiv kralja“ (autora Ivana
Bratka).
1. „mat“: pokušaj da matiraš protivnika u dva poteza;
2. „stezanje“: ako to nije moguće, pokušaj da topom smanjiš prostor na tabli dostupan protivničkom kralju;
3. „približavanje“: ako to nije moguće, pronadi način da svog kralja približiš protivničkom;
4. „zadržavanje“: ako to nije moguće, pronadi potez koji zadržava trenutno stanje u smislu (2) i (3) (tj. odaberi
„potez čekanja“);
5. „razdvajanje“: ako to nije moguće, pronadi potez kojim se dobija pozicija u kojoj top razdvaja dva kralja,
bilo vertikalno ili horizontalno.
Nedostatak pristupa ilustrovanog navedenim primerom je u tome što iziskuje posebne „male savete“ za sve
suštinski različite završnice. Pored toga, za sve tipove završnica nije jednostavno (ili nije moguće) napraviti

9)
koncizan i efikasan „mali savet“. Prethodnih godina za generisanje ovakvih „malih saveta“ koriste se i tehnike
mašinskog učenja.

1
Pitanja i zadaci

20
Pitanje 4.1. Opisati ukratko Šenonove strategije.

(
Pitanje 4.2. Šta znači da je funkcija evaluacije koja se koristi u strateškim igrama statička?
je
Pitanje 4.3. Koja je najjednostavnija funkcija evaluacije u igrama nulte sume?
an
Pitanje 4.4. Ako je statička ocena neke šahovske pozicije jednaka 0, šta to govori?
Pitanje 4.5. Ako je statička ocena neke šahovske pozicije jednaka 𝑐, koja je ocena pozicije koja je dobijena
izd

tako što su sve figure promenile boju?


Pitanje 4.6. Zašto se tako zove minimaks algoritam?
Pitanje 4.7. Ako se pretraga vrši do iste dubine stabla igre, da li algoritam Minimax ispituje isti broj pozicija
ko

bez obzira na poredak poteza u jednom čvoru?


Pitanje 4.8. Po čemu se razlikuju 𝛼 i 𝛽 odsecanja?
ns

Pitanje 4.9. Da li algoritam Alfa-beta uvek vraća isti rezultat kao algoritam Minimax?
tro

Pitanje 4.10. Da li algoritam Alfa-beta uvek obradi manje čvorova nego algoritam Minimax?
Pitanje 4.11. U kom slučaju (osnovni) algoritam Alfa-beta obraduje isti broj čvorova kao i Minimax?
ek

Pitanje 4.12. Da li algoritam Minimax može u nekom slučaju, pretražujući do iste dubine da obide manji broj
čvorova od algoritma Alfa-beta?
El

Pitanje 4.13. Da li Alfa-beta algoritam, u odnosu na Minimax algoritam: (a) daje iste poteze, ali brže; (b)
daje nešto lošije poteze, ali znatno brže; (c) daje bolje poteze i to brže; (d) daje bolje poteze ali nešto sporije?
Pitanje 4.14. Kada je broj odsecanja u stablu igre najveći u algoritmu Alfa-beta?
Pitanje 4.15. Naredna slika prikazuje deo stabla igre koje se pretražuje algoritmom Alfa-beta . U korenu 𝑅
se primenjuje maksimizovanje a u čvorovima 𝐴, 𝐵, 𝐶 minimizovanje. Koji poredak čvorova 𝐴, 𝐵, 𝐶 bi dao
najviše Alfa-beta odsecanja?

𝐴 𝐵 𝐶

1 2 3 5 6 7 8 9 10
57 4. Igranje strateških igara

Pitanje 4.16. Koja heuristika je zasnovana na činjenici da je broj Alfa-beta odsecanja u stablu igre najveći
ako se najpre ispituje najbolji?

Pitanje 4.17. Opisati ukratko heuristiku kiler.

Pitanje 4.18. Kakav efekat se očekuje od heuristike kiler u iterativnoj primeni Alfa-beta algoritma i zašto?

Pitanje 4.19. Da li iterativni Alfa-beta algoritam sa kiler heuristikom daje uvek isti rezultat kao Alfa-beta
algoritam nad istim stablom igre i za istu dubinu pretrage?

Pitanje 4.20. Da bi heuristika kiler funkcionisala i na nultom nivou stabla igre koji je algoritam potrebno
koristiti?

Pitanje 4.21. Koji algoritam je pogodan za igru sa vremenskim prekidima i zašto?

Pitanje 4.22. Šta je to stabilno pretraživanje?

9)
Pitanje 4.23. Neka je 𝐴 deterministički algoritam za pretraživanje (𝑑, 𝑛, 𝐹 )-stabla i neka je 𝐼𝐴 (𝑑, 𝑛, 𝐹 )
očekivani broj završnih čvorova koje algoritam 𝐴 ispituje. Kako se definiše faktor grananja algoritma 𝐴?

1
Pitanje 4.24. Koliki je faktor grananja za algoritam Minimax za šahovsku središnjicu? (traži se konkretan

20
broj)?

(
Pitanje 4.25. Koliki je faktor granjanja algoritma minimaks, ako se ispituje uniformno stablo stepena 𝑛 i
dubine 𝑑?
je
Pitanje 4.26. Ukoliko čvorovi stabla igre imaju stepen 𝑛, a pretražuje se do dubine 𝑑, koja je složenost
an
algoritma Minimax a koja algoritma Alfa-beta za taj problem?

Pitanje 4.27. U igri 𝑃 za dva igrača, u svakom potezu ima prosečno 6 legalnih poteza, a igra prosečno traje
izd

4 polupoteza. Koliki je faktor grananja algoritma Minimax za ovu igru?

Pitanje 4.28. U igri 𝑃 za dva igrača, u svakom potezu ima prosečno 5 legalnih poteza, a igra prosečno traje
20 polupoteza. Koliki je faktor grananja algoritma Minimax za ovu igru?
ko

Pitanje 4.29. U programiranju igara, da li se algoritmi Minimax tipa primenjuju u otvaranju, središnjici ili
završnici?
ns

Pitanje 4.30. Navesti barem dve strategije za završnicu u programima za igre.


tro

Pitanje 4.31. Do koje dubine se vrši pretraga u Bramerovom pristupu za završnicu?

Zadatak 4.1. Na datoj tabli igre X-O minimaks algoritmom sa Alfa-beta odsecanjem odrediti najbolji potez
ek

za igrača X. Prikazati stablo igre i odsecanja koja algoritam vrši.

X X O
El

O X
O

Zadatak 4.2. Igra X-O se igra na datoj tabli. Igrač je pobedio kad postavi svoje simbole na 2 susedna polja.
Nacrtati potpuno stablo igre i pomoću algoritma minimaks izračunati vrednosti njegovih čvorova.

Zadatak 4.3. Data je sledeća tabla za igru:

1 2
3 4

Dva igrača stavljaju naizmenično žetone na polja dok se tabla ne popuni i pri tom osvajaju onoliko poena
koliko piše na polju. Pobeduje igrač koji na kraju ima veću sumu poena. Pomoću Minimax algoritma odrediti
najbolji polazni potez za prvog igrača. Da li alfa-beta odsecanje omogućava izračunavanje najboljeg poteza u
manje koraka?
4.5. Završnica 58

Zadatak 4.4. Na datom drvetu algoritmom Alfa-beta izračunati vrednost korenog čvora. Označiti delove
drveta koji su odsečeni pri obilasku s leva na desno. Da li neki drugi raspored grana drveta omogućava više
odsecanja? Ako da, koji?

𝑚𝑎𝑥

3 4 6 10 1 3 8 5 5 2 12 7

Zadatak 4.5. Označiti odsecanja koja čini algoritam Alfa-beta pri obilasku sledećeg stabla s leva nadesno.
Postoji li redosled obilaska stabla pri kojem se odseca veći broj čvorova?

9)
𝑚𝑎𝑥

1
( 20
21 12 56 11 99 13 16 17 31 33 20 15

je
Zadatak 4.6. Prikazati odsecanja koja vrši algoritam Alfa-beta na datom stablu igre pri obilasku s leva na
desno. Koji je optimalni obilazak stabla u smislu odsečenih čvorova i koja odsecanja se pri njemu vrše?
an
𝑚𝑎𝑥
izd
ko

12 11 13 16 18 41 33 11 9 99 1 10
ns

Zadatak 4.7. Prikazati odsecanja koja vrši algoritam Alfa-beta na datom stablu igre pri obilasku s leva na
desno. Koji je optimalni obilazak stabla u smislu odsečenih čvorova i koja odsecanja se pri njemu vrše?
tro

𝑚𝑎𝑥
ek
El

12 11 13 16 18 41 33 11 9 99 1 10

Zadatak 4.8. Označiti odsecanja koja čini algoritam Alfa-beta pri obilasku sledećeg stabla s leva nadesno.

𝑚𝑎𝑥

3 8 12 5 1 2 30 4 6 23 30 1
Glava 5

Genetski algoritmi

9)
Heuristike koje se koriste u rešavanju problema pretrage dizajnirane su za konkretan problem, imajući u
vidu njegove specifičnosti. Heuristika dizajnirana za jedan problem često je potpuno neupotrebljiva za drugi

1
problem i rešavanje svakog novog problema korišćenjem heuristika može da bude veoma zahtevno. S druge

20
strane, metaheuristike ili metaheurističke metode su metode koje opisuju opšte strategije pretrage za rešavanje
optimizacionih problema i formulisane su nezavisno od konkretnog problema. U svom opštem obliku, meta-

(
heuristike ne koriste specifičnosti nijednog konkretnog problema i mogu se koristiti za rešavanje široke klase
problema. Medutim, iako su metaheuristike opšte metode, one mogu biti prilagodene (kombinacijom internih
je
parametara) specifičnom problemu koji se rešava. Metaheuristike obično razmatraju samo mali uzorak skupa
svih mogućih rešenja i obično ne garantuju pronalaženje najboljeg mogućeg rešenja. Medutim, rešenja koja daju
an
metaheuristike često mogu biti dovoljno dobra, posebno u situacijama kada nije raspoloživa ili nije praktično
upotrebljiva odgovarajuća egzaktna metoda (koja garantuje pronalaženje najboljeg mogućeg rešenja).
izd

Genetski algoritmi pripadaju široj grupi metaheurističkih algoritama globalne optimizacije ili pretrage koji
koriste tehnike inspirisane biologijom. Genetski algoritmi koriste pojmove kao što su selekcija, ukrštanje,
nasledivanje, mutacija, itd. U prirodi, evolucija je proces u kojem jedinke koje su najbolje prilagodene okolini
ko

preživljavaju i ostavljaju potomstvo, koje je najčešće isto tako ili bolje prilagodeno okolini. Svaka ćelija svakog
živog organizma sadrži hromozome. Svaki hromozom sadrži skup gena — blokove DNK. Svaki gen odreduje neku
osobinu organizma. Familija gena često se naziva genotip, a familija osobina fenotip. Reprodukcija organizama
ns

uključuje kombinovanje gena roditelja i, pored toga, male količine mutacije. Jedinka može biti manje ili više
prilagodena okolini. Jedinka koja je bolje prilagodena okolini u kojoj živi ima veću verovatnoću preživljavanja
tro

i ostavljanja potomstva, a time i prenošenja svog genetskog materijala. Genetski materijal prilagodenih jedinki
uglavnom opstaje, dok genetski materijal neprilagodenih jedinki uglavnom nestaje kroz generacije. Dakle, evo-
lucioni procesi u prirodi su, u odredenom smislu, optimizacioni procesi — procesi u kojima se kroz generacije
ek

optimizuje genetski materijal (tj. osobine organizama) tako da bude što bolje prilagoden okolini.

Genetski algoritmi mogu se koristiti za nalaženje tačnog ili približnog rešenja nekog problema optimizacije
El

ili pretrage. Mada je još pedesetih godina dvadesetog veka bilo računarskih simulacija zasnovanih na evoluciji,
smatra se da je moderne genetske algoritme uveo Džon Holand sedamdesetih godina dvadesetog veka, a postali
su popularni kasnih osamdesetih godina. Tokom prethodnih tridesetak godina ostvaren je veliki napredak u
razvoju genetskih algoritama. Genetski algoritmi se uspešno primenjuju na širokom skupu problema, često NP-
kompletnih ili težih problema, za koje ne postoje efikasna rešenja. Neki od tih problema su problem nalaženja
najkraćeg puta u grafu, problem trgovačkog putnika, problem igranja logičkih igara itd. Genetski algoritmi
imaju uspešne primene u ekonomiji, tehnici, bioinformatici, hemiji, fizici itd. Genetski algoritmi uspešno se
primenjuju u mnogim optimizacionim problemima u kojima postoji i više lokalnih ekstremuma. Popularnost
genetskih algoritama potiče iz njihove uspešnosti, ali i jednostavnosti. Naime, ideje na kojima su genetski
algoritmi zasnovani su jednostavne za razumevanje i implementiranje, a daju opšti sistem pretrage primenljiv
na veliki broj problema. Pored toga, i u situacijama kada ne nalaze globalne ekstremume, rešenja koja daju su
često dovoljno dobra.

Uporedo sa nalaženjem brojnih novih primena i unapredivanjem algoritma, razvijaju se i teorijske osnove
genetskih algoritama, ali još uvek sa ograničenim uspesima. Na primer, iako često nalaze globalne ekstremume,
genetski algoritmi ne pružaju informaciju o tome da li je u pitanju globalni ili lokalni ekstremum, niti o tome
sa kolikom greškom je odredeno rešenje.

59
5.1. Opšti genetski algoritam 60

5.1 Opšti genetski algoritam


Genetski algoritmi implementiraju se kao računarska simulacija u kojoj populacija apstraktno opisanih
jedinki koje su kandidati za rešenje problema treba da se približava boljim rešenjima. Reprezentacija jedinke
naziva se hromozomom ili genotipom. Cilj je naći vrednost za koju zadata funkcija cilja dostiže svoj ekstremum
ili vrednost koja je dovoljno blizu ekstremuma i rešenje problema može biti numerička vrednost, matematička
funkcija, put u grafu itd. Potencijalna rešenja, tj. jedinke obično su predstavljene nizovima nula i jedinica, ali
su moguće i druge reprezentacije za probleme u kojem binarna reprezentacija nije pogodna. Postupak se odvija
kroz generacije. Početnu generaciju obično čine slučajno generisane jedinke, ali može da sadrži i jedinke koje su
(grubi) rezultat neke druge optimizacione metode.
Obično u svakoj generaciji postoji isti broj jedinki i za svaku od njih računa se njen kvalitet (koji odgovara
prilagodenosti okolini). Funkcija koja pridružuje te vrednosti jedinkama naziva se funkcija prilagodenosti ili
funkcija kvaliteta. Ova funkcija ima ključnu ulogu u algoritmu. Ona može ali ne mora da bude jednaka funkciji
cilja.
Iz jedne generacije se, na osnovu vrednosti funkcije prilagodenosti, kroz proces selekcije biraju jedinke koje će
biti iskorišćene za stvaranje novih jedinki (potomstva). One kvalitetnije biraju se sa većom verovatnoćom. Nad

9)
izabranim jedinkama primenjuju se genetski operatori ukrštanja1 i tako se dobijaju nove jedinke. Ukrštanjem se
od dve jedinke dobija nova (ili dve nove) sa genetskim materijalom koji je dobijen neposredno od roditelja, tj. od

1
polaznih jedinki. Operatorom mutacije može da se modifikuje deo polazne jedinke (i ona oponaša mutacije koje

20
se u prirodi javljaju pod uticajem spoljnih faktora). U svakoj generaciji, dakle, može da dode do rekombinacije
gena zbog koje se javlja sličnost ali i različitost izmedu jedinki iste generacije.
Politika zamene generacija odreduje kako se od postojećih jedinki i njihovog potomstva kreira nova genera-

(
cija. Neke jedinke u novoj generaciji mogu biti bolje, neke mogu biti i lošije od jedinki iz prethodne generacije, ali
je
se očekuje da se prosečna prilagodenost popravlja. Tako dobijena nova generacija koristi se za sledeću iteraciju
algoritma.
an
Postupak se zaustavlja kada je dostignut zadati broj generacija, kada je dostignut željeni nivo kvaliteta
populacije (na primer, prilagodenost najprilagodenije jedinke) ili kada je ispunjen neki drugi uslov. Ukoliko je
dostignut zadati broj generacija, nema nikakvih garancija da tekuća najkvalitetnija jedinka ima zadovoljavajuću
izd

vrednost funkcije cilja.


Genetski algoritmi se, kao i mnogi drugi algoritmi, dizajniraju za rešavanje neke klase instanci, a ne po-
jedinačnih instanci. Na primer, algoritam za rešavanje kvadratne jednačine može da reši bilo koju kvadratnu
jednačinu, ali je za njegovu primenu potrebno zadati koeficijente koji je u potpunosti odreduju. Slično, ge-
ko

netski algoritam za pronalaženje rasporeda časova treba da bude dizajniran tako da rešava različite instance
tog problema — za različite škole sa različitim brojem nastavnika, odeljenja, učionica i termina i sa različitim
ns

specifičnim zahtevima. To znači da funkcija cilja može da bude definisana tek kad su poznati svi podaci koji
precizno zadaju problem. Zbog toga se može smatrati da ulaz za opšti algoritam čini opis problema na osnovu
tro

kojeg tek treba definisati funkciju cilja, ali i brojna podešavanja algoritma (tj. vrednosti njegovih parametara)
pogodna za konkretan problem. Medutim, upravo definisanje funkcije prilagodenosti i izbor pogodnih parame-
tara često čine najteži deo primene genetskih algoritama, tj. primena opšteg genetskog algoritma je obično samo
mali deo potrebnog truda.
ek

Opšti genetski algoritam prikazan je na slici 5.1.


Pored podataka koji odreduju funkciju cilja, da bi navedeni opšti algoritam bio specifikovan potrebno je iza-
El

brati i podešavanja algoritma (za konkretan problem) – definisati reprezentaciju jedinki, funkciju prilagodenosti,
politiku selekcije, politiku zamene generacija, itd.

5.2 Komponente genetskog algoritma


Svaki genetski algoritam ima nekoliko komponenti koje moraju biti specifikovane, kao što je reprezentacija
jedinki, proces selekcije, politika zamene generacija itd.

5.2.1 Reprezentacija jedinki


Jedinke mogu biti predstavljene raznovrsnim strukturama podataka, na primer, nizovima binarnih cifara,
stablima, matricama i drugim. Neophodno je da izabrana reprezentacija može da opiše moguće rešenje raz-
matranog problema i da se nad njom definišu genetski operatori (ukrštanje i mutacija). Takode, odabrana
reprezentacija bitno utiče na performanse algoritma. Poželjno je da genetski operatori budu definisani tako da
se njima ne dobijaju jedinke koje ne predstavljaju moguća rešenja (na primer, nelegalni putevi u grafu), jer
1 Ovaj termin nije sasvim u skladu sa značenjem koje ima u biologiji.
61 5. Genetski algoritmi

Algoritam: Opšti genetski algoritam

Ulaz: podaci koji odreduju funkciju cilja i podešavanja algoritma


Izlaz: najkvalitetnija jedinka u tekućoj populaciji
1: generiši početnu populaciju jedinki;
2: izračunaj prilagodenost svake jedinke u populaciji;
3: ponavljaj
4: izaberi iz populacije skup jedinki za reprodukciju;
5: primenom operatora ukrštanja i mutacije kreiraj nove jedinke (i računaj njihovu prilagodenost);
6: na osnovu starih i novih jedinki, kreiraj novu generaciju;
7: dok nije ispunjen uslov zaustavljanja
8: vrati najkvalitetniju jedinku u poslednjoj populaciji

9)
Slika 5.1: Opšti genetski algoritam

1
20
bi one narušavale performanse algoritma. Medutim, nekada se koriste i takvi operatori, ali se onda moraju
definisati mehanizmi popravljanja jedinki, tako da odgovaraju mogućim rešenjima.

(
Najčešće korišćena reprezentacija jedinki je u vidu nizova binarnih cifara. Svaki deo hromozoma, tj. svaku
cifru u takvoj reprezentaciji, zovemo gen. Dublja priroda binarne reprezentacije zavisi od konkretnog problema.
je
Na primer, ako je dužina hromozoma 𝑛 (bitova) i ako je prostor mogućih rešenja interval realnih brojeva [𝑎, 𝑏],
onda je potrebno uspostaviti vezu (koja, naravno, nije bijektivna) izmedu nizova 𝑛 bitova i realnih brojeva iz
an
datog intervala. Tako će binarna reprezentacija 000 ⏟ .⏞. . 0 odgovarati broju 𝑎, a binarna reprezentacija 111
⏟ .⏞. . 1
𝑛 𝑛
broju 𝑏. Broju 𝑥 sa binarnom reprezentacijom izmedu 000
⏟ .⏞. . 0 i 111
⏟ .⏞. . 1 odgovara realni broj
izd

𝑛 𝑛

𝑥
𝑎+ (𝑏 − 𝑎)
2𝑛 − 1
ko

S druge strane, realnom broju 𝑥 iz intervala [𝑎, 𝑏] pridružujemo niz koji predstavlja binarnu reprezentaciju broja
ns

[︂ ]︂
𝑥−𝑎 𝑛
(2 − 1) .
𝑏−𝑎
tro

Primer 5.1. Pretpostavimo da naftnu platformu treba postaviti na pogodnom mestu na putu izmedu tačaka 𝐴
i 𝐵, koji je dužine 5000m. Lokacija platforme je pogodnija ukoliko na tom mestu postoje veće rezerve nafte. U
biranju lokacije platforme moguće je meriti postojeće rezerve nafte na bilo kojoj tački izmedu 𝐴 i 𝐵. Moguća
ek

rešenja mogu se predstaviti nizovima bitova dužine 10, tj. brojevima od 0 do 1023. Tački 𝐴 tada odgovara broj
0 i reprezentacija 0000000000, a tački 𝐵 broj 1023 i reprezentacija 1111111111. Tački 𝐶 na rastojanju 1320m
El

od tačke 𝐴 odgovara vrednost 1023 · (1320/5000) ≈ 270 i reprezentacija 0100001110, a tački 𝐷 na rastojanju
3128m od tačke 𝐴 odgovara vrednost 1023 · (3128/5000) ≈ 640 i reprezentacija 1010000000. Za vrednost funkcije
prilagodenosti jedne tačke može se uzeti rezerva nafte izmerena u toj tački (slika 5.2).

5.2.2 Funkcija prilagodenosti


Funkcija prilagodenosti daje ocenu kvaliteta jedinke. Ukoliko je zadatak odrediti maksimum neke funkcije,
onda je prirodni izbor za funkciju prilagodenosti sâma ta funkcija. Pogodan izbor funkcije prilagodenosti od
izuzetne je važnosti za efikasnost algoritma. Funkcija prilagodenosti, naravno, treba da oslikava kvalitet jedinke,
da je definisana za sve moguće jedinke i da se relativno brzo izračunava. Sem ovih, ne postoje nikakvi opšti
uslovi koje funkcija prilagodenosti treba da zadovoljava (na primer, da je diferencijabilna), mada je algoritam
često efikasniji za funkcije koje zadovoljavaju neke specifične uslove. Što je vrednost funkcije prilagodenosti za
neku jedinku veća, to će biti veća verovatnoća da se ta jedinka koristi za generisanje sledeće generacije. Očekuje
se da, kroz generacije, ukupna prilagodenost bude sve bolja i bolja.
Primer 5.2. Potrebno je odrediti maksimum funkcije 𝑓 (𝑥) na intervalu [𝑎, 𝑏]. Funkcija je definisana za sve
elemente datog intervala, ali nije nužno ni neprekidna, ni diferencijabilna. Genetski algoritam moguće je pri-
meniti tako da se za funkciju prilagodenosti koristi upravo funkcija 𝑓 , a da se za reprezentaciju koristi bitovska
5.2. Komponente genetskog algoritma 62

𝐴 (0000000000) 𝐶 (0100001110) 𝐷 (1010000000) 𝐵 (1111111111)

0 1000 1320 2000 3000 3128 4000 5000

1 9)
0 100 200 270 300 400 500 600 640 700 800 900 1000

20
Slika 5.2: Reprezentacija jedinki u problemu lokacije naftne platforme

(
je
reprezentacija (na način opisan u poglavlju 5.2.1). Ukoliko je potrebno odrediti minimum funkcije 𝑓 (𝑥), onda
bi za funkciju prilagodenosti mogla da se koristi funkcija −𝑓 .
an
Treba imati u vidu da funkcija cilja i funkcija prilagodenosti ne moraju uvek da se podudaraju. Na primer,
izd

funkcija prilagodenosti može jedinkama koje su najbolje u odnosu na funkciju cilja dodeljivati vrednost 1, a
ostalima vrednost 0. Tako se može i pojednostaviti implementacija algoritma, ali se ovakve odluke moraju
donositi oprezno kako ne bi došlo do smanjenja raznolikosti populacije i prerane konvergencije (recimo ako
najbolje jedinke, kojima će biti pridružena vrednost 1, sve pripadaju uskoj podoblasti prostora rešenja). S
ko

druge strane, funkcija cilja ne mora uvek biti eksplicitno zadata nekom matematičkom reprezentacijom, već
nekakvim manje formalnim zahtevom (u poglavlju 5.4.2 će biti dat jedan takav primer u kojem se genetskim
algoritmom pronalazi agent koji najbrže vozi automobil na nekoj stazi).
ns
tro

5.2.3 Inicijalizacija
Populaciju jedinki jedne generacije, ukoliko se koristi binarna reprezentacija, čini skup nizova binarnih cifara.
U toku rešavanja jednog problema, obično sve generacije imaju isti broj jedinki. Taj broj, veličina populacije,
ek

je parametar algoritma i on je često nekoliko desetina ili stotina.


Proces inicijalizacije, tj. proces generisanja početne populacije, često je jednostavan. Najčešće se početna
populacija generiše slučajno (tako da pokriva čitav prostor pretrage). Ukoliko se koristi bitovska reprezentacija,
El

jedinke početne generacije mogu se generisati kao slučajni brojevi u intervalu [0, 2𝑛 − 1], gde je 𝑛 dužina
hromozoma u izabranoj reprezentaciji. Dodatno, u početnu populaciju mogu biti dodate neke specifične jedinke
(na primer, iz delova prostora pretrage za koje se veruje da sadrži optimalna rešenja) ili čitava početna populacija
može biti generisana koristeći neki drugi optimizacioni metod. U nekim problemima može da postoji ograničenje
nad potencijalnim rešenjima, tj. jedinkama i njega onda treba uzeti u obzir pri generisanju slučajnih jedinki.
Slično, i u kasnijim fazama algoritma treba voditi računa o neispravnim jedinkama, koje su se pojavile u
populaciji, a po formi ne ispunjavaju uslove koje potencijalna rešenja moraju da ispune. Takve jedinke obično
se koriguju unapred definisanim postupcima.

5.2.4 Selekcija
Selekcija obezbeduje čuvanje i prenošenje dobrih osobina populacije (tj. dobrog genetskog materijala) na
sledeću generaciju. U svakoj generaciji, deo jedinki se izdvaja za reprodukciju i generisanje nove genera-
cije. Izdvajanje jedinki koje će učestovavati u reprodukciji zasniva se na funkciji prilagodenosti i, generalno,
prilagodenije jedinke imaju veću verovatnoću da imaju potomstvo. U najjednostavnijim pristupima biraju se
jedinke sa najvećom vrednošću funkcije prilagodenosti. U drugim pristupima, jedinke se biraju slučajno, ali sa
verovatnoćama koje su izvedene iz prilagodenosti, pri čemu je moguće da budu izabrane i neke lošije prilagodene
63 5. Genetski algoritmi

0.05 0.03

0.20
𝑑 𝑐 0.15

𝑒 𝑏

𝑎 0.05

0.12
𝑓 ℎ 0.10

9)
0.30

1
20
Slika 5.3: Ilustracija ruletske selekcije

(
je
jedinke (to može da pomogne u održavanju genetske raznolikosti i, dalje, u sprečavanju prerane konvergencije
ka nekom lokalnom optimumu). Najpopularnije strategije selekcije su ruletska i turnirska selekcija.
an
Ruletska selekcija Ruletska selekcija (eng. roulette wheel selection) je proces selekcije u kojem veće šanse
izd

da učestvuju u reprodukciji imaju prilagodenije jedinke.


Ako je 𝑓 (𝑖) vrednost funkcije prilagodenosti za jedinku 𝑖, a 𝑁 broj jedinki u populaciji, verovatnoća da će
jedinka 𝑖 biti izabrana da učestvuje u reprodukciji jednaka je
ko

𝑓 (𝑖)
𝑝𝑖 = ∑︀𝑁
𝑗 𝑓 (𝑗)
ns

Naziv ruletske selekcije potiče od analogije koja se može napraviti sa ruletom. Ukoliko polja ruleta imaju
širine proporcionalne verovatnoćama jedinki populacije, onda je proces biranja 𝑚 jedinki za reprodukciju ana-
tro

logan odigravanju 𝑚 partija ruleta.


Primer 5.3. Pretpostavimo da populacija ima osam jedinki: 𝑎, 𝑏, 𝑐, 𝑑, 𝑒, 𝑓, 𝑔, ℎ i da su njihove prilagodenosti
redom 0.10, 0.30, 0.06, 0.10, 0.40, 0.24, 0.60, 0.20. Ukupna prilogodenost generacije jednaka je 2.00. Sledeća
ek

tabela prikazuje verovatnoće izbora jedinki u ruletskoj selekciji:

jedinka a b c d e f g h
El

prilagodenost 0.10 0.30 0.06 0.10 0.40 0.24 0.60 0.20


verovatnoća izbora 0.05 0.15 0.03 0.05 0.20 0.12 0.30 0.10

Slika 5.3 ilustruje, u formi ruleta, verovatnoće izbora koje su pridružene jedinkama.
U opisanom pristupu, podrazumeva se da je funkcija prilagodenosti definisana tako da ima samo pozitivne
vrednosti.
U ruletskoj selekciji moguće je da jedna jedinka bude više puta izabrana da učestvuje u sledećoj generaciji i
reprodukciji. Prevelik broj ponavljanja istih jedinki loše utiče na performanse algoritma.

Turnirska selekcija U turnirskoj selekciji, jedinke „odigravaju turnire“ u kojima veće šanse za pobedu (tj. za
prelazak u narednu generaciju) imaju one sa boljom prilagodenošću.
Za jedan turnir bira se slučajno 𝑘 jedinki iz populacije. Nakon toga, u jednoj varijanti turnirske selekcije,
pobednikom se smatra jedinka sa najvećom prilagodenošću. U drugoj varijanti, izabrane jedinke sortiraju se
po vrednosti funkcije prilagodenosti i 𝑖-ta jedinka u tako sortiranom nizu bira se sa verovatnoćom2 𝑝(1 − 𝑝)𝑖−1 ,
2 Zbir ovih verovatnoća za svako konačnu vrednost 𝑘 manji je od 1. Zato se one mogu skalirati tako da im zbir bude jednak 1

ili neki turniri mogu da ne daju pobednika.


5.2. Komponente genetskog algoritma 64

gde je verovatnoća 𝑝 drugi parametar procesa turnirske selekcije (prvi parametar je 𝑘). Postoje i mnoge druge
varijante turnirske selekcije.
Ukoliko se u procesu selekcije koristi veća veličina turnira, onda nekvalitetne jedinke imaju manje šanse da
budu izabrane. Selekcija sa veličinom turnira 1 ekvivalentna je slučajnoj selekciji. U determinističkoj turnirskoj
selekciji (𝑝 = 1) bira se najbolja jedinka u svakom turniru.
Jedinkama koje su jednom izabrane može se zabraniti učestvovanje u daljim turnirima.

5.2.5 Reprodukcija
U procesu reprodukcije učestvuju jedinke koje su izabrane u procesu selekcije. U ukrštanju (eng. crossover)
učestvuju dve jedinke koje se nazivaju roditelji. Rezultat ukrštanja je jedna nova jedinka ili dve nove jedinke
koje nazivamo decom ili neposrednim potomcima. Očekivano je da deca nasleduju osobine roditelja, uključujući
njihovu prilagodenost, pa i da imaju bolju prilagodenost od svojih roditelja.
Postoji više jednostavnih varijanti ukrštanja kada se koristi binarna reprezentacija. U jednoj varijanti
(višepoziciono ukrštanje) dovoljno je izabrati tačke ukrštanja i prekombinovati nizove bitova — jedno dete
deo od jedne tačke prekida do sledeće nasleduje od jednog roditelja, a naredni deo od drugog. Ukrštanje može

9)
koristiti proizvoljan broj tačaka prekida (s tim da je manji od dužine hromozoma). Slike 5.4 i 5.5 ilustruju
ukrštanje sa jednom (jednopoziciono ukrštanje) i sa dve tačke ukrštanja (dvopoziciono ukrštanje) za binarnu

1
reprezentaciju.

20
roditelj 1

(
roditelj 2
tačka prekida
dete 1 je
an
dete 2
izd

Slika 5.4: Jednopoziciono ukrštanje.


ko

roditelj 1
roditelj 2
ns

tačke prekida
dete 1
tro

dete 2

Slika 5.5: Dvopoziciono ukrštanje.


ek

Uniformno ukrštanje daje dva deteta. Kod ovog ukrštanja svaki bit prvog roditelja se sa verovatnoćom 𝑝
El

prenosi na prvo dete i sa verovatnoćom 1 − 𝑝 na drugo dete (pri čemu dete koje nije izabrano nasleduje bit
drugog roditelja). Verovatnoća 𝑝 je obično jednaka 0.5, ali može biti i drugačija.
Ukrštanje se primenjuje na sledeći način: iz skupa jedinki izabranih u procesu selekcije biraju se dve različite
i ukrštaju sa zadatom verovatnoćom (obično izmedu 0.6 i 0.9). Tačke prekida se biraju slučajno iz skupa svih
mogućih tačaka prekida.

5.2.6 Mutacija
Mutacija se primenjuje nakon procesa ukrštanja. To je operator koji sa odredenom (obično veoma malom)
verovatnoćom menja jedan deo jedinke na odredeni način. Na primer, u binarnoj reprezentaciji mutacija menja
jedan ili više slučajno odabranih gena. Od jedne jedinke dobija se jedna nova jedinka. Verovatnoća da će neki
bit neke jedinke populacije biti promenjen je parametar algoritma i odreduje se eksperimentalno (a obično je
manja od 1%).
Uloga mutacija u genetskim algoritmima je da spreči da jedinke u populaciji postanu suviše slične i da
pomogne u obnavljanju izgubljenog genetskog materijala. Na primer, ukoliko u jednoj generaciji sve jedinke
imaju istu vrednost jednog gena, onda taj gen samo ukrštanjem nikada ne bi mogao da se promeni. Kontroli-
sano podsticanje genetske raznolikosti mutacijom često omogućava izbegavanje lokalnih ekstremuma. Mutacije,
65 5. Genetski algoritmi

naime, omogućavaju razmatranje novih delova prostrora pretrage u nadi da će se naići na globalni ekstremum.
Dovoljno je da se jedna jedinka približi globalnom ekstremumu, pa da za nekoliko generacija sve jedinke budu
u tom delu prostora pretrage.
Ukoliko je verovatnoća mutacije velika, onda usmeravanje pretrage postaje preslabo i ona počinje da liči na
slučajnu pretragu. Ukoliko je verovatnoća mutacije jednaka nuli, onda uopšte nema mutacije i algoritam će
verovatno brzo dospeti do nekog lokalnog ekstremuma.

5.2.7 Politika zamene generacije


Politika zamene generacije opisuje kako se od tekuće generacije dobija nova. Osnovna podela po ovom
kriterijumu je na generacijske genetske algoritme (eng. generational genetic algorithm) i genetske algoritme
stabilnog stanja (eng. steady state genetic algorithm).
U slučaju generacijskih genetskih algoritama, nova generacija dobija se tako što se selekcijom bira dovoljno
jedinki iz tekuće generacije da se napravi cela nova generacija. Izabrane jedinke se ukrštaju i mutiraju i tako
dobijena generacija zamenjuje staru.
U slučaju genetskih algoritama stabilnog stanja, čim se izabere par roditelja, vrše se ukrštanje i mutacija i

9)
umetanje potomaka u populaciju u skladu sa nekom politikom zamene. Postoje raznovrsne politike zamene a
neke od njih su:

1
20
• zamena najgorih, prema kojoj dobijeni potomci zamenjuju najmanje prilagodene jedinke u populaciji;

• nasumična zamena, prema kojoj dobijeni potomci zamenjuju nasumično izabrane jedinke iz populacije;

(
• takmičenje roditelja i potomaka, prema kojoj dobijeni potomci zamenjuju svoje roditelje ukoliko su od
njih bolji; je
an
• turnirska zamena, prema kojoj se jedinka koju dobijeni potomci zamenjuju bira istim mehanizmom kao
kod turnirske selekcije, s tim što se umesto najbolje prilagodenih jedinki biraju najgore.
izd

Pored navedenih, za genetske algoritme stabilnog stanja, postoje i druge strategije zamene.
Elitizam je (opciona) strategija u okviru zamene generacije kojom se nekoliko najboljih jedinki (možda samo
jedna) u generaciji štite od eliminisanja ili bilo kakvih izmena i takve prenose u sledeću generaciju. Ovim se
eliminiše opasnost da se neka posebno kvalitetna jedinka izgubi tokom evolucionog procesa. Elitizam može da
ko

se koristi i u generacijskim politikama i u politikama stabilnog stanja.


ns

5.2.8 Zaustavljanje
tro

Genetski algoritam se izvršava, tj. evolucioni proces stvaranja novih generacija se ponavlja, sve dok nije
zadovoljen neki uslov zaustavljanja. Najčešće se koriste sledeći uslovi zaustavljanja:

• Pronadeno je rešenje koje zadovoljava unapred zadati kriterijum.


ek

• Dostignut je zadati broj generacija.


El

• Funkcija prilagodenosti je izračunata zadati broj puta.

• Vrednost prilagodenosti najbolje jedinke se tokom odredenog broja generacija nije popravila.

• Kombinacija nekoliko uslova.

5.3 Svojstva genetskih algoritama


Genetski algoritmi imaju širok domen i uspešno se primenjuju na velikom broju optimizacionih problema,
često onih koji su NP-kompletni ili teži. S druge strane, još uvek nema mnogo teorijskih rezultata koji govore
o svojstvima genetskih algoritama, o kvalitetu rešenja koja daju, pa čak ni o tome zašto su genetski algoritmi
uspešni. U daljem tekstu, biće reči o nekim dobrim i lošim stranama genetskih algoritama.

Ciljna funkcija. Ciljna funkcija može biti potpuno proizvoljna i ne mora da zadovoljava nikakve uslove (na
primer, da bude neprekidna ili diferencijabilna). Medutim, u primenama u veštačkoj inteligenciji (na
primer, u kretanju robota), ciljna funkcija često nije zadata eksplicitno već implicitno, kroz veći broj
kriterijuma.
5.4. Primeri primene genetskih algoritama 66

Reprezentacija jedinki, funkcija prilagodenosti i operatori. Pogodan izbor reprezentacije jedinki, funk-
cije prilagodenosti i operatora ukrštanja obično su ključni za performanse algoritma (brzina dolaženja do
rešenja i kvalitet rešenja). Ipak, za mnoge optimizacione probleme nije lako konstruisati pogodnu funk-
ciju prilagodenosti jer se obično ne može unapred oceniti da li je nešto rešenje ili nije. U prvoj fazi
rešavanja, reprezentacija jedinki, funkcija prilagodenosti i operatori se prilagodavaju problemu, a onda se
vrši i prilagodavanje parametara algoritma, kao i dodatno fino podešavanje procesa rešavanja.

Parametri algoritma. Pogodan izbor operatora ukrštanja i parametara genetskog algoritma (veličina popu-
lacije, verovatnoća ukrštanja, verovatnoća mutacije, itd) veoma je važan za njegove performanse. S druge
strane, upravo velika sloboda u izboru parametara istovremeno je i pretnja da mogu da budu korišćeni
parametri koji daju loše performanse. Optimizovanje parametara genetskog algoritma je kompleksan pro-
blem koji se najčešće rešava izvodenjem eksperimenata – probnih rešavanja. Za izbor pogodnih parametara
često se koriste sâmi genetski algoritmi. Parametri genetskog algoritma ne moraju biti fiksirani, već mogu
da se menjaju i prilagodavaju tokom rada. Na primer, ukoliko su tekuće jedinke raznolike, onda se može
povećati verovatnoća ukrštanja, a smanjiti mutacija, a ukoliko su slične, onda se može uraditi obratno,
kako bi se povećale šanse za bekstvo jedinki iz lokalnog optimuma.

9)
Domen genetskih algoritama. Genetski algoritmi primenljivi su na veoma širok skup problema. Ipak, za

1
uspešno rešavanje konkretnih problema potrebno je napraviti mnogo dobrih izbora (na primer, za funkciju

20
prilagodenosti i za parametre).

Kvalitet rešenja. Genetski algoritam ne daje garanciju da je pronadeno rešenje globalni optimum. Štaviše,

(
genetski algoritmi često imaju tendenciju da idu ka lokalnim optimumima, pošto je pronalaženje globalnog
optimuma teško. Medutim, i ako nije nadeno rešenje koje je globalni optimum, često je rešenje koje je
je
nadeno dovoljno dobro. Dodatno, kao rezultat algoritma može se ponuditi neki skup najboljih pronadenih
an
jedinki, što je često veoma pogodno. Takvo ponašanje je zadovoljavajuće, posebno u problemima za koje
ne postoje tehnike koje garantuju pronalaženje optimalnog rešenja.
izd

Zahtevani resursi. Genetski algoritmi se jednostavno implementiraju. Ipak, za najbolje rezultate često je
potrebno implementaciju prilagoditi konkretnom problemu. Iako su algoritmi i implementacije obično
jednostavni, izvršavanje genetskih algoritama često je veoma vremenski i memorijski zahtevno. Genetski
algoritmi mogu se pogodno i efikasno paralelizovati.
ko

5.4 Primeri primene genetskih algoritama


ns

U ovom poglavlju biće data dva konkretna, jednostavna, ali ilustrativna primera primene genetskih algori-
tro

tama.

5.4.1 Obilazak table skakačem


ek

Problem obilaska table skakačem je problem pronalaženja putanje skakača na šahovskoj tabli 𝑛 × 𝑛, takve
da skakač poseti što veći broj različitih polja ali nijedno polje dvaput ili više puta.3 U daljem razmatranju,
El

pretpostavićemo dimenzije table 5 × 5. Na slici 5.6, prikazana je jedna putanja skakača od osam poteza koja se
ne može nastaviti.

5
Z0Z0Z 5
Z0Z0Z
4
0Z0Z0 4
0Z0Z0
3
Z0M0Z Z0Z0Z
3 3 5 8
2
0Z0Z0 2
0Z0Z0
7 2
1
Z0Z0Z Z0Z0Z
1 1 4 6 9
a b c d e a b c d e

Slika 5.6: Kretanje skakača (levo) i jedna putanja skakača od osam poteza koja se ne može nastaviti (desno).

3 Strоžije postavljen problem je problem pronalaženja putanje skakača na šahovskoj tabli kojom skakač po jednom posećuje

svako polje table.


67 5. Genetski algoritmi

Za svako od 25 polja treba odrediti na koje je najbolje da skakač prede. U zavisnosti od polja na kojem je,
skakač može preći na dva do osam drugih polja, pa se izbor narednog polja uvek može kodirati pomoću tri bita.
Stoga, za potrebe primene genetskog algoritma, hromozom se može sastojati iz 25 × 3 = 75 bitova, pri čemu
svaka trojka odgovara jednom polju table i označava jedan od osam mogućih poteza sa tog polja. Očigledno,
za neka polja neki od poteza koje hromozom može predstaviti neće biti legalna, ali ih u prvoj verziji svejedno
dopuštamo. U drugoj varijanti, za svako polje dozvoljeni su samo potezi koji su u tom polju zaista mogući.
Za funkciju cilja i funkciju prilagodenosti prirodno se nameće broj skokova koje skakač može da izvede u
skladu sa evaluiranim hromozomom, do skoka van table ili do skoka na već posećeno polje.
Koristi se generacijski genetski algoritam – u svakom koraku bira se dovoljno jedinki da se generiše cela
nova populacija, a potom se vrše ukrštanja i mutacije. Selekcija može da bude jednostavna ruletska. Ukrštanje
može da bude sa jednom tačkom prekida, a mutacija može da se realizuje tako što bi na svakoj poziciji svakog
hromozoma sa nekom unapred zadatom malom verovatnoćom trenutna vrednost bila zamenjena nekom slučajno
izabranom od preostalih. Za obe varijante korišćena je populacija od 3000 jedinki, verovatnoća ukrštanja 0.8,
verovatnoća mutacije po hromozomu 0.05, a maksimalan broj iteracija je bio 1000.
Kako ponašanje genetskog algoritma može značajno zavisiti od polazne populacije koja se slučajno generiše,
može se desiti da se u različitim pokretanjima, dobije različit kvalitet rešenja. Kako bi se stekla bolja slika,

9)
rešavanje je bilo vršeno 10 puta. Potom su izračunati prosečan kvalitet najboljeg rešenja i prosečna generacija
u kojoj je ono nadeno. Prosečna dužina pronadene putanje za prvu varijantu je 19.1, a za drugu 21.6. Prosečan

1
broj iteracija koje su bile potrebne za dostizanje najboljeg pronadenog rešenja je 326.7 za prvu, a 188.0 za drugu.

20
Na slici 5.7, prikazana je zavisnost dužine predene putanje za najbolju jedinku u odnosu na broj iteracija za
po jedno izvršavanje obe varijante genetskog algoritma. Vidi se da druga varijanta u manjem broju generacija
dolazi do kvalitetnijih rešenja, što se i moglo očekivati. Nijedna varijanta nije pronašla putanju koja obilazi sva

(
polja. Razlog za to je što je taj problem previše težak za pravolinijski pristup koji je upotrebljen. Za njegovo
puno rešavanje potrebne su dodatne, napredne tehnike.
je
an
26
24
22
izd

20
18
16
14
12
ko

10
8
6
ns

4
2
0 25 50 75 100125150175200225250275300
tro

Slika 5.7: Zavisnost kvaliteta najbolje jedinke u populaciji od broja generacija za obe varijante genetskog
algoritma. Prva je prikazana plavom bojom, a druga crvenom.
ek
El

5.4.2 Vožnja automobila stazom


Neka je potrebno opisati agenta koji je u stanju da brzo vozi automobil po nekoj stazi. Staza ima start
koji je ujedno i cilj i ima krivine ulevo i udesno. Staza je izdeljena na polja (slika 5.8). Vožnju je potrebno
završiti što brže. Agent raspolaže sa nekoliko akcija — prebacivanje u brzu vožnju, prebacivanje u sporu vožnju,
skretanje ulevo i skretanje udesno. Takode je moguće da agent ne preduzme nikakvu akciju. Bilo koju akciju
da preduzme, agent nastavlja da se kreće pravo. Agent raspolaže skupom senzora — jednim koji meri brzinu
(sporo, brzo) i senzorima za prepreke — levo, desno, jedno polje napred i dva polja napred. Pretpostavljamo
da staza nema slepih krakova niti grananja, pa ako postoji prepreka na polju ispred, onda postoji tačno jedno
slobodno polje levo ili desno. U toku kretanja, agent ne može skretati ukoliko se kreće brzo.
Kako bi obilazak staze bio što pre završen, poželjno je da agent ubrza kada su oba polja ispred njega
slobodna, da uspori kad primeti prepreku dva polja ispred i da skrene na slobodno polje kada primeti prepreku
na polju neposredno ispred.
Prilikom modelovanja ovog problema, potrebno je specifikovati osnovne elemente genetskog algoritma, počev
od reprezentacije hromozoma. Zarad jednostavnosti, koristićemo modifikovanu binarnu reprezentaciju. Svaki
senzor kojim agent raspolaže može da daje dve vrednosti. Stoga agent ne može razlikovati više od 25 = 32
stanja. Neka od tih stanja se neće pojavljivati u toku vožnje (na primer, prepreke i neposredno napred i levo
5.4. Primeri primene genetskih algoritama 68

Slika 5.8: Automobilska staza

i desno), ali neće biti unapred odbačena radi jednostavnosti kodiranja i dekodiranja hromozoma. Svako od

9)
mogućih stanja predstavljaće jednu poziciju u hromozomu na kojoj se beleži akcija koju agent u tom stanju
preduzima. Akcije se mogu kodirati celim brojevima od 0 do 4, na primer, 0 — ne preduzimati ništa, 1 —

1
ubrzati, 2 — usporiti, 3 — skrenuti levo i 4 — skrenuti desno. Na osnovu ovoga, hromozom agenta koji u svakom
stanju samo skreće desno bio bi predstavljen pomoću niza od 32 četvorke. Dekodiranje hromozoma može da se

20
realizuje tako što bi se svakom od senzora dodelio jedan bit pri čemu bi njegova vrednost u slučaju postojanja
prepreke bila 0, a u suprotnom 1 i u slučaju sporog kretanja 0, a u suprotnom 1. Ovi bitovi bi se poredali u

(
fiksiranom poretku, na primer, brzina, polje neposredno ispred, dva polja ispred, polje levo i polje desno. Tada
bi se akcija u slučaju brzog kretanja i sa preprekama levo i desno, a bez prepreka na sledeća dva polja nalazila
zapisana u hromozomu na mestu sa indeksom (10011)2 = 19. je
Funkcija cilja nije eksplicitno data. Dat je samo zahtev da agent što brže vozi. Moguće je definisati funkciju
an
prilagodenosti, ali ni ona neće biti data eksplicitno, već će biti izračunavana simuliranjem ponašanja agenta na
nekoj stazi koja uključuje sve pomenute aspekte vožnje (skretanje, ubrzavanje, itd.). Vožnja će biti simulirana
izd

tako što će agent u svakom koraku da se pomera po jedno polje duž staze u pravcu kretanja. Pri tome se u
svakom koraku dekodira hromozom i odreduje se akcija koju agent preduzima. Svako polje koje agent prede
sporo boduje se sa 1, a svako polje koje se prede brzo, boduje se sa 2. Vrednost funkcija prilagodenosti je zbir
tih bodova. Na taj način će prilikom selekcije biti favorizovani agenti koji brže prelaze stazu. Kako je najvažnije
ko

da agent uopšte završi vožnju, a tek onda da je završi što brže, svaki agent koji završi vožnju dobija dodatne
poene, na primer, onoliko koliko staza ima polja. Na taj način se agenti koji završavaju vožnju favorizuju u
selekciji u odnosu na ostale, pa se evolucija ubrzava ka njima.
ns

Koristi se generacijski genetski algoritam. Selekcija može da bude jednostavna ruletska. Ukrštanje može da
bude sa jednom tačkom prekida, a mutacija može da se realizuje tako što bi na svakoj poziciji svakog hromozoma
tro

sa nekom unapred zadatom malom verovatnoćom trenutna vrednost bila zamenjena nekom slučajno izabranom
od preostalih. Time su definisani genetski operatori.
U eksperimentima je korišćena populacija od 300 jedinki, verovatnoća ukrštanja je bila 0.6, verovatnoća
ek

mutacije po hromozomu 0.001, a maksimalan broj iteracija 1000. Kao i u prošlom primeru, rešavanje je izvršeno
10 puta. Prosečan broj bodova najboljeg nadenog agenta je bio 69.3 od mogućih 70, a prosečan broj iteracije
u kojem je takav agent pronaden je bio 6. Očito, ovaj problem je neuporedivo lakši od problema obilaska table
El

skakačem.

Pitanja i zadaci
Pitanje 5.1. Navesti opšti genetski algoritam.
Pitanje 5.2. Da li, u genetskim algoritmima, ciljna funkcija mora da bude:

• definisana za sve moguće jedinke?


• diskretna?
• neprekidna?
• diferencijabilna?

Pitanje 5.3. Da li, u genetskim algoritmima, funkcija prilagodenosti mora da bude:

• definisana za sve moguće jedinke?


69 5. Genetski algoritmi

• diskretna?

• neprekidna?

• diferencijabilna?

Pitanje 5.4. Ukoliko je genetskim algoritmom potrebno odrediti minimum pozitivne funkcije 𝑓 na nekom
intervalu, da li je pogodno kao funkciju prilagodenosti koristiti funkciju:
(a) 𝑓 ?
(b) −𝑓 ?
(c) inverznu funkciju of 𝑓 ?
(d) 𝑓 ′ ?

Pitanje 5.5. Ukoliko je genetskim algoritmom potrebno odrediti minimum pozitivne funkcije 𝑓 na nekom
intervalu, koju je funkciju koristiti kao funkciju prilagodenosti?

Pitanje 5.6. U genetskim algoritmima, koja se reprezentacija jedinki najčešće koristi?

9)
Pitanje 5.7. Broj mogućih rešenja datog problema je 1000000. Ukoliko se za rešavanje ovog problema koristi

1
genetski algoritam i binarna reprezentacija, onda je dužina hromozoma koji se koriste

20
Pitanje 5.8. Ako je za potrebe primene genetskog algoritma, domen {3, 4, 5, 6, 7, 8, 9, 10} predstavljen
binarnim hromozomima dužine 3 (u istom poretku), kako će biti predstavljena jedinka 9?

(
Pitanje 5.9. Kako se generiše inicijalna populacija u genetskim algoritmima?

Pitanje 5.10. Navesti dva genetska operatora. je


an
Pitanje 5.11. Koliko genetski operatori ukrštanja i mutacije imaju ulaznih jedinki?

Pitanje 5.12. Šta je uloga selekcije u genetskim algoritmima?


izd

Pitanje 5.13. Koje su vrste selekcije u genetskim algoritmima najpopularnije?


(a) Menhetn i ruletska;
(b) Menhetn i turnirska;
ko

(c) ruletska i turnirska;


(d) ruletska i uniformna.
ns

Pitanje 5.14. Koje vrste selekcija se najčešće koriste u genetskim algoritmima?


tro

Pitanje 5.15. Kako se jedinka bira ruletskom selekcijom?

Pitanje 5.16. Ako je 𝑓 (𝑖) vrednost funkcije kvaliteta (prilagodenosti) za jedinku 𝑖, a 𝑁 broj jedinki u populaciji,
verovatnoća da će jedinka 𝑖 ruletskom selekcijom biti izabrana da učestvuje u reprodukciji jednaka je 𝑝𝑖 = 𝑓 𝑥(𝑖) ,
ek

gde je 𝑥 jednako:
(a) 1;
El

∑︀𝑁
(b) 𝑗 𝑓 (𝑗);
∑︀𝑁
(c) 𝑗,𝑗̸=𝑖 𝑓 (𝑗);
∏︀𝑁
(d) 𝑗 𝑓 (𝑗);

Pitanje 5.17. Ukoliko su vrednosti prilagodenosti jedinka 𝑎, 𝑏 i 𝑐 2, 5, 8 redom, koja je verovatnoća da će u
ruletskoj selekciji biti izabrana jedinka 𝑏?

Pitanje 5.18. Genetskim algoritmom se traži maksimum funkcije 20 − 𝑥2 . Populacija sadrži (samo) jedinke
(1), (-4), (2) i (3). Kolika je, za svaku od jedinki, verovatnoća da će biti izabrana za reprodukciju u ruletskoj
selekciji.

Pitanje 5.19. U genetskim algoritmima, ako u jednoj generaciji postoje (samo) jedinke A, B i C sa vred-
nostima prilagodenosti 1, 2 i 3 (redom), koja je verovatnoća da pri ruletskoj selekciji jedinka B ude u proces
reprodukcije?

Pitanje 5.20. Opisati algoritam turnirske selekcije.

Pitanje 5.21. Ako je u turnirskoj selekciji veličina turnira 𝑘 jednaka 1, čemu je ona ekvivalentna?
5.4. Primeri primene genetskih algoritama 70

Pitanje 5.22. Dve jedinke-roditelja imaju binarne reprezentacije 1010 i 0101. Da li se nekom vrstom ukrštanja
može dobiti kao njihov potomak: (a) 0000; (b) 0011; (c) 1111?
Pitanje 5.23. Dve jedinke-roditelja imaju reprezentacije 0011 i 1010. Da li se u nekom njihovom potomku
(dobijenom ukrštanjem) može javiti:
(1) na prvoj poziciji (zdesna nalevo) vrednost 0 (da/ne);
(2) na prvoj poziciji (zdesna nalevo) vrednost 1 (da/ne);
(3) na drugoj poziciji (zdesna nalevo) vrednost 0 (da/ne);
(4) na drugoj poziciji (zdesna nalevo) vrednost 1 (da/ne);
(5) na trećcoj poziciji (zdesna nalevo) vrednost 0 (da/ne);
(6) na trećoj poziciji (zdesna nalevo) vrednost 1 (da/ne);
(7) na četvrtoj poziciji (zdesna nalevo) vrednost 0 (da/ne);
(8) na četvrtoj poziciji (zdesna nalevo) vrednost 1 (da/ne).

Pitanje 5.24. Opisati uniformno ukrštanje koje se koristi u genetskim algoritmima.

9)
Pitanje 5.25. U genetskim algoritmima, kolika je obično verovatnoća da neki bit neke jedinke mutira?

Pitanje 5.26. Da li se od jedinke 1010 mutacijom može dobiti jedinka: (a) 0000; (b) 0011; (c) 1111?

1
20
Pitanje 5.27. Ako tokom primene genetskog algoritma ima 𝑁 jedinki, svaka je predstavljena sa 𝑀 bitova, a
verovatnoća mutacije je 𝑝, koliki je očekivani broj mutiranih gena u jednoj generaciji?

(
Pitanje 5.28. Šta je to elitizam u genetskim algoritmima?

je
Pitanje 5.29. Navesti bar četiri moguća uslova za zaustavljanje genetskog algoritma.

Zadatak 5.1. Napisati implementacije operatora ukrštanja sa jednom tačkom prekida i mutacije za hromozome
an
dužine 𝑛 <= 32.
izd

Zadatak 5.2. Napisati implemenaciju jednostavne ruletske selekcije.

Zadatak 5.3. Napisati C implementacije operatora ukrštanja sa jednom tačkom prekida i mutacije ukoliko se
hromozomi mogu predstaviti kao niske od 32 bita.
ko
ns
tro
ek
El
Deo II

9)
Logika i deduktivno zaključivanje

1
20
(
je
an
izd
ko
ns
tro
ek
El
El
ek
tro
ns
ko
izd
an
je
(20
19)
Glava 6

Rešavanje problema korišćenjem logike

9)
Matematička logika bavi se rigoroznim, deduktivnim metodama zaključivanja, u nekom konkretnom logičkom
okviru. Logičkih okvira ima mnogo i pojedinačno su pogodni za opisivanje raznovrsnih problema.
Rešavanje problema korišćenjem matematičke logike obuhvata:

1
20
• fazu modelovanja;

(
• fazu rešavanja.

je
U fazi modelovanja, problem se opisuje u terminima nekog konkretnog logičkog okvira, a u fazi rešavanja se
ispituje da li on ima rešenje, korišćenjem metoda odlučivanja specifičnih za taj logički okvir.
an
6.1 Modelovanje
izd

Razmotrimo najpre sledeći jednostavan problem.

Primer 6.1. Šef protokola na jednom dvoru treba da organizuje bal za predstavnike ambasada. Kralj traži da na
ko

bal bude pozvan Peru ili da ne bude pozvan Katar (Qatar). Kraljica zahteva da budu pozvani Katar ili Rumunija
(ili i Katar i Rumunija). Princ zahteva da ne bude pozvan Peru ili da ne bude pozvana Rumunija (ili da ne budu
ns

pozvani ni Peru ni Rumunija). Da li je moguće organizovati bal i zadovoljiti zahteve svih članova kraljevske
porodice?
Navedeni problem potrebno je najpre formulisati na neki precizan način. Iskaz, tvrdnju “na bal će doći
tro

ambasador Perua“ označićemo sa 𝑝, iskaz “na bal će doći ambasador Katara“ označićemo sa 𝑞, a iskaz “na bal
će doći ambasador Rumunije“ sa 𝑟. Uslov koji postavlja kralj, onda glasi „važi 𝑝 ili ne važi 𝑞“ ili kraće zapisano
„𝑝 ili ne 𝑞“. Uslov koji postavlja kraljica glasi „𝑞 ili 𝑟“. Uslov koji postavlja princ glasi „ne 𝑝 ili ne 𝑟“.
ek

Sva navedena ograničenja, svi ovi iskazi, zajedno čine novi, komplikovaniji iskaz koji bismo, mogli da
zapišemo na sledeći način:
El

„(𝑝 ili ne 𝑞) i (𝑞 ili 𝑟) i (ne 𝑝 ili ne 𝑟)“


Ovaj složeni iskaz predstavlja precizan zapis problema. Potrebno je proveriti da li polazni iskazi 𝑝, 𝑞 i 𝑟 mogu
da imaju konkretne vrednosti tačno ili netačno takve da složeni iskaz ima vrednost tačno. Da bi se taj problem
rešio potrebno je precizno definisati na koji način se složenim iskazima pridružuje vrednost tačno ili netačno
ukoliko je poznato koje vrednosti su pridružene polaznim iskazima.

Navedeni primer je jednostavan u smislu da u njemu figurišu samo veoma jednostavni iskazi. Stvari postaju
komplikovanije kada je potrebno modelovati tvrdnje koje važe za sve ili za neke elemente nekog skupa.

Primer 6.2. Mogu biti zadate sledeće tvrdnje: „svaki čovek je smrtan“, „Sokrat je čovek“. Pitanje je da li se iz
ovih pretpostavki može utvrditi da je tačna tvrdnja „Sokrat je smrtan“.
Najpre je potrebno precizno opisati navedeni problem. Tvrdnju da je 𝑥 čovek zapišimo kao „𝑥 je čovek“ a
tvrdnju da je 𝑥 smrtan zapišimo kao „𝑥 je smrtan“. Tvrdnju „svaki čovek je smrtan“ zapišimo „za svako 𝑥 važi:
ako je (𝑥 je čovek) onda jе (𝑥 je smrtan)“ Zadato tvrdenje onda (pomalo rogobatno u odnosu na svakodnevni
jezik) glasi:
„ako (za svako 𝑥 važi: ako je (𝑥 je čovek) onda (𝑥 je smrtan)) i (Sokrat je čovek) onda je (Sokrat je smrtan)“.

73
6.2. Rešavanje 74

6.2 Rešavanje
Ispitivanje da li, pod nekim uslovima, složeni iskaz iz primera 6.1 može biti tačan, može se sprovesti tako
što bi bile ispitane vrednosti složenog iskaza za sve moguće vrednosti pridružene iskazima 𝑝, 𝑞 i 𝑟. Tih iskaza
ima tri, za svaki postoje dve mogućnosti, pa ukupno ima 23 mogućnosti koje treba ispitati. Pored ovog naivnog
pristupa, postoje i drugi koji efikasnije vrše ovu proveru.
Ispitivanje da li je tvrdenje iz primera 6.2 tačno, može se sprovesti na sledeći način: pošto za svako 𝑥 važi
„ako je (𝑥 je čovek) onda jе (𝑥 je smrtan)“, važi i kada je 𝑥 jednako Sokrat, tj. važi „ako je (Sokrat je čovek)
onda jе (Sokrat je smrtan)“. Odatle i iz „Sokrat je čovek“ sledi „Sokrat je smrtan“, pa važi dato tvrdenje.
Oba navedena procesa zaključivanja opisani su neformalno i grubo, ali služe kao motivacija za stroga pravila
zaključivanja u iskaznoj logici i logici prvog reda koja će biti opisana u narednim poglavljima.

1 9)
( 20
je
an
izd
ko
ns
tro
ek
El
Glava 7

Iskazna logika

U iskaznoj logici razmatraju se iskazi ili tvrdnje. Iskazne promenljive odgovaraju jednostavnim iskazima. Is-

9)
kazi mogu biti kombinovani u složenije iskaze logičkim veznicima. Iskazna logika je dovoljno izražajna za opisiva-
nje raznovrsnih problema, uključujući mnoge praktične probleme, kao što su, na primer, problemi rasporedivanja

1
ili dizajniranja kombinatornih kola.

20
Iskazna logika ima tri aspekta: sintaksu (koja opisuje njen jezik), semantiku (koja definiše istinitosnu vred-
nost iskaza) i deduktivne sisteme (u okviru kojih se mogu dokazivati teoreme). I semantika i deduktivni sistemi

(
grade se nad istim skupom formula. U ovoj glavi neće biti prikazani deduktivni sistemi za iskaznu logiku, ali
će u narednoj biti prikazani opštiji deduktivni sistemi, za logiku prvog reda. Centralni problemi u iskaznoj
je
logici su ispitivanje da li je data iskazna formula valjana (tautologija) tj. da li je tačna bez obzira na tačnost
elementarnih iskaza od kojih je sačinjena, kao i ispitivanje da li je data iskazna formula zadovoljiva, tj. da li je
an
tačna za neke istinitosne vrednosti elementarnih iskaza od kojih je sačinjena. Problem ispitivanja zadovoljivosti
formule u knf obliku poznat je kao problem sat i on je tipičan predstavnik skupa np-kompletnih problema.
(eng. np-complete problems). Postoji više pristupa i metoda za ispitivanje valjanosti i zadovoljivosti.
izd

U algoritmima za logičko zaključivanje često je neki korak zaključivanja moguće sprovesti na različite načine,
ali nije precizirano na koji način treba da se sprovede. Naime, bez obzira na načinjeni izbor, izvedeni zaključci
su uvek ispravni, ali neki putevi do istog zaključka mogu da budu znatno kraći od drugih i tada je proces
automatskog rasudivanja znatno efikasniji. Ovo pokazuje da je i u logičkom rasudivanju jedan od centralnih
ko

problema problem usmeravanja pretrage.


Kao što je rečeno, sredstvima iskazne logike mogu se opisati mnogi praktični problemi, posebno problemi
ns

nad konačnim domenima. Naime, svaki objekat koji može imati konačan broj stanja može se opisati konačnim
brojem iskaznih promenljivih: ako je broj mogućih stanja 2𝑛 , onda je dovoljno koristiti 𝑛 iskaznih promenljivih.
tro

Svi brojevi zapisani u računaru zapisani su bitovima, pa se i oni mogu modelovati iskaznim promenljivim: koliko
bitova, toliko iskaznih promenljivih. Sabiranje celih brojeva (kao i mnoge druge operacije) onda može da se
opiše u terminima iskazne logike. Slično važi i za mnoge druge vrste podataka i mnoge vrste problema. Sa
ek

tako velikom izražajnom snagom i velikim brojem raznolikih primena, iskazna logika i rešavači za iskaznu logiku
često se smatraju „švajcarskim nožićem“ savremenog računarstva, a posebno – veštačke inteligencije.
El

Primer 7.1. Razmotrimo, za ilustraciju rešavanja primenom logike, problem „𝑛 dama”, opisan ukratko u pri-
meru 2.4 i detaljnije razmatran u poglavlju 7.7.2. Cilj je rasporediti 𝑛 dama na šahovskoj tabli dimenzija 𝑛 × 𝑛
tako da se nikoje dve dame ne napadaju. Na slici 7.1, prikazano je kretanje dame i jedno rešenje problema za
𝑛 = 8.
Jednostavnosti radi, u nastavku ćemo razmatrati problem dimenzije 3, za koji je jedno rasporedivanje tri
dame (koje ne čini rešenje) prikazano na slici 7.1 (dole). Uslovi koje ispravno rasporedivanje treba da zadovolji
su:

• na jednom od polja 𝑎1, 𝑎2, 𝑎3 nalazi se dama.

• na jednom od polja 𝑏1, 𝑏2, 𝑏3 nalazi se dama.

• na jednom od polja 𝑐1, 𝑐2, 𝑐3 nalazi se dama.

• ako je neka dama na polju 𝑎1, onda na polju 𝑎2 ne može da bude dama.

• ako je neka dama na polju 𝑎1, onda na polju 𝑎3 ne može da bude dama.

• ako je neka dama na polju 𝑎2, onda na polju 𝑎1 ne može da bude dama.

75
76

8
0Z0Z0Z0Z 8
0ZQZ0Z0Z
7
Z0Z0Z0Z0 7
Z0Z0ZQZ0
6
0Z0Z0Z0Z 6
0Z0L0Z0Z
5
Z0Z0Z0Z0 5
ZQZ0Z0Z0
4
0Z0L0Z0Z 4
0Z0Z0Z0L
3
Z0Z0Z0Z0 3
Z0Z0L0Z0 3
ZQZ
2
0Z0Z0Z0Z 2
0Z0Z0ZQZ 2
QZ0
1
Z0Z0Z0Z0 1
L0Z0Z0Z0 1
Z0L
a b c d e f g h a b c d e f g h a b c

Slika 7.1: Kretanje dame na tabli 8 × 8 (gore levo), jedno rešenje za problem osam dama (gore desno), jedno
rasporedivanje za problem tri dame koji nije rešenje (dole)

1 9)
• ako je neka dama na polju 𝑎2, onda na polju 𝑎3 ne može da bude dama.

20
• ako je neka dama na polju 𝑎3, onda na polju 𝑎1 ne može da bude dama.

(
• ako je neka dama na polju 𝑎3, onda na polju 𝑎2 ne može da bude dama.

• ...
je
an
• ako je neka dama na polju 𝑎2, onda na polju 𝑏3 ne može da bude dama.

• ako je neka dama na polju 𝑏3, onda na polju 𝑎2 ne može da bude dama.
izd

• ako je neka dama na polju 𝑏1, onda na polju 𝑐2 ne može da bude dama.

• ako je neka dama na polju 𝑐2, onda na polju 𝑏1 ne može da bude dama.
ko

Navedeni uslovi zavise od iskaza oblika „na polju ?? nalazi se dama“. Označimo sa 𝑝𝑎1 iskaz „na polju 𝑎1
nalazi se dama“, sa 𝑝𝑎2 iskaz „na polju 𝑎2 nalazi se dama“, . . ., sa 𝑝𝑐3 iskaz „na polju 𝑐3 nalazi se dama“. Onda
ns

navedeni uslovi mogu da se zapišu kraće:

• 𝑝𝑎1 ili 𝑝𝑎2 ili 𝑝𝑎3 .


tro

• 𝑝𝑏1 ili 𝑝𝑏2 ili 𝑝𝑏3 .


ek

• 𝑝𝑐1 ili 𝑝𝑐2 ili 𝑝𝑐3 .

• ako je 𝑝𝑎1 , onda nije 𝑝𝑎2 .


El

• ako je 𝑝𝑎1 , onda nije 𝑝𝑎3 .

• ako je 𝑝𝑎2 , onda nije 𝑝𝑎1 .

• ako je 𝑝𝑎2 , onda nije 𝑝𝑎3 .

• ako je 𝑝𝑎3 , onda nije 𝑝𝑎1 .

• ako je 𝑝𝑎3 , onda nije 𝑝𝑎2 .

• ...

• ako je 𝑝𝑎2 , onda nije 𝑝𝑏3 .

• ako je 𝑝𝑏3 , onda nije 𝑝𝑎2 .

• ako je 𝑝𝑏1 , onda nije 𝑝𝑐2 .

• ako je 𝑝𝑐2 , onda nije 𝑝𝑏1 .


77 7. Iskazna logika

Ovim su, od jednostavnih iskaza, konstruisani složeniji. Skup svih navedenih složenih uslova čini još složeniji
iskaz – iskaz koji sadrži sve uslove zadatka. Sintaksa iskazne logike govori o pravilima po kojim se od elemen-
tarnih iskaza mogu konstruisati složeniji, to jest, o pravilima za konstruisanje ispravnih iskaznih formula.
Svaki od jednostavnih iskaza kao što je 𝑝𝑎1 može biti tačan ili netačan. U zavisnosti od toga, može se odrediti
istinitosna vrednost složenijih iskaza. Na primer, ako je 𝑝𝑎1 tačno, a 𝑝𝑎2 netačno, onda je tačno i „ako je 𝑝𝑎1 ,
onda nije 𝑝𝑎2 “. Semantika iskazne logike govori o tome kako se složenim iskazima (to jest, iskaznim formulama)
odreduje istinitosna vrednost na osnovu istinitosnih vrednosti elementarnih iskaza. Pošto je, u okviru rešavanja
problema, vrednost iskaza kao što je 𝑝𝑎1 nepoznata i pošto on može biti tačan ili netačan, 𝑝𝑎1 ćemo zvati i
iskazna promenljiva.
Sâmo rešavanje početnog problema, može se svesti na rešavanje sledećeg problema: odrediti istinitosne vred-
nosti elementarnih iskaza 𝑝𝑎1 , 𝑝𝑎2 , . . ., 𝑝𝑐3 takve da svi navedeni uslovi budu ispunjeni (to jest, da odgovarajući
iskazi imaju istinitosnu vrednost tačno). Može se razmatrati i pitanje da li takve istinitosne vrednosti uopšte
postoje, to jest da li početni problem uopšte ima rešenja. Pitanje da li uopšte postoji rešenje može se rešiti raz-
matranjem svih mogućih varijacija vrednosti za 𝑝𝑎1 , 𝑝𝑎2 , . . ., 𝑝𝑐3 . Takvih varijacija ima 29 = 512 i razmatranje
svih je naporno i nepraktično. Postoje i metode koje ne razmatraju sve mogućnosti i postojanje rešenja mogu
obično da ispitaju znatno efikasnije.

9)
U kontekstu navedenih ograničenja, mogu se izvesti i neki zaključci. Na primer, ako je 𝑝𝑎1 onda važi 𝑝𝑏2 ili
𝑝𝑏3 . Ovakvi zaključci mogu se izvesti koristeći različite pristupe, a mogu se koristiti za ubrzavanje traganja za

1
rešenjem.

20
7.1 Sintaksa iskazne logike

(
Sintaksički aspekt iskazne logike govori o njenom jeziku — o skupu njenih (ispravno formiranih) formula i ne
je
razmatra njihovu (moguću) istinitosnu vrednost. Skup iskaznih formula obično se definiše za fiksiran, prebrojiv
skup iskaznih promenljivih 𝑃 , dve logičke konstante — tačno i netačno, kao i konačan skup osnovnih logičkih
an
(tj. bulovskih) veznika: unarnog — negacija i binarnih — konjunkcija, disjunkcija, implikacija, ekvivalencija.
Skup iskaznih formula definiše se induktivno na sledeći način.
izd

Definicija 7.1 (Skup iskaznih formula).


• Iskazne promenljive (elementi skupa 𝑃 ) i logičke konstante su iskazne formule;
ko

• Ako su 𝐴 i 𝐵 iskazne formule, onda su iskazne formule i objekti dobijeni kombinovanjem ovih formula
logičkim veznicima.
ns

U navedenoj definiciji (u duhu apstraktne sintakse) ne govori se o tome kako se zapisuju ili čitaju iskazne
tro

formule, već samo o tome kako se grade na apstraktni način (implicitno — u vidu stabla). Konkretnom sintaksom
može se zadati način na koji se logički veznici i iskazne formule zapisuju. Uobičajeno je da se logičke konstante
tačno i netačno zapisuju kao ⊤ i ⊥ (a čitaju kao te i nete), da se negacija zapisuje kao ¬, konjunkcija kao
ek

∧, disjunkcija kao ∨, implikacija kao ⇒ i ekvivalencija kao ⇔. U takvom konkretnom zapisu — zapisu u
vidu konkretnih nizova simbola, ako su 𝐴 i 𝐵 iskazne formule, onda su iskazne formule i (¬𝐴), (𝐴 ∧ 𝐵),
(𝐴 ∨ 𝐵), (𝐴 ⇒ 𝐵) i (𝐴 ⇔ 𝐵). Na primer, zapis (𝐴 ∧ ⊤) čitamo „𝐴 i te“. U ovakvom, konkretnom zapisu,
El

neophodno je koristiti zagrade kako bi se izbegla višesmislenost. Da bi se izbeglo korišćenje velikog broja
zagrada, obično se izostavljaju spoljne zagrade i podrazumeva se sledeći prioritet veznika (od višeg ka nižem):
¬ , ∧ , ∨ , ⇒ , ⇔.
Elementi skupa 𝑃 obično se označavaju malim latiničnim slovima (eventualno sa indeksima). Iskazne formule
obično se označavaju velikim latiničnim slovima (eventualno sa indeksima). Skupovi iskaznih formula obično se
označavaju velikim slovima grčkog alfabeta (eventualno sa indeksima).

Primer 7.2. Uslovi iz primera 7.1 mogli bi da se zapišu kao iskazne formule nad skupom iskaznih promenljivih
{𝑝𝑎1 , 𝑝𝑎2 , . . . 𝑝𝑐3 }

• 𝑝𝑎1 ∨ 𝑝𝑎2 ∨ 𝑝𝑎3 .

• 𝑝𝑏1 ∨ 𝑝𝑏2 ∨ 𝑝𝑏3 .

• 𝑝𝑐1 ∨ 𝑝𝑐2 ∨ 𝑝𝑐3 .

• 𝑝𝑎1 ⇒ ¬𝑝𝑎2 .

• 𝑝𝑎1 ⇒ ¬𝑝𝑎3 .
7.2. Semantika iskazne logike 78

• 𝑝𝑎2 ⇒ ¬𝑝𝑎1 .

• ...

• 𝑝𝑐2 ⇒ ¬𝑝𝑏1 .

Iskazne promenljive zovemo i iskazne varijable ili iskazna slova. Elemente skupova 𝑃 i {⊤, ⊥} zovemo
atomičkim iskaznim formulama. Literal je iskazna formula koja je ili atomička iskazna formula ili negacija
atomičke iskazne formule.
Ako su dve iskazne formule 𝐴 i 𝐵 sintaksički identične (tj. ako su jednake kao nizovi simbola), onda to
zapisujemo 𝐴 = 𝐵, a inače – pišemo 𝐴 ̸= 𝐵.

Definicija 7.2 (Skup potformula). Skup potformula formule 𝐴 je najmanji skup formula koje zadovoljavaju
sledeće uslove:
• svaka iskazna formula 𝐴 je potformula sâma sebi;

9)
• ako je 𝐴 jednako ¬𝐵, onda je svaka potformula formule 𝐵 istovremeno i potformula formule 𝐴. Ako
je 𝐴 jednako 𝐵 ∧𝐶, 𝐵 ∨𝐶, 𝐵 ⇒ 𝐶 ili 𝐵 ⇔ 𝐶, onda je svaka potformula formule 𝐵 i svaka potformula

1
formule 𝐶 istovremeno i potformula formule 𝐴.

20
Primer 7.3. Skup potformula formule (𝑝 ⇒ 𝑞) ∨ 𝑟 je {𝑝, 𝑞, 𝑟, 𝑝 ⇒ 𝑞, (𝑝 ⇒ 𝑞) ∨ 𝑟}.

(
Na različite načine se može definisati preslikavanje koje svakoj formuli dodeljuje složenost, na primer, dubinu
stabla koje joj odgovara.
je
an
Definicija 7.3 (Zamena). Rezultat zamene (supstitucije) svih pojavljivanja iskazne formule 𝐶 u iskaznoj
formuli 𝐴 iskaznom formulom 𝐷 označavamo sa 𝐴[𝐶 ↦→ 𝐷]. Ta zamena definiše se na sledeći način:
izd

• ako za iskazne formule 𝐴 i 𝐶 važi 𝐴 = 𝐶, onda je 𝐴[𝐶 ↦→ 𝐷] jednako 𝐷;


• ako za iskazne formule 𝐴 i 𝐶 važi 𝐴 ̸= 𝐶 i 𝐴 je atomička iskazna formula, onda je 𝐴[𝐶 ↦→ 𝐷] jednako
𝐴;
ko

• ako za iskazne formule 𝐴, 𝐵 i 𝐶 važi 𝐴 ̸= 𝐶 i 𝐴 = (¬𝐵), onda je 𝐴[𝐶 ↦→ 𝐷] = ¬(𝐵[𝐶 ↦→ 𝐷]);


ns

• ako za iskazne formule 𝐴, 𝐵1 , 𝐵2 i 𝐶 važi 𝐴 ̸= 𝐶 i formula 𝐴 jednaka je (𝐵1 ∧ 𝐵2 ), (𝐵1 ∨ 𝐵2 ),


(𝐵1 ⇒ 𝐵2 ) ili (𝐵1 ⇔ 𝐵2 ), onda je formula 𝐴[𝐶 ↦→ 𝐷] jednaka (redom) (𝐵1 [𝐶 ↦→ 𝐷]) ∧ (𝐵2 [𝐶 ↦→ 𝐷]),
(𝐵1 [𝐶 ↦→ 𝐷]) ∨ (𝐵2 [𝐶 ↦→ 𝐷]), (𝐵1 [𝐶 ↦→ 𝐷]) ⇒ (𝐵2 [𝐶 ↦→ 𝐷]) ili (𝐵1 [𝐶 ↦→ 𝐷]) ⇔ (𝐵2 [𝐶 ↦→ 𝐷]).
tro

Pitanja i zadaci
ek

Pitanje 7.1. Da li nad konačnim skupom iskaznih promenljivih ima konačno ili prebrojivo ili neprebrojivo
mnogo (sintaksički) različitih iskaznih formula?
El

Pitanje 7.2. Da li nad prebrojivim skupom iskaznih promenljivih ima konačno ili prebrojivo ili neprebrojivo
mnogo (sintaksički) različitih iskaznih formula?
Pitanje 7.3. Šta je literal u iskaznoj logici?

Pitanje 7.4. Ako za iskazne formule 𝐴 i 𝐶 važi 𝐴 = 𝐶, čemu je jednako 𝐴[𝐶 ↦→ 𝐷]?

Pitanje 7.5. Ako za iskazne formule 𝐴 i 𝐶 važi 𝐴 ̸= 𝐶 i 𝐴 je atomička formula, čemu je jednako 𝐴[𝐶 ↦→ 𝐷]?
Pitanje 7.6. Čemu je jednako (𝑝 ∧ (¬𝑞 ∨ 𝑟))[¬𝑞 ∨ 𝑟 ↦→ 𝑞 ⇒ 𝑟]?

7.2 Semantika iskazne logike


Semantički aspekt iskazne logike govori o istinitosnoj vrednosti formula. U nastavku će biti uvedena seman-
tika iskazne logike u stilu Tarskog (koji je prvi precizno uveo pojam semantike 1933. godine). Osnovna ideja
semantike Tarskog je da istinitosne vrednosti formula iskazne logike definiše u skladu sa uobičajenim, svakod-
nevnim rasudivanjem. Na primer, iskaz 𝐴 i 𝐵 je tačan ako su tačni i iskaz 𝐴 i iskaz 𝐵. Zbog toga, definicija
79 7. Iskazna logika

Tarskog može da deluje čak i suvišno. Ipak, ona je naravno potrebna jer je potrebno na strogi način definisati
istinitosnu vrednost iskaznih formula.
Istinitosna vrednost iskazne formule može biti 0 ili 1 (što odgovara konstantnim iskazima tačno i netačno).
Istinitosna vrednost složenih (neatomičkih) formula zavisi samo od istinitosne vrednosti njenih potformula.
Dakle, u krajnjoj instanci, istinitosna vrednost formule zavisi (samo) od istinitosnih vrednosti iskaznih pro-
menljivih koje se u njoj pojavljuju. Da bi se odredila istinitosna vrednost formule nad skupom promenljivih
𝑃 , potrebno je (i dovoljno) da su unapred odredene istinitosne vrednosti elemenata skupa 𝑃 . Funkcije koje
pridružuju istinitosnu vrednost promenljivim (tj. funkcije 𝑣 iz 𝑃 u {0, 1}) zovemo valuacijama. Funkciju koja
na osnovu jedne valuacije pridružuje istinitosne vrednosti složenim formulama zovemo interpretacija.
Svaka valuacija 𝑣 odreduje jednu funkciju 𝐼𝑣 koju zovemo interpretacijom za valuaciju 𝑣 i koja pridružuje
istinitosne vrednosti složenim formulama (tj. preslikava skup iskaznih formula u skup {0, 1}). Interpretaciju 𝐼𝑣
(za valuaciju 𝑣) definišemo na sledeći način:
• 𝐼𝑣 (𝑝) = 𝑣(𝑝), za svaki element 𝑝 skupa 𝑃 ;
• 𝐼𝑣 (⊤) = 1 i 𝐼𝑣 (⊥) = 0;

9)
1, ako je 𝐼𝑣 (𝐴) = 0
{︂
• 𝐼𝑣 (¬𝐴) =
0, inače

1
1, ako je 𝐼𝑣 (𝐴) = 1 i 𝐼𝑣 (𝐵) = 1
{︂

20
• 𝐼𝑣 (𝐴 ∧ 𝐵) =
0, inače

0, ako je 𝐼𝑣 (𝐴) = 0 i 𝐼𝑣 (𝐵) = 0

(
{︂
• 𝐼𝑣 (𝐴 ∨ 𝐵) =
1, inače

• 𝐼𝑣 (𝐴 ⇒ 𝐵) =
{︂
0, ako je 𝐼𝑣 (𝐴) = 1 i 𝐼𝑣 (𝐵) = 0 je
an
1, inače

1, ako je 𝐼𝑣 (𝐴) = 𝐼𝑣 (𝐵)


{︂
• 𝐼𝑣 (𝐴 ⇔ 𝐵) =
izd

0, inače
Funkcijom 𝐼𝑣 , definisanom na navedeni način, svakoj formuli pridružuje se (jedinstvena) istinitosna vrednost.
Vrednost 𝐼𝑣 (𝐴) zovemo istinitosnom vrednošću iskazne formule 𝐴 u interpretaciji 𝐼𝑣 . Ako za valuaciju 𝑣 važi
𝐼𝑣 (𝐴) = 1, onda se kaže da je iskazna formula 𝐴 tačna u interpretaciji 𝐼𝑣 i da je iskazna formula 𝐴 tačna u
ko

valuaciji 𝑣. Ako za valuaciju 𝑣 važi 𝐼𝑣 (𝐴) = 0, onda se kaže da je iskazna formula 𝐴 netačna u interpretaciji 𝐼𝑣 .
Naglasimo da 𝐼𝑣 (𝐴) = 0 nije formula iskazne logike, nego je to formula koja govori o iskaznoj formuli, pa je
ns

zato zovemo meta formula.


Primer 7.4. U primeru 7.2 (koji je nastavak) primera 7.1, ako je 𝑣(𝑝𝑎1 ) = 1 i 𝑣(𝑝𝑎2 ) = 1, onda je 𝐼𝑣 (𝑝𝑎1 ⇒
tro

¬𝑝𝑎2 ) = 0. Ovo, drugim rečima, govori da ni u jednom rešenju ne mogu dame da budu i na polju 𝑎1 i na polju
𝑎2.
ek

Definicija 7.4 (Zadovoljivost, valjanost, kontradiktornost, porecivost). Za iskaznu formulu 𝐴 kaže se da


El

je:

• zadovoljiva ako postoji valuacija 𝑣 u kojoj je 𝐴 tačna. Tada se kaže da je 𝑣 model za 𝐴 i pišemo
𝑣 |= 𝐴.
• valjana ili tautologija ako je tačna u svakoj valuaciji, tj. ako za svaku valuaciju 𝑣 važi 𝑣 |= 𝐴 i to
zapisujemo |= 𝐴.
• nezadovoljiva ili kontradikcija ako ne postoji valuacija u kojoj je tačna.
• poreciva ako postoji valuacija u kojoj nije tačna.

Primer 7.5. Iskazne formule 𝑝 ⇒ 𝑝 i 𝑝 ∨ ¬𝑝 su tautologije, iskazna formula 𝑝 ⇒ 𝑞 je zadovoljiva i poreciva, a


iskazna formula 𝑝 ∧ ¬𝑝 je kontradikcija.

Definicija 7.5 (Zadovoljivost i kontradiktornost skupa formula). Skup iskaznih formula Γ je zadovoljiv
ako postoji valuacija u kojoj je svaka formula iz Γ tačna. Za valuaciju 𝑣 u kojoj su sve formule iz Γ tačne,
7.2. Semantika iskazne logike 80

kaže se da je model za Γ. Skup iskaznih formula Γ je nezadovoljiv ili kontradiktoran ako ne postoji valuacija
u kojoj je svaka formula iz Γ tačna.

Primer 7.6. Skup iskaznih formula {𝑝 ⇒ 𝑞, 𝑝, ¬𝑞} je kontradiktoran (ali nijedan njegov pravi podskup nije
kontradiktoran).

Primer 7.7. U primeru 7.1, uslov koji rešenje mora da zadovolji može da se razmatra ne samo kao konjunkcija
svih pojedinačnih uslova, već i kao skup formula koje odgovaraju pojedinačnim uslovima. Na osnovu svojstava
semantike Tarskog, svaka valuacija koja je model takve konjunkcije je i model skupa formula koje odgovaraju
pojedinačnim uslovima i obratno.

Primer 7.8. Ako su iskazne formule 𝐴 i 𝐴 ⇒ 𝐵 tautologije, onda je i 𝐵 tautologija. Zaista, pretpostavimo da
su 𝐴 i 𝐴 ⇒ 𝐵 tautologije i da postoji valuacija 𝑣 u kojoj formula 𝐵 nije tačna. Formula 𝐴 je tautologija, pa je
tačna i u valuaciji 𝑣. Kako je u toj valuaciji, formula 𝐴 tačna, a formula 𝐵 netačna, formula 𝐴 ⇒ 𝐵 u njoj
nije tačna, što protivreči pretpostavci da je 𝐴 ⇒ 𝐵 tautologija. Dakle, formula 𝐵 je tačna u svakoj valuaciji,
pa je ona tautologija.

9)
Pitanja i zadaci

1
Pitanje 7.7. Navesti primer iskazne formule koja je:

20
• zadovoljiva;

(
• valjana;
• poreciva; je
an
• kontradikcija;
• zadovoljiva i valjana;
izd

• zadovoljiva i nije valjana;


• zadovoljiva i poreciva;
ko

• zadovoljiva i nije poreciva;


• zadovoljiva i nije kontradikcija;
ns

• valjana i nije poreciva;


tro

• valjana i nije kontradikcija;


• poreciva i nije zadovoljiva;
ek

• poreciva i nije valjana;


• poreciva i kontradikcija;
El

• poreciva i nije kontradikcija;


• kontradikcija i nije zadovoljiva;
• kontradikcija i nije valjana.
Pitanje 7.8. Da li je formula (¬𝑝 ∨ 𝑞) ⇒ (¬𝑞 ∨ 𝑝) tautologija, zadovoljiva, poreciva ili nezadovoljiva?

Pitanje 7.9. Da li je formula (¬𝑝 ∧ 𝑝 ∧ ¬𝑟) ⇒ (¬𝑞 ∨ 𝑟) tautologija, zadovoljiva, poreciva ili nezadovoljiva?

Pitanje 7.10. Ako iskazna formula ima barem jedan model, kakva je onda ona?
Pitanje 7.11. Ako iskazna formula nema nijedan model, kakva je onda ona?

Pitanje 7.12. Ako iskazna formula nije poreciva, kakva je onda ona?

Pitanje 7.13. Ako iskazna formula nije zadovoljiva, kakva je onda ona?

Pitanje 7.14. Ako iskazna formula nije kontradikcija, kakva je onda ona?
81 7. Iskazna logika

Pitanje 7.15. Ako je formula ¬𝐹 zadovoljiva, kakva je onda formula 𝐹 ?


Pitanje 7.16. Ako su iskazne formule 𝐴 i 𝐴 ⇒ 𝐵 tautologije, da li je onda formula 𝐵 tautologija, zadovoljiva,
poreciva ili kontradikcija?

Pitanje 7.17. Ako su iskazne formule 𝐴 i 𝐴 ⇒ 𝐵 zadovoljive, onda formula 𝐵 nije nužno zadovoljiva.
Napraviti jedan takav primer (u kojem 𝐵 nije zadovoljiva, a 𝐴 i 𝐴 ⇒ 𝐵 jesu).

Pitanje 7.18. Kada je iskazna formula 𝐴 ⇒ 𝐵 tačna u valuaciji 𝑣?

Pitanje 7.19. Kada je 𝐼𝑣 (𝐴 ⇒ 𝐵) = 0?


Pitanje 7.20. U iskaznoj logici, za neku valuaciju 𝑣, čemu je jednaka vrednost 𝐼𝑣 (𝐴 ⇔ 𝐵)?

Pitanje 7.21. Kako se definiše interpretacija u iskaznoj logici?



Zadatak 7.1. Neka su 𝐴, 𝐵, 𝐶, 𝐷 iskazne formule takve da su formule 𝐴 ⇒ (𝐵 ⇒ 𝐶) i (𝐴 ∧ 𝐶) ⇒ ¬𝐷
tautologije. Dokazati da je i formula (𝐷 ∧ 𝐴) ⇒ ¬𝐵 tautologija.

9)
Zadatak 7.2. Dokazati sledeća tvrdenja:

1
(a) Ako su formule 𝐴 ∨ 𝐵 i ¬𝐴 ∨ 𝐶 tautologije, onda je i 𝐵 ∨ 𝐶 tautologija.

20
(b) Ako su formule 𝐴 ∨ 𝐵, 𝐴 ⇒ 𝐶, 𝐵 ⇒ 𝐷 tautologije, onda je i 𝐶 ∨ 𝐷 tautologija.
(c) Ako su formule ¬𝐴 ∨ 𝐵 i ¬𝐶 ∨ ¬𝐵 tautologije, onda je i 𝐴 ⇒ ¬𝐶 tautologija.

(
Zadatak 7.3. Dokazati sledeća tvrdenja:
(a) Ako je iskazna formula valjana, onda je ona zadovoljiva.
(b) Ako je iskazna formula kontradikcija, onda je ona poreciva.je
(c) Ako iskazna formula nije zadovoljiva, onda je ona kontradikcija i obratno.
an
(d) Ako iskazna formula nije tautologija, onda je ona poreciva i obratno.
Zadatak 7.4. Dokazati sledeća tvrdenja:
izd

(a) Iskazna formula 𝐴 je valjana ako i samo ako je ¬𝐴 kontradikcija.


(b) Iskazna formula 𝐴 je zadovoljiva ako i samo ako je ¬𝐴 poreciva.
Zadatak 7.5. Pokazati da iskazne formule 𝑝 ⇒ (𝑞 ⇒ 𝑟) i (𝑝 ⇒ 𝑞) ⇒ 𝑟 nisu logički ekvivalentne.
ko

Zadatak 7.6. Dokazati sledeća tvrdenja (Γ i Δ su skupovi iskaznih formula, 𝐴 je iskazna formula):
(a) Ako je Γ zadovoljiv i Δ ⊂ Γ, onda je Δ zadovoljiv.
ns

(b) Ako je Γ zadovoljiv i 𝐴 valjana, onda je Γ ∪ {𝐴} zadovoljiv.


(c) Ako je Γ kontradiktoran i Γ ⊂ Δ, onda je Δ kontradiktoran.
tro

(d) Ako je Γ kontradiktoran i 𝐴 valjana, onda je Γ ∖ {𝐴} kontradiktoran.

7.3 Istinitosne tablice i odlučivost problema zadovoljivosti


ek

Pravila za odredivanje vrednosti iskazne formule u zadatoj valuaciji (navedena u prethodnom poglavlju)
El

mogu biti predstavljena osnovnim istinitosnim tablicama:

𝐴 ¬𝐴
0 1
1 0

𝐴 𝐵 𝐴∧𝐵 𝐴∨𝐵 𝐴⇒𝐵 𝐴⇔𝐵


0 0 0 0 1 1
0 1 0 1 1 0
1 0 0 1 0 0
1 1 1 1 1 1

Na osnovu navedenih tablica (tj. na osnovu pravila za odredivanje vrednosti formule), može se konstruisati
istinitosna tablica za proizvoljnu iskaznu formulu. U istinitosnoj tablici za neku formulu svakoj vrsti odgovara
jedna valuacija iskaznih slova koja se pojavljuju u toj formuli. Svakoj koloni odgovara jedna potformula te
formule. Istinitosne tablice su pogodne i za ispitivanje valjanosti, zadovoljivosti, nezadovoljivosti i porecivosti.
Ukoliko iskazna formula 𝐴 sadrži iskazne promenljive 𝑝1 , 𝑝2 , . . ., 𝑝𝑛 , istinitosna tablica treba da sadrži sve
moguće valuacije za ovaj skup promenljivih (valuacije za druge promenljive nisu relevantne). Takvih valuacija
7.3. Istinitosne tablice i odlučivost problema zadovoljivosti 82

ima 2𝑛 . U zavisnosti od vrednosti iskaznih promenljivih, izračunavaju se vrednosti složenijih iskaznih formula,
sve do sâme iskazne formule koja se ispituje. Ako su u koloni koja odgovara sâmoj iskaznoj formuli sve vrednosti
jednake 1, formula je tautologija. Ako je bar jedna vrednost jednaka 1, formula je zadovoljiva. Ako je bar jedna
vrednost jednaka 0, formula je poreciva. Ako su sve vrednosti jednake 0, formula je kontradikcija. Ovo pokazuje
da su problemi ispitivanja valjanosti, zadovoljivosti, nezadovoljivosti i porecivosti odlučivi problemi, tj. postoje
algoritmi koji ih mogu rešiti.

Primer 7.9. Iskaznoj formuli (¬𝑞 ⇒ ¬𝑝) ⇒ (𝑝 ⇒ 𝑞) odgovara sledeća istinitosna tablica:

𝑝 𝑞 ¬𝑞 ¬𝑝 ¬𝑞 ⇒ ¬𝑝 𝑝⇒𝑞 (¬𝑞 ⇒ ¬𝑝) ⇒ (𝑝 ⇒ 𝑞)


0 0 1 1 1 1 1
0 1 0 1 1 1 1
1 0 1 0 0 0 1
1 1 0 0 1 1 1

Dakle, data formula je zadovoljiva i valjana. Ona nije poreciva i nije kontradikcija.

9)
Primer 7.10. Istinitosna tablica može biti zapisana u skraćenom obliku — zapisivanjem samo zadate iskazne

1
formule i odgovarajućih vrednosti ispod pojedinačnih iskaznih slova i veznika. Iskaznoj formuli iz prethodnog
primera odgovara sledeća skraćena istinitosna tablica (popunjena u nekoliko koraka):

20
(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)

(
0 0 0 0
1 0 0 1
0
1
1
1
je
1
1
0
1
an
(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)
izd

1 0 1 0 0 1 0
0 1 1 0 0 1 1
1 0 0 1 1 0 0
0 1 0 1 1 1 1
ko

(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)
ns

1 0 1 1 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 1 1 0 0
tro

0 1 1 0 1 1 1 1

(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)
ek

1 0 1 1 0 1 0 1 0
0 1 1 1 0 1 0 1 1
El

1 0 0 0 1 1 1 0 0
0 1 1 0 1 1 1 1 1

Primer 7.11. U primeru 7.1, za tablu dimenzije 3 × 3, razmatra se skup formula nad 9 iskaznih promenljivih,
te bi odgovarajuća istinitosna tablica imala 29 = 512 vrsta.

Pitanja i zadaci
Pitanje 7.22. Da li je u iskaznoj logici odlučiv problem proveravanja

• zadovoljivosti?
• valjanosti?
• porecivosti?
• kontradiktornosti?

Zadatak 7.7. Ispitati metodom istinitosnih tablica da li je iskazna formula ¬((𝑞 ⇒ 𝑝) ⇒ 𝑝) ⇒ ¬𝑝 zadovoljiva.
83 7. Iskazna logika

Zadatak 7.8. Ispitati metodom tablica da li je iskazna formula (𝑝 ⇒ (𝑞 ⇒ 𝑟)) ⇒ ((𝑝 ⇒ 𝑞) ⇒ (𝑝 ⇒ 𝑟))
tautologija.

Zadatak 7.9. Neka su 𝐴, 𝐵, 𝐶, 𝐷 iskazne formule takve da su formule 𝐴 ⇒ (𝐵 ⇒ 𝐶) i (𝐴 ∧ 𝐶) ⇒ ¬𝐷
tautologije. Dokazati, korišćenjem istinitosnih tablica, da je i formula (𝐷 ∧ 𝐴) ⇒ ¬𝐵 tautologija.

Zadatak 7.10. Odrediti formulu 𝐴 takvu da je formula ((𝐴 ∧ 𝑞) ⇒ ¬𝑝) ⇒ ((𝑝 ⇒ ¬𝑞) ⇒ 𝐴) tautologija.
Zadatak 7.11. Odrediti, korišćenjem istinitosnih tablica, (ako postoji) formulu 𝐴 takvu da je formula ((𝑝 ⇒
(¬𝑞 ∧ 𝑟)) ⇒ 𝐴) ⇒ (𝐴 ∧ ((𝑟 ⇒ 𝑞) ∧ 𝑝)) tautologija.

Zadatak 7.12. Odrediti (ako postoji) formulu 𝐴 takvu da je formula ((𝑝 ⇒ (¬𝑞∧𝑟)) ⇒ 𝐴) ⇒ (𝐴∧((𝑟 ⇒ 𝑞)∧𝑝))
tautologija.

7.4 Logičke posledice i logički ekvivalentne formule

9)
Često je veoma važno pitanje da li je neki iskaz posledica nekih drugih iskaza. Ovo pitanje se može opisati
u terminima pojma logičke posledice.

1
20
Definicija 7.6 (Logička posledica). Kaže se da je iskazna formula 𝐴 logička posledica skupa iskaznih
formula Γ i pišemo Γ |= 𝐴 ako je svaki model za skup Γ istovremeno i model za formulu 𝐴.

(
je
Kada je skup Γ konačan, tada {𝐴1 , ..., 𝐴𝑛 } |= 𝐵 (tj. Γ |= 𝐵) pišemo kraće 𝐴1 , ..., 𝐴𝑛 |= 𝐵. Ako je formula
𝐴 logička posledica praznog skupa formula (tj. ako je svaki model model za 𝐴), onda to zapisujemo |= 𝐴. Ako
an
ne važi Γ |= 𝐴, onda to zapisujemo Γ ̸|= 𝐴.
izd

Teorema 7.1.
(a) Formula je valjana ako i samo ako je logička posledica praznog skupa formula.
(b) Ako je skup Γ kontradiktoran, onda je svaka formula njegova logička posledica. Specijalno, svaka
ko

formula je logička posledica skupa {⊥}.


(c) Ako za skupove formula Γ i Δ važi Γ ⊂ Δ i Γ |= 𝐴, onda je Δ |= 𝐴.
ns
tro

Dokaz:

(a) Ako je formula valjana, onda je ona tačna u svakoj valuaciji pa i u svakom modelu praznog skupa
ek

formula, te je ona logička posledica praznog skupa formula. Svaka valuacija je model za prazan skup
formula, pa ako je formula logička posledica praznog skupa formula, onda je ona tačna u svakoj
El

valuaciji, te je valjana.
(b) Ako je skup Γ kontradiktoran, onda on nema nijedan model. Važi da je svaki model iz tog (praznog!)
skupa modela model za proizvoljnu formulu, pa je proizvoljna formula logička posledica skupa Γ.
(c) Pretpostavimo da važi Γ ⊂ Δ i Γ |= 𝐴. Iz Γ |= 𝐴 sledi da je proizvoljan model za Γ model i za 𝐴.
Kako je Γ ⊂ Δ, proizvoljan model za Δ je model za Γ, pa i za 𝐴. Dakle, važi Δ |= 𝐴.

Treće svojstvo u navedenoj teoremi govori da je iskazna logika monotona — da proširivanjem skupa pretpo-
stavki ne može da se izgubi neka posledica.
Primetimo da se simbol |= koristi i za zapisivanje da je valuacija 𝑣 model formule 𝐴 i za označavanje relacije
logičke posledice. Primetimo i da u oba slučaja zapis |= 𝐴 ima isto suštinsko značenje — da je formula 𝐴 valjana.

Definicija 7.7 (Logička ekvivalencija). Kaže se da su dve iskazne formule 𝐴 i 𝐵 logički ekvivalentne i
pišemo 𝐴 ≡ 𝐵 ako je svaki model formule 𝐴 model i za 𝐵 i obratno (tj. ako važi 𝐴 |= 𝐵 i 𝐵 |= 𝐴).
7.4. Logičke posledice i logički ekvivalentne formule 84

Ako je svaki model za 𝐴 istovremeno i model za 𝐵 i obratno, onda u bilo kojoj valuaciji formule 𝐴 i 𝐵
imaju jednake vrednosti. Tvrdenja oblika 𝐴 ≡ 𝐵 zovemo logičkim ekvivalencijama. Relacija ≡ je, očigledno,
relacija ekvivalencije nad skupom iskaznih formula. Naredna teorema govori o tome kako problem ispitivanja
da li su neke dve formule logički ekvivalentne može da se svede na problem ispitivanja da li je neka formula
tautologija. Tvrdenje oblika 𝐴 ≡ 𝐵 nije iskazna formula već meta formula (formula o formulama iskazne logike),
a 𝐴 ⇔ 𝐵 jeste, te naredna teorema povezuje meta nivo iskazne logike sa objektnim nivoom (koji čine sâme
iskazne formule).

Teorema 7.2. Važi 𝐴 ≡ 𝐵 ako i samo ako je iskazna formula 𝐴 ⇔ 𝐵 tautologija.

Dokaz: Pretpostavimo da važi 𝐴 ≡ 𝐵. U proizvoljnoj valuaciji 𝑣 formule 𝐴 i 𝐵 imaju istu vrednost, pa je


formula 𝐴 ⇔ 𝐵 tačna u 𝑣. Odatle sledi da je 𝐴 ⇔ 𝐵 tautologija. Pretpostavimo da je 𝐴 ⇔ 𝐵 tautologija.
Ako je u proizvoljnoj valuaciji 𝑣 formula 𝐴 tačna, onda mora da je i 𝐵 tačna u 𝑣 (jer je formula 𝐴 ⇔ 𝐵
tačna u 𝑣). Dakle, svaki model za 𝐴 je model i za 𝐵. Analogno važi obratno — svaki model za 𝐵 je model

9)
i za 𝐴, te sledi 𝐴 ≡ 𝐵, što je i trebalo dokazati. 

1
Primer 7.12. Za formule 𝑝𝑎1 ⇒ ¬𝑝𝑎3 i 𝑝𝑎3 ⇒ ¬𝑝𝑎1 iz primera 7.1, može se pokazati da važi: 𝑝𝑎1 ⇒ ¬𝑝𝑎3 ≡

20
𝑝𝑎3 ⇒ ¬𝑝𝑎1 . To govori da nije potrebno da u skupu uslova postoje obe formule, dovoljno je zadržati jednu od
njih. Isto važi i za druge analogne parove formula, te je dovoljno razmatrati sledeći skup formula:

(
𝑝𝑎1 ∨ 𝑝𝑎2 ∨ 𝑝𝑎3 , 𝑝𝑏1 ∨ 𝑝𝑏2 ∨ 𝑝𝑏3 , 𝑝𝑐1 ∨ 𝑝𝑐2 ∨ 𝑝𝑐3 ,
𝑝𝑎1 ⇒ ¬𝑝𝑎2 , 𝑝𝑎1 ⇒ ¬𝑝𝑎3 , 𝑝𝑎2 ⇒ ¬𝑝𝑎3 ,
𝑝𝑏1 ⇒ ¬𝑝𝑏2 , 𝑝𝑏1 ⇒ ¬𝑝𝑏3 , 𝑝𝑏2 ⇒ ¬𝑝𝑏3 ,
je
an
𝑝𝑐1 ⇒ ¬𝑝𝑐2 , 𝑝𝑐1 ⇒ ¬𝑝𝑐3 , 𝑝𝑐2 ⇒ ¬𝑝𝑐3 ,
𝑝𝑎1 ⇒ ¬𝑝𝑏1 , 𝑝𝑎1 ⇒ ¬𝑝𝑐1 , 𝑝𝑏1 ⇒ ¬𝑝𝑐1 ,
izd

𝑝𝑎2 ⇒ ¬𝑝𝑏2 , 𝑝𝑎2 ⇒ ¬𝑝𝑐2 , 𝑝𝑏2 ⇒ ¬𝑝𝑐2 ,


𝑝𝑎3 ⇒ ¬𝑝𝑏3 , 𝑝𝑎3 ⇒ ¬𝑝𝑐3 , 𝑝𝑏3 ⇒ ¬𝑝𝑐3 ,
𝑝𝑎3 ⇒ ¬𝑝𝑏2 , 𝑝𝑎3 ⇒ ¬𝑝𝑐1 , 𝑝𝑏2 ⇒ ¬𝑝𝑐1 ,
ko

𝑝𝑎2 ⇒ ¬𝑝𝑏1 , 𝑝𝑏3 ⇒ ¬𝑝𝑐2 ,


𝑝𝑎1 ⇒ ¬𝑝𝑏2 , 𝑝𝑎1 ⇒ ¬𝑝𝑐3 , 𝑝𝑏2 ⇒ ¬𝑝𝑐3 ,
ns

𝑝𝑎2 ⇒ ¬𝑝𝑏3 , 𝑝𝑏1 ⇒ ¬𝑝𝑐2 .


Primer 7.13. Neke od logičkih ekvivalencija (ili, preciznije, neke od shema logičkih ekvivalencija) su:
tro

¬¬𝐴 ≡ 𝐴 zakon dvojne negacije


𝐴 ∨ ¬𝐴 ≡ ⊤ zakon isključenja trećeg
ek

𝐴∧𝐴 ≡ 𝐴 zakon idempotencije za ∧


𝐴∨𝐴 ≡ 𝐴 zakon idempotencije za ∨
zakon komutativnosti za ∧
El

𝐴∧𝐵 ≡ 𝐵∧𝐴
𝐴∨𝐵 ≡ 𝐵∨𝐴 zakon komutativnosti za ∨
𝐴⇔𝐵 ≡ 𝐵⇔𝐴 zakon komutativnosti za ⇔
𝐴 ∧ (𝐵 ∧ 𝐶) ≡ (𝐴 ∧ 𝐵) ∧ 𝐶 zakon asocijativnosti za ∧
𝐴 ∨ (𝐵 ∨ 𝐶) ≡ (𝐴 ∨ 𝐵) ∨ 𝐶 zakon asocijativnosti za ∨
𝐴 ⇔ (𝐵 ⇔ 𝐶) ≡ (𝐴 ⇔ 𝐵) ⇔ 𝐶 zakon asocijativnosti za ⇔
𝐴 ∧ (𝐴 ∨ 𝐵) ≡ 𝐴 zakon apsorpcije
𝐴 ∨ (𝐴 ∧ 𝐵) ≡ 𝐴 zakon apsorpcije
𝐴 ∧ (𝐵 ∨ 𝐶) ≡ (𝐴 ∧ 𝐵) ∨ (𝐴 ∧ 𝐶) zakon distributivnosti ∧ u odnosu na ∨
(𝐵 ∨ 𝐶) ∧ 𝐴 ≡ (𝐵 ∧ 𝐴) ∨ (𝐶 ∧ 𝐴) zakon distributivnosti ∧ u odnosu na ∨
𝐴 ∨ (𝐵 ∧ 𝐶) ≡ (𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶) zakon distributivnosti ∨ u odnosu na ∧
(𝐵 ∧ 𝐶) ∨ 𝐴 ≡ (𝐵 ∨ 𝐴) ∧ (𝐶 ∨ 𝐴) zakon distributivnosti ∨ u odnosu na ∧
¬(𝐴 ∧ 𝐵) ≡ ¬𝐴 ∨ ¬𝐵 De Morganov zakon
¬(𝐴 ∨ 𝐵) ≡ ¬𝐴 ∧ ¬𝐵 De Morganov zakon
𝐴∧⊤ ≡ 𝐴 zakon konjunkcije sa tautologijom
𝐴∨⊤ ≡ ⊤ zakon disjunkcije sa tautologijom
𝐴∧⊥ ≡ ⊥ zakon konjunkcije sa kontradikcijom
𝐴∨⊥ ≡ 𝐴 zakon disjunkcije sa kontradikcijom
85 7. Iskazna logika

Logičke ekvivalencije navedene u primeru 7.13, izmedu ostalog, pokazuju da su konjunkcija i disjunkcija
komutativni i asocijativni veznici. Zato možemo (uslovno) smatrati da konjunkcija (i disjunkcija) mogu da
povezuju više od dve formule, pri čemu ne moramo da vodimo računa o njihovom poretku. Svaki član uopštene
konjunkcije zovemo konjunkt, a svaki član uopštene disjunkcije zovemo disjunkt. Disjunkciju više literala (pri
čemu njihov poredak nije bitan) zovemo klauza. Klauza je jedinična ako sadrži samo jedan literal.
Naredna teorema kaže da ako se u formuli 𝐴 zameni neka njena potformula logički ekvivalentnom formulom,
dobiće se formula koja je logički ekvivalentna formuli 𝐴.

Teorema 7.3 (Teorema o zameni). Ako je 𝐶 ≡ 𝐷, onda je 𝐴[𝐶 ↦→ 𝐷] ≡ 𝐴.

Pitanja i zadaci

9)
Pitanje 7.23. Kada za iskaznu formulu 𝐴 kažemo da je logička posledica skupa formula Γ?

1
Pitanje 7.24. Da li nad konačnim skupom iskaznih promenljivih ima konačno ili prebrojivo ili neprebrojivo

20
(zaokružiti ispravan odgovor) mnogo iskaznih formula od kojih nikoje dve nisu logički ekvivalentne?

Pitanje 7.25. Šta sem Γ |= 𝐴 mora da važi da bi važilo Δ |= 𝐴?

(
Pitanje 7.26. Kada kažemo da su iskazne formule 𝒜 ≡ ℬ logički ekvivalentne?
je
Pitanje 7.27. Ako su formule 𝐴 i 𝐵 logički ekvivalentne, kako to zapisujemo?
an
Pitanje 7.28. Da li je 𝐴 ≡ 𝐵 formula ili meta-formula? Da li je 𝐴 ⇔ 𝐵 formula ili meta-formula? Kakva
je veza izmedu 𝐴 ≡ 𝐵 i 𝐴 ⇔ 𝐵?
izd

Pitanje 7.29. Koliko ima klauza dužine 𝑘 nad skupom od 𝑛 iskaznih promenljivih
(a) ako je dozvoljeno da se u klauzi pojavljuje i literal i njegova negacija?
(b) ako nije dozvoljeno da se u klauzi pojavljuje i literal i njegova negacija?
(Podrazumeva se da nije dozvoljeno da se u klauzi pojavljuju logičke konstante niti da se ponavlja isti literal,
ko

klauze se smatraju istim ako se razlikuju samo u poretku literala koje sadrže).
Pitanje 7.30. Koliko ima klauza nad skupom od 𝑛 iskaznih promenljivih:
ns

(a) ako je dozvoljeno da se u klauzi pojavljuje i literal i njegova negacija?


(b) ako nije dozvoljeno da se u klauzi pojavljuje i literal i njegova negacija?
tro

(Podrazumeva se da nije dozvoljeno da se u klauzi pojavljuju logičke konstante niti da se ponavlja isti literal.
klauze se smatraju istim ako se razlikuju samo u poretku literala koje sadrže).
ek

Pitanje 7.31. Navesti teoremu o zameni za iskaznu logiku.


Zadatak 7.13. Dokazati da iz 𝐴 ≡ 𝐴[𝐶 ↦→ 𝐷] ne sledi 𝐶 ≡ 𝐷.
El


Zadatak 7.14. 𝐴1 , 𝐴2 , . . . , 𝐴𝑛 |= 𝐵 ako i samo ako |= (𝐴1 ∧ 𝐴2 ∧ . . . ∧ 𝐴𝑛 ) ⇒ 𝐵.

Zadatak 7.15. Γ, 𝐴 |= 𝐵 ako i samo ako Γ |= 𝐴 ⇒ 𝐵.

Zadatak 7.16. Ako je 𝐴1 ≡ 𝐴2 i 𝐵1 ≡ 𝐵2 , onda je:

(a) ¬𝐴1 ≡ ¬𝐴2


(b) 𝐴1 ∧ 𝐵1 ≡ 𝐴2 ∧ 𝐵2
(c) 𝐴1 ∨ 𝐵1 ≡ 𝐴2 ∨ 𝐵2
(d) 𝐴1 ⇒ 𝐵1 ≡ 𝐴2 ⇒ 𝐵2
(e) 𝐴1 ⇔ 𝐵1 ≡ 𝐴2 ⇔ 𝐵2 .

Zadatak 7.17. Ako je iskazna formula 𝐴 tautologija koja sadrži iskazna slova 𝑝1 , 𝑝2 , . . . , 𝑝𝑛 i ako su 𝐴1 ,
𝐴2 , . . . , 𝐴𝑛 proizvoljne iskazne formule, onda je iskazna formula 𝐵 = 𝐴[𝑝1 ↦→ 𝐴1 , 𝑝2 ↦→ 𝐴2 , . . . , 𝑝𝑛 ↦→ 𝐴𝑛 ]
takode tautologija.
7.5. Normalne forme i potpuni skupovi veznika 86

7.5 Normalne forme i potpuni skupovi veznika


Pitanja valjanosti i zadovoljivosti imaju veliki praktični značaj – skoro sve primene iskazne logike svode
se na ispitivanje valjanosti ili zadovoljivosti neke formule. Ispitivanje valjanosti ili zadovoljivosti primenom
istinitosnih tablica nije efikasno i оbično je praktično potpuno neupotrebljivo. Zato se definišu naprednije
procedure za ispitivanje valjanosti ili zadovoljivosti, ali zbog jednostavnosti i veće efikasnosti one se obično
definišu samo za neke specifične vrste iskaznih formula, za formule koje su u nekoj specifičnoj formi.

Definicija 7.8 (Konjunktivna normalna forma). Iskazna formula je u konjunktivnoj normalnoj formi
(knf) ako je oblika
𝐴1 ∧ 𝐴2 ∧ . . . ∧ 𝐴𝑛
pri čemu je svaka od formula 𝐴𝑖 (1 ≤ 𝑖 ≤ 𝑛) klauza (tj. disjunkcija literala).

9)
Definicija 7.9 (Disjunktivna normalna forma). Iskazna formula je u disjunktivnoj normalnoj formi (dnf)
ako je oblika

1
𝐴1 ∨ 𝐴2 ∨ . . . ∨ 𝐴𝑛

20
pri čemu je svaka od formula 𝐴𝑖 (1 ≤ 𝑖 ≤ 𝑛) konjunkcija literala.

(
Ako je iskazna formula 𝐴 logički ekvivalentna iskaznoj formuli 𝐵 i iskazna formula 𝐵 je u konjunktivnoj
(disjunktivnoj) normalnoj formi, onda se kaže da je formula 𝐵 konjunktivna (disjunktivna) normalna forma
je
formule 𝐴. Jedna iskazna formula može da ima više različitih konjunktivnih (disjunktivnih) normalnih formi
(na primer, i formula (𝑝 ∨ 𝑟) ∧ (𝑞 ∨ 𝑟) ∧ (𝑝 ∨ 𝑠) ∧ (𝑞 ∨ 𝑠) i formula (𝑠 ∨ 𝑞) ∧ (𝑝 ∨ 𝑟) ∧ (𝑞 ∨ 𝑟) ∧ (𝑝 ∨ 𝑠) ∧ (𝑝 ∨ ¬𝑝) su
an
konjunktivne normalne forme formule (𝑝 ∧ 𝑞) ∨ (𝑟 ∧ 𝑠)). Slično, jedna formula koja je u konjunktivnoj normalnoj
formi može biti konjunktivna normalna forma za više iskaznih formula.
izd

Korišćenjem pogodnih ekvivalencija, svaka iskazna formula može biti transformisana u svoju konjunktivnu
(disjunktivnu) normalnu formu. Transformisanje iskazne formule u konjunktivnu normalnu formu može biti
opisano algoritmom prikazanim na slici 7.2. Kada se govori o „primeni neke logičke ekvivalencije“ misli se na
korišćenje logičke ekvivalencije na osnovu teoreme o zameni (teorema 7.3).
ko

Algoritam: KNF
ns

Ulaz: Iskazna formula 𝐹


tro

Izlaz: Konjunktivna normalna forma formule 𝐹


1: dok god je to moguće radi
2: primeni logičku ekvivalenciju (eliminiši veznik ⇔):
ek

𝐴 ⇔ 𝐵 ≡ (𝐴 ⇒ 𝐵) ∧ (𝐵 ⇒ 𝐴).
3: dok god je to moguće radi
El

4: primeni logičku ekvivalenciju (eliminiši veznik ⇒):


𝐴 ⇒ 𝐵 ≡ ¬𝐴 ∨ 𝐵.
5: dok god je to moguće radi
6: primeni neku od logičkih ekvivalencija:
¬(𝐴 ∧ 𝐵) ≡ ¬𝐴 ∨ ¬𝐵
¬(𝐴 ∨ 𝐵) ≡ ¬𝐴 ∧ ¬𝐵.
7: dok god je to moguće radi
8: primeni logičku ekvivalenciju (eliminiši višestruke veznike ¬):
¬¬𝐴 ≡ 𝐴.
9: dok god je to moguće radi
10: primeni neku od logičkih ekvivalencija:
(𝐴 ∨ (𝐵 ∧ 𝐶)) ≡ ((𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶))
((𝐵 ∧ 𝐶) ∨ 𝐴) ≡ ((𝐵 ∨ 𝐴) ∧ (𝐶 ∨ 𝐴)).

Slika 7.2: Algoritam KNF


87 7. Iskazna logika

vrsta formule rezultujuće klauze


𝐴 = (¬𝐵) (𝑝𝐴 ∨ 𝑝𝐵 ) ∧ (¬𝑝𝐴 ∨ ¬𝑝𝐵 )
𝐴 = (𝐵 ∧ 𝐶) (𝑝𝐴 ∨ ¬𝑝𝐵 ∨ ¬𝑝𝐶 ) ∧ (¬𝑝𝐴 ∨ 𝑝𝐵 ) ∧ (¬𝑝𝐴 ∨ 𝑝𝐶 )
𝐴 = (𝐵 ∨ 𝐶) (¬𝑝𝐴 ∨ 𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐵 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐶 )
𝐴 = (𝐵 ⇒ 𝐶) (¬𝑝𝐴 ∨ ¬𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (𝑝𝐴 ∨ 𝑝𝐵 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐶 )
𝐴 = (𝐵 ⇔ 𝐶) (¬𝑝𝐴 ∨ ¬𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (¬𝑝𝐴 ∨ 𝑝𝐵 ∨ ¬𝑝𝐶 )∧
(𝑝𝐴 ∨ 𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐵 ∨ ¬𝑝𝐶 )

Tabela 7.1: Pravila za Cejtinovu transformaciju

Zaustavljanje algoritma KNF može se dokazati korišćenjem pogodno odabrane mere formula.1 Za neke
pojedinačne korake, može se dokazati da se zaustavljaju korišćenjem jednostavnih mera — na primer, za prvi
korak algoritma, kao mera se može koristiti broj veznika ⇔ u formuli. Tvrdenje 𝐹 ≡ 𝐹 ′ sledi na osnovu teoreme
7.3 i činjenice da se u algoritmu koriste samo logičke ekvivalencije.

9)
Teorema 7.4 (Korektnost algoritma KNF). Algoritam KNF se zaustavlja i zadovoljava sledeće svojstvo: ako

1
je 𝐹 ulazna formula, onda je izlazna formula 𝐹 ′ u konjunktivnoj normalnoj formi i logički je ekvivalentna

20
sa 𝐹 .

(
Transformisanje formule u njenu konjunktivnu normalnu formu može da dâ formulu čija je složenost ekspo-
je
nencijalna u odnosu na složenost polazne formule. Na primer, transformisanjem formule
an
(𝐴1 ∧ 𝐵1 ) ∨ (𝐴2 ∧ 𝐵2 ) ∨ . . . ∨ (𝐴𝑛 ∧ 𝐵𝑛 )

(koja ima 𝑛 disjunkata) u njenu konjunktivnu normalnu formu, dobija se formula koja ima 2𝑛 konjunkta.
izd

Zbog potencijalno ogromne izlazne formule, umesto algoritma KNF, u praksi se najčešće koristi Cejtinovo
kodiranje – koje je linearno i u smislu vremena i u smislu prostora, ali uvodi dodatne promenljive, te zato
rezultujuća formula nije logički ekvivalentna polaznoj već samo slabo ekvivalentna: početna formula je zadovo-
ko

ljiva ako i samo ako je zadovoljiva rezultujuća formula. To je za primene obično dovoljno dobro i, štaviše, iz
modela za rezultujuću formulu (ukoliko oni postoje) mogu se rekonstruisati modeli za polaznu formulu. Cejti-
nova transformacija može se opisati na sledeći način: Neka 𝑆𝑢𝑏(𝐹 ) označava skup svih potformula formule 𝐹 .
ns

Za svaku formulu 𝐴 iz 𝑆𝑢𝑏(𝐹 ) koja nije iskazna promenljiva, uvodi se nova iskazna promenljiva (definiciona
promenljiva) 𝑝𝐴 . Ako je 𝐴 iskazna promenljiva, onda 𝑝𝐴 označava samu formulu 𝐴 (i tada se 𝑝𝐴 naziva osnovna
tro

promenljiva). Formula 𝐹 se prvo transformiše u sledeću formulu (gde ⋆ označava binarni iskazni veznik iz skupa
binarnih veznika koji se pojavljuju u 𝐹 ):
ek

⋀︁ ⋀︁
𝑝𝐹 ∧ (𝑝𝐴 ⇔ (𝑝𝐵 ⋆ 𝑝𝐶 )) ∧ (𝑝𝐴 ⇔ ¬𝑝𝐵 )
𝐴∈𝑆𝑢𝑏(𝐹 ) 𝐴∈𝑆𝑢𝑏(𝐹 )
El

𝐴=𝐵⋆𝐶 𝐴=¬𝐵

Lako se može dokazati da je navedena formula slabo ekvivalentna sa formulom 𝐹 . Na kraju, navedena
formula se trivijalno transformiše u knf oblik primenom pravila iz tabele 7.1. Svaki konjunkt se transformiše
u knf sa najviše četiri klauze, od kojih svaka ima najviše tri literala. Dakle, ova transformacija daje formulu
čija veličina je linearna u odnosu na veličinu ulazne formule.

1 U cilju dokazivanja zaustavljanja postupka transformisanja formule u konjunktivnu normalnu formu definiše se preslikavanje

𝜏 iz skupa iskaznih formula u skup prirodnih brojeva:

𝜏 (𝐴) = 2 (gde je 𝐴 atomička formula)


𝜏 (¬𝐴) = 2𝜏 (𝐴)
𝜏 (𝐴 ∧ 𝐵) = 𝜏 (𝐴) · 𝜏 (𝐵)
𝜏 (𝐴 ∨ 𝐵) = 𝜏 (𝐴) + 𝜏 (𝐵) + 1

Može se jednostavno dokazati da je vrednost 𝜏 (𝐴′ ) uvek manja od 𝜏 (𝐴) ako je formula 𝐴′ dobijena primenom nekog pravila
prezapisivanja na formulu 𝐴 (jer, na primer, važi da je 𝜏 (¬𝐴 ∧ ¬𝐵) = 2𝜏 (𝐴)+𝜏 (𝐵) manje od 𝜏 (¬(𝐴 ∨ 𝐵)) = 2𝜏 (𝐴)+𝜏 (𝐵)+1 ). Odatle
sledi da se postupak transformisanja proizvoljne formule u konjunktivnu normalnu formu zaustavlja za proizvoljnu ulaznu formulu
𝐴 (jer ne postoji beskonačan strogo opadajući niz prirodnih brojeva čiji je prvi element 𝜏 (𝐴)).
7.5. Normalne forme i potpuni skupovi veznika 88

Primer 7.14. Data je iskazna formula (𝑝∧(𝑞∧𝑟))∨((𝑞∧𝑟)∧¬𝑝). Neka su definicione promenljive 𝑝4 , 𝑝5 , 𝑝6 , 𝑝7 , 𝑝8


uvedene na sledeći način:
𝑝6 𝑝7
⏞ ⏟ ⏞ ⏟
(𝑝 ∧ (𝑞 ∧ 𝑟)) ∨ ((𝑞 ∧ 𝑟) ∧ ¬𝑝 )
⏟ ⏞ ⏟ ⏞ ⏟ ⏞
𝑝4 𝑝4 𝑝5
⏟ ⏞
𝑝8

Meduoblik za Cejtinovu formu je onda:

𝑝8 ∧ (𝑝8 ⇔ (𝑝6 ∨ 𝑝7 )) ∧ (𝑝6 ⇔ (𝑝 ∧ 𝑝4 )) ∧ (𝑝7 ⇔ (𝑝4 ∧ 𝑝5 )) ∧ (𝑝4 ⇔ (𝑞 ∧ 𝑟)) ∧ (𝑝5 ⇔ ¬𝑝))

Konačno, izlazna knf formula je:


𝑝8 ∧
(¬𝑝8 ∨ 𝑝6 ∨ 𝑝7 ) ∧ (𝑝8 ∨ ¬𝑝6 ) ∧ (𝑝8 ∨ ¬𝑝7 ) ∧
(𝑝6 ∨ ¬𝑝 ∨ ¬𝑝4 ) ∧ (¬𝑝6 ∨ 𝑝) ∧ (¬𝑝6 ∨ 𝑝4 ) ∧
(𝑝7 ∨ ¬𝑝4 ∨ ¬𝑝5 ) ∧ (¬𝑝7 ∨ 𝑝4 ) ∧ (¬𝑝7 ∨ 𝑝5 ) ∧

9)
(𝑝4 ∨ ¬𝑞 ∨ ¬𝑟) ∧ (¬𝑝4 ∨ 𝑞) ∧ (¬𝑝4 ∨ 𝑟) ∧
(𝑝5 ∨ 𝑝) ∧ (¬𝑝5 ∨ ¬𝑝)

1
Problem sa Cejtinovom transformacijom je u tome što ona uvodi mnogo novih promenljivih. Postoje razno-

20
vrsne tehnike za smanjivanje broja promenljivih i broja klauza.

Primer 7.15. Formula 𝑝𝑎1 ⇒ ¬𝑝𝑎2 iz primera 7.12 može se zameniti logički ekvivalentnom formulom ¬𝑝𝑎1 ∨

(
¬𝑝𝑎2 . Zahvaljujući tome, nije ni potrebno uvoditi nove Cejtinove promenljive i zadati uslov može da se zapiše
u knf obliku kao konjunkcija sledećih formula:
𝑝𝑎1 ∨ 𝑝𝑎2 ∨ 𝑝𝑎3 , 𝑝𝑏1 ∨ 𝑝𝑏2 ∨ 𝑝𝑏3 , 𝑝𝑐1 ∨ 𝑝𝑐2 ∨ 𝑝𝑐3 ,
je
an
¬𝑝𝑎1 ∨ ¬𝑝𝑎2 , ¬𝑝𝑎1 ∨ ¬𝑝𝑎3 , ¬𝑝𝑎2 ∨ ¬𝑝𝑎3 ,
¬𝑝𝑏1 ∨ ¬𝑝𝑏2 , ¬𝑝𝑏1 ∨ ¬𝑝𝑏3 , ¬𝑝𝑏2 ∨ ¬𝑝𝑏3 ,
izd

¬𝑝𝑐1 ∨ ¬𝑝𝑐2 , ¬𝑝𝑐1 ∨ ¬𝑝𝑐3 , ¬𝑝𝑐2 ∨ ¬𝑝𝑐3 ,


¬𝑝𝑎1 ∨ ¬𝑝𝑏1 , ¬𝑝𝑎1 ∨ ¬𝑝𝑐1 , ¬𝑝𝑏1 ∨ ¬𝑝𝑐1 ,
ko

¬𝑝𝑎2 ∨ ¬𝑝𝑏2 , ¬𝑝𝑎2 ∨ ¬𝑝𝑐2 , ¬𝑝𝑏2 ∨ ¬𝑝𝑐2 ,


¬𝑝𝑎3 ∨ ¬𝑝𝑏3 , ¬𝑝𝑎3 ∨ ¬𝑝𝑐3 , ¬𝑝𝑏3 ∨ ¬𝑝𝑐3 ,
ns

¬𝑝𝑎3 ∨ ¬𝑝𝑏2 , ¬𝑝𝑎3 ∨ ¬𝑝𝑐1 , ¬𝑝𝑏2 ∨ ¬𝑝𝑐1 ,


¬𝑝𝑎2 ∨ ¬𝑝𝑏1 , ¬𝑝𝑏3 ∨ ¬𝑝𝑐2 ,
tro

¬𝑝𝑎1 ∨ ¬𝑝𝑏2 , ¬𝑝𝑎1 ∨ ¬𝑝𝑐3 , ¬𝑝𝑏2 ∨ ¬𝑝𝑐3 ,


¬𝑝𝑎2 ∨ ¬𝑝𝑏3 , ¬𝑝𝑏1 ∨ ¬𝑝𝑐2 .
ek

Transformisanje formule u disjunktivnu normalnu formu opisuje se algoritmom analognim algoritmu KNF.
Algoritmom KNF proizvoljna iskazna formula može se transformisati u formulu koja ne sadrži veznike ⇔
El

i ⇒. Dobijena formula sadržaće, dakle, samo veznike ¬, ∧ i ∨. Kaže se da je skup veznika {¬, ∧, ∨} potpun,
jer je svaka iskazna formula logički ekvivalentna nekoj iskaznoj formuli nad samo ova tri veznika i bez logičkih
konstanti ⊤ i ⊥. Štaviše, zahvaljujući logičkoj ekvivalenciji 𝐴 ∨ 𝐵 ≡ ¬(¬𝐴 ∧ ¬𝐵), može se dokazati i da je skup
{¬, ∧} potpun.
Postoje i jednočlani potpuni skupovi vezinka: {↓} i {↑}, pri čemu su veznici ↓ (nili ili Lukašijevičeva funkcija)
i ↑ (ni ili Šeferova funkcija) definisani na sledeći način: 𝐴 ↓ 𝐵 je jednako ¬(𝐴 ∨ 𝐵), a 𝐴 ↑ 𝐵 je jednako ¬(𝐴 ∧ 𝐵).
Lako se pokazuje da je ¬𝐴 ≡ (𝐴 ↓ 𝐴) i 𝐴 ∧ 𝐵 ≡ ((𝐴 ↓ 𝐴) ↓ (𝐵 ↓ 𝐵)). Kako je skup veznika {¬, ∧} potpun, sledi
da je potpun i skup {↓}. Analogno važi i za skup {↑}. Može se dokazati da su veznici ↓ i ↑ jedina dva binarna
veznika koja (pojedinačno) čine potpun sistem.

Pitanja i zadaci
Pitanje 7.32. Da li je za iskaznu formulu jednoznačno odredena njena konjunktivna normalna forma?

Pitanje 7.33. Navesti jedan algoritam za transformiranje iskazne formule u knf.


Pitanje 7.34. Šta tokom primene algoritma za transformiranje iskazne formule u knf važi nakon primene
logičke ekvivalencije ¬¬𝐴 ≡ 𝐴?
89 7. Iskazna logika

Pitanje 7.35. Da li se može konstruisati iskazna formula za koju se algoritam KNF ne zaustavlja?
Pitanje 7.36. Zašto se zaustavlja prvi korak algoritma KNF?

Pitanje 7.37. Zašto se zaustavlja četvrti korak algoritma KNF?

Pitanje 7.38. Navesti teoremu o korektnosti algoritma KNF za iskaznu logiku.


Pitanje 7.39. Navesti primer skupa formula 𝐴 veličine 𝑛 za koje se algoritmom KNF dobijaju formule veličine
𝑝(𝑛) (𝑝(𝑛) je polinom po 𝑛)?
Pitanje 7.40. Navesti primer skupa formula 𝐴 veličine 𝑛 za koje se algoritmom KNF dobijaju formule veličine
𝑝(2𝑛 ) (𝑝(2𝑛 ) je polinom po 2𝑛 )?

Pitanje 7.41. Kako se definišu binarni veznici ↑ i ↓?

Pitanje 7.42. Koliko ima binarnih veznika koji pojedinačno čine potpun skup veznika za iskaznu logiku?
Predstaviti te veznike u terminima osnovnih logičkih veznika.

9)
Zadatak 7.18. Odrediti konjunktivnu normalnu formu i disjunktivnu normalnu formu za formule:

1
(a) (𝐴 ⇒ 𝐵) ∨ (¬𝐴 ∧ 𝐶)

20
(b) 𝐴 ⇔ (𝐵 ∧ ¬𝐴)
(c) ((𝐴 ⇒ 𝐵) ⇒ (𝐶 ⇒ ¬𝐴)) ⇒ (¬𝐵 ⇒ ¬𝐶)
(d) ((((𝐴 ⇒ 𝐵) ⇒ ¬𝐴) ⇒ ¬𝐵) ⇒ ¬𝐶) ⇒ 𝐶

(
(e) (𝐴 ⇒ (𝐵 ⇒ 𝐶)) ⇒ ((𝐴 ⇒ ¬𝐶) ⇒ (𝐴 ⇒ ¬𝐵))

je
Zadatak 7.19. U računarstvu se često koristi logički veznik ∨ (isključivo ili, isključiva disjunkcija, ekskluzivno
ili, ekskluzivna disjunkcija) koji može biti definisan na sledeći način: 𝐴∨𝐵 je jednako (tj. to je kraći zapis za)
an
¬(𝐴 ⇔ 𝐵) ili (𝐴 ∧ ¬𝐵) ∨ (¬𝐴 ∧ 𝐵). Ispitati da li je skup {∧, ∨} potpun skup veznika.
Zadatak 7.20. Dokazati da {⇒, ∨} i {¬, ⇔} nisu potpuni skupovi veznika.
izd

7.6 Problem SAT i algoritam DPLL


ko

Za svaku iskaznu formulu postoji njena konjunktivna normalna forma i većina primena iskazne logike svodi
se na ispitivanje zadovoljivosti neke formule koja je u tom, specifičnom, knf obliku. Ovaj specifičan problem
ima ogroman i teorijski i praktični značaj.
ns

Problem ispitivanja zadovoljivosti date iskazne formule u knf obliku označava se sa sat (od engleskog satis-
fiability problem — problem zadovoljivosti). sat problem je np-kompletan. Problem ispitivanja nezadovoljivosti
tro

date iskazne formule u knf obliku je co-np-kompletan.2


S obzirom na to da se još uvek ne zna da li su klase p i np problema jednake, to znači da se još uvek ne
zna da li postoji algoritam za ispitivanje zadovoljivosti koji je polinomske složenosti.3 Kako je opšte uverenje
ek

da su klase problema p i np različite, veruje se i da ne postoji polinomski algoritam za rešavanje sat problema.
I najefikasniji danas poznati algoritmi za rešavanje ovog problema su eksponencijalne složenosti. Programi koji
rešavaju instance sat problema zovu se sat rešavači.
El

Problem ispitivanja zadovoljivosti formula u dnf obliku suštinski je drugačiji od ispitivanja zadovoljivosti
formula u knf obliku. Drugi je np-kompletan, a prvi je trivijalan i pripada klasi p (podrazumeva se složenost u
terminima broja bitova potrebnih za zapis ulazne formule). Ipak, svodenje problema sat na problem ispitivanja
zadovoljivosti dnf formule nije razuman put za rešavanje problema sat, zbog kompleksnosti same transformacije
knf oblika u dnf oblik. Dodajmo da problem ispitivanja tautologičnosti formule u knf obliku pripada klasi p,
a da je problem ispitivanja tautologičnosti formule u dnf obliku co-np-kompletan problem.
Dejvis–Patnam–Logman–Lavlendova ili DPLL procedura4 je procedura za ispitivanje zadovoljivosti iskaznih
formula u knf obliku, to jest, procedura za rešavanje instanci sat problema. Ulazna formula je konjunkcija
klauza. Pri tome (kako su konjunkcija i disjunkcija komutativne i asocijativne) nije bitan poredak tih klauza niti
2 Problem odlučivanja 𝒳 je komplementan problemu odlučivanja 𝒴 ako za svaku instancu za koju problem 𝒴 daje odgovor „da“,

problem 𝒳 daje odgovor „ne“. Problem odlučivanja 𝒳 pripada klasi co-np ako njemu komplementan problem pripada klasi np. Na
primer, problem zadovoljivosti za iskazne formule u knf obliku pripada klasi np, pa problem nezadovoljivosti za iskazne formule u
knf obliku pripada klasi co-np. Nije poznato da li su klase np i co-np jednake. Problem koji pripada klasi co-np je co-np-kompletan
ako se svaki problem iz klase co-np može svesti na njega u polinomskom vremenu.
3 Kada se govori o klasama složenosti, obično se podrazumeva da se složenost algoritma izražava u terminima broja bitova

potrebnih za zapisivanje ulaza.


4 Prva verzija procedure čiji su autori Dejvis i Patnam, unapredena je dve godine kasnije u radu Dejvisa, Logmana i Lavlenda,

pa otuda naziv DPLL.


7.6. Problem SAT i algoritam DPLL 90

Algoritam: DPLL

Ulaz: Multiskup klauza 𝐷 (𝐷 = {𝐶1 , 𝐶2 , . . . , 𝐶𝑛 })


Izlaz: DA, ako je multiskup 𝐷 zadovoljiv, NE, inače;
1: ako 𝐷 je prazan onda
2: vrati DA;
3: zameni sve literale ¬⊥ sa ⊤ i zameni sve literale ¬⊤ sa ⊥;
4: obriši sve literale jednake ⊥;
5: ako 𝐷 sadrži praznu klauzu onda
6: vrati NE;

7: {Korak tautology:}
8: ako neka klauza 𝐶𝑖 sadrži ⊤ ili sadrži neki literal i njegovu negaciju onda

9)
9: vrati vrednost koju vraća DPLL(𝐷 ∖ 𝐶𝑖 );

1
10: {Korak unit propagation:}

20
11: ako neka klauza je jedinična i jednaka nekom iskaznom slovu 𝑝 onda
12: vrati vrednost koju vraća DPLL(𝐷[𝑝 ↦→ ⊤]);
ako neka klauza je jedinična i jednaka ¬𝑝, za neko iskazno slovo 𝑝 onda

(
13:
14: vrati vrednost koju vraća DPLL(𝐷[𝑝 ↦→ ⊥]);

15: {Korak pure literal:} je


an
16: ako 𝐷 sadrži literal 𝑝 (gde je 𝑝 neko iskazno slovo), ali ne i ¬𝑝 onda
17: vrati vrednost koju vraća DPLL(𝐷[𝑝 ↦→ ⊤]) ;
izd

18: ako 𝐷 sadrži literal ¬𝑝 (gde je 𝑝 neko iskazno slovo), ali ne i 𝑝 onda
19: vrati vrednost koju vraća DPLL(𝐷[𝑝 ↦→ ⊥]);

20: {Korak split:}


ko

21: ako DPLL(𝐷[𝑝 ↦→ ⊤]) (gde je 𝑝 jedno od iskaznih slova koja se javljaju u 𝐷) vraća DA onda
22: vrati DA;
ns

23: inače
24: vrati vrednost koju vraća DPLL(𝐷[𝑝 ↦→ ⊥]).
tro

Slika 7.3: DPLL procedura


ek

je u bilo kojoj od tih klauza bitan poredak literala, te se ulazna formula može smatrati skupom (ili, preciznije,
El

multiskupom5 ) klauza, od kojih se svaka može smatrati skupom (ili, preciznije, multiskupom) literala. Ipak,
radi odredenosti rada algoritma, smatraćemo da je skup (odnosno multiskup) klauza ureden.
U proceduri se podrazumevaju sledeće konvencije:
• prazan skup klauza (zvaćemo ga praznom formulom) je zadovoljiv;
• klauza koja ne sadrži nijedan literal (zvaćemo je prazna klauza) je nezadovoljiva i formula koja sadrži
praznu klauzu je nezadovoljiva.
DPLL procedura prikazana je na slici 7.3, a njena svojstva daje teorema 7.5.

Teorema 7.5 (Korektnost DPLL procedure). Za svaku iskaznu formulu DPLL procedura se zaustavlja i
vraća odgovor DA ako i samo ako je polazna formula zadovoljiva.

DPLL procedura je u najgorem slučaju eksponencijalne složenosti po broju iskaznih promenljivih u formuli,
usled rekurzivne primene split pravila. Eksponencijalne složenosti su i svi drugi do sada poznati algoritmi za
ispitivanje zadovoljivosti. Ipak, svi ti algoritmi su znatno efikasniji od metode istinitosnih tablica.
5 Neformalno, multiskup je skup u kojem se elementi mogu pojavljivati više puta.
91 7. Iskazna logika

Izbor iskaznog slova u pravilu split veoma je važan. Neke varijante ovog pravila su da se bira iskazno slovo
sa najviše pojavljivanja u tekućoj formuli, da se bira neko od iskaznih slova iz najkraće klauze itd. Pošto se
ispituje da li postoji valuacija u kojoj su sve klauze formule tačne, pohlepni algoritam bi mogao da za split
promenljivu bira onu koja čini najveći broj klauza tačnim u tekućoj parcijalnoj valuaciji. Ovaj algoritam ne
garantuje optimalnost ni efikasnost i retko se koristi u praksi.

Primer 7.16. DPLL procedura može se primeniti na formulu iz primera 7.15. Prvo pravilo koje je primenljivo
je split i može da se primeni, na primer, na promenljivu 𝑝𝑎1 . U prvoj grani koja se razmatra 𝑝𝑎1 se zamenjuje
sa ⊤ (što odgovara pridruživanju vrednosti tačno) i u narednim koracima se, primenom pravila unit propagation
promenljive 𝑝𝑎2 , 𝑝𝑎3 , 𝑝𝑏1 , 𝑝𝑐1 , 𝑝𝑏2 , 𝑝𝑐3 zamenjuju sa ⊥. Zatim se promenljive 𝑝𝑏3 i 𝑝𝑐2 zamenjuju sa ⊤, nakon
čega klauza ¬𝑝𝑏2 ∨ ¬𝑝𝑐3 postaje prazna. Slično se dešava i u grani u kojoj se 𝑝𝑎1 zamenjuje sa ⊥, te procedura
vraća odgovor 𝑁 𝐸, što znači da ne postoji rešenje problema 𝑛 dama za 𝑛 = 3.

DPLL procedura može se razmatrati kao algoritam pretrage potpunog stabla valuacija promenljivih koje
učestvuju u formuli. Koraci algoritma omogućavaju da se ne pretražuje nužno čitavo stablo. Heuristike koje
odreduju način na koji se primenjuje pravilo split usmeravaju pretragu i mogu bitno da utiču na efikasnost

9)
pretrage.

1
Primer 7.17. Neka je potrebno ispitati zadovoljivost formule date klauzama:

20
𝐶1 : ¬𝑎, ¬𝑏, 𝑐
𝐶2 : 𝑎, ¬𝑏
𝐶3 : 𝑏, 𝑐

(
𝐶4 : ¬𝑏, ¬𝑐
Formula ima dve zadovoljavajuće valuacije. Proverom zadovoljivosti procedurom DPLL, pronalazi se jedna
je
od te dve valuacije. Prvo stablo na slici 7.4 prikazuje proces pretrage u slučaju datog skupa klauza. Kako obe
zadovoljavajuće valuacije pridružuju promenljivoj 𝑏 vrednost 0, a promenljivoj 𝑐 vrednost 1, nakon dodavanja
an
klauze
𝐶5 : 𝑏, ¬𝑐
izd

prethodni skup klauza postaje nezadovoljiv. Proces pretrage procedurom DPLL u ovom slučaju, prikazan je na
drugom stablu na istoj slici. U ovom primeru upečatljivo je da DPLL procedura ispituje svega tri od osam listova
zahvaljujući tome što osim koraka pretrage oličenih u pravilu split, postoje i koraci zaključivanja koje se vrši
primenom pravila unit propagation, pri čemu se ne ispituju alternative tim pravilom učinjenih zamena.
ko

𝑠𝑝𝑙𝑖𝑡([𝑎 ↦→ ⊤])
ns

𝑣(𝑎)=1 𝑣(𝑎)=1
𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊤]) 𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊥])
tro

𝑣(𝑏)=1 𝑣(𝑏)=0 𝑣(𝑏)=1 𝑣(𝑏)=0


𝑢𝑝([𝑐 ↦→ ⊤]) 𝑢𝑝([𝑐 ↦→ ⊤])
ek

𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0


𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=1 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=1 𝐼𝑣 (𝐴)=0
El

𝑠𝑝𝑙𝑖𝑡([𝑎 ↦→ ⊤]) 𝑠𝑝𝑙𝑖𝑡([𝑎 ↦→ ⊥])

𝑣(𝑎)=1 𝑣(𝑎)=1
𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊤]) 𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊥]) 𝑢𝑝([𝑏 ↦→ ⊥])

𝑣(𝑏)=1 𝑣(𝑏)=0 𝑣(𝑏)=1 𝑣(𝑏)=0


𝑢𝑝([𝑐 ↦→ ⊤]) 𝑢𝑝([𝑐 ↦→ ⊤]) 𝑢𝑝([𝑐 ↦→ ⊤])

𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0


𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0

Slika 7.4: Proces provere zadovoljivosti procedurom DPLL prikazan u vidu pretrage u potpunom stablu valuacija
za dva skupa klauza. Pretraga se vrši obilaskom stabla u dubinu sleva nadesno.

DPLL procedura proverava da li je formula zadovoljiva, ali ona se može koristiti i za ispitivanje da li je
neka formula valjana, poreciva ili kontradikcija. Na primer, formula 𝐴 je valjana ako i samo ako je formula
7.6. Problem SAT i algoritam DPLL 92

¬𝐴 nezadovoljiva, što se može proveriti DPLL procedurom (pri čemu je, naravno, formulu ¬𝐴 potrebno najpre
transformisati u konjunktivnu normalnu formu).

Pitanja i zadaci
Pitanje 7.43. Kako se zove problem ispitivanja zadovoljivosti iskazne formule u knf obliku? Da li je ovaj
problem odlučiv?
Pitanje 7.44. Da li problem sat pripada klasi p?
Da li problem sat pripada klasi np?
Da li je problem sat np-kompletan?
Da li je problem sat np-težak?
Pitanje 7.45. U kom obliku mora da bude formula na koju se primenjuje DPLL procedura?
Pitanje 7.46. Koji odgovor vraća DPLL procedura ako ulazna formula ne sadrži nijednu klauzu?

9)
Pitanje 7.47. Kako glasi pravilo tautology procedure DPLL?
Pitanje 7.48. Kako glasi pravilo split DPLL procedure?

1
Pitanje 7.49. Koja su pravila DPLL procedure primenljiva na formulu: (¬𝑎∨𝑏∨𝑐)∧(𝑎∨𝑏∨¬𝑐)∧(¬𝑎∨𝑏∨¬𝑐)?

20
Pitanje 7.50. Da li se može konstruisati iskazna formula u knf formi za koju se algoritam DPLL ne zausta-

(
vlja?

je
Pitanje 7.51. Koja je složenost DPLL procedure u najgorem slučaju?
Pitanje 7.52. Da li postoje iskazne formule za koje je vreme izvršavanja procedure DPLL polinomsko u odnosu
an
na veličinu formule?
Pitanje 7.53. Ako želimo da DPLL procedurom ispitamo da li je iskazna formula 𝐴 tautologija, šta treba da
izd

bude ulaz za DPLL proceduru? U kom je onda slučaju, formula 𝐴 valjana?


Zadatak 7.21. Data je iskazna formula
ko

((𝑎 ⇒ 𝑏) ⇒ 𝑐) ∨ (𝑏 ∧ 𝑐)

Odrediti knf date formule i ispitati njenu zadovoljivost koristeći DPLL algoritam.
ns

Zadatak 7.22. Pomoću DPLL algoritma proveriti da li je sledeća formula zadovoljiva:


tro

(𝑐 ⇒ (𝑎 ∧ 𝑏))) ⇒ (𝑎 ∧ 𝑐)

Zadatak 7.23. Pomoću DPLL algoritma proveriti da li je sledeća formula tautologija:


ek

((𝑎 ∨ ¬𝑏) ⇒ ¬𝑐) ⇒ (¬𝑎 ∧ 𝑏 ∧ ¬𝑐)


El

Zadatak 7.24. Data je iskazna formula

((𝑎 ⇒ 𝑏) ⇒ 𝑐) ∨ (𝑏 ∧ 𝑐)

Ispitati njenu zadovoljivost koristeći DPLL algoritam.


Zadatak 7.25. Data je iskazna formula (𝑝 ∨ (𝑞 ∧ 𝑟)) ⇒ (𝑞 ∨ 𝑝 ∨ 𝑟). Odrediti knf date formule i ispitati njenu
zadovoljivost koristeći algoritam DPLL.
Zadatak 7.26. Proveriti DPLL procedurom da li je sledeća iskazna formula valjana.

((𝑎 ⇒ 𝑏) ⇒ (𝑏 ⇒ 𝑐)) ∧ 𝑎 ∧ ¬𝑐

Zadatak 7.27. Primenom DPLL algoritma ispitati da li su sledeće formule zadovoljive:


(a) (𝑝 ⇒ 𝑟) ⇒ ((𝑞 ⇒ 𝑟) ⇒ (𝑝 ∨ 𝑞 ⇒ 𝑟))
(b) ¬((𝑝 ⇒ 𝑟) ⇒ ((𝑞 ⇒ 𝑟) ⇒ (𝑝 ∨ 𝑞 ⇒ 𝑟)))
Zadatak 7.28. Primenom DPLL algoritma ispitati da li je formula (𝑝 ∨ ¬𝑞 ∨ ¬𝑟) ∧ (¬𝑝 ∨ 𝑞 ∨ ¬𝑟) ∧ (𝑝 ∨ ¬𝑞 ∨ 𝑟)
zadovoljiva, tautologija, poreciva, kontradikcija.
93 7. Iskazna logika

7.7 Rešavanje problema svodenjem na SAT


Mnogi praktični problemi mogu se rešiti korišćenjem iskazne logike. Obično je postupak rešavanja ovakav:

• elementarni iskazi (tvrdnje) koji figurišu u opisu problema, predstavljaju se iskaznim promenljivim (u
duhu nekog kodiranja);

• uslovi problema se predstavljaju iskaznim formulama nad tim iskaznim promenljivim;

• konjunkcija tih iskaznih formula transformiše se u konjunktivnu normalnu formu;

• zadovoljivost formule u konjunktivnoj normalnoj formi se ispituje sat rešavačem;

• ukoliko je formula zadovoljiva, svaki njen model daje jedno rešenje polaznog problema.

Svodenjem na sat mogu se pogodno opisati mnogi problemi nad konačnim domenima. U nastavku će biti
pokazano kako sabiranje prirodnih brojeva, a i rešavanje jednačina koje uključuju takvo sabiranje mogu biti

9)
svedeni na sat.

Primer 7.18. Neka su 𝑢 i 𝑣 prirodni brojevi manji od 4. Onda, ako je broj 𝑢 predstavljen parom iskaznih slova

1
(𝑝, 𝑞) (koja odgovaraju njegovim ciframa u binarnom zapisu) a broj 𝑣 predstavljen parom (𝑟, 𝑠), onda je broj

20
𝑣 + 𝑢 (po modulu 22 ) predstavljen parom ((𝑝∨𝑟)∨(𝑞 ∧ 𝑠), 𝑞∨𝑠) (gde ∨ označava ekskluzivnu disjunkciju).
Neka je zadat problem odredivanja vrednosti 𝑢, ako je poznato da je 𝑣 = 2 i 𝑣 = 𝑢 + 1 (po modulu 4). Broj

(
1 može se predstaviti parom (⊥, ⊤) i kako je poznato da važi 𝑣 = 2 i 𝑣 = 𝑢 + 1, onda se 𝑣 može predstaviti i
na način (⊤, ⊥) i na način ((𝑝∨⊥)∨(𝑞 ∧ ⊤), 𝑞∨⊤), i, nakon pojednostavljivanja, sa (𝑝∨𝑞, ¬𝑞). Da bi se dobila
je
formula koja odgovara zadatim uslovima i iz koje se može dobiti vrednost broja 𝑢, formule na obe pozicije moraju
da budu ekvivalentne i sledeća formula mora biti zadovoljiva: ((𝑝∨𝑞) ⇔ ⊤) ∧ (¬𝑞 ⇔ ⊥). Ona je zadovoljiva i
an
ima samo jedan model. U tom modelu promenljiva 𝑝 ima vrednost 0 a promenljiva 𝑞 ima vrednost 1. Dakle,
nepoznata vrednost 𝑢 ima binarni zapis 01, pa je ona jednaka 1.
izd

Rešavanje problema svodenjem na sat biće ilustrovano kroz nekoliko konkretnih primera i nekoliko različitih
vrsta svodenja na sat.
ko

7.7.1 Primeri kodiranja


Retka kodiranja. U praktičnim problemima koji se rešavaju svodenjem na sat, ne figurišu samo iskazne
ns

promenljive, već često i celobrojne promenljive 𝑣𝑖 koje mogu imati vrednosti iz nekog ograničenog skupa. U
takvim situacijima često se koristi retko kodiranje (eng. sparse encoding) u kojem se uvode iskazne promenljive
tro

𝑝𝑣,𝑖 koje su tačne ako i samo ako promenljiva 𝑣 ima vrednost 𝑖. Time se uslov da promenljiva 𝑣 ima jednu
vrednost iz zadatog domena 𝐼 zadaje uslovom („uslov barem-jedna“):
⋁︁
ek

𝑝𝑣,𝑖
𝑖∈𝐼
El

Promenljiva 𝑣 ne može imati dve vrednosti istovremeno, što se opisuje formulom („uslov najviše-jedna“):
⋀︁
¬𝑝𝑣,𝑖 ∨ ¬𝑝𝑣,𝑗
𝑖,𝑗∈𝐼,𝑖̸=𝑗

Pored uslova koji su potrebni kako bi se iskazalo da promenljiva ima (tačno jednu) vrednost iz nekog konačnog
skupa, potrebno je kodirati i razne druge uslove. Za neke uslove koji se često koriste, su poznati ustaljeni
načini kodiranja koji daju specifične varijante retkog kodiranja. Direktno kodiranje (eng. direct encoding) je
varijanta retkog kodiranja namenjena ograničenjima koja izražavaju da se kombinacije vrednosti nekih promen-
ljivih medusobno isključuju. U toj varijanti, sve nedozvoljene kombinacije vrednosti, se opisuju formulama (tzv.
„klauzama konflikta”):
¬𝑝𝑣,𝑖 ∨ ¬𝑝𝑤,𝑗
Potporno kodiranje (eng. support encoding) je varijanta retkog kodiranja namenjena ograničenjima oblika: ako
𝑣 ima vrednost 𝑖, onda 𝑤 mora imati neku od vrednosti iz skupa 𝐴. Ta ograničenja se opisuju formulama
(klauzama konflikta) sledećeg oblika:
⋁︁
¬𝑝𝑣,𝑖 ∨ 𝑝𝑤,𝑗
𝑗∈𝐴
7.7. Rešavanje problema svodenjem na SAT 94

Log kodiranje. U log kodiranju svakom bitu vrednosti numeričkih promenljivih (zapisanih u binarnoj re-
prezentaciji) pridružuje se jedna iskazna promenljiva. U ovoj reprezentaciji ne postoji potreba za uslovima
„barem-jedna“ i „najviše-jedna“, jer svaka kombinacija vrednosti uvedenih iskaznih promenljivih daje tačno
jednu vrednost odgovarajuće promenljive. Naravno, kada je broj mogućih vrednosti numeričke promenljive
manji od broja mogućih vrednosti iskaznih promenljivih koji se koriste za njeno kodiranje, neke kombinacije
vrednosti iskaznih promenljivih potrebno je zabraniti dodatnim klauzama (na primer, ako promenljiva 𝑛 može
da ima vrednosti od 0 do 6, za njeno kodiranje se koriste tri iskazne promenljive, ali se zabranjuje njihova
kombinacija koja daje vrednost 7).
I u log kodiranju, moguće je izraziti uslove koje u slučaju retkih kodiranja izražavaju direktno i potporno
kodiranje, ali zbog prirode log kodiranja, te uslove potrebno je zadati nad binarnim kombinacijama koje predsta-
vljaju vrednosti numeričkih promenljivih. Na primer, neka promenljive 𝑣 i 𝑤 uzimaju celobrojne vrednosti od 0
do 7 i neka su kodirane iskaznim promenljivim 𝑝𝑣,1 , 𝑝𝑣,2 , 𝑝𝑣,3 , 𝑝𝑤,1 , 𝑝𝑤,2 i 𝑝𝑤,3 , pri čemu viši indeksi označavaju
bitove veće težine. Ukoliko se vrednost 3 promenljive 𝑣 uzajamno isključuje sa vrednošću 6 promenljive 𝑤, taj
uslov se može kodirati u terminima bitova, klauzom

¬𝑝𝑣,1 ∨ ¬𝑝𝑣,2 ∨ 𝑝𝑣,3 ∨ 𝑝𝑤,1 ∨ ¬𝑝𝑤,2 ∨ ¬𝑝𝑤,3 .

9)
Primer 7.19. Zadatak je obojiti dve kuće (neka su označene sa 𝑣 i 𝑤) po jednom od tri raspoložive boje (neka
su označene brojevima 1, 2, 3), ali tako da su obojene različito.

1
U retkim kodiranjima problema, biće potrebni „barem jedna“ uslovi

20
𝑝𝑣,1 ∨ 𝑝𝑣,2 ∨ 𝑝𝑣,3
𝑝𝑤,1 ∨ 𝑝𝑤,2 ∨ 𝑝𝑤,3

(
i „najviše jedna“ uslovi:
¬𝑝𝑣,1 ∨ ¬𝑝𝑣,2
¬𝑝𝑣,1 ∨ ¬𝑝𝑣,3
¬𝑝𝑣,2 ∨ ¬𝑝𝑣,3
je
an
¬𝑝𝑤,1 ∨ ¬𝑝𝑤,2
¬𝑝𝑤,1 ∨ ¬𝑝𝑤,3
izd

¬𝑝𝑤,2 ∨ ¬𝑝𝑤,3
Dodatno, u direktnom kodiranju biće opisan i uslov da nisu obe kuće obojene istom bojom (klauze konflikta):
¬𝑝𝑣,1 ∨ ¬𝑝𝑤,1
¬𝑝𝑣,2 ∨ ¬𝑝𝑤,2
ko

¬𝑝𝑣,3 ∨ ¬𝑝𝑤,3
U potpornom kodiranju, klauze konflikta se zadaju na sledeći način:
¬𝑝𝑣,1 ∨ (𝑝𝑤,2 ∨ 𝑝𝑤,3 )
ns

¬𝑝𝑣,2 ∨ (𝑝𝑤,1 ∨ 𝑝𝑤,3 )


¬𝑝𝑣,3 ∨ (𝑝𝑤,1 ∨ 𝑝𝑤,2 )
tro

¬𝑝𝑤,1 ∨ (𝑝𝑣,2 ∨ 𝑝𝑣,3 )


¬𝑝𝑤,2 ∨ (𝑝𝑣,1 ∨ 𝑝𝑣,3 )
¬𝑝𝑤,3 ∨ (𝑝𝑣,1 ∨ 𝑝𝑣,2 )
ek

Pažljivom analizom može se pokazati da poslednje tri navedene klauze nisu potrebne.
U log kodiranju, promenljive 𝑝𝑣,1 , 𝑝𝑣,2 označavaju cifre binarnog zapisa boje koja odgovara kući 𝑣, a 𝑝𝑤,1 ,
𝑝𝑤,2 označavaju cifre binarnog zapisa boje koja odgovara kući 𝑤 (cifri 0 neka odgovara vrednost netačno, a cifri
El

1 neka odgovara vrednost tačno). Najveći indeks boje je 3, pa zato postoje uslovi:
¬𝑝𝑣,1 ∨ ¬𝑝𝑣,2
¬𝑝𝑤,1 ∨ ¬𝑝𝑤,2
Klauze konflikta su sledeće klauze:
𝑝𝑣,1 ∨ 𝑝𝑤,1 ∨ 𝑝𝑣,2 ∨ 𝑝𝑤,2
¬𝑝𝑣,1 ∨ 𝑝𝑤,1 ∨ ¬𝑝𝑣,2 ∨ 𝑝𝑤,2
𝑝𝑣,1 ∨ ¬𝑝𝑤,1 ∨ 𝑝𝑣,2 ∨ ¬𝑝𝑤,2

7.7.2 Problem 𝑛 dama


Za svako konkretno 𝑛, analogno kao u slučaju 𝑛 = 3, problem 𝑛 dama (slika 7.7.2) može se rešiti korišćenjem
iskazne logike. Primenimo kodiranje u stilu retkog kodiranja: neka svakom (𝑖, 𝑗) polju šahovske table odgovara
jedna iskazna promenljiva 𝑝𝑖𝑗 (1 ≤ 𝑖, 𝑗 ≤ 8). Neka promenljiva 𝑝𝑖𝑗 ima vrednost 1 ako je na polju (𝑖, 𝑗) neka
dama, a 0 inače.
Zadata ograničenja moguće je zapisati kao iskazne formule i ispitivanjem zadovoljivosti njihove konjunkcije
ispituje se da li je moguće dame rasporediti na opisani način. Ograničenja se mogu, korišćenjem direktnog
kodiranja opisati na sledeći način:
95 7. Iskazna logika

8
0ZQZ0Z0Z
7
Z0Z0ZQZ0
6
0Z0L0Z0Z
5
ZQZ0Z0Z0
4
0Z0Z0Z0L
3
Z0Z0L0Z0
2
0Z0Z0ZQZ
1
L0Z0Z0Z0
a b c d e f g h

Slika 7.5: Jedno rešenje za problem 8 dama

9)
1. u svakoj koloni mora da bude barem jedna dama:

1
𝑖=1,...,𝑛 𝑝𝑗𝑖 , za 1 ≤ 𝑗 ≤ 𝑛;
⋁︀

20
2. u svakoj koloni mora da bude najviše jedna dama:

(
𝑖=1,...,𝑛−1;𝑗=𝑖+1,...,𝑛 ¬𝑝𝑘𝑖 ∨ ¬𝑝𝑘𝑗 , za 1 ≤ 𝑘 ≤ 𝑛;
⋀︀

3. u svakoj vrsti mora da bude najviše jedna dama: je


an
𝑖=1,...,𝑛−1;𝑗=𝑖+1,...,𝑛 ¬𝑝𝑖𝑘 ∨ ¬𝑝𝑗𝑘 , za 1 ≤ 𝑘 ≤ 𝑛;
⋀︀

4. nema dama koje se napadaju dijagonalno:


izd

𝑖=1,...,𝑛;𝑗=1,...,𝑛;𝑘=1,...,𝑛;𝑙=1,...,𝑛 ¬𝑝𝑖𝑗 ∨ ¬𝑝𝑘𝑙 , za |𝑘 − 𝑖| = |𝑙 − 𝑗|, 𝑘 > 𝑖.


⋀︀

Kako prva dva skupa uslova obezbeduju da ima ukupno 𝑛 dama, a treći da u svakoj vrsti ima najviše jedna
dama, nije potrebno zadavati uslov da u svakoj vrsti mora da bude barem jedna dama.
ko

Konjunkcija navedenih uslova daje formulu koja opisuje zadati problem. Ona je već u konjunktivnoj nor-
malnoj formi i njena zadovoljivost može biti ispitana nekim sat rešavačem. Na primer, za 𝑛 = 8, formula ima
ns

92 modela i svaki od njih daje po jedno rasporedivanje dama koje ispunjava date uslove.
tro

7.7.3 Rasporedivanje sportskih utakmica


Iskazna logika često se koristi u problemima rasporedivanja. Jedan od takvih problema je rasporedivanje
ek

sportskih utakmica. Pretpostavićemo da se koristi kružni sistem takmičenja po principu „igra svako sa svakim“
koji se karakteriše sledećim uslovima:
El

1. Postoji 𝑛 timova (𝑛 je paran broj) i svaka dva tima jednom igraju jedan protiv drugog.

2. Sezona traje 𝑛 − 1 nedelja.

3. Svaki tim u svakoj nedelji igra jednu utakmicu.

4. Postoji 𝑛/2 terena i svake nedelje na svakom terenu igra se jedna utakmica.

5. Nijedan tim ne igra više od dva puta na istom terenu.

Neka su timovi označeni brojevima od 1 do 10. Primer ispravnog rasporeda je dat u tabeli 7.2.
Tvrdenje relevatno za sastavljanje rasporeda je da „tim 𝑘1 igra protiv tima 𝑘2 na terenu 𝑖 u nedelji 𝑗“. Kako
je u nekim ograničenjima potrebno izražavati se o pojedinačnim timovima, a ne samo o parovima, ovo tvrdenje
neće biti predstavljeno jednom promenljivom, nego dvema. Promenljiva 𝑝1𝑘 𝑖𝑗 označava da tim 𝑘 igra (protiv
nekog tima) na terenu 𝑖 u nedelji 𝑗 i analogno za promenljivu 𝑝2𝑘𝑖𝑗 . Stoga, skup promenljivih je:

{𝑝1𝑘 2𝑘
𝑖𝑗 | 1 ≤ 𝑖 ≤ 𝑛/2, 1 ≤ 𝑗 ≤ 𝑛 − 1, 1 ≤ 𝑘 ≤ 𝑛 − 1}∪ {𝑝𝑖𝑗 | 1 ≤ 𝑖 ≤ 𝑛/2, 1 ≤ 𝑗 ≤ 𝑛 − 1, 2 ≤ 𝑘 ≤ 𝑛}
7.7. Rešavanje problema svodenjem na SAT 96

Teren/nedelja 1 2 3 4 5 6 7 8 9
1 6-9 4-6 1-8 4-10 2-8 7-9 5-7 1-2 3-5
2 2-3 1-5 2-4 1-7 9-10 8-10 3-6 4-9 6-8
3 5-10 2-7 3-9 5-9 1-3 1-6 4-8 6-10 4-7
4 1-4 8-9 5-6 3-8 6-7 2-5 1-10 3-7 2-10
5 7-8 3-10 7-10 2-6 4-5 3-4 2-9 5-8 1-9
Tabela 7.2: Primer ispravnog rasporeda za 10 timova.

Ukupno se koristi 𝑛(𝑛 − 1)2 promenljivih. Raspored čini skup parova (𝑝1𝑘 𝑖𝑗 , 𝑝𝑖𝑗 ) koji izražava prethodno
1 2𝑘2

navedeno tvrdenje. Nije bitan poredak timova u parovima koji igraju utakmice, pa se uvodi dogovor da za
svaki od ovih parova važi 𝑘1 < 𝑘2 . Ograničenja se izražavaju formulom koja predstavlja konjunkciju sledećih
klauza (razvrstanih po ulogama). U svakoj grupi ograničenja podrazumeva se da indeksi uzimaju sve vrednosti
dozvoljene navedenim uslovima, a za koje postoje odgovarajuće promenljive.

9)
1. Svake nedelje na svakom terenu se održava utakmica.

1
1𝑛−1
𝑝11
𝑖𝑗 ∨ . . . ∨ 𝑝𝑖𝑗

20
𝑝22 2𝑛
𝑖𝑗 ∨ . . . ∨ 𝑝𝑖𝑗

(
2. Za svaku utakmicu važi 𝑘1 < 𝑘2 .
¬𝑝1𝑘 2𝑘2
𝑖𝑗 ∨ ¬𝑝𝑖𝑗
1

za sve 𝑘1 ≥ 𝑘2 . je
an
3. Bilo koje nedelje nijedan tim ne igra više od jedne utakmice.

¬𝑝𝑟𝑖11𝑗𝑘 ∨ ¬𝑝𝑟𝑖22𝑗𝑘
izd

pod uslovom da ne važi 𝑟1 = 𝑟2 i 𝑖1 = 𝑖2 .


4. Dva različita tima se sastaju najviše jednom.
ko

¬𝑝1𝑘 2𝑘2 1𝑘1 2𝑘2


𝑖1 𝑗1 ∨ ¬𝑝𝑖1 𝑗1 ∨ ¬𝑝𝑖2 𝑗2 ∨ ¬𝑝𝑖2 𝑗2
1
ns

pod uslovima 𝑗1 ̸= 𝑗2 i 𝑘1 < 𝑘2 .


5. Nijedan tim ne igra više od dva puta na istom terenu.
tro

¬𝑝𝑟𝑖𝑗11𝑘 ∨ ¬𝑝𝑟𝑖𝑗22𝑘 ∨ ¬𝑝𝑟𝑖𝑗33𝑘


ek

pod uslovima 𝑗1 ̸= 𝑗2 , 𝑗1 ̸= 𝑗3 i 𝑗2 ̸= 𝑗3 .

Ukupan broj klauza u formuli je reda 𝑂(𝑛6 ).


El

7.7.4 Provera ekvivalentnosti kombinatornih kola


Iskazna logika ima primene u automatizaciji dizajna elektronskih kola, koje uključuju simulaciju, minimiza-
ciju i verifikaciju dizajna kola. Vrsta elektronskih kola koja je najpogodnija za primenu metoda iskazne logike
su kombinatorna kola — mreže povezanih logičkih elemenata kod kojih vrednosti izlaza zavise isključivo od
vrednosti ulaza. Logički elementi predstavljaju elektronske implementacije logičkih veznika. Takode, navedeno
svojstvo važi i za istinitosne vrednosti iskaznih formula — za datu formulu, one zavise isključivo od vrednosti
koje valuacija dodeljuje iskaznim promenljivim u toj formuli.
Jedan problem verifikacije hardvera koji je u vezi sa prethodno uočenom analogijom je provera ekvivalentnosti
kombinatornih kola. Dva logička kola su ekvivalentna ukoliko za sve kombinacije vrednosti na svojim ulazima,
daju iste izlaze.
Ova vrsta verifikacije je korisna u sledećem kontekstu. Kombinatorna kola mogu biti vrlo složena i dizajniraju
se u alatima koji podržavaju neki od jezika za opis hardvera kao što su Verilog ili VHDL. Pre nego što se na
osnovu kreiranog dizajna pristupi fizičkoj implementaciji logičkog kola, taj dizajn prolazi kroz niz transformacija
kojima se vrše optimizacije kola kako bi se uštedelo na njegovoj površini, brzini i slično. Svaki od koraka ovog
postupka može biti vrlo složen i iako alogoritmi na kojima pomenute transformacije počivaju garantuju održanje
97 7. Iskazna logika

𝐴 𝐵 𝑃

𝑍
𝑃
𝐴 𝑍′
𝐵

𝑄′

9)
𝑄

1
20
Slika 7.6: Osnovni i optimizovani dizajn sabirača

(
korektnosti, usled složenosti softvera u kojem su ti algoritmi implementirani, uvek postoji mogućnost da je u
je
nekom koraku napravljena greška i da finalni, optimizovani, dizajn kola više nije ekvivalentan polaznom. Zbog
an
toga je pre fizičke izrade logičkog kola potrebno proveriti ekvivalentnost polaznog i finalnog dizajna kola. Treba
primetiti da ustanovljena ekvivalentnost ne garantuje funkcionalnu korektnost kola — to da ono zaista radi ono
što bi trebalo. Medutim, i to je moguće ustanoviti proverom ekvivalentosti sa kolom za koje je poznato da je
izd

funkcionalno korektno, ukoliko takvo kolo postoji.


Provera ekvivalentnosti kombinatornih kola se vrši tako što se svakom kolu pridruži iskazna formula koja
odgovara njegovom dizajnu. Neka su to formule 𝐴 i 𝐵. Ukoliko su kola ekvivalentna, za sve kombinacije vrednosti
ulaza, vrednosti izlaza su iste. U terminima iskaznih formula, za svaku valuaciju 𝑣, mora da važi 𝐼𝑣 (𝐴) = 𝐼𝑣 (𝐵).
ko

Odnosno, formula 𝐴 ⇔ 𝐵 mora biti tautologija, a formula ¬(𝐴 ⇔ 𝐵) nezadovoljiva. Zadovoljivost iskazne
formule se može proveriti pomoću sat-rešavača. Ukoliko rešavač ustanovi da je formula nezadovoljiva, kola su
ns

ekvivalentna, a ukoliko ustanovi da postoji zadovoljavajuća valuacija, ta valuacija predstavlja vrednosti ulaza
za koje se izlazi kola razlikuju, što može poslužiti kao polazna tačka u otklanjanju greške.
Postupak provere ekvivalentnosti ćemo prikazati na primeru sabirača. Recimo da je optimizovanjem prvog
tro

kola na slici 7.6, dobijeno drugo. Na osnovu dizajna, za svaki od izlaza može se formirati iskazna formula koja
mu odgovara:
ek

𝑍 = (¬𝐴 ∧ 𝐵 ∧ ¬𝑃 ) ∨ (𝐴 ∧ ¬𝐵 ∧ ¬𝑃 ) ∨ (¬𝐴 ∧ ¬𝐵 ∧ 𝑃 ) ∨ (¬𝐴 ∧ ¬𝐵 ∧ 𝑃 ) ∨ (𝐴 ∧ 𝐵 ∧ 𝐶)


El

𝑄 = (𝐴 ∧ 𝐵) ∨ (𝐵 ∧ 𝑃 ) ∨ (𝐴 ∧ 𝑃 )
𝑍 ′ = (𝐴∨𝐵)∨𝑃
𝑄′ = (𝐴 ∧ 𝐵) ∨ (𝐴∨𝐵) ∧ 𝑃
Kola su ekvivalentna ukoliko je formula ¬((𝑍 ⇔ 𝑍 ′ ) ∧ (𝑄 ⇔ 𝑄′ )) nezadovoljiva. Treba imati u vidu da
formule koje se dobijaju iz ovakvih primena mogu imati i desetine hiljada pa i stotine hiljada promenljivih, ali
da sat-rešavači ipak uspevaju da provere njihovu zadovoljivost zahvaljujući pravilnostima koje su prisutne u
tim formulama, a koje sat-rešavači u toku rada mogu da nauče i iskoriste.

7.7.5 Ograničena provera modela


Jedna od najkorišćenijih tehnika u verifikaciji hardvera i softvera je ograničena provera modela. Funkcioni-
sanje hardvera ili softvera se može apstraktno opisati konačnim automatima čija stanja opisuju stanja sistema
koji se izučava, a grane moguće prelaske sistema iz stanja u stanje. Ovaj konačni automat smatra se modelom
sistema koji se analizira. Jedan od ciljeva verifikacije je dokazivanje da sistem zadovoljava odredena svojstva,
na primer, da nikad neće doći u stanje koje predstavlja grešku ili bezbednosni rizik. Primer takvog svojstva je
za sistem koji treba da pruži neki odgovor na zadati zahtev, nakon stanja u kojem je primljen zahtev, sistem će
7.7. Rešavanje problema svodenjem na SAT 98

𝐶𝐿𝑂𝐶𝐾

𝐷
𝑝1

𝐷
𝑝0

Slika 7.7: Dizajn brojača koji broji od 0 do 2

𝑝𝑖1 𝑝𝑖0 𝑝𝑖+1


1 𝑝𝑖+1
0
0 0 0 1
0 1 1 0

9)
1 0 0 0
1 1 1 0

1
Tabela 7.3: Tablica prelaska brojača koji broji od 0 do 2

( 20
sigurno doći u neko stanje u kojem će taj traženi odgovor biti dat. Dokazivanje tvrdnji poput ovih, koje se na-
ziva proverom modela, može predstavljati problem koji nije odlučiv. Stoga se u praksi obično koristi ograničena
je
provera modela koja se svodi na dokazivanje da neko svojstvo važi u svim stanjima u koja se iz polaznog stanja
može dospeti u najviše 𝑘 prelaza.
an
Kako bi se sprovela tehnika ograničene provere modela, potrebno je uočiti kako se stanja mogu modelovati
iskaznim promenljivim, a potom iskaznim formulama nad tim promenljivim zapisati željeno svojstvo, polazne
izd

pretpostavke i način na koji se promenljive menjaju prilikom prelaska iz stanja u stanje.


Ograničenu proveru modela ćemo ilustrovati na primeru dvobitnog brojača koji broji u krug od 0 do 2, kao
što je brojač na slici 7.7. Njegova tablica prelaska je data tabelom 7.3.
Cilj je dokazati da ako brojač započne brojanje od bilo kog broja koji nije 3, onda nikada neće doći do broja
ko

3. Stanje u trenutku 𝑖 se opisuje pomoću dva bita 𝑝𝑖0 i 𝑝𝑖1 . Željeno svojstvo se opisuje formulom ¬𝑝𝑖0 ∨ ¬𝑝𝑖1 .
Uslov koji važi u polaznom stanju je ¬𝑝00 ∨ ¬𝑝01 . Iz tablice prelaska vidi se da za svaka dva susedna stanja važe
ns

metaformule 𝑝𝑖+1 0 ≡ ¬𝑝𝑖0 ∧ ¬𝑝𝑖1 i 𝑝𝑖+1


1 ≡ 𝑝𝑖0 . Da bi se pokazalo da stanje 𝑘 ne odgovara broju 3, treba ustanoviti
da je sledeća formula nezadovoljiva:
tro

(¬𝑝00 ∨ ¬𝑝01 ) ∧ (𝑝10 ⇔ ¬𝑝00 ∧ ¬𝑝01 ) ∧ (𝑝11 ⇔ 𝑝00 ) ∧ . . .


∧(𝑝𝑘0 ⇔ ¬𝑝𝑘−1
0 ∧ ¬𝑝𝑘−1
1 ) ∧ (𝑝𝑘1 ⇔ 𝑝𝑘−1
0 ) ∧ (𝑝𝑘0 ∧ 𝑝𝑘1 )
ek

Prvi konjunkt u gornjoj konjunkciji predstavlja polazni uslov, potom slede po dva konjunkta koji opisuju
prelaske izmedu susednih stanja, a poslednji konjunkt izražava negaciju željenog svojstva u poslednjem stanju.
El

Ukoliko je formula zadovoljiva za neko 𝑘, to znači da postoji put od polaznog stanja kojom se može doći do
stanja koje ne zadovoljava traženo svojstvo. U tom slučaju, dobijena valuacija odredivala bi stanja preko kojih
se može doći do problematičnog stanja, što može pomoći u pronalaženju greške u analiziranom sistemu.

7.7.6 SAT-rešavači i dimacs-cnf format


Programe koji rešavaju instance sat problema zovemo sat-rešavači (eng. sat-solvers). Većina savremenih
sat-rešavača zasnovana je na DPLL proceduri, ali je obogaćena mnogim tehnikama i heuristikama. Neki od
popularnih sat-rešavača su MiniSAT, PicoSAT i zChaff.
sat-rešavači obično očekuju ulaz u dimacs-cnf formatu. U ovom formatu, prvi red sadrži informaciju
o broju iskaznih promenljivih i broju klauza, a naredni redovi sadrže zapis po jedne klauze. Promenljive su
označene rednim brojevima, negirane promenljive odgovarajućim negativnim brojevima i svaki red završava se
brojem 0. Na primer, sadržaj

p cnf 3 2
1 -3 0
-1 2 3 0
99 7. Iskazna logika

odgovara formuli (sa tri promenljive i dve klauze): (𝑝1 ∨ ¬𝑝3 ) ∧ (¬𝑝1 ∨ 𝑝2 ∨ 𝑝3 ).

Pitanja i zadaci
Zadatak 7.29. Dva 2-bitna broja se sabiraju i daju rezultat 3. Primenom DPLL procedure naći dva takva
broja.
Zadatak 7.30. Zapisati formulu koja opisuje uslov da se u svakoj vrsti table za igru oblika 2 × 2 polja može
postaviti tačno jedan žeton i proveriti njenu zadovoljivost DPLL procedurom.
Zadatak 7.31. Robot treba da rasporedi dva objekta u dve kutije. Pri tome ne sme oba objekta da stavi u
istu kutiju. U vidu iskazne formule zapisati uslove koji definišu dopustive rasporede. Objasniti šta znači koje
iskazno slovo. Pomoću DPLL procedure naći neki dopustiv raspored.
Zadatak 7.32. Na tabli 2 × 2 postavljaju se žetoni. U iskaznoj logici zapisati uslov da na bar jednoj dijagonali
moraju biti postavljena bar dva žetona. Pomoću DPLL algoritma ispitati zadovoljivost ove formule i navesti
neki model koji ovaj algoritam daje. Šta daje dobijeni model?

9)
Zadatak 7.33. U iskaznoj logici

1
1. zapisati uslov da bitovi 3-bitnog broja moraju biti jednaki i

20
2. DPLL procedurom proveriti da li takav broj postoji i ako postoji, naći primer.
Zadatak 7.34. U iskaznoj logici zapisati uslov da je 4-bitna reprezentacija broja palindrom, ali da nisu svi

(
bitovi isti. DPLL procedurom proveriti da li postoji takav broj i ako postoji dati primer.
je
Zadatak 7.35. Tri polja se boje crvenom ili plavom bojom. Ukoliko je prvo polje crveno, druga dva moraju
biti iste boje. Ukoliko je drugo polje crveno, treće mora biti plavo. Zapisati date uslove u iskaznoj logici i
an
DPLL procedurom proveriti da li je moguce polja obojiti u skladu sa ovim pravilima. Ukoliko jeste naći primer
takvog bojenja.
izd

Zadatak 7.36. Temena trougla se boje pomoću dve boje. Pri tom, ni jedan par temena ne može imati istu
boju. Zapisati date uslove u iskaznoj logici i DPLL procedurom proveriti da li je moguće temena obojiti u skaldu
sa datim pravilima. Ukoliko jeste, naći primer takvog bojenja na osnovu rada DPLL procedure.
ko

Zadatak 7.37. Za kolo dato na slici, DPLL procedurom proveriti da li može da da izlaz 1 i ukoliko je to
moguće, naći kombinaciju vrednosti na ulazima za koju je to slučaj.
ns
tro

Zadatak 7.38. Koristeći direct encoding zapisati sledeće uslove:


ek

𝐴, 𝐵, 𝐶 ∈ 4, 5
𝐴 i 𝐵 ne smeju biti jednaki
El

𝐶 mora biti veće od 𝐵


Zadatak 7.39. Tabela 2 × 2 se boji crvenom ili plavom bojom. Ako je polje (1,1) ofarbano crvenom bojom
onda barem jedno od ostalih polja mora biti plavo. Ako je polje (2,2) ofarbano plavom bojom onda barem dva
ostala polja moraju biti crvena. Ne smeju sva polja biti ofarbana istom bojom. Zapisati date uslove u iskaznoj
logici i DPLL procedurom proveriti da li je moguće polja obojiti u skladu sa ovim pravilima. Ukoliko jeste naći
primer takvog bojenja. (polja označavamo sa (1,1) (1,2) (2,1) i (2,2)).
Zadatak 7.40. Tabela 2 × 2 se boji crvenom ili plavom bojom. Ako je polje B plave boje, polje C je crvene
boje. A i D su različite boje. Ako je B crvene boje, A je isto crvene boje. DPLL procedurom naći jedan primer
bojenja.
A B
C D

Zadatak 7.41. Svaki stanovnik jedne države ili uvek laže ili uvek govori istinu i na svako pitanje odgovara
uvek samo sa da ili ne. Neki turista dolazi na raskrsnicu u toj državi i zna da samo jedan od dva puta vodi
do glavnog grada. Ne postoji znak koji pokazuje koji je to put, ali postoji meštanin 𝑅 koji stoji na raskrsnici.
Koje da-ili-ne pitanje treba turista da postavi da bi odredio kojim putem da krene?
7.7. Rešavanje problema svodenjem na SAT 100


Zadatak 7.42. Modelovanja jednog problema biće prikazano na primeru jednostavne igre - Vumpus. Igra
se igra na tabli od 4 × 4 polja koja predstavlja unutrašnjost pećine. U pećini živi čudovište Vumpus i nalazi se
na jednom od polja. Na nekima od polja mogu se nalaziti provalije, a na jednom je zlato. U pećini je mrak
pa igrač unapred ne zna sadržaj nijednog polja. Igrač se na početku nalazi na jednom polju i njegov zadatak je
da otkrije na kojem polju je zlato. Na poljima oko provalija se oseća povetarac. Kako se Vumpus ne kupa, na
poljima oko njega oseća se smrad. Ako igrač stane na polje na kome se nalazi provalija ili Vumpus, on strada
i igra je završena. Igrač ima jednu strelu koju može odapeti na susedno polje kako bi ubio Vumpusa. Igrač je
na početnom polju (1,1). Primer table je prikazan na narednoj slici.

1 9)
( 20
je
an
izd
ko
ns
tro
ek
El
Glava 8

Logika prvog reda

9)
Logika prvog reda, predikatska logika, znatno je izražajnija od iskazne logike. Osnovna novina u odnosu
na iskaznu logiku je uvodenje kvantifikovanja, univerzalnog i egzistencijalnog. Zahvaljujući kvantifikatorima, u
logici prvog reda mogu se formulisati tvrdenja koja nije moguće formulisati na jeziku iskazne logike. U logici

1
prvog reda dozvoljeno je samo kvantifikovanje promenljivih.1 U okviru logike prvog reda mogu se opisati mnoge

20
matematičke teorije.
Kao i iskazna logika, logika prvog reda ima tri aspekta: svoju sintaksu (ili jezik), svoju semantiku (ili značenje

(
iskaza) i svoje deduktivne sisteme (sisteme za dokazivanje teorema). I semantika i deduktivni sistemi grade se
nad isto definisanom sintaksom, tj. nad istim skupom formula.
je
Kao i u iskaznoj logici, centralni problemi u predikatskoj logici su ispitivanje da li je data formula valjana
i da li je data formula zadovoljiva. Za razliku od iskazne logike, ovi problemi nisu odlučivi, te ne postoje
an
efektivni algoritmi za njihovo rešavanje. No, problem ispitivanja valjanosti za predikatsku logiku je poluodlučiv,
pa postoje metode koje za svaku valjanu formulu mogu da dokažu da je ona valjana (a ne mogu za bilo koju
izd

formulu koja nije valjana da utvrde da nije valjana).


Postoji više metoda i pristupa za ispitivanje i dokazivanje valjanosti i zadovoljivosti. Neki od njih su se-
mantičke, a neki deduktivne (tj. sintaksičko-deduktivne) prirode. Ključna veza izmedu ova dva koncepta je
tvrdenje da je formula valjana (što je semantička kategorija) ako i samo ako je ona teorema (što je deduk-
ko

tivna kategorija). Zahvaljujući ovoj vezi, sintaksa predikatske logike (jezik predikatske logike), njena semantika
(konvencije o značenju formula) i njena deduktivna svojstva čine kompaktnu celinu.
Logika prvog reda je izražajnija od iskazne logike i njenim sredstvima može se opisati još više praktičnih
ns

problema. Za neke probleme (nad konačnim domenima) pogodnije je rešavanje korišćenjem iskazne logike, ali
za neke je opisivanje i rešavanje znatno lakše korišćenjem predikatske logike.
tro

Primer 8.1. Razmotrimo jednu (jednostavnu varijantu) problema slaganja blokova: blokovi (označeni slovima)
poredani su jedan na drugi. Za neke se zna da li su ispod ili iznad nekog drugog bloka, ali nije zadata potpuna
ek

informacija o poretku svih blokova (ovaj problem može se razmatrati i kao problem muzičkih kompakt diskova
poredanih na jednom štapu).
El

𝐵
𝐴
𝐶

Slika 8.1: Ilustracija za problem uredenja tri bloka

Pretpostavimo da su nekako naslagana tri bloka 𝐴, 𝐵 i 𝐶 i da je poznato da je 𝐵 iznad 𝐴, a da je 𝐶 ispod


𝐴. Pitanje je da li je 𝐵 iznad ili ispod 𝐶. Opisani problem možemo opisati u terminima iskazne logike: iskazna
1 U logici višeg reda predikati i funkcije kao argumente mogu imati druge predikate i funkcije i dozvoljeno je njihovo kvantifi-

kovanje. Na primer, u logici drugog reda predikati i funkcije mogu za argumente imati predikate i funkcije prvog reda i mogu biti
kvantifikovani. Predikati i funkcije reda 𝑛 mogu za argumente imati predikate i funkcije 𝑛 − 1 reda i mogu biti kvantifikovani.

101
8.1. Sintaksa logike prvog reda 102

promenljiva 𝑎𝐴𝐵 može da označava da je 𝐴 iznad 𝐵, 𝑎𝐴𝐶 da je 𝐴 iznad 𝐶, 𝑎𝐵𝐴 da je 𝐵 iznad 𝐴, 𝑏𝐵𝐶 da je 𝐵
ispod 𝐶, itd. Potrebno je za svaka dva bloka obezbediti da važi da ako je prvi iznad drugog, onda drugi nije iznad
prvog, odnosno: 𝑎𝐴𝐵 ⇒ ¬𝑎𝐵𝐴 . Potrebno je za svaka dva bloka obezbediti da važi da ako je prvi iznad drugog,
onda je drugi ispod prvog i obratno, odnosno: 𝑎𝐴𝐵 ⇔ 𝑏𝐵𝐴 . Potrebno je za svaka tri bloka obezbediti da važi: ako
je prvi iznad drugog i drugi iznad trećeg, onda je prvi iznad trećeg, odnosno: 𝑎𝐴𝐵(︀ )︀∧ 𝑎𝐵𝐶 ⇒ 𝑎𝐴𝐶 . Ako postoje
tri bloka, onda ovakvih uslova ima 3! = 6, a ako ih ima 𝑛, onda tih uslova ima 6 𝑛3 . Dakle, iako jeste moguće,
kodiranje u terminima iskazne logike može da bude rogobatno i prostorno veoma zahtevno. Bilo bi dobro ako
bismo umesto 6 𝑛3 uslova mogli da koristimo samo jedan: „za svaka tri bloka 𝑋, 𝑌 , 𝑍 važi: ako je 𝑎𝑋𝑌 i 𝑎𝑌 𝑍
(︀ )︀

onda je 𝑎𝑋𝑍 .“ Logika prvog reda daje takvu mogućnost i zadati problem mogao bi da se elegantno opiše sledećim
uslovima, pri čemu se ne koriste iskazne promenljive poput 𝑎𝐴𝐵 nego atomičke formule sa argumentima poput
𝑎(𝐴, 𝐵) i 𝑏(𝐴, 𝐵), pri čemu 𝑎(𝐴, 𝐵) označava da je 𝐴 iznad 𝐵, a 𝑏(𝐴, 𝐵) označava da je 𝐴 ispod 𝐵:

• „za svaka dva bloka 𝑥, 𝑦 važi: ako je 𝑎(𝑥, 𝑦) onda nije 𝑎(𝑦, 𝑥).“

• „za svaka dva bloka 𝑥, 𝑦 važi: 𝑎(𝑥, 𝑦) ako i samo ako 𝑏(𝑦, 𝑥).“

9)
• „za svaka tri bloka 𝑥, 𝑦, 𝑧 važi: ako je 𝑎(𝑥, 𝑦) i 𝑎(𝑦, 𝑧) onda je 𝑎(𝑥, 𝑧).“

Za sve navedene, a i druge slične formule, potrebno je definisati način na koji im se pridružuje vrednost

1
tačno ili netačno. Iz navedenih uslova potrebno je za proizvoljna tri bloka 𝑥, 𝑦, 𝑧, iz pretpostavke da važi 𝑎(𝑦, 𝑥)

20
i 𝑏(𝑧, 𝑥) izvesti zaključak 𝑎(𝑦, 𝑧) ili 𝑎(𝑧, 𝑦).

(
8.1 Sintaksa logike prvog reda

je
Sintaksički aspekt logike prvog reda govori o njenom jeziku — o skupu njenih ispravnih formula i ne razmatra
njihovo (moguće) značenje.
an
Definicija 8.1 (Jezik i signatura prvog reda). Jezik prvog reda definiše se za
izd

• Logički (ili opšti) deo jezika prvog reda koji čine skupovi: fiksiran, prebrojiv skup promenljivih 𝑉 , dve
logičke konstante — tačno i netačno, konačan skup osnovnih logičkih veznika: unarnog — negacija
i binarnih — konjunkcija, disjunkcija, implikacija, ekvivalencija i dva kvantifikatora — univerzalni i
ko

egzistencijalni.
• Nelogički deo jezika prvog reda koji čine skupovi: (najviše prebrojiv) skup funkcijskih simbola (sa
ns

fiksiranim nenegativnim arnostima), (najviše prebrojiv) skup predikatskih (relacijskih) simbola (sa
fiksiranim nenegativnim arnostima).
tro

Skupovi funkcijskih i predikatskih simbola sa svojim fiksiranim arnostima (odredenim funkcijom 𝑎𝑟) čine
signaturu.
Funkcijske simbole arnosti 0 zovemo simbolima konstanti.
ek

Skup formula logike prvog reda ili dobro zasnovanih formula, u daljem tekstu samo skup formula nad nekom
El

signaturom ℒ definiše se na sledeći način.

Definicija 8.2 (Skup formula logike prvog reda). Skup formula logike prvog reda nad signaturom ℒ ispu-
njava sledeće uslove:

• promenljive i funkcijski simboli arnosti 0 su termovi; term je i objekat dobijen primenom funkcijskog
simbola 𝑓 arnosti 𝑛 na termove 𝑡1 , . . . , 𝑡𝑛 ;
• atomička formula je objekat dobijen primenom predikatskog simbola 𝑝 arnosti 𝑛 na termove 𝑡1 , . . . , 𝑡𝑛 ;
• atomičke formule su formule;
• ako su 𝒜 i ℬ formule, onda su formule i objekti dobijeni kombinovanjem ovih formula logičkim
veznicima i kvantifikatorima (sa promenljivim).

Literal je atomička formula ili negacija atomičke formule. Klauza je disjunkcija više literala.
U navedenoj definiciji (u duhu apstraktne sintakse) ne govori se o tome kako se zapisuju ili čitaju formule
logike prvog reda, već samo o tome kako se grade na apstraktni način (implicitno — u vidu stabla). Konkretnom
103 8. Logika prvog reda

sintaksom može se zadati način na koji se formule zapisuju. Analogno iskaznom slučaju, uobičajeno je da se
logičke konstante tačno i netačno zapisuju kao ⊤ i ⊥ (a čitaju kao te i nete), da se negacija zapisuje kao
¬, konjunkcija kao ∧, disjunkcija kao ∨, implikacija kao ⇒, ekvivalencija kao ⇔, univerzalni kvantor kao ∀,
egzistencijalni kao ∃. Primenu funkcijskog simbola 𝑓 na termove 𝑡1 , . . . , 𝑡𝑛 zapisujemo kao 𝑓 (𝑡1 , . . . , 𝑡𝑛 ) (i
analogno za predikatske simbole). U ovakvom konkretnom zapisu (koji će se koristiti u nastavku), analogno
iskaznom slučaju, ako su 𝒜 i ℬ formule i 𝑥 element skupa 𝑉 , onda su formule i (¬𝒜), (𝒜 ∧ ℬ), (𝒜 ∨ ℬ), ∀𝑥𝒜,
∃𝑥𝒜 i slično. Na primer, zapis ∀𝑥𝒜 čitamo „za svako 𝑥 𝒜“, zapis ∃𝑥𝒜 čitamo „postoji 𝑥 takvo da je 𝒜“, U
ovakvom, konkretnom zapisu, neophodno je koristiti zagrade kako bi se izbegla višesmislenost. Da bi se izbeglo
korišćenje velikog broja zagrada obično se izostavljaju spoljne zagrade i podrazumeva prioritet veznika kao u
iskaznoj logici, uz dodatak da kvantifikatori imaju viši prioritet od svih logičkih veznika.
Termove, atomičke formule i formule nad signaturom ℒ ponekad ćemo kraće zvati i ℒ-termovi, ℒ-atomičke
formule i ℒ-formule. Ako je signatura jasno odredena kontekstom ili ako nije relevantna, govorićemo često samo
termovi, atomičke formule i formule.
Uz indeks ili bez indeksa, simbole konstanti obično (mada ne isključivo) označavamo simbolima 𝑎, 𝑏, 𝑐, . . .,
funkcijske simbole arnosti veće od 0 simbolima 𝑓, 𝑔, ℎ, . . ., predikatske simbole simbolima 𝑝, 𝑞, 𝑟, . . ., promenljive
simbolima 𝑥, 𝑦, 𝑧, . . ., formule simbolima 𝒜, ℬ, 𝒞, . . ., skupove formula simbolima Γ, Δ, . . ..

9)
Ako su dve formule 𝒜 i ℬ sintaksički identične (tj. ako su zapisane u konkretnoj sintaksi jednake kao nizovi
simbola), onda to označavamo 𝒜 = ℬ. U suprotnom, pišemo 𝒜 = ̸ ℬ.

1
20
Primer 8.2. Signatura za problem iz primera 8.1 je ℒ = ({}, {𝑎, 𝑏}, 𝑎𝑟), gde je 𝑎𝑟(𝑎) = 𝑎𝑟(𝑏) = 2.

Primer 8.3. Jedan skup (aritmetičkih) formula može se opisati signaturom ℒ = ({0𝑎 , +𝑎 , ·𝑎 }, {<𝑎 , =𝑎 }, 𝑎𝑟), gde

(
je 𝑎𝑟(0𝑎 ) = 0, 𝑎𝑟(+𝑎 ) = 2, 𝑎𝑟(·𝑎 ) = 2, 𝑎𝑟(<𝑎 ) = 2, 𝑎𝑟(=𝑎 ) = 2. Neki od termova nad ovom signaturom i skupom

je
promenljivih 𝑉 = {𝑥, 𝑦, 𝑧, . . .} su: 0𝑎 , +𝑎 (𝑥, 𝑦), a neke od formula su <𝑎 (+𝑎 (𝑥, 𝑦), 𝑧), <𝑎 (𝑥, 0𝑎 ), ∀𝑥¬(<𝑎
(𝑥, 𝑥)), ∀𝑥(=𝑎 (𝑥, +𝑎 (𝑥, 0𝑎 ))). Ukoliko se funkcijski i predikatski simboli zapišu infiksno (umesto prefiksno),
an
onda se navedeni termovi i formule zapisuju na sledeći način: 0𝑎 , 𝑥 +𝑎 𝑦, 𝑥 +𝑎 𝑦 <𝑎 𝑧, 𝑥 <𝑎 0𝑎 , ∀𝑥¬(𝑥 <𝑎 𝑥),
∀𝑥(𝑥 =𝑎 (𝑥 +𝑎 0𝑎 )).
Predikatski simbol =𝑎 iz navedene signature ne treba mešati sa simbolom = koji se koristi za označavanje
izd

sintaksičke jednakosti izmedu formula (ili za jednakost celih brojeva). Slično, funkcijski simbol 0𝑎 ne treba mešati
sa brojem 0 niti funkcijski simbol +𝑎 sa operacijom sabiranja, koja se obično označava simbolom +. Baš da
bi se naglasila ta razlika, ovi simboli su označeni sa =𝑎 , 0𝑎 i +𝑎 umesto sa =, 0 i +. Kada bude definisano
značenje formula ovog jezika, simbolu 0𝑎 može da bude pridružen broj 0, ali i neki drugi element nekog drugog
ko

skupa (videti poglavlje 8.3).


ns

Primer 8.4. Razmotrimo signaturu ℒ = ({𝑎}, {𝑝, 𝑞}, 𝑎𝑟), gde je 𝑎𝑟(𝑎) = 0, 𝑎𝑟(𝑝) = 1, 𝑎𝑟(𝑞) = 0.
Neki od termova nad ovom signaturom i skupom promenljivih 𝑉 = {𝑥, 𝑦, 𝑧, . . .} su 𝑥, 𝑦, 𝑎, neke od atomičkih
formula su 𝑝(𝑥), 𝑞(𝑦), 𝑞(𝑎), a neke od formula su (∀𝑥)(𝑝(𝑥) ⇒ 𝑞) i ((∀𝑥)𝑝(𝑥)) ⇒ 𝑞).
tro

Primer 8.5. Razmotrimo signaturu ℒ = ({𝑠𝑜𝑘𝑟𝑎𝑡}, {𝑚𝑎𝑛, 𝑚𝑜𝑟𝑡𝑎𝑙}, 𝑎𝑟), gde je 𝑎𝑟(𝑠𝑜𝑘𝑟𝑎𝑡) = 0, 𝑎𝑟(𝑚𝑎𝑛) = 1,
𝑎𝑟(𝑚𝑜𝑟𝑡𝑎𝑙) = 1. Neki od termova nad ovom signaturom i skupom promenljivih 𝑉 = {𝑥, 𝑦, 𝑧, . . .} su: 𝑥, 𝑦,
ek

𝑠𝑜𝑘𝑟𝑎𝑡, neke od atomičkih formula su 𝑚𝑎𝑛(𝑥), 𝑚𝑜𝑟𝑡𝑎𝑙(𝑦), 𝑚𝑜𝑟𝑡𝑎𝑙(𝑠𝑜𝑘𝑟𝑎𝑡), a neke od formula su (∀𝑥)𝑚𝑎𝑛(𝑥) i
(∀𝑥)(𝑚𝑎𝑛(𝑥) ⇒ 𝑚𝑜𝑟𝑡𝑎𝑙(𝑥)).
El

Definicija 8.3 (Slobodno i vezano pojavljivanje promenljive). U formulama ∀𝑥𝒜 i ∃𝑥𝒜, formula 𝒜 je
doseg kvantifikatora.
Pojavljivanje promenljive 𝑥 vezano je u ∀𝑥 i ∃𝑥, kao i ako je u dosegu kvantifikatora ∀𝑥 ili ∃𝑥, a inače
je slobodno.
Promenljiva je vezana (slobodna) u formuli ako i samo ako ima vezano (slobodno) pojavljivanje u toj
formuli.

Primetimo da promenljiva može biti i slobodna i vezana u jednoj formuli.

Primer 8.6. U formuli 𝑝(𝑥, 𝑦), pojavljivanje promenljive 𝑥 je slobodno i ona je slobodna u ovoj formuli.
U formuli 𝑝(𝑥, 𝑦) ⇒ (∀𝑥)𝑞(𝑥) prvo pojavljivanje promenljive 𝑥 je slobodno, a drugo i treće pojavljivanje je
vezano. U ovoj formuli, promenljiva 𝑥 je i slobodna i vezana.
U formuli (∀𝑥)𝑝(𝑥, 𝑦) ⇒ (∀𝑥)𝑞(𝑥), sva pojavljivanja promenljive 𝑥 su vezana i promenljiva je vezana u ovoj
formuli.
U sva tri primera, pojavljivanja promenljive 𝑦 su slobodna.
8.2. Zamena 104

Često se naglašava da formula 𝒜 ima slobodne promenljive 𝑥1 , 𝑥2 , . . ., 𝑥𝑛 zapisom 𝒜(𝑥1 , 𝑥2 , . . . , 𝑥𝑛 ). Ovaj


zapis, medutim, ne znači da formula 𝒜 ne sadrži još neke slobodne promenljive, niti da promenljive 𝑥1 , 𝑥2 , . . .,
𝑥𝑛 nemaju i neka vezana pojavljivanja u formuli 𝒜.
Formule bez promenljivih zovu se bazne formule, a formule bez slobodnih promenljivih zovu se zatvorene for-
mule ili rečenice. Za formulu 𝒜 kažemo da je univerzalno zatvorena ako je oblika (∀𝑥1 )(∀𝑥2 ) . . . (∀𝑥𝑘 )𝒜′ , pri čemu
𝒜′ nema slobodnih promenljivih osim (eventualno) promenljivih 𝑥1 , 𝑥2 , . . . , 𝑥𝑘 . Formula 𝒜 je egzistencijalno
zatvorena ako je oblika (∃𝑥1 )(∃𝑥2 ) . . . (∃𝑥𝑘 )𝒜′ pri čemu 𝒜′ nema slobodnih promenljivih osim (eventualno)
promenljivih 𝑥1 , 𝑥2 , . . . , 𝑥𝑘 . Ako formula 𝒜 ima kao slobodne samo promenljive 𝑥1 , 𝑥2 , . . . , 𝑥𝑘 onda formulu
(∀𝑥1 )(∀𝑥2 ) . . . (∀𝑥𝑘 )𝒜 nazivamo univerzalnim zatvorenjem formule 𝒜. Ako formula 𝒜 ima kao slobodne samo
promenljive 𝑥1 , 𝑥2 , . . . , 𝑥𝑘 , onda formulu (∃𝑥1 )(∃𝑥2 ) . . . (∃𝑥𝑘 )𝒜 nazivamo egzistencijalnim zatvorenjem formule
𝒜.

Primer 8.7. U neformalnom i poluformalnom matematičkom izražavanju, mogu se sresti konstrukcije poput

∀𝑥 < 𝛿...

9)
Iako, po simbolima koje uključuje, podseća na formulu logike prvog reda, ovo očigledno nije dobro zasnovana
formula. Na primer, neprekidnost i ravnomerna neprekidnost (totalne) realne funkcije 𝑓 često se definišu na
sledeći način:

1
(∀𝑎)(∀𝜀 > 0)(∃𝛿 > 0)(∀𝑥)(|𝑥 − 𝑎| < 𝛿 ⇒ |𝑓 (𝑥) − 𝑓 (𝑎)| < 𝜀)

20
(∀𝜀 > 0)(∃𝛿 > 0)(∀𝑥1 , 𝑥2 )(|𝑥1 − 𝑥2 | < 𝛿 ⇒ |𝑓 (𝑥1 ) − 𝑓 (𝑥2 )| < 𝜀)

(
Ipak, ovo nisu dobro zasnovane formule. Odgovarajuće dobro zasnovane formule su:

je
(∀𝑎)(∀𝜀)(𝜀 > 0 ⇒ (∃𝛿)(𝛿 > 0 ∧ (∀𝑥)(|𝑥 − 𝑎| < 𝛿 ⇒ |𝑓 (𝑥) − 𝑓 (𝑎)| < 𝜀)))
an
(∀𝜀)(𝜀 > 0 ⇒ (∃𝛿)(𝛿 > 0 ∧ (∀𝑥1 )(∀𝑥2 )(|𝑥1 − 𝑥2 | < 𝛿 ⇒ |𝑓 (𝑥1 ) − 𝑓 (𝑥2 )| < 𝜀)))

Pitanja i zadaci
izd

Pitanje 8.1. Kako se još nazivaju funkcijski simboli arnosti 0?

Pitanje 8.2. Koliko ima formula logike prvog reda nad konačnim skupom predikatskih i funkcijskih simbola,
ko

a koliko nad prebrojivim skupom iskaznih promenljivih?

Pitanje 8.3. Šta je literal u logici prvog reda?


ns

Pitanje 8.4. Šta je klauza u logici prvog reda?


tro

Pitanje 8.5. Šta je term u logici prvog reda?

Pitanje 8.6. Da li je u formuli ∀𝑥(𝑝(𝑥, 𝑦)∧𝑞(𝑦, 𝑧)∧𝑟(𝑧)), promenljiva 𝑥 slobodna ili vezana, da li je promenljiva
ek

𝑦 slobodna ili vezana, da li je promenljiva 𝑧 slobodna ili vezana?

Zadatak 8.1. Zapisati narednu rečenicu u vidu formule logike prvog reda:
El

(a) Svako voli nekoga i niko ne voli svakoga ili neko voli svakoga i neko ne voli nikoga.
(b) Možete lagati neke ljude sve vreme i možete lagati sve ljude neko vreme, ali ne možete lagati sve ljude
sve vreme.

8.2 Zamena
Zamena promenljive termom definiše se u logici prvog reda u istom duhu kao u iskaznoj logici, uz dva pravila
koja obezbeduju, na primer, da ((∀𝑦)𝑝(𝑥, 𝑦))[𝑥 ↦→ 𝑦] ne bude (∀𝑦)𝑝(𝑦, 𝑦) već (∀𝑧)𝑝(𝑦, 𝑧):

• ako je 𝑥 ̸= 𝑦, neka je 𝑧 promenljiva koja se ne pojavljuje ni u (∀𝑦)𝒜 ni u 𝑡𝑥 ; tada je (∀𝑦𝒜)[𝑥 ↦→ 𝑡𝑥 ] =


(∀𝑧)𝒜[𝑦 ↦→ 𝑧][𝑥 ↦→ 𝑡𝑥 ];
• ako je 𝑥 ̸= 𝑦, neka je 𝑧 promenljiva koja se ne pojavljuje ni u (∃𝑦)𝒜 ni u 𝑡𝑥 ; tada je (∃𝑦𝒜)[𝑥 ↦→ 𝑡𝑥 ] =
(∃𝑧)𝒜[𝑦 ↦→ 𝑧][𝑥 ↦→ 𝑡𝑥 ].

U daljem tekstu ćemo pod terminom izraz podrazumevati i termove i formule.


105 8. Logika prvog reda

Definicija 8.4 (Zamena). Uopštena zamena (supstitucija) 𝜎 je skup zamena [𝑥1 ↦→ 𝑡1 ], [𝑥2 ↦→ 𝑡2 ], . . .,
[𝑥𝑛 ↦→ 𝑡𝑛 ] gde su 𝑥𝑖 promenljive i 𝑡𝑖 su proizvoljni termovi i gde je 𝑥𝑖 ̸= 𝑥𝑗 za 𝑖 ̸= 𝑗. Takvu zamenu
zapisujemo kraće [𝑥1 ↦→ 𝑡1 , 𝑥2 ↦→ 𝑡2 , . . . , 𝑥𝑛 ↦→ 𝑡𝑛 ].
Uopštena zamena primenjuje se simultano na sva pojavljivanja promenljivih 𝑥1 , 𝑥2 , . . ., 𝑥𝑛 u polaznom
izrazu i samo na njih (tj. ne primenjuje se na podtermove dobijene zamenama).

U daljem tekstu ćemo pod terminom zamena podrazumevati i uopštenu zamenu.


Izraz koji je rezultat primene zamene 𝜎 nad izrazom 𝐸, označavamo sa 𝐸𝜎.
Očigledno, iz zamene [𝑥1 ↦→ 𝑡1 , 𝑥2 ↦→ 𝑡2 , . . . , 𝑥𝑛 ↦→ 𝑡𝑛 ] se mogu (ali ne moraju) izostaviti sve pojedinačne
zamene oblika 𝑥𝑖 ↦→ 𝑥𝑖 .

Primer 8.8. Za 𝜎 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝑠 = 𝑔(𝑎, 𝑥) važi 𝑠𝜎 = 𝑔(𝑎, 𝑓 (𝑦)).


Za 𝜎 = [𝑥 →
↦ 𝑓 (𝑥)] i 𝑠 = 𝑔(𝑎, 𝑥) važi 𝑠𝜎 = 𝑔(𝑎, 𝑓 (𝑥)).
Za 𝜎 = [𝑥 →↦ 𝑓 (𝑦), 𝑦 ↦→ 𝑎], 𝑠 = 𝑔(𝑎, 𝑥) i 𝑡 = 𝑔(𝑦, 𝑔(𝑥, 𝑦)) važi 𝑠𝜎 = 𝑔(𝑎, 𝑓 (𝑦)) i 𝑡𝜎 = 𝑔(𝑎, 𝑔(𝑓 (𝑦), 𝑎)).

9)
Ukoliko u zameni 𝜎 = [𝑥1 ↦→ 𝑡1 , 𝑥2 ↦→ 𝑡2 , . . . , 𝑥𝑛 ↦→ 𝑡𝑛 ] nijedan od termova 𝑡𝑖 ne sadrži nijednu od pro-
menljivih 𝑥𝑗 (sem, eventualno, ako je 𝑡𝑖 = 𝑥𝑖 za neko 𝑖), onda je efekat te zamene jednak efektu sukcesivno

1
primenjenih pojedinačnih zamena. Supstitucija 𝜎 je idempotentna (tj. za bilo koji izraz 𝐸 važi 𝐸𝜎 = (𝐸𝜎)𝜎)
ako i samo ako važi taj uslov — da nijedan od termova 𝑡𝑖 ne sadrži nijednu od promenljivih 𝑥𝑗 (sem, eventualno,

20
ako je 𝑡𝑖 = 𝑥𝑖 za neko 𝑖).

(
Definicija 8.5 (Kompozicija zamena). Za supstitucije 𝜑 = [𝑥1 ↦→ 𝑡1 , 𝑥2 ↦→ 𝑡2 , . . . , 𝑥𝑛 ↦→ 𝑡𝑛 ] i 𝜆 = [𝑦1 ↦→
je
𝑠1 , 𝑦2 ↦→ 𝑠2 , . . . , 𝑦𝑚 ↦→ 𝑠𝑚 ], kompozicija supstitucija 𝜑𝜆 je supstitucija [𝑥1 ↦→ 𝑡1 𝜆, 𝑥2 ↦→ 𝑡2 𝜆, . . . , 𝑥𝑛 ↦→
𝑡𝑛 𝜆, 𝑦1 ↦→ 𝑠1 , 𝑦2 ↦→ 𝑠2 , . . . , 𝑦𝑚 ↦→ 𝑠𝑚 ] iz koje su izbrisane zamene oblika 𝑥𝑖 ↦→ 𝑥𝑖 , kao i zamene oblika
an
𝑦𝑖 ↦→ 𝑠𝑖 , gde je 𝑦𝑖 = 𝑥𝑗 za neko 𝑗.

Primer 8.9. Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝜆 = [𝑦 ↦→ 𝑔(𝑧)], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑔(𝑧)), 𝑦 ↦→ 𝑔(𝑧)].


izd

Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝜆 = [𝑦 ↦→ 𝑔(𝑥)], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑔(𝑥)), 𝑦 ↦→ 𝑔(𝑥)].


Za 𝜑 = [𝑥 ↦→ 𝑦] i 𝜆 = [𝑦 ↦→ 𝑥], važi 𝜑𝜆 = [𝑦 ↦→ 𝑥].
Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝜆 = [𝑥 ↦→ 𝑔(𝑧)], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑦)].
ko

Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑥)] i 𝜆 = [𝑥 ↦→ 𝑎], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑎)].

Može se dokazati da je kompozicija supstitucija asocijativna, kao i da važi 𝐸(𝜑𝜆) = (𝐸𝜑)𝜆.


ns

Definicija 8.6 (Instanca izraza). Ako je 𝐸 izraz (term ili formula) i ako je 𝜑 supstitucija, onda kažemo
tro

da je 𝐸𝜑 instanca (ili primerak) izraza 𝐸.


ek

Definicija 8.7 (Zamena). Neka su formule ℬ1 i ℬ2 takve da formula ℬ2 nema nijednu slobodnu promenljivu
koju nema formula ℬ1 . Formulu dobijenu zamenom (supstitucijom) formule ℬ1 formulom ℬ2 u formuli 𝒜,
El

označavamo sa 𝒜[ℬ1 ↦→ ℬ2 ] i definišemo na sledeći način:

• ako je formula 𝒜 instanca formule ℬ1 , tj. ako je 𝒜 = ℬ1 𝜎 za neku supstituciju 𝜎, onda je 𝒜[ℬ1 ↦→
ℬ2 ] = ℬ2 𝜎;
• ako je formula 𝒜 atomička formula i nije instanca formule ℬ1 , onda je 𝒜[ℬ1 ↦→ ℬ2 ] = 𝒜;
• (¬𝒜)[ℬ1 ↦→ ℬ2 ] = ¬(𝒜[ℬ1 ↦→ ℬ2 ]);
• (𝒜 ∧ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ∧ ℬ[ℬ1 ↦→ ℬ2 ]);
• (𝒜 ∨ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ∨ ℬ[ℬ1 ↦→ ℬ2 ]);
• (𝒜 ⇒ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ⇒ ℬ[ℬ1 ↦→ ℬ2 ]);
• (𝒜 ⇔ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ⇔ ℬ[ℬ1 ↦→ ℬ2 ]);
• (∀𝑥𝒜)[ℬ1 ↦→ ℬ2 ] = (∀𝑥)(𝒜[ℬ1 ↦→ ℬ2 ]);
8.3. Semantika logike prvog reda 106

• (∃𝑥𝒜)[ℬ1 ↦→ ℬ2 ] = (∃𝑥)(𝒜[ℬ1 ↦→ ℬ2 ]).

8.3 Semantika logike prvog reda


Semantički aspekt logike prvog reda govori o značenju formula. U nastavku će biti uvedena semantika logike
prvog reda u stilu Tarskog (koji je prvi precizno uveo pojam semantike 1933. godine). Tako uvedenu semantiku
zovemo i semantika Tarskog. Kao i u jednostavnijem slučaju iskazne logike, osnovna ideja semantike Tarskog
je da istinitosne vrednosti formula definiše u skladu sa uobičajenim, svakodnevnim rasudivanjem. U odnosu na
iskazni slučaj, stvari komplikuju kvantifikatori, kao i potpuno drugačija priroda promenljivih. Interpretaciju,
dodatno, ne odreduje samo način na koji su promenljivim pridružene vrednosti, nego i šta odgovara funkcijskim
i predikatskim simbolima – neke konkretne funkcije i relacije nad izabranim domenom. Zbog toga, istinitosna
vrednost formule zavisi od više izbora i za različite izbore može da bude drugačija. Ako je formula tačna za
svaki od ovih izbora, onda se kaže da je valjana.
U nastavku ćemo smatrati da se podrazumeva (i kada to nije eksplicitno rečeno) da se, kada se govori o
formulama, govori o ℒ-formulama za neku fiksiranu signaturu ℒ i fiksan skup promenljivih 𝑉 .

9)
Definicija 8.8 (ℒ-struktura). Za datu signaturu ℒ, ℒ-struktura D je par (𝐷, 𝐼 ℒ ), gde je 𝐷 skup, a 𝐼 ℒ

1
funkcija pri čemu važi sledeće:

20
• 𝐷 je neprazan skup i zovemo ga domen ili univerzum;

(
• svakom simbolu konstante 𝑐 iz ℒ (tj. svakom funkcijskom simbolu arnosti 0), funkcija 𝐼 ℒ pridružuje
jedan element 𝑐𝐼 iz 𝐷;
je
• svakom funkcijskom simbolu 𝑓 iz ℒ za koji je 𝑎𝑟(𝑓 ) = 𝑛 i 𝑛 > 0, funkcija 𝐼 ℒ pridružuje jednu totalnu
an
funkciju 𝑓𝐼 iz 𝐷𝑛 u 𝐷;
• svakom predikatskom simbolu 𝑝 iz ℒ za koji je 𝑎𝑟(𝑝) = 𝑛 (i 𝑛 > 0) funkcija 𝐼 ℒ pridružuje jednu
izd

totalnu funkciju 𝑝𝐼 iz 𝐷𝑛 u {0, 1} .

Primer 8.10. Za signaturu iz primera 8.2, jedna moguća ℒ-struktura je (B, 𝐼 ℒ ), gde je B skup konkretnih
blokova prikazanih na slici 8.1. Funkcija 𝐼 ℒ preslikava predikatske simbole 𝑎 i 𝑏 u relacije „jeste iznad“ i „jeste
ko

ispod“ nad konkretnim blokovima, u konkretnom odnosu koji imaju.


Druga moguća ℒ-struktura za ovu signaturu je (Z, 𝐼 ℒ ), gde je Z skup celih brojeva, a 𝐼 ℒ je funkcija koja
predikatske simbole 𝑎 i 𝑏 preslikava u relacije > i < nad celim brojevima.
ns

Primer 8.11. Za signaturu ℒ iz primera 8.3, jedna ℒ-struktura je par (Z, 𝐼 ℒ ), gde je Z skup celih brojeva, a
tro

𝐼 ℒ funkcija koja simbol 0𝑎 preslikava u ceo broj 0, funkcijske simbole +𝑎 i ·𝑎 u operacije sabiranja i množenja
nad celim brojevima, a predikatske simbole <𝑎 i =𝑎 u relacije < i = nad celim brojevima.
Za istu signaturu jedna ℒ-struktura je i par (N, 𝐼 ℒ ), gde je N skup prirodnih brojeva, a 𝐼 ℒ funkcija koja
ek

simbol 0𝑎 preslikava u prirodni broj 0, funkcijske simbole +𝑎 i ·𝑎 u operacije sabiranja i množenja nad prirodnim
brojevima, a predikatske simbole <𝑎 i =𝑎 u relacije < i = nad prirodnim brojevima.
Za istu signaturu jedna ℒ-struktura je i par (D, 𝐼 ℒ ), gde je D skup dana u nedelji — {𝑝𝑜𝑛𝑒𝑑𝑒𝑙𝑗𝑎𝑘, 𝑢𝑡𝑜𝑟𝑎𝑘,
El

𝑠𝑟𝑒𝑑𝑎, 𝑐ˇ𝑒𝑡𝑣𝑟𝑡𝑎𝑘, 𝑝𝑒𝑡𝑎𝑘, 𝑠𝑢𝑏𝑜𝑡𝑎, 𝑛𝑒𝑑𝑒𝑙𝑗𝑎}, a 𝐼 ℒ funkcija koja simbol 0𝑎 preslikava (na primer) u element 𝑛𝑒𝑑𝑒𝑙𝑗𝑎,
predikatski simbol <𝑎 u relaciju prethodni dan, itd.
Primer 8.12. Za signaturu iz primera 8.5 jedna ℒ-struktura je par (D, 𝐼 ℒ ), gde je D skup svih živih bića, a
𝐼 ℒ funkcija koja simbol 𝑠𝑜𝑘𝑟𝑎𝑡 preslikava (na primer) u osobu 𝑆𝑜𝑘𝑟𝑎𝑡, predikatski simbol 𝑚𝑎𝑛 u relaciju „biti
čovek”, predikatski simbol 𝑚𝑜𝑟𝑡𝑎𝑙 u relaciju „biti smrtan”.
Za istu signaturu jedna ℒ-struktura je i par (N, 𝐼 ℒ ), gde je N skup prirodnih brojeva, a 𝐼 ℒ funkcija koja
simbol 𝑠𝑜𝑘𝑟𝑎𝑡 preslikava (na primer) u broj 0, predikatski simbol 𝑚𝑎𝑛 u unarnu relaciju „biti složen broj”,
predikatski simbol 𝑚𝑜𝑟𝑡𝑎𝑙 u unarnu relaciju „biti paran broj”.
Valuacija 𝑣 za skup promenljivih 𝑉 u odnosu na domen 𝐷 je preslikavanje koje svakom elementu iz 𝑉
dodeljuje jedan element iz 𝐷. Ako je 𝑣(𝑥𝑖 ) = 𝑑𝑗 , onda kažemo da je 𝑑𝑗 vrednost promenljive 𝑥𝑖 u valuaciji 𝑣.
Ako su 𝑣 i 𝑤 valuacije za isti skup promenljivih i u odnosu na isti domen, onda sa 𝑣 ∼𝑥 𝑤 označavamo da je
𝑣(𝑦) = 𝑤(𝑦) za svaku promenljivu 𝑦 različitu od 𝑥, pri čemu vrednosti 𝑣(𝑥) i 𝑤(𝑥) mogu a ne moraju biti iste.
Ako je D = (𝐷, 𝐼 ℒ ) ℒ-struktura za neku signaturu ℒ i 𝑣 valuacija za skup promenljivih 𝑉 i za domen 𝐷,
onda par (D, 𝑣) odreduje interpretaciju, tj. funkciju 𝐼𝑣 koja preslikava skup ℒ-termova nad skupom promenljivih
𝑉 u skup 𝐷, a skup ℒ-formula nad skupom promenljivih 𝑉 u skup {0, 1}. Funkcija 𝐼𝑣 uvodi se narednim dvema
definicijama.
107 8. Logika prvog reda

Definicija 8.9 (Interpretacija). Istinitosnu vrednost (ili kraće vrednost ili značenje) terma 𝑡 u interpre-
taciji 𝐼𝑣 , odredenoj ℒ-strukturom D i valuacijom 𝑣, označavamo sa 𝐼𝑣 (𝑡) i definišemo na sledeći način:
ako je 𝑡 simbol promenljive 𝑥, onda je 𝐼𝑣 (𝑡) = 𝑣(𝑥);
• ako je 𝑡 simbol konstante 𝑐, onda je 𝐼𝑣 (𝑡) = 𝑐𝐼 ;
• ako je 𝑡 jednako 𝑓 (𝑡1 , 𝑡2 , . . . , 𝑡𝑛 ) (pri čemu je 𝑎𝑟(𝑓 ) = 𝑛) i ako je 𝐼𝑣 (𝑡𝑖 ) = 𝑑𝑖 za 𝑖 = 1, 2, . . . , 𝑛 (pri
čemu je 𝑑𝑖 ∈ 𝐷), onda je 𝐼𝑣 (𝑡) = 𝑓𝐼 (𝑑1 , 𝑑2 , . . . , 𝑑𝑛 ).

Istinitosnu vrednost (ili kraće vrednost ili značenje) formule u interpretaciji 𝐼𝑣 odredenoj ℒ-strukturom
D i valuacijom 𝑣, definišemo na sledeći način:
𝐼𝑣 (⊤) = 1 i 𝐼𝑣 (⊥) = 0;
• 𝐼𝑣 (𝑝(𝑡1 , 𝑡2 , . . . , 𝑡𝑛 )) = 𝑝𝐼 (𝑑1 , 𝑑2 , . . . , 𝑑𝑛 ), gde je 𝐼𝑣 (𝑡𝑖 ) = 𝑑𝑖 za 𝑖 = 1, 2, . . . , 𝑛 (pri čemu je 𝑑𝑖 ∈ 𝐷 i
𝑎𝑟(𝑝) = 𝑛)

9)
1, ako je 𝐼𝑣 (𝒜) = 0
{︂
• 𝐼𝑣 (¬𝒜) =
0, inače

1
1, ako je 𝐼𝑣 (𝒜) = 1 i 𝐼𝑣 (ℬ) = 1
{︂

20
• 𝐼𝑣 (𝒜 ∧ ℬ) =
0, inače

0, ako je 𝐼𝑣 (𝒜) = 0 i 𝐼𝑣 (ℬ) = 0


{︂

(
• 𝐼𝑣 (𝒜 ∨ ℬ) =
1, inače

• 𝐼𝑣 (𝒜 ⇒ ℬ) =
{︂
0, ako je 𝐼𝑣 (𝒜) = 1 i 𝐼𝑣 (ℬ) = 0
1, inače
je
an
1, ako je 𝐼𝑣 (𝒜) = 𝐼𝑣 (ℬ)
{︂
• 𝐼𝑣 (𝒜 ⇔ ℬ) =
izd

0, inače

⎨ 1, ako postoji valuacija 𝑤 sa domenom 𝐷


• 𝐼𝑣 ((∃𝑥)𝒜) = takva da je 𝑤 ∼𝑥 𝑣 i 𝐼𝑤 (𝒜) = 1


0, inače
ko

⎨ 0, ako postoji valuacija 𝑤 sa domenom 𝐷



ns

• 𝐼𝑣 ((∀𝑥)𝒜) = takva da je 𝑤 ∼𝑥 𝑣 i 𝐼𝑤 (𝒜) = 0


1, inače

tro

Može se dokazati da je na opisani način svakoj formuli 𝒜 nad signaturom ℒ i skupom 𝑉 pridružena (jedin-
stvena) vrednost 𝐼𝑣 (𝒜). Primetimo da 𝐼𝑣 (𝒜) zavisi od 𝑣(𝑥) samo ako promenljiva 𝑥 ima slobodna pojavljivanja
ek

u formuli 𝒜. Vrednost 𝐼𝑣 (𝒜), dakle, zavisi samo od slobodnih promenljivih u formuli 𝒜. Specijalno, ako je 𝒜
rečenica, vrednost 𝐼𝑣 (𝒜) uopšte ne zavisi od 𝑣.
El

Definicija 8.10 (Zadovoljivost). Ako je interpretacija 𝐼𝑣 odredena ℒ-strukturom D i valuacijom 𝑣 i ako


za ℒ-formulu 𝒜 važi 𝐼𝑣 (𝒜) = 1, onda kažemo da je formula 𝒜 tačna u interpretaciji 𝐼𝑣 i da je ℒ-struktura
D sa valuacijom 𝑣 model formule 𝒜 i pišemo (D, 𝑣) |= 𝒜.
Formula 𝒜 je zadovoljiva u ℒ-strukturi D ako postoji valuacija 𝑣 takva da je (D, 𝑣) |= 𝒜. ℒ-formula 𝒜
je zadovoljiva ako postoje ℒ-struktura D i valuacija 𝑣 takve da je (D, 𝑣) |= 𝒜.
Ako formula nije zadovoljiva, onda kažemo da je ona kontradiktorna.

Definicija 8.11 (Valjanost). Ako je za neku ℒ-strukturu D formula 𝒜 tačna za svaku valuaciju 𝑣, tj. u
svakoj interpretaciji 𝐼𝑣 , onda kažemo da je ℒ-struktura D model formule 𝒜, kažemo da je formula 𝒜
valjana u ℒ-strukturi D i pišemo D |= 𝒜.
Ako je formula nad signaturom ℒ valjana u svakoj ℒ-strukturi, onda za tu formulu kažemo da je valjana
i to zapisujemo |= 𝒜.
Ako formula nije valjana, onda kažemo da je ona poreciva.
Ako nije D |= 𝒜, onda pišemo D ̸|= 𝒜 i kažemo da je D kontramodel za 𝒜.
8.3. Semantika logike prvog reda 108

Analogne definicije uvodimo za skupove formula.

Primer 8.13. Formula ∃𝑥(𝑥 <𝑎 0𝑎 ) tačna je u prvoj interpretaciji iz primera 8.11, a nije tačna u drugoj
interpretaciji. Dakle, ona nije valjana.

Primer 8.14. Formula ∀𝑥(𝑚𝑎𝑛(𝑥) ⇒ 𝑚𝑜𝑟𝑡𝑎𝑙(𝑥)) je tačna u prvoj interpretaciji iz primera 8.12, a nije tačna
u drugoj interpretaciji. Dakle, ona nije valjana.

Primer 8.15. Razmotrimo formule nad signaturom opisanom u primeru 8.4. Formule ∀𝑥(𝑝(𝑥) ⇒ 𝑞) i (∀𝑥𝑝(𝑥)) ⇒
𝑞 koje se razlikuju po dosegu kvantifikatora ∀𝑥 mogu imati različito značenje.
Jedna moguća interpretacija ovih formula odredena je domenom koji čine svi studenti koji pohadaju neki
kurs, 𝑝(𝑥) se interpretira kao „student 𝑥 će položiti ispit, a 𝑞 se interpretira kao „profesor će biti iznenaden”. Prva
formula se, onda, interpretira kao „za bilo kojeg studenta 𝑥 važi, ako 𝑥 položi ispit, profesor će biti iznenaden“
(tj. „ako bilo koji student položi ispit profesor će biti iznenaden“, što odgovara i formuli (∃𝑥𝑝(𝑥)) ⇒ 𝑞), a druga
kao „ako svaki student položi ispit, profesor će biti iznenaden“.

9)
Definicija 8.12 (Zadovoljivost skupa formula). Skup rečenica Γ je konzinstentan (ili zadovoljiv) ako ima

1
bar jedan model. Inače, kažemo da je skup Γ nekonzistentan, (ili nezadovoljiv, protivrečan, kontradikto-

20
ran).

(
Relativno lako može se dokazati naredno tvrdenje.

je
Teorema 8.1. Formula 𝒜 je valjana ako i samo ako je njeno univerzalno zatvorenje valjana formula.
an
Formula 𝒜 je zadovoljiva ako i samo ako je njeno egzistencijalno zatvorenje zadovoljiva formula.
izd

Često može biti važno ispitati valjanost neke formule u nekoj konkretnoj ℒ-strukturi (na primer, u struk-
turi blokova, kao u primeru 8.1). Ispitivanje valjanosti u ℒ-strukturi neposredno, na osnovu definicije može
biti mukotrpno. U nekim situacijama, relevantno tvrdenje je valjano generalno, ne samo u zadatoj konkretnoj
ℒ-strukturi. Tada i proces ispitivanja valjanosti može da bude lakši nego kada je vezan za konkretnu strukturu.
ko

Štaviše, postoje i načini koji omogućavaju ispitivanje valjanosti ne neposredno na osnovu definicije, nego jedno-
stavnijim, namenskim procedurama od kojih je jedna opisana u nastavku. Zahvaljujući takvoj opštoj proceduri,
za mnoge valjane formule može se efikasno dokazati da su valjane. Za takve formule, onda sledi da su valjane i
ns

u svakoj konkretnoj ℒ-strukturi.


tro

Pitanja i zadaci
Pitanje 8.7. Za datu signaturu ℒ, šta je to ℒ-struktura D?
ek

Pitanje 8.8. U šta se, u svakoj interpretaciji jezika logike prvog reda, preslikava funkcijski simbol 𝑓 ?
El

Pitanje 8.9. U šta se, u svakoj interpretaciji jezika logike prvog reda, preslikava predikatski simbol 𝑝?

Pitanje 8.10. U standardnoj semantici logike prvog reda, ako je 𝑥 promenljiva, čemu je jednako 𝐼𝑣 (𝑥) =
Pitanje 8.11. Kada u interpretaciji 𝐼𝑣 formula ∃𝑥𝒞 ima vrednost 0?

Pitanje 8.12. Kada u interpretaciji 𝐼𝑣 formula 𝐼𝑣 (∀𝑥𝒜) ima vrednost 0?

Pitanje 8.13. U logici prvog reda, čemu je, za neku valuaciju 𝑣, jednaka vrednost 𝐼𝑣 (∀𝑥𝒜)?

Pitanje 8.14. U logici prvog reda, čemu je, za neku valuaciju 𝑣, jednaka vrednost 𝐼𝑣 (∃𝑥𝒜)?
Pitanje 8.15. Ako, u logici prvog reda, za dve valuacije 𝑣 i 𝑤 važi 𝑣(𝑥) = 1, 𝑣(𝑦) = 2, 𝑤(𝑥) = 3 i 𝑣 ∼𝑥 𝑤,
šta važi za 𝑤(𝑦)?

Pitanje 8.16. Da li je problem zadovoljivosti u logici prvog reda odlučiv ili poluodlučiv ili neodlučiv?

Pitanje 8.17. Da li je problem valjanosti u logici prvog reda odlučiv ili poluodlučiv ili neodlučiv?

Zadatak 8.2. Odrediti bar jedan model formule (∀𝑥)(𝑝(𝑥) ⇒ 𝑝(𝑓 (𝑥))).
109 8. Logika prvog reda


Zadatak 8.3. Ispitati da li je ℒ-struktura data sa 𝐷 = {𝑎, 𝑏, 𝑐} i

𝑓𝐼 𝑝𝐼 𝑎 𝑏 𝑐
𝑎 𝑏 𝑎 1 1 0
𝑏 𝑎 𝑏 1 0 1
𝑐 𝑎 𝑐 0 0 1
model formule (∀𝑥)(𝑝(𝑥, 𝑓 (𝑥)) ⇒ 𝑝(𝑓 (𝑥), 𝑥)).

Zadatak 8.4. Odrediti sve dvočlane modele formule (∀𝑥)(∃𝑦)(𝑝(𝑥, 𝑦)⇒¬𝑝(𝑦, 𝑥)).

Zadatak 8.5. Odrediti jedan model i jedan kontramodel za formulu
(∀𝑥)(∃𝑦)(𝑝(𝑓 (𝑥, 𝑦), 𝑎)).

Zadatak 8.6. Data je formula
𝒜 = (∀𝑥)(𝑝(𝑥, 𝑓 (𝑥)) ∧ ¬𝑝(𝑥, 𝑥)) ∧(∀𝑥)(∀𝑦)(∀𝑧)(𝑝(𝑥, 𝑦) ∧ 𝑝(𝑦, 𝑧) ⇒ 𝑝(𝑥, 𝑧)).
(a) Odrediti bar jedan model za formulu 𝒜.

9)
(b) Odrediti bar jedan kontramodel za formulu 𝒜.
(c) Dokazati da svaki model formule 𝒜 ima beskonačan domen.

1

Zadatak 8.7. Dokazati da je formula (∀𝑥)(∀𝑦)(∃𝑧)(𝑝(𝑥) ∧ 𝑝(𝑦) ⇔ 𝑝(𝑧)) valjana.

20
Zadatak 8.8. Dokazati da su naredne formule valjane:
(a) (∃𝑥)(∀𝑦)𝒜 ⇒ (∀𝑦)(∃𝑥)𝒜

(
(b) ((∃𝑥)(𝒜⇒ℬ)) ⇔ (𝒜⇒(∃𝑥)ℬ), pri čemu promenljiva 𝑥 nije slobodna u 𝒜.

Zadatak 8.9. Dokazati da naredne formule nisu valjane:


(a) (∃𝑥)𝒜1 ∧ (∃𝑥)𝒜2 ⇔ (∃𝑥)(𝒜1 ∧ 𝒜2 )
je
an
(b) (∀𝑥)𝒜1 ∨ (∀𝑥)𝒜2 ⇔ (∀𝑥)(𝒜1 ∨ 𝒜2 )
izd

Zadatak 8.10. Dokazati da formula (∀𝑥)(∃𝑦)𝑝(𝑥, 𝑦) ⇔ (∃𝑦)(∀𝑥)𝑝(𝑥, 𝑦) nije valjana.


Zadatak 8.11. Dokazati da je sledeća formula valjana:

((∀𝑥)𝒜) ∧ ℬ ⇔ (∀𝑥)(𝒜 ∧ ℬ)
ko

pri čemu formula ℬ nema slobodnih pojavljivanja promenljive 𝑥. Dokazati da data formula nije valjana ako se
izostavi navedeni dodatni uslov.
ns
tro

8.4 Logičke posledice, logički ekvivalentne formule, zamena

Definicija 8.13 (Logička posledica). Neka je Γ skup formula i neka je 𝒜 formula nad signaturom ℒ.
ek

Kažemo da je formula 𝒜 logička posledica skupa formula Γ i pišemo Γ |= 𝒜 ako je svaki model za Γ
istovremeno i model za 𝒜.
El

Ako je skup Γ konačan, tj. ako je Γ = {ℬ1 , ℬ2 , . . . , ℬ𝑘 }, onda pišemo ℬ1 , ℬ2 , . . . , ℬ𝑘 |= 𝒜. Ako je Γ prazan
skup, onda pišemo |= 𝒜. Ako je |= 𝒜, onda je formula 𝒜 tačna u svakoj interpretaciji i tada je formula 𝒜
valjana. Ako ne važi Γ |= 𝒜, onda to zapisujemo Γ ̸|= 𝒜.

Primer 8.16. Ako sa Γ označimo skup formula (iz primera 8.2): {∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇒ ¬𝑎(𝑦, 𝑥)), ∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇔
𝑏(𝑦, 𝑥)), ∀𝑥, 𝑦, 𝑧(𝑎(𝑥, 𝑦) ∧ 𝑎(𝑦, 𝑧) ⇒ 𝑎(𝑥, 𝑧))}, onda se može pokazati da važi: Γ |= ∀𝑥, 𝑦, 𝑧(𝑎(𝑦, 𝑥) ∧ 𝑏(𝑧, 𝑥) ⇒
𝑎(𝑦, 𝑧).

Na osnovu definicije logičke posledice, jednostavno se dokazuje naredno tvrdenje (analogno teoremi 7.1).

Teorema 8.2.

(a) Svaka valjana formula je logička posledica praznog skupa formula.


(b) Ako je skup Γ kontradiktoran, onda je svaka formula njegova logička posledica. Specijalno, svaka
formula je logička posledica skupa {⊥}.
8.4. Logičke posledice, logički ekvivalentne formule, zamena 110

(c) Ako za skupove formula Γ i Δ važi Γ ⊂ Δ i Γ |= 𝒜, onda je Δ |= 𝒜.

Definicija 8.14 (Logička ekvivalencija). Kažemo da su formule 𝒜 i ℬ logički ekvivalentne i pišemo 𝒜 ≡ ℬ


ako je 𝒜 logička posledica formule ℬ i ℬ je logička posledica formule 𝒜.

Ako je svaki model za 𝒜 istovremeno i model za ℬ i obratno, onda u bilo kojoj valuaciji formule 𝒜 i ℬ
imaju jednake vrednosti. Tvrdenja oblika 𝒜 ≡ ℬ zovemo logičkim ekvivalencijama (ili kraće ekvivalencijama).
Relacija ≡ je, očigledno, relacija ekvivalencije nad skupom formula.

Teorema 8.3. Ako za ℒ-formule 𝒜1 , 𝒜2 , ℬ1 i ℬ2 važi 𝒜1 ≡ 𝒜2 i ℬ1 ≡ ℬ2 , onda je:

(a) ¬𝒜1 ≡ ¬𝒜2


(b) 𝒜1 ∧ ℬ1 ≡ 𝒜2 ∧ ℬ2

9)
(c) 𝒜1 ∨ ℬ1 ≡ 𝒜2 ∨ ℬ2

1
(d) 𝒜1 ⇒ ℬ1 ≡ 𝒜2 ⇒ ℬ2

20
(e) 𝒜1 ⇔ ℬ1 ≡ 𝒜2 ⇔ ℬ2

(
(f ) (∀𝑥)𝒜1 ≡ (∀𝑥)𝒜2
(g) (∃𝑥)𝒜1 ≡ (∃𝑥)𝒜2 je
an
Teorema 8.4. Za datu signaturu ℒ, dve ℒ-formule 𝒜 i ℬ su logički ekvivalentne ako i samo ako je formula
izd

𝒜 ⇔ ℬ valjana.

Primer 8.17. Može se dokazati da za proizvoljnu ℒ-formulu 𝒜 važi ¬(∃𝑥)𝒜 ≡ (∀𝑥)¬𝒜. Neka je D proizvoljna
ko

ℒ-struktura. Pretpostavimo da važi 𝐼𝑣 (¬(∃𝑥)𝒜) = 1 i dokažimo da onda važi i 𝐼𝑣 ((∀𝑥)¬𝒜) = 1. Iz 𝐼𝑣 (¬(∃𝑥)𝒜) =


1 sledi 𝐼𝑣 ((∃𝑥)𝒜) = 0, pa u svakoj valuaciji 𝑣 ′ , takvoj da je 𝑣 ′ ∼𝑥 𝑣, važi 𝐼𝑣′ (𝒜) = 0. To znači da u svakoj
valuaciji 𝑣 ′ , takvoj da je 𝑣 ′ ∼𝑥 𝑣, važi 𝐼𝑣′ (¬𝒜) = 1, a odatle sledi da u svakoj valuaciji 𝑣 ′′ , takvoj da je 𝑣 ′′ ∼𝑥 𝑣 ′ ,
ns

važi 𝐼𝑣′′ ((∀𝑥)¬𝒜) = 1, pa i u valuaciji 𝑣, tj. 𝐼𝑣 ((∀𝑥)¬𝒜) = 1, što je i trebalo dokazati. Drugi smer tvrdenja (da
iz 𝐼𝑣 ((∀𝑥)¬𝒜) = 1 sledi 𝐼𝑣 (¬(∃𝑥)𝒜) = 1) dokazuje se analogno.
tro

Primer 8.18. Neke od logičkih ekvivalencija logike prvog reda (ili, preciznije, neke od shema logičkih ekviva-
lencija logike prvog reda) su:
ek

¬¬𝒜 ≡ 𝒜 zakon dvojne negacije


zakon isključenja trećeg
El

𝒜 ∨ ¬𝒜 ≡ ⊤
(𝒜 ∧ ℬ) ≡ (ℬ ∧ 𝒜) zakon komutativnosti za ∧
¬(∃𝑥)𝒜 ≡ (∀𝑥)¬𝒜 De Morganov zakon
¬(∀𝑥)𝒜 ≡ (∃𝑥)¬𝒜 De Morganov zakon
(∃𝑥)(𝒜 ∨ ℬ) ≡ (∃𝑥)𝒜 ∨ (∃𝑥)ℬ zakon distributivnosti ∃ prema ∨
(∀𝑥)(𝒜 ∧ ℬ) ≡ (∀𝑥)𝒜 ∧ (∀𝑥)ℬ zakon distributivnosti ∀ prema ∧
(∃𝑥)(𝒜 ∧ ℬ) ≡ (∃𝑥)𝒜 ∧ ℬ zakon distributivnosti ∃ prema ∧
(pri čemu ℬ ne sadrži slobodna
pojavljivanja promenljive 𝑥)
(∀𝑥)(𝒜 ∨ ℬ) ≡ (∀𝑥)𝒜 ∨ ℬ zakon distributivnosti ∀ prema ∨
(pri čemu ℬ ne sadrži slobodna
pojavljivanja promenljive 𝑥)
(∀𝑥)𝒜 ≡ (∀𝑦)(𝒜[𝑥 ↦→ 𝑦]) zakon o preimenovanju vezane
promenljive (pri čemu 𝒜 ne sadrži
slobodna pojavljivanja promenljive 𝑦)
(∃𝑥)𝒜 ≡ (∃𝑦)(𝒜[𝑥 ↦→ 𝑦]) zakon o preimenovanju vezane
promenljive (pri čemu 𝒜 ne sadrži
slobodna pojavljivanja promenljive 𝑦)
111 8. Logika prvog reda

Korišćenjem navedenih logičkih ekvivalencija, može se dokazati logička ekvivalencija (∀𝑥𝒜) ∧ ℬ ≡ ∀𝑢(𝒜[𝑥 ↦→
𝑢] ∧ ℬ) i slične, a koje govore o tome da se vezane promenljive mogu preimenovati bez uticaja na istinitosnu
vrednost formule.
Naredna teorema kaže da ako se u formuli 𝐴 zameni neka njena potformula logički ekvivalentnom formulom,
dobiće se formula koja je logički ekvivalentna formuli 𝐴.

Teorema 8.5 (Teorema o zameni). Ako važi ℬ1 ≡ ℬ2 , onda je 𝒜 ≡ 𝒜[ℬ1 ↦→ ℬ2 ].

Primer 8.19. Važi ¬(∃𝑥)(𝒜 ∧ ¬ℬ) ≡ (∀𝑥)¬(𝒜 ∧ ¬ℬ) ≡ (∀𝑥)(¬𝒜 ∨ ¬¬ℬ) ≡ (∀𝑥)(¬𝒜 ∨ ℬ) ≡ (∀𝑥)(𝒜 ⇒ ℬ). Iz
¬(∃𝑥)(𝒜 ∧ ¬ℬ) ≡ (∀𝑥)(𝒜 ⇒ ℬ), na osnovu teoreme 8.4 sledi da je formula ¬(∃𝑥)(𝒜 ∧ ¬ℬ) ⇔ (∀𝑥)(𝒜 ⇒ ℬ)
valjana.
Naglasimo da univerzalni i egzistencijalni kvantifikator ne mogu, u opštem slučaju, da menjaju mesta,
tj. formule (∀𝑥)(∃𝑦)𝒜 i (∃𝑦)(∀𝑥)𝒜 nisu u opštem slučaju logički ekvivalentne. S druge strane, dva univerzalna
kvantifikatora mogu da zamene mesta, tj. formule (∀𝑥)(∀𝑦)𝒜 i (∀𝑦)(∀𝑥)𝒜 su logički ekvivalentne. Slično, dva

9)
egzistencijalna kvantifikatora mogu da zamene mesta, tj. formule (∃𝑥)(∃𝑦)𝒜 i (∃𝑦)(∃𝑥)𝒜 su logički ekvivalentne.
To suštinski znači da u bloku kvantifikatora istog tipa, poredak tih kvantifikatora nije bitan.

1
Pitanja i zadaci

20
Pitanje 8.18. Ako je formula prvog reda 𝒜 logička posledica skupa formula Γ, a skup Γ je podskup skupa Δ,

(
šta onda važi?

je
Pitanje 8.19. Kada kažemo da su formule logike prvog reda 𝒜 i ℬ logički ekvivalentne?

Pitanje 8.20. Da li je formula (∀𝑥)(𝒜 ∧ ℬ) je logički ekvivalentna nekim od formula:


an
(∀𝑥)𝒜 ∧ (∀𝑥)ℬ,
(∀𝑥)𝒜 ∧ ℬ
izd

(∀𝑥)𝒜 ∨ (∀𝑥)ℬ
(∀𝑥)𝒜 ∨ ℬ
Pitanje 8.21. Da li su formule (∀𝑥𝒜) ∧ ℬ i (∀𝑥𝒜 ∧ ℬ) logički ekvivalentne?
ko

Pitanje 8.22. Da li su formule (∀𝑥𝒜) ∧ ∀𝑥ℬ i (∀𝑥𝒜 ∧ ℬ) logički ekvivalentne?

Pitanje 8.23. Šta treba da važi za promenljivu 𝑥 da formule ∀𝑥(𝒜 ∧ ℬ) i ∀𝑥𝒜 ∧ ℬ nisu nužno logički ekviva-
ns

lentne?
tro

Pitanje 8.24. Navesti teoremu o zameni za logiku prvog reda? Gde se ona koristi?

Zadatak 8.12. Navesti primer formule koja je valjana a nije izvod tautologije.

ek

Zadatak 8.13. Dokazati da je formula (∃𝑥)(𝒜 ⇒ ℬ) ⇔ ((∀𝑥)𝒜 ⇒ (∃𝑥)ℬ) valjana.

Zadatak 8.14. Dokazati da za svaku supstituciju 𝜎 iz 𝒜 ≡ ℬ sledi 𝒜𝜎 ≡ ℬ𝜎.


El

Zadatak 8.15. Dokazati da je formula (∀𝑥)(∃𝑦)𝒜 ⇒ (∃𝑦)(𝒜[𝑥 ↦→ 𝑦]) valjana.


Zadatak 8.16. Dokazati sledeću logičku ekvivalenciju:

∃𝑥𝒜 ≡ ∃𝑦(𝒜[𝑥 ↦→ 𝑦])

pri čemu formula 𝒜 nema slobodnih pojavljivanja promenljive 𝑦. Dokazati da data logička ekvivalencija ne
važi ako se izostavi navedeni dodatni uslov.

Zadatak 8.17. Dokazati da je supstitucija 𝜎 = [𝑥1 ↦→ 𝑡1 , 𝑥2 ↦→ 𝑡2 , . . . , 𝑥𝑛 ↦→ 𝑡𝑛 ] idempotentna (tj. da za bilo


koji izraz 𝐸 važi 𝐸𝜎 = (𝐸𝜎)𝜎) ako i samo ako nijedan od termova 𝑡𝑖 ne sadrži nijednu od promenljivih 𝑥𝑗
(sem, eventualno, ako je 𝑡𝑖 = 𝑥𝑖 za neko 𝑖).

8.5 Normalne forme


Centralna pitanja u logici prvog reda su ispitivanje zadovoljivosti i valjanosti. Iako je ova pitanja moguće raz-
matrati nad formulama proizvoljnog oblika, daleko je jednostavnije algoritme ispitivanja formulisati za formule
8.5. Normalne forme 112

nekog posebnog oblika. Zbog toga se definišu normalne forme i algoritmi kojima se neka formula transformiše
u te normalne forme. Pod transformacijom se podrazumeva konstruisanje formule koja je, na primer, logički
ekvivalentna polaznoj formuli i zadovoljava neka sintaksička ograničenja.

Definicija 8.15 (Preneks normalna forma). Kažemo da je formula u preneks normalnoj formi ako je ona
oblika
𝑄1 𝑥1 𝑄2 𝑥2 . . . 𝑄𝑛 𝑥𝑛 𝒜
pri čemu je 𝑄𝑖 ili ∀ ili ∃ i 𝒜 ne sadrži kvantifikatore, kao ni slobodne promenljive osim (eventualno)
promenljivih 𝑥1 , 𝑥2 , . . . , 𝑥𝑛 .

Ako je rečenica (zatvorena formula) 𝒜 logički ekvivalentna formuli ℬ i formula ℬ je u preneks normalnoj
formi, onda kažemo da je formula ℬ preneks normalna forma formule 𝒜. Korišćenjem pogodnih logičkih ekviva-
lencija, svaka zatvorena formula može biti transformisana u svoju preneks normalnu formu. Radi jednostavnosti
procedure i rezultujuće formule, obično se u okviru transformisanja formule u preneks formu najpre eliminišu
veznici ⇔ i ⇒. Naglasimo da jedna formula može da ima više preneks normalnih formi (na primer, i formula

9)
(∀𝑥)(∀𝑦)(𝒜(𝑥)∧ℬ(𝑦)) i formula (∀𝑦)(∀𝑥)(ℬ(𝑦)∧𝒜(𝑥)) su preneks normalne forme formule (∀𝑥)𝒜(𝑥)∧(∀𝑦)ℬ(𝑦)).
Slično, jedna formula koja je u preneks normalnoj formi može biti preneks normalna forma za više formula.

1
Transformisanje formule u preneks normalnu formu može biti opisano procedurom prikazanom na slici 8.2

20
(kada govorimo o „primeni neke logičke ekvivalencije“ mislimo na korišćenje ekvivalencije na osnovu teoreme o
zameni (8.5)).

(
Algoritam: PRENEX

Ulaz: Zatvorena formula logike prvog reda je


an
Izlaz: Preneks normalna forma zadate formule
1: dok god je to moguće radi
izd

2: primeni neku od logičkih ekvivalencija:


𝒜 ⇔ ℬ ≡ (𝒜 ⇒ ℬ) ∧ (ℬ ⇒ 𝒜),
𝒜 ⇒ ℬ ≡ ¬𝒜 ∨ ℬ;
ko

3: dok god je to moguće radi


4: primeni neku od logičkih ekvivalencija:
¬(𝒜 ∧ ℬ) ≡ ¬𝒜 ∨ ¬ℬ,
ns

¬(𝒜 ∨ ℬ) ≡ ¬𝒜 ∧ ¬ℬ,
¬(∀𝑥)𝒜 ≡ (∃𝑥)¬𝒜,
tro

¬(∃𝑥)𝒜 ≡ (∀𝑥)¬𝒜;
5: dok god je to moguće radi
6: primeni neku od logičkih ekvivalencija (eliminiši višestruke veznike koristeći zakon dvojne negacije):
ek

¬¬𝒜 ≡ 𝒜;
7: dok god je to moguće radi
El

8: primeni neku od logičkih ekvivalencija:


(∀𝑥𝒜) ∧ ℬ ≡ (∀𝑥)(𝒜 ∧ ℬ),
(∀𝑥𝒜) ∨ ℬ ≡ (∀𝑥)(𝒜 ∨ ℬ),
ℬ ∧ (∀𝑥)𝒜 ≡ (∀𝑥)(ℬ ∧ 𝒜)
ℬ ∨ (∀𝑥)𝒜 ≡ (∀𝑥)(ℬ ∨ 𝒜),
(∃𝑥𝒜) ∧ ℬ ≡ (∃𝑥)(𝒜 ∧ ℬ),
(∃𝑥𝒜) ∨ ℬ ≡ (∃𝑥)(𝒜 ∨ ℬ),
ℬ ∧ (∃𝑥)𝒜 ≡ (∃𝑥)(ℬ ∧ 𝒜),
ℬ ∨ (∃𝑥)𝒜 ≡ (∃𝑥)(ℬ ∨ 𝒜),
pri čemu 𝑥 nema slobodna pojavljivanja u formuli ℬ; ako 𝑥 ima slobodna pojavljivanja u ℬ, onda treba
najpre preimenovati promenljivu 𝑥 u formuli (∀𝑥)𝒜 (odnosno u formuli (∃𝑥)𝒜).

Slika 8.2: Algoritam PRENEX

Korektnost navedenog algoritma može se dokazati slično kao korektnost procedure za transformisanje formule
u konjunktivnu normalnu formu (teorema 7.4).
113 8. Logika prvog reda

Teorema 8.6 (Korektnost algoritma PRENEX). Algoritam PRENEX se zaustavlja i zadovoljava sledeće
svojstvo: ako je 𝒜 ulazna formula, onda je izlazna formula 𝒜′ u preneks normalnoj formi i logički je
ekvivalentna sa 𝒜.

U nekim situacijama moguće je primeniti neki korak navedenog algoritma na više od jednog načina. Na
primer, formulu (∀𝑥)𝑝(𝑥) ∧ (∃𝑦)𝑞(𝑦) moguće je transformisati i u (∀𝑥)(𝑝(𝑥) ∧ (∃𝑦)𝑞(𝑦)) i u (∃𝑦)((∀𝑥)𝑝(𝑥) ∧ 𝑞(𝑦)).
Obe ove formule su, naravno, logički ekvivalentne sa polaznom formulom. Ipak, u situacijama kada je moguće
„pomeriti“ i univerzalni i egzistencijalni kvantifikator, uvek ćemo radije „pomeriti“ najpre egzistencijalni, a onda
univerzalni. Takav prioritet uvodimo zarad jednostavnijeg koraka skolemizacije (o kojem će biti reči u nastavku).
Primer 8.20. Razmotrimo formulu

∀𝑥 𝑝(𝑥) ∧ ∀𝑥∃𝑦∀𝑧(𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑥), 𝑦)) .

Primenom algoritma PRENEX najpre (u okviru koraka 1) se dobija formula

9)
∀𝑥 𝑝(𝑥) ∧ ∀𝑥∃𝑦∀𝑧(¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑥), 𝑦)) .

1
Nakon koraka

20
∀𝑥(𝑝(𝑥) ∧ ∀𝑥∃𝑦∀𝑧(¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑥), 𝑦))) ,
kako je promenljiva 𝑥 slobodna u 𝑝(𝑥), najpre ćemo preimenovati vezanu promenljivu 𝑥 u 𝑢 (u okviru formule

(
∀𝑥∃𝑦∀𝑧(¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑥), 𝑦))):

je
∀𝑥(𝑝(𝑥) ∧ ∀𝑢∃𝑦∀𝑧(¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑢), 𝑦))) .

Nakon toga kvantifikatori ∀𝑢, ∃𝑦, ∀𝑧 mogu, jedan po jedan, biti pomereni na početak formule:
an
∀𝑥∀𝑢∃𝑦∀𝑧(𝑝(𝑥) ∧ (¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑢), 𝑦))) .
izd

Definicija 8.16 (Konjunktivna normalna forma). Formula bez kvantifikatora je u konjunktivnoj normalnoj
formi ako je oblika
ko

𝒜1 ∧ 𝒜2 ∧ . . . ∧ 𝒜𝑛
pri čemu je svaka od formula 𝒜𝑖 (1 ≤ 𝑖 ≤ 𝑛) disjunkcija literala.
ns

Konjunktivna normalna forma formule predikatske logike može se dobiti na isti način kao i u slučaju iskazne
tro

logike (videti poglavlje 7.5).


Primer 8.21. Konjunktivna normalna forma formule
ek

𝑝(𝑥) ∧ (𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑢), 𝑦))

je formula
El

𝑝(𝑥) ∧ (¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑢), 𝑦)) .

Definicija 8.17 (Klauzalna forma). Formula je u klauzalnoj formi ako je oblika

∀𝑥1 ∀𝑥2 . . . ∀𝑥𝑛 𝒜

gde je 𝒜 formula bez kvantifikatora koja je u konjunktivnoj normalnoj formi i 𝒜 nema slobodnih promenljivih
osim, eventualno, promenljivih 𝑥1 , 𝑥2 , . . . , 𝑥𝑛 .

Ako je formula ∀𝑥1 ∀𝑥2 . . . ∀𝑥𝑛 𝒜 u klauzalnoj formi, onda se često u zapisu izostavljaju kvantifikatori i piše
samo 𝒜, podrazumevajući da se misli na univerzalno zatvorenje formule 𝒜.
Ne postoji za svaku rečenicu formula koja je u klauzalnoj formi i koja joj je logički ekvivalentna. Na primer,
za rečenicu (∃𝑥)𝑝(𝑥) ne postoji formula koja je u klauzalnoj formi i koja joj je logički ekvivalentna. Medutim,
može se dokazati da za svaku rečenicu 𝒜 postoji formula ℬ u klauzalnoj formi takva da je 𝒜 zadovoljiva ako
i samo ako je ℬ zadovoljiva. To je dovoljno i pogodno za ispitivanje zadovoljivosti formula — ako se ispituje
zadovoljivost rečenice 𝒜, dovoljno je ispitati zadovoljivost formule ℬ koja je u klauzalnoj formi (pogodnoj za
8.5. Normalne forme 114

neke metode) i zadovoljiva je ako i samo ako je zadovoljiva formula 𝒜. Uslov da je formula 𝒜 zadovoljiva ako i
samo ako je ℬ zadovoljiva zove se slaba ekvivalencija.
Transformisanje rečenice 𝒜 u formulu ℬ koja je u klauzalnoj formi i koja je zadovoljiva ako i samo ako je
𝒜 zadovoljiva uključuje eliminisanje egzistencijalnih kvantifikatora. Ono se zasniva na izmeni polazne signature
dodavanjem novih funkcijskih simbola. Te dodatne funkcijske simbole zovemo Skolemovim konstantama (za
funkcijske simbole arnosti 0) i Skolemovim funkcijama, a proces eliminisanja egzistencijalnih kvantifikatora
zovemo skolemizacijom (po matematičaru Skolemu koji ih je prvi koristio). Prvi korak je transformisanje formule
u preneks normalnu formu. Drugi korak je transformisanje dela formule bez kvantifikatora u konjunktivnu
normalnu formu. Nakon toga, postupkom skolemizacije eliminišu se egzistencijalni kvantifikatori, jedan po
jedan, sleva nadesno.
Pretpostavimo da rečenica počinje egzistencijalnim kvantifikatorom: ∃𝑦𝒜. Treba izabrati novi simbol kon-
stante 𝑑 koji se ne pojavljuje u signaturi, obrisati kvantifikator i zameniti promenljivu 𝑦 simbolom 𝑑. Na taj
način formula ∃𝑦𝒜 transformiše se u formulu 𝒜[𝑦 ↦→ 𝑑]. Može se dokazati da je formula ∃𝑦𝒜 zadovoljiva ako i
samo ako je formula 𝒜[𝑦 ↦→ 𝑑] zadovoljiva.
Ako rečenica počinje nizom univerzalnih kvantifikatora: ∀𝑥1 ∀𝑥2 . . . ∀𝑥𝑛 ∃𝑦𝒜, onda uvodimo novi funkcijski
simbol 𝑓 arnosti 𝑛 koji do tada nije postojao u signaturi. Polazna formula biće onda transformisana u formulu

9)
∀𝑥1 ∀𝑥2 . . . ∀𝑥𝑛 𝒜[𝑦 ↦→ 𝑓 (𝑥1 , 𝑥2 , . . . , 𝑥𝑛 )]. Može se dokazati da je formula ∀𝑥1 ∀𝑥2 . . . ∀𝑥𝑛 ∃𝑦𝒜 zadovoljiva ako
i samo ako je formula ∀𝑥1 ∀𝑥2 . . . ∀𝑥𝑛 𝒜[𝑦 ↦→ 𝑓 (𝑥1 , 𝑥2 , . . . , 𝑥𝑛 )] zadovoljiva. (Primetimo da je uvodenje nove

1
konstante samo specijalni slučaj uvodenja novog funkcijskog simbola.)

20
Teorema 8.7 (Teorema o skolemizaciji). Ako je formula ℬ nad signaturom ℒ′ dobijena skolemizacijom od

(
rečenice 𝒜 nad signaturom ℒ koja je u preneks normalnoj formi, onda je 𝒜 zadovoljiva ako i samo ako je
ℬ zadovoljiva.

Primer 8.22. Skolemizacijom se formula


je
an
∀𝑥∀𝑢∃𝑦∀𝑧(𝑝(𝑥) ∧ (¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑢), 𝑦)))
izd

transformiše u formulu
𝑝(𝑥) ∧ (¬𝑞(ℎ(𝑥, 𝑢), 𝑧) ∨ 𝑟(𝑔(𝑢), ℎ(𝑥, 𝑢))) .
ko

Teorema 8.8. Neka je formula ℬ (u klauzalnoj formi) dobijena od rečenice 𝒜 uzastopnom primenom
sledećih postupaka:
ns

• transformisanje formule u preneks normalnu formu;


tro

• transformisanje dela formule bez kvantifikatora u konjunktivnu normalnu formu;


• skolemizacija.
ek

Tada je formula 𝒜 zadovoljiva ako i samo ako je ℬ zadovoljiva.


El

Dokaz: Transformacija formule u preneks normalnu formu i transformacija dela formule bez kvantifikatora u
konjunktivnu normalnu formu zasnovane su na logičkim ekvivalencijama, pa ako je formula ℬ dobijena od
formule 𝒜 uzastopnom primenom navedene dve transformacije, važi 𝒜 ≡ ℬ, što je jači uslov nego uslov
da je 𝒜 zadovoljiva ako i samo ako je ℬ zadovoljiva. Na osnovu teoreme 8.7 sledi da skolemizacija čuva
zadovoljivost i nezadovoljivost, pa je formula ℬ zadovoljiva ako i samo ako je 𝒜 zadovoljiva. 

Klauzalna forma je pogodna za dokazivanje pobijanjem. Da bi se dokazalo da je formula 𝒜 valjana, do-


voljno je dokazati da je formula ¬𝒜 nezadovoljiva, pa je dovoljno i dokazati da je klauzalna forma formule ¬𝒜
nezadovoljiva.
Primer 8.23. Formula 𝒜 = (∀𝑥)𝑝(𝑥, 𝑥) ⇒ (∀𝑦)𝑝(𝑦, 𝑦) nad signaturom ℒ je valjana. To se može dokazati na
sledeći način.
Formula ¬𝒜 je jednaka ¬((∀𝑥)𝑝(𝑥, 𝑥) ⇒ (∀𝑦)𝑝(𝑦, 𝑦)) i njena preneks normalna forma je (∃𝑦)(∀𝑥)(𝑝(𝑥, 𝑥) ∧
¬𝑝(𝑦, 𝑦)). Skolemizacijom dobijamo formulu 𝑝(𝑥, 𝑥) ∧ ¬𝑝(𝑐, 𝑐), gde je 𝑐 novi simbol konstante. Neka je ℒ′ sig-
natura dobijena proširivanjem signature ℒ simbolom 𝑐. Pokažimo da je formula 𝑝(𝑥, 𝑥) ∧ ¬𝑝(𝑐, 𝑐) nezadovoljiva.

Pretpostavimo suprotno — pretpostavimo da navedena formula ima model. Neka je to ℒ′ -struktura D = (𝐷, 𝐼 ℒ )
115 8. Logika prvog reda

′ ′
sa valuacijom 𝑣. Neka je 𝐼 ℒ (𝑝) = 𝑝𝐼 i 𝐼 ℒ (𝑐) = 𝑐𝐼 . Važi 𝐼𝑣 (𝑝(𝑥, 𝑥)∧¬𝑝(𝑐, 𝑐)) = 1 tj. 𝐼𝑣 ((∀𝑥)(𝑝(𝑥, 𝑥)∧¬𝑝(𝑐, 𝑐))) =
1, pa za svaku valuaciju 𝑤 takvu da je 𝑤 ∼𝑥 𝑣 važi 𝐼𝑤 (𝑝(𝑥, 𝑥) ∧ ¬𝑝(𝑐, 𝑐)) = 1. To, dakle, važi i za valuaciju 𝑤 u
kojoj je 𝑤(𝑥) = 𝑐𝐼 . Iz 𝐼𝑤 (𝑝(𝑥, 𝑥) ∧ ¬𝑝(𝑐, 𝑐)) = 1 sledi 𝐼𝑤 (𝑝(𝑥, 𝑥)) = 1 i 𝐼𝑤 (𝑝(𝑐, 𝑐)) = 0. Iz 𝐼𝑤 (𝑝(𝑥, 𝑥)) = 1 sledi
𝑝𝐼 (𝑐𝐼 , 𝑐𝐼 ) = 1, a iz 𝐼𝑤 (𝑝(𝑐, 𝑐)) = 0 sledi 𝑝𝐼 (𝑐𝐼 , 𝑐𝐼 ) = 0, što je kontradikcija. Dakle, formula 𝑝(𝑥, 𝑥) ∧ ¬𝑝(𝑐, 𝑐) je
nezadovoljiva, pa je polazna formula 𝒜 valjana.

Pitanja i zadaci
Pitanje 8.25. Navesti algoritam PRENEX.

Pitanje 8.26. Dokazati da je formula dobijena algoritmom PRENEX logički ekvivalentna ulaznoj formuli.

Pitanje 8.27. Kako se zove postupak kojim se formula prvog reda transformiše u formulu bez kvantifikatora?

Pitanje 8.28. Navesti teoremu o skolemizaciji.


Pitanje 8.29. Ako je formula ℬ dobijena od formule 𝒜 skolemizacijom, kakav odnos važi za ove dve formule?

9)
Pitanje 8.30. Zašto formula 𝒜 i formula dobijena od nje skolemizacijom nisu logički ekvivalentne?

1
Pitanje 8.31. Kada za dve formule 𝐴 i 𝐵 logike prvog reda kažemo da su slabo ekvivalentne?

20
Pitanje 8.32. Primenom koja tri koraka se dobija klauzalna forma formule 𝒜?

(
Pitanje 8.33. U kakvom su odnosu formula 𝒜 i njena klauzalna forma?

Zadatak 8.18. Odrediti klauzalne forme za formule:


(a) (∃𝑥)𝒜1 ∧ (∃𝑥)𝒜2 ⇒ (∃𝑥)(𝒜1 ∧ 𝒜2 )
je
an
(b) (∀𝑥)𝒜1 ∨ (∀𝑥)𝒜2 ⇒ (∀𝑥)(𝒜1 ∨ 𝒜2 )
(c) (∀𝑥)(∃𝑦)𝒜 ⇒ (∃𝑦)𝒜(𝑓 (𝑦), 𝑦)
izd

8.6 Unifikacija
Problem unifikacije je problem ispitivanja da li postoji supstitucija koja čini dva izraza (dva terma ili dve
ko

formule) jednakim.
ns

Definicija 8.18 (Unifikabilnost i unifikator). Ako su 𝑒1 i 𝑒2 izrazi i ako postoji supstitucija 𝜎 takva da važi
𝑒1 𝜎 = 𝑒2 𝜎, onda kažemo da su izrazi 𝑒1 i 𝑒2 unifikabilni i da je supstitucija 𝜎 unifikator za ta dva izraza.
tro

Primer 8.24. Neka je term 𝑡1 jednak 𝑔(𝑥, 𝑧), neka je term 𝑡2 jednak 𝑔(𝑦, 𝑓 (𝑦)) i neka je 𝜎 supstitucija [𝑦 ↦→
𝑥, 𝑧 ↦→ 𝑓 (𝑥)]. Tada je i 𝑡1 𝜎 i 𝑡2 𝜎 jednako 𝑔(𝑥, 𝑓 (𝑥)), pa su termovi 𝑡1 i 𝑡2 unifikabilni, a 𝜎 je (jedan) njihov
ek

unifikator. Unifikator termova 𝑡1 i 𝑡2 je na primer, i [𝑥 ↦→ 𝑎, 𝑦 ↦→ 𝑎, 𝑧 ↦→ 𝑓 (𝑎)]. Termovi 𝑔(𝑥, 𝑥) i 𝑔(𝑦, 𝑓 (𝑦))


nisu unifikabilni.
El

Dva unifikabilna izraza mogu da imaju više unifikatora. Za dva unifikatora 𝜎1 i 𝜎2 kažemo da su jednaka
do na preimenovanje promenljivih ako postoji supstitucija 𝜆 koja je oblika [𝑣1′ ↦→ 𝑣1′′ , 𝑣2′ ↦→ 𝑣2′′ , . . . , 𝑣𝑛′ ↦→ 𝑣𝑛′′ ], pri
čemu su 𝑣𝑖′ i 𝑣𝑖′′ simboli promenljivih i važi 𝜎1 𝜆 = 𝜎2 .

Definicija 8.19 (Najopštiji unifikator). Supstitucija 𝜎 je najopštiji unifikator za izraze 𝑒1 i 𝑒2 ako svaki
unifikator 𝜏 izraza 𝑒1 i 𝑒2 može biti predstavljen u obliku 𝜏 = 𝜎𝜇 za neku supstituciju 𝜇.

Na osnovu definicije, svaki unifikator izraza 𝑒1 i 𝑒2 može biti dobijen od najopštijeg unifikatora primenom
neke supstitucije. Svaka dva unifikabilna izraza imaju najopštiji unifikator. Može se dokazati da za dva izraza
postoji najviše jedan najopštiji unifikator (do na preimenovanje promenljivih).
Na slici 8.3 dat je opis opšteg algoritma za odredivanje najopštijeg unifikatora za niz parova izraza. Algoritam
unifikacije ili vraća traženu supstituciju ili se zaustavlja sa neuspehom, ukazujući na to da tražena supstitucija
ne postoji.
Primetimo da je korak 6 algoritma moguće u opštem slučaju primeniti na više načina. Bilo koji od tih
načina vodi istom rezultatu — neuspehu (ako ne postoji traženi unifikator) ili jednom od unifikatora koji se
mogu razlikovati samo do na preimenovanje promenljivih.
8.6. Unifikacija 116

Algoritam: Najopštiji unifikator

Ulaz: Niz parova izraza (𝑠1 , 𝑡1 ), (𝑠2 , 𝑡2 ), . . . , (𝑠𝑛 , 𝑡𝑛 )


Izlaz: Najopštiji unifikator (ako on postoji) 𝜎 takav da važi 𝑠1 𝜎 = 𝑡1 𝜎, 𝑠2 𝜎 = 𝑡2 𝜎, . . . , 𝑠𝑛 𝜎 = 𝑡𝑛 𝜎 .
1: dok god je moguće primeniti neko od navedenih pravila radi
2: {Korak factoring:}
3: ako postoji par koji ima više od jednog pojavljivanja onda
4: obriši sva njegova pojavljivanja osim jednog.
5: {Korak tautology:}
6: ako postoji par (𝑡, 𝑡) onda
7: obriši ga.
8: {Korak orientation:}
9: ako postoji par (𝑡, 𝑥), gde je 𝑥 promenljiva, a 𝑡 nije promenljiva onda

9)
10: zameni par (𝑡, 𝑥) parom (𝑥, 𝑡).
11: ako postoji par (𝑠, 𝑡), gde ni 𝑠 ni 𝑡 nisu promenljive onda

1
12: ako je 𝑠 jednako 𝜙(𝑢1 , 𝑢2 , . . . , 𝑢𝑘 ) i 𝑡 je jednako 𝜙(𝑣1 , 𝑣2 , . . . , 𝑣𝑘 ) (gde je 𝜙 funkcijski ili predikatski

20
simbol) onda
13: {Korak decomposition:}

(
14: dodaj parove (𝑢1 , 𝑣1 ), (𝑢2 , 𝑣2 ), . . ., (𝑢𝑘 , 𝑣𝑘 ) i obriši par (𝑠, 𝑡);
15: inače
16: {Korak collision:} je
an
17: zaustavi rad i kao rezultat vrati neuspeh;
18: {Korak cycle:}
izd

19: ako postoji par (𝑥, 𝑡) takav da je 𝑥 promenljiva i 𝑡 term koji sadrži 𝑥 onda
20: zaustavi rad i kao rezultat vrati neuspeh;
21: {Korak application:}
22: ako postoji (𝑥, 𝑡), gde je 𝑥 promenljiva a 𝑡 term koji ne sadrži 𝑥 i 𝑥 se pojavljuje i u nekim drugim
ko

parovima onda
23: primeni supstituciju [𝑥 ↦→ 𝑡] na sve druge parove.
ns

24: vrati tekući skup parova kao najopštiji unifikator.


tro

Slika 8.3: Algoritam Najopštiji unifikator


ek

Primer 8.25. Ilustrujmo rad algoritma za odredivanje na primeru sledeća dva para:
El

(𝑔(𝑦), 𝑥)

(𝑓 (𝑥, ℎ(𝑥), 𝑦), 𝑓 (𝑔(𝑧), 𝑤, 𝑧))


Polazni niz parova je
(𝑔(𝑦), 𝑥), (𝑓 (𝑥, ℎ(𝑥), 𝑦), 𝑓 (𝑔(𝑧), 𝑤, 𝑧)).
Primenom koraka 3 dobijamo
(𝑥, 𝑔(𝑦)), (𝑓 (𝑥, ℎ(𝑥), 𝑦), 𝑓 (𝑔(𝑧), 𝑤, 𝑧)).
Primenom koraka 4(𝑎) dobijamo
(𝑥, 𝑔(𝑦)), (𝑥, 𝑔(𝑧)), (ℎ(𝑥), 𝑤), (𝑦, 𝑧).
Korak 6 je moguće primeniti na više načina. Primenom koraka 6 za 𝑦 = 𝑧 dobijamo
(𝑥, 𝑔(𝑧)), (𝑥, 𝑔(𝑧)), (ℎ(𝑥), 𝑤), (𝑦, 𝑧).
Primenom koraka 1 dobijamo
(𝑥, 𝑔(𝑧)), (ℎ(𝑥), 𝑤), (𝑦, 𝑧).
Primenom koraka 3 dobijamo
(𝑥, 𝑔(𝑧)), (𝑤, ℎ(𝑥)), (𝑦, 𝑧).
Primenom koraka 6 dobijamo
(𝑥, 𝑔(𝑧)), (𝑤, ℎ(𝑔(𝑧))), (𝑦, 𝑧).
117 8. Logika prvog reda

Ovaj niz parova odreduje traženi najopštiji unifikator 𝜎. Za

𝜎 = [𝑥 ↦→ 𝑔(𝑧), 𝑤 ↦→ ℎ(𝑔(𝑧)), 𝑦 ↦→ 𝑧]

važi
𝑔(𝑦)𝜎 = 𝑥𝜎
𝑓 (𝑥, ℎ(𝑥), 𝑦)𝜎 = 𝑓 (𝑔(𝑧), 𝑤, 𝑧)𝜎
tj. važi
𝑔(𝑧) = 𝑔(𝑧)
𝑓 (𝑔(𝑧), ℎ(𝑔(𝑧)), 𝑧) = 𝑓 (𝑔(𝑧), ℎ(𝑔(𝑧)), 𝑧) .
Primer 8.26. Razmotrimo sledeći par:
(𝑔(𝑥, 𝑥), 𝑔(𝑦, 𝑓 (𝑦))) .
Primenom koraka 4(𝑎) dobijamo

9)
(𝑥, 𝑦), (𝑥, 𝑓 (𝑦)).
Korak 6 može se primeniti samo na dva načina:

1
• primenom za par (𝑥, 𝑦); tada se dobija (𝑥, 𝑦), (𝑦, 𝑓 (𝑦)), odakle se, primenom koraka 5 dolazi do neuspeha.

20
• primenom za par (𝑥 = 𝑓 (𝑦)); tada se dobija (𝑓 (𝑦), 𝑦), (𝑥, 𝑓 (𝑦)), odakle se, primenom koraka 3 i koraka 5
dolazi do neuspeha.

(
Bez dokaza navodimo teoremu o korektnosti navedenog algoritma za odredivanje najopštijeg unifikatora.
je
an
Teorema 8.9 (Korektnost algoritma Najopštiji unifikator). Algoritam Najopštiji unifikator zadovoljava sledeće
uslove:
izd

• zaustavlja se;
• ako vrati supstituciju, onda je ona najopštiji unifikator za dati niz parova izraza;
• ako se algoritam zaustavi sa neuspehom, onda ne postoji unifikator za dati niz parova izraza.
ko

Navedeni algoritam nije efikasan. Postoje znatno efikasniji algoritmi za unifikaciju. Mnogi od njih zasnovani
ns

su na korišćenju pogodnih struktura podataka i implicitnom primenjivanju supstitucije (iz koraka 6). Neki od
tih algoritama imaju linearnu složenost (po broju polaznih parova), ali, u opštem slučaju, najopštiji unifikator
tro

može imati i eksponencijalnu dužinu (po broju polaznih parova), te ga nije moguće eksplicitno predstaviti u
linearnom vremenu. To ilustruje sledeći primer.
Primer 8.27. Za skup parova
ek

(𝑥1 , 𝑓 (𝑥0 , 𝑥0 ))
(𝑥2 , 𝑓 (𝑥1 , 𝑥1 ))
El

...
(𝑥𝑛 , 𝑓 (𝑥𝑛−1 , 𝑥𝑛−1 ))
Najopštiji unifikator sadrži zamenu 𝑥𝑛 ↦→ 𝑡, gde je 𝑡 term koji sadrži samo simbole 𝑥0 i 𝑓 , pri čemu ima 2𝑛 − 1
pojavljivanja simbola 𝑓 .
Unifikacija ima mnoge primene. Jedna od najznačajnijih je u metodu rezolucije.

Pitanja i zadaci
Pitanje 8.34. Navesti primer izraza koji pokazaju da relacija unifikabilnosti nije tranzitivna.

Pitanje 8.35. Ako je za neka dva izraza 𝜎 neki unifikator, a 𝜆 najopštiji unifikator, kakav onda postoji
unifikator 𝜇?

Pitanje 8.36. Do na šta dva izraza imaju jedinstven najopštiji unifikator?

Pitanje 8.37. Kako glasi pravilo cycle algoritma Najopštiji unifikator?


8.7. Metod rezolucije 118

Pitanje 8.38. U kom slučaju je primenljivo pravilo decomposition u algoritmu Najopštiji unifikator?

Pitanje 8.39. U kojim koracima algoritam Najopštiji unifikator može da vrati neuspeh?

Pitanje 8.40. Navesti algoritam Najopštiji unifikator.


Pitanje 8.41. Ako dva izraza nisu unifikabilna, da li je moguće da se algoritam Najopštiji unifikator zaustavi
sa uspehom?
Pitanje 8.42. Ako dva izraza nisu unifikabilna, da li je moguće da se algoritam Najopštiji unifikator zaustavi
sa neuspehom?

Pitanje 8.43. Ako dva izraza nisu unifikabilna, da li je moguće da se algoritam Najopštiji unifikator ne zaustavi?

Pitanje 8.44. Da li algoritam Najopštiji unifikator pripada klasi p? Zašto?

Pitanje 8.45. Šta je najopštiji unifikator za termove 𝑓 (𝑥, 𝑔(𝑎, 𝑦)) i 𝑓 (𝑧, 𝑔(𝑥, 𝑧)) (𝑥, 𝑦 i 𝑧 su simboli promen-
ljivih, 𝑎 je simbol konstante)?

9)
Pitanje 8.46. Šta je najopštiji unifikator za termove 𝑓 (𝑥, 𝑔(𝑎, 𝑧)) i 𝑓 (𝑏, 𝑔(𝑦, 𝑥)) (𝑥, 𝑦 i 𝑧 su simboli promen-

1
ljivih, 𝑎 i 𝑏 su simboli konstanti)?

20
Pitanje 8.47. Šta je najopštiji unifikator za termove 𝑓 (𝑎, 𝑔(𝑥, 𝑦)) i 𝑓 (𝑧, 𝑔(𝑎, 𝑧)) (𝑥, 𝑦 i 𝑧 su simboli promen-
ljivih, 𝑎 je simbol konstante)?

(
Zadatak 8.19. Odrediti najopštiji unifikator za sledeći skup parova termova:
je
{(𝑔(𝑥, ℎ(𝑦, 𝑧)), 𝑔(𝑢, 𝑥)), (𝑓 (𝑥), 𝑓 (ℎ(𝑐, 𝑣))), (𝑔(𝑧, 𝑢), 𝑔(𝑦, 𝑢))} .
an
Zadatak 8.20. Ispitati da li je relacija unifikabilnosti tranzitivna.

izd

Zadatak 8.21. Dokazati da za dva izraza postoji najviše jedan najopštiji unifikator (do na preimenovanje
promenljivih).
ko

8.7 Metod rezolucije


Metod rezolucije formulisao je Alan Robinson 1965. godine, sledeći mnogobrojne prethodne rezultate. Metod
ns

rezolucije je postupak za ispitivanje (ne)zadovoljivosti formule logike prvog reda u klauzalnoj formi, tj. za
ispitivanje (ne)zadovoljivosti skupa klauza logike prvog reda. Metod se može pojednostaviti tako da je primenljiv
tro

za ispitivanje (ne)zadovoljivosti skupa klauza iskazne logike.


Formula koja je u konjunktivnoj normalnoj formi može da ima konjunkte koji se ponavljaju, a njeni konjunkti
mogu da imaju literale koji se ponavljaju. Medutim, na osnovu asocijativnosti i komutativnosti konjunkcije
ek

i disjunkcije, kao i na osnovu logičkih ekvivalencija 𝒜 ∧ 𝒜 ≡ 𝒜 i 𝒜 ∨ 𝒜 ≡ 𝒜, takva ponavljanja mogu da


se eliminišu i formula koja je u konjunktivnoj normalnoj formi može da se zameni (logički ekvivalentnom)
formulom koja je konjunkcija različitih klauza od kojih je svaka disjunkcija različitih literala. Dakle, formula
El

se može opisati skupom klauza i, dalje, skupom skupova literala. Takva formula je zadovoljiva ako i samo ako
postoji interpretacija u kojoj su sve njene klauze tačne. Klauza je zadovoljiva ako postoji interpretacija u kojoj
je bar jedan literal iz te klauze tačan, pa se smatra da prazna klauza, u oznaci , nije zadovoljiva.
Sve klauze koje sadrže logičke konstante ⊤ ili ⊥ mogu biti eliminisane ili zamenjene tako da se ne promeni
zadovoljivost polaznog skupa klauza i da se ove konstante ne pojavljuju u skupu klauza. Zaista, klauza koja
sadrži literal ⊤ je u svakoj valuaciji tačna, pa može biti eliminisana (jer ne utiče na zadovoljivost polaznog
skupa klauza). Ako klauza 𝐶 sadrži literal ⊥, onda taj literal može biti obrisan, dajući novu klauzu 𝐶 ′ (jer je
u svakoj valuaciji klauza 𝐶 tačna ako i samo ako je tačna klauza 𝐶 ′ ).
U slučaju iskazne logike, ako je literal 𝑙 jednak iskaznom slovu 𝑝, onda sa 𝑙 označavamo literal ¬𝑝; ako je
literal 𝑙 jednak negaciji iskaznog slova 𝑝 (tj. literalu ¬𝑝), onda sa 𝑙 označavamo literal 𝑝. Za literale 𝑙 i 𝑙 kažemo
da su medusobno komplementni. U slučaju logike prvog reda, ako je literal 𝑙 jednak 𝑝(𝑡1 , 𝑡2 , . . . , 𝑡𝑛 ), onda sa
𝑙 označavamo literal ¬𝑝(𝑡1 , 𝑡2 , . . . , 𝑡𝑛 ); ako je literal 𝑙 jednak ¬𝑝(𝑡1 , 𝑡2 , . . . , 𝑡𝑛 ), onda sa 𝑙 označavamo literal
𝑝(𝑡1 , 𝑡2 , . . . , 𝑡𝑛 ). Za literale 𝑙 i 𝑙 kažemo da su (medusobno) komplementni.
U svom osnovnom obliku, metod rezolucije (i za iskaznu i za logiku prvog reda) proverava da li je dati skup
klauza (ne)zadovoljiv. Medutim, metod se može koristiti i za ispitivanje valjanosti. Naime, ako je potrebno
ispitati da li je formula Φ valjana, dovoljno je metodom rezolucije utvrditi da li je formula ¬Φ nezadovoljiva
(pri čemu je potrebno najpre formulu ¬Φ transformisati u skup klauza). Ovaj vid dokazivanja da je formula
119 8. Logika prvog reda

Φ valjana zovemo dokazivanje pobijanjem. Za metod rezolucije primenjen na ovaj način, saglasnost govori da
nije moguće rezolucijom pogrešno utvrditi (pobijanjem) da je neka formula valjana, a potpunost govori da je za
svaku valjanu formulu metodom rezolucije moguće dokazati (pobijanjem) da je valjana.
Ako se izvede prazna klauza, onda to znači da je formula ¬𝒜 nezadovoljiva, pa je 𝒜 valjana; ako u nekom
koraku ne može da se izvede nijedna nova klauza, onda to znači da je formula ¬𝒜 zadovoljiva, pa 𝒜 nije valjana.
Za razliku od iskaznog slučaja, moguć je i ishod da nove klauze mogu da se izvode beskonačno, a da se pri tome
ne izvede prazna klauza.

8.7.1 Metod rezolucije za iskaznu logiku


U metodu rezolucije za iskaznu logiku primenjuje se pravilo rezolucije sledećeg oblika:

𝐶 ′ ∨ 𝑙 𝐶 ′′ ∨ 𝑙
𝐶 ′ ∨ 𝐶 ′′

Klauzu 𝐶 ′ ∨ 𝐶 ′′ zovemo rezolventom klauza 𝐶 ′ ∨ 𝑙 i 𝐶 ′′ ∨ 𝑙, a klauze 𝐶 ′ ∨ 𝑙 i 𝐶 ′′ ∨ 𝑙 roditeljima rezolvente.

9)
Kažemo da klauze 𝐶 ′ ∨ 𝑙 i 𝐶 ′′ ∨ 𝑙 rezolviramo pravilom rezolucije.
Metod rezolucije je postupak za ispitivanje zadovoljivosti skupa klauza koji se sastoji od uzastopnog prime-

1
njivanja pravila rezolucije (slika 8.4).

20
Algoritam: Metod rezolucije

(
Ulaz: Skup klauza 𝑆
Izlaz: Odgovor zadovoljiv/nezadovoljiv
je
an
1: ponavljaj beskonačno
2: ako u tekućem skupu klauza postoji prazna klauza () onda
3: vrati odgovor da je skup klauza 𝑆 nezadovoljiv;
izd

4: ako se tako može izvesti neka nova klauza onda


5: primeni pravilo rezolucije (pri tome, roditelji rezolvente se ne zamenjuju rezolventom, već se rezol-
venta dodaje u tekući skup klauza);
6: inače
ko

7: vrati odgovor da je skup klauza 𝑆 zadovoljiv.


ns

Slika 8.4: Algoritam Metod rezolucije.


tro

U primeni metoda rezolucije, niz klauza (polaznih i izvedenih) označavaćemo često sa 𝐶𝑖 (𝑖 = 1, 2, . . .). Iza
izvedene klauze zapisivaćemo oznake klauza iz kojih je ona izvedena, kao i redne brojeve literala nad kojim je
primenjeno pravilo rezolucije. Literale u klauzama razdvajaćemo obično simbolom ’,’ (umesto simbolom ’∨’).
ek

Primer 8.28. Metodom rezolucije se iz skupa {{¬𝑝, ¬𝑞, 𝑟}, {¬𝑝, 𝑞}, {𝑝}, {¬𝑟}} može izvesti prazna klauza:
El

𝐶1 : ¬𝑝, ¬𝑞, 𝑟
𝐶2 : ¬𝑝, 𝑞
𝐶3 : 𝑝
𝐶4 : ¬𝑟
𝐶5 : ¬𝑝, 𝑟 (𝐶1 , 2; 𝐶2 , 2)
𝐶6 : ¬𝑝 (𝐶4 , 1; 𝐶5 , 2)
𝐶7 :  (𝐶3 , 1; 𝐶6 , 1)
Skup klauza {{¬𝑝, ¬𝑞, 𝑟}, {¬𝑝, 𝑞}, {𝑝}, {¬𝑟}} je, dakle, nezadovoljiv.
Primer 8.29. Metodom rezolucije se iz skupa {{¬𝑝, ¬𝑞, 𝑟}, {¬𝑝, 𝑞}, {𝑝}} ne može izvesti prazna klauza. Ovaj
skup klauza je, dakle, zadovoljiv.
Nad konačnim skupom promenljivih koje se pojavljuju u zadatom skupu klauza postoji konačno mnogo
klauza, pa samim tim i mogućih rezolventi tokom primene metoda rezolucije. Zbog toga se metod rezolucije
zaustavlja za svaku ulaznu formulu (tj. za svaki ulazni skup klauza). Može se dokazati i više, da je metod
rezolucije procedura odlučivanja za zadovoljivost skupova klauza iskazne logike.
8.7. Metod rezolucije 120

Teorema 8.10 (Teorema o algoritmu Metod rezolucije). Metod rezolucije zaustavlja se za svaku iskaznu
formulu i u završnom skupu klauza postoji prazna klauza ako i samo ako je polazna formula nezadovoljiva.

Metod rezolucije može na razne načine biti modifikovan tako da bude efikasniji.

8.7.2 Metod rezolucije za logiku prvog reda


U logici prvog reda, pravilo rezolucije je opštije nego u iskaznom slučaju, i umesto da zahteva da u dve
klauze postoje komplementni literali, zahteva da u dve klauze postoje literali 𝒜′ i ¬𝒜′′ takvi da su atomičke
formule 𝒜′ i 𝒜′′ unifikabilne. Pravilo rezolucije za logiku prvog reda (u njegovom osnovnom obliku, tzv. binarna
rezolucija) može se prikazati na sledeći način:
Γ′ ∨ 𝒜′ Γ′′ ∨ ¬𝒜′′
(Γ′ ∨ Γ′′ )𝜎

9)
gde su Γ′ i Γ′′ klauze, a 𝜎 je najopštiji unifikator za 𝒜′ i 𝒜′′ .
Opšte pravilo rezolucije omogućava rezolviranje više literala odjednom. Ono može biti opisano na sledeći
način:

1
Γ′ ∨ 𝒜′1 ∨ 𝒜′2 ∨ . . . ∨ 𝒜′𝑚 Γ′′ ∨ ¬𝒜′′1 ∨ ¬𝒜′′2 ∨ . . . ∨ ¬𝒜′′𝑛

20
(Γ′ ∨ Γ′′ )𝜎
gde je 𝜎 najopštiji unifikator za formule 𝒜′1 , 𝒜′2 , . . ., 𝒜′𝑚 , 𝒜′′1 , 𝒜′′2 , . . ., 𝒜′′𝑛 .

(
Obe klauze na koje se primenjuje pravilo rezolucije su (implicitno) univerzalno kvantifikovane. Zbog toga se
svaka od njihovih varijabli može preimenovati (jer su formule ∀𝑥𝒜(𝑥) i ∀𝑥′ 𝒜(𝑥′ ) logički ekvivalentne). Štaviše,
je
to je neophodno uraditi za sve deljene varijable, jer bi, inače, neke primene pravila rezolucije bile (pogrešno)
onemogućene (jer odgovarajući literali ne bi bili unifikabilni). Preimenovanje varijabli može se primeniti pre
an
primene pojedinačnog pravila rezolucije ili unapred, pre primene sâmog metoda rezolucije. Ako se preimenovanje
varijabli primenjuje unapred, pre primene metoda rezolucije, onda ono treba da obezbedi da nikoje dve klauze
izd

nemaju zajedničku promenljivu. Dodatno, u svakoj novoizvedenoj klauzi treba preimenovati promenljive tako
da se novi simboli promenljivih ne pojavljuju ni u jednoj drugoj klauzi.
Primer 8.30. Nad klauzama
ko

¬𝑝(𝑥, 𝑦) ∨ ¬𝑝(𝑧, 𝑦) ∨ 𝑝(𝑥, 𝑧)


i
¬𝑝(𝑏, 𝑎)
ns

se može primeniti pravilo rezolucije, jer su literali 𝑝(𝑥, 𝑧) i 𝑝(𝑏, 𝑎) unifikabilni (uz najopštiji unifikator 𝜎 = [𝑥 ↦→
𝑏, 𝑧 ↦→ 𝑎]). Rezolventa ove dve klauze je klauza
tro

¬𝑝(𝑏, 𝑦) ∨ ¬𝑝(𝑎, 𝑦).


Ako se pravilo rezolucije primenjuje dalje, onda u dobijenoj klauzi sve promenljive treba da budu preimeno-
vane (treba da dobiju imena koja do tada nisu korišćena):
ek

¬𝑝(𝑏, 𝑦 ′ ) ∨ ¬𝑝(𝑎, 𝑦 ′ ).
Metod rezolucije za logiku prvog reda ima isti opšti oblik kao metod rezolucije za iskaznu logiku (slika 8.4),
El

s tim što se koristi opšte pravilo rezolucije za logiku prvog reda.


Primer 8.31. Dokazati da je formula 𝑝(𝑎) ⇒ (∃𝑥)𝑝(𝑥) valjana. Negacija date formule je logički ekvivalentna
formuli 𝑝(𝑎)∧(∀𝑥)¬𝑝(𝑥). Metod rezolucije primenjuje se na skup klauza {𝑝(𝑎), ¬𝑝(𝑥)}. Pravilo rezolucije moguće
je primeniti samo na jedan način — literali 𝑝(𝑎) i ¬𝑝(𝑥) se unifikuju supstitucijom [𝑥 ↦→ 𝑎] i njime se dobija
prazna klauza. Odatle sledi da je formula 𝑝(𝑎) ⇒ (∃𝑥)𝑝(𝑥) valjana.
Primer 8.32. Formula (∀𝑥)(∃𝑦)𝑝(𝑥, 𝑦) ⇒ (∃𝑦)(∀𝑥)𝑝(𝑥, 𝑦) nije valjana. Negacija date formule je logički ekvi-
valentna sa formulom (∀𝑥)(∃𝑦)(𝑝(𝑥, 𝑦) ∧ (∀𝑦)(∃𝑥) ¬𝑝(𝑥, 𝑦)) i sa formulom (∀𝑥)(∃𝑦)(∀𝑢)(∃𝑣)(𝑝(𝑥, 𝑦) ∧ ¬𝑝(𝑣, 𝑢)).
Skolemizacijom se dobija skup od dve klauze: {𝑝(𝑥, 𝑓 (𝑥)), ¬𝑝(𝑔(𝑥, 𝑢), 𝑢)}. Pravilo rezolucije nije moguće prime-
niti na ove dve klauze, odakle sledi da je formula (∀𝑥)(∃𝑦) (𝑝(𝑥, 𝑦) ∧ (∀𝑦)(∃𝑥)¬𝑝(𝑥, 𝑦)) zadovoljiva, tj. polazna
formula nije valjana.
Da bi se dokazalo da je neka formula 𝒜 logička posledica formula ℬ1 , ℬ2 , . . ., ℬ𝑛 potrebno je dokazati da je
formula ℬ1 ∧ ℬ2 ∧ . . . ∧ ℬ𝑛 ⇒ 𝒜 valjana, tj. dokazati da formula ¬(ℬ1 ∧ ℬ2 ∧ . . . ∧ ℬ𝑛 ⇒ 𝒜) nije zadovoljiva,
tj. dokazati da formula ℬ1 ∧ ℬ2 ∧ . . . ∧ ℬ𝑛 ∧ ¬𝒜 nije zadovoljiva.
U primenama metoda rezolucije, niz klauza (polaznih i izvedenih) označavaćemo često sa 𝐶𝑖 (𝑖 = 1, 2, . . .).
Iza izvedene klauze zapisivaćemo oznake klauza iz kojih je ona izvedena, redne brojeve literala u tim klauzama,
iskorišćeni najopštiji unifikator, kao i supstituciju kojom se preimenuju promenljive.
121 8. Logika prvog reda

Primer 8.33. Dokažimo da je formula


(∀𝑥)(∃𝑦)𝑞(𝑥, 𝑦)

logička posledica skupa formula

{(∀𝑥)(∃𝑦)𝑝(𝑥, 𝑦), (∀𝑥)(∀𝑦)(𝑝(𝑥, 𝑦) ⇒ 𝑞(𝑥, 𝑦))} .

Dovoljno je dokazati da je formula

𝒜 = ((∀𝑥)(∃𝑦)𝑝(𝑥, 𝑦) ∧ (∀𝑥)(∀𝑦)(𝑝(𝑥, 𝑦) ⇒ 𝑞(𝑥, 𝑦))) ⇒ (∀𝑥)(∃𝑦)𝑞(𝑥, 𝑦)

valjana. Preneks normalna forma negacije ove formule je

(∃𝑤)(∀𝑥)(∃𝑦)(∀𝑢)(∀𝑣)(∀𝑧)(𝑝(𝑥, 𝑦) ∧ (¬𝑝(𝑢, 𝑣) ∨ 𝑞(𝑢, 𝑣)) ∧ ¬𝑞(𝑤, 𝑧)) .

Nakon skolemizacije, ova formula dobija oblik:

9)
(∀𝑥)(∀𝑢)(∀𝑣)(∀𝑧)(𝑝(𝑥, 𝑔(𝑥)) ∧ (¬𝑝(𝑢, 𝑣) ∨ 𝑞(𝑢, 𝑣)) ∧ ¬𝑞(𝑐, 𝑧)) ,

1
pri čemu je 𝑐 nova Skolemova konstanta, a 𝑔 nova Skolemova funkcija. Konjunktivna normalna forma formule

20
𝑝(𝑥, 𝑔(𝑥)) ∧ (¬𝑝(𝑢, 𝑣) ∨ 𝑞(𝑢, 𝑣)) ∧ ¬𝑞(𝑐, 𝑧)

(
je
je
𝑝(𝑥, 𝑔(𝑥)) ∧ (¬𝑝(𝑢, 𝑣) ∨ 𝑞(𝑢, 𝑣)) ∧ ¬𝑞(𝑐, 𝑧) .
an
Elementi početnog skupa klauza su:
𝐶1 : 𝑝(𝑥, 𝑔(𝑥)) (prvi deo hipoteze)
izd

𝐶2 : ¬𝑝(𝑢, 𝑣), 𝑞(𝑢, 𝑣) (drugi deo hipoteze)


𝐶3 : ¬𝑞(𝑐, 𝑧) (zaključak)
Prazna klauza se izvodi na sledeći način.
𝐶4 : 𝑞(𝑥′ , 𝑔(𝑥′ )) (𝐶1 , 1; 𝐶2 , 1), [𝑣 ↦→ 𝑔(𝑥), 𝑢 ↦→ 𝑥];
ko

preimenovanje: [𝑥 ↦→ 𝑥′ ]
𝐶5 :  (𝐶3 , 1; 𝐶4 , 1), [𝑥′ ↦→ 𝑐, 𝑧 ↦→ 𝑔(𝑐)]
ns

Primer 8.34. Dokažimo da je formula


tro

∀𝑥, 𝑦, 𝑧(𝑎(𝑦, 𝑥) ∧ 𝑏(𝑧, 𝑥) ⇒ 𝑎(𝑦, 𝑧)

logička posledica skupa formula {∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇒ ¬𝑎(𝑦, 𝑥)), ∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇔ 𝑏(𝑦, 𝑥)), ∀𝑥, 𝑦, 𝑧(𝑎(𝑥, 𝑦) ∧ 𝑎(𝑦, 𝑧) ⇒
ek

𝑎(𝑥, 𝑧))} (videti primere 8.1 i 8.16). Dovoljno je dokazati da je formula


(∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇒ ¬𝑎(𝑦, 𝑥)))∧
El

(∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇔ 𝑏(𝑦, 𝑥)))∧


(∀𝑥, 𝑦, 𝑧(𝑎(𝑥, 𝑦) ∧ 𝑎(𝑦, 𝑧) ⇒ 𝑎(𝑥, 𝑧)))

∀𝑥, 𝑦, 𝑧(𝑎(𝑦, 𝑥) ∧ 𝑏(𝑧, 𝑥) ⇒ 𝑎(𝑦, 𝑧))
valjana. Odgovarajući skup klauza je:
𝐶1 : ¬𝑎(𝑥1 , 𝑦1 ) ∨ ¬𝑎(𝑦1 , 𝑥1 ) (prvi deo hipoteze)
𝐶2 : ¬𝑎(𝑥2 , 𝑦2 ) ∨ 𝑏(𝑦2 , 𝑥2 ) (drugi deo hipoteze)
𝐶3 : ¬𝑏(𝑥3 , 𝑦3 ) ∨ 𝑎(𝑦3 , 𝑥3 ) (drugi deo hipoteze)
𝐶4 : ¬𝑎(𝑥4 , 𝑦4 ) ∨ ¬𝑎(𝑦4 , 𝑧4 ) ∨ 𝑎(𝑥4 , 𝑧4 ) (treći deo hipoteze)
𝐶5 : 𝑎(𝑐𝑦 , 𝑐𝑥 ) (prvi deo zaključka)
𝐶6 : 𝑏(𝑐𝑧 , 𝑐𝑥 ) (drugi deo zaključka)
𝐶7 : ¬𝑎(𝑐𝑦 , 𝑐𝑧 ) (treći deo zaključka)
Prazna klauza se izvodi na sledeći način.
𝐶8 : ¬𝑎(𝑐𝑦 , 𝑦5 ) ∨ ¬𝑎(𝑦5 , 𝑐𝑧 ) (𝐶7 , 1; 𝐶4 , 3), [𝑥4 ↦→ 𝑐𝑦 , 𝑧4 ↦→ 𝑐𝑧 ];
preimenovanje: [𝑦4 ↦→ 𝑦5 ]
𝐶9 : ¬𝑎(𝑐𝑥 , 𝑐𝑧 ) (𝐶8 , 1; 𝐶5 , 1), [𝑦5 ↦→ 𝑐𝑥 ];
𝐶10 : ¬𝑏(𝑐𝑧 , 𝑐𝑥 ) (𝐶3 , 1; 𝐶9 , 1), [𝑦3 ↦→ 𝑐𝑥 , 𝑥3 ↦→ 𝑐𝑧 ];
𝐶11 :  (𝐶6 , 1; 𝐶10 , 1), []
8.7. Metod rezolucije 122

Primer 8.35. Formula ∀𝑥∀𝑦 (𝑝(𝑥, 𝑦) ⇒ 𝑝(𝑦, 𝑥)) je logička posledica formula ∀𝑥 𝑝(𝑥, 𝑥) i ∀𝑢∀𝑣∀𝑤 (𝑝(𝑢, 𝑣) ∧
𝑝(𝑤, 𝑣) ⇒ 𝑝(𝑢, 𝑤)), pa je formula

𝒜 = (∀𝑥 𝑝(𝑥, 𝑥)) ∧ (∀𝑢∀𝑣∀𝑤 (𝑝(𝑢, 𝑣) ∧ 𝑝(𝑤, 𝑣) ⇒ 𝑝(𝑢, 𝑤))) ⇒

(∀𝑥∀𝑦 (𝑝(𝑥, 𝑦) ⇒ 𝑝(𝑦, 𝑥)))


valjana.
𝐶1 : 𝑝(𝑥, 𝑥)
𝐶2 : ¬𝑝(𝑢, 𝑣), ¬𝑝(𝑤, 𝑣), 𝑝(𝑢, 𝑤)
𝐶3 : 𝑝(𝑎, 𝑏)
𝐶4 : ¬𝑝(𝑏, 𝑎)
𝐶5 : ¬𝑝(𝑢′ , 𝑏), 𝑝(𝑢′ , 𝑎) (𝐶2 , 2; 𝐶3 , 1) [𝑤 ↦→ 𝑎, 𝑣 ↦→ 𝑏];
preimenovanje: [𝑢 ↦→ 𝑢′ ]
𝐶6 : ¬𝑝(𝑏, 𝑏) (𝐶4 , 1; 𝐶5 , 2) [𝑢′ ↦→ 𝑏]
𝐶7 :  (𝐶1 , 1; 𝐶6 , 1) [𝑥 ↦→ 𝑏]

9)
Da bi se pokazalo da je neka formula nezadovoljiva, dovoljno je, primenom metoda rezolucije, iz njenog skupa

1
klauza izvesti praznu klauzu. Dodatno, metod rezolucije ima svojstvo da iz zadovoljivog skupa klauza ne može
da izvede nezadovoljiv skup klauza. Ova dva svojstva obezbeduju potpunost i saglasnost metoda rezolucije.

20
Teorema 8.11 (Saglasnost i potpunost metoda rezolucije). Metod rezolucije je saglasan: ako je primenom

(
metoda dobijena prazna klauza, onda je i polazni skup klauza nezadovoljiv (ili, drugim rečima, iz zadovoljivog
skupa klauza može se dobiti samo zadovoljiv skup klauza);
je
Metod rezolucije je potpun za pobijanje: iz svakog nezadovoljivog skupa klauza moguće je izvesti praznu
an
klauzu.

Logika prvog reda nije odlučiva, pa najviše što može metod rezolucije da bude je procedura poluodlučivanja
izd

(za problem ispitivanja valjanosti). Dakle, metodom rezolucije se iz svakog nezadovoljivog skupa klauza Γ
može izvesti prazna klauza, čime je dokazano da je nezadovoljiv, ali ne može se za svaki zadovoljiv skup klauza
Γ dokazati da je zadovoljiv (naime, moguće je izvesti beskonačno mnogo rezolventi). Dualno, pobijanjem se
metodom rezolucije može za svaku valjanu formulu dokazati da je valjana, ali se ne može za svaku formulu koja
ko

nije valjana utvrditi da nije valjana.


Primetimo da u opisu metoda rezolucije nije specifikovan način na koji se biraju klauze nad kojim se pri-
ns

menjuje pravilo rezolucije. Takode, teorema o potpunosti za pobijanje (teorema 8.11) tvrdi da se iz svakog
nezadovoljivog skupa klauza može izvesti prazna klauza, a ne tvrdi da se iz svakog nezadovoljivog skupa klauza
tro

mora izvesti prazna klauza bez obzira na izbor klauza za rezolviranje. Naime, u zavisnosti od izbora klauza
na koje se primenjuje pravilo rezolucije moguće je da se i za nezadovoljiv skup klauza metod rezolucije ne
zaustavlja. Način na koji se biraju klauze na koje se primenjuje pravilo rezolucije čini strategiju za upravljanje
ek

metoda rezolucije.
Jedna od mogućnosti za obezbedivanje potpunosti metoda rezolucije u strožijem smislu (da postoji strategija
za upravljanje metoda rezolucije takva da se iz svakog nezadovoljivog skupa klauza nužno izvodi prazna klauza
El

u konačno mnogo koraka) je sistematsko izvodenje svih rezolventi iz skupa klauza koji se širi tokom primene
metoda. Sistematski metod rezolucije može se definisati na sledeći način: metod se primenjuje u stupnjevima;
prvi stupanj čini kreiranje početnog skupa klauza; neka pre 𝑖-tog stupnja tekući skup klauza čine klauze 𝐶1 ,
𝐶2 , . . ., 𝐶𝑛 , 𝑖-ti stupanj sastoji se od izvodenja (i dodavanja tekućem skupu klauza) svih mogućih rezolventi iz
po svake dve klauze iz skupa 𝐶1 , 𝐶2 , . . ., 𝐶𝑛 (broj tih klauza je konačan); metod se zaustavlja ako se u nekom
koraku izvede prazna klauza ili ako se u nekom stupnju ne može izvesti nijedna nova klauza.

Teorema 8.12 (Potpunost sistematskog metoda rezolucije). Ako je Γ nezadovoljiv skup klauza, onda se
iz njega sistematskim metodom rezolucije mora izvesti prazna klauza.

Dokaz: Ako je skup klauza Γ nezadovoljiv, onda se, na osnovu teoreme o potpunosti metoda rezolucije (teorema
8.11) iz njega metodom rezolucije može izvesti prazna klauza, tj. postoji niz rezolventi 𝑅1 , 𝑅2 , . . ., 𝑅𝑛
(koje se izvode iz početnih i izvedenih klauza) od kojih je poslednja u nizu prazna klauza. Ako se na
skup klauza Γ primeni sistematski metod rezolucije, u nekom stupnju biće (ako već pre toga nije izvedena
prazna klauza) izvedene sve klauze iz skupa 𝑅1 , 𝑅2 , . . ., 𝑅𝑛 , pa i prazna klauza. 
123 8. Logika prvog reda

Očigledno je da je sistematski metod rezolucije izuzetno neefikasan. Postoji više strategija koje obezbeduju
nužno izvodenje prazne klauze iz nezadovoljivog skupa klauza (tj. sprečavaju beskonačne petlje), ali na efikasniji
način. Smanjivanje izvodenja nepotrebnih klauza jedan je od najvažnijih problema metoda rezolucije.

Jedna od strategija za upravljanje metodom rezolucije zove se linearna ulazna rezolucija — linearna, jer se u
svakoj primeni pravila rezolucije koristi poslednja klauza u nizu; ulazna, jer se u svakoj primeni pravila rezolucije
koristi jedna od početnih klauza. S obzirom na to da ona isključuje mnoge puteve izvodenja novih klauza,
linearna ulazna rezolucija je obično znatno efikasnija nego opšti metod rezolucije. Medutim, iz istog razloga,
linearna ulazna rezolucija nema svojstvo potpunosti (kao što ga ima opšti metod rezolucije). Linearna ulazna
rezolucija ima svojstvo potpunosti za pobijanje za neke klase formula. Na primer, linearna ulazna rezolucija
ima svojstvo potpunosti za pobijanje skupova Hornovih klauza — klauza u kojima postoji najviše jedan literal
koji nije pod negacijom (tj. linearna ulazna rezolucija može dovesti do prazne klauze za svaki kontradiktoran
skup Hornovih klauza). Linearna ulazna rezolucija nad Hornovim klauzama se koristi u prolog-u.

1 9)
20
Pitanja i zadaci

(
Pitanje 8.48. Šta je rezolventa klauza Γ′ ∨ 𝒜′ i Γ′′ ∨ ¬𝒜′′ je (𝜎 je najopštiji unifikator za 𝒜′ i 𝒜′′ )?
Pitanje 8.49. Navesti pravilo rezolucije za logiku prvog reda. je
an
Pitanje 8.50. Da bi se primenio metod rezolucije u kakvoj formi formula čija se nezadovoljivost ispituje mora
da bude?
izd

Pitanje 8.51. Navesti teoremu o potpunosti metode rezolucije za iskaznu i predikatsku logiku.

Pitanje 8.52. Koje korake je potrebno primeniti da bi se metodom rezolucije ispitalo da li je formula logike
prvog reda 𝒜 valjana?
ko

Pitanje 8.53. Da li se metodom rezolucije za svaku formulu logike prvog reda koja je valjana može dokazati
da je valjana?
ns

Pitanje 8.54. Da li se metodom rezolucije za svaku formulu logike prvog reda koja nije valjana može dokazati
da nije valjana?
tro

Pitanje 8.55. Koji su mogući ishodi primene metoda rezolucije za iskaznu logiku, a koji za logiku prvog reda?
ek

Pitanje 8.56. Da li se metod rezolucije za iskaznu logiku uvek zaustavlja?

Pitanje 8.57. U iskaznoj logici, da li će kako god se primenjivalo pravilo rezolucije u konačnom broju koraka
El

biće izvedena prazna klauza?

• ako je početni skup klauza zadovoljiv?


• ako je početni skup klauza nezadovoljiv?

Pitanje 8.58. U logici prvog reda, da li će kako god se primenjivalo pravilo rezolucije u konačnom broju
koraka biće izvedena prazna klauza?

• ako je početni skup klauza zadovoljiv?


• ako je početni skup klauza nezadovoljiv?

Pitanje 8.59. Ukoliko je skup klauza logike prvog reda nezadovoljiv, onda se iz njega metodom rezolucije (a)
uvek mora izvesti prazna klauza; (b) uvek može izvesti prazna klauza; (c) ne može izvesti prazna klauza; (d)
nikad ne može izvesti prazna klauza.

Pitanje 8.60. Za koje klauze linearno-ulazna rezolucija ima svojstvo potpunosti?

Pitanje 8.61. Šta su to Hornove klauze i gde se koriste?


8.7. Metod rezolucije 124

Zadatak 8.22. Dati su skup 𝑃 od 𝑛 (𝑛 ≥ 1) iskaznih slova, skup 𝒞 svih klauza nad 𝑃 i dva podskupa, 𝑆1 i
𝑆2 , skupa 𝒞.
(a) Koliko elemenata ima skup 𝒞?
(b) Da li je skup 𝒞 zadovoljiv?
(c) Ako su skupovi 𝑆1 i 𝑆2 zadovoljivi, da li je i skup 𝑆1 ∪ 𝑆2 zadovoljiv?
(d) Ako su skupovi 𝑆1 i 𝑆2 zadovoljivi, da li je i skup 𝑆1 ∩ 𝑆2 zadovoljiv?
(e) Ako su skupovi 𝑆1 i 𝑆2 kontradiktorni, da li skup 𝑆1 ∪ 𝑆2 može da bude kontradiktoran?
(f ) Ako su skupovi 𝑆1 i 𝑆2 kontradiktorni, da li skup 𝑆1 ∪ 𝑆2 mora da bude kontradiktoran?
(g) Ako su skupovi 𝑆1 i 𝑆2 kontradiktorni, da li skup 𝑆1 ∩ 𝑆2 može da bude kontradiktoran?
(h) Ako su skupovi 𝑆1 i 𝑆2 kontradiktorni, da li skup 𝑆1 ∩ 𝑆2 mora da bude kontradiktoran?
(i) Ako je skup 𝑆1 zadovoljiv, da li skup 𝒞 ∖ 𝑆1 može da bude zadovoljiv?
(j) Ako je skup 𝑆1 zadovoljiv, da li skup 𝒞 ∖ 𝑆1 mora da bude zadovoljiv?

Zadatak 8.23. Dokazati metodom rezolucije za iskaznu logiku da su naredne formule tautologije:
(a) 𝑞 ⇒ (𝑝 ⇒ 𝑞)

9)
(b) ((𝑝 ⇒ 𝑞) ∧ (𝑞 ⇒ 𝑟)) ⇒ (𝑝 ⇒ 𝑟)
(c) ((𝑝 ⇒ 𝑞) ∧ (𝑝 ⇒ 𝑟)) ⇒ (𝑝 ⇒ (𝑞 ∧ 𝑟))

1
(d) (((𝑝 ⇒ 𝑟) ∧ (𝑞 ⇒ 𝑟)) ∧ (𝑝 ∨ 𝑞)) ⇒ 𝑟

20
(e) ¬(𝑝 ∧ 𝑞) ⇒ (¬𝑝 ∨ ¬𝑞)
(f ) ¬(𝑝 ∨ 𝑞) ⇒ (¬𝑝 ∧ ¬𝑞)

(
(g) (¬𝑝 ∨ ¬𝑞) ⇒ ¬(𝑝 ∧ 𝑞)
(h) (𝑝 ∨ (𝑞 ∧ 𝑟)) ⇒ ((𝑝 ∨ 𝑞) ∧ (𝑝 ∨ 𝑟))
je
Zadatak 8.24. Koristeći metod rezolucije za logiku prvog reda dokazati da važi:
an
(∀𝑥)(𝑝(𝑥) ⇒ 𝑞(𝑥)), 𝑝(𝑐) |= 𝑞(𝑐) .
izd

Zadatak 8.25. Metodom rezolucije za logiku prvog reda dokazati da je naredna formula valjana:

(∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦) .
ko

Zadatak 8.26. Metodom rezolucije za logiku prvog reda dokazati da je naredna formula valjana:
(a) (∀𝑦)((∀𝑥)𝑝(𝑥) ⇒ 𝑝(𝑦))
ns

(b) (∀𝑥)𝑝(𝑥) ⇒ (∃𝑥)𝑝(𝑥)


(c) ¬(∃𝑦)𝑝(𝑦) ⇒ (∀𝑦)((∃𝑥)𝑝(𝑥) ⇒ 𝑝(𝑦))
tro

(d) (∃𝑥)𝑝(𝑥) ⇒ (∃𝑦)𝑝(𝑦)


(e) (∀𝑥)(𝑝(𝑥) ∧ 𝑞(𝑥)) ⇔ (∀𝑥)𝑝(𝑥) ∧ (∀𝑥)𝑞(𝑥)
(f ) (∀𝑥)𝑝(𝑥) ∨ (∀𝑥)𝑞(𝑥) ⇒ (∀𝑥)(𝑝(𝑥) ∨ 𝑞(𝑥))
ek

(g) (∃𝑥)(𝑝(𝑥) ∨ 𝑞(𝑥)) ⇔ (∃𝑥)𝑝(𝑥) ∨ (∃𝑥)𝑞(𝑥)


(h) (∃𝑥)(𝑝(𝑥) ∧ 𝑞(𝑥)) ⇒ (∃𝑥)𝑝(𝑥) ∧ (∃𝑥)𝑞(𝑥)
El

Zadatak 8.27. Metodom rezolucije za logiku prvog reda dokazati da je formula (𝐻 ∧ 𝐾) ⇒ 𝐿 valjana, gde je
𝐻 = (∀𝑥)(∀𝑦)(𝑝(𝑥, 𝑦) ⇒ 𝑝(𝑦, 𝑥))
𝐾 = (∀𝑥)(∀𝑦)(∀𝑧)((𝑝(𝑥, 𝑦) ∧ 𝑝(𝑦, 𝑧)) ⇒ 𝑝(𝑥, 𝑧))
𝐿 = (∀𝑥)(∀𝑦)(𝑝(𝑥, 𝑦) ⇒ 𝑝(𝑥, 𝑥)).

Zadatak 8.28. Metodom rezolucije za logiku prvog reda dokazati da je formula (∀𝑥)𝑠(𝑥) logička posledica
skupa formula {∀𝑥(𝑝(𝑥) ⇒ 𝑞(𝑥)), ∀𝑥(𝑞(𝑥) ⇒ 𝑠(𝑥)), ∀𝑥(𝑟(𝑥) ⇒ 𝑠(𝑥)), ∀𝑥(𝑝(𝑥) ∨ 𝑟(𝑥))}.

Zadatak 8.29. Metodom rezolucije za logiku prvog reda dokazati da je formula ∀𝑥∀𝑦 (𝑥 = 𝑦 ⇒ 𝑦 = 𝑥) logička
posledica formula ∀𝑥 (𝑥 = 𝑥) i ∀𝑢∀𝑣∀𝑤 (𝑢 = 𝑣 ∧ 𝑤 = 𝑣 ⇒ 𝑢 = 𝑤).

Zadatak 8.30. Za narednu formulu metodom rezolucije za logiku prvog reda dokazati da je valjana:

(∀𝑥)(𝒜(𝑥) ⇒ 𝐶) ⇔ ((∃𝑥)𝒜(𝑥) ⇒ 𝐶)

pri čemu je 𝐶 rečenica. (Ovaj zadatak ilustruje kako metod rezolucije može biti oslabljen tako da se primenjuje
i na formule koje nisu u klauzalnoj formi.)
125 8. Logika prvog reda


Zadatak 8.31. Važi sledeće:
Janko ima psa.
Svaki vlasnik psa voli životinje.
Nijedna osoba koja voli životinje ne može da udari životinju.
Janko ili Marko su udarili mačku čije je ime Tuna.
Svaka mačka je životinja.
Metodom rezolucije za logiku prvog reda dokazati da je Marko udario Tunu.

Zadatak 8.32. Prevesti na jezik logike prvog reda i dokazati metodom rezolucije za logiku prvog reda sledeće
tvrdenje: Ako su svi političari lukavi i ako su samo pokvareni ljudi političari, onda, ako postoji bar jedan
političar, onda je neki pokvaren čovek lukav.

8.8 Prirodna dedukcija

9)
Pojam valjanosti je semantičke prirode, a koncept dokazivanja i sistema za dedukciju vodi do pojma teoreme
koji je sintaksički-deduktivne prirode. Pojam teoreme je deduktivni pandan pojma valjane formule, koji je
semantičke prirode. Izmedu ova dva pojma postoji veza i deduktivni sistemi obično imaju svojstvo potpunosti

1
i saglasnosti: ako je neka formula valjana, onda ona može biti dokazana u okviru deduktivnog sistema, a ako

20
za neku formulu postoji dokaz u okviru deduktivnog sistema, onda je ona sigurno valjana.
Sistemi za dedukciju su čisto sintaksičke prirode — primenjuju se kroz kombinovanje simbola, ne razmatrajući

(
semantiku formula. Sisteme za dedukciju zovemo i račun – (iskazni račun u slučaju iskazne logike i predikatski
račun u slučaju logike prvog reda). Postoji više različitih deduktivnih sistema, a u nastavku će biti opisan samo
jedan — prirodna dedukcija. je
Sistem prirodne dedukcije (račun prirodne dedukcije) uveo je, 1935. godine, Gerhard Gencen sa namerom
an
da prirodnije opiše uobičajeno zaključivanje matematičara.
U prirodnoj dedukciji koriste se logički veznici ¬, ∧, ∨, ⇒, kao i logička konstanta ⊥. Formula 𝒜 ⇔ ℬ je
izd

kraći zapis za (𝒜 ⇒ ℬ) ∧ (ℬ ⇒ 𝒜), a formula ⊤ kraći zapis za 𝒜 ⇒ 𝒜. Skup formula definiše se na uobičajeni
način.
Pravila izvodenja sistema prirodne dedukcije data su na slici 8.5. Primetimo da za svaki logički veznik i svaki
kvantifikator postoje pravila koja ga uvode (pravila 𝐼-tipa) i pravila koja ga eliminišu (pravila 𝐸-tipa). Pravilo
ko

𝑒𝑓 𝑞 (Ex falso quodlibet) je jedino pravilo koje ne uvodi niti eliminiše neki logički veznik. Skup pravila sistema
prirodne dedukcije za iskaznu logiku čine sva pravila sa slike 8.5 izuzev onih koja uključuju kvantifikatore.
ns

U pravilima izvodenja prikazanim u tabeli 8.5 simbol 𝑡 označava proizvoljan term. Simbol 𝑦 označava
tzv. eigenvariable (pravu promenljivu) — simbol promenljive za koju važi tzv. eigenvariable uslov. Ovaj uslov
za pravilo ∀𝐼 je da važi da je 𝑥 = 𝑦 ili da promenljiva 𝑦 nije slobodna u 𝒜, kao i da važi da 𝑦 nije slobodna
tro

ni u jednoj neoslobodenoj pretpostavci u izvodenju formule 𝒜[𝑥 ↦→ 𝑦]. Eigenvariable uslov za pravilo ∃𝐸 je da
važi da je 𝑥 = 𝑦 ili da promenljiva 𝑦 nije slobodna u 𝒜, kao i da važi da 𝑦 nije slobodna u ℬ niti u bilo kojoj
neoslobodenoj pretpostavci u izvodenju formule ℬ osim, eventualno, u formuli 𝒜[𝑥 ↦→ 𝑦].
ek

Postoji sistem prirodne dedukcije za klasičnu logiku (koji zovemo sistem NK) i sistem prirodne dedukcije za
intuicionističku logiku (koji zovemo sistem NJ). U sistemu prirodne dedukcije za klasičnu logiku postoji jedna
El

aksiomska shema: 𝒜 ∨ ¬𝒜 (tertium non datur). Sistem za intuicionističku logiku nema aksioma.
Tokom izvodenja dokaza u sistemu prirodne dedukcije mogu se koristiti (nedokazane) pretpostavke, ali one
moraju biti eliminisane („oslobodene“) pre kraja izvodenja. U zapisu pravila, [𝐹 ] označava da se nekoliko
(možda i nula) pojavljivanja pretpostavke 𝐹 oslobada, briše (kao nedokazane, neraspoložive pretpostavke)
neposredno nakon primene pravila. Pri tome, može ostati i nekoliko neoslobodenih pojavljivanja pretpostavke 𝐹 .
Pretpostavkama su pridružene oznake (obično prirodni brojevi), koje se zapisuju i u okviru zapisa primenjenog
pravila (kako bi se znalo koja pretpostavka je oslododena u kom koraku).
U sistemu prirodne dedukcije dokaz (dedukcija, izvod) je stablo čijem je svakom čvoru pridružena formula, a
svakom listu ili pretpostavka ili aksioma. Formula 𝐴 je teorema prirodne dedukcije ako postoji dokaz u čijem je
korenu 𝐴 i koji nema neoslobodenih pretpostavki i tada pišemo ⊢ 𝐴 i kažemo da je formula 𝐴 dokaziva u sistemu
prirodne dedukcije. Ako postoji dokaz, u čijem je korenu formula 𝐴 i koji ima neoslobodene pretpostavke koje
pripadaju nekom skupu Γ, onda kažemo da je formula 𝐴 deduktivna posledica skupa Γ i tada pišemo Γ ⊢ 𝐴.
Elemente skupa Γ tada zovemo i premisama ili hipotezama dokaza. Ako je skup Γ jednak {𝐵1 , 𝐵2 , . . . , 𝐵𝑛 },
onda pišemo 𝐵1 , 𝐵2 , . . . , 𝐵𝑛 ⊢ 𝐴.
Dokaz u sistemu prirodne dedukcije se obično prikazuje u vidu stabla čiji su listovi na vrhu, a koren na dnu.
To stablo se prikazuje pojednostavljeno, stilizovano (videti sliku 8.6).
Naredni primeri ilustruju primenu prirodne dedukcije za dokazivanje u iskaznoj logici.
8.8. Prirodna dedukcija 126

[𝒜]𝑢
..
..
⊥ ¬𝐼, 𝑢 𝒜 ¬𝒜
¬𝐸
¬𝒜 ⊥

𝒜 ℬ 𝒜∧ℬ 𝒜∧ℬ
∧𝐼 ∧𝐸 ∧𝐸
𝒜∧ℬ 𝒜 ℬ

[𝒜]𝑢 [ℬ]𝑣
.. ..
.. ..
𝒜 ℬ 𝒜∨ℬ 𝐶 𝐶 ∨𝐸, 𝑢, 𝑣
∨𝐼 ∨𝐼
𝒜∨ℬ 𝒜∨ℬ 𝐶

[𝒜]𝑢
..
..
ℬ 𝒜 𝒜⇒ℬ

9)
⇒ 𝐼, 𝑢 ⇒𝐸
𝒜⇒ℬ ℬ

1
𝒜[𝑥 ↦→ 𝑦] (∀𝑥)𝒜

20
∀𝐼 ∀𝐸
(∀𝑥)𝒜 𝒜[𝑥 ↦→ 𝑡]
uz dodatni uslov

(
[𝒜[𝑥 ↦→ 𝑦]]𝑢
..

𝒜[𝑥 ↦→ 𝑡] (∃𝑥)𝒜
je ℬ
..
an
∃𝐼 ∃𝐸, 𝑢
(∃𝑥)𝒜 ℬ
uz dodatni uslov
izd

⊥ 𝑒𝑓 𝑞
𝐷
ko

Slika 8.5: Pravila izvodenja sistema prirodne dedukcije


.. ..
ns

. .

𝐴 𝐵 .. ..
. .
tro

. .
𝐴 𝐵
𝐶 𝐶
𝐷
..
ek

..

𝐷
..
El

Slika 8.6: Deo dokaza i njegov pojednostavljeni prikaz

Primer 8.36. Formula (𝐴 ∨ 𝐵) ⇒ (𝐵 ∨ 𝐴) je teorema sistema prirodne dedukcije, tj. važi ⊢ (𝐴 ∨ 𝐵) ⇒ (𝐵 ∨ 𝐴):

[𝐴]2 [𝐵]3
1 ∨𝐼 ∨𝐼
[𝐴 ∨ 𝐵] 𝐵 ∨ 𝐴 𝐵∨𝐴
∨𝐸, 2, 3
𝐵∨𝐴 ⇒ 𝐼, 1
(𝐴 ∨ 𝐵) ⇒ (𝐵 ∨ 𝐴)

Primer 8.37. U sistemu prirodne dedukcije važi: 𝐴 ⇒ 𝐵, 𝐵 ⇒ 𝐶 ⊢ 𝐴 ⇒ 𝐶:

[𝐴]1 𝐴⇒𝐵
⇒𝐸
𝐵 𝐵⇒𝐶
⇒𝐸
𝐶 ⇒ 𝐼, 1
𝐴⇒𝐶
127 8. Logika prvog reda

Primer 8.38. U sistemu prirodne dedukcije važi ⊢ 𝐴 ⇒ (𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶):


[𝐴]1 [𝐴]1
∨𝐼 ∨𝐼
𝐴∨𝐵 𝐴∨𝐶
∧𝐼
(𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶)
⇒ 𝐼, 1
𝐴 ⇒ (𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶)
U prethodnom dokazu, primenom pravila ⇒ 𝐼 nisu morala da budu oslobodena sva pojavljivanja pretpostavke 𝐴.
Na primer:
[𝐴]1 𝐴
∨𝐼 ∨𝐼
𝐴∨𝐵 𝐴∨𝐶
∧𝐼
(𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶)
⇒ 𝐼, 1
𝐴 ⇒ (𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶)
Ovaj dokaz je dokaz tvrdenja 𝐴 ⊢ 𝐴 ⇒ (𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶) (što je slabije tvrdenje od tvrdenja ⊢ 𝐴 ⇒ (𝐴 ∨ 𝐵) ∧
(𝐴 ∨ 𝐶)).

9)
Naredni primeri ilustruju primenu prirodne dedukcije za dokazivanje u logici prvog reda.

1
Primer 8.39. Formula (∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦) je teorema sistema prirodne dedukcije (i za klasičnu
i za intuicionističku logiku). Neki matematičar bi ovu formulu (neformalno) dokazao na sledeći način:

20
1. Pretpostavimo da važi (∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦).

(
2. Pretpostavimo da važi (∀𝑦)𝑝(𝑥′ , 𝑦) za neko 𝑥′ .
3. Neka je 𝑦 ′ proizvoljni objekat. Tada važi 𝑝(𝑥′ , 𝑦 ′ ). je
an
4. Iz 𝑝(𝑥′ , 𝑦 ′ ) sledi da važi (∃𝑥)𝑝(𝑥, 𝑦 ′ ).
5. Objekat 𝑦 ′ je proizvoljan, pa važi (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦).
izd

6. Iz (∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) i iz toga što pretpostavka (∀𝑦)𝑝(𝑥′ , 𝑦) ima za posledicu (∀𝑦)(∃𝑥) 𝑝(𝑥, 𝑦), sledi (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦).
7. Iz pretpostavke (∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) sledi (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦), pa važi (∃𝑥)(∀𝑦) 𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦).
ko

Ovaj dokaz može se precizno opisati u vidu dokaza u sistemu prirodne dedukcije (i za klasičnu i za intuicio-
nističku logiku):
1
[(∀𝑦)𝑝(𝑥′ , 𝑦)]
ns

∀𝐸
𝑝(𝑥′ , 𝑦 ′ )
∃𝐼
tro

(∃𝑥)𝑝(𝑥, 𝑦 ′ )
2 ∀𝐼
[(∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦)] (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦)
∃𝐸, 1
(∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦)
ek

⇒ 𝐼, 2
(∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦)
Primer 8.40. Formula ¬(∃𝑥)𝑝(𝑥) ⇒ (∀𝑦)¬𝑝(𝑦) je teorema sistema prirodne dedukcije (i za klasičnu i za
El

intuicionističku logiku):
[𝑝(𝑧)]1
∃𝐼
(∃𝑥)𝑝(𝑥) [¬(∃𝑥)𝑝(𝑥)]2
¬𝐸
⊥ ¬𝐼, 1
¬𝑝(𝑧)
∀𝐼
(∀𝑦)¬𝑝(𝑦)
⇒ 𝐼, 2
¬(∃𝑥)𝑝(𝑥) ⇒ (∀𝑦)¬𝑝(𝑦)
Primer 8.41. U sistemu prirodne dedukcije važi ∀𝑥𝒜, ∀𝑥(𝒜 ⇒ ℬ) ⊢ ∀𝑥ℬ:

∀𝑥𝒜 ∀𝑥(𝒜 ⇒ ℬ)
∀𝐸 ∀𝐸
𝒜 𝒜⇒ℬ
⇒𝐸

∀𝐼
∀𝑥ℬ
Naredna teorema povezuje semantička i deduktivna svojstva klasične logike (ona važi i za iskaznu i za
predikatsku logiku).
8.9. Rešavanje problema svodenjem na problem valjanosti 128

Teorema 8.13. Formula je teorema sistema prirodne dedukcije za klasičnu logiku ako i samo ako je valjana.

Pitanja i zadaci
Pitanje 8.62. Navesti bar tri pravila sistema prirodne dedukcije.

Pitanje 8.63. Koliko u sistemu prirodne dedukcije ima pravila koja uvode veznik ∧?

Pitanje 8.64. Koliko u sistemu prirodne dedukcije ima pravila koja eliminišu veznik ∧?
Pitanje 8.65. Kako glasi pravilo prirodne dedukcije koje elimiše negaciju?

Pitanje 8.66. Kako glasi pravilo eliminasanja implikacije u sistemu prirodne dedukcije?

Pitanje 8.67. Kako glasi pravilo za eliminisanje univerzalnog kvantora u sistemu prirodne dedukcije?

9)
Pitanje 8.68. Navesti bar jedno pravilo prirodne dedukcije koje se koristi u logici prvog reda (a ne i u iskaznoj
logici).

1
Pitanje 8.69. Šta razlikuje sistem prirodne dedukcije za klasičnu i intuicionističku logiku?

20
Pitanje 8.70. U dokazima prirodnom dedukcijom, šta znači oznaka [𝒜]?

(
Pitanje 8.71. U sistemu prirodne dedukcije dokazati da važi 𝒜 ∨ ℬ ⊢ ℬ ∨ 𝒜.

je
Pitanje 8.72. U sistemu prirodne dedukcije dokazati da važi 𝒜, ℬ ∧ 𝒞 ⊢ 𝒜 ∧ ℬ.
an
Pitanje 8.73. U sistemu prirodne dedukcije dokazati da važi 𝒜 ∧ ℬ, 𝒞 ⊢ 𝒜 ∧ 𝒞.

Pitanje 8.74. Šta povezuje pojam valjane formule i pojam formule dokazive u prirodnoj dedukciji za klasičnu
izd

logiku?

Zadatak 8.33. Dokazati da u prirodnoj dedukciji važi 𝐴 ∨ 𝐵, ¬𝐴 ⊢ 𝐵.

Zadatak 8.34. Dokazati da je formula (𝐴 ⇒ 𝐵) ⇒ (¬𝐵 ⇒ ¬𝐴) teorema sistema prirodne dedukcije za
ko

klasičnu logiku.

Dokazati da je formula (𝐴 ∨ (𝐵 ∧ 𝐶)) ⇒ ((𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶)) teorema sistema prirodne
ns

Zadatak 8.35.
dedukcije za klasičnu logiku.

tro

Zadatak 8.36. Dokazati da je formula ¬(𝐴 ∧ 𝐵) ⇒ (¬𝐴 ∨ ¬𝐵) teorema sistema prirodne dedukcije za
klasičnu logiku.
ek

8.9 Rešavanje problema svodenjem na problem valjanosti


El

Ukoliko je potrebno dokazati da je neko tvrdenje ℬ logička posledica skupa tvrdenja 𝒜1 , 𝒜2 , . . ., 𝒜𝑛 , onda
je dovoljno dokazati da je formula 𝒜1 ∧ 𝒜2 ∧ . . . ∧ 𝒜𝑛 ⇒ ℬ. Dokazivanje valjanosti formule može se sprovesti
namenskim programima za to. Tipična situacija za ovakvu primenu je dokazivanje teorema odredene teorije,
pri čemu su 𝒜1 , 𝒜2 , . . ., 𝒜𝑛 , aksiome te teorije, a ℬ teorema koju treba dokazati. Medutim, za mnoge teorije,
krajnje je nepraktično teoreme dokazivati na ovaj opšti način. Za mnoge teorije logike prvog reda postoje i
specijalizovani dokazivači zasnovani na specifičnostima tih teorija.

8.9.1 FOL dokazivači i TPTP format


Programe koji rešavaju instance problema valjanosti ili zadovoljivosti u logici prvog reda zovemo obično
FOL dokazivači (eng. FOL-provers, od first-order logic). Većina savremenih FOL dokazivača zasnovana
je na metodi rezolucije, obogaćenoj mnogim dodatnim tehnikama i heuristikama. Neki od danas popularnih
FOL dokazivača su Vampire, E i Spass.
FOL dokazivači obično očekuju ulaz u nekom od tptp2 formata. Jedan od tih formata je FOF format. U
ovom formatu, formule se navode jedna po jedna sa oznakom o tome da li se radi o aksiomi ili tvrdenju koje
2 tptp (Thousands of Problems for Theorem Provers) je biblioteka problema za automatske dokazivače teorema. U okviru nje

definisano je i nekoliko formata za zapis formula logike prvog reda.


129 8. Logika prvog reda

dokazivač treba da dokaže. U slučaju primera 8.34, zapis problema bi bio sledeći.

fof(a1, axiom, (![X,Y] : (a(X,Y) => ~a(Y,X)))).


fof(a2, axiom, (![X,Y] : (a(X,Y) <=> b(Y,X)))).
fof(a3, axiom, (![X,Y,Z] : ((a(X,Y) & a(Y,Z)) => a(X,Z)))).
fof(cn, conjecture, (![X,Y,Z] : ((a(Y,X) & b(Z,X)) => a(Y,Z)))).

Pitanja i zadaci
Zadatak 8.37. Zapisati sledeću rečenicu u logici prvog reda: „Ako onaj ko laže taj i krade i ako bar neko laže,
onda neko i krade.“ Potom je dokazati metodom rezolucije.

Zadatak 8.38. Zapisati sledeće tvrdenje u logici prvog reda: Ako „ko radi taj ima ili troši“ i „ko ima taj peva“
i „ko troši taj peva“, onda „ko radi taj peva“. Potom ga dokazati metodom rezolucije.

Zadatak 8.39. Dokazati metodom rezolucije da je sledeća formula valjana: (∀𝑥)(𝑝(𝑥) ⇒ 𝑞(𝑥)) ⇒ (∀𝑥)(𝑝(𝑥) ⇒

9)
(𝑞(𝑥) ∧ 𝑝(𝑥))).

Zadatak 8.40. Zapisati konjunkciju sledećih rečenica kao formulu logike prvog reda i dokazati da je ona

1
nezadovoljiva:

20
• Ako je X prijatelji osobe Y, onda je i Y prijatelj osobe X i

(
• ako je X prijatelj osobe Y, onda X voli Y i
• ne postoji neko ko je povredio osobu koju voli i je
an
• osoba Y je povredila svog prijatelja X.

Zadatak 8.41. Zapisati u logici prvog reda rečenicu: Ako “šta leti to ima krila i lagano je” i “šta pliva, to
izd

nema krila”, onda “šta pliva, to ne leti”. Potom dokazati ovu rečenicu metodom rezolucije.
Zadatak 8.42. Na jeziku logike prvog reda zapisati i dokazati metodom rezolucije da je sledeća rečenica
valjana: „Ako postoji cipela koja u svakom trenutku odgovara svakoj nozi, onda za svaku nogu postoji cipela
ko

koja joj u nekom trenutku odgovara i za svaku nogu postoji trenutak takav da postoji cipela koja joj u tom
trenutku odgovara“.
ns

Zadatak 8.43. U logici prvog reda


1. zapisati rečenicu “svaka dva čoveka se vole ili ne vole” i
tro

2. dokazati da je dobijena formula valjana.

Zadatak 8.44. U logici prvog reda pokazati da je rečenica “ko rano rani, ceo dan je pospan” logička posledica
ek

rečenica “ko rano rani ceo dan je pospan ili dve sreće grabi” i “ko dve sreće grabi, ceo dan je pospan”.
El

Zadatak 8.45. Metodom rezolucije pokazati da iz tvrdenja


„dve nemimoilazne prave se seku ili su paralelne“,
„prave koje se seku pripadaju istoj ravni“
i
„prave koje su paralelne pripadaju istoj ravni“
sledi tvrdenje
„dve nemimoilazne prave pripadaju istoj ravni“.

Zadatak 8.46. Metodom rezolucije dokazati da je recenica


„Janko ruča kod kuće ili pere sudove u restoranu“
logička posledica rečenica
„Svako ruča kod kuće ili u restoranu“,
„ko ruča u restoranu i nema novca, taj pere sudove u restoranu“
i
„Janko nema novca“.

Zadatak 8.47. Na jeziku logike prvog reda zapisati sledeće rečenice i metodom rezolucije dokazati da zajedno
čine nezadovoljiv skup:
8.9. Rešavanje problema svodenjem na problem valjanosti 130

• Svaka dva brata imaju zajednickog roditelja.


• Roditelj je stariji od deteta.
• Postoje braća.
• Ni jedna osoba nije starija od druge.

Zadatak 8.48. Zapisati sledeće rečenice u logici prvog reda:


„Svako zadovoljstvo se plaća.“
„Svaki posao se plaća.“
„Neki posao je zadovoljstvo.“
„Nijedno zadovoljstvo nije posao.“

Zadatak 8.49. Metodom rezolucije pokazati da je rečenica


„Svako dete voli da se igra.“
logička posledica rečenica

9)
„Svaki dečak voli da se igra“,
„Svaka devojčica voli da se igra.“

1
„Dete je dečak ii je devojčica.“

20
Zadatak 8.50. Zapisati sledeće rečenice u logici prvog reda i pokazati rezolucijom da su zajedno kontradik-
torne:

(
• Ko se vozi avionom, dosta zaraduje.
• Ko dosta zaraduje, puno radi. je
an
• Janko se vozi avionom.
• Janko ne radi puno.
izd

Zadatak 8.51. Metodom rezolucije dokazati da je rečenica


„Pera voli da plese“
logička posledica rečenica
ko

„Svako ko je srećan voli da peva“,


„Svako ko voli da peva, voli da pleše“
i
ns

„Pera je srećan“.
tro

Zadatak 8.52. Pokazati da ako važe sledeće rečenice:


„svako ima rodaka na moru ili u na planini“,
„ko ima rodaka na moru, bio je na moru“
ek

i
„ko ima rodaka na planini, bio je na planini“
ne može važiti rečenica
El

„neko nije bio ni na moru ni na planini“.

Zadatak 8.53. Na jeziku logike prvog reda zapisati sledeće rečenice i rezolucijom dokazati da su skupa neza-
dovoljive:

• Svaka dva brata imaju zajednickog roditelja.


• Roditelj je stariji od deteta.
• Postoje braća.
• Ni jedna osoba nije starija od druge.

Zadatak 8.54. U sistemu prirodne dedukcije dokazati 𝐴 ⇒ 𝐶, 𝐵 ⇒ 𝐶 ⊢ (𝐴 ∨ 𝐵) ⇒ 𝐶.


Glava 9

PROLOG

U logičkom programiranju, logika se koristi kao deklaritivni jezik za opisivanje problema, a dokazivač teo-

9)
rema kao mehanizam za rešavanje problema. Rešavanje problema je podeljeno izmedu programera koji opisuje
(tj. modeluje) problem i dokazivača teorema koji problem rešava.

1
Jezik PROLOG najznačajniji je predstavnik jezika deskriptivnog i logičkog programiranja. Veoma je po-

20
godan za mnoge primene tehnika veštačke inteligencije. Pogodan je za obrade prirodnog jezika, ali i za brz
razvoj prototipova drugih inteligentnih programa, jer se obrada ulaza i izlaza, parsiranje i druge slične operacije
jednostavno implementiraju. Ime PROLOG-a dolazi od engleskih reči PROgramming in LOGic. Mehanizam

(
izvodenja zaključaka u PROLOG-u zasniva se na metodu rezolucije koji je opisao Alan Robinson 1965. godine.
Jezik PROLOG i prvi interpretator za njega razvijeni su na Univerzitetu u Marseju 1972. godine, kao plod
je
saradnje istraživača Alain Colmerauer-a iz Marseja i Roberta Kowalskog iz Edinburga. Oni su primetili da se
an
klauzalna forma može koristiti za opisivanje formalnih gramatika i da se dokazivači zasnovani na rezoluciji mogu
koristiti za parsiranje. Efikasan PROLOG mehanizam omogućen je otkrićem LUSH ili SLD rezolucije koju je
opisao Kowalski 1973. godine. Praktična upotreba PROLOG-a kao programskog jezika omogućena je razvojem
izd

efikasnog kompilatora Davida Warrena, u Edinburgu 1977. godine. Ta verzija jezika, Edinburški PROLOG,
detaljno opisana 1980. u knjizi Clocksin-a i Mellish-a nametnula se vremenom kao standardna verzija jezika i
najjače uticala na ISO standard za PROLOG.
Vreme najveće popularnosti PROLOG-a je prošlo ali se on i dalje široko koristi, uglavnom za probleme iz
ko

oblasti veštačke inteligencije: od medicinskih sistema pa do istraživanja podataka.


PROLOG sistemi obično sadrže interaktivni interpretator (sa debagerom). Pored toga, neki sistemi omogućavaju
ns

i kompiliranje kôda (na mašinski jezik ili na neki drugi jezik niskog nivoa) koje daje izvršne verzije koje mogu
samostalno da se izvršavaju. Izvršivi kôd često je veoma efikasan i uporediv sa izvršivim kôdom dobijenim od
programa na nekom proceduralnom jeziku.
tro

Komunikacija sa PROLOG interpretatorom odvija se kroz komandni prozor. Prompt interpretatora obično
izgleda ovako:
ek

?-

Većina PROLOG sistema sadrži uputstva o korišćenju jezika a i samog interpretatora. Ovo uputstvo se
El

obično može dobiti sa ?- help(help). Komanda halt prekida izvršavanje interpretatora (ili kompiliranog
programa) i vraća kontrolu operativnom sistemu. Neki od najpopularnijih PROLOG interpretatora su Quintus,
SICStus, SWI PROLOG itd.

9.1 Metod rezolucije i PROLOG


Programski jezik prolog zasnovan je na metodu rezolucije i na korišćenju Hornovih klauza — klauza u
kojima postoji najviše jedan literal koji nije pod negacijom. U prolog-u se, za ispitivanje zadovoljivosti klauza,
zahvaljujući njihovoj specifičnoj formi, koristi algoritam koji je efikasan (polinomske složenosti) i potpun. Četiri
tipa Hornovih klauza i odgovarajuće formule logike prvog reda prikazani su u narednoj tabeli (formule 𝒜𝑖 su
atomičke).

Tip prolog logika prvog reda


implikaciona klauza 𝒜 : −𝒜1 , . . . , 𝒜𝑛 . ¬𝒜1 ∨ . . . ∨ ¬𝒜𝑛 ∨ 𝒜
ciljna klauza ? − 𝒜1 , . . . , 𝒜𝑛 . ¬𝒜1 ∨ . . . ∨ ¬𝒜𝑛
činjenica 𝒜. 𝒜
prazna klauza false 

131
9.1. Metod rezolucije i PROLOG 132

Svaki nezadovoljiv skup Hornovih klauza mora da sadrži bar jednu činjenicu i bar jednu ciljnu klauzu.
prolog konvencija je da se konstante zapisuju malim početnim slovom, a promenljive velikim početnim
slovom.

Primer 9.1. Pretpostavimo da je zadata činjenica


man(sokrat).

(nova činjenica može se učitati iz datoteke, kao deo programa a može se zadati i interaktivno, na sledeći način:
?- assert(man(sokrat)).) Nakon ovoga, upit

?- man(sokrat).

uspeva, tj. daje rezultat Yes. Naime, da bi ovaj upit bio zadovoljen, činjenica man(sokrat) rezolvira se sa
klauzom ¬ man(sokrat) (dobijenom iz upita) i daje praznu klauzu, kao što je i trebalo. Time je, praktično,
dokazano da je man(sokrat) ⇒ man(sokrat) valjana formula.

9)
Pretpostavimo da je (na primer sa ?- assert(mortal(X) :- man(X)).) zadato i pravilo:

mortal(X) :- man(X).

1
20
U ovom pravilu, predikat mortal(X) je glava pravila a (jednočlani) niz predikata man(X) je rep pravila. Upit:

(
?- mortal(sokrat).

je
uspeva (daje odgovor Yes). Da bi ovaj upit bio zadovoljen, klauza ¬ man(X) ∨ mortal(X) (dobijena iz za-
datog pravila) rezolvira se klauzom ¬ mortal(sokrat) (dobijenom iz upita) i daje rezolventu, tj. novi cilj ¬
an
man(sokrat). On uspeva jer sa klauzom man(sokrat) (dobijenom iz zadate činjenice) daje praznu klauzu.
Time je, praktično, dokazano da je
(man(sokrat) ∧ ∀ x (man(x) ⇒ mortal(x))) ⇒ man(sokrat)
izd

valjana formula.
Ako se zada upit:
? - mortal(X).
ko

onda se metodom rezolucije pokušava dokazivanje nezadovoljivosti skupa klauza:


ns

man(sokrat)
¬ man(X) ∨ mortal(X)
tro

¬ mortal(Y)
Primetimo da je u trećoj klauzi promenljiva preimenovana u Y, da ne bi došlo do preklapanja imena u dve
klauze. Ciljna (treća) klauza može da se rezolvira sa drugom klauzom, korišćenjem unifikatora [ Y ↦→ X ] dajući
novi cilj
ek

¬ man(X)
tj. nakon preimenovanja promenljive X:
El

¬ man(X’)
Rezolviranjem ove klauze sa prvom klauzom iz početnog skupa, korišćenjem unifikatora [ X’ ↦→ sokrat ]
dobija se prazna klauza, pa je dokazana nezadovoljivost datog skupa klauza i prolog vraća rezultat:
Yes

i daje odgovor
X = sokrat

To je jedino moguće rešenje i ako ukucamo simbol ; dobićemo odgovor No.


Naravno, upiti
?- man(platon).

i
133 9. PROLOG

? - mortal(platon).

ne uspevaju i daje odgovor No (sem ako nije zadata i činjenica man(platon)).


Komandom listing možemo da dobijemo spisak svih postojećih činjenica i pravila:
?- listing.

man(sokrat).

mortal(A) :-
man(A).

Primer 9.2. Jednostavan i ilustrativan primer definisanja odnosa u PROLOG-u može se dati na primeru
porodičnih relacija (kao što su otac, majka, brat, tetka i slično) izmedu starogrčkih božanstava.

𝐾𝑟𝑜𝑛 𝑅𝑒𝑗𝑎

1 9)
20
𝑃 𝑜𝑠𝑒𝑗𝑑𝑜𝑛 𝐴𝑚𝑓 𝑖𝑡𝑟𝑖𝑡𝑎 𝑍𝑒𝑣𝑠 𝐿𝑒𝑡𝑜 𝐽𝑎𝑠𝑖𝑜𝑛 𝐷𝑒𝑚𝑒𝑡𝑟𝑎

(
𝑇 𝑟𝑖𝑡𝑜𝑛 𝐴𝑝𝑜𝑙𝑜𝑛 𝐴𝑟𝑡𝑒𝑚𝑖𝑑𝑎 𝑃 𝑙𝑢𝑡𝑜𝑛
je
an
musko(kron).
musko(posejdon).
izd

musko(zevs).
musko(jasion).
musko(triton).
musko(apolon).
ko

musko(pluton).

zensko(reja).
ns

zensko(amfitrita).
zensko(leto).
tro

zensko(demetra).
zensko(artemida).
ek

roditelj(kron,posejdon).
roditelj(reja,posejdon).
El

roditelj(kron,zevs).
roditelj(reja,zevs).
roditelj(kron,demetra).
roditelj(reja,demetra).
roditelj(posejdon,triton).
roditelj(amfitrita,triton).
roditelj(zevs,apolon).
roditelj(leto,apolon).
roditelj(zevs,artemida).
roditelj(leto,artemida).
roditelj(jasion,pluton).
roditelj(demetra,pluton).

predak(X,Y) :- roditelj(X,Y).
predak(X,Y) :- roditelj(X,Z), predak(Z,Y).

majka(X,Y) :- zensko(X), roditelj(X,Y).


9.1. Metod rezolucije i PROLOG 134

otac(X,Y) :- musko(X), roditelj(X,Y).


brat(X,Y) :- musko(X), roditelj(Z,X), roditelj(Z,Y), X\==Y.
sestra(X,Y) :- zensko(X), roditelj(Z,X), roditelj(Z,Y), X\==Y.

tetka(X,Y) :- sestra(X,Z), roditelj(Z,Y).


stric(X,Y) :- brat(X,Z), otac(Z,Y).
ujak(X,Y) :- brat(X,Z), majka(Z,Y).
bratodstrica(X,Y) :- musko(X), otac(Z,X), stric(Z,Y).
sestraodstrica(X,Y) :- zensko(X), otac(Z,X), stric(Z,Y).
bratodujaka(X,Y) :- musko(X), otac(Z,X), ujak(Z,Y).
sestraodujaka(X,Y) :- zensko(X), otac(Z,X), ujak(Z,Y).
bratodtetke(X,Y) :- musko(X), majka(Z,X), tetka(Z,Y).
sestraodtetke(X,Y) :- zensko(X), majka(Z,X), tetka(Z,Y).

U relacijama brat i sestra, predikat X\==Y ima vrednost tačno ako je X različito od Y. U suprotnom, ima

9)
vrednost netačno. U nastavku navodimo nekoliko primera upita i rezultata koje sistem daje.

1
?- stric(posejdon,apolon).

20
Yes

(
?- ujak(X,Y).

X
Y
=
=
zevs,
pluton
je
an
X = zevs,
Y = pluton
izd

X = posejdon,
Y = pluton
X = posejdon,
Y = pluton
ko

?- sestraodstrica(X,Y).
ns

X=artemida,
Y=triton
tro

X=artemida,
Y=triton
ek

U navedenim primerima, mogu se primetiti ponavljanja istih rešenja. U slučaju upita ujak(X,Y), razlog za
to je što zadovoljavanje ovog cilja, zavisi od zadovoljavanja podcilja brat(X,Z), koji zavisi od zadovoljavanja
El

podciljeva roditelj(W,X) i roditelj(W,Z). U slučaju da važi X=zevs, Y=pluton i Z=demetra, onda postoje
dve mogućnosti za W, što su kron i reja. Kako sistem dva puta nalazi način da zadovolji sve potciljeve u kojima
važi X=zevs i Y=pluton, dva puta navodi tu kombinaciju kao rešenje. Slučaj upita sestraodstrica(X,Y) je
analogan.

Pitanja i zadaci
Pitanje 9.1. Na kojem metodu je zasnovan mehanizam izvodenja zaključaka u PROLOG-u?
Pitanje 9.2. Kakve klauze logike prvog reda odgovaraju PROLOG činjenicama, pravilima i upitima?

Pitanje 9.3. Koliko literala bez negacije se može javiti u klauzama koje se koriste u PROLOG-u?

Pitanje 9.4. Koja klauza prvog reda odgovara PROLOG pravilu


p(x1,x2,...,xn) :- q(y1,y2,...,ym),...,r(z1,z2,...,zk) ?

Pitanje 9.5. Da li se algoritam mergesort može implementirati u PROLOGU? Da li se algoritam quicksort


može implementirati u PROLOGU?
135 9. PROLOG

9.2 Sintaksa i semantika u PROLOG-U


Jezik PROLOG-a ima sličnosti sa jezikom logike prvog reda, ali ima i puno razlika.
Simbole jezika PROLOG-a čine: mala i velika slova engleskog alfabeta, cifre i specijalni simboli (_, +, *, (,
), [, ], . . .).
Skup termova definiše se na sledeći način:
• promenljive su termovi; promenljive se zapisuju početnim velikim slovom ili simbolom _ (simbolom _
počinju imena anonimnih promenljivih čije vrednosti nisu bitne).
• konstante su termovi; konstante su zapisi brojevnih konstanti (celobrojnih i realnih, na primer, -123,
3.14) ili atomi. Atom je:
– niz slova, cifara i simbola _ koji počinje malim slovom (na primer sokrat).
– slovna niska u jednostrukim znacima navoda (na primer ’sokrat’).
– niz specijalnih simbola (na primer :-).

9)
Ako je f atom, a A1, . . ., An termovi, onda je f(A1,...,An) term višeg reda (na primer man(sokrat) ili
ucitelj(sokrat,X)). Ovakve termove višeg reda u PROLOG-u zovemo i predikati.
Semantika, interpretacija termova odredena je tekućim stanjem baze znanja. Domen interpretacije čine sâmi

1
PROLOG termovi. Baza znanja, koju PROLOG održava, sastoji se od činjenica i pravila. Činjenice su predikati

20
oblika:
p(x1,x2,...,xn)

(
je
Ukoliko baza znanja sadrži činjenicu man(sokrat), onda se u pratećoj interpretaciji atomičkoj formuli
man(sokrat) pridružuje vrednost 1, tj. ona je tačna.
an
Pravila u bazi znanja su oblika:
p(x1,x2,...,xn) :- q(y1,y2,...,ym),...,r(z1,z2,...,zk)
izd

U navedenom pravilu, predikat p(x1,x2,...,xn) zovemo glava pravila (eng. head of the rule) a niz predikata
q(y1,y2,...,ym),...r(z1,z2,...zk) zovemo rep pravila (eng. tail of the rule) ili telo pravila (eng. body of
the rule). Navedeno pravilo interpretira se kao implicitno univerzalno kvantifikovana implikacija:
ko

q(y1,y2,...,ym)∧ . . . ∧ r(z1,z2,...,zk) ⇒ p(x1,x2,...,xn)


Ukoliko baza znanja sadrži pravilo mortal(sokrat) :- man(sokrat) i činjenicu man(sokrat), onda iz nje
sledi da mortal(sokrat) ima semantičku vrednost 1.
ns

Upiti ili ciljevi (eng. goals) su oblika


tro

q(y1,y2,...,ym),...,r(z1,z2,...,zk)

Postaviti cilj znači tražiti proveru da li je zadati skup atomičkih formula za neku valuaciju promenljivih
ek

koje sadrži tačan (tj. ima semantičku vrednost 1) u odnosu na tekuće stanje baze. Ako je taj uslov ispunjen,
kažemo da je cilj zadovoljen ili da cilj uspeva (eng. succeed). Valuaciju za koju je zadati cilj zadovoljen zovemo
odgovorom na zadati cilj ili rešenjem zadatog cilja.
El

Na primer, ukoliko baza znanja sadrži činjenicu man(sokrat), i pravilo mortal(X) :- man(X), onda cilj
mortal(Y) može biti zadovoljen i to za valuaciju kojom se promenljiva Y preslikava u vrednost sokrat. Jedini
odgovor na ovaj cilj biće, dakle, Y = sokrat.
Nove činjenice i pravila se u interaktivnom okruženju zadaju kao argumenti predikata assert(...) i svaki
zadati cilj se mora završavati tačkom.
Činjenice, pravila i ciljevi, pored navedene, deklarativne semantike, imaju i odgovarajuću proceduralnu
semantiku koja omogućava korišćenje PROLOG-a kao programskog jezika. Proceduralna semantika činjenice
man(sokrat) je da je zadatak man(sokrat) izvršen. Proceduralna semantika pravila mortal(X) :- man(X)
je: da bi se izvršio zadatak mortal(X) potrebno je da se izvrši zadatak man(X). Proceduralna semantika cilja
mortal(X) je: odredi valuaciju takvu da je mortal(X) tačno. Proceduralna semantika za složeni cilj, koji se
sastoji od više pojedinačnih ciljeva, je analogna, s tim što se podciljevi obraduju sleva na desno.
PROLOG interpretator kao odgovor na neki cilj koji je zadovoljen, ispisuje jednu valuaciju (zbog specifičnog
domena, valuaciju ćemo zvati i instanciranje) promenljivih za koju je cilj tačan i reč Yes (ukoliko ime neke
promenljive počinje simbolom _, onda se njena vrednost ne ispisuje). Ukoliko cilj ne može biti zadovoljen,
interpretator ispisuje reč No. Ukoliko jedan cilj ima više odgovora (tj. zadovoljavajućih valuacija), PROLOG ih
navodi jedan po jedan, nakon što korisnik ukuca znak ;. Ukoliko korisnik pritisne Enter, interpretator prestaje
sa daljim navodenjem rešenja. Kada su sva rešenja navedena, interpretator ispisuje reč No.
9.3. Stablo izvodenja 136

9.3 Stablo izvodenja

PROLOG sistem (interpretator ili kompilator) pokušava da zadovolji zadati cilj sistematičnim ispitivanjem
svih mogućnosti. Sve mogućnosti čine stablo izvodenja (eng. derivation tree) ili stablo pretrage (eng. search
tree) čijim listovima odgovaraju odgovori za zadati cilj. Ukoliko svakom od listova odgovara neuspeh, zadati
cilj je nezadovoljen. Ukoliko bar jednom listu odgovara uspeh, cilj je zadovoljen i unifikacija koja vodi do tog
lista predstavlja jedno rešenje za zadati cilj.
Stablo izvodenja PROLOG-a ilustrovaćemo primerom. Pretpostavimo da je učitana PROLOG datoteka
koja sadrži kôd dat na slici 9.1 (na kraju svakog reda, pod komentarom je oznaka klauze). Grane stabla
su označene oznakama klauza koje se koriste u izvodenju. Direktni potomci jednog čvora odgovaraju svim
mogućim izvodenjima odgovarajućeg podcilja. PROLOG mehanizam ih sve ispituje sistematično. Poredak
potomaka direktno odgovara poretku klauza u postojećem programu i on diktira način izvršavanja upita.
Na slici je prikazano kompletno stablo izvodenja za cilj ?-p(X).

9)
p(a). /* C1 */
p(X) :- q(X), r(X). /* C2 */
p(X) :- u(X). /* C3 */

1
20
q(X) :- s(X). /* C4 */

(
r(a). /* C5 */
r(b). /* C6 */
je
an
s(a). /* C7 */
izd

s(b). /* C8 */
s(c). /* C9 */

u(d). /* C10 */
ko

p(X)
ns

C1 (X=a) C2 C3
true q(X),r(X) u(X)
tro

X=a

C4 C10(X=d)
ek

s(X),r(X) true
X=d
El

C7(X=a) C8(X=b) C9(X=c)


r(a) r(b) r(c)

C5 C6 C5 C6 C5 C6
true fail fail true fail fail
X=a X=b

Slika 9.1: Primer stabla izvodenja

Svaki čvor stabla je u nekom trenutku tekući cilj koji može da čini nekoliko podciljeva. Ukoliko se krajnji
levi podcilj unifikuje sa glavom neke klauze, onda se taj podcilj zamenjuje telom klauze instanciranim tom istom
unifikacijom. Ako je telo klauze prazno, onda se podcilj samo izostavlja. Ako se svi podciljevi mogu obrisati
tokom izvodenja, onda je polazni cilj zadovoljen, a instanciranje promenljivih odredeno usput daje odgovor.
PROLOG stablo izvodenja obilazi u dubinu, što znači da će alternativni izbori da budu ispitani onda kada se
pretraga vrati do tačke u kojoj ti izbori postoje. Ovaj postupak pretrage zove se bektreking (eng. backtracking).
U skladu sa prikazanim stablom izvodenja, upit p(X) daće sledeće odgovore:
137 9. PROLOG

?- p(X).

X = a ;

X = a ;

X = b ;

X = d ;

No

Pitanja i zadaci
Pitanje 9.6. Da li se u PROLOG-u stablo izvodenja obilazi u dubinu ili u širinu?

9)
Pitanje 9.7. U Prologu, ako listu stabla pretrage ne odgovara unifikacija koja daje jedno rešenje, šta onda
odgovara tom listu?

1
20
Pitanje 9.8. Ako neki PROLOG cilj može da bude zadovoljen, koliko onda u odgovarajućemu stablu izvodenja
postoji listova koji ne prestavaljaju praznu klauzu.

(
Pitanje 9.9. U PROLOG bazi postoji skup činjenica:

p(a). je
an
p(b).

q(a).
izd

q(b).
q(c).

Nacrtati stablo izvodenja za upit p(X),q(X)., za upit p(X),q(Y)., za upit p(X),!,q(X). i za upit p(X),!,q(Y).
ko

9.4 Operator sečenja


ns

Operator sečenja (eng. cut operator), koji se zapisuje !, odseca delove stabla pretrage. Ovaj operator uspeva
kada je on tekući cilj i stablu izvodenja se odsecaju svi drugi izvori na putu unazad do tačke stabla izvodenja
tro

(uključujući i nju) gde se nalazi operator.


Za program naveden u poglavlju 9.3, za cilj p(X),!. dobija se samo jedan odgovor (a odgovarajuće stablo
izvodenja je prikazano na slici 9.2 — sivom bojom označeni su čvorovi koji se ne obilaze):
ek

?- p(X),!.
El

X = a ;

No

Za isti program, upit r(X),s(Y) daje odgovore (stablo izvodenja je prikazano na slici 9.3):

?- r(X),s(Y).

X = a
Y = a ;

X = a
Y = b ;

X = a
Y = c ;
9.4. Operator sečenja 138

p(X)

C1 (X=a) C2 C3
true q(X),r(X) u(X)
X=a

C4 C10(X=d)
s(X),r(X) true
X=d

C7(X=a) C8(X=b) C9(X=c)


r(a) r(b) r(c)

C5 C6 C5 C6 C5 C6
true fail fail true fail fail
X=a X=b

9)
Slika 9.2: Primer rada operatora sečenja

1
20
X = b

(
Y = a ;

X = b je
an
Y = b ;

X = b
izd

Y = c ;

No
ko

r(X),s(Y)
ns
tro

C5(X=a) C5(X=b)
s(Y) s(Y)
ek

C7(Y=a) C7(Y=b) C7(Y=c) C7(Y=a) C7(Y=b) C7(Y=c)


El

true true true true true true


X=a,Y=a X=a,Y=b X=a,Y=c X=b,Y=a X=b,Y=b X=b,Y=c

Slika 9.3: Stablo izvodenja

Upit r(X),!,s(Y), zbog operatora sečenja daje samo odgovore (stablo izvodenja je prikazano na slici 9.4):

?- r(X),!,s(Y).

X = a
Y = a ;

X = a
Y = b ;

X = a
Y = c ;
139 9. PROLOG

No

r(X),!,s(Y)

C5(X=a) C5(X=b)
s(Y) s(Y)

C7(Y=a) C7(Y=b) C7(Y=c) C7(Y=a) C7(Y=b) C7(Y=c)


true true true true true true
X=a,Y=a X=a,Y=b X=a,Y=c X=b,Y=a X=b,Y=b X=b,Y=c

9)
Slika 9.4: Stablo izvodenja sa operatorom sečenja

1
Konačno, upit r(X),s(Y),!, zbog operatora sečenja daje samo jedan odgovor (stablo izvodenja je prikazano

20
na slici 9.5):

(
?- r(X),s(Y),!.

X = a
Y = a ;
je
an
No
izd

r(X),s(Y),!
ko

C5(X=a) C5(X=b)
ns

s(Y) s(Y)
tro

C7(Y=a) C7(Y=b) C7(Y=c) C7(Y=a) C7(Y=b) C7(Y=c)


true true true true true true
ek

X=a,Y=a X=a,Y=b X=a,Y=c X=b,Y=a X=b,Y=b X=b,Y=c

Slika 9.5: Stablo izvodenja sa operatorom sečenja


El

Operator sečenja ne koristi se samo u ciljevima, već može da se koristi i u pravilima/klauzama koje čine
program. On sprečava korišćenje klauza koje postoje iza klauze koja ga sadrži.
Razmotrimo primer predikata koji opisuje maksimum dva broja:
max(X,Y,Y) :- X =< Y.
max(X,Y,X) :- X>Y.

Naravno, ovako implementiran predikat je sasvim ispravan. No, on nije dovoljno efikasan. Ukoliko je cilj
max(3,4,Y) pozvan u okviru izvršavajna nekog većeg programa, biće dobijen (ispravan) odgovor Y=4. Medutim,
ukoliko dode do bektrekinga program će pokušati da zadovolji max(3,4,Y) na neki drugi način, što je u ovom
slučaju potpuno nepotrebno: maximum brojeva 3 i 4 je 4 i nema drugog mogućeg rezultata. U gore navedenoj
definiciji, dve klauze se medusobno isključuju (ako prva uspeva, onda druga sigurno ne uspeva i obratno), pa je
svaki pokušaj da cilj bude zadovoljen na dva načina gubljenje vremena.
Opisani problem može se prevazići korišćenjem operatora sečenja. Ako je prva klauza zadovoljena, potrebno
je obezbediti da se nikad ne ispituje druga:
9.4. Operator sečenja 140

max(X,Y,Y) :- X =< Y,!.


max(X,Y,X) :- X>Y.

Navedena implementacija funkcioniše na sledeći način: ukoliko je pozvan cilj max(X,Y,Y) i ukoliko X =< Y
uspeva, onda je drugi argument maksimum i operator sečenja onemogućava ispitivanje drugih mogućnosti. S
druge strane, (samo) ako X =< Y ne uspeva, prelazi se na sledeću klauzu.
Primetimo da upotrebljeni operator sečenja ne menja značenje programa i skup odgovora (u odnosu na
prethodnu verziju). Obe verzije programa su iste, do na operator sečenja i to sugeriše da je njegova upotreba
opravdana i prihvatljiva. Takav operator sečenja (koji ne menja značenje programa) zovemo zeleni operator
sečenja. Operator sečenja tog tipa ima za cilj izbegavanje nepotrebnih izračunavanja i popravljanje efikasnosti.
Postoji i druga vrsta operatora sečenja — crveni operator sečenja. Crvenim zovemo operator sečenja koji
menja značenje programa. U principu dobro je izbegavati takve operatore, sem ako za njihovu upotrebu ne
postoji dobar razlog. Razmotrimo sledeći primer:
max(X,Y,Y) :- X =< Y,!.

9)
max(X,Y,X).

1
Ovaj predikat je sličan prethodnom, uz razliku da je u drugoj klauzi izostavljen uslov X>Y. Navedni program

20
sa operatorom sečenja nije isti ukoliko se izostavi operator sečenja. To sugeriše da njegova upotreba zahteva
posebnu pažnju (jer on menja značenje programa). Za neke upite navedena implementacija je ispravna. Na

(
primer, ona ispravno odgovara na upite u kojima je (samo) treći argument promenljiva:

?- max(100,101,X). je
an
X = 101
Yes
izd

?- max(3,2,X).
ko

X = 3
Yes
ns

Ipak, situacija nije ista kao sa zelenim operatorom sečenja i značenje predikata max je promenjeno. Na
primer, ukoliko su sva tri argumenta instancirana, cilj može da bude da se zadovolji max(2,3,2). Ovaj upit ne
tro

bi trebalo da uspe, ali u navedenoj verziji sa crvenim operatorom sečenja on (neočekivano?) uspeva. Naime, ne
uspeva unifikovanje sa prvom klauzom, te se prelazi na drugu. Cilj se uspešno unifikuje sa drugom klauzom i
biva zadovoljen. Ovaj primer, tipičan za crveni operator sečenja, pokazuje kako neoprezna upotreba operatora
ek

sečenja može da dovede do neočekivanog ponašanja programa. Navedena implementacija zapravo ne definiše
maksimum, već neki drugi predikat i ponaša se očekivano (kao maksimum) samo u nekim slučajevima.
El

Dobra praksa je da se najpre implementira jasan program bez operatora sečenja i da se tek onda njegova
efikasnost popravi korišćenjem operatora sečenja.

Pitanja i zadaci
Pitanje 9.10. Kako se naziva operator sečenja čijim se dodavanjem ne menja skup rešenja, ali se povećava
efikasnost izračunavanja?

Pitanje 9.11. U čemu se razlikuju zeleni i crveni operator sečenja u PROLOG-u?

Pitanje 9.12. Da li zeleni operator sečenja može da odseca deo stabla pretrage u PROLOG-u?
Da li crveni operator sečenja može da odseca deo stabla pretrage u PROLOG-u?

Pitanje 9.13. Da li operator sečenja u PROLOG-u nužno menja rezultat programa? Da li operator sečenja
u PROLOG-u može da promeni rezultat programa?
Pitanje 9.14. Kako treba modifikovati Prolog upit ?- r(X),s(Y). da on pronalazi samo jednu vrednost za
X?
141 9. PROLOG

9.5 Negacija kao neuspeh


Termin negacija kao neuspeh se koristi za način na koji se pretpostavka zatvorenog sveta (eng. closed world
assumption) implementira kao vrsta negacije u PROLOG-u. Grubo rečeno, pretpostavka zatvorenog sveta govori
da je netačno sve što nije eksplicitno navedeno kao tačno. Operator \+ daje efekat negacije kao neuspeha, isto
kao predikat not definisan na sledeći način (u nekim implementacijama PROLOG-a raspoloživ je i ovakav
predikat not):

not(Q) :- call(Q), !, fail.


not(Q).

Dakle, cilj not(Q) uspeva ako i samo ako cilj Q ne uspeva.


Razmotrimo sledeći primer u kojem se definiše pojam woman preko pojma man:
man(sokrat).
man(platon).

9)
woman(X):- \+( man(X) ).

1
Za tako definisan predikat dobija se:

20
?- woman(sokrat).

(
no

je
Naime, da bi bio zadovoljen cilj woman(sokrat) ispituje se cilj man(sokrat). Ovaj cilj uspeva i zato cilj
woman(sokrat) ne uspeva (i nema mogućnosti bektrekinga). S druge strane, cilj woman(ksantipa) uspeva (iako
an
takva činjenica ne postoji u bazi). Ipak, cilj

?- woman(X).
izd

ne uspeva. Zaista, ovaj cilj može da uspe samo ako cilj man(X) ne uspeva. Ali cilj man(X) može da uspe (za X
koje se instancira na sokrat). Dakle, cilj woman(X) ne uspeva i X ne postaje vezana.
Upit ?- woman(X) možemo da smatramo istim kao pitanje da li postoji X takvo da je woman(X). Ovaj upit
ko

ne uspeva a znamo da upit woman(ksantipa) uspeva. Dakle, ovaj oblik negacije (negacija kao neuspeh) se bitno
razlikuje od obične logičke negacije.
ns

Razmotrimo još jedan primer za ilustraciju razlike izmedu negacije kao neuspeha i klasične logičke negacije:
a(1).
tro

a(2).
p(X,Y) :- a(X),a(Y),\+(X=Y).
q(X,Y) :- \+(X=Y),a(X),a(Y).
ek

Od upita p(X,Y) i q(X,Y) bismo očekivali isto ponašanje, medutim dobijamo:


El

?- p(X,Y).

X=1
Y=2;

X=2
Y=1;

No.

?- q(X,Y).

No.

Prvi upit se ponaša u skladu sa našim očekivanjem, ali drugi od njega odstupa. Prvi podcilj cilja q(X,Y)
je not(X=Y). Pošto se neinstancirane promenljive X i Y uvek mogu unifikovati, cilj X=Y uvek uspeva. Stoga cilj
not(X=Y) ne uspeva, pa ni upit q(X,Y).
9.6. Liste 142

Generalno, očekivani rezultat (očekivani u smislu klasične logike prvog reda) dobija se samo ako nema
slobodnih promenljivih u upitu, tj. ako je argument operatora \+ vezan u trenutku kada je ovaj operator
pozvan.
Primetimo i da se cilj \+(\+(man(X))) razlikuje od cilja man(X) jer ako je prvi zadovoljen, onda će promen-
ljiva X ostati slobodna, za razliku od cilja man(X) koji će biti zadovoljen a promenljiva X će biti instancirana
na sokrat. Ovo svojstvo može da posluži i kao pogodan test da li su dva terma unifikabilna bez njihovog
unifikovanja u bilo kom slučaju. Na primer, cilj \+(\+(X=2)) uspeva, a pri tome se X ne instancira na 2.

Pitanja i zadaci
Pitanje 9.15. Kako se u PROLOG-u obično definiše operator not?

Pitanje 9.16. Navesti PROLOG cilj koji uspeva ako i samo ako su termovi 𝐴 i 𝐵 unifikabilni ali ih pri tom
ne unifikuje.

9)
9.6 Liste
Liste su jedan od ključnih tipova podataka koji se koriste u logičkom programiranju. Lista je prazna lista ili

1
element za kojim sledi lista. Liste se rekurzivno definišu, pa se rekurzija prirodno javlja u rešenjima problema

20
u kojima se one koriste.
Lista može da se zapiše kao niz njenih elemenata, razdvojenih zarezima i izmedu zagrada ’[’ i ’]’. Lista kao

(
svoj element može da sadrži i drugu listu. Navedimo nekoliko primera listi:
[1,2,3]
[a,b,c,d] je
an
[a,3,4,jovan,f(x,y)]
[[1,2,3],a,1,[],[x]]
izd

Praznu listu označavamo sa []. Ukoliko je lista neprazna, njen prvi element zovemo glava liste, a nastavak
rep liste, takvu listu označavamo sa [GlavaListe|RepListe].
Sledeća tabela pokazuje na primerima da li se i kako mogu unifikovati različite liste.
ko

Term 1 Term 2 unifikabilni unifikator


[1,2,3] [5,6,7] ne
ns

[a,b,c] [a,b] ne
[X,1,2] [Y,Y,2] da X=1, Y=1
tro

[a,b,c] [H|T] da H=a, T=[b,c]


[a,b,c] [X,Y|T] da X=a, Y=b, T=[c]
[] X da X=[]
ek

[] [] da
[] [H|T] ne
[[]] [H|T] da H=[], T=[]
El

[a,b,c] [X|[Y|Z]] da X=a,Y=b,Z=[c]


[a,b,c] [X|[Y|[Z]]] da X=a,Y=b,Z=c
[a] [H|T] da H=a,T=[]
[[],[]] [H|T] da H=[],T=[[]]
[a,b|X] [a,b,c] da X=[c]
[a,X,Y|T] [a,b,c] da X=b,Y=c, T=[]
[a,b|X] [a,b] da X=[]

Predikat koji odreduje prvi element liste može se definisati na sledeći način:
glava([H|_],H).

a prva tri elementa na sledeći način:


prvatri([X,Y,Z|_],X,Y,Z).

Rep liste se može odrediti na sledeći način:


143 9. PROLOG

rep([_|T],T).

Predikat koji dodaje element na početak liste može se definisati na sledeći način:
dodajnapocetak(Lista,X,[X|Lista]).

Proveru da li je element X član liste definisaćemo na dva načina:


clan1([X|_],X):- !.
clan1([_|R],X):- clan1(R,X).

clan2([X|_],X).
clan2([_|R],X):- clan2(R,X).

Prva definicija je efikasnija, pošto operator sečenja sprečava bektreking posle uspešnog nalaženja traženog člana

9)
(dok se u drugoj verziji pretraga vrši do kraja liste i onda kada je traženi element već pronaden). Medutim,
druga verzija se može koristiti i za nabrajanje članova liste. Upit clan1([1,2,3],X) daje odgovor:

1
?- clan1([1,2,3],X).

20
X=1;

(
No.

U slučaju upita clan2([1,2,3],X) dobijamo:


je
an
?- clan2([1,2,3],X).
izd

X=1;

X=2;
ko

X=3;
ns

No.

Još jedna razlika izmedu ovih predikata se ilustruje sledećim primerima:


tro

?- clan1([1,2,3],X), X>2.
ek

No.
El

?- clan2([1,2,3],X), X>2.

X=3;

No.

U slučaju prvog predikata, promenljiva X se pomoću prvog pravila za clan1 unifikuje sa prvim elementom liste,
a operator sečenja onemogućava bektreking. Stoga ne uspeva cilj X>2 i sistem odgovara No. U drugom slučaju,
posle neuspeha cilja X>2, bektrekingom se dolazi do unifikacije promenljive X sa poslednjim elementom liste,
kada i cilj X>2 uspeva.
Dužina liste se može izračunati sledećim predikatom:
duzina([],0).
duzina([_|R],M):-duzina(R,M1), M is M1+1.

Predikat brisi_jedno izbacuje jedno pojavljivanje datog elementa iz date liste:


9.6. Liste 144

brisi_jedno(X,[X|R],R).
brisi_jedno(X,[F|R],[F|S]) :- brisi_jedno(X,R,S).

Ovo je primer upotrebe navedenog predikata:


?- brisi_jedno(X,[1,2,3],L).
X=1 L=[2,3] ;
X=2 L=[1,3] ;
X=3 L=[1,2] ;
No

Sledeći upit:
?- brisi_jedno(3,L,[a,b,c]).
L = [3,a,b,c] ;
L = [a,3,b,c] ;

9)
L = [a,b,3,c] ;
L = [a,b,c,3] ;

1
No

20
pokazuje da predikat brisi_jedno(X,L,R) može da se interpretira i kao „ubaci element X u listu L koja tako
daje listu R“. Dakle, predikat ubaci mogao bi da se jednostavno implementira:

(
ubaci(X,L,R) :- brisi_jedno(X,R,L).
je
Navedimo definiciju predikata za dopisivanje dve liste jednu na drugu:
an
append([X|Y],Z,[X|W]) :- append(Y,Z,W).
izd

append([],X,X).

Predikat append moguće je koristiti na nekoliko načina, za izračunavanje različitih argumenata:

?- append([1,2,3],[4,5],[1,2,3,4,5]).
ko

Yes
ns

?- append([1,2,3],[4,5],A).
A = [1,2,3,4,5]
tro

?- append([1,2,3],A,[1,2,3,4,5]).
A = [4,5]
ek

?- append(A,[4,5],[1,2,3,4,5]).
A = [1,2,3]
El

Ilustrujmo primene listi i kroz dva algoritma za sortiranje.


Primetimo da u narednoj implementaciji algoritma mergesort nema potrebe za primenom operatora sečenja,
za bilo koje argumente navedeni predikati mogu biti zadovoljeni samo na po jedan način.
mergesort([],[]).
mergesort([A],[A]).
mergesort([A,B|R],S) :-
split([A,B|R],L1,L2),
mergesort(L1,S1),
mergesort(L2,S2),
merge(S1,S2,S).

split([],[],[]).
split([A],[A],[]).
split([A,B|R],[A|Ra],[B|Rb]) :- split(R,Ra,Rb).
145 9. PROLOG

merge(A,[],A).
merge([],B,B).
merge([A|Ra],[B|Rb],[A|M]) :- A =< B, merge(Ra,[B|Rb],M).
merge([A|Ra],[B|Rb],[B|M]) :- A > B, merge([A|Ra],Rb,M).

Ovaj predikat je definisan tako da se koristi za izračunavanje drugog argumenta ako je dat prvi. Nije ga
moguće koristiti za izračunavanje prvog argumenta ako je dat drugi. Naime, na primer, upit mergesort(A,[1,2,3])
bi prilikom poziva predikata merge doveo do nedovoljno instanciranih promenljivih i do greške.
Algoritam bubble sort može se implementirati na sledeći način:
bubblesort(List, Sorted) :-
swap(List, List1), !,
bubblesort(List1, Sorted).
bubblesort(Sorted, Sorted).

swap([X,Y|R], [Y,X|R]) :- X > Y.

9)
swap([Z|R], [Z|R1]) :- swap(R, R1).

1
Druga varijanta koristi operator implikacije:

20
bubblesort2(List, Sorted) :-
append(P, [A, B|T], List),

(
B < A ->
append(P, [B, A|T], R),
bubblesort2(R, Sorted) je
an
; Sorted = List.

Pitanja i zadaci
izd

Pitanje 9.17. Da li su PROLOG termovi [[],[]] i [H|T] unifikabilni i, ako jesu, kojim unifikatorom?
Pitanje 9.18. Da li su PROLOG termovi [[]] i [H|T] unifikabilni i, ako jesu, kojim unifikatorom?
ko

9.7 Ugradeni predikati


ns

Logičke konstante
tro

Predikat true uvek uspeva kao cilj, predikat false nikad ne uspeva kao cilj.

Provera promenljive
ek

Predikat var(X) proverava da li je X promenljiva koja nije vezana.


Predikat ground(G) proverava da li G ne sadrži promenljive koje nisu vezane.
El

Provera tipa
Predikat atom(X) uspeva ako je X vezana za simbolički atom. Na primer, atom(foot) i atom(’foot’)
uspevaju, a atom("foot") i atom(3) ne uspevaju.
Predikat integer(X) proverava da li je X vezana za ceo broj.
Predikat real(X) proverava da li je X vezana za realan broj.
Predikat string(X) proverava da li je X vezana za karaktersku nisku.

Unifikabilnost i jednakost
Upit X = Y proverava da li su X i Y unifikabilni, a upit X \= Y proverava da li X i Y nisu unifikabilni,
Upit X == Y proverava da li X i Y imaju jednake vrednosti, a upit X \== Y proverava da li X i Y imaju
različite vrednosti.

Vezivanje promenljive za numeričku vrednost


Cilj V is E vezuje promenljivu V za numeričku vrednost E. Vrednost E mora biti numerička konstanta ili
izraz čija je vrednost odredena.
9.7. Ugradeni predikati 146

Aritmetički operatori
Za brojeve N i M, dozvoljeni su sledeći aritmetički operatori: N > M, N < M, N =< M, N >= M.

Pomoćni predikati
Cilj help(S) uvek uspeva i daje objašnjenje (ako ono postoji) za pojam S (S treba da bude simbolički
atom, na primer, help(var)).
Cilj halt uvek uspeva, zaustavlja PROLOG i vraća kontrolu operativnom sistemu.
Cilj trace uvek uspeva i uključuje praćenje izvršavanja izračunavanja. Cilj notrace uvek uspeva i is-
ključuje praćenje izvršavanja izračunavanja.

Dodavanje u PROLOG bazu i brisanje iz PROLOG baze


Cilj asserta(C) dodaje klauzu C u bazu pre klauza koje imaju isti ključni predikat (ključni predikat klauze
je prvi predikat sleva nadesno).
Cilj assertz(C) (kao i cilj assert(C)) dodaje klauzu C u bazu iza klauza koje imaju isti ključni predikat.

9)
Cilj retract(C) briše klauzu C iz baze. Klauza C treba da bude instancirana tako da može da se odredi
ključni predikat.

1
listing prikazuje sadržaj baze.

20
Učitavanje PROLOG programa

(
Cilj consult(F) učitava program iz datoteke F.
Cilj reconsult(F) učitava program iz datoteke F, s tim što se definicijom predikata koji se učitava zame-
njuje (eventualna) postojeća definicija. je
an
Cilj [F1,F2,...] označava učitavanje datoteke F1, zatim datoteke F2, itd.
U PROLOG programima komentari se pišu izmedu znakova /* i */. Jednolinijski komentar počinje
izd

simbolom %.

Ulaz i izlaz
seeing(X) uspeva ako je X vezana za tekući ulazni tok (tzv. port). Na primer, seeing(user) uspeva ako
ko

je tekući ulazni tok tastatura.


see(X) otvara kao ulazni port datoteku X. Naredni ulazi za predikat read biće čitan sa tog porta.
ns

seen zatvara sve ulazne portove i naredni ulazi za predikat read biće čitani sa porta user.
read(X) čita izraz sa tekućeg porta i smešta ga u X.
tro

telling(X) uspeva ako X može biti vezana za tekući izlazni port. Na primer, telling(user) uspeva ako
je tekući izlazni tok ekran.
tell(X) otvara kao izlazni port datoteku X. Naredni ulazi predikata write biće slati na taj port.
ek

told zatvara sve izlazne portove i naredni ulazi za predikat write biće slat na port user.
El

write(E) ispisuje izraz vezan za E na tekući izlazni port.


nl omogućava prelazak u novi red.
tab(N) ispisuje N razmaka na tekući izlazni port.

Kontrola toka
call(P) poziva predikat P, uspeva ako i samo ako uspeva P.
! operator sečenja.

Negacija kao neuspeh


not(Q), \+Q daje efekat negacije kao neuspeha (kao što je objašnjeno u poglavlju 9.5).

Obrada PROLOG termova


clause(H,B) vraća klauze iz baze čija glava se uparuje sa H, a telo sa B. Vrednost H mora biti dovoljno
instancirana da odreduje glavni predikat glave.
functor(E,F,N) uspeva ako je vrednost E vezana za funkcijski izraz oblika f(...). F će biti vezano za f,
a N za broj argumenat u f(...).
147 9. PROLOG

arg(N,E,A) uspeva ako je vrednost E vezana za funkcijski izraz oblika f(...) i ako N može biti vezano
za neki redni broj argumenta u f(...). Ukoliko cilj uspe, A će biti vezano za N-ti argument u f(...).
name(A,L) vrši konvertovanje izmedu atoma i liste. Na primer, odgovor na upit ?- name(’.pl’,L). je
L = [46,112,108].
=.. vrši konvertovanje izmedu terma i liste. Na primer, ?- parent(a,X) = .. L. daje odgovor
L = [parent, a, _X001].
Operator :- op(P,T,O). uvodi simbol operatora.
P odreduje prioritet operatora, većoj vrednosti odgovara niži prioritet (prioriteti za ugradene operatore
zavise od konkretnog sistema).
T je tip operatora:
xfx za infiksni neasocijativni;
xfy za infiksni desno asocijativni;
yfx za infiksni levo asocijativni;

9)
fx za prefiksni neasocijativni;

1
fy za prefiksni desno asocijativni;

20
xf za postfiksni neasocijativni;
yf za postfiksni levo asocijativni;

(
O je ime operatora.

je
Tip operatora se definiše pomoću jednostavnih, gore datih, niski karaktera. Karakter f označava poziciju
operatora, a x i y pozicije argumenata. Pri tome x znači da se radi o argumentu sa glavnim operatorom
an
strogo manjeg prioriteta od operatora koji definišemo. y znači da prioritet glavnog operatora argumenta
može biti manji ili jednak prioritetu operatora koji definišemo. Pri tome se smatra da atomi i izrazi u
zagradama imaju prioritet 0.
izd

Smisao ovakvog definisanja tipa operatora se najbolje ilustruje pomoću stabla operatora. Neka je operator
+ tipa yfx i neka je dat izraz a+b+c. Postoje dva stabla izraza koja mu potencijalno mogu odgovarati.
Data su na slici 9.6.
ko

+ +
ns

+ 𝑐 𝑎 +
tro

𝑎 𝑏 𝑏 𝑐
ek

Slika 9.6: Dva stabla koja mogu odgovarati izrazu a+b+c


El

Ako posmatramo desno drvo, primećujemo da njegovo desno poddrvo ima operator + u korenu koji nije
strogo manjeg prioriteta od operatora + u korenu celog stabla. Medutim, njegov tip yfx to zahteva,
pa stoga desno drvo moramo odbaciti. Odnosno, operator je levo asocijativan i izraz se tumači kao
((a+b)+c). Da je tip operatora bio xfx ni jedno od ova dva stabla ne bi bilo prihvatljivo, pošto se bar u
jednom poddrvetu javlja operator + istog prioriteta. Ovo se može rešiti pomoću zagrada, pošto je prioritet
izraza u njima 0. Stoga tip xfx nameće korišćenje zagrada, što znači da operator nije asocijativan.
Ugradeni operatori, poredani po prioritetima:
:- xfx, fx
?- fx
; xfy
, xfy
not fy
is, =.., <, itd. xfx
+, - yfx, fx
*, / yfx
^ xfy
9.8. Primeri rešavanja problema primenom PROLOG-a 148

Pronalaženje svih rešenja findall(Things,GoalExpression,Bag) pronalazi sve vrednosti za Things koje


zadovoljavaju uslov GoalExpression i smešta ih u listu Bag. Ako cilj GoalExpression ne uspeva, list Bag
će biti prazna. Sve promenljive u GoalExpression se smatraju egzistencijalno kvantifikovanim.
bagof(Things,GoalExpression,Bag) pronalazi sve vrednosti za Things koje zadovoljavaju uslov GoalExpression
i smešta ih u listu Bag. Ne uspeva ako ne uspeva cilj GoalExpression. Slobodne promenljive u GoalExpression
mogu da se vežu.
setof(Things,GoalExpression,Bag) funkioniše isto kao bagof uz razliku da će lista Bag biti sortirana
i da neće sadržati duplikate.

Pitanja i zadaci
Pitanje 9.19. Kako se u PROLOG-u, u interaktivnom radu, dodaje nova činjenica?

Pitanje 9.20. Koji predikat prekida izvršavanje Prolog interpretarora?


Pitanje 9.21. Kojim izrazom se u PROLOG-u promenljiva 𝑋 veže za numeričku vrednost, na primer 5?

9)
Pitanje 9.22. Kako se PROLOG program učitava iz datoteke datoteka?

1
Pitanje 9.23. Koji upit u PROLOG-u uspeva ako i samo ako je X neinstancirana promenljiva?

( 20
9.8 Primeri rešavanja problema primenom PROLOG-a

je
PROLOG je veoma pogodan za rešavanje problema veštačke inteligencije. Ilustrovaćemo to kroz nekoliko
primera.
an
9.8.1 Implementacija KNF algoritma
izd

Kao prvi veći primer PROLOG programa koji ilustruje razne koncepte jezika, navodimo implementaciju
KNF algoritma. Kasnije ćemo na to nadovezati implementaciju algoritma DPLL. Radi preglednijeg zapisa, prvo
uvodimo logičke veznike kao nove operatore.
ko

:- op(10,fx,non).
:- op(20,yfy,and).
ns

:- op(30,yfy,or).
:- op(40,xfx,imp).
:- op(50,xfx,eq).
tro

Operatori and i or su definisani kao asocijativni (yfy), što dovodi do ispuštanja nepotrebnih zagrada u
zapisu i lakše čitljivosti.
ek

Predikat knf implementira KNF algoritam iz tri koraka. Prvo se eliminišu veznici ekvivalencije i implikacije,
zatim se vrši primena de Morganovih zakona uz eliminisanje dvostrukih negacija, a na kraju primena zakona
El

distributivnosti disjunkcije i konjunkcije.


knf(X,Y) :- elim(X,Z),dem(Z,T),dist(T,Y).

elim(X eq Y,R) :- elim((X imp Y) and (Y imp X),R).


elim(X imp Y,non X1 or Y1) :- elim(X,X1),elim(Y,Y1).
elim(X or Y,X1 or Y1) :- elim(X,X1),elim(Y,Y1).
elim(X and Y,X1 and Y1) :- elim(X,X1),elim(Y,Y1).
elim(non X,non X1) :- elim(X,X1).
elim(X,X) :- atom(X).

Primetimo da je pri svakom pozivu primenljivo samo jedno pravilo za eliminaciju, tako da PROLOG neće
tražiti više od jednog rešenja. Osim toga, treba primetiti da je prvo pravilo specifično zato što eliminišući jedan
veznik uvodi novi koji je potrebno eliminisati.
dem(non (X and Y),X1 or Y1) :- dem(non X,X1),dem(non Y,Y1).
dem(non (X or Y),X1 and Y1) :- dem(non X,X1),dem(non Y,Y1).
149 9. PROLOG

dem(non non X,X1) :- dem(X,X1).


dem(X or Y,X1 or Y1) :- dem(X,X1),dem(Y,Y1).
dem(X and Y,X1 and Y1) :- dem(X,X1),dem(Y,Y1).
dem(non X,non X) :- atom(X).
dem(X,X) :- atom(X).

Primetimo da je jednostavnosti radi učinjeno malo odstupanje od KNF algoritma kako je dat na slici 7.2.
Naime, dozvoljena je eliminacija dvostruke negacije i pre nego što se do kraja primene de Morganovi zakoni.
dist(X and Y, X1 and Y1) :- dist(X,X1),dist(Y,Y1).
dist(X or Y, R) :- dist(X,X1),dist(Y,Y1),dist(X1,Y1,R).
dist(non X, non X).
dist(X,X) :- atom(X).

dist(X and Y, Z, XZ and YZ) :- dist(X,Z,XZ),dist(Y,Z,YZ),!.


dist(X, Y and Z, XY and XZ) :- dist(X,Y,XY),dist(X,Z,XZ),!.

9)
dist(X,Y,X or Y).

1
Kada mu je argument neka konjunkcija, predikat dist omogućava rekurzivnu primenu na konjunkte, a u

20
slučaju disjunkcije primenjuje zakone distributivnosti. Pri tome se uzima u obzir i to da primena ovog zakona
može dovesti do stvaranja novih uslova za njegovu primenu u okviru podformula dobijenog izraza.

(
9.8.2 Implementacija DPLL algoritma
je
Posle transformacije formule u konjunktivnu normalnu formu, u cilju primene DPLL algoritma, potrebno ju
an
je konvertovati u listu listi literala gde je spoljna lista konjunkcija unutrašnjih listi koje predstavljaju klauze.
Kako bismo ovo implementirali, prvo nam je potreban pomoćni predikat koji spaja dve liste. Za to ćemo koristiti
predikat append definisan u sekciji 9.6.
izd

Konverzija se vrši tako što se prolazi kroz konjunkcije spajajući liste koje se dobijaju rekurzivnom primenom
predikata knf_u_listu_listi na konjunkte (koji su ponovo u konjunktivnoj normalnoj formi) sve dok se ne
dode do disjunkcije. U tom trenutku se prelazi na novi predikat disjunkcija_u_listu koji od disjunkcije
formira listu literala analogno načinu na koji knf_u_listu_listi gradi listu listi.
ko

knf_u_listu_listi(X,[[X]]) :- atom(X).
ns

knf_u_listu_listi(non X, [[non X]]) :- atom(X).


knf_u_listu_listi(X and Y,R) :- knf_u_listu_listi(X,R1),
knf_u_listu_listi(Y,R2),
tro

append(R1,R2,R).
knf_u_listu_listi(X or Y,[R]) :- disjunkcija_u_listu(X or Y, R).
ek

disjunkcija_u_listu(X,[X]) :- atom(X).
disjunkcija_u_listu(non X,[non X]).
El

disjunkcija_u_listu(X or Y,R) :- disjunkcija_u_listu(X,R1),


disjunkcija_u_listu(Y,R2),
append(R1,R2,R).

U cilju implementacije DPLL algoritma, prvo su nam potrebni pomoćni predikati koji implementiraju rad
sa listama i listama listi.
Predikat koji proverava da li se element nalazi u listi je poznat od ranije:
sadrzi([X|R],X).
sadrzi([Y|R],X) :- sadrzi(R,X).

Da bismo proverili da li lista listi sadrži neki element koristićemo dvostruku primenu predikata sadrzi, s tim
što ćemo u nastavku predikatima davati nazive u skladu sa njihovim smislom u implementaciji DPLL algoritma.
formula_sadrzi_literal(X,Y) :- sadrzi(X,Z),sadrzi(Z,Y).

Kako se u DPLL algoritmu koriste i zamene literala ili iskaznih slova, koristićemo i sledeći predikat:
9.8. Primeri rešavanja problema primenom PROLOG-a 150

zameni_u_disj(X,Y,[X|R],[Y|T]) :- zameni_u_disj(X,Y,R,T),!.
zameni_u_disj(X,Y,[Z|R],[Z|T]) :- zameni_u_disj(X,Y,R,T).
zameni_u_disj(X,Y,[],[]).

Pri tome se podrazumeva da su disjunkcije unutrašnje liste. Zamena elementa liste listi (literala u celoj
formuli) se sad lako vrši:

zameni_literal(X,Y,[P|R],[Q|T]) :- zameni_u_disj(X,Y,P,Q),
zameni_literal(X,Y,R,T).
zameni_literal(X,Y,[],[]).

Zamena iskaznog slova p u formuli može se uraditi tako što se zamene oba literala - p i non p odgovarajućim
simbolima u celoj formuli.
zameni_slovo(X,Y,P,Q) :- zameni_literal(X,Y,P,R),
zameni_literal(non X, non Y,R,Q).

9)
Brisanje svih pojavljivanja elementa liste vršimo na sledeći način:

1
20
brisi_sve(X,[X|R],R1) :- brisi_sve(X,R,R1),!.
brisi_sve(X,[Y|R],[Y|R1]) :- brisi_sve(X,R,R1).
brisi_sve(X,[],[]).

(
DPLL algoritam prvo proverava da li operiše sa praznom listom klauza i ako je tako vraća yes, a u suprotnom,
je
vrši zamene ¬⊤ sa ⊥ i ¬⊥ sa ⊤, briše pojavljivanja literala ⊥ koji je u našoj implementaciji predstavljen atomom
an
f (dok je ⊤ predstavljen atomom t) i proverava da li se prazna klauza nalazi u skupu klauza. Posle toga se
pokušava sa koracima tautology, unit propagation, pure literal i split.
izd

% Provera da li je argument prazna klauza


dpll([]) :- !.

% Zamene literala non t sa f i non f sa t


ko

dpll(X) :- formula_sadrzi_literal(X,non t),!,


zameni_negacije_literala(X,Y),dpll(Y).
ns

dpll(X) :- formula_sadrzi_literal(X,non f),!,


zameni_negacije_literala(X,Y),dpll(Y).
tro

% Brisanje literala f
dpll(X) :- formula_sadrzi_literal(X,f),!,brisi_f(X,Y),dpll(Y).
ek

% Ako formula sadrzi praznu klauzu, onda je


% polazna formula nezadovoljiva
El

dpll(X) :- sadrzi_praznu_klauzu(X),!,fail.

% Korak tautology
dpll(X) :- sadrzi(X,Y),sadrzi(Y,t),!,brisi_sve(Y,X,Z),dpll(Z).
dpll(X) :- sadrzi(X,Y),sadrzi(Y,L),atom(L),sadrzi(Y, non L),!,
brisi_sve(Y,X,Z),dpll(Z).

% Korak unit propagation


dpll(X) :- sadrzi(X,[Y]),atom(Y),!,zameni_slovo(Y,t,X,Z),dpll(Z).
dpll(X) :- sadrzi(X,[non Y]),!,zameni_slovo(Y,f,X,Z),dpll(Z).

% Korak pure literal


dpll(X) :- formula_sadrzi_literal(X,Y),atom(Y),
not(formula_sadrzi_literal(X,non Y)),!,
zameni_slovo(Y,t,X,Z),dpll(Z).
dpll(X) :- formula_sadrzi_literal(X,non Y),
not(formula_sadrzi_literal(X,Y)),!,
151 9. PROLOG

zameni_slovo(Y,f,X,Z),dpll(Z).

% Korak split
dpll([[X|R1]|R2]) :- atom(X),zameni_slovo(X,t,[[X|R1]|R2],Y),
dpll(Y),!.
dpll([[X|R1]|R2]) :- atom(X),zameni_slovo(X,f,[[X|R1]|R2],Y),
dpll(Y).
dpll([[non X|R1]|R2]) :- zameni_slovo(X,t,[[non X|R1]|R2],Y),
dpll(Y),!.
dpll([[non X|R1]|R2]) :- zameni_slovo(X,f,[[non X|R1]|R2],Y),
dpll(Y).

Primetimo da je recimo u koraku tautology moguće da postoji više klauza koje sadrže literal t. U tom
slučaju PROLOG bi prirodno vršio bektreking u potrazi za svim rešenjima. Kako to u našoj implementaciji
nema svrhe, ubačen je predikat reza koji sprečava ovakvo ponašanje. Slična opaska važi i u pravilima unit
propagation i pure literal.

9)
Zamene negiranih literala se vrše jednostavno kad imamo implementirane pomoćne predikate.

1
zameni_negacije_literala(X,Y) :- zameni_literal(non t,f,X,Z),

20
zameni_literal(non f,t,Z,Y).

Brisanje literala f:

(
brisi_f([X|R],[Y|R1]) :- brisi_sve(f,X,Y),brisi_f(R,R1).
brisi_f([],[]). je
an
Predikat sadrzi_praznu_klauzu se trivijalno implementira.
izd

sadrzi_praznu_klauzu(X) :- sadrzi(X,[]).

Sada možemo dodati još jedan predikat koji proverava da li je formula zadovoljiva:
ko

zadovoljiva(X) :- knf(X,Y),knf_u_listu_listi(Y,Z),dpll(Z).
ns

9.8.3 Pretraga grafa


Kako grafovi predstavljaju binarne relacije nad nekim domenom, PROLOG omogućava vrlo jednostavno
tro

opisivanje i pretragu grafova. Graf se zadaje listom svojih grana.


edge(1, 5).
ek

edge(1, 7).
edge(2, 1).
El

edge(2, 7).
edge(3, 1).
edge(3, 6).
edge(4, 3).
edge(4, 5).
edge(5, 8).
edge(6, 4).
edge(6, 5).
edge(7, 5).
edge(8, 6).
edge(8, 7).

Nalaženje putanje se realizuje rekurzivno. Postoji put od čvora 𝐴 do čvora 𝐵 ako je 𝐴 = 𝐵 ili ako postoji
grana od čvora 𝐴 do čvora 𝑋 i postoji put od 𝑋 do 𝐵. Kako grafovi mogu u opštem slučaju sadržati cikluse,
potrebno je pamtiti i listu posećenih čvorova kako ne bi došlo do prekoračenja steka pri rekurzivnim pozivima.
9.8. Primeri rešavanja problema primenom PROLOG-a 152

% path(Start, Finish, Visited, Path)


path(Node, Node, _, [Node]).
path(Start, Finish, Visited, [Start|Path]):-
edge(Start, X), not(sadrzi(Visited,X)),
path(X,Finish,[X|Visited],Path).

9.8.4 Problem misionara i ljudoždera


Na levoj obali reke nalaze se tri misionara i tri ljudoždera (eng. missionaries and cannibals). Pomoću čamca
koji prima dve osobe, svi treba da se prevezu preko reke. Pri tome, ne sme se desiti da na nekoj obali broj
ljudoždera bude veći od broja misionara jer će ih ovi pojesti. Potrebno je naći neki raspored prevoženja tako
da svi predu reku.
Rešavanje ovog problema ćemo svesti na pretragu grafa. Izmedu svaka dva poteza, igra se nalazi u odredenom
stanju. To stanje se karakteriše brojem misionara i ljudoždera na obalama i položajem čamca. Broj misionara
i ljudoždera je dovoljno precizirati za levu stranu, jer je tad broj na desnoj strani jednoznačno odreden. Primer

9)
stanja je

1
state(3, 1, left)

20
Potezi predstavljaju prevoženje jedne ili dve osobe na drugu stranu reke. Potpuno su odredeni brojem
misionara i ljudoždera koji se prevoze i stranom na koju se čamac kreće. Primer poteza je

(
move(1, 1, right)
je
Stanja igre možemo smatrati čvorovima grafa čije su grane potezi pomoću kojih se prelazi iz jednog sta-
an
nja u drugo. Na ovaj način se rešavanje problema svodi na nalaženje putanje kroz graf od polaznog stanja
state(3,3,left) do završnog state(0,0,right). Samo rešenje je lista poteza koji odgovaraju granama koje
izd

spajaju medustanja u toku rešavanja.


[move(0,2,left), move(0,1,right)|...]

Osnovni predikat za rešavanje ovog problema ima formu već prikazanog predikata za pretragu grafa.
ko

mandc(state(0, 0, right), _, []).


ns

mandc(CurrentState, Visited, [Move | RestOfMoves]) :-


newstate(CurrentState, NextState),
tro

not(sadrzi(NextState, Visited)),
make(CurrentState, NextState, Move),
mandc(NextState, [NextState | Visited], RestOfMoves).
ek

Za uočeno stanje koje nasleduje trenutno, potez koji realizuje prelaz se lako izračunava.
El

make(state(M1,C1,left), state(M2,C2,right), move(M,C,right)) :-


M is M1 - M2,
C is C1 - C2.
make(state(M1,C1,right), state(M2,C2,left), move(M,C,left)) :-
M is M2 - M1,
C is C2 - C1.

Da bismo konstruisali sledeće stanje, potrebno je definisati legalne prelaze čamcem


carry(2, 0).
carry(1, 0).
carry(1, 1).
carry(0, 1).
carry(0, 2).

kao i legalna stanja. Pozicija čamca je nebitna, ali broj ljudoždera ni na jednoj obali ne sme prelaziti broj
misionara. Stoga, legalna su samo stanja kod kojih je broj misionara na levoj strani jednak broju ljudoždera,
stanja kod kojih su sva tri misionara na levoj obali i stanja kod kojih su svi misionari na desnoj obali.
153 9. PROLOG

legal(X, X).
legal(3, X).
legal(0, X).

Prilikom konstrukcije novog stanja, moramo paziti i da pre prelaska na desnu obalu, na levoj strani mora biti
dovoljno osoba koje su planirane za prelazak, i da posle prelaska na levu obalu na njoj ne može biti više od tri
misionara, odnosno ljudoždera.
newstate(state(M1, C1, left), state(M2, C2, right)) :-
carry(M, C),
M =< M1,
C =< C1,
M2 is M1 - M,
C2 is C1 - C,
legal(M2, C2).

9)
newstate(state(M1, C1, right), state(M2, C2, left)) :-
carry(M, C),

1
M2 is M1 + M,
C2 is C1 + C,

20
M2 =< 3,
C2 =< 3,

(
legal(M2, C2).

Pitanja i zadaci je
an
Zadatak 9.1. Napisati u PROLOG-u:
izd

1. Predikat koji iz iskazne formule eliminiše veznik disjunkcije zamenjujući ga pomoću veznika konjunkcije
i negacije. Pri tome smatrati da su definisani sledeći veznici:

:- op(10,fx,non).
ko

:- op(20,yfy,and).
:- op(30,yfy,or).
ns

2. Predikat koji od date liste pravi novu, koja od elemenata polazne liste sadrži samo one koji su i sami liste
i to sa neparnim brojem elemenata.
tro

Primer: Za listu [1,2,[1,2,3],[3,4],4,[a],[1,2],5] rezultat treba da bude [[1,2,3],[a]]. Za listu


[1,2,[1,2,3,4]], rezultat je [].
ek

Zadatak 9.2. Data su pravila i činjenice:


Ko laže taj krade.
El

Ko krade i uhvaćen je u kradi taj ide u zatvor.


Al Kapone laže.
Al Kapone je uhvaćen u kradi.
Laki Lućiano laže.
Napisati PROLOG program koji opisuje navedene činjenice i pravila. Koje odgovore PROLOG daje na
upite da li Al Kapone ide u zatvor"i da li Laki Lućiano ide u zatvor". Nacrtati odgovarajuća dva stabla
izvodenja i navesti sve primene pravila rezolucije (u terminima logike prvog reda) koja se pri tome koriste.
Zadatak 9.3. Napisati u PROLOG-u predikat koji izračunava vrednost binarnog zapisa broja. Broj je dat u
obliku liste nula i jedinica. Na primer, za ulaz [1, 0, 1, 0], izlaz treba da bude 10.

Zadatak 9.4. Napisati u PROLOG-u predikat koji generiše sve liste date dužine koje se sastoje od elemenata
0 i 1.

Zadatak 9.5. Napisati u PROLOG-u predikat koji od date liste pravi novu, koja od elemenata polazne liste
sadrži samo one koji su i sami liste i to sa neparnim brojem elemenata.
Primer: Za listu [1,2,[1,2,3],[3,4],4,[a],[1,2],5] rezultat treba da bude [[1,2,3],[a]]. Za listu
[1,2,[1,2,3,4]], rezultat je [].
9.8. Primeri rešavanja problema primenom PROLOG-a 154

Zadatak 9.6. Dvostruki faktorijel se definiše na sledeći način: 𝑛!! = 𝑛 · (𝑛 − 2) · . . . · 1


Specijalno, 1!! = 1 i 0!! = 1. Napisati PROLOG program koji izračunava ovu funkciju.

Zadatak 9.7. Napisati PROLOG predikat koji za datu listu brojeva izračunava koliko se parnih brojeva u njoj
javlja.

Zadatak 9.8. Napisati PROLOG predikat koji za zadati broj 𝑛 i datu listu celih brojeva računa sumu brojeva
liste manjih od 𝑛 i sumu brojeva liste većih od 𝑛. Na primer:
deljenje([1, 6, 3, 7, 8],6,X,Y).
X=4
Y=15

Zadatak 9.9. Napisati PROLOG predikat koji spaja dve sortirane liste brojeva u jednu listu, ali u obrnutom
poretku. Na primer:
spajanje([1,4,7,9],[2,3,8,20],A).
A=[20,9,8,7,4,3,2,1].

9)
Zadatak 9.10. Napisati predikat ubaci koji izlistava sve moguće načine ubacivanja elementa u datu listu.

1
ubaci(5,[1,2,3],X).
X=[5,1,2,3]

20
X=[1,5,2,3]
X=[1,2,5,3]

(
X=[1,2,3,5]

je
Zadatak 9.11. Koje vrednosti imaju promenljive X, Y i R nakon unifikacije [1,2,[1,2,3]]=[X,Y|R] ?
an
Zadatak 9.12. Pretpostavimo da su definisani predikati
paran(2).
paran(4).
izd

dvaparna(X,Y) :- not(X=Y),paran(X),paran(Y).
Šta će vratiti upit ?-dvaparna(X,Y)?

Zadatak 9.13. U PROLOG-u napisati predikat cifre koji prevodi dati broj u listu njegovih cifara u bilo kom
ko

redosledu.

Zadatak 9.14. U PROLOG-u napisati predikat minmax koji računa minimum maksimuma elemanata liste
ns

listi. Na primer, upit


?- minmax([[1,2,3],[3,4,5],[2,3,4]],X)
tro

treba da da rezultat X=3. Ukoliko je potrebno, mogu se pisati i pomoćni predikati.

Zadatak 9.15. U PROLOG-u napisati predikat prebroj koji za datu listu listi proizvodi listu dužina tih listi.
Na primer, upit
ek

?-prebroj([[1,2,3],[1,2],[1]],X).
treba da da odgovor X=[3,2,1].
El

Zadatak 9.16. Napisati PROLOG predikat koji iz liste brojeva izdvaja elemente čiji su indeksi stepeni dvojke.
Pretpostaviti da indeksi počinju od 1. Na primer:
?-izdvoj([5,3,4,1,6,8,9,10,2],X).
X=[5,3,1,10]

Zadatak 9.17. Napisati predikat u PROLOG-u koji kao argument uzima listu brojeva L, i izračunava novu
listu R. Elementi liste R su brojevi iz L koji su deljivi sa 4 i kvadrati brojeva iz L koji su parni a nisu deljivi sa
4.

Zadatak 9.18. Napisati u PROLOG-u predikat razdvoj koji kao argument uzima listu brojeva L, i broj X.
Predikat izračunava dve liste, pri čemu se prva sastoji od elemenata iz L čiji su kvadrati manji od X, a druga
od elemenata iz L čiji su kvadrati veći od X. Na primer:
?-razdvoj([1,2,3,4,5,6,7,8],9,X,Y).
X=[1,2], Y=[4,5,6,7,8]

Zadatak 9.19. U sistemu prirodne dedukcije za logiku prvog reda pokazati ¬𝑆(𝑎), 𝑃 (𝑎) ⇒ 𝑅(𝑎) ∨ 𝑆(𝑎) ⊢
𝑃 (𝑎) ⇒ ∃𝑥𝑅(𝑥).
155 9. PROLOG

U PROLOG-u napisati predikat koji proverava da li su sve cifre datog broja parne. Na primer:
?-parne(123).
false.

Zadatak 9.20. U PROLOG-u napisati predikat selectionsort(X,Y) koji za polaznu listu X gradi sortiranu
listu Y algoritmom šelection sort"(izborom minimalnog elementa). Preporučuje se uvodenje dodatnih predikata
kad je potrebno.

Zadatak 9.21. U PROLOG-u napisati predikat čiji su argumenti lista brojeva i tri broja 𝑎, 𝑏 i 𝑐 koji proverava
da li se u listi pojavljuje broj 𝑏 izmedu brojeva 𝑎 i 𝑐.

Zadatak 9.22. U PROLOG-u napisati predikat koji u listi L pronalazi pojavljivanja liste A i zamenjuje ih
listom B. Na primer:
?-zamena([1,2,3,1,2],[1,2],[4]).
[4,3,4]

9)
Zadatak 9.23. Napisati predikat rotiraj koji ciklično pomera elemente liste ulevo za N mesta. Pretpostaviti
da N nije veće od dužine liste.

1
?-rotiraj([1,2,3,4,5],3,X).

20
X=[4,5,1,2,3].

Zadatak 9.24. Napisati predikat palindrom koji proverava da li je data lista palindrom.

(
?-palindrom([1,2,3,2,1]).
Yes.
je
Zadatak 9.25. Napisati program koji za dati broj formira listu njegovih prostih delilaca. Na primer:
an
?-delioci(350,X).
X=[2,5,7].
izd

Zadatak 9.26. Napisati PROLOG predikat koji iz liste brojeva izdvaja elemente čiji su indeksi stepeni dvojke.
Pretpostaviti da indeksi počinju od 1. Na primer:
?-izdvoj([5,3,4,1,6,8,9,10,2],X).
X=[5,3,1,10]
ko

Zadatak 9.27. U PROLOG-u napisati predikat koji u listi L pronalazi pojavljivanja liste A i zamenjuje ih
listom B. Na primer:
ns

?-zamena([1,2,3,1,2],[1,2],[4]).
[4,3,4]
tro

Zadatak 9.28. Napisati predikat parni koji za datu listu brojeva izdvaja sve one brojeve čiji je zbir cifara
paran.
ek

?-parni([461, 422, 6, 27, 890, 71, 9, 11, 83], X).


El

X = [422, 6, 71, 11]

Zadatak 9.29. Napisati predikat parne_niske koji za datu listu brojeva odreduje listu podniski konstantne
parnosti.

?-parni([1, 4, 6, 2, 2, 7, 9, 11, 8], X).

X = [[1], [4, 6, 2, 2], [7, 9, 11], [8]]

Zadatak 9.30. Da bi se napravio LED televizor potrebno je napraviti pripremiti različite delove. U bazi
podataka nalaze se podaci šta od čega zavisi, tj. koji delovi su potrebni da bi se napravio neki drugi deo.
Recimo:

zavisi(LCD_panel, ekran).
zavisi(osvetljenje, ekran).
zavisi(prikljucak_za_struju, napajanje).
...
9.8. Primeri rešavanja problema primenom PROLOG-a 156

Napisati prolog predikat listaPreduslova(Deo) koji za dati deo formira listu svih potrebnih delova.
Napisati PROLOG predikat redosled(ListaDelova, Redosled) koji ispituje da li postoji i pronalazi ako
postoji ispravne redoslede za delova da bi se kompletirao ceo televizor.
Zadatak 9.31. U bazi podataka date su činjenice oblika
predmet(ime_predmeta, kategorija)
gde je sa kategorija označeno da li predmet pripada grupi programerskih ili matematičkih predmeta. Na
primer:
predmet(programiranje2, prog).
predmet(analiza1, mat).
predmet(linAlgebra, mat).
...
Napisati predikat grupa(G, L) koji za datu kategoriju G pravi listu L svih predmeta koji toj grupi pripadaju.
Zadatak 9.32. Napisati predikat izbaci(L1, L2, L) koja iz liste L1 izbacuje sve elemente koji se pojavljuju

9)
u listi L2 i rezultat smešta u L.

1
Zadatak 9.33. Napisati predikat pozneg koji za datu listu brojeva izračunava koliko se podniski kontstantnog
znaka javlja u toj nisci.

20
?-pozneg([1,2,-2,-6,-3,5,-2,-3],X).

(
X=4.

?-pozneg([1,2,2,-6,3,-5,4],X).
je
an
X=5.
izd


Zadatak 9.34. Važi sledeće:
Janko ima psa.
Svaki vlasnik psa voli životinje.
Nijedna osoba koja voli životinje ne može da udari životinju.
ko

Janko ili Marko su udarili mačku čije je ime Tuna.


Svaka mačka je životinja.
ns

U PROLOG-u zapisati činjenice i predikate pomoću kojih se može utvrditi ko je udario Tunu.

Definisati predikat koji izračunava sumu prvih N prirodnih brojeva.
tro

Zadatak 9.35.

Zadatak 9.36. Definisati predikat koji izračunava sumu cifara datog broja.

Definisati predikat koji izračunava N-ti stepen zadatog broja.
ek

Zadatak 9.37.

Zadatak 9.38. Definisati predikat koji obrće cifre broja.
El


Zadatak 9.39. Definisati predikat koji izračunava najveći zajednički delilac dva broja.

Zadatak 9.40. Definisati predikat koji proverava da li je broj prost.

Zadatak 9.41. Definisati predikat koji izračunava sumu elemenata liste.

Zadatak 9.42. Definisati predikat koji obrće listu.

Zadatak 9.43. Definisati predikat koji dodaje element na kraj liste.

Zadatak 9.44. Definisati predikat koji proverava da li se tri zadata elementa nalaze na uzastopnim pozi-
cijama u listi.

Zadatak 9.45. Definisati predikat koji konstruiše listu koja se sastoji od prvih 𝑛 elemenata zadate liste.

Zadatak 9.46. Definisati predikat koji deli datu listu brojeva na listu negativnih i nenegativnih elemenata.

Zadatak 9.47. Definisati predikat koji deli datu listu na dve na sve moguće načine.

Zadatak 9.48. Definisati predikat koji ispisuje sve podliste date liste.
157 9. PROLOG


Zadatak 9.49. Definisati predikat koji iz date liste briše sva ponavljanja elemenata.

Zadatak 9.50. Definisati predikat koji nalazi uniju dve liste.

Zadatak 9.51. Definisati predikat koji nalazi presek dve liste.

Zadatak 9.52. Definisati predikat koji nalazi razliku dve liste.

Zadatak 9.53. Definisati predikat koji nalazi simetričnu razliku dve liste.
Zadatak 9.54. Napisati predikat u PROLOG-u koji kao argument uzima listu listi L i proverava da li liste iz
L čine grejov kod.
?-grejovkod([[0,0],[0,1],[1,1],[1,0]]).
true.
?-grejovkod([[0,0]]).
false.

1 9)
( 20
je
an
izd
ko
ns
tro
ek
El
El
ek
tro
ns
ko
izd
an
je
(20
19)
Deo III

9)
Mašinsko učenje i induktivno zaključivanje

1
20
(
je
an
izd
ko
ns
tro
ek
El
El
ek
tro
ns
ko
izd
an
je
(20
19)
Glava 10

Uvod u mašinsko učenje

9)
Mašinsko učenje je oblast veštačke inteligencije koja se može definisati na različite načine. Jedna defini-
cija kaže da je to disciplina koja se bavi izgradnjom prilagodljivih računarskih sistema koji su sposobni da
poboljšavaju svoje performanse koristeći informacije iz iskustva. Mašinsko učenje može se definisati i kao di-

1
sciplina koja se bavi proučavanjem generalizacije i konstrukcijom i analizom algoritama koji generalizuju. Prva

20
definicija bliža je inženjerskom i praktičnom računarskom načinu razmišljanja sa akcentom na rešavanju kon-
kretnih problema i implementaciji rešenja. Druga definicija bliža je matematičkom razmišljanju i statistici. Mi

(
se nećemo ograničiti na samo jedan od njih. Mašinsko učenje teži da se približi ljudskom učenju po efikasnosti,
kao i da ga objasni, to jest, pruži teorijski model za njega. Naravno, oba cilja su za sada daleko od ostvarenja
je
u punom smislu, ali su uspesi u rešavanju pojedinačnih praktičnih problema u mnogim slučajevima impresivni.
Neka od najvažnijih pitanja kojima se bavi mašinsko učenje su:
an
• Šta se može naučiti i pod kojim uslovima?
izd

• Kako se povećava efikasnost učenja u zavisnosti od obima iskustva?

• Koji su algoritmi pogodni za koje vrste problema?

Odgovore na ova pitanja treba tražiti kako kroz teorijske modele učenja u okviru kojih se u ovom pogledu
ko

već došlo do značajnih rezultata, tako i kroz eksperimentalnu evaluaciju algoritama na podacima iz realnih
problema.
ns

10.1 Primeri primena mašinskog učenja


tro

Mašinsko učenje uspešno se primenjuje u mnoštvu praktičnih problema. Jedan od najstarijih, a još uvek
zanimljivih praktičnih rezultata postignut je od strane sistema ALVINN zasnovanog na neuronskoj mreži, krajem
ek

osamdesetih godina dvadesetog veka, koji je naučen da vozi javnim putem u prisustvu drugih vozila bez ljudske
pomoći brzinom od oko 110km/h. Uspešno je vozio na putu dužine oko 140km. Sa razvojem dubokih neuronskih
mreža, sredinom prve decenije ovog veka, projekat razvoja autonomnog vozila je dobio novi zamah. Pod okriljem
El

kompanije Gugl X, u toku je razvoj vozila koje treba da bude u stanju da samostalno učestvuje u gradskoj vožnji,
koja je značajno komplikovanija od vožnje na auto putu. Izazovi za tehnike mašinskog učenja u ovom problemu
uključuju kako prepoznavanje puta i učesnika u saobraćaju, tako i donošenje odluka. Slične metode se u istoj
kompaniji uspešno koriste i za učenje upravljanja kvadrotorima (malim letilicama sa četiri propelera) u cilju
prenošenja predmeta ili pošiljki. Kompanija Amazon razmatra mogućnost ovakvog načina dostavljanja svojih
pošiljki u gradskim sredinama.
Jedan od najpoznatijih ranih primera primene mašinskog učenja je i sistem TD-Gammon za igranje igre
Backgammon konstruisan devedesetih godina. Igrajući protiv sebe više od milion partija i nastavljajući da uči
u igri sa ljudskim igračima, dostigao je nivo igre u rangu svetskog šampiona. Na sličnim principima, ali koristeći
modernije algoritme učenja konstruisan je sistem AlfaGo koji je 2015. i 2016. ubedljivo pobedio evropskog, a
zatim i svetskog šampiona u igri go. Ova igra je poznata kao jedan od, do sada, najozbiljnijih izazova veštačkoj
inteligenciji u domenu igranja igara, pošto po broju mogućih stanja daleko prevazilazi i šah, što drastično otežava
primenu tradicionalnih tehnika veštačke inteligencije poput algoritma minimaks sa alfa-beta odsecanjem.
Kompanije poput Amazona, koje se bave prodajom različitih artikala, odavno koriste sisteme koji na osnovu
primera kupovnih transakcija korisnika uče kako da budućim korisnicima preporučuju proizvode koji bi ih
mogli zanimati. Ovakvi sistemi, i odgovarajući algoritmi učenja, nazivaju se sistemima za preporučivanje
(eng. recommender system).

161
10.2. Pojam generalizacije 162

Sistemi za prepoznavanje govora takode koriste mašinsko učenje u nekoj formi. Sistem Sphinx, takode
iz kraja osamdesetih, bio je u stanju da prepozna izgovorene reči uz prilagodavanje izgovoru različitih ljudi,
različitim karakteristikama mikrofona, pozadinskoj buci i slično. Na Univerzitetu u Kembridžu je poslednjih
godina razvijen dijaloški sistem koji je u stanju da preko telefona vodi razgovor sa korisnicima u cilju preporuke
restorana i drugih objekata u skladu sa preferencama korisnika.
Mašinsko učenje ima velike primene u obradi slika. Jedna od njih je prepoznavanje objekata na slikama
ili čak u video zapisu. Trenutno se razvijaju sistemi koji uče da prepoznaju predmete u realnom vremenu na
osnovu instrukcija korisnika.
Sveprisutnost društvenih mreža dala je veliki impuls razvoju metoda mašinskog učenja nad grafovima.
Društvena mreža može se razmatrati kao graf čiji čvorovi predstavljaju učesnike mreže, a grane postoje izmedu
učesnika koji su povezani u mreži (poput prijateljstva na mreži Fejsbuk). Pojam društvene mreže nije ograničen
na mreže na internetu, već se odnosi i na bilo kakav vid povezanosti ljudi u realnom životu. Metode mašinskog
učenja se u ovom kontekstu koriste za predvidanje budućih veza medu učesnicima, recimo prilikom preporučivanja
učesnicima mreže sa kime se mogu povezati. Takode, razvijene su i metode za otkrivanje postojećih, ali ne-
opaženih veza u društvenim mrežama. Osnovna motivacija za razvoj ovih metoda je otkrivanje povezanosti u
terorističkim i kriminalnim mrežama.

1 9)
10.2 Pojam generalizacije

20
Deduktivno zaključivanje, vodeno zakonima logike, može se smatrati osnovnom karakteristikom inteligentnog
ponašanja. Ovakvo zaključivanje jedan je od osnovnih načina zaključivanja kod ljudi. Druga karakteristika

(
inteligentnog ponašanja koja se može primetiti i kod životinja je prilagodavanje ponašanja jedinke okolini u kojoj
se ona nalazi. Kroz evolutivne procese, prilagodljivost se postiže i kod nižih organizama, ali je ova sposobnost
je
sa tačke gledišta veštačke inteligencije posebno zanimljiva kod životinja i ljudi kod kojih se manifestuje u
toku života jedinke. Kod njih se prilagodavanje postiže učenjem na osnovu primera iz iskustva i primenom
an
naučenog znanja u sličnim situacijama u budućnosti. Primera radi, za živi organizam je značajno da uoči ključne
karakteristike neke situacije ili skupa situacija u kojima preduzimanje neke akcije dovodi do poželjnih odnosno
nepoželjnih posledica po organizam. Prepoznavanje sličnih situacija u budućnosti omogućava organizmu da
izd

preduzimanjem adekvatne akcije u situaciji u kojoj se nalazi predupredi ishode nepovoljne po njega ili dovede
do ishoda koji su za njega povoljni. Apstraktnije razmatrano, moguće je govoriti o donošenju zaključaka o
nepoznatim slučajevima, na osnovu znanja o nekim drugim, poznatim, slučajevima. Proces u kojem se znanje
koje važi za neki skup slučajeva prenosi na neki njegov nadskup, naziva se generalizacijom ili induktivnim
ko

zaključivanjem. Generalizacija predstavlja jedan od osnovnih koncepata mašinskog učenja.


Da bi generalizacija bila uspešna, odredeni aspekti entiteta o kojima se rezonuje moraju biti zanemareni
ns

ukoliko nisu od suštinskog značaja za generalizaciju. Primera radi, ukoliko je potrebno naučiti veštački sistem
da prepoznaje rukom pisani tekst i da ga prevodi u elektronski tekstualni zapis, potrebno je da sistem zanemari
tro

specifičnosti rukopisa različitih ljudi. Proces generalizacije, medutim, ne pruža garancije da su dobijeni zaključci
uvek ispravni. Sistem koji prepoznaje rukom pisani tekst bi na osnovu nekoliko zadatih primera mogao da
zaključi da se cifra 1 zapisuje podvučeno crticom, ali takav, induktivni zaključak ne bi bio korektan i sistem ne
ek

bi bio u stanju da prepozna cifru 1 zapisanu bez takve crtice.


Za razliku od deduktivnog zaključivanja, zaključci dobijeni induktivnim zaključivanjem i generalizacijom,
kao što je rečeno, ne moraju biti uvek tačni. I pored toga, induktivno zaključivanje je i dalje veoma značajno,
El

a nekad i jedino moguće. To je jedan od osnovnih načina za formiranje predstava o okruženju, situacijama
ili uzročno posledičnim odnosima ili formalnije rečeno — za pravljenje modela zakonitosti u podacima iz is-
kustva. Ukoliko su u nekom domenu greške u zaključivanju prihvatljive, algoritmi induktivnog zaključivanja
omogućavaju zaključivanje i bez temeljnog poznavanja i kompletnog formalnog opisivanja domena na koji se
primenjuju.

10.3 Primer problema učenja


Pretpostavimo da je potrebno napraviti specijalizovani pretraživač interneta koji omogućuje korisnicima
da pretražuje samo računarske članke. Dakle, sistem treba da bude u stanju da razlikuje članke iz oblasti
računarstva od svih ostalih članaka, što predstavlja problem klasifikacije. Kako bi sistem naučio ispravno da
klasifikuje, najpre mu je potreban odredeni skup primera koji sadrži kako računarske, tako i članke iz drugih
oblasti. Neka je unapred sakupljeno 3000 članaka — po 1500 iz obe klase. Iz obe klase je izdvojeno po 500
članaka kako bi se nakon učenja mogao proceniti kvalitet sistema.
Da bi bilo sprovedeno učenje, potrebno je raspoložive članke predstaviti u nekom obliku koji je pogodan za
algoritam učenja i koji bi mogao da na neki način sažme osnovne karakteristike na osnovu kojih se članci iz ove
dve kategorije mogu razlikovati. Očekivano je da će u člancima iz računarstva biti češće pominjani računarski
163 10. Uvod u mašinsko učenje

0 0

9)
Slika 10.1: Plavi krugovi predstavljaju računarske članke, a crveni ostale. X koordinata predstavlja frekven-
ciju reči „računar“, a koordinata Y predstavlja frekvenciju reči „datoteka“. Na slici desno, osim krugova koji
predstavljaju članke, prikazana je i prava koja ih razdvaja

1
20
pojmovi nego u ostalim člancima. To svojstvo bi se moglo iskoristiti za razlikovanje članaka. U skladu sa

(
ovim, mogu se nabrojati sve reči iz nekog rečnika računarske terminologije. Svaki članak može biti predstavljen
vektorom frekvencija ovih reči (frekvencija neke reči u članku se računa tako što se broj pojavljivanja te reči
je
podeli ukupnim brojem pojavljivanja svih reči u članku). Ako je 𝑥 vektor koji odgovara nekom članku, onda će
𝑥𝑖 označavati frekvencije izabranih reči.
an
Opisani vektori frekvencija se mogu razmatrati geometrijski, kao da su tačke u euklidskom prostoru. Jed-
nostavnosti radi, neka se u rečniku nalaze samo dve reči — „računar“ i „datoteka“. Ukoliko su u člancima iz
izd

jedne kategorije ovi računarski termini visokofrekventni, a u drugim niskofrekventni, tačke koje odgovaraju
računarskim člancima će se grupisati dalje od koordinatnog početka, dok će se ostale grupisati bliže njemu.
Pojednostavljena ilustracija data je na slici 10.1 (levo).
Izmedu crvenih i plavih tačaka možda postoji prava koja ih razdvaja, kao na slici 10.1 (desno). Ako je ova
ko

prava poznata, onda neki nov, nepoznat članak može biti prepoznat kao članak iz oblasti računarstva ukoliko
se vektor koji mu odgovara nalazi sa iste strane prave kao i vektori računarskih članaka koji su nam poznati. U
ns

suprotnom, smatra se da članak nije iz oblasti računarstva.


Neka je 𝑦 promenljiva za koju važi 𝑦 = 1 za članak iz oblasti računarstva, a 𝑦 = −1, inače. Neka je prava
koja razdvaja tačke koje odgovaraju računarskim člancima od onih koje odgovaraju ostalim člancima data
tro

jednačinom:
𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 = 0
ek

gde 𝑥1 označava frekvenciju reči „računar“, a 𝑥2 frekvenciju reči „datoteka“. Očigledno, znak funkcije 𝑤1 𝑥1 +
𝑤2 𝑥2 + 𝑤3 pruža informaciju sa koje strane prave se nalazi tačka (𝑥1 , 𝑥2 ).
El

Pronalaženje željene prave može se izvesti kroz pomeranje neke polazne prave dok ona ne bude pozicioni-
rana izmedu tačaka koje treba da razdvaja. Da bi se odredila takva razdvajajuća prava, potrebno je odrediti
koeficijente 𝑤1 , 𝑤2 i 𝑤3 takve da znak promenljive 𝑦 i znak vrednosti 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 budu jednaki ili, makar,
jednaki u većini slučajeva. Potrebno je formulisati algoritam učenja koji će na osnovu raspoloživih podataka
doći do tih koeficijenata. Jedan takav algoritam dat je na slici 10.2.
Ne mora biti očigledno da ažuriranje koeficijenata u predloženom algoritmu vodi poboljšanju naučene funk-
cije. Pre svega, vrednost 𝜂 mora biti mala kako bi korekcije bile male i postepene. Vrednosti 𝑥1 i 𝑥2 su uvek
nenegativne i stoga znak korekcije zavisi od razlike izmedu vrednosti 𝑦 i 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 . Ukoliko je vrednost
𝑦 veća, povećavaju se koeficijenti, čime se i vrednost 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 povećava. Analogno u slučaju da je
vrednost 𝑦 manja. Kad razlike nema, vrednost korekcije je 0. Stoga, ovim se vrednosti 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3
približavaju vrednostima 𝑦. Te korekcije proporcionalne su vrednostima 𝑥1 i 𝑥2 , odnosno veće su za koeficijente
čija promena može više doprineti promeni vrednosti 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 za dati primer. Ovaj postupak liči na
gradijentni spust kojim se minimizuje srednjekvadratno odstupanje vrednosti 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 od vrednosti 𝑦
za sve instance.1
1 U pitanju je stohastički gradijentni spust, koji se od pravog gradijentnog spusta razlikuje po tome što se gradijent računa na

jednoj instanci, a ne na celom trening skupu, a predložena metoda je varijanta linearne diskriminantne analize, koja je uopštenje
metoda koji je predložio Ronald Fišer, jedan od otaca moderne statistike, evolutivni biolog i genetičar.
10.4. Nadgledano i nenadgledano učenje 164

Algoritam: Algoritam za klasifikaciju članaka

Ulaz: Trening skup 𝑇 , brzina učenja 𝜂 i preciznost 𝜀


Izlaz: Koeficijenti (𝑤1 , 𝑤2 , 𝑤3 )
1: postavi 𝑤 na (0, 0, 0);
2: ponavljaj
3: postavi 𝑤′ na 𝑤;
4: za svaku instancu (𝑥1 , 𝑥2 , 𝑦) ∈ 𝑇 radi
5: uvećaj 𝑤1 za 𝜂(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦)𝑥1 ;
6: uvećaj 𝑤2 za 𝜂(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦)𝑥2 ;
7: uvećaj 𝑤3 za 𝜂(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦);
8: dok nije ispunjen uslov |𝑤 − 𝑤′ | ≤ 𝜀;
9: vrati 𝑤 kao rešenje.

9)
Slika 10.2: Algoritam za klasifikaciju članaka.

1
20
Kada su koeficijenti 𝑤1 ,𝑤2 i 𝑤3 odredeni, za novi, nepoznat članak dovoljno je proveriti sa koje strane
prave se nalazi njegov vektor frekvencija reči, odnosno da li je znak vrednosti 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 jednak znaku

(
promenljive 𝑦.
je
Kada je učenje završeno, poželjno je proceniti koliko se sistem dobro ponaša. Na početku je bilo izdvojeno
1000 članaka koji sad mogu biti klasifikovani. Kad su članci klasifikovani, kao mera kvaliteta učenja može se
an
izračunati udeo dobro klasifikovanih članaka u ukupnom broju članaka. Poželjno je da je on što veći.
izd

10.4 Nadgledano i nenadgledano učenje


Koliko god primene mašinskog učenja bile raznovrsne, postoje odredene zajedničke karakteristike zadataka i
procesa učenja koje se često sreću. Postoje dva glavna vida problema učenja: nadgledano učenje (eng. supervised
ko

learning) i nenadgledano učenje (eng. unsupervised learning)) (koja se ne odnose na iste vrste zadataka).
Nadgledano učenje odnosi se na situacije u kojima se algoritmu, zajedno sa podacima iz kojih uči, daju
ns

i željeni izlazi, to jest vrednosti takozvane ciljne promenljive. Algoritam treba da nauči da za date podatke
pruži odgovarajuće izlaze. Očekuje se i da izlazi dati za podatke na kojima nije vršeno učenje, takode budu
dobri. Primer problema sa nadgledanim učenjem je problem klasifikacije, verovatno u praksi najčešći zadatak
tro

učenja. Problem klasifikacije predstavlja problem prepoznavanja vrste objekata. Na primer, da li je članak
računarski ili nije, da li odredeno elektronsko pismo predstavlja neželjenu poštu (eng. spam) ili ne. Drugi
primer nadgledanog učenja je problem regresije, zadatak učenja u kojem objektima treba pridružiti vrednosti
ek

iz skupa realnih brojeva. Na primer, predvidanje dužine života osobe u zavisnosti od njenih životnih navika
(bavljenje sportom, pušenje i slično).
El

Nenadgledano učenje odnosi se na situacije u kojima se algoritmu koji uči pružaju samo podaci bez izlaza.
Od algoritma koji uči očekuje se da sam uoči neke zakonitosti u podacima koji su mu dati. Primer nenadgledanog
učenja je takozvano klasterovanje – uočavanje grupa na neki način sličnih objekata kada ne postoji prethodno
znanje o tome koliko grupa postoji ili koje su njihove karakteristike. Jedan primer primene klasterovanja je
redukcija skupa boja slike. Pikseli slike se mogu grupisati klasterovanjem po njihovoj blizini u RGB prostoru
boja, a potom se iz svakog klastera može izabrati po jedna boja koja bi ga predstavljala i kojom bi bili obojeni
svi pikseli koji pripadaju tom klasteru.

10.5 Modeli zakonitosti u podacima


Proces učenja može se razmatrati kao proces pronalaženja zakonitosti u podacima ili, preciznije, zavisnosti
medu promenljivim. Kako bi se učenje moglo automatizovati, potrebno je da forma tih zavisnosti bude mate-
matički definisana. Matematičke reprezentacije zavisnosti medu promenljivim nazivamo modelima. Ovaj pojam
je vrlo blizak pojmu modela u empirijskim naukama, koji takode ustanovljava zavisnosti izmedu veličina koje
su relevantne za proučavani fenomen (na primer, izmedu brzine, puta i vremena).
U slučaju prepoznavanja računarskih članaka, model je bila funkcija 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 koja je pridruživala
1 svim tačkama sa jedne strane prave, a −1 tačkama sa druge. Ova funkcija izražava zavisnosti izmedu pro-
165 10. Uvod u mašinsko učenje

menljivih 𝑥1 , 𝑥2 i 𝑦. U primeru klasterovanja piksela, model opisuje zavisnost izmedu hromatskih komponenti
piksela i grupe, odnosno klastera, kojem piksel pripada.
Obično modeli koji se razmatraju imaju odredenu unapred definisanu formu i moguće je uočiti skup do-
pustivih modela. Na primer, u primeru prepoznavanja računarskih članaka, koristi se skup {𝑤1 𝑥1 + 𝑤2 𝑥2 +
𝑤3 | 𝑤1 , 𝑤2 , 𝑤3 ∈ R}. Forme modela mogu biti raznovrsne. Mogu predstavljati pravila oblika IF...THEN,
linearne funkcije atributa, linearne funkcije instanci iz trening skupa i tako dalje.
U slučaju nadgledanog učenja, pronalaženje modela koji najbolje aproksimira ciljnu promenljivu možemo
razumeti kao pretragu skupa dopustivih modela koja je vodena podacima, a koju realizuje algoritam učenja.
Slično je u slučaju nenadgledanog učenja. U tom slučaju ne postoji ciljna promenljiva, već je potrebno naći
model koji je najbolji u odnosu na neki unapred zadati kriterijum, recimo da objekti iz istog klastera budu
medusobno blizu, a daleko od objekata koji pripadaju drugim klasterima. Stoga se algoritmi učenja mogu
smatrati algoritmima pretrage, ali u skupu dopustivih modela, pri čemu je uloga podataka iz iskustva nov
element koji nije bio prisutan u ranije izloženim opštim pristupima pretrazi.
Izbor skupa dopustivih modela je od fundamentalnog značaja za kvalitet učenja. Ukoliko ovaj skup nije
dovoljno bogat, onda učenje može biti samo približno. To je u praksi najčešći slučaj i često je dovoljno dobro.
Naizgled paradoksalno, preterano bogatstvo skupa dopustivih modela po pravilu dovodi do lošijih rezultata.

9)
Ovaj fenomen biće diskutovan u delu 11.1.

1
10.6 Podaci

20
Jedna od definicija mašinskog učenja koje su navedene kaže da se mašinsko učenje bavi generalizacijom,

(
odnosno zaključivanjem o nepoznatim objektima, na osnovu poznatih objekata. Umesto termina objekat, češće
se koristi termin instanca ili primerak. U slučaju prepoznavanja računarskih članaka, instanca je jedan članak.
je
Instance će biti u računaru predstavljene pomoću nekih podataka koji ih opisuju.
an
10.6.1 Reprezentacija podataka
izd

Instance treba da budu zapisane u obliku koji je pogodan za primenu algoritama učenja. Najpogodniji i
najčešće korišćeni način koji se koristi u algoritmima mašinskog učenja je predstavljanje instanci pomoću nekih
njihovih svojstava, odnosno atributa (eng. feature, attribute). Svojstva ili atributi predstavljaju karakteristike
instanci kao što su boja, veličina, težina i slično. Svaki od izabranih atributa može imati vrednost koja pripada
ko

nekom unapred zadatom skupu. Te vrednosti su često numeričke, kao u slučaju težine koja je skalarna veličina
i koja se najbolje opisuje brojem. Primer numeričke vrednosti može biti i frekvencija reči u nekom članku, kao
što je to bio slučaj u primeru sa klasifikacijom članaka. Atributi takode mogu biti i kategorički, odnosno mogu
ns

predstavljati imena nekih kategorija kojima se ne mogu jednoznačno dodeliti smislene numeričke vrednosti ili
uredenje. Primer kategoričkog atributa može biti grad u kome osoba živi, pol, nacionalnost i slično. U slučaju
tro

prepoznavanja računarskih članaka, oznaka klase koju treba pogoditi — 1 za računarske članke i −1 za ostale je
takode kategorička vrednost, iako je predstavljena brojem, pošto se radi o dve kategorije za koje su ovi brojevi
proizvoljno izabrani.
ek

Skup atributa koji će se koristiti u zapisu instance generalno nije unapred zadat, već ga je potrebno odabrati
u skladu sa time koje su karakteristike instanci bitne za dati problem učenja. Primera radi, ako je potrebno
razlikovati članke o operativnim sistemima od članaka o bazama podataka, poznavanje frekvencija reči „računar“
El

i „datoteka“ ne nosi korisnu informaciju pošto su ove reči zastupljene u obe kategorije. Stoga te atribute nema
svrhe koristiti u ovom problemu učenja. S druge strane, reči „proces“ i „indeks“ nose više informacija pošto su
uže specifične za pomenuta polja. Ukoliko je potrebno razlikovati računarske članke od drugih vrsta članaka,
izbor atributa bi mogao da bude upravo suprotan pošto reči „proces“ i „indeks“ mogu imati i drugačija značenja
od onih koja im se pridružuju u računarskoj terminologiji. Postoje i metode za automatski izbor podskupa
atributa iz nekog šireg skupa koje su najrelevantnije za dati problem učenja, ali one neće biti opisane. Već iz
ovog pojednostavljenog razmatranja može se nazreti važan zaključak — dobar izbor atributa od presudnog je
značaja za kvalitet učenja. Ako su atributi dobro izabrani, često i jednostavni algoritmi učenja mogu postići
dobre rezultate. S druge strane, ako su atributi neinformativni, ni od najnaprednijih algoritama učenja ne može
se očekivati mnogo.
Kada su izabrani atributi pomoću kojih se instance opisuju, svaka instanca može se predstaviti vektorom
vrednosti atributa koje joj odgovaraju.

10.6.2 Podaci za trening i podaci za testiranje


Učenje uvek polazi od nekih podataka. Podaci na osnovu kojih se vrši generalizacija, nazivaju se podacima
za trening, a njihov skup trening skup. Testiranje naučenog znanja na podacima na osnovu kojih je učeno obično
10.7. Izbori u dizajnu sistema koji uči 166

dovodi do značajno boljih rezultata od onih koji se mogu kasnije dobiti u primenama. Stoga je pre upotrebe
potrebno proceniti kvalitet naučenog znanja. To se obično radi tako što se razmatra koliko je naučeno znanje
kvalitetno u odnosu na neke unapred date podatke za testiranje. Podaci za testiranje čine test skup. Test skup
treba da bude disjunktan sa trening skupom.
Često se prilikom konstrukcije sistema koji uključuje učenje raspolaže ograničenom količinom podataka koja
se mora upotrebiti u obe svrhe. Jedan od standardnih načina je da se jedna trećina, ili neki blizak procenat,
izdvoji unapred za testiranje, a da se trening vrši na ostatku. Takva podela je bila korišćena i u primeru
prepoznavanja računarskih članaka. Obično se ova podela vrši slučajnim izborom skupa za testiranje. Naravno,
kako različite podele na trening i test skup mogu uroditi različitim rezultatima, slučajno deljenje nije najbolji
način formiranja trening i test skupa, osim u slučaju ogromne količine podataka. U drugim slučajevima se
koristi tehnika unakrsne validacije (eng. cross-validation) o kojoj će biti reči kasnije.

10.7 Izbori u dizajnu sistema koji uči


Zahvaljujući svom brzom razvoju, oblast mašinskog učenja značajno se razgranala, ali i dalje postoje
odredene karakteristike rešavanja problema učenja koje su zajedničke za većinu pristupa. Jedna od bitnih

9)
zajedničkih odlika je način dizajniranja sistema koji uči. Elementi dizajna su već pomenuti u prethodnim
poglavljima, a sumirani su u nastavku:

1
20
• Prepoznavanje formulacija problema učenja (nadgledano ili nenadgledano učenje);
• Izbor atributa;

(
• Izbor forme modela zakonitosti u podacima, odnosno skupa dopustivih modela;
je
• Izbor postojećeg ili razvoj novog algoritma učenja koji odgovara datom problemu;
an
• Izbor mera kvaliteta učenja.

Sada je moguće sumirati kako su navedeni elementi bili izabrani u slučaju prepoznavanja računarskih članaka.
izd

Primer 10.1.

• 3000 članaka je razvrstano u dve unapred fiksirane kategorije (računarski i ostali), tako da je zadatak
ko

učenja bio formulisan kao zadatak nadgledanog učenja.


• Svaki članak je predstavljen vektorom frekvencija reči iz nekog rečnika računarske terminologije i vrednošću
ns

ciljne promenljive (1 ili −1 u zavisnosti od toga da li je članak iz oblasti računarstva).


• Modeli su funkcije koje odgovaraju pravim u dvodimenzionalnom prostoru i pridružuju 1 tačkama sa jedne
tro

strane prave, a −1 tačkama sa druge strane. Imaju linearnu formu sa koeficijentima 𝑎, 𝑏 i 𝑐.


• Algoritam učenja je formulisan nalik gradijentnom spustu za minimizaciju odstupanja izmedu vrednosti
ek

ciljne promenljive i vrednosti predvidenih modelom na datim primerima.


• Za meru kvaliteta učenja uzet je udeo tačno klasifikovanih članaka.
El

U daljem tekstu biće diskutovano nadgledano i nenadgledano mašinsko učenje. Za obe vrste biće izložene
neke metode mašinskog učenja kojima se rešavaju neki tipični problemi koji odgovaraju tim vrstama učenja.
Takode, uz izlaganje metoda, biće diskutovani i razni bitni koncepti mašinskog učenja.
Glava 11

Nadgledano mašinsko učenje

9)
Nadgledano mašinsko učenje karakteriše se time da su za sve podatke poznate vrednosti ciljne promenljive.
Većina problema koji odgovaraju ovoj formulaciji može se svrstati u jednu od dve grupe — probleme regresije
i probleme klasifikacije. O obe grupe će biti više reči u nastavku. Uprkos velikoj raznovrsnosti problema

1
i algoritama za njihovo rešavanje, vremenom je uočena jedna opšta shema dizajna algoritama nadgledanog

20
učenja koja pruža kako smernice za dizajn novih algoritama, tako i mogućnost objedinjenog razmatranja mnogih
postojećih metoda kao instanci te sheme. Stoga će u nastavku prvo biti reči o dizajnu algoritama nadgledanog

(
učenja uopšte.

11.1 Dizajn algoritama nadgledanog učenja je


an
Prilikom dizajna algoritama nadgledanog učenja moguće je osloniti se na jednu shemu dizajna koja se sastoji
u preciziranju niza detalja formulacije problema i algoritma učenja. Treba imati u vidu da nisu svi algoritmi
izd

nadgledanog učenja instance ove sheme (ti koji nisu su često stariji algoritmi, ali mnogi su i dalje u aktivnoj
upotrebi). S druge strane, mnogi od najvažnijih algoritama nadgledanog učenja jesu instance ove sheme. Neki
od tih važnih algoritama su linearna i logistička regresija (eng. linear regression, logistic regression), neuronske
mreže (eng. neural networks), metoda potpornih vektora (eng. support vector machines) i uslovna slučajna polja
ko

(eng. conditional random fields).


Ključni korak prilikom dizajna algoritma nadgledanog učenja (u nastavku samo učenja) je izbor forme
modela. Formu modela potrebno je odabrati tako da odgovara strukturi fenomena koji se tim modelom opisuje.
ns

Primera radi, model oblika


𝑚
tro

∑︁
𝑓 (𝑥, 𝑤) = 𝑤𝑖 𝑥𝑖
𝑖=1

gde je 𝑚 broj atributa, izražava linearnu zavisnost vrednosti ciljne promenljive od atributa 𝑥𝑖 pri kojoj jedinično
ek

uvećanje vrednosti atributa 𝑥𝑖 uvećava vrednost ciljne promenljive za 𝑤𝑖 (pri tome, 𝑤𝑖 može biti i negativno).
Ukoliko takve zavisnosti približno važe u razmatranom fenomenu, takav model je adekvatan. U suprotnom,
El

može biti upotrebljiv, ali verovatno vredi uložiti trud u formulisanje boljeg modela. Primetimo da je model
obično u potpunosti odreden nekim skupom koeficijenata, koje ćemo označavati 𝑤.

Primer 11.1. U primeru klasifikacije članaka, forma modela je

𝑓 (𝑥, 𝑤) = 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3

Nakon što je izabrana forma modela, potrebno je izabrati funkciju gubitka čija je uloga da kvantifikuje
razmere greške koju model pravi u odnosu na tačnu vrednost ciljne promenljive. Za datu instancu (𝑥, 𝑦),
funkcija gubitka zavisi od 𝑥, 𝑦 i 𝑤. Na primer, kvadrat razlike predvidene vrednosti 𝑓 (𝑥, 𝑤) i ciljne vrednosti 𝑦

ℓ(𝑥, 𝑦, 𝑤) = (𝑓 (𝑥, 𝑤) − 𝑦)2

predstavlja čest izbor za fukciju gubitka. Naravno, za njenu primenu potrebno je da su nad vrednostima
ciljne promenljive definisane aritmetičke operacije, što ne mora da važi u opštem slučaju. Ipak, tamo gde je
primenljiva, ova funkcija ponaša se intuitivno — velike razlike izmedu predvidene i stvarne vrednosti proizvode
veliku vrednost gubitka, a takode je i matematički pogodna zbog svoje diferencijabilnosti. Zato predstavlja čest
izbor funkcije gubitka, iako i u situacijama u kojima je primenljiva ne predstavlja uvek najbolji izbor.

167
11.1. Dizajn algoritama nadgledanog učenja 168

Primer 11.2. U primeru klasifikacije članaka, za funkciju gubitka, izabrana je funkcija:


ℓ(𝑥, 𝑦, 𝑤) = (𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦)2
Kada su definisani forma modela i funkcija gubitka, nije teško formulisati kriterijume za izbor najboljeg
modela — to je model koji pravi najmanju grešku, to jest, pravi najmanji očekivani gubitak na podacima na
kojima će biti korišćen. Dakle, potrebno je rešiti sledeći problem minimizacije:
min 𝐸(𝑥,𝑦) ℓ(𝑥, 𝑦, 𝑤)
𝑤

gde je 𝐸(𝑥,𝑦) matematičko očekivanje po atributima i ciljnoj promenljivoj. Ovo očekivanje obično se naziva
rizikom ili stvarnim rizikom i označava 𝑅(𝑤). Treba primetiti da je za računanje očekivanja potrebno poznavati
raspodelu promenljivih po kojima se očekivanje računa. U ovom slučaju, radi se o zajedničkoj raspodeli pro-
menljivih 𝑥 i 𝑦, koja u praksi nije poznata. Zato ovaj kriterijum nije lako upotrebiti. Medutim, ono što u praksi
jeste poznato jеste uzorak podataka iz trening skupa. Zbog toga se očekivanje funkcije gubitka aproksimira
njenim uzoračkim prosekom koji se naziva empirijskim rizikom

9)
𝑛
1 ∑︁
𝑅𝑒𝑚𝑝 (𝑤) = ℓ(𝑥𝑖 , 𝑦𝑖 , 𝑤)
𝑛 𝑖=1

1
gde je 𝑛 broj instanci.

20
Primer 11.3. U primeru klasifikacije članaka, empirijski rizik dat je funkcijom:

(
𝑛
1 ∑︁
𝑅𝑒𝑚𝑝 (𝑤) = (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )2
𝑛 𝑖=1
je
Može se dokazati da pod odredenim uslovima vrednosti parametara 𝑤 dobijene minimizacijom empirijskog
an
rizika dobro aproksimiraju vrednosti parametara koje bi bile dobijene minimizacijom stvarnog rizika. Stoga se
vrednosti parametara 𝑤 biraju tako da vrednost empirijskog rizika bude minimalna. Empirijski rizik predstavlja
izd

prosek funkcije gubitka na datim podacima. Kako prosek i suma imaju isti minimum, obično se prilikom mini-
mizacije ne vodi računa o tome da li je izvršeno deljenje brojem instanci. To će biti vidljivo i u minimizacionim
problemima u nastavku. Očigledno, što je empirijski rizik manji, to je prilagodenost modela podacima veća i
obratno. Stoga, vrednost rizika igra ulogu mere prilagodenosti modela podacima.
ko

Nažalost, uslovi pod kojima se minimizacijom empirijskog rizika dobro aproksimira polazni problem nisu
uvek ispunjeni, što znači da princip minimizacije empirijskog rizika ne vodi nužno dobrim rezultatima učenja.
Diskusija ovog problema predstavlja najplodniji aspekt teorije učenja i pruža najdublje uvide u prirodu procesa
ns

generalizacije, ali prevazilazi okvire ove knjige. Ipak, osnovni zaključak može se kratko formulisati — osnovna
prepreka aproksimaciji optimalnih vrednosti parametara, a time i uspešnoj generalizaciji, je preterano bogatstvo
tro

skupa dopustivih modela. Ukoliko je taj skup toliko bogat da u njemu za svaki zamislivi trening skup postoji
model koji je sa njime saglasan, ne postoje garancije za uspešno učenje. I uopšte, što je skup dopustivih modela
bogatiji, to je potrebno više podataka za uspešno učenje. Kako bi ovaj uvid bio jasniji, razmotrićemo dva
ek

ilustrativna primera.
Primer 11.4. Neka je dat trening skup instanci koje predstavljaju članke, od kojih su neki računarski, a neki
El

ne. Taj skup je prikazan na slici 11.1. U tom skupu postoje i neki računarski članci sa niskom frekvencijom
reči iz specifično računarske terminologije, ali i neki članci koji nisu računarski, a ipak imaju visoku frekvenciju
računarskih termina. Ovakvih primera ima malo. U praksi je česta situacija da iz različitih razloga odredeni
broj instanci odstupa od očekivanja.
Pretpostavimo da je forma modela linearna, kao i do sada — 𝑓 (𝑥, 𝑤) = 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 i da su koeficijenti
𝑤 odredeni minimizacijom empirijskog rizika pri čemu je za funkciju gubitka korišćen kvadrat razlike ciljne
i predvidene vrednosti. Slika 11.2 ilustruje takav slučaj. Može se primetiti da model nije saglasan sa svim
instancama, odnosno da postoje računarski članci koji nisu prepoznati i članci koji su prepoznati kao računarski,
a to nisu. Medutim, to ne bi trebalo da bude zabrinjavajuće, pošto je za većinu članaka klasifikacija ispravna.
Članci koji su pogrešno klasifikovani odstupaju od trenda učestalog korišćenja reči računar i datoteka u takvim
člancima, ali ih nema dovoljno da bi sugerisali da i drugi članci u kojima se te reči retko koriste treba da budu
klasifikovani kao računarski.
Slika 11.3 prikazuje klasifikaciju datih podataka korišćenjem modela iz skupa svih polinoma dve promenljive
proizvoljnog stepena, odnosno u slučaju da se za modele koristi sledeća forma:
𝑛 ∑︁
∑︁ 𝑖
𝑓 (𝑥, 𝑤) = 𝑤𝑖𝑗 𝑥𝑗1 𝑥𝑖−𝑗
2
𝑖=0 𝑗=0
169 11. Nadgledano mašinsko učenje

1 9)
( 20
Slika 11.1: Trening skup. Plave tačke označavaju računarske, a crvene ostale članke.

je
an
izd
ko
ns
tro
ek
El

Slika 11.2: Prikaz linearnog modela minimalnog empirijskog rizika. Tačke u ravni za koje model daje pozitivnu
vrednost označene su plavo, a tačke za koje daje negativnu vrednost, označene su crveno.

dok je funkcija gubitka ista. Izabrani model je saglasan sa svim instancama iz trening skupa i stoga je empirijski
rizik jednak nuli. Medutim, zakonitost koju on opisuje ne izgleda uverljivo. Naime, intuitivno je da su računarski
članci koji ne sadrže računarske termine redak izuzetak, a ne da postoje velike oblasti prostora atributa koje
odgovaraju niskim frekvencijama računarskih termina, a ipak se odnose na računarske članke i obratno. Vredi
primetiti i da se u oblasti za koju bi se očekivalo da je plava, nalazi veliki potprostor obojen crvenom bojom,
a u kojem medu trening instancama ne postoji nijedna crvena tačka. Ovakve proizvoljne „zakonitosti“ čine
korišćenje ovakvog modela u predikciji potpuno nepouzdanim i sigurno je da je stvarni rizik daleko veći od nule.

Primer 11.5. Pretpostavimo da je dat trening skup od 20 instanci koje se sastoje od jednog atributa i vrednosti
11.1. Dizajn algoritama nadgledanog učenja 170

1 9)
( 20
Slika 11.3: Polinomski model minimalnog empirijskog rizika. Tačke u ravni za koje model daje pozitivnu
vrednost označene su plavo, a tačke za koje daje negativnu vrednost, označene su crveno.
je
an
ciljne promenljive. Pretpostavimo da je forma modela linearna — 𝑓 (𝑥, 𝑤) = 𝑤1 𝑥 + 𝑤2 i da su koeficijenti 𝑤
odredeni minimizacijom empirijskog rizika, pri čemu je za funkciju gubitka korišćen kvadrat razlike ciljne i
izd

predvidene vrednosti. Slika 11.4 ilustruje takav slučaj. Može se primetiti da model nije u potpunosti saglasan ni
sa jednom instancom, odnosno za svaku trening instancu postoji manja ili veća greška u predvidanju. Odnosno,
jednostavan linearni model nije dovoljno fleksibilan da se može potpuno prilagoditi podacima za trening. S druge
strane, očigledno je da on dobro opisuje opšti linearni trend koji se u podacima vidi i, posebno važno, za očekivati
ko

je da je greška na novim podacima iz iste raspodele bude približno jednaka empirijskom riziku.
Slika 11.5 prikazuje aproksimaciju datih podataka korišćenjem modela ∑︀𝑛 iz skupa svih polinoma proizvoljnog
ns

stepena, odnosno u slučaju da se za modele koristi forma 𝑓 (𝑥, 𝑤) = 𝑖=1 𝑤𝑖 𝑥𝑖 . Izabrani model je saglasan sa
svim instancama iz trening skupa i stoga je empirijski rizik jednak nuli. Medutim, posmatrajući globalni izgled
tro

izabranog modela, vidi se da on ne opisuje nikakvu zakonitost u podacima. Oscilacije koje pravi izmedu tačaka
čine njegovo korišćenje u predikciji potpuno nepouzdanim i sigurno je da je stvarni rizik daleko veći od nule.
ek

Problem koji se u prethodnim primerima javlja proističe upravo iz toga što skup svih polinoma čini previše
bogat skup mogućih modela. Za svaki trening skup može se naći model koji ga savršeno opisuje. Medutim,
El

prilagodavajući se trening podacima do krajnosti, gubi se svaka moć generalizacije. Takav zaključak važi i
za druge previše bogate skupove dopustivih modela, a ne samo za polinome. Ilustrovani fenomen se naziva
preprilagodavanje (eng. overfitting) i predstavlja glavnu opasnost u mašinskom učenju.
U svetlu prethodnog zaključka, teži se ograničavanju bogatstva skupa dopustivih modela, što se može postići
smanjenjem fleksibilnosti forme modela. Primera radi, linearna forma modela sa ograničenim brojem koeficije-
nata se može smatrati nefleksibilnom. Poznato je iz linearne algebre da ukoliko je broj instanci podataka jednak
broju parametara, postoji najviše jedan model koji odgovara podacima (rešenje sistema 𝑛 linearnih jednačina
po 𝑛 nepoznatih, ukoliko to rešenje postoji). Ukoliko je skup podataka veći od broja parametara, u opštem
slučaju, model neće biti saglasan sa podacima.
Zanimljivo je da za smanjenje fleksibilnosti modela nije neophodno unapred dizajnirati skup dopustivih
modela tako da bude siromašan, već je dovoljno modifikovati funkciju koja se minimizuje, tako da veliki broj
modela ima visoku vrednost te funkcije. Često korišćen i sistematičan način da se to postigne je postupak
regularizacije. Umesto minimizacije empirijskog rizika, vrši se minimizacija regularizovanog rizika, odnosno,
rešava se problem
min 𝑅𝑒𝑚𝑝 (𝑤) + 𝜆Ω(𝑤)
𝑤

gde je Ω(𝑤) takozvani regularizacioni izraz i pri čemu važi 𝜆 ≥ 0. Regularizacioni izrazi su obično zasnovani na
171 11. Nadgledano mašinsko učenje

20





15

● ●


10

● ●

9)



5

1

20

(
0

je
an
5 10 15 20
izd

Slika 11.4: Linearni model minimalnog empirijskog rizika.


ko

normama, pa su uobičajeni izbori poput


ns

𝑚
∑︁
Ω(𝑤) = ‖𝑤‖22 = 𝑤𝑖2
𝑖=1
tro

ili
𝑚
∑︁
Ω(𝑤) = ‖𝑤‖1 = |𝑤𝑖 |
ek

𝑖=1

ali se koriste i mnogi drugi.1 Minimizacija empirijskog rizika, koji meri prilagodenost modela podacima, zahteva
El

odstupanje koeficijenata 𝑤 od nule. Medutim, dodavanjem regularizacionog izraza, takvo odstupanje se kažnjava
utoliko više što je odstupanje veće. Time se otežava prilagodavanje modela podacima, odnosno, fleksibilnost
modela se smanjuje. Mera u kojoj regularizacioni izraz umanjuje fleksibilnost modela se kontroliše izborom
parametra 𝜆. Treba naglasiti da ni visoke vrednosti ovog parametra nisu poželjne jer se nefleksibilni modeli koji
se time dobijaju ne mogu dovoljno prilagoditi podacima, pa je kvalitet učenja u tom slučaju loš.

Primer 11.6. Neka se u primeru klasifikacije članaka koristi forma modela koja odgovara polinomu dve promen-
ljive, kao funkcija gubitka koristi se kvadrat razlike ciljne i predvidene vrednosti i neka se koristi regularizacija.
Tada je potrebno rešiti sledeći problem minimizacije:
𝑁 ∑︁
∑︁ 𝑗
𝑛 ∑︁
min 𝑤𝑗𝑘 𝑥𝑘𝑖1 𝑥𝑗−𝑘
𝑖2 + 𝜆‖𝑤‖
2
𝑤
𝑖=1 𝑗=0 𝑘=0

Za vrednosti regularizacionog parametra 𝜆 = 10−9 , 10−6 , 10−3 , 1, 10, 100, dobijaju se modeli prikazani na slici
11.6. Očigledno je da povećavanje regularizacionog parametra smanjuje mogućnost preprilagodavanja modela,
1 Različit izbor regularizacionog izraza može voditi različitim svojstvima algoritma i za mnoge regularizacione izraze je poznato

kakva svojstva indukuju.


11.1. Dizajn algoritama nadgledanog učenja 172

20





15

● ●


10

● ●

9)



5

1

20

(
0

je
an
5 10 15 20
izd

Slika 11.5: Polinomski model minimalnog empirijskog rizika.


ko

ali i da njegovo preterano povećavanje vodi njegovoj potpunoj neprilagodljivosti, usled čega, za vrednost 100
regularizacionog parametra, svi članci bivaju klasifikovani kao računarski samo zato što ih u trening skupu ima
ns

više.
tro

Na slici 11.7 prikazane su tri krive koje ilustruju uobičajeno ponašanje modela prilikom izbora vrednosti
parametra 𝜆. Jedna, rastuća, predstavlja empirijski rizik na trening skupu u zavisnosti od vrednosti parametra
𝜆. Kako empirijski rizik predstavlja ocenu stvarnog rizika, stvarnom riziku se može pridružiti interval poverenja2
ek

u odnosu na tu ocenu. Širina intervala poverenja je predstavljena drugom, opadajućom, krivom. U slučaju
visokog empirijskog rizika, na osnovu uskog intervala poverenja, možemo biti relativno sigurni da će i stvarni
rizik biti visok. U slučaju vrlo niske vrednosti empirijskog rizika, na osnovu širokog intervala poverenja, nemamo
El

nikakve garancije da će i stvarni rizik biti nizak. Treća kriva je zbir prethodne dve i predstavlja gornju granicu
stvarnog rizika. Očigledno, kao što je rečeno, i premale i prevelike vrednosti parametra 𝜆, koji kontroliše
fleksibilnost modela, vode lošim rezultatima. Prve usled nefleksibilnosti, a druge zbog preprilagodavanja. Više
o načinu na koji se vrednost ovog parametra može birati u praksi biće reči kasnije.
U slučaju kad model koji dobro aproksimira ciljnu promenljivu na instancama raspoloživim za trening,
takode dobro aproksimira ciljnu promenljivu i na ostalim instancama, kaže se da model dobro generalizuje iz
prikazanih primera.
Iako izraz regularizacija u strogom smislu predstavlja opisanu tehniku, nekada se upotrebljava i slobodnije, ali
uvek čuvajući osnovni smisao — da se radi o tehnici kojom se kontroliše fleksibilnost modela, čime se omogućava
izbor modela koji nije preprilagoden i dobro generalizuje.
Do sada nije bilo diskusije o tome kako se sprovodi postupak minimizacije empirijskog ili regularizovanog
empirijskog rizika. Za to se koriste metode matematičke optimizacije. Jedna od klasičnih metoda korišćenih u
ovom kontekstu je gradijentni spust, ali je on primenljiv samo u slučaju diferencijabilnih funkcija bez dodatnih
ograničenja u optimizacionom problemu. Postoje mnoge druge optimizacione metode koje mogu biti pogodnije
za optimizacioni problem koji se razmatra. Vrlo je česta praksa da se za nov problem takode formuliše i specifična
2 Za ovu diskusiju nije bitna konkretna verovatnoća pridružena intervalu poverenja (na primer, 95% ili 90%).
173 11. Nadgledano mašinsko učenje

1 9)
( 20
je
an
izd
ko
ns
tro
ek
El

Slika 11.6: Polinomski modeli dobijeni za različite vrednosti regularizacionog parametra.

metoda optimizacije koja je posebno pogodna za njega. Temeljnije upućivanje u optimizacione metode izlazi iz
okvira ove knjige.

Primer 11.7. U slučaju problema

𝑁
∑︁
min (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )2 + 𝜆‖𝑤‖2
𝑤
𝑖=1

za optimizacioni metod može se uzeti gradijentni spust. Za primenu gradijentnog spusta, potrebno je izvesti
11.2. Regresija 174

𝑅𝑔
𝐶 𝑅𝑒𝑚𝑝

0 𝜆

Slika 11.7: Ponašanje empirijskog rizika 𝑅𝑒𝑚𝑝 , širine intervala poverenja 𝐶 i gornje granice rizika 𝑅𝑔 u zavisnosti
od vrednosti regularizacionog parametra 𝜆

9)
gradijent regularizovanog empirijskog rizika, čije su koordinate u ovom slučaju:

1
𝑁 𝑁
𝜕 ∑︁ 2 2
∑︁
( (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 ) + 𝜆‖𝑤‖ ) = 2 (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )𝑥1 + 2𝜆𝑤1

20
𝜕𝑤1 𝑖=1 𝑖=1

𝑁 𝑁

(
𝜕 ∑︁ ∑︁
( (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )2 + 𝜆‖𝑤‖2 ) = 2 (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )𝑥2 + 2𝜆𝑤2
𝜕𝑤2 𝑖=1

𝜕 ∑︁
𝑁
𝑖=1

𝑁 je
an
∑︁
( (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )2 + 𝜆‖𝑤‖2 ) = 2 (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 ) + 2𝜆𝑤3
𝜕𝑤3 𝑖=1 𝑖=1

Kada je poznat gradijent, moguće je primeniti metod gradijentnog spusta sa Armiho-Goldštajnovom pretragom.
izd

Ako se umesto gradijenta greške na celom trening skupu, koristi gradijent greške samo na jednoj instanci, pri
čemu se u svakom koraku bira druga instanca, dobija se takozvani stohastički gradijentni spust. Ranije predloženi
algoritam za prepoznavanje računarskih članaka predstavlja stohastički gradijentni spust sa fiksiranom brzinom
učenja i vrednošću regularizacionog parametra 0.
ko

Pošto je shema dizajna izložena, vredi je koncizno sumirati, kao i osvrnuti se na njen značaj. Elementi
ns

dizajna algoritma nadgledanog učenja su:

• forma modela,
tro

• funkcija gubitka,

• regularizacioni izraz i
ek

• algoritam optimizacije.
El

Ovi elementi se često mogu birati nezavisno, ali je moguće i da izbor za neku od stavki ograniči izbore za
neku drugu stavku. Na primer, u slučaju da je funkcija gubitka nediferencijabilna, običan gradijentni spust
ne može biti upotrebljen kao algoritam optimizacije. Značaj ovakve dekompozicije algoritma je kako u tome
što pruža smernice prilikom dizajna novih algoritama, tako i u tome što olakšava razumevanje postojećih
algoritama. Naime, svojstva mnogih izbora za svaki od navedenih elemenata dizajna su već u velikoj meri
analizirana i poznato je kakvim ishodima koji izbor vodi. Primera radi poznato je da izbor regularizacionog
izraza Ω(𝑤) = ‖𝑤‖1 vodi modelima sa velikim brojem koeficijenata koji imaju vrednost 0, što olakšava uočavanje
nebitnih atributa, dok izbor Ω(𝑤) = ‖𝑤‖22 često vodi nešto većoj preciznosti predikcije od prethodnog izbora.

11.2 Regresija
Problem regresije predstavlja problem predvidanja numeričke vrednosti vezane za neku instancu na osnovu
vrednosti njenih drugih atributa. Štaviše, regresija se može videti kao aproksimacija neke realne ciljne pro-
menljive koja najčešće može da uzme proizvoljne vrednosti iz nekog ne nužno poznatog intervala. Formalno,
regresiona funkcija koja povezuje zavisnu, ciljnu, promenljivu 𝑌 i nezavisne promenljive 𝑋1 , 𝑋2 , . . . , 𝑋𝑛 je
definisana izrazom
𝑟(𝑥1 , 𝑥2 , . . . , 𝑥𝑛 ) = 𝐸(𝑌 |𝑋1 = 𝑥1 , 𝑋2 = 𝑥2 , . . . , 𝑋𝑛 = 𝑥𝑛 )
175 11. Nadgledano mašinsko učenje

gde 𝐸 označava matematičko očekivanje. Problem regresije se svodi na problem aproksimacije regresione funkcije
𝑟. Ovo se može raditi različitim metodama koje uvode različite pretpostavke o regresionoj funkciji. Najjedno-
stavnije su metode linearne regresije.
Primene regresije su mnogobrojne već u najjednostavnijoj, linearnoj, varijanti. One uključuju procenu rizika
u ulaganjima, procenu uticaja prerade rude na ekosistem, procenu smrtnosti u zavisnosti od životnih navika i
slično.

11.2.1 Linearna regresija


Linearna regresija predstavlja problem regresije u kome se pretpostavlja linearna veza izmedu vrednosti
ciljne promenljive i atributa. Preciznije, model je oblika:
𝑚
∑︁
𝑓 (𝑥, 𝑤) = 𝑤 · 𝑥 = 𝑤 𝑖 𝑥𝑖 (11.1)
𝑖=1

9)
Zadatak linearne regresije je odredivanje vrednosti parametara 𝑤 koji najbolje odgovaraju opažanjima iz isku-
stva, odnosno trening podacima. Bitno je naglasiti da se izraz „linearna“ u nazivu linearne regresije odnosi na
linearnost relacije po parametrima 𝑤, a da atributi mogu biti nelinearno transformisani.

1
20
Primer 11.8. Neki primeri linearnih modela su:

• 𝑓 (𝑥, 𝑤) = 𝑤0 + 𝑤1 𝑥1 + 𝑤2 𝑥2

(
• 𝑓 (𝑥, 𝑤) = 𝑤0 + 𝑤1 cos(𝑥1 ) + 𝑤2 𝑥22 + 𝑤3 𝑒𝑥3

• 𝑓 (𝑥, 𝑤) = 𝑤0 + 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 𝑥1 𝑥2
je
an
Sledeći primeri ne predstavljaju linearne modele:
izd

• 𝑓 (𝑥, 𝑤) = 𝑤1 𝑥1
𝑤2 +𝑥2

cos(𝑤1 𝑥1 )𝑤2 𝑥2
• 𝑓 (𝑥, 𝑤) = 𝑒𝑤3 𝑥3
ko

Pored osnovnog zadatka pronalaženja prediktivnog modela, linearna regresija je korisna i za ustanovljavanje
jačine uticaja nekog atributa na vrednost ciljne promenljive. Naime, veće apsolutne vrednosti koeficijenata 𝑤
ns

označavaju jači uticaj atributa uz koji stoje. Znak koeficijenta odreduje smer uticaja atributa. Takode se može
meriti statistička značajnost ovog uticaja, ali se radi jednostavnosti u nastavku fokusiramo samo na osnovni
tro

problem odredivanja optimalnih vrednosti koeficijenata 𝑤 i proveru kvaliteta naučenog modela.


Najjednostavniji slučaj linearne regresije je predvidanje vrednosti 𝑦 na osnovu samo jednog atributa 𝑥.
Primera radi, možemo govoriti o predvidanju telesne težine u zavisnosti od visine. Primetna je zakonitost da su
ek

visoki ljudi uglavnom teži od niskih ljudi. Tu zavisnost je potrebno modelirati. Medutim, postoje i odstupanja.
Kako su odstupanja od prosečne težine utoliko reda što su veća, ova odstupanja ćemo smatrati šumom i nećemo
ih modelirati. Linearni model je u ovom slučaju oblika
El

𝑦 = 𝑤0 + 𝑤1 𝑥

što je standardna jednačina linearne funkcije.


Na slici 11.8 je prikazano 100 tačaka pri čemu svaka odgovara jednom ispitaniku. Koordinata 𝑥 predstavlja
visinu, a 𝑦 telesnu težinu. Na slici se može primetiti opšti trend linearnog povećanja telesne težine u zavisnosti
od visine koji je prikazan pravom. Takode, primetno je i da mali broj tačaka značajno odstupa. Ovakve tačke
nazivamo izuzecima (eng. outliers). Prikazana prava predstavlja linearni model datih podataka. Metod kojim
se do njega dolazi biće prikazan u nastavku.
U slučaju korišćenja opšte jednačine linearnog modela 11.1, moguće je uključiti veći broj atributa pri
predvidanju vrednosti ciljne promenljive. Iz primetne varijabilnosti telesne težine u odnosu na regresioni model,
shvata se da visina nije dovoljna da u potpunosti objasni variranje telesne težine. Novi atributi koji bi vodili
ka poboljšavanju predvidanja mogu da se odnose na način života pojedinaca — koliko vremena dnevno provode
u sedećem položaju, koliko se bave sportom, koliko kalorija unose dnevno i slično. Umesto prave, u ovakvom
slučaju regresioni model bi odredivao jednu hiperravan.
Osnovni kriterijum izbora vrednosti koeficijenata linearnog modela je smanjivanje odstupanja izmedu vred-
nosti koje model predvida i vrednosti koje ciljna promenljiva ima u podacima. Ovaj problem se formuliše kao
11.2. Regresija 176

120

● ●

● ●
●● ●


100

● ●
● ●
● ●
●● ●
● ●
● ● ●
● ●● ●
● ●
● ● ●
● ●
● ●
80

● ●●
y

● ●
● ●
● ●●
●● ●
● ● ● ● ●●● ●

9)
● ● ●
● ● ● ● ●

● ● ●
● ●
● ● ●●

1

60

● ●

20
● ●


● ● ● ●

(
● ●

40


je
an
150 160 170 180 190 200

x
izd

Slika 11.8: Primer jednostavne regresije kojom se predvida telesna težina na osnovu visine.
ko

problem minimizacije srednjekvadratne greške. Funkcija gubitka je ℓ(𝑥, 𝑦, 𝑤) = (𝑥 · 𝑤 − 𝑦)2 , pa je minimizacioni


problem
ns

𝑛
∑︁
min (𝑤 · 𝑥𝑖 − 𝑦𝑖 )2 + 𝜆Ω(𝑤)
𝑤
𝑖=1
tro

pri tome je 𝑛 broj instanci u trening skupu. Alternativno, u matričnoj notaciji, isti problem može se zapisati
kao
min ‖𝑋𝑤 − 𝑌 ‖22 + 𝜆Ω(𝑤)
ek

U slučaju da je Ω(𝑤) = ‖𝑤‖22 ,


ispostavlja se da za postavljeni problem postoji jednostavno rešenje koje ne
El

zahteva korišćenje optimizacionih metoda:

𝑤 = (𝑋 ⊤ 𝑋 + 𝜆𝐼)−1 𝑋 ⊤ 𝑌

pri čemu je 𝐼 jedinična matrica i važi


⎡ ⎤ ⎡ ⎤
1 𝑥11 𝑥12 ··· 𝑥1𝑚 𝑦1
⎢ 1 𝑥21 𝑥22 ··· 𝑥2𝑚 ⎥ ⎢ 𝑦2 ⎥
𝑋=⎢ .. .. .. .. 𝑌 =⎢ ..
⎢ ⎥ ⎢ ⎥
. . . . .
⎥ ⎥
⎣ ⎦ ⎣ ⎦
1 𝑥𝑛1 𝑥𝑛2 ··· 𝑥𝑛𝑚 𝑦𝑛

Osnovni problem pri odredivanju optimalnih vrednosti koeficijenata 𝑤 je potencijalna loša uslovljenost ma-
trice 𝑋. Naime, moguće je da su neki atributi linearno zavisni ili da su jako korelirani. U tom slučaju matrica 𝑋,
pa i 𝑋 ⊤ 𝑋 je neinvertibilna ili loše uslovljena (za male promene elemenata polazne matrice, moguće su ogromne
promene elemenata inverzne matrice), odnosno, u slučaju da je 𝜆 = 0, optimalne vrednosti koeficijenata 𝑤 se ne
mogu izračunati ili su previše nestabilne. Stoga se preporučuje da se regularizacija uvek koristi prilikom linearne
regresije. Često se pod osnovnim oblikom linearne regresije podrazumeva slučaj za 𝜆 = 0, dok je regularizovani
slučaj slučaj u kojem se koristi kvadrat euklidske norme (on se na engleskom naziva ridge regression). Moguće je
177 11. Nadgledano mašinsko učenje

koristiti i druge norme kako u regularizacionom izrazu, tako i u funkciji gubitka, što dovodi do varijanti metode
sa različitim ponašanjem.
Ukoliko je dimenzija matrice 𝑋 ⊤ 𝑋 + 𝜆𝐼 velika, njeno invertovanje može biti računski previše zahtevno. U
takvim situacijama se minimizacija vrši metodama optimizacije, poput gradijentnog spusta.

11.2.2 Pretpostavke linearne regresije


Osnovna i očigledna pretpostavka linearne regresije je da linearni model adekvatno izražava vezu izmedu
atributa i ciljne promenljive. Pritom, ne može se očekivati da vrednosti ciljne promenljive budu jednake vredno-
stima modela zbog postojanja šuma, odnosno slučajne greške u podacima. Poreklo šuma može biti nesavršenost
opreme kojom se vrši merenje, slučajna priroda samog fenomena ili to što izbor linearne zavisnosti predstavlja
svesnu odluku da se inače kompleksna zavisnost donekle pojednostavi radi lakše analize. Stoga, pretpostavlja
se da ciljna promenljiva ima oblik
𝑦 =𝑤·𝑥+𝜀
gde je 𝜀 ∼ 𝒩 (0, 𝜎 2 ) normalno raspodeljena slučajna promenljiva koja označava šum, pri čemu je standardna

9)
devijacija 𝜎 konstantna. Neformalno, ovo znači da se pretpostavlja da se greške „poništavaju“, odnosno da se
prebacivanja i podbacivanja javljaju jednako često, da su pritom velike greške vrlo malo verovatne, kao i da

1
veličina greške ne zavisi od vrednosti 𝑦 (pošto 𝜎 je konstantno). Više o ispitivanju ovih poretpostavki biće
rečeno u nastavku.

20
Imajući u vidu da se smatra da važi 𝑦 = 𝑤 · 𝑥 + 𝜀 i pretpostavku 𝜀 ∼ 𝒩 (0, 𝜎 2 ), važi 𝑦 ∼ 𝒩 (𝑤 · 𝑥, 𝜎 2 ) za svaki
vektor vrednosti atributa 𝑥. Ova konstatacija pruža drugi pogled na linearnu regresiju — da se zapravo radi o

(
izboru normalne raspodele sa promenljivim prosekom koja najbolje opisuje raspodelu podataka.

11.2.3 Ispitivanje kvaliteta linearne regresije


je
an
Ispitivanje kvaliteta linearne regresije uključuje skup tehnika i mera kvaliteta kojima se proverava zadovo-
ljenost uslova primenljivosti tehnike linearne regresije, kao i kvalitet samog naučenog modela. Ovaj postupak
izd

se često naziva i dijagnostikom modela.


Ispitivanje zadovoljenosti uslova za primenu linearne regresije bi formalno trebalo raditi korišćenjem stati-
stičkih testova. Medutim, kako je sama tehnika dosta robusna, odnosno često daje zadovoljavajuće rezultate i
kad su te pretpostavke donekle narušene, ove provere se često vrše neformalno — inspekcijom podataka pomoću
ko

dijagrama. Normalnost raspodele šuma se potvrduje inspekcijom histograma grešaka 𝑟𝑖 = 𝑦𝑖 − 𝑤 · 𝑥𝑖 koje


nazivamo rezidualima. Pretpostavka da veličina greške ne zavisi od stvarne veličine promenljive 𝑦 se obično
potvrduje inspekcijom grafika koji prikazuje reziduale 𝑟𝑖 u zavisnosti od predvidenih vrednosti 𝑤 · 𝑥. Ukoliko se
ns

na ovom grafiku ne uočava zavisnost izmedu te dve veličine, smatra se da je pretpostavka ispunjena. S druge
strane, ukoliko se može uočiti zavisnost, smatra se da pretpostavka nije ispunjena i da se model može popraviti
tro

dodavanjem novih atributa ili primenom drugačijih metoda.


Osnovna mera kvaliteta linearne regresije je srednjekvadratna greška, koja meri odstupanje predvidenih
vrednosti na nekom test skupu od stvarnih
ek

𝑛
∑︁
𝐸(𝑌, 𝑋𝑤) = (𝑦𝑖 − 𝑤 · 𝑥𝑖 )2
El

𝑖=1

Poželjno je da srednjekvadratna greška bude što manja, medutim ukoliko nemamo konkretan zahtev za posti-
zanjem odredene srednjekvadratne greške, teško je reći da li je učenje uspešno ili ne. Zbog toga se često koriste
i druge mere. Česta je upotreba koeficijenta determinacije.
Koeficijent determinacije 𝑟2 izmedu predvidenih i stvarnih vrednosti na test skupu, se računa po formuli
∑︀𝑛 2
𝑖=1 (𝑦𝑖 − 𝑤 · 𝑥𝑖 )
𝑟2 (𝑌, 𝑋𝑤) = 1 − ∑︀ 𝑛 2
𝑖=1 (𝑦𝑖 − 𝑦)

gde nadvučena linija označava prosek uzorka. Vrednost 1 koeficijenta determinacije označava potpuno podu-
daranje stvarnih i predvidenih vrednosti. Što je vrednost koeficijenta manja, to je poklapanje lošije. Često se
kaže da 𝑟2 (𝑌, 𝑋𝑤) predstavlja udeo varijanse vrednosti ciljne promenljive 𝑌 koji prediktivni model objašnjava.
Smisao ovog tvrdenja je sledeći. Ukoliko se odreknemo korišćenja bilo kakvih metoda predikcije pri predvidanju
vrednosti 𝑌 , najmanju srednjekvadratnu grešku očekujemo ukoliko uvek predvidamo vrednost 𝑦. Odnosno, ako
kao prediktivni model za vrednosti 𝑌 koristimo prosek opaženih vrednosti 𝑦𝑖 . Pri tome je srednjekvadratna
greška
𝑛
1 ∑︁
𝐸(𝑌, 𝑦) = (𝑦𝑖 − 𝑦)2
𝑛 𝑖=1
11.3. Klasifikacija 178

1 9)
( 20
je
an
Slika 11.9: Grafik reziduala u zavisnosti od predvidenih vrednosti telesne težine.
izd

odnosno uzoračka varijansa za 𝑌 . Rastojanja koja ulaze u ovu grešku su prikazana na slici 11.9. U slučaju
korišćenja linearnog regresionog modela, srednjekvadratna greška, ili varijansa vrednosti 𝑌 u odnosu na model,
je
ko

𝑛
1 ∑︁
𝐸(𝑌, 𝑋𝑤) = (𝑦𝑖 − 𝑤 · 𝑥)2
𝑛 𝑖=1
ns

Rastojanja koja ulaze u ovu grešku su prikazana na slici 11.10. Ova, preostala, varijansa se ne može objasniti
zavisnošću od korišćenih atributa, odnosno tu preostalu varijansu možemo smatrati neobjašnjenom. Njen
tro

količnik sa 𝐸(𝑌, 𝑦) se onda može smatrati udelom neobjašnjene varijanse, a koeficijent determinacije, onda
očigledno, udelom objašnjene varijanse.
Primer 11.9. U slučaju primera sa predikcijom telesne težine u zavisnosti od visine na slici 11.11 prikazan
ek

je histogram reziduala. Prikazana raspodela je bliska normalnoj (što je potvrdeno i statističkim testom). Na
slici 11.12 prikazan je grafik zavisnosti reziduala od predvidenih vrednosti. Kako raspodela ne odaje zavisnost
El

izmedu reziduala i predvidenih vrednosti (što je takode potvrdeno i statističkim testom), zaključuje se da su u
tom problemu pretpostavke linearne regresije ispunjene.
Koeficijent determinacije iznosi 0.51 što znači da promenljiva 𝑋 objašnjava oko pola varijanse promenljive
𝑌 , i da postoji prostor da se predikcija dalje popravi dodavanjem novih atributa.
U primeru preprilagodavanja podacima, koji je dat u poglavlju 11.1, koeficijenti polinomskog modela su
izabrani upravo linearnom regresijom. Iako su polinomi nelinearne funkcije, oni su ipak linearni u odnosu na
koeficijente i stoga predstavljaju linearne modele, pa je zato bila moguća primena linearne regresije.

11.3 Klasifikacija
Problem klasifikacije je problem razvrstavanja nepoznate instance u jednu od unapred ponudenih kategorija
— klasa. Neki od primera klasifikacije su razvrstavanje bankovnih transakcija u rizične koje mogu predstavljati
prevaru i nerizične koje predstavljaju uobičajene transakcije, odredivanje autorstva tekstova pri čemu se tekstu
nepoznatog autora pridružuje jedan od nekoliko unapred ponudenih autora, razvrstavanje elektronske pošte u
željenu i neželjenu (eng. spam) i slično.
U navedenim primerima svaka instanca (bankovna transakcija, tekst, elektronska poruka) se može predstaviti
nekim izabranim skupom njenih atributa. Takode, svakoj instanci se kao atribut može dodati i oznaka klase kojoj
179 11. Nadgledano mašinsko učenje

1 9)
( 20
je
an
Slika 11.10: Grafik reziduala u zavisnosti od predvidenih vrednosti telesne težine.
izd
ko
ns
20

tro
ek 15
El
10
5
0

−30 −20 −10 0 10 20 30

Slika 11.11: Histogram reziduala u predvidanju telesne težine.


11.3. Klasifikacija 180


20




● ● ● ●

● ● ●
10


● ● ●
● ● ●
● ●
● ● ●
● ●
● ● ●
● ● ● ● ●
●● ●
● ●● ● ●
● ● ● ●
0

●● ● ● ● ● ● ●


● ● ● ●
● ●

9)
● ● ● ●●
● ●
● ● ●
● ● ●


−10

● ● ● ●

1
● ●

20
● ● ●


● ● ●

(
−20

● ●

je
an
50 60 70 80 90 100
izd

Slika 11.12: Grafik reziduala u zavisnosti od predvidenih vrednosti telesne težine.


ko

instanca pripada. Problem klasifikacije se sastoji u odredivanju vrednosti atributa klase na osnovu preostalih
atributa instance. Formalnije, problem klasifikacije se može razmatrati kao aproksimacija ciljne promenljive
ns

čija je vrednost za svaku instancu oznaka klase kojoj ta instanca pripada. Ključno zapažanje je da je ciljna
promenljiva u ovom problemu diskretna. Pritom, u opštem slučaju, oznakama klasa se ne mogu smisleno dodeliti
tro

numeričke vrednosti niti uredenje. Dakle, atribut klase, čiju je vrednost potrebno odrediti, je kategorički atribut.
Postoji veliki broj metoda kojima se ovaj problem rešava. Neke od njih su logistička regresija (eng. logistic
regression), metode zasnovane na instancama (eng. instance based classification), učenje stabla odlučivanja
ek

(eng. decision tree induction) i metoda potpornih vektora (eng. support vector machines). U daljem tekstu
opisaćemo prve tri pomenute metode.
El

11.3.1 Logistička regresija


Logistička regresija predstavlja jednu od najkorišćenijih metoda klasifikacije. Glavni razlozi za to su jedno-
stavnost, efikasno treniranje i postojanje verovatnosne interpretacije rezultata. Ograničenje ove metode je da je
primenljiva samo na binarnu klasifikaciju. U slučaju binarne klasifikacije, svaka instanca može pripadati jednoj
od dve klase koje se mogu označiti brojevima 1 i −1. Pritom, ovaj izbor brojeva je samo tehnička pogodnost
i za njega ne postoji nikakav suštinski razlog, pošto su oznake klasa zapravo kategoričke vrednosti. Osnovna
ideja logističke regresije je da se vrši predvidanje verovatnoće 𝑃 (𝑦 = 1|𝑥) = 𝑓 (𝑥, 𝑤) da instanca pripada klasi
1. Tada je verovatnoća pripadnosti drugoj klasi 𝑃 (𝑦 = −1|𝑥) = 1 − 𝑃 (𝑦 = 1|𝑥). Kao što je konstatovano da
linearna regresija predstavlja izbor normalne raspodele sa promenljivim prosekom koja najbolje opisuje podatke,
tako se, na osnovu navedenog, može konstatovati da logistička regresija predstavlja izbor Bernulijeve raspodele
ℬ(𝑓 (𝑥, 𝑤)), takve da važi 𝑦 ∼ ℬ(𝑓 (𝑥, 𝑤)).
Postavlja se pitanje šta bi bila pogodna forma modela logističke regresije. Da bi se modelirala verovatnoća,
potrebno je da model bude funkcija koja uzima sve vrednosti u intervalu [0, 1]. Ta funkcija mora zavisiti od
vrednosti atributa 𝑥. Zbog svoje jednostavnosti, linearni modeli predstavljaju čestu polaznu tačku u dizajnu
metoda mašinskog učenja. Medutim, linearni model 𝑤 · 𝑥 uzima vrednosti u intervalu [−∞, ∞], pa je za njegovu
primenu potrebno naći monotono rastuće i neprekidno preslikavanje tog intervala u interval [0, 1]. Jedno takvo
181 11. Nadgledano mašinsko učenje

0.5

−6 −5 −4 −3 −2 −1 0 1 2 3 4 5 6

Slika 11.13: Grafik sigmoidne funkcije.

preslikavanje predstavlja sigmoidna funkcija 𝜎(𝑥) = 1/(1 + 𝑒−𝑥 ). Ovo nije jedina funkcija koja zadovoljava

9)
pomenuti zahtev, ali je pogodna i iz tehničkih razloga, poput jednostavnosti izvoda (𝜎 ′ (𝑥) = 𝜎(𝑥)(1 − 𝜎(𝑥)), i
često se koristi u mašinskom učenju. Grafik sigmoidne funkcije je prikazan na slici 11.13. Logistički model se

1
dobija komponovanjem prethodne dve funkcije i ima formu:

20
1
𝑓 (𝑥, 𝑤) =
1 + 𝑒−𝑤·𝑥

(
Primer sa kategorizacijom članaka na računarske i ostale je tipičan primer situacije u kojoj je prirodno
primeniti logističku regresiju. Pošto logistički model kada važi 𝑤 · 𝑥 > 0 predvida verovatnoću veću od 0.5 da
je
instanca 𝑥 pripada klasi 1, a kada važi 𝑤 · 𝑥 < 0, verovatnoću manju od 0.5 (tada je verovatnoća da pripada
klasi −1 veća od 0.5), može se zaključiti da se, kao i algoritam naveden u primeru, i logistička regresija može
an
interpretirati kao metoda koja traži razdvajajuću hiperravan izmedu instanci dve klase. Pritom, što je neka
tačka dalja od razdvajajuće hiperravni, to je vrednost 𝑤 · 𝑥 veća po apsolutnoj vrednosti, a samim tim je i
izd

vrednost 𝜎(𝑤 · 𝑥) bliža vrednosti 0 ili 1 u zavisnosti od znaka vrednosti 𝑤 · 𝑥. Odnosno, što je instanca dublje
u oblasti prostora koja pripada nekoj klasi, to model izražava veću sigurnost da ona pripada toj klasi. Ovo
ponašanje je potpuno u skladu sa intuicijom.
Kao što je navedeno u motivaciji logističke regresije, verovatnoća 𝑃𝑤 (𝑦 = 1|𝑥) se predvida formulom
ko

1
𝑃𝑤 (𝑦 = 1|𝑥) = 𝑓 (𝑥, 𝑤) =
1 + 𝑒−𝑤·𝑥
ns

Takode, važi
𝑒−𝑤·𝑥 1 1
tro

𝑃𝑤 (𝑦 = −1|𝑥) = 1 − 𝑃𝑤 (𝑦 = 1|𝑥) = = 𝑤·𝑥 =


1 + 𝑒−𝑤·𝑥 𝑒 +1 1 + 𝑒𝑤·𝑥
Odavde se može izvesti opšti zaključak:
1
ek

𝑃𝑤 (𝑦|𝑥) =
1 + 𝑒−𝑦𝑤·𝑥
S obzirom da postoji verovatnosna interpretacija, intuitivno je vrednosti parametara izabrati tako da vero-
El

vatnoća raspoloživog trening skupa bude maksimalna pri izabranim vrednostima parametara. Pod standardno
korišćenom pretpostavkom da instance predstavljaju nezavisne uzorke, ta verovatnoća je jednaka proizvodu
𝑛
∏︁
𝑃𝑤 (𝑦𝑖 |𝑥𝑖 )
𝑖=1

koji se naziva funkcijom verodostojnosti parametra (eng. likelihood function). Kako je korišćenje proizvoda iz
tehničkih razloga3 nepreporučljivo, umesto funkcije verodostojnosti se koristi njen logaritam. Kako je logaritam
monotono rastuća funkcija, maksimumi funkcije verodostojnosti i njenog logaritma koincidiraju. Kako je logari-
tam broja koji je izmedu 0 i 1 negativan, umesto maksimizacije logaritma verodostojnosti, može se minimizovati
njegova negativna vrednost
𝑛
∏︁ 𝑛
∑︁
− log 𝑃𝑤 (𝑦𝑖 |𝑥𝑖 ) = − log 𝑃𝑤 (𝑦𝑖 |𝑥𝑖 ) =
𝑖=1 𝑖=1
𝑛 𝑛
∑︁ 1 ∑︁
− log = log(1 + 𝑒−𝑦𝑖 𝑤·𝑥𝑖 )
𝑖=1
1 + 𝑒−𝑦𝑖 𝑤·𝑥𝑖 𝑖=1
3 Proizvod velikog broja vrednosti izmedu 0 i 1 lako može postati 0 usled potkoračenja.
11.3. Klasifikacija 182

Ova veličina (podeljena brojem instanci) je empirijski rizik koji odgovara logističkoj funkciji gubitka ℓ(𝑥, 𝑦, 𝑤) =
log(1 + 𝑒−𝑦𝑤·𝑥 ). Po dodavanju regularizacije, minimizacioni problem koji se rešava postaje:
𝑛
∑︁
min log(1 + 𝑒−𝑦𝑖 𝑤·𝑥𝑖 ) + 𝜆Ω(𝑤)
𝑤
𝑖=1

Ovaj problem nema jednostavno rešenje kao u slučaju linearne regresije, već se mora sprovesti postupak
optimizacije. U tu svrhu je moguće koristiti gradijentni spust, ali postoje i efikasnije metode. Posebna pogodnost
za optimizaciju u slučaju logističke regresije je što se minimizuje konveksna funkcija koja ima jedan globalni
minimum i ne postoji mogućnost da proces optimizacije završi u nekom neoptimalnom lokalnom minimumu,
što je problem sa nekim drugim metodama učenja, poput neuronskih mreža.
Treba imati u vidu da za primenu logističke regresije nije neophodno da klase budu linearno razdvojive.
Trening logističke regresije sigurno konvergira zahvaljujući tome što će gradijentne metode optimizacije sigurno
naći minimum konveksne funkcije. Naravno, preciznost dobijenog modela ne može biti savršena ako se radi o
linearno nerazdvojivom problemu.

9)
11.3.2 Metode klasifikacije zasnovane na instancama

1
Osnovna karakteristika metoda zasnovanih na instancama je da ne grade eksplicitan model podataka u vidu

20
neke funkcije kao što to radi većina metoda mašinskog učenja. Stoga se klasifikacija ne vrši na osnovu već
formulisanog modela, nego na osnovu skupa instanci za trening. Umesto izgradnje modela, instance predvidene

(
za treniranje se čuvaju i bivaju upotrebljene tek kad je potrebno klasifikovati nepoznatu instancu. Time se
većina izračunavanja premešta iz faze učenja u fazu primene. Najpoznatija metoda ove vrste je metoda 𝑛
najbližih suseda.
je
Metoda 𝑛 najbližih suseda (eng. 𝑛 nearest neighbours) se zasniva na vrlo jednostavnom principu — nepoznatu
an
instancu treba klasifikovati u klasu čije su instance najsličnije nepoznatoj. Koncept sličnosti se najjednostavnije
formalizuje preko funkcija rastojanja.
izd

Definicija 11.1 (Rastojanje). Neka je 𝑋 skup instanci. Funkcija 𝑑 : 𝑋 × 𝑋 → R predstavlja rastojanje


na skupu 𝑋 ukoliko zadovoljava sledeće uslove:

1. 𝑑(𝑥, 𝑦) ≥ 0, pritom 𝑑(𝑥, 𝑦) = 0 ⇔ 𝑥 = 𝑦 (pozitivna definitnost)


ko

2. 𝑑(𝑥, 𝑦) = 𝑑(𝑦, 𝑥) (simetričnost)


ns

3. 𝑑(𝑥, 𝑧) ≤ 𝑑(𝑥, 𝑦) + 𝑑(𝑦, 𝑧) (nejednakost trougla)


tro

Primer 11.10. Neki primeri rastojanja su:

• 𝑑(𝑥, 𝑦) = 𝑛 𝑖 (𝑥𝑖 − 𝑦𝑖 )𝑛
√︀∑︀
ek

{︂
0, 𝑥 = 𝑦
• 𝑑(𝑥, 𝑦) =
1, 𝑥 ̸= 𝑦
El

Intuitivno, što je rastojanje izmedu dva objekta veće, to je sličnost izmedu njih manja i obratno.4 Drugim
rečima, distanca izmedu objekata predstavlja meru njihove različitosti. Naravno, pošto je moguće birati različite
funkcije rastojanja, pretpostavka je da izabrana funkcija rastojanja, u smislu relevantnom za posmatrani domen,
stvarno oslikava različitost izmedu dva objekta.
Kada je funkcija rastojanja izabrana, najjednostavniji način klasifikacije je klasifikovanje nepoznate instance
u klasu iz koje potiče instanca trening skupa najbliža nepoznatoj instanci. Ovo je primer metode 𝑛 najbližih
suseda za 𝑛 = 1. U opštem slučaju metoda 𝑛 najbližih suseda se sastoji u nalaženju 𝑛 instanci iz trening skupa
koje su najbliže nepoznatoj instanci i njenom klasifikovanju u klasu čiji se elementi najčešće javljaju medu
pronadenih 𝑛 najbližih suseda.
U slučaju izjednačenog ishoda izmedu više klasa, nije moguće doneti odluku, ali se u praksi ovaj osnovni
algoritam može modifikovati kako bi se ovakvi slučajevi razrešili.
Analizirajmo detaljnije metodu 𝑛 najbližih suseda. Posmatrajmo nepoznate instance A i B prikazane na
slici 11.14. Metodom 𝑛 najbližih suseda uz korišćenje euklidskog rastojanja instanca A biva klasifikovana u
crvenu klasu za sve vrednosti 𝑛 od 1 do 5. Klasifikacija instance A je postojana zato što se ona nalazi blizu
4 Kao mere sličnosti, ponekad se koriste i funkcije koje nisu zasnovane na distancama kao, na primer, funkcija cos(∠(𝑥, 𝑦)) =
√ 𝑥·𝑦
√ .
𝑥·𝑥 𝑦·𝑦
183 11. Nadgledano mašinsko učenje

9)
Slika 11.14: Stabilnost klasifikacije pomoću algoritma 𝑛 najbližih suseda

1
20
crvenih instanci, a udaljeno od plavih instanci. S druge strane, klasa instance B može da varira u zavisnosti od

(
broja 𝑛. Za 𝑛 = 1 instanca B se klasifikuje u crvenu klasu. Za 𝑛 = 2 ne može se odlučiti. Za 𝑛 = 3 instanca
𝐵 se klasifikuje u plavu klasu. Za 𝑛 = 4 ponovo nije moguće odlučiti, a za 𝑛 = 5, ona se ponovo klasifikuje u
je
crvenu klasu. Klasifikacija instance 𝐵 nije postojana jer se ona nalazi blizu instanci iz obe klase. Znači, metoda
𝑛 najbližih suseda je postojana u unutrašnjosti oblasti koju zauzimaju instance jedne klase, ali je nepostojana
an
na obodu te oblasti. Ovo ponašanje bi se moglo uočiti i kod drugih metoda klasifikacije.
Pored toga što se nepostojanost klasifikacije može demonstrirati menjanjem parametra 𝑛, ona se takode
može analizirati i za fiksiranu vrednost parametra 𝑛. Može se primetiti da je za manje vrednosti parametra 𝑛
izd

nepostojanost pri variranju vrednosti atributa instance veća nego za veće vrednosti parametra 𝑛.
Kao što se može videti u slučaju metode najbližih suseda, još jedno bitno svojstvo metoda zasnovanih na
instancama je njihova lokalnost. Nepoznata instanca se klasifikuje isključivo ili uglavnom na osnovu poznatih
ko

instanci koje se nalaze u njenoj blizini. Ovo svojstvo doprinosi fleksibilnosti modela koje ove metode (im-
plicitno) grade. Samim tim, za manje vrednosti parametra 𝑛 dobijaju se fleksibilniji modeli, koji su stoga
skloniji preprilagodavanju, dok se za veće vrednosti parametra 𝑛 dobijaju manje fleksibilni modeli manje skloni
ns

preprilagodavanju. Naravno, premala fleksibilnost vodi modelima koji se ne mogu dovoljno prilagoditi podacima
i stoga loše uče, tako da ni premala ni prevelika vrednost parametra 𝑛 nije dobra. Očigledno, parametar 𝑛 ima
tro

ulogu sličnu ulozi regularizacionog parametra 𝜆. Odredivanje njihovih vrednosti će biti zajednički diskutovano
kasnije.
ek

N-grami
Metode mašinskog učenja su često formulisane tako da se jednostavno primenjuju na numeričke podatke, ali
El

teško na podatke u nekom drugom obliku. Stoga se traže načini da se i drugi podaci predstave u numeričkom
obliku. To često podrazumeva i odredeni gubitak informacije. U slučaju problema klasifikacije tekstova, protein-
skih sekvenci i sličnih podataka često se u svrhu predstavljanja podataka u numeričkom obliku koriste 𝑛-gramski
profili.
Ako je data niska 𝑆 = 𝑠1 𝑠2 . . . 𝑠𝑁 nad azbukom Σ, gde je 𝑁 pozitivan ceo broj, 𝑛-gram niske 𝑆, za 𝑛 ≥ 𝑁 ,
je bilo koja podniska susednih simbola dužine 𝑛. Na primer, za nisku sad_ili_nikad, 1-grami su: s, a, d, _, i,
l, i, _, n, i, k, a, d. 2-grami su: sa, ad, d_, _i, il, li, i_, _n, ni, ik, ka, ad. 3-grami bi bili: sad, ad_, d_i,
_il, ili, li_, i_n, _ni, nik, ika, kad, itd.
N-gramski profil niske je lista uredenih parova (𝑛-gram, frekvencija) gde je frekvencija izračunata u odnosu
na sve 𝑛-grame niske. Ovakvi profili predstavljaju reprezentaciju pogodnu za metode klasifikacije i često se
koriste zajedno sa metodom 𝑛 najbližih suseda.
Osnovne prednosti korišćenja 𝑛-grama su robusnost (na primer, nisu mnogo osetljivi na greške u kucanju
ili na pojavljivanje reči u različitim gramatičkim oblicima), nezavisnost od domena koji se analizira, efikasnost
(dovoljan je jedan prolaz kroz tekst) i jednostavnost. Problem je eksponencijalna zavisnost broja mogućih
𝑛-grama u odnosu na dužinu 𝑛-grama.
N-gramski profili su uspešno korišćeni u različitim primenama koje uključuju prepoznavanje autorstva tek-
stova, prepoznavanje jezika kojim je tekst pisan, prepoznavanje govora i odredene probleme iz oblasti bioinfor-
11.3. Klasifikacija 184

matike.

Primer 11.11. U ovom primeru razmotrićemo klasifikaciju tekstova prema jeziku. Srpski i engleski jezik biće
predstavljeni po jednim kraćim tekstom označenim sa S1 i E1. Pošto se izračunaju frekvencije n-grama za ta
dva teksta, njihovi n-gramski profili čine trening skup. Test skup će biti dobijen na osnovu četiri kratka teksta od
kojih su dva na srpskom označena sa S2 i S3, a dva na engleskom jeziku označena sa E2 i E3. Klasifikacija će
biti izvršena pomoću algoritma jednog najbližeg suseda. U tekstovima na srpskom jeziku nisu korišćena srpska
slova kako bi se izbegla laka identifikacija na osnovu pisma.

S1: U prethodnom delu prikazani su teorijski okviri i algoritmi pomocu kojih je moguce sprovoditi logicko
zakljucivanje. Iako zakljucci moraju nuzno slediti iz zadatih pretpostavki, proces njihovog dokazaivanja nije
pravolinijski vec ukljucuje odredene odluke o pravcu u kome ce se postupak sprovoditi. Drugim recima, uocljivo
je traganje za dokazom nekog tvrdenja. Primera radi, u primeni procedure DPLL moguce je uociti i korake
zakljucivanja i korake pretrage. Kada se uoci jedinicna klauza u nekoj formuli, njeno zadovoljenje je nuzno i
predstavlja korak zakljucivanja. S druge strane kada je nemoguce direktno zakljucivanje, potrebno je pretpostaviti

9)
vrednost iskazne promenljive. U daljem toku dokazivanja, ta akcija ce se pokazati kao opravdana ili neopravdana.
U slucaju da se pokaze kao neopravdana, preduzima se alternativna akcija. Znaci, situacija u kojoj nije moguce

1
izvrsiti direktno zakljucivanje zahteva primenu pretrage.
Manje apstraktan primer je upravljanje robotskom rukom. Pretpostavimo da robotska ruka ima nekoliko me-

20
hanickih zglobova cije se kretanje kontrolise elektricnim impulsima. Pritom, neki zglobovi omogucavaju rotacije
samo oko jedne ose (kao ljudski lakat ili zglobovi na pristima), a drugi rotaciju oko veceg broja osa (kao ljudsko

(
rame ili zglobovi u korenu prstiju). Pokret hvatanja case ovakvom robotskom rukom je netrivijalan zadatak,
ali se moze razbiti na sekvencu atomicnih koraka — pokreta pojedinacnih zglobova oko razlicitih osa za odreden
je
ugao. Mozemo zamisliti da se ovi koraci izvrsavaju strogo jedan po jedan u kom bi slucaju kretanje ruke bilo
znacajno razlicito od ljudskog i sporo, ali bi problem bio laksi jer ne bi bila potrebna sinhronizacija razlicitih
an
zglobova i svaki bi se pojedinacno dovodio u zeljeni polozaj. Druga mogucnost je da se kretanja zglobova izvode
simultano, kao kod coveka, pri tom povecavajuci broj mogucih kombinacija u svakom trenutku.
izd

Dati primeri motivisu razmisljanje o pretrazi kao o nalazenju niza akcija kojima se ostvaruje cilj kada
to ne moze biti ostvareno pojedinacnim akcijama. Iako u opstem slucaju ovakva definicija ne mora delovati
adekvatno, u kontekstu vestacke inteligencije u kome obicno pretpostavljamo postojanje nekog entiteta koji deluje
preduzimanjem nekih akcija (agenta), ona je prirodna.
ko

E1: There are two paths to achieving an AGI, says Peter Voss, a software developer and founder of the firm
ns

Adaptive A.I. Inc. One way, he says, is to continue developing narrow AI, and the systems will become generally
competent. It will become obvious how to do that. When that will happen or how it will come about, whether
through simbots or some DARPA challenge or something, I dont know. It would be a combination of those kinds
tro

of things. The other approach is to specifically engineer a system that can learn and think. Thats the approach
that [my firm] is taking. Absolutely I think thats possible, and I think its closer than most people think five to 10
years, tops. The two approaches outlined by Vosseither tinkering with mundane programs to make them more
ek

capable and effective or designing a single comprehensive AGI system speak to the long-standing philosophical
feud that lies at the heart of AI research: the war between the neats and the scruffies. J. Storrs Hall, author
El

of Beyond AI: Creating the Conscience of the Machine (Prometheus Books, 2007), reduces this dichotomy to a
scientific approach vs. an engineering mind-set. The neats are after a single, elegant solution to the answer of
human intelligence, Hall says. Theyre trying to explain the human mind by turning it into a math problem. The
scruffies just want to build something, write narrow AI codes, make little machines, little advancements, use
whatever is available, and hammer away until something happens. The neat approach descends from computer
science in its purest form, particularly the war game studies of Von Neumann and his colleagues in the 1930s and
1940s. The 1997 defeat of world chess champion Garry Kasparov by IBMs Deep Blue computer is considered by
many the seminal neat success. Up until that moment, the mainstream scientific community generally accepted
the premise that AIs could be written to perform specific tasks reasonably well, but largely resisted the notion of
superhuman computing ability. Deep Blue proved that an AI entity could outperform a human at a supposedly
human task, perceiving a chess board (Deep Blue could see 200 million board positions per second) and plotting
a strategy (74 moves ahead as opposed to 10, the human record).

S2: Precizni postupci za resavanje matematickih problema postojali su u vreme starogrckih matematicara (npr.
Euklidov algoritam za odredivanje najveceg zajednickog delioca dva broja), a i pre toga. Ipak, sve do pocetka
dvadesetog veka nije se uvidala potreba za preciznim definisanjem pojma algoritma. Tada je, u jeku reforme i
novog utemeljivanja matematike, postavljeno pitanje da li postoji algoritam kojim se (pojednostavljeno receno)
185 11. Nadgledano mašinsko učenje

mogu dokazati sve matematicke teoreme. Da bi se ovaj problem uopste razmatrao, bilo je neophodno najpre
definisati (matematicki precizno) sta je to precizan postupak, odnosno sta je to algoritam.

S3: Dositej Obradovic (svetovno ime Dimitrije) (Cakovo, 1744 — Beograd, 1811) je bio srpski prosvetitelj
i reformator revolucionarnog perioda nacionalnog budjenja i preporoda. Rodjen je u rumunskom delu Banata
tadasnje Austrije. Skolovao se za kaludjera, ali je napustio taj poziv i krenuo na putovanja po celoj Evropi,
gde je primio ideje evropskog prosvetiteljstva i racionalizma. Ponesen takvim idejama radio je na prosvecivanju
svog naroda, prevodio je razna dela medju kojima su najpoznatije Ezopove basne, a potom je i sam pisao dela,
prvenstveno programskog tipa, medju kojima je najpoznatije „Zivot i prikljucenija“. Dositej je bio prvi popecitelj
(ministar) prosvete u Sovjetu i tvorac svecane pesme „Vostani Serbie“. Njegovi ostaci pocivaju u Beogradu, na
ulazu u Sabornu crkvu.

E2: The planet Mars, I scarcely need remind the reader, revolves about the sun at a mean distance of 140,000,000
miles, and the light and heat it receives from the sun is barely half of that received by this world. It must be, if

9)
the nebular hypothesis has any truth, older than our world; and long before this earth ceased to be molten, life
upon its surface must have begun its course. The fact that it is scarcely one seventh of the volume of the earth
must have accelerated its cooling to the temperature at which life could begin. It has air and water and all that

1
is necessary for the support of animated existence.

20
E3: Principia Mathematica, the landmark work in formal logic written by Alfred North Whitehead and Ber-

(
trand Russell, was first published in three volumes in 1910, 1912 and 1913. Written as a defense of logicism
je
(the view that mathematics is in some significant sense reducible to logic) the book was instrumental in de-
veloping and popularizing modern mathematical logic. It also served as a major impetus for research in the
an
foundations of mathematics throughout the twentieth century. Along with the Organon written by Aristotle and
the Grundgesetze der Arithmetik written by Gottlob Frege, it remains one of the most influential books on logic
ever written.
izd

Prilikom izdvajanja 𝑛-grama korišćena je vrednost 𝑛 = 3. Pritom je iz tekstova S1 i E1 izdvojeno po 10


najfrekventnijih 𝑛-grama. Oni će činiti atribute instanci na osnovu kojih će biti vršeno treniranje i testiranje.
ko

Trening i test skup su dati u tabeli 11.1.

N-gram Trening skup Test skup


ns

S1 E1 S2 S3 E2 E3
JE_ 0.0129 0 0.0131 0.0201 0 0
tro

_PR 0.0125 0.0023 0.0098 0.0148 0 0


ANJ 0.0076 0 0.0082 0.0027 0 0
_KO 0.0076 0 0.0016 0.0027 0 0
ek

JA_ 0.0076 0 0.0033 0.0040 0 0


_JE 0.0067 0 0.0082 0.0121 0 0
El

_PO 0.0067 0.0009 0.0147 0.0080 0 0.0016


_SE 0.0062 0.0018 0.0049 0.0027 0.0016 0.0032
NJE 0.0058 0 0.0065 0.0027 0 0
_U_ 0.0058 0 0.0033 0.0067 0 0
_TH 0 0.0212 0 0 0.0270 0.0175
THE 0 0.0148 0 0 0.0202 0.0191
HE_ 0 0.0120 0 0 0.0185 0.0127
ING 0 0.0088 0 0 0.0017 0.0032
NG_ 0 0.0078 0 0 0.0034 0.0048
_CO 0.0004 0.0074 0 0 0.0051 0
ER_ 0.0009 0.0069 0 0 0.0051 0.0032
ND_ 0 0.0065 0 0 0.0101 0.0079
_TO 0.0018 0.0065 0.0049 0 0.0034 0.0016
TO_ 0.0009 0.0065 0.0033 0 0.0034 0.0016
Tabela 11.1: Trening i test skup za klasifikaciju tekstova prema jeziku. Za svaki 3-gram prikazana je njegova
frekvencija u tekstu S1 i E1.
11.3. Klasifikacija 186

Prilikom klasifikacije biće korišćeno Euklidsko rastojanje



⎸𝑚
⎸∑︁
𝑑(𝑥, 𝑦) = ⎷ (𝑥𝑖 − 𝑦𝑖 )2
𝑖=1

Potrebno je ispitati rastojanja od instanci test skupa do instanci trening skupa.

𝑑(𝑆2, 𝑆1) = 0.0124


𝑑(𝑆2, 𝐸1) = 0.0417

𝑑(𝑆3, 𝑆1) = 0.0133


𝑑(𝑆3, 𝐸1) = 0.0450

𝑑(𝐸2, 𝑆1) = 0.0482

9)
𝑑(𝐸2, 𝐸1) = 0.0149

𝑑(𝐸3, 𝑆1) = 0.0397

1
𝑑(𝐸3, 𝐸1) = 0.0141

20
Pošto je rastojanje od instance S2 do S1 manje nego od S2 do E1, zaključuje se da je S1 najbliži sused

(
instance S2. Zbog toga se instanca S2 prepoznaje kao tekst na sprskom jeziku. Slično se ispravno zaključuje i
da je S3 tekst na srpskom, E2 tekst na engleskom i E3 takode, tekst na engleskom jeziku. Posebno je zanimljivo
je
da tekstovi S3 i E2 po svom sadržaju nemaju dodira sa instancama za trening S1 i E1 što ne ometa postupak
klasifikacije.
an
11.3.3 Učenje stabala odlučivanja
izd

Razmotrimo igru 20 pitanja. Jedan igrač zamišlja neki predmet, a drugi treba da pogodi o kom je predmetu
reč. Kako bi pogodio o kom predmetu se radi igrač koji pogada ima pravo da postavi 20 pitanja na koje odgovor
može biti da ili ne. Kada misli da je postavio dovoljno pitanja, igrač može dati svoj sud o kom predmetu se radi
ko

i igra se završava. Očito, proces ispitivanja se može predstaviti u vidu stabla koje u svakom čvoru ima po jedno
pitanje, osim u listovima u kojima se nalazi sud igrača o nepoznatom predmetu. Svaki čvor osim listova ima
dve grane označene sa da ili ne koje vode u podstablo koje odgovara nastavku ispitivanja posle razmatranog
ns

pitanja. Ovo je primer stabla odlučivanja.


Ovakva stabla se mogu uopštiti zanemarivanjem ograničenja na 20 pitanja i tako što bi se dozvolilo da
tro

odgovori ne moraju biti samo da ili ne, već da mogu pripadati odredenom unapred definisanom skupu za dato
pitanje. Ovakva stabla se mogu automatski naučiti iz primera koji za svaku instancu uključuju vrednosti njenih
atributa i vrednost ciljne promenljive za tu instancu.
ek

Učenje stabala odlučivanja je metod aproksimacije diskretnih ciljnih promenljivih pri kome se model pred-
stavlja u vidu stabla. Slično igri 20 pitanja, svakom čvoru stabla odgovara test nekog atributa instance, a
grane koje izlaze iz čvora različitim vrednostima tog atributa. Listovima odgovaraju predvidene vrednosti ciljne
El

promenljive. Instance su opisane vrednostima svojih atributa. Klasifikuju se polazeći od korena, spuštajući se
niz granu koja odgovara vrednosti testiranog atributa instance koju klasifikujemo. Klasa se dodeljuje instanci
kad se dode do lista.
Učenje stabala odlučivanja je već primenjeno u različitim problemima. Jedan primer se odnosi na predvidanje
buduće potražnje za knjigama u bibliotekama, na osnovu nekih njihovih atributa (na primer jezik, datum
objavljivanja, datum poslednjeg iznajmljivanja itd.). Knjige za koje se predvida da neće biti skoro tražene se
mogu smestiti u magacin. Istraživanje je radeno u biblioteci univerziteta Harvard. Sredinom devedesetih stabla
odlučivanja su primenjena u klasifikaciji tumora i prognozi njihovog ponašanja. Svaka instanca je opisivana
pomoću 31 atributa, a klasifikacije su date nezavisno od strane više stručnjaka. U astronomiji stabla odlučivanja
su primenjena u cilju razlikovanja zvezda i tragova kosmičkih zraka na snimcima teleskopa Habl. Na osnovu
20 numeričkih karakteristika, sa stablima dubine do 9 čvorova, postignuta je preciznost klasifikacije od 95%.
Takode postoje primene i u ekonomiji i drugim oblastima.
Korišćenje stabla odlučivanja nije podjednako pogodno za sve probleme učenja. Skup vrednosti atributa bi
trebalo da bude diskretan i mali, mada se na kontinualne atribute može primeniti diskretizacija tako što bi se
skup podelio u podintervale. Svakom podintervalu se pridružuje oznaka koja zamenjuje vrednosti atributa iz tog
intervala u zapisima instanci. Stabla odlučivanja se pokazuju posebno primenljiva u slučaju kada je neophodno
predstavljanje disjunkcija uslova.
187 11. Nadgledano mašinsko učenje

Ukoliko stablo odlučivanja instanci dodeljuje neku klasu, to znači da instanca ispunjava sve uslove koji su
definisani putanjom od korena do odgovarajućeg lista kroz stablo i oblika su atribut=vrednost. Stoga putanje
kroz stablo predstavljaju konjunkcije ovakvih uslova. Za svaku klasu moguće je uočiti putanje koje se završavaju
listovima koji odgovaraju toj klasi. Disjunkcija svih takvih konjunkcija definiše instance koje pripadaju datoj
klasi prema datom stablu.
Jedan od najpoznatijih algoritama za učenje stabla odlučivanja je ID3 na koji ćemo se skoncentrisati. Ovaj
algoritam konstruiše stablo od korena, naniže, pitajući se u svakom čvoru koji je najbolji atribut koji se u
datom čvoru može testirati. Ovo se odreduje statističkim kriterijumom koji meri koliko dobro neki atribut sam
klasifikuje podatke. Atribut ne može biti dva puta korišćen u jednoj putanji od korena do lista. Za sve vrednosti
odabranog atributa kreiraju se grane do čvorova naslednika, a podaci za treniranje se dele izmedu ovih čvorova
tako da svaki od njih nasleduje primere koji imaju odgovarajuću vrednost prethodno testiranog atributa. Za
svaki od čvorova naslednika ovaj postupak se rekurzivno primenjuje sve dok nije ispunjen bar jedan od sledeća
dva uslova: (1) u putanji od korena do trenutnog čvora iskorišćeni su svi atributi, ili (2) sve instance za trening
koje su pridružene trenutnom čvoru imaju istu vrednost ciljnog atributa. Svakom listu se pridružuje najčešća
oznaka instanci za trening koje su mu pridružene. Algoritam je preciznije dat na slici 11.15.

9)
Algoritam: ID3(𝑃 𝑟𝑖𝑚𝑒𝑟𝑖, 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖)

1
Ulaz: 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖 je skup instanci za trening, a 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 je lista atributa koji se mogu testirati u čvorovima stabla

20
Izlaz: Stablo odlučivanja koje odgovara datim instancama

(
1: napravi koreni čvor stabla 𝑅;
2: ako sve instance iz 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖 pripadaju istoj klasi onda
3: vrati čvor 𝑅 sa oznakom te klase; je
an
4: ako je 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 prazna lista onda
5: vrati čvor 𝑅 označen oznakom najčešće klase koja se javlja u 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖;
izd

6: inače
7: neka je 𝐴 ∈ 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 najbolji atribut (prema nekom statističkom kriterijumu) za testiranje u odnosu na
𝑃 𝑟𝑖𝑚𝑒𝑟𝑖;
8: označi čvor 𝑅 atributom 𝐴;
ko

9: za svaku moguću vrednost 𝑣𝑖 atributa 𝐴 radi


10: dodaj granu iz 𝑅 koja odgovara testu 𝐴 = 𝑣𝑖 ;
11: neka je 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖𝑣𝑖 podskup od 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖 takav da svi njegovi elementi imaju vrednost 𝑣𝑖 atributa
ns

𝐴;
12: ako je skup 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖𝑣𝑖 prazan onda
tro

13: na dodatu granu iz 𝑅 dodaj list sa oznakom najčešće klase u 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖;


14: inače
15: na dodatu granu nadoveži podstablo ID3(𝑃 𝑟𝑖𝑚𝑒𝑟𝑖𝑣𝑖 ,𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 ∖ {𝐴});
ek

16: vrati 𝑅.
El

Slika 11.15: Algoritam ID3

Bitno je pitanje statističkog kriterijuma koji će biti korišćen za izbor najboljeg atributa za testiranje u nekom
čvoru. ID3 bira atribut koji maksimizuje takozvani dobitak informacije na skupu instanci koje su pridružene
posmatranom čvoru. Dobitak informacije predstavlja razliku entropije u odnosu na ciljni atribut skupa instanci
za trening 𝑆 pre deljenja i prosečne entropije posle deljenja prema nekom atributu 𝐴. Entropija predstavlja
meru neuredenosti nekog sistema. Ako sa 𝑝𝑖 označimo verovatnoću da instanca pripada 𝑖-toj klasi, onda se
entropija može definisati sledećim izrazom:
𝑐
∑︁
𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆) = − 𝑝𝑖 𝑙𝑜𝑔2 𝑝𝑖
𝑖=1

Po definiciji važi 0 · log2 0 = 0. Entropija se može interpretirati i kao minimalni očekivani broj bitova potrebnih
za kodiranje klasifikacije proizvoljne instance iz 𝑆. Primera radi, neka je potrebno poslati informaciju o klasi
instance udaljenom primaocu. Neka je broj klasa 𝑐 i neka je 𝑝0 = 1 (tada je 𝑝𝑖 = 0 za 1 ≤ 𝑖 ≤ 𝑐). U tom slučaju
je sigurno da će instanca imati klasifikaciju 0 i nije potrebno nikakvo kodiranje informacije. U slučaju da je
𝑝𝑖 = 1/𝑐 za 0 ≤ 𝑖 ≤ 𝑐, svi ishodi su jednako verovatni i za kodiranje je potrebno iskoristiti 𝑙𝑜𝑔2 𝑐 bitova. U slučaju
11.3. Klasifikacija 188

raspodele koja nije uniformna, dodeljujući kraće kodove klasama koje se češće javljaju, a duže onima koje se
rede javljaju, može se dobiti manja prosečna dužina kodiranja. Notacija 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆|𝑎) označava entropiju
skupa instanci iz 𝑆 koje imaju 𝑎 kao vrednost nekog atributa. Pritom, iz konteksta će biti jasno o kom atributu
je reč. Dobitak informacije stoga predstavlja smanjenje u potrebnom broju bitova za kodiranje klase proizvoljne
instance, kada je poznata vrednost koju na njoj ima atribut 𝐴. Dobitak informacije se formalno definiše na
sledeći način:
∑︁ |𝑆𝑣 |
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐴) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆) − 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆𝑣 ) (11.2)
|𝑆|
𝑣∈𝑉 𝑟𝑒𝑑(𝐴)

gde je 𝑐 broj klasa, odnosno vrednosti ciljnog atributa, 𝑝𝑖 udeo instanci iz skupa 𝑆 koje pripadaju klasi 𝑖 u
celom skupu 𝑆, 𝑉 𝑟𝑒𝑑(𝐴) predstavlja skup svih mogućih vrednosti atributa 𝐴, a 𝑆𝑣 = {𝑠 ∈ 𝑆|𝐴(𝑠) = 𝑣}, gde
𝐴(𝑠) označava vrednost atributa 𝐴 za instancu 𝑠.
Pored entropije, postoje i druge mere koje se mogu koristiti za merenje neuredenosti nekog skupa. Jedna
jednostavna mera je greška klasifikacije. Ona predstavlja grešku koja se čini ukoliko se sve instance nekog skupa
klasifikuju u najbrojniju klasu u tom skupu. Stoga, ako je 𝑝𝑖 verovatnoća da instanca pripada 𝑖-toj klasi, greška
klasifikacije se definiše izrazom

9)
𝐸𝑟𝑟(𝑆) = 1 − max 𝑝𝑖
𝑖

1
Za ovu meru se može definisati dobitak analogan opisanom dobitku informacije ukoliko se u izrazu 11.2 entropija
zameni greškom klasifikacije.

20
Primer 11.12. U tabeli 11.2 su date instance koje opisuju različite životinje, sa datom klasifikacijom koja

(
označava da li je životinja opasna po čoveka. Izdvojeno je nekoliko karakteristika koje bi mogle biti relevantne
u odredivanju vrednosti ciljnog atributa, ali su namerno dodata dva atributa koji nisu relevantna — broj nogu i
da li životinja živi u Evropi.
je
an
Životinja Veličina Ishrana Otrovnost Noge Evropa Opasna
Lav Velika Meso Ne 4 Ne Da
izd

Mačka Mala Meso Ne 4 Da Ne


Koala Mala Biljke Ne 4 Ne Ne
Zec Mala Biljke Ne 4 Da Ne
Komodo zmaj Velika Meso Da 4 Ne Da
ko

Tabela 11.2: Skup primera za trening


ns

Da bi se izgradilo stablo odlučivanja, za svaki od atributa je potrebno izračunati dobitak informacije pri
deljenju skupa podataka prema tom atributu. U prvom koraku, važi:
tro

2 2 3 3
𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆) = − log2 − log2 = 0.971
5 5 5 5
ek

Ukoliko se izvrši podela instanci po vrednosti prvog atributa, dobijamo


El

𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆|𝑀 𝑎𝑙𝑎) = −1 · log2 1 − 0 · log2 0 = 0

𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆|𝑉 𝑒𝑙𝑖𝑘𝑎) = −0 · log2 0 − 1 · log2 1 = 0

2 3
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑉 𝑒𝑙𝑖𝑐𝑖𝑛𝑎) = 0.971 − · 0 − · 0 = 0.971
5 5
Slično se dobija:

𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐼𝑠ℎ𝑟𝑎𝑛𝑎) = 0.42


𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑂𝑡𝑟𝑜𝑣𝑛𝑜𝑠𝑡) = 0.322
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑁 𝑜𝑔𝑒) = 0
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐸𝑣𝑟𝑜𝑝𝑎) = 0.42
Odavde se vidi da je najbolji atribut za testiranje u prvom čvoru atribut Veličina. Stablo koje se u ovom
slučaju dobija primenom algoritma ID3 je dato na slici 11.16. U slučaju datih primera za učenje, dobijeno stablo
je bilo očigledan izbor i bez primene bilo kakve metodologije.
189 11. Nadgledano mašinsko učenje

VELIČINA

mala velika

NE DA

Slika 11.16: Jednostavno stablo odlučivanja

Životinja Veličina Ishrana Otrovnost Noge Evropa Opasna


Zmija Mala Meso Da 0 Da Da

9)
Pčela ubica Mala Biljke Da 6 Ne Da
Morska krava Velika Biljke Ne 0 Ne Ne

1
20
Tabela 11.3: Dodatni primeri za trening

(
Nešto komplikovanije stablo odlučivanja može se dobiti dodavanjem primera iz tabele 11.3.
je
Jedno ručno konstruisano stablo koje je saglasno sa podacima za trening je dato na slici 11.17. Izbor lošeg
atributa za testiranje u korenom čvoru je namerno učinjen. To dovodi do potrebe za ponavljanjem istih testova u
an
levom i desnom podstablu, pošto informacija dobijena testiranjem u korenu nije relevantna za odredivanje klase
instance. Takode, u slučaju životinja koje žive u Evropi, prisutan je nepotreban test vezan za njenu ishranu. U
oba slučaja klasa je ista, pa se taj test može zameniti listom sa klasom 𝐷𝐴. Upotreba ID3 algoritma daje bolje
izd

stablo odlučivanja.

EVROPA
ko

ne da
ns

OTROVNOST OTROVNOST
tro

ne da ne da
ek

VELIČINA ISHRANA VELIČINA DA


El

mala velika biljke meso mala velika

NE DA DA DA NE DA

Slika 11.17: Ručno konstruisano stablo odlučivanja

Vrednosti entropije i dobitka informacije se sada razlikuju:

1 1 1 1
𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆) = − log2 − log2 = 1
2 2 2 2
Ukoliko se izvrši podela instanci po vrednosti prvog atributa, dobijamo

3 3 2 2
𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆|𝑀 𝑎𝑙𝑎) = − log2 − log2 = 0.971
5 5 5 5
1 1 2 2
𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆|𝑉 𝑒𝑙𝑖𝑘𝑎) = − log2 − log2 = 0.918
3 3 3 3
11.3. Klasifikacija 190

5 3
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑉 𝑒𝑙𝑖𝑐𝑖𝑛𝑎) = 1 − · 0.971 − · 0.918 = 0.049
8 8
Slično se dobija:

𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐼𝑠ℎ𝑟𝑎𝑛𝑎) = 0.189


𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑂𝑡𝑟𝑜𝑣𝑛𝑜𝑠𝑡) = 0.549
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑁 𝑜𝑔𝑒) = 0
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐸𝑣𝑟𝑜𝑝𝑠𝑘𝑎) = 0.02
Posle dodavanja novih instanci, najbolji atributi za testiranje su Otrovnost i Ishrana. Rekurzivnom primenom
ovog postupka dobija se stablo na slici 11.18. Ono je očigledno manje od ručno konstruisanog i ima relevantnije
atribute pri vrhu stabla, dok se dva nebitna atributa uopšte ne testiraju.

OTROVNOST

1 9)
ne da

20
VELIČINA DA

(
mala velika

NE ISHRANA
je
an
biljke meso
izd

NE DA
ko

Slika 11.18: Stablo odlučivanja konstruisano pomoću ID3 algoritma


ns

Učenje stabala odlučivanja nije formulisano u skladu sa osnovnom shemom dizajna algoritama nadgledanog
učenja. Kao i drugi metodi učenja, ID3 se može shvatiti kao pretraga skupa dopustivih modela za onim koji
tro

„najbolje“ odgovara podacima za trening, ali nije lako formulisati tačan kriterijum u odnosu na koji je dobijeno
stablo najbolje. Odnosno, nije očigledno koja se tačno veličina optimizuje metodama učenja koje grade stabla
odlučivanja. Čak i kad daju dobre rezultate u primenama, ovo nije poželjno jer znači da ne razumemo sasvim na
ek

koji način rade. Ipak, može se konstatovati nekoliko stvari koje razumemo. Prostor pretrage je potpun prostor
svih stabala odlučivanja. Svaka diskretna funkcija se može predstaviti nekim stablom odlučivanja, tako da se
El

učenjem stabala odlučivanja za empirijski rizik može postići vrednost 0 ukoliko podaci nisu protivrečni. ID3 u
svakom trenutku čuva samo jedan tekući model, pa je nemoguće znati koliko ima drugih modela koji su saglasni
sa podacima za trening. Pošto nema vraćanja u pretrazi (backtracking), već se stablo gradi od jednostavnijeg
ka složenijem, postoji opasnost od dostizanja lokalnih optimuma koji nisu globalni.
Treba primetiti da ID3 preferira stabla sa manjom dubinom, kao i stabla u kojima se atributi koji nose
veći dobitak informacije nalaze bliže korenu. Ovo je posledica toga što izgradnja stabla počinje od praznog
stabla pri čemu se dodaje nivo po nivo i načina na koji se biraju atributi koji se pridružuju čvorovima. Afinitet
prema kraćim stablima je zanimljiva pretpostavka jer je u skladu sa odavno poznatim filozofskim principom
kojim se često vode i naučnici - Okamovom oštricom: entitete ne treba umnožavati preko potrebe, odnosno
najjednostavnije objašnjenje je verovatno i najbolje. Stabla odlučivanja sa manjom dubinom imaju manji broj
listova. Svakoj putanji od korena do nekog od listova odgovara po jedno pravilo oblika

𝐼𝐹 𝐴1 = 𝑣1 ∧ 𝐴2 = 𝑣2 ∧ ... ∧ 𝐴𝑛 = 𝑣𝑛 𝑇 𝐻𝐸𝑁
𝐾𝑙𝑎𝑠𝑎 = 𝑘𝑙𝑎𝑠𝑎 𝑘𝑜𝑗𝑎 𝑜𝑑𝑔𝑜𝑣𝑎𝑟𝑎 𝑙𝑖𝑠𝑡𝑢

gde su 𝐴𝑖 0 ≤ 𝑖 ≤ 𝑛 atributi koji se testiraju na putanji od korena do odgovarajućeg čvora, a 𝑣𝑖 njihove vrednosti
za datu instancu. Kako stabla sa manjom dubinom, predstavljaju manje skupove ovakvih pravila, možemo ih
smatrati jednostavnijim.
191 11. Nadgledano mašinsko učenje

Kako formulacija učenja stabala odlučivanja nije u okvirima ranije diskutovane sheme dizajna algoritama
nadgledanog učenja, vredi osvrnuti se na problem preprilagodavanja. Sa povećanjem dozvoljene dubine stabla,
povećava se moć učenja, odnosno verovatnoća da će u skupu dopustivih modela biti naden onaj koji dobro
opisuje podatke. Zato se sa povećanjem dozvoljene dubine stabala, smanjuje empirijski rizik. Medutim, ako
nema ograničenja na dubinu stabla, takav skup modela je očigledno vrlo bogat i stoga postoji opasnost od
preprilagodavanja. Jedan pristup rešavanju ovog problema je ograničavanje maksimalne dubine stabla nakon
koje algoritam učenja neće dalje razgranavati stablo. O načinu na koji se vrši izbor dubine biće reči kasnije,
pošto se bira na sličan način kao vrednost regularizacionog parametra 𝜆. Zapravo, kako se ovom tеhnikom
smanjuje fleksibilnost modela u vreme učenja, ona se upravo može smatrati vidom regularizacije.

11.3.4 Mere kvaliteta klasifikacije


Kada se govori o traženju modela koji najbolje aproksimira ciljnu promenljivu, potrebno je dati i mere kva-
liteta modela, odnosno učenja. Mogu se koristiti različite mere u zavisnosti od vrste problema, ali za neke vrste
problema već postoje neke opšte prihvaćene mere. U slučaju problema klasifikacije se obično koristi preciznost,
odnosno broj tačno klasifikovanih instanci podeljen ukupnim brojem instanci. U primeru sa prepoznavanjem

9)
računarskih članaka, smo upravo koristili preciznost kao meru kvaliteta. Ako je 𝑛 ukupan broj članaka i ako sa
𝑟 označimo broj računarskih članaka koji su klasifikovani kao računarski članci i sa 𝑜 broj ostalih članaka koji

1
su klasifikovani kao da nisu računarski, tada je preciznost u tom primeru

20
𝑟+𝑜
𝑝=
𝑛

(
U nekim slučajevima preciznost nije adekvatna mera. Ukoliko postoje dve klase i jedna je značajno manja
od druge, moguće je dobiti visoku preciznost tako što će se sve instance klasifikovati u veću grupu. Takav
je
je slučaj sa testovima koji ustanovljavaju da li je pacijent oboleo od neke bolesti. Neka bolest ima samo 1%
an
ljudi u populaciji. Test koji bi uvek prijavljivao da pacijent nema bolest bi imao preciznost od 99%, ali je
neupotrebljiv. Stoga je u takvim slučajevima bitna mera osetljivost klasifikatora, odnosno njegova mogućnost
da primeti instance koje se traže (na primer bolesne pacijente). Opštije, neka su date dve klase 𝐶+ i 𝐶−
izd

koje smatramo pozitivnim i negativnim primerima neke kategorije. Na primer pacijenti koji imaju i pacijenti
koji nemaju neku bolest. Tada pod stvarno pozitivnim instancama podrazumevamo pozitivne instance koje su
prepoznate kao pozitivne. Pod stvarno negativnim, instance koje su negativne i prepoznate kao negativne. Pod
lažno pozitivnim podrazumevamo instance koje su negativne, ali su greškom u klasifikaciji proglašene pozitivnim
ko

i pod lažno negativnim podrazumevamo instance koje su pozitivne, ali su greškom klasifikovane kao negativne.
Brojeve ovih instanci označavamo redom 𝑆𝑃 , 𝑆𝑁 , 𝐿𝑃 i 𝐿𝑁 . Ove brojeve obično zapisujemo u takozvanoj
ns

matrici konfuzije koja po vrstama prikazuje kako su instance klasifikovane, a po kolonama prikazuje koje su
stvarne klase instanci. Ova matrica je prikazana tabelom 11.4.
tro

P N
KP 𝑆𝑃 𝐿𝑃
KN 𝐿𝑁 𝑆𝑁
ek

Tabela 11.4: Vrste matrice konfuzije u zbiru daju broj instanci koje su klasifikovane pozitivno (KP) i broj
instanci koje su klasifikovane negativno (KN). Kolone u zbiru daju broj instanci koje su stvarno pozitivne (P)
El

ili negativne (N).

Kada su poznati ovi brojevi, udeo stvarno pozitivnih instanci, odnosno osetljivost je definisana kao:
𝑆𝑃
𝑈 𝑆𝑃 =
𝑆𝑃 + 𝐿𝑁
odnosno broj stvarno pozitivnih podeljen brojem svih pozitivnih (i onih koji su klasifikovani kao pozitivni i onih
koji su greškom klasifikovani kao negativni). Udeo stvarno negativnih se analogno definiše
𝑆𝑁
𝑈 𝑆𝑁 =
𝑆𝑁 + 𝐿𝑃
Udeo lažno pozitivnih i lažno negativnih se definišu slično:
𝐿𝑃 𝐿𝑁
𝑈 𝐿𝑃 = 𝑈 𝐿𝑁 =
𝐿𝑃 + 𝑆𝑁 𝐿𝑁 + 𝑆𝑃
Preciznost se može izračunati kao
𝑆𝑃 + 𝑆𝑁
𝑃 𝑟𝑒𝑐 =
𝑆𝑃 + 𝐿𝑃 + 𝑆𝑁 + 𝐿𝑁
11.4. Tehnike evaluacije i konfigurisanja algoritama učenja 192

Primer 11.13. Neka je testirano 400 ispitanika. Od toga 4 imaju bolest zbog koje se testiraju, a ostali ne. Neka
je test dao pozitivnu klasifikaciju u slučaju 2 osobe koje obe imaju bolest. Matrica konfuzije data je tabelom 11.13

P N
KP 2 0
KN 2 396
Tabela 11.5: Matrica konfuzije vezana za klasifikaciju obolelih.

Odavde se mogu izračunati mere kvaliteta:

398
𝑃 𝑟𝑒𝑐 = = 0.995
400
2
𝑈 𝑆𝑃 = = 0.5
4

9)
396
𝑈 𝑆𝑁 = =1
396

1
0

20
𝑈 𝐿𝑃 = =0
396
2

(
𝑈 𝐿𝑁 = = 0.5
4

je
Preciznost je izuzetno visoka i sugeriše odlično ponašanje klasifikatora. S druge strane poznavanje udela
stvarno pozitivnih otkriva da je ovaj utisak lažan zato što je identifikovan mali broj elemenata pozitivne klase.
an
11.4 Tehnike evaluacije i konfigurisanja algoritama učenja
izd

Do sada je prikazano nekoliko mera kvaliteta koje služe za evaluaciju regresionih i klasifikacionih modela.
Pored izbora same mere, bitno je izabrati i način na koji se ta mera ocenjuje. Česta praksa je da se model
trenira na jednom skupu podataka, a da se evaluira na odvojenom skupu podataka za testiranje. Pritom se
ko

podela raspoloživih podataka na podatke za trening i podatke za testiranje vrši slučajnim izborom podataka
za testiranje. Medutim, ovakav način evaluacije može dovesti do značajnih oscilacija u vrednostima mera
kvaliteta u zavisnosti od toga koji je podskup izabran. Pouzdaniji način evaluacije naučenog znanja je takozvana
ns

unakrsna validacija (eng. cross-validation). Ceo skup podataka kojim se raspolaže se deli na 𝑛 približno jednakih
podskupova. Jedan podskup se izdvaja i trening se vrši na ostalih 𝑛 − 1 podskupova. Posle treninga, kvalitet
tro

naučenog znanja se ocenjuje na izdvojenom podskupu. Ovaj postupak se ponavlja za sve ostale izdvojene
podskupove i kao finalna ocena kvaliteta se uzima prosek dobijenih ocena za svaki od podskupova. Za vrednost
𝑛 se obično uzima broj 5 ili 10 i ne preporučuju se mnogo manje ili veće vrednosti. Ovakav postupak daje
ek

stabilniju ocenu kvaliteta. Pored toga, prednost ovog metoda je da se u svakom od 𝑛 koraka unakrsne validacije
koristi velika količina podataka pri treniranju, a da sve raspoložive instance u jednom trenutku budu iskorišćene
za testiranje.
El

Iako nije očigledno da je u vezi sa tehnikama evaluacije, u nastavku će biti razmotreno dugo odlagano
pitanje izbora vrednosti regularizacionog parametra 𝜆, kao i broja suseda 𝑛 i maksimalne dubine stabla za koje
smo najavili da ćemo ih razmatrati skupa. Izbor vrednosti ovih parametara predstavlja samo primer opštijeg
problema konfigurisanja algoritama učenja. U opštem slučaju, algoritmi učenja se mogu podešavati na različite
načine, pri čemu različite konfiguracije daju različite modele za iste ulazne podatke. U nastavku će biti reči
samo o izboru parametra 𝜆, ali se diskusija odnosi i na probleme konfigurisanja algoritama učenja u opštijem
smislu.
Za dati skup podataka, svakoj vrednosti parametra 𝜆 odgovara neka vrednost optimalnih koeficijenata 𝑤𝜆 i
samim tim neki model 𝑓 (𝑥, 𝑤𝜆 ). Postavlja se pitanje koji od ovih modela je najbolji. Osim ako nije raspoloživa
velika količina podataka, male vrednosti parametra 𝜆 uzrokuju loše rezultate zbog preprilagodavanja, a velike
vrednosti uzrokuju loše rezultate zbog premale fleksibilnosti modela. Poželjne vrednosti parametra se obično
nalaze negde izmedu dva ekstrema. Stoga je prvi korak u pronalaženju pogodne vrednosti odredivanje granica
intervala u kojem će se vrednost tražiti, što se može uraditi eksperimentalno. Recimo interval [10−10 , 105 ] je
verovatno dovoljno širok u većini slučajeva, ali to je ipak potrebno detaljnije razmotriti u konkretnom slučaju.
Potom se formira niz vrednosti parametra koje se ispituju. Na primer, često se koristi geometrijska progresija
𝜆1 = 10−10 , 𝜆2 = 10−9 , . . . , 𝜆11 = 105 . Potom se, grubo rečeno, model za svaku od tih vrednosti evaluira i bira
se najbolji. Ipak, postavlja se pitanje kako se vrši evaluacija.
193 11. Nadgledano mašinsko učenje

Prva ideja bi bila da se za svaku od izabranih vrednosti parametra izvrši treniranje na trening skupu i da
se dobijeni model evaluira na test skupu nekom merom kvaliteta i da se izabere najbolji od njih. Pažljivijim
razmatranjem se uvida da je ovaj postupak pogrešan. Naime, na ovaj način se podaci iz test skupa koriste pri
izboru modela, što je sve deo treninga i samim tim i oni predstavljaju deo trening skupa. Medutim, disjunktnost
trening i test skupa je osnovno pravilo evaluacije modela u mašinskom učenju. Korektan postupak bi bio da se
umesto podele ukupnog skupa podataka na trening i test skup izvrši njegova podela na trening skup, validacioni
skup i test skup. Tada se na trening skupu vrši treniranje svakog od modela (dobijenih za različite vrednosti 𝜆𝑖 ),
na validacionom skupu se vrši evaluacija na osnovu koje se bira najbolji model i potom se taj model evaluira
na test skupu i njegov kvalitet predstavlja finalnu meru kvaliteta učenja.
Prethodni postupak je korektan, ali ponovo se konstatuje da usled slučajnog deljenja podataka na trening
i test skup, može doći do različitih ishoda evaluacije. Prethodno je ovaj problem rešen pomoću unakrsne
validacije i ta tehnika se može primeniti i u ovom slučaju. Medutim, pristup je komplikovaniji. Prvo se,
kao kod standardne unakrsne validacije, ceo skup podataka kojim se raspolaže deli na 𝑛 približno jednakih
podskupova. Jedan podskup se izdvaja i potom se za svaku vrednost 𝜆𝑖 vrši evaluacija odgovarajućeg modela
unakrsnom validacijom na skupu formiranom od preostalih 𝑛 − 1 delova. Najbolji od tih modela se primenjuje
na izdvojeni podskup čime se dobijaju predvidanja za instance iz tog podskupa. Ovaj postupak se ponavlja za

9)
sve ostale izdvojene podskupove, čime se dobijaju predvidanja za sve instance. Na kraju se na osnovu stvarnih
i predvidenih vrednosti ciljne promenljive računa ocena kvaliteta. Opisana tehnika se naziva ugneždenom

1
unakrsnom validacijom pošto se u svakom od 𝑛 koraka unakrsne validacije vrši puna nova unakrsna validacija.

20
Naglasimo da je korišćenje obične unakrsne validacije u kontekstu izbora vrednosti regularizacionog parametra
podjednako pogrešno kao i korišćenje standardne podele na trening i test skup.

(
Pitanja i zadaci
Pitanje 11.1. Da li se mašinsko učenje bavi proučavanjem: je
an
(a) dedukcije;
(b) pretrage;
(c) generalizacije;
izd

(d) optimizacije.
Pitanje 11.2. Kako se naziva proces u kojem se znanje koje važi za neki skup instanci prenosi na neki njegov
nadskup?
ko

Pitanje 11.3. U čemu se razlikuju nadgledano i nenadgledano učenje?


ns

Pitanje 11.4. Kako se zove učenje kod kojeg se algoritmu zajedno sa podacima iz kojih uči daju i željeni
izlazi?
tro

Pitanje 11.5. Kako se u mašinskom učenju zovu atributi instanci čije vrednosti se ne mogu prirodno numerički
opisati?
Pitanje 11.6. Kakve su promenljive koje predvidaju u slučaju klasifikacije, a kakve u slučaju regresije?
ek

Pitanje 11.7. Koji od narednih modela su linearni?


El

• 𝑦 = 𝛽1 𝑥 + 𝛽2 𝑧
• 𝑦 = 𝛽0 + 𝛽1 𝑥2 + 𝛽2 𝑥3
• 𝑦^ = 𝛽^0 + 𝛽^1 log(𝑥) + 𝛽^1 log(𝑥)

• 𝑦^ = 𝛽^0 + 𝛽^1 log(𝑥) + 𝛽^1 log(sin(𝑥))


Pitanje 11.8. Ako se učenje vrši sa siromašnim skupom dopustivih modela, da li to može dovesti do loših
rezultata?
Pitanje 11.9. Ako se učenje vrši sa bogatim skupom dopustivih modela, da li to može dovesti do loših rezultata?
Pitanje 11.10. Šta je čest uzrok lošeg ponašnja modela koji ima dobre mere kvaliteta na trening podacima?
Pitanje 11.11. Koju raspodelu se pretpostavlja da ima šum pri korišćenju linearne regresije?
Pitanje 11.12. Šta je osnovna mera kvaliteta linearne regresije?
Pitanje 11.13. Navesti definiciju srednjekvadratne greške.
11.4. Tehnike evaluacije i konfigurisanja algoritama učenja 194

Zadatak 11.1. Za količine katalizatora od 0,1 i 2 grama, izmerene su brzine hemijske reakcije od 5, 6 i 1 se-
kunde. Pomoću koeficijenta korelacije oceniti kvalitet linearnog modela t=6-2m dobijenog linearnom regresijom
iz datih podataka. Kog znaka je koeficijent korelacije i šta to znači?

Zadatak 11.2. Vrednost evra 3. juna je 100 dinara, 4. juna je 101 dinar, a 5. juna je 105 dinara. Pomoću
linearne regresije predvideti vrednost evra 6., 7. i 8. juna. Stvarne vrednosti tih dana su bile 105, 106 i 107.
Kolika je srednjekvadratna greška tih predvia.nja?

Zadatak 11.3. U eksperimentu sa daljinskim upravljanjem električnim helikopterom, povećanje napona na


elektromotoru za 10, 20 i 30 V rezultovalo je povećanjem brzine za 1, 2 i 6 𝑚/𝑠. Pošto se pretpostavlja da su
promene pravca vetra uticale na postignutu brzinu, potrebno je modelovati zavisnost izmeu. povećanja napona
i dobitka u brzini linearnim modelom koji najbolje odgovara podacima. Na osnovu tog modela, predvideti
povećanje brzine pri povećanju napona za 15, 25 i 35 V.

Zadatak 11.4. Instrument meri brzinu tela u padu. Izmerena brzina je 2m/s u polaznom trenutku, 4 dve
desetinke kasnije, a 6.9 pola sekunde kasnije (u odnosu na polazni trenutak). Linearnom regresijom odrediti

9)
model koji predvidja brzinu tela u buducnosti i proceniti brzinu posle jedne i posle dve sekunde. Na osnovu
modela proceniti ubrzanje sa koje Zemljina teza uzrokuje u kretanju tela.

1
20
Zadatak 11.5. Jedne nedelje januara, u ponedeljak, utorak i petak u podne izmerene su temperature -2, 0 i 1
stepen. Linearnom regresijom proceniti temperaturu u sredu i četvrtak u podne. Koliki je koeficijent korelacije
za dobijeni linearni model?

(
Zadatak 11.6. U toku dana praćena je temperatura vazduha. U 8:00 ujutru je bilo 15 stepeni, a u 10:00
je
je bilo 18 stepeni. Linearnom regresijom odrediti model koji predvidja temperaturu u budućnosti i proceniti
temperaturu u 12:00 i 14:00.
an
Zadatak 11.7. Telo se krece po putu konstanantnom brzinom. Nakon jedne sekunde telo je prešlo 6m od
izd

starta, nakon 2s 8m, a nakon 3s 10m. Koriteći lineranu regresiju odrediti brzinu tela i na kojoj razdaljini od
starta je bilo telo u početnom trenutku.

Pitanje 11.14. Navesti barem dva algoritma klasifikacije.


ko

Pitanje 11.15. Da li su modeli koje grade metode zasnovane na instancama implicitni ili eksplicitni?
ns

Pitanje 11.16. Kako se zove metod klasifikacije koji koristi 𝑛 instanci za koje je rastojanje do instance koja
se klasifikuje najmanje?
tro

Pitanje 11.17. Navesti primer funkcije rastojanja koja se može koristiti u metodi 𝑛 najbližih suseda.

Pitanje 11.18. Da li su u metodu 𝑛 najbližih suseda rezultati bolji za veće vrednosti 𝑛?


ek

Da li u metodu 𝑛 najbližih suseda kvalitet rezultata zavisi od 𝑛?


Da li u metodu 𝑛 najbližih suseda postoji opšte gornje ograničenje za 𝑛?
El

Pitanje 11.19. Instanca (1, 0) pripada klasi 𝐴, instanca (9, 1) pripada klasi 𝐵, a instanca (15, 19) pripada
klasi 𝐶. Kojoj od ovih klasa bi algoritam 𝑛-najbližih suseda pridružio instancu (2, 2) za 𝑛 = 1?

Zadatak 11.8. Date su instance (1,1,A),(1,2,A),(2,1,A),(2,2,B),(3,3,B),(4,4,B), (4,2,C) i (5,2,C), pri čemu


poslednja koordinata predstavlja oznaku klase. Algoritmom 3 najbliža suseda odrediti kojoj klasi pripada in-
stanca (2,4)?

Zadatak 11.9. Algoritmom 3 najbliža suseda klasifikovati instance iz trening skupa. Pri tom, koristiti Menhetn
rastojanje. Izračunati preciznost, i udele tačno i lažno pozitivnih i tačno i lažno negativnih.
Trening skup
𝑋1 𝑋2 𝑋3 Klasa Test skup
1 1 0 A 𝑋1 𝑋2 𝑋3 Klasa
1 0 2 A 0 0 0 A
2 2 3 A 3 3 3 A
3 2 4 B 1 3 4 B
1 4 3 B 4 5 3 B
4 3 3 B
195 11. Nadgledano mašinsko učenje

Zadatak 11.10. Date su instance (0,0,A), (1,1,A), (1,2,A), (0,2,A), (1,5,B), (4,5, B), (5, 6, B), (5, 2,
C), (4, 0, C), pri čemu prve dve koordinate predstavljaju koordinate tačke, a poslednja koordinata predstavlja
oznaku klase. Algoritmom 3 najbliža suseda odrediti kojoj klasi pripadaju instance (0, 1, A), (4, 3, B), (3,
1, C)? Kao meru rastojanja koristiti Euklidovo rastojanje u ravni. Odrediti preciznost i udele tačno i lažno
pozitivnih.
Zadatak 11.11. Andela pokušava da reši jedan problem pretrage 𝑋 koristeći algoritam A*, ali ne može da
se odluči koju od raspoloživih heuristika da izabere. Andela ima veliku kolekciju test instanci i veruje da
izbor najbolje heuristike nekako zavisi od nekih konkretnih svojstava instance. Objasniti kako Andeli može da
pomogne mašinsko učenje.
Pitanje 11.20. Koliko ima 2-grama u reči matematika i koje su njihove frekvencije u ovoj reči?
Pitanje 11.21. Da li, za konačnu azbuku, 𝑛-grama za fiksno 𝑛 ima: konačno mnogo, prebrojivo mnogo ili
neprebrojivo mnogo?
Pitanje 11.22. Šta čini 𝑛-gramski profil instance?

9)
Pitanje 11.23. Navesti barem dve funkcije rastojanja koje se mogu koristiti za klasifikaciju 𝑛-gramskih profila
metodom 𝑛 najbližih suseda.

1
20
Pitanje 11.24. Navesti ime barem jednog algoritma za konstrukciju stabla odlučivanja na osnovu skupa in-
stanci za trening.

(
Pitanje 11.25. Navesti algoritam ID3.

je
Pitanje 11.26. Šta vraća algoritam ID3 u slučaju da je lista atributa prazna?
Pitanje 11.27. Šta vraća algoritam ID3 u slučaju da sve ulazne instance pripadaju istoj klasi?
an
Pitanje 11.28. Da li algoritam ID3 ima tendenciju da konstruiše plića ili dublja stabla odlučivanja?
izd

Pitanje 11.29. Koje se mere obično koriste za izbor najpogodnijeg atributa prilikom izgradnje stabla odlučivanja?
Pitanje 11.30. Navesti definiciju veličine 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆).
Pitanje 11.31. Ako se razmatra entropija kuglica rasporedenih u dve činije, kada ona najveća, a kada naj-
ko

manja?
Pitanje 11.32. Ako skup sadrži podjednako instanci iz dve klase, kolika je vrednost entropije za taj skup?
ns

Pitanje 11.33. Kako se definiše entropija skupa 𝑆 podeljenog na podskupove veličina 𝑝1 , 𝑝2 , . . ., 𝑝𝑐 ?


tro

Pitanje 11.34. U jednom skupu instanci, verovatnoća da proizvoljna instanca pripada klasi 𝐶1 jednaka je
1/4, verovatnoća da pripada klasi 𝐶2 jednaka je 1/4, a verovatnoća da pripada klasi 𝐶3 jednaka je 1/2. Kolika
je entropija ovog skupa?
ek

Pitanje 11.35. Kakva su pravila koja se lako mogu izvesti iz stabla odlučivanja?
El

Zadatak 11.12. Na osnovu datih primera, konstruisati stablo odlučivanja za ciljnu promenljiu koja odreduje
da li je jagoda zrela.

Boja Veličina Zrela


Zelena Mala Ne
Crvena Mala Da
Zelena Velika Ne
Crvena Velika Da

Zadatak 11.13. Konstruisati stablo odlučivanja za sledeće instance koje govore o životinjama. Odgovor
detaljno obrazložiti.

Otrovnost Boja Opasna


Otrovna Zelena Da
Neotrovna Zelena Ne
Otrovna Crvena Da
Neotrovna Crvena Ne
11.4. Tehnike evaluacije i konfigurisanja algoritama učenja 196

Zadatak 11.14. Na osnovu sledećih podataka, konstruisati stablo odlučivanja dubine 1 korišćenjem mere
„greška klasifikacije“.
A 2 1 2 1 2 1 2 1
B 1 1 2 3 3 3 1 2
C 2 2 1 2 1 3 3 3
Klasa + - + + - + - +
Izračunati preciznost dobijenog stabla odlučivanja na sledećem test skupu.
A 1 1 1 3
B 1 2 2 3
C 1 1 3 1
Klasa - + - +
Zadatak 11.15. Konstruisati stablo odlučivanja potrebne dubine koje prepoznaje parnost 4-bitnih brojeva na
osnovu njihovih binarnih reprezentacija. Neka se trening skup sastoji od brojeva 1, 3, 6, 9, 12 i 14. Kolika je

9)
preciznost ovog stabla na brojevima 2,4,5 i 7?

1
Zadatak 11.16. Na osnovu mere „greška klasifikacije“ i datih podataka, odabrati najbolji atribut za izgradnju
stabla odlučivanja.

20
𝑋1 𝑋2 𝑋3 Klasa

(
T T T A
F T T A
F
F
T
F
T
T
A
A
je
an
F F F A
F F F B
izd

T F F B
T F F B
T T F B
T T F B
ko

Zadatak 11.17. Na osnovu mere „greška klasifikacije“ i datih podataka izgraditi stablo odlučivanja dubine 1.
ns

𝑋1 𝑋2 𝑋3 Klasa
T T T B
tro

F T T B
F T T A
F F T A
F F F A
ek

T F F B
T T F B
El

T T F B
T F F A
T F F A
Zadatak 11.18. Na osnovu atributa „ima krila“, „leže jaja“, „leti“ konstruisati stablo odlučivanja koje prepo-
znaje ptice. Za trening koristiti sledeće životinje: roda, krava, vrabac, slepi miš, noj, zebra, gavran. Kolika je
preciznost predvia.nja tog stabla na sledećem skupu: kokoška, kornjača, konj, lav?
Zadatak 11.19. Na osnovu sledećih podataka, konstruisati stablo odlučivanja korišćenjem mere „greška kla-
sifikacije“.
𝑋1 𝑋2 𝑋3 Klasa
A M F 𝐶0
A D F 𝐶0
L M F 𝐶0
L D F 𝐶1
L M G 𝐶0
L D G 𝐶1
A D G 𝐶1
197 11. Nadgledano mašinsko učenje

Pitanje 11.36. Koja je osnovna mera kvaliteta klasifikatora?


Pitanje 11.37. Stablo odlučivanja je za 5 instanci ponudilo klase 𝐴, 𝐴, 𝐵, 𝐵, 𝐴, dok su ispravne klase bile
𝐴, 𝐴, 𝐴, 𝐵, 𝐵. Kolika je preciznost ovog stabla odlučivanja?

Pitanje 11.38. Koji procenat podataka se u mašinskom učenju obično uzima za trening podatke, a koji za test
podatke?

Pitanje 11.39. Šta se, radi pouzdanije evaluacije klasifikatora, često koristi umesto jednog deljenja na trening
i test podatke?

Pitanje 11.40. Kako se zove postupak evaluacije modela mašinskog učenja u kojem se skup raspoloživih
podataka deli na 𝑛 delova, a zatim trenira izostavljajući po jedan od njih?

Pitanje 11.41. Kako se sprovodi unakrsna validacija?


Pitanje 11.42. U problemu klasifikacije, za koje instance kažemo da su lažno pozitivne?

9)
Pitanje 11.43. Kako se definiše veličina USP (udeo stvarno pozitivnih)?

1
( 20
je
an
izd
ko
ns
tro
ek
El
El
ek
tro
ns
ko
izd
an
je
(20
19)
Glava 12

Nenadgledano učenje

9)
Nenadgledano učenje je vid mašinskog učenja kod kojeg nisu date vrednosti ciljne promenljive. Naravno,
mašinsko učenje ne može dati korisnu informaciju ni iz čega. Dok je su kod nadgledanog učenja algoritmi takvi
da često mogu učiti bilo kakve zakonitosti u datim podacima, a da se to što se uči definiše vrednostima ciljen

1
promenljive, u slučaju nenadgledanogučenja, kako tih vrednosti nema, ono što se uči mora biti definisano samim

20
algoritmom. Odnosno, algoritmi nenadgledanog učenja predstavljaju algoritme specifične namene.
Većina problema koji odgovaraju ovoj formulaciji potpada pod prolbeme klasterovanja, učenja reprezentacije

(
i detekcije anomalija. Klasterovanje predstavlja uočavanje grupa u podacima, što nešto govori o strukturi
podataka i može biti korisno u različite svrhe, o kojima će biti reči u nastavku. Učenje repre zentacije je
je
predstavlja sve značajniji posao u mašinskom učenju. Neretko, podaci nisu u obliku u kojem algoritam učenja,
ili čovek, najlakše može iskoristiti informaciju njima. Na primer, algoritmi mašinskog učenja obično zahtevaju
an
više parametara ukoliko podaci imaju više dimenzija i zahtevaju više računskih operacija, a podaci su često
visokodimenzionalni – recimo, 1.000.000 dimenzija u slučaju slika kod kojih svaki piksel predstavlja jednu
dimenziju, a do 100.000 u slučaju obrade teksta gde se za atribute koriste frekvencije pojedinih reči. Medutim,
izd

ovako visoka dimenzionalnost je najčešće samo posledica reprezentacije podataka. Na primer, slike lica, čak i
u rezoluciji 1.000 × 1.000 ne popunjavaju ravnomerno 1.000.000-dimenzionalni prostor, vec samo njegov delić.
Ostatak odgovara drugim slikama, od kojih mnoge ne predstavljaju ništa čoveku prepoznatljivo (npr. šum).
To sugeriše da postoji reprezentacija manje dimenzionalnosti koja takode opisuje sva lica. Nalaženje takvih
ko

reprezentacija i učenje nad njima značajno povećava uspešnost algoritama učenja. Nekada ovakvi algoritmi služe
i za smanjenje dimazionalnosti podataka na dve ili tri dimenzije koje najbolje oslikavaju njihovu varijabilnost,
ns

što omogućava čoveku da u nekim slučajevima posmatranjem uoči neke važne aspekte podataka. Detekcija
anomalija se tiče uočavanja podataka koji štrče u odnosu na ostale, bilo kako bi se izbacili iz skupa podataka,
tro

čime se često olakšava njihovo modelovanje i analiza, bilo kako bi se dalje analizirali. Primera radi, transakcije
kreditnim karticama koje predstavljaju prevaru, lako mogu odudarati od uobičajenog načina na koji korisnik
koristi karticu, bilo po vremenu upotrebe, bilo po vrsti usluge ili proizvoda koji se kupuje, bilo po iznosu
ek

transakcije. Slično važi i za upade u računarske sisteme – ta vrsta ponašanja često odudara od uobičajenog
ponašanja korisnika.
U nastavku ćemo se fokusirati na problem klasterovanja.
El

12.1 Klasterovanje
Klasterovanje predstavlja identifikaciju grupa u datim podacima. Potreba za rešavanjem ovakvog problema
može se javiti u različitim praktičnim problemima, poput identifikacije zajednica u društvenim mrežama (na
primer, za potrebe oglašavanja), detekcije raznorodnih tkiva na medicinskim snimcima, ustanovljavanja za-
jedničkog porekla jezika, živih bića i specifično ljudskih zajednica, i slično. Pored primena koje u sebi direktno
kriju problem klasterovanja, ova ethnike su često korisne i zarad pretprocesiranja podataka na koje će biti
primenjene metode nadgledanog učenja. Na primer, u slučaju obrade ogromnog broja prodataka, cele grupe
podataka mogu biti zamenjene svojim reprezentativnim predstavnicima. Ovo nije idealno sa tačke gledišta kva-
liteta dobijenog prediktivnog modela, ali sa tačke gledišta računske i memorijske efikasnosti može biti isplativo.
Takode, kako bi se obezbedilo da prilikom unakrsne validacije različiti slojevi imaju slično raspodeljene podatke,
podaci se mogu prvo klasterovati, a potom se 𝑛 slojeva može formirati tako što se svaki od klastera podeli na
𝑛 jedakih delova koji se razvrstaj u različite slojeve. Očito, klasterovanje može biti korisno kako kao tehnika
rešavanja problema, tako i kao thenika pretprocesiranja.
Pojam klasterovanja nije jednoznačno definisan. Kao što primer prikazan na slici 12.1 ukazuje, u jednom
skupu se može identifikovati više različitih grupisanja, često različite granularnosti. Pritom, takvi slučajevi nisu

199
12.1. Klasterovanje 200

1 9)
20
Slika 12.1: Različita klasterovanja nad istim podacima.

(
je
posledica nedovoljnog promišljanja definicije klasterovanja, već raznovrsnosti konteksta u kojima se grupisanje
može vršiti i ciljeva koji se pomoću klasterovanja žele postići. Za očekivati je da je nekada potrebno izvršiti
an
grublje klasterovanje – u manji broj klastera, a nekada finije – u veći broj klastera. Algoritmi klasterovanja
obično omogućavaju podešavanje nivoa granularnosti, odnosno broja klastera koji se u podacima pronalazi.
izd

Pojam klasterovanja nije jednoznačno definisan ne samo u odnosu na broj klastera koji se u podacima mogu
naći, već i u odnosu na ideju šta jednu grupu tačaka čini klasterom. U odnosu na to, postoji više neformalnih
definicija klasterovanja. Globularni ili centrični klasteri su grupe tačaka koje popunjavaju unutrašnjost lopte ili
eventualno elipsoida. Dobro razdvojeni klasteri su grupe tačaka koje su bliže drugim tačkama svoje grupe nego
ko

bilo kojoj tački iz neke druge grupe. Gustinski klasteri su klasteri čije su tačke razdvojene od tačaka drugih
klastera regionima manje gustine. Hijerarhijski klasteri su ili pojedinačne tačke ili klasteri čije su tačke takode
organizovane u strukturu hijerarhijskih klastera.
ns

U nastavku je prikazano nekoliko često korišćenih, a jednostavnih, algoritama klasterovanja.


tro

12.1.1 𝐾 sredina
Algoritam 𝑘 sredina pronalazi 𝑘 klastera u podacima koje predstavlja pomoću 𝑘 centroida tih klastera, od
ek

kojih se svaka dobija uprosečavanjem elemenata datog klastera. Ova pretpostavka čini algoritam primenljivim
samo na podatke koji se mogu uprosečavati, poput vektora. Pod odredenim uslovima, postoje uopštenja algo-
El

ritma i na drugačije vrste podataka, ali o njima neće biti reči. Polaznih 𝑘 centroida se bira nasumično (mada,
ako korisnik zna nešto o strukturi svojih podataka, mogu biti i unapred date), a potom se ponavljaju koraci
pregrupisavanja tačaka u nove klastere prema bliskosti sa centroidama i preračunavanja novih centroida sve dok
se centroide menjaju. Algoritam je preciznije formulisan na slici 12.2.
Primer klastera koje pronalazi ovaj algoritam, dat je na sclici 12.3 Može se pokazati da ovaj algoritam
minimizuje veličinu
𝑘 ∑︁
∑︁
𝑑(𝑥, 𝑐𝑖 )2
𝑖=1 𝑥∈𝐶𝑖

gde je 𝑑 euklidsko rastojanje. Na osnovu ovoga se može nešto zaključiti i o njegovom ponašanju. Zahvaljujući
tome što je zasnovan na minimizaciji euklidskog rastojanja, algoritam teži pronalaženju klastera u obliku lopte.
Kako je rastojanje kvadrirano, algoritam je osetljiv na podatke koji značajno odudaraju od ostalih. U tom
slučaju će veće rastojanje uticati na ukupnu grešku neproporcionano u odnosu na ostala rastojanja i takva
tačka će neprpororcionalno uticati na lokaciju centroide. Takode, ako gustina tačaka ne varira drastično i
rastojanja medu klasterima nisu velika, algoritam preferira klastere sa sličnim brojem tačaka u njima, pošto
bi u tom slučaju brojan klaster morao sadržati i tačke daleko od centroide koje bi značajno povećavale sumu
kvadrata rastojanja.
201 12. Nenadgledano učenje

Algoritam: Algoritam 𝑘 sredina

Ulaz: Trening skup 𝑇 ⊂ R𝑛 , broj klastera 𝑘


Izlaz: Particionisanje skupa 𝑇 na disjunktne neprazne podskupove 𝐶1 , . . . , 𝐶𝑘
1: Nasumice izaberi centroide 𝑐1 , . . . , 𝑐𝑘 ∈ R𝑛
2: ponavljaj
3: Postavi skupove 𝐶1 , . . . , 𝐶𝑘 na prazne skupove;
4: za svaku instancu 𝑥 ∈ 𝑇 radi
5: pronadi centroidu 𝑐𝑖 koja je najbliža instanci 𝑥;
6: dodaj 𝑥 u skup 𝐶𝑖 ;
7: Izračunaj proseke 𝑐1 , . . . , 𝑐𝑘 instanci iz skupova 𝐶1 , . . . , 𝐶𝑘 ;
8: dok nije ispunjen centroide su iste kao u prethodnoj iteraciji;
9: vrati 𝐶1 , . . . , 𝐶𝑘 kao rešenje.

9)
Slika 12.2: Algoritam klasterovanja 𝑘 sredina.

1
( 20
je
an
izd
ko
ns
tro
ek

Slika 12.3: Klasteri pronadeni algoritmom 𝑘 sreidna.


El

Činjenica da algoritam 𝑘 sredina minimizuje navedenu sumu navodi na njenu dalju analizu. Bitno je pitanje
da li ona ima jedan globalni minimum, odnosno da li je najbolje klasterovanje u odnosu na datu sumu kvadrata
rastojanja jedinstveno. Odgovor na prvo pitanje je negativan. Moguće je da postoji veći broj klasterovanja
jednakog kvaliteta. Jedan primer u kojem bi to bilo i intuitivno je kada su tačke uniformno rasporedene unutar
kruga i potrebno ih je podeliti na dva klastera. Rotiranje dobijenih centroida u odnosu na centar kruga daje
podjednako dobro klasterovanje. Drugim rečima, u slučaju takvog skupa podataka, postoji puno globalnih, i
samim tim podjednako dobrih, minimuma. Takva situacija nije zabrinjavajuća. Ipak, ispostavlja se da mogu
postojati i lokalni minimumi slabijeg kvaliteta od globalnog i da algoritam može naći takav minimum, što nije
dobro. Ovaj probelm se ublažava tako što se klasterovanje pokreće veći broj puta sa od različitih inicijalnih
tačaka i za rezultat se utima klasterovanje najmanje vrednosti sume kvadrata rastojanja.
Algoritam 𝑘 sredina omogućava fleksibilnost pri pronalaženju klastera kroz mogućnost podešavanja broja
𝑘. Ipak, u praksi često nije jasno kako izabrati broj 𝑘 i pomenuta fleksibilnost često vodi nedoumici. Jedno
pravilo heurističko je „pravilo lakta“ koje sugeriše da se za različite vrednosti broja 𝑘 izvrši klasterovanje, da
se nacrta grafik zavisnosti sume kvadrata rastojanja u zavisnosti od 𝑘 i da se za izabere klasterovanje koje
odgovara broju 𝑘 koji leži na tački nagle promene brzine opadanja grafika iliti na njegovom „laktu“. Ovakva
12.1. Klasterovanje 202

1 9)
( 20
je
an
izd
ko

Slika 12.4: Pravilo lakta sugeriše da za broj 𝑘 treba uzeti vrednost koja odgovara uspravnoj isprekidanoj liniji.
ns

situacija je prikazana na grafiku 12.4. Intuitivno obrazloženje je da su nakon „lakta“ klasteri već homogeni i
tro

dodavanje novih centroida ne doprinosi značajno smanjenju sume kvadrata rastojanja.

12.1.2 DBSCAN
ek

Algoritam DBSCAN (eng. density-based spatial clustering of applications with noise) služi za detekciju gu-
stinskih klastera i nije ograničen njihovim oblikom. Algoritam zahteva dva parametra – rastojanje 𝜀 i minimalan
El

broj tačaka 𝜇. Algoritam razvrstava tačke na tačke koje čine jezgro, a koje u svojoj 𝜀 okolini imaju bar 𝜇 tačaka,
granične tačke, koje u svojoj okolini imaju neku tačku koja čini jezgro i tačke koje čine šum, koje nisu granične
niti čine jezgro. Odudarajuće tačke se zanemaruju, dok se ostale grupišu u različite klastere na osnovu bliskosti.
Algoritam je preciznije opisan na slici 12.5. Ilustracija je data na slici 12.6.
DBSCAN očigledno ne pretpostavlja oblik klastera, tako da se može koristiti za detekciju klastera najra-
zličitijih oblika dok god ih je moguće razdvojiti regionima niže gustine. Još jedna dobra strana ovog algoritma
je što može odstraniti odudarajuće podatke kao šum, dok je algoritam 𝑘 najbližih suseda vrlo osetljiv na njihovo
prisustvo. Potencijalni problem nastaje kada su klasteri, iako razdvojeni, sami vrlo različite gustine. Naime,
u okolini vrlo gustog klastera, šum može imati veću gustinu, nego ceo drugi klaster koji ipak može biti prepo-
znatljiv po tome što će od svoje okoline značajno odudarati po gusitni. Tada nije moguće izabrati parametre
algoritma tako da nadu adekvatno klasterovanje. Kao i u slučaju algoritma 𝑘 sredina, nema jasnih pravila za
izbor vrednosti 𝜀 i 𝜇.

12.1.3 Hijarahijsko klasterovanje


Hijerarhijsko klasterovanje konstruiše stablo u čijim se listovima nalaze instance trening skupa, a unutrašnji
čvorovi definišu strukturu klastera. Klaster koji odgovara nekom unutrašnjem čvoru sastoji se iz klastera koji
203 12. Nenadgledano učenje

Algoritam: Algoritam DBSCAN

Ulaz: Trening skup 𝑇 , rastojanje 𝜀 i broj 𝜇


Izlaz: Particionisanje skupa 𝑇 na disjunktne neprazne podskupove 𝐶1 , . . . , 𝐶𝑘
1: Formiraj skup 𝒞 svih tačaka koje u svojoj 𝜀 okolini imaju bar 𝜇 tačaka;
2: Formiraj skup ℬ svih tačaka iz 𝑇 ∖ 𝒞 koje u svojoj 𝜀 okolini imaju bar jednu tačku iz 𝒞;
3: Formiraj graf 𝐺 čiji su čvorovi tačke iz 𝒞 ∪ ℬ, a grana postoji izmedu svake dve tačke koje su na rastojanju
najviše 𝜀;
4: vrati komponente povezanosti 𝐶1 , . . . , 𝐶𝑘 grafa 𝐺 kao rešenje.

Slika 12.5: Algoritam klasterovanja DBSCAN.

1 9)
( 20
je
an
izd
ko
ns
tro
ek

Slika 12.6: Tri vrste tačaka kojima operiše algoritam DBSCAN.


El

odgovaraju njegovim direktnim potomcima. Problem klasterovanja svodi se na problem konstrukcije ovakvog
stabla. Pristupa rešavanju ovog problema ima više. Jedan koji se često razmatra je hijerarhijsko aglomerativno
klasterovanje pri kojem se skup klastera inicijalizuje pojedinačnim instancama, a potom se u svakom koraku,
spajaju dva najsličnija klastera u jedan, čime se konstruiše binarno stablo. Takvo stablo naziva se dendogram i
ilustrovano je na slici 12.8. Sličnost nad klasterima nije trivijalno definisati i ne postoji jedan izbor. Najčešće
se definiše neka mera sličnosti ili rastojanja nad pojedinačnim instancama (poput euklidskog rastojanja), pa
se mera sličnosti ili rastojanja klastera definiše na osnovu nje. Na primer, rastojanje izmedu dva klastera se
može definisati kao minimum, prosek ili maksimum rastojanja njihovih elemenata. Precizniji opis hijerarhijskog
aglomerativnog klasterovanja dat je na slici 12.7. U algoritmu se pretpostavlja da se koristi mera rastojanja.
Izmene kojima se prelazi na meru sličnosti su trivijalne.
Sečenjem stabla na različitim nivoima, mogu se dobiti klasterovanja različite granularnosti. Konkretno, za
neku vrednost rastojanja 𝑑, na osnovu stabla, moguće je identifikovati poslednji skup 𝒞 koji je u toku keriranja
stabla nastao spajanjem čvorova čije rastojanje ne prelazi datu vrednost 𝑑. Ovo je ilustrovano na slici 12.8.
Dobra strana ovakvog klasterovanja je što pruža više informacija nego algoritmi koji pronalaze samo jednu
podelu podataka na klastere. Takode, različitim izborom mere sličnosti nad klasterima mogu se dobiti metodi
različitih svojstva. Loša strana je što u toku rada računa sličnosti svih klastera sa svima vodi visokoj vremenskoj,
12.1. Klasterovanje 204

Algoritam: Algoritam aglomerativnog hijerarhijskog klasterovanja

Ulaz: Trening skup 𝑇 = {𝑥1 , . . . , 𝑥𝑁 }, mera rastojanja 𝑑


Izlaz: Stablo kalasterovanja 𝒯
1: Inicijalizuj skup 𝒞 na skup listova {{𝑙1 = (𝑥1 , 0)}, . . . , {𝑙𝑁 = (𝑥𝑁 , 0)}};
2: ponavljaj
3: Izračunaj rastojanja 𝑑𝑖𝑗 = 𝑑(𝑐𝑖 , 𝑐𝑗 ) medu svim elementima (𝑐𝑖 , 𝑑𝑖 ), (𝑐𝑗 , 𝑑𝑗 ) ∈ 𝒞;
4: Pronadi najbliži par elemenata (𝑐𝑖 , 𝑑𝑖 ), (𝑐𝑗 , 𝑑𝑗 ) iz 𝒞;
5: Konstruiši unutrašnji čvor (𝑐𝑖 ∪ 𝑐𝑗 , 𝑑𝑖𝑗 ) i dodaj mu čvorove (𝑐𝑖 , 𝑑𝑖 ) i (𝑐𝑗 , 𝑑𝑗 ) kao direktne potomke;
6: 𝒞 ← (𝒞 ∖ {(𝑐𝑖 , 𝑑𝑖 ), (𝑐𝑗 , 𝑑𝑗 )}) ∪ {(𝑐𝑖 ∪ 𝑐𝑗 , 𝑑𝑖𝑗 )};
7: dok nije ispunjen skup 𝒞 je jednočlan
8: Vrati stablo čiji je koren jedini čvor u skupu 𝒞.

9)
Slika 12.7: Algoritam aglomerativnog hijerarhijskog klasterovanja.

1
20
a najčešće i prostornoj složenosti zbog čuvanja matrice rastojanja.

(
je
an
izd
ko
ns
tro
ek
El
205 12. Nenadgledano učenje

1 9)
( 20
je
an
izd
ko
ns
tro
ek
El

Slika 12.8: Dendogram sa skalom rastojanja medu klasterima. Izborom nekog praga rasotjanja ili broja klastera,
dendogram može dati klasterovanja različite granularnosti.

You might also like