Download as pdf or txt
Download as pdf or txt
You are on page 1of 201

E

le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Predrag Janičić Mladen Nikolić

6)
01
(2
VEŠTAČKA INTELIGENCIJA je
an
d
iz
o
sk
n
ro
kt
le
E

Beograd
2016.
Autori:
dr Predrag Janicic, redovni profesor na Matematickom fakultetu u Beogradu
dr Mladen Nikolic, docent na Matematickom fakultetu u Beogradu
VEŠTAČKA INTELIGENCIJA

...
...

Obrada teksta, crteži i korice: autori

6)
01
(2
je
an
d
iz
o
sk
n
ro
kt
le
E

©2016. 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

Sadržaj 5

6)
1 Uvod 9

01
(2
I Pretraga 11
2 Rešavanje problema korišćenjem pretrage 13
2.1
2.2 je
Elementi problema pretrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Rešenje problema i kvalitet algoritama pretrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
an
2.3 Neinformisana i informisana pretraga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Neinformisana pretraga 19
d

3.1 Obilazak grafa u dubinu i širinu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19


iz

3.2 Dejkstrin algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4 Informisana pretraga 27
o

4.1 Pohlepna pretraga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27


sk

4.2 Pretraga Prvo najbolji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


4.3 Algoritam A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
n

5 Programiranje logičkih igara 47


ro

5.1 Razvoj automatskog igranja logičkih igara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


5.2 Legalni potezi i stablo igre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
kt

5.3 Otvaranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4 Središnjica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
le

5.5 Završnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.6 Implementaciona pitanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
E

6 Genetski algoritmi 63
6.1 Opšti genetski algoritam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.2 Komponente genetskog algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.3 Svojstva genetskih algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.4 Primeri primene genetskih algoritama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

II Logika i deduktivno zakljucivanje 75


7 Rešavanje problema korišćenjem logike 77
7.1 Modelovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.2 Rešavanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

8 Iskazna logika 79
8.1 Sintaksa iskazne logike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.2 Semantika iskazne logike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

5
8.3 Istinitosne tablice i odlučivost problema zadovoljivosti . . . . . . . . . . . . . . . . . . . . . . . . 85
8.4 Logičke posledice i logički ekvivalentne formule . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.5 Normalne forme i potpuni skupovi veznika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.6 Problem SAT i DPLL procedura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.7 Rešavanje problema svodenjem na SAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

9 Logika prvog reda 107


9.1 Sintaksa logike prvog reda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9.2 Zamena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.3 Semantika logike prvog reda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.4 Logičke posledice, logički ekvivalentne formule, zamena . . . . . . . . . . . . . . . . . . . . . . . . 115
9.5 Normalne forme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
9.6 Unifikacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
9.7 Metod rezolucije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
9.8 Prirodna dedukcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
9.9 Rešavanje problema svodenjem na problem valjanosti . . . . . . . . . . . . . . . . . . . . . . . . . 133

6)
10 PROLOG 137

01
10.1 Metod rezolucije i PROLOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
10.2 Sintaksa i semantika u PROLOG-U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
10.3 Stablo izvodenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

(2
10.4 Operator sečenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
10.5 Negacija kao neuspeh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
10.6 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
10.7
10.8
Ugradeni predikati . . . . . . . . . . . . . . . . . .
Primeri rešavanja problema primenom PROLOG-a
.
.
je
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
151
154
an
d

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


iz

11 Uvod u mašinsko učenje 165


11.1 Primeri primena mašinskog učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
o

11.2 Pojam generalizacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166


11.3 Primer problema učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
sk

11.4 Nadgledano i nenadgledano učenje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168


11.5 Modeli zakonitosti u podacima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
n

11.6 Podaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169


ro

11.7 Izbori u dizajnu sistema koji uči . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

12 Nadgledano mašinsko učenje 171


kt

12.1 Dizajn algoritama nadgledanog učenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171


12.2 Regresija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
le

12.3 Klasifikacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183


12.4 Tehnike evaluacije i kofigurisanja algoritma učenja . . . . . . . . . . . . . . . . . . . . . . . . . . 196
E

13 Nenadgledano učenje 201

6
E
le
kt
ro
n
sk
o

7
iz
d
Predgovor

an
je
(2
01
6)
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
E
le
kt
ro
n
sk
o

9
iz
Glava 1

Uvod

d
an
je
(2
01
6)
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
E
le
kt
ro
n
sk
o
Deo I

iz
d
Pretraga

an
je
(2
01
6)
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 2

Rešavanje problema korišćenjem pretrage

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

6)
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

01
često nemoguće razmotriti u razumnom vremenu, potrebno je pretragu usmeravati kako bi se razmotrile mogućnosti
koje su izglednije da daju rešenje problema. Neke od realnih primena algoritama pretrage su pronalaženje naj-

(2
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
d

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


iz

Primer 2.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
o

redom od prvog reda i da je poslednje polje u četvrtom redu prazno. Taj raspored polja može se kompaktno
sk

zapisati kao [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, _] i prikazan je na slici 2.1.
n
ro

1 2 3 4
5 6 7 8
kt

9 10 11 12
le

13 14 15
E

Slika 2.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 2.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

13
14

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

6)
...

01
1 2 3 4

(2
5 6 7 8
9 101112
131415

je
Slika 2.2: Stablo pretrage za slagalicu „15“
an

Budimpešta
d
iz

340
300 380
840
Zagreb 320
o

640
390
sk

400 370 Beograd


590
290 290 Bukurešt
450
n

190
450 360
Sarajevo 430
ro

230 280 300


320
170
240 Sofija
kt

350
Podgorica 170
190
Skoplje
le

Slika 2.3: Graf koji opisuje problem puteva izmedu gradova


E

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 pozicijama (pozicija u korenu stabla na slici 2.2, je jedna
takva pozicija).

Primer 2.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 2.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 2.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
15 2. 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 2.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 reprezentuju grafovima (a i da se vizualizuju na odgovarajuć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
neusmeren 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 2.3). Za igru šah, medutim, graf bi bio usmeren (jer

6)
postoje 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 2.2). U
stablu pretrage svakom čvoru pridruženo je jedno stanje, ali jedno stanje može da bude posećeno više puta tokom

01
obilaska, te može da se nalazi u više čvorova stabla pretrage. Zato stablo pretrage može da bude beskonačno
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

(2
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
d

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.
iz

2.1 Elementi problema pretrage


o

Da bi se neki problem razmatrao kao problem pretrage i rešavao primenom algoritama pretrage, on treba
sk

da ima odredenu strukturu i odredene elemente:


n

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

nutku potrebno je poznavanje skupa svih raspoloživih stanja.


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

Test cilja: Problem je rešen ako se dode do ciljnog stanja, završnog stanja. Potrebno je da postoji raspoloživ
le

efektivan test koji proverava da li se došlo do ciljnog stanja tj. do završetka procesa pretrage.
Skup mogućih akcija: U svakom koraku pretrage može se preduzeti neki korak, neka akcija. Niz akcija
E

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.
2.2. Rešenje problema i kvalitet algoritama pretrage 16

Primer 2.5. Elementi problema iz primera 2.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

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

01
Primer 2.6. Elementi problema stizanja iz jednog grada u drugi (primer 2.2) su:

(2
ˆ 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).
d
iz

ˆ 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.
o

Primer 2.7. U slučaju kretanja robota (primer 2.4), bilo bi potrebno odrediti moguće smerove kretanja i diskre-
sk

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
n

definisati.
ro

2.2 Rešenje problema i kvalitet algoritama pretrage


kt

Rešenje problema pretrage je niz koraka (akcija) koji vode od polaznog stanja do ciljnog stanja. Svakom
le

rešenju se može pridružiti njegova cena kao suma cena akcija koje se preduzimaju. Optimalno rešenje je rešenje
sa najmanjom cenom. Ono ne mora biti jednoznačno definisano.
E

Kao i kod drugih vrsta algoritama, kod algoritama pretrage potrebno je poznavati njihova svojstva kako bi
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:

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. Moguće je da algoritam koji
nema ovo svojstvo č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.
17 2. Rešavanje problema korišćenjem pretrage

2.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 2.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

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

01
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
korisna za navodenje pretrage i u tom slučaju bi problem pripadao grupi problema informisane pretrage. U

(2
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
d

Pitanje 2.1. Navesti barem pet opštih elemenata svakog problema pretrage.
iz

Pitanje 2.2. Kako se, prema dostupnosti informacija koje mogu pomoći u pronalaženju ciljnog stanja u toku
pretrage, dele problemi pretrage?
o
sk
n
ro
kt
le
E
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 3

Neinformisana pretraga

6)
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,

01
scenario neinformisane pretrage odgovara situaciji u kojoj se u svakom gradu zna koji je to grad, moguće je
izabrati jedan od puteva ka drugim gradovima, moguće je pamtiti posećene gradove i prepoznati odredišni,

(2
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.

Primer 3.1. Lavirint se sastoji od skupa povezanih hodnika kojima je moguće kretati se. Svaki hodnik ima
je
jedno ili više polja i dva kraja. Jedno polje je ulaz, a jedno izlaz iz lavirinta. Ulaz, izlaz, krajeve hodnika, kao i
an
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:
d

ˆ Skup stanja: skup čvorova lavirinta.


iz

ˆ Polazno stanje: ulaz u lavirint.

ˆ Ciljno stanje: izlaz iz lavirinta.


o
sk

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

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


n
ro

Jedan način pronalaženja izlaza (koji će u nastavku biti preciznije formulisan algoritmom pretrage) je držati
se leve strane hodnika i pratiti zidove dok se ne naide na izlaz.
kt

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
le

algoritama obilaska grafova. Na primeru lavirinta, radi se o grafu čiji čvorovi su čvorovi lavirinta, a grane putevi
izmedu tih čvorova lavirinta (slika 3.1 (desno)). Ukoliko je graf koji odgovara lavirintu stablo, kaže se da je
E

lavirint savršen.

3.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.

3.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 je opisan algoritmom DFS

19
3.1. Obilazak grafa u dubinu i širinu 20

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

6)
8 12
13 19

01
14 22
17 20
15
18 21
16

(2
Slika 3.1: Primer lavirinta (gore levo), čvorovi lavirinta i veze medu njima (gore desno), graf prostora stanja
koji odgovara lavirintu (dole)
je
an
Algoritam: DFS (pretraga u dubinu)

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


d

Izlaz: Put od polaznog ciljnog čvora u grafu 𝐺 (ako postoji takav put)
iz

1. Inicijalno, stek 𝑝𝑢𝑡 i skup posećenih čvorova sadrže samo polazni čvor.

2. Izvršavaj dok stek 𝑝𝑢𝑡 nije prazan:


o
sk

ˆ Uzmi čvor 𝑛 sa vrha steka 𝑝𝑢𝑡.


ˆ Ako je 𝑛 ciljni čvor, obavesti o uspehu i vrati put konstruisan na osnovu sadržaja steka 𝑝𝑢𝑡.
n

ˆ Ako 𝑛 nema potomaka koji nisu posećeni, izbaci 𝑛 sa steka 𝑝𝑢𝑡.


ro

ˆ U suprotnom, izaberi prvog takvog potomka 𝑚 i dodaj ga na vrh steka 𝑝𝑢𝑡 i u skup posećenih
čvorova.
kt

3. Obavesti da traženi put ne postoji.


le

Slika 3.2: DFS — algoritam pretrage u dubinu.


E

1 5

2 6

3 4

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

na slici 3.2 a slika 3.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.
21 3. Neinformisana pretraga

Primer 3.2. Algoritam DFS se može upotrebiti za nalaženje izlaza iz lavirinta (pri čemu algoritam vraća ceo
put od ulaza do izlaza). U slučaju savršenog lavirinta, graf koji se pretražuje je stablo. Praćenje hodnika lavirinta
držeći se leve strane predstavlja upravo pretragu u dubinu.

Primer 3.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

6)
Bukurešt
2 6

01
Sarajevo

5
3

(2
Sofija
Podgorica 4
Skoplje

je
Slika 3.4: Traženje puta od Zagreba do Bukurešta primenom algoritma DFS
an
d

Bektreking (eng. backtracking) je modifikovana varijanta pretrage u dubinu. Modifikacija se sastoji u tome
iz

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.
o

Primer 3.4. Problem osam dama formulisan je 1848. godine i od tada je bio predmet mnogih matematičkih
sk

i informatičkih istraživanja. Problem ima jednostavnu formulaciju: rasporediti osam dama na šahovskoj tabli
tako da se nikoje dve dame ne napadaju. Skup polja koja jedna dama napada definisan je u skladu sa opštim
n

pravilima šaha i ilustrovan je na slici 3.5 (levo). Jedno moguće rešenje ovog problema prikazano je na slici 3.5
ro

(sredina). Problem „ 𝑛 dama” je uopštenje problema na 𝑛 dama koje treba rasporediti na tabli dimenzija 𝑛 × 𝑛
tako da se nikoje dve ne napadaju.
kt

U svakom rešenju, očigledno, u jednoj koloni ne mogu biti dve dame, pa se problem može preformulisati na
sledeći način: na tabli 𝑛 × 𝑛 rasporediti 𝑛 dama tako da u svakoj koloni bude po jedna i da se nikoje dve ne
napadaju.
le

Pored problema lavirinta, problem dama predstavlja jedan od tipičnih problema koji se rešavaju primenom
E

bektrekinga. Prostor stanja koji se analizira u ovom slučaju čine svi različiti rasporedi 0 do 8 dama. Postoji grana
od jednog stanja (rasporeda) 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,

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 3.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)
3.1. Obilazak grafa u dubinu i širinu 22

/ \ ...
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

6)
1 L0Z0 1 L0Z0 1 L0Z0 1 Z0L0
a b c d a b c d a b c d a b c d
| |

01
4 0L0Z 4 0L0Z
3 Z0Z0 3 Z0ZQ

(2
2 0ZQZ 2 QZ0Z
1 L0Z0 1 Z0L0
a b c d a b c d

je
Slika 3.6: Prikaz dela stabla pretrage za rešavanja problema četiri dame primenom bektrekinga. Oznaka X
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
d

medusobno ne napadaju.
iz

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

grafu. Polazno stanje je prazna tabla, a ciljno stanje je bilo koje stanje koje zadovoljava uslove problema (za
sk

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,
svaki put od prazne table do ovakvog rasporeda mora sadržati raspored sa tačno dve dame koje se napadaju.
n

Kako se duž puteva kroz stablo pretrage dame samo dodaju, postupak pretrage se ne isplati nastavljati nakon što
ro

se naide na takav raspored. Na slici 3.5 (desno) prikazan je jedan raspored koji nema smisla ispitivati dalje. Na
slici 3.6, prikazan je deo stabla pretrage koja koristi bektreking za problem četiri dame (za problem osam dama
kt

stablo pretrage preveliko je za ilustraciju).

Na prethodnom primeru mogu se uočiti neke tipične osobine bektrekinga. Bektreking se zasniva na proširivanju
le

tekućeg parcijalnog rešenja. Polazno parcijalno rešenje je prazno rešenje. U prethodnom primeru, to je prazna
E

šahovska tabla, a u slučaju lavirinta, to je ulaz. Proširivanje parcijalnog rešenja se u slučaju problema dama vrši
dodavanjem dame na tablu, a u slučaju lavirinta prelaskom na sledeći čvor lavirinta. 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, a u slučaju lavirinta nije moguće nastaviti pretragu kada se dode do čvora lavirinta koji nije povezan
ni sa jednim drugim čvorom lavirinta (sem sa onim iz kojeg se došlo). Prilikom izbora naredne grane u pretrazi,
prati se neki poredak izbora. U slučaju lavirinta, to može biti sledeći hodnik nadesno u odnosu na poslednji
posećeni čvor lavirinta, a u slučaju problema dama, sledeće prazno polje u skladu sa nekom numeracijom polja.

3.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 je opisan algoritmom BFS na slici 3.7. U prikazanom algoritmu,
informacija o posećenim čvorovima se ne čuva eksplicitno, već kroz informaciju o čvoru prethodniku. Slika 3.8
23 3. Neinformisana pretraga

ilustruje obilazak grafa primenom algoritma BFS.

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. Red 𝑆 inicijalno sadrži samo polazni čvor.

2. Izvršavaj dok red 𝑆 nije prazan:

ˆ Uzmi čvor 𝑛 sa početka reda 𝑆 i obriši ga iz reda.


ˆ Ako je 𝑛 ciljni čvor, obavesti o uspehu i vrati put od polaznog do ciljnog čvora (idući unazad od
ciljnog čvora).
ˆ Za svaki od potomaka 𝑚 čvora 𝑛 za koji nije definisan roditelj, zapamti 𝑛 kao roditelja i dodaj ga
na kraj reda 𝑆 .

6)
3. Obavesti da traženi put ne postoji.

01
Slika 3.7: BFS — algoritam pretrage u širinu.

(2
1
je 5
an
2 4
d

3 6
iz

Slika 3.8: Primer obilaska grafa primenom algoritma BFS (oznake čvorova ukazuju na poredak obilaska čvorova)
o
sk

Primer 3.5. U slučaju pronalaženja puta od Zagreba do Bukurešta, biće pronaden put Zagreb-Beograd-Bukurešt
n

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

č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
kt

Skoplja i Bukurešta, koji se dodaju na kraj reda 𝑆 , a Beograd se iz njega uklanja. Iz Budimpešte se ne pronalazi
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
le

se dodaje na kraj reda 𝑆 , a Skoplje se iz njega uklanja. Kada Bukurešt postane grad koji se analizira, konstatuje
E

se da je to ciljni grad, konstruiše se put i algoritam se zaustavlja.

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
prostorna je proporcionalna broju čvorova (𝑂(|𝑉 |)).

3.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 jednog 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
3.2. Dejkstrin algoritam 24

4 Budimpešta

1
Zagreb

3 Beograd
Bukurešt
2 7
Sarajevo

Sofija
Podgorica 5 6
Skoplje

Zagreb

6)
01
(2
Sarajevo Beograd
Budimpešta

je
an
Podgorica Skoplje Bukurešt
d
iz

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

sa tla i oni koji su još uvek na tlu. Za one koji su podignuti sa tla već znamo najkraće puteve od polaznog
n

čvora. U svakom koraku možemo još jedan čvor „podići sa tla“ i izračunati njegovo najmanje rastojanje od
ro

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.
kt

Algoritam: Dejkstrin algoritam


le

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


E

Izlaz: Najkraći put od polaznog do ciljnog čvora u grafu 𝐺 (ako postoji takav put)
1. Skup 𝑄 inicijalno sadrži sve čvorove grafa.

2. Izvršavaj sve dok je skup 𝑄 neprazan:

ˆ Izaberi iz 𝑄 čvor 𝑛 sa najmanjim ustanovljenim rastojanjem od polaznog čvora i obriši ga iz 𝑄.


ˆ Ako je 𝑛 ciljni čvor, konstruiši put od polaznog do ciljnog čvora (idući unazad od ciljnog čvora) i
obavesti o uspehu.
ˆ Za svaki čvor 𝑚 iz 𝑄 koji je direktno dostupan iz 𝑛, proveri da li je ustanovljeno rastojanje od
polaznog čvora do 𝑚 veće od rastojanja od polaznog čvora do 𝑚 preko čvora 𝑛 i ako jeste, promeniti
informaciju o roditelju čvora 𝑚 na čvor 𝑛 i upamtiti novo rastojanje.

3. Obavesti da traženi put ne postoji (𝑄 je prazan skup i uspeh nije prijavljen).

Slika 3.10: Dejkstrin algoritam.


25 3. Neinformisana pretraga

Dejkstrin algoritam prikazan je na slici 3.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 najmanje.
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 roditelja čvora 𝑚. Invarijanta petlje je da se za čvorove koji nisu u 𝑄 zna najkraće rastojanje od ciljnog
č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
grana, a |𝑉 | broj čvorova grafa. Za retke grafove (koji imaju mnogo manje grana od |𝑉 |2 ), Dejkstrin algoritam
se može implementirati efikasnije. Na primer, varijanta koja koristi binarni min-hip1 za odredivanje tekućeg
najbližeg čvora ima složenost 𝑂((|𝐸| + |𝑉 |) log |𝑉 |).

Primer 3.6. Na slici 3.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.

6)
3

01
𝐴 𝐵
2 5
6

(2
𝐶 4 𝐷 5
2
1 1
𝐸 𝐹

korak B C
4

D E
jeF čvor 𝑛
an
1 ∞ ∞ ∞ ∞ ∞ 𝐴
2 3 2 6 4 ∞ 𝐶
d

3 3 2 6 3 ∞ 𝐵
4
iz

3 2 6 3 8 𝐸
5 3 2 5 3 7 𝐷
6 3 2 5 3 6 𝐹
o
sk

Slika 3.11: Primer primene Dejkstrinog algoritma


n
ro

Primer 3.7. Slika 3.12 i prateća tabela ilustruje izvršavanje Dejkstrinog algoritma na problemu nalaženja puta
od Bukurešta do Podgorice (najkraći put je Bukurešt-Sofija-Skoplje-Podgorica).
kt
le
E

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.
3.2. Dejkstrin algoritam 26

6)
5 Budimpešta

01
340

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

7 240 Sofija
350
iz

Podgorica 4
Skoplje
korak Bg So Bud Sk Pg Sa Zg čvor 𝑛
o

1 ∞ ∞ ∞ ∞ ∞ ∞ ∞ Bukurešt
sk

2 590 360 840 ∞ ∞ ∞ ∞ Sofija


3 590 360 840 600 ∞ ∞ ∞ Beograd
n

4 590 360 840 600 1040 880 980 Skoplje


ro

5 590 360 840 600 950 880 980 Budimpešta


6 590 360 840 600 950 880 980 Sarajevo
kt

7 590 360 840 600 950 880 980 Podgorica


Slika 3.12: Traženje puta od Bukurešta do Podgorice primenom Dejkstrinog algoritma
le
E
Glava 4

Informisana pretraga

6)
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

01
obećavaju, za koje postoji nekakvo očekivanje da brže vode ciljnom stanju, tj. rešenju problema. Ta informacija
može biti nekakva ocena, mera „kvaliteta“ stanja, a može da bude zasnovana i na informacijama vezanim za
početno ili ciljno stanje. Ta mera kvaliteta često nije egzaktna, nego predstavlja nekakvu procenu, heurističku

(2
meru.1
U nastavku ćemo funkciju koja ocenjuje kvalitet stanja zvati funkcija evaluacije i označavati sa 𝑓 , pa će 𝑓 (𝑛)
označavati ocenu stanja 𝑛. Smatraćemo i da su cene akcija (ili cene grana grafa) nenegativne. Već je rečeno da
je
probleme pretrage obično reprezentujemo grafovima koji opisuju prostor stanja, pa ćemo često 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
d

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“.
iz

4.1 Pohlepna pretraga


o
sk

Pohlepnim algoritmom naziva se algoritam koji bira lokalno optimalne akcije, tj. teži neposrednom povećanju
vrednosti neke ciljne funkcije. Ovakav algoritam ne procenjuje dugoročni kvalitet izabranih akcija, tj. koliko
n

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.
ro

Primer 4.1. U primeru pronalaženja najkraćih puteva izmedu gradova (primer 2.2), ako je u svakom gradu
kt

moguće videti tablu sa tačnim rastojanjima do susednih gradova, pohlepni informisani algoritam bi kao funkciju
evaluacije 𝑓 (𝑛) mogao da koristi zbir tačnog rastojanja od tekućeg čvora do čvora 𝑛 (tj. da uvek za sledeći
le

grad bira najbliži grad). Ukoliko su poznata vazdušna rastojanja izmedu gradova na osnovu mape, pohlepni
informisani algoritam bi kao funkciju evaluacije 𝑓 (𝑛) mogao da koristi vazdušno rastojanje od 𝑛 do ciljnog
E

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 4.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
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,
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”.

27
4.1. Pohlepna pretraga 28

Algoritam: Pohlepna pretraga

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. Inicijalno, tekući čvor je polazni čvor.

2. Izvršavaj beskonačno sledeće korake:

ˆ Ako je 𝑛 ciljni čvor, izvesti o uspehu i vrati rešenje konstruišući put od polaznog do ciljnog čvora.
ˆ Ako nema direktno dostupnih čvorova iz tekućeg čvora, izvesti o neuspehu.
ˆ Od čvorova koji su direktno dostupni iz tekućeg čvora kao novi tekući čvor izaberi čvor 𝑛 koji ima
najbolju ocenu 𝑓 (𝑛).

Slika 4.1: Algoritam pohlepne pretrage.

6)
Budimpešta

01
340

(2
300 380
840
Zagreb 320
410 640
390
400
290
370
290
640
Beograd
je
590
450
Bukurešt
an
190
450 360
Sarajevo 430
230 280 300
320
d

170
240 Sofija
iz

350
Podgorica 170
190
Skoplje
Podgorica
o
sk

640 770 990


n

Sarajevo
Beograd Skoplje
ro

700 610 790


kt

Zagreb Podgorica
Beograd
le

380
E

Budimpešta

Slika 4.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

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.

Primer 4.2. U slučaju Lojdove slagalice, kao ocena rastojanja od tekućeg do ciljnog stanja može se koristiti zbir
Menhetn rastojenja 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
29 4. Informisana pretraga

horizontalno ili vertikalno2 . U slučaju stanja slagalice u korenu levog stabla na slici 4.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 nalevo. 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. Pohlepna pretraga se može
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

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

6)
5 10 12 6 5 10 12 15 5 10 4 15 5 10
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

01
Slika 4.3: Stanje slagalice (levo) u kojem nema poteza koji vodi u stanje sa boljom ocenom rastojanja i stanje

(2
slagalice (desno) iz kojeg postoji niz koraka koji poboljšavaju ocenu rastojanja (pomeranjem praznog polja
naniže), ali se završava u stanju iz kojeg svi potezi pogoršavaju ocenu.

je
U slučaju stanja slagalice u korenu slike 4.3 (levo), pohlepna pretraga ne može da nastavi pošto dato stanje
predstavlja lokalni minimum ocene rastojanja jer se bilo kojim potezom ta ocena uvećava za 1.
an
S druge strane, ukoliko je polazna konfiguracija 4.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
d

pretraga se zaustavlja.
Navedeni primeri pokazuju da predloženom jednostavnom pohlepnom pretragom nije moguće rešiti Lojdovu
iz

slagalicu.
Pohlepni algoritmi se mogu koristiti i za rešavanje opštijih problema od pretrage — problema matematičke
o

optimizacije. Ovi problemi pretpostavljaju postojanje funkcije cilja i skupa dopustivih rešenja. U zavisnosti od
sk

formulacije problema, potrebno je naći dopustivo rešenje sa minimalnom ili maksimalnom vrednošću funkcije
cilja. Takvo rešenje se naziva optimalnim rešenjem problema optimizacije. Ovakvi problemi ne moraju pretpo-
n

stavljati postojanje stanja, akcija i drugih elemenata problema pretrage. U kontekstu matematičke optimizacije,
ro

pohlepni algoritmi se obično nazivaju algoritmima penjanja uzbrdo pošto biraju susedna dopustiva rešenja koja
imaju najviše vrednosti funkcije cilja.
Pohlepna pretraga obično se ponaša dobro u slučaju problema kod kojih kvalitet odluke u nekom stanju
kt

pretrage ne zavisi od budućih odluka ili ako se dati problem može aproksimirati problemom za koji ovo važi. Ako
navedeno svojstvo važi, lokalno optimalna odluka je stvarno optimalna. Navedeno svojstvo se može i drugačije
le

formulisati — pohlepna pretraga će se ponašati dobro ukoliko se optimalno rešenje problema gradi neposredno
od lokalno optimalnih rešenja potproblema.
E

Algoritmi zasnovani na pohlepnoj pretrazi su obično znatno jednostavniji od algoritama koji garantuju
optimalnost ili potpunost procesa rešavanja. Medutim, iako obično ne garantuju optimalnost rešenja, često
daju rešenja koja su praktično prihvatljiva. S druge strane, mane ovog pristupa su sledeće:

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 4.4, levo)
Neefikasnost u slučaju grebena: Grebeni predstavljaju uske staze koje opadaju ili rastu duž nekog pravca
(slika 4.4, desno). U takvim problemima, penjanje uzbrdo ne vodi u pravcu rasta staze, već je potrebno
da napravi mnogo cik-cak koraka da se uspne uz greben (ili da se spusti niz greben).
Platoi: Platoi predstavljaju oblasti prostora pretrage u kome funkcija cilja ima konstantnu vrednost. Zbog
toga je nemoguće odrediti koji potez je najbolji, a samim tim se može desiti da pohlepna pretraga ne nade
izlaz sa platoa.
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.
4.1. Pohlepna pretraga 30

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

6)
Postoje razne varijacije osnovnog penjanja uzbrdo koje pokušavaju da se izbore sa navedenim problemima.
Takvo je na primer stohastičko penjanje uzbrdo koje ne bira uvek susedno stanje koje ima najveću vrednost, ali

01
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

(2
sa verovatnoćom koja se približava 1 kada se povećava broj pokušaja.

4.1.1 Pohlepna pretraga u slučaju diferencijabilne funkcije ciljaje


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
d

𝑓 : R𝑛 → R, gradijent se definiše kao vektor parcijalnih izvoda te funkcije:


iz

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

Gradijent izračunat u odredenoj tački 𝐴 ∈ R𝑛 predstavlja vektor u prostoru R𝑛 u čijem pravcu funkcija 𝑓
sk

najstrmije raste u okolini tačke 𝐴. Stoga se kretanjem u ovom pravcu može doći do lokalnog maksimuma.
Kretanjem u suprotnom pravcu, može se doći do lokalnog minimuma. U tradiciji matematičke optimizacije,
n

češće se koristi formulacija traženja minimuma, a metoda za traženje minimuma se može upotrebiti i za nalaženje
maksimuma ukoliko se primeni na funkciju −𝑓 umesto na funkciju 𝑓 . Princip kretanja u smeru suprotnom od
ro

gradijenta je osnova algoritma najstrmijeg spusta ili gradijentnog spusta. Algoritam najstrmijeg spusta prikazan
je na slici 4.5.
kt

Algoritam: Najstrmiji spust


le

Ulaz: Diferencijabilna funkcija 𝑓 , polazna tačka x0 i preciznost 𝜀


E

Izlaz: lokalni minimum (ukoliko postoji)


1. Postaviti 𝑛 na 0.

2. Ponavljati

ˆ Izračunati gradijent funkcije ∇𝑓 (xn ).


ˆ Izvršiti kretanje u pravcu suprotnom od gradijenta do sledeće tačke xn+1 .
ˆ Uvećati 𝑛 za 1.

dok važi |𝑓 (xn−1 ) − 𝑓 (xn )| > 𝜀|𝑓 (xn−1 )|

3. Vratiti xn kao rešenje.

Slika 4.5: Algoritam najstrmijeg spusta.

U praksi se ne može očekivati nalaženje same tačke lokalnog minimuma, s obzirom na to da se ne radi o
31 4. Informisana pretraga

diskretnom prostoru, te se opisani postupak prekida kada razlika u vrednosti funkcije 𝑓 u odnosu na njenu
prethodnu vrednost postane dovoljno mala.
Da bi se dati algoritam u potpunosti definisao potrebno ga je dodatno precizirati. Poznavanje gradijenta
i kretanje u suprotnom pravcu u praksi ipak ne garantuje nalaženje minimuma, jer je u zavisnosti od dužine
koraka moguće preći preko minimuma, nastaviti dalje i doći i do goreg rešenja od tekućeg. Stoga je u svakom
koraku potrebno odrediti konstantu 𝜆𝑛 takvu da se za novu tačku uzima vrednost

xn+1 = xn − 𝜆𝑛 ∇𝑓 (xn )

Ova konstanta se može naći Armiho-Goldštajnovom pretragom duž pravca gradijenta koja je formulisana algo-
ritmom 4.6. Poenta Armiho-Goldštajnove pretrage je smanjivanje koraka dok se ne steknu uslovi dovoljni za
konvergenciju.

Algoritam: Armiho-Goldštajnova pretraga

Ulaz: Diferencijabilna funkcija 𝑓 , tačka x

6)
Izlaz: Koeficijent 𝜆
1. Postaviti 𝜆 na 1.

01
𝜆‖∇𝑓 (x)‖2
2. Dok važi 𝑓 (x − 𝜆∇𝑓 (x)) > 𝑓 (x) − 2

(2
ˆ Postaviti 𝜆 na 2.
𝜆

3. Vratiti 𝜆 kao rešenje.

je
Slika 4.6: Armiho-Goldštajnova pretraga duž pravca gradijenta.
an

Primer 4.3. Potrebno je izgraditi lekarsku stanicu koja bi opsluživala četiri sportske lokacije. Stanica bi trebalo
d

da bude relativno blizu svim lokacijama. Jedan povoljan izbor njene lokacije bi bila tačka x takva da je zbir
iz

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

𝑖=1
sk

minimalan, gde važi x = (𝑥1 , 𝑥2 ), s = (0, 0), s


(1) (2)
= (0, 1), s(3) = (2, 0) i s(4) = (3, 3).
Zapisano drugačije, funkcija 𝑓 jednaka je:
n
ro

𝑓 (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


kt

𝑧
le

35
E

30

25

20

15

10

5
−1
s1
−1
s3 0
1 s2
2 −5
𝑥3 x1 x0 1
2
3
𝑦
s4

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


4.2. Pretraga Prvo najbolji 32

Gradijent funkcije 𝑓 je
∇𝑓 (x) = (8𝑥1 − 10, 8𝑥2 − 8)

Neka je polazna tačka x0 = (1, 1) i 𝜀 = 0.01. Vrednost gradijenta ∇𝑓 (x0 ) u prvoj iteraciji je (−2, 0). Vrednost
parametra 𝜆0 odreduje se Armiho-Goldštajnovom pretragom. Za vrednost 𝜆 = 1, evaluira se uslov 𝑓 ((1, 1) −
1 · (−2, 0)) > 𝑓 (1, 1) − 2, odnosno 25 > 13 − 2. Kako je uslov ispunjen, 𝜆 se postavlja na 0.5 i evaluira se
𝑓 ((1, 1) − 0.5 · (−2, 0)) > 𝑓 (1, 1) − 1, odnosno 15 > 13 − 1. Kako je uslov ispunjen, 𝜆 se postavlja na 0.25 i
evaluira se 𝑓 ((1, 1) − 0.25 · (−2, 0)) > 𝑓 (1, 1) − 0.5, odnosno 13 > 13 − 0.5. Kako je uslov ispunjen, 𝜆 se postavlja
na 0.125 i evaluira se 𝑓 ((1, 1) − 0.125 · (−2, 0)) > 𝑓 (1, 1) − 0.25, odnosno 12.75 > 13 − 0.25. Kako uslov nije
ispunjen, petlja se prekida i vraća se vrednost 0.125, što se uzima za vrednost parametra 𝜆0 . Za tačku x1 , uzima
se tačka x0 − 𝜆0 ∇𝑓 (x0 ), odnosno (1, 1) − 0.125 · (−2, 0), što je (1.25, 1).
Kako važi |𝑓 (x0 ) − 𝑓 (x1 )| = |13 − 12.75| = 0.25 > 0.01 · |13|, prelazi se na novu iteraciju. Gradijent je
∇𝑓 (1.25, 1) = (0, 0). Za datu tačku Armiho-Goldštajnova pretraga se zaustavlja odmah i vraća 𝜆 = 1. Kako je
gradijent jednak (0, 0), važi x2 = x1 i algoritam se zaustavlja sa tačnim rešenjem (1.25, 1).
U opštem slučaju retko se dešava zaustavljanje sa tačnim rešenjem.
U ovom slučaju, rešenje se moglo naći i analitički — rešavanjem jednačina ∇𝑓 (x) = 0, ali to u opštem

6)
slučaju nije moguće.

01
Za diferencijabilne funkcije postoje i drugi metodi lokalne optimizacije, medu kojima je algoritam najstrmijeg
spusta najjednostavniji. Problem ovog algoritma je što je konvergencija često spora. Brže alternative su ili

(2
komplikovanije ili prave dodatne pretpostavke o svojstvima funkcije (poput konveksnosti) ili zahtevaju dodatne
informacije o ciljnoj funkciji (poput parcijalnih izvoda drugog reda).
Treba imati u vidu da diskutovani algoritam ne garantuje nalaženje globalnog minimuma. U slučaju da
je
funkcija ima veći broj minimuma, u zavisnosti od izabrane polazne tačke, rešenja koja algoritam daje mogu biti
različita i pronadeni minimum može biti samo lokalni.
an

4.2 Pretraga Prvo najbolji


d
iz

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
o

informacija o njegovom prethodniku (roditelju) u mogućem rešenju, isto kao u Dejkstrinom algoritmu.
sk

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:
n

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

dostupna stanja);
kt

ˆ otvorena lista (ili lista otvorenih stanja) – lista stanja koja su već posećena, ali nisu obradeni svi njihovi
susedi.
le

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

nostavnosti radi, u nastavku ćemo č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 4.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 4.1. Ako je broj stanja i akcija konačan, algoritam Prvo najbolji se zaustavlja i nalazi traženi
put uvek kada on postoji.
33 4. 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. Zatvorena lista je inicijalno prazna, a otvorena lista sadrži samo polazni čvor.

2. Izvršavaj sve dok ima elemenata u otvorenoj listi:

ˆ Izaberi čvor 𝑛 (tekući čvor) iz otvorene liste koji ima najbolju ocenu 𝑓 (𝑛).
ˆ Ako je 𝑛 ciljni čvor, izvesti o uspehu i vrati rešenje konstruišući put od polaznog do ciljnog čvora
(idući unazad — od ciljnog čvora).
ˆ Za svaki čvor 𝑚 koji je direktno dostupan iz 𝑛 uradi sledeće:
– Ako 𝑚 nije ni u otvorenoj ni u zatvorenoj listi, dodaj ga u otvorenu listu i označi 𝑛 kao njegovog
roditelja.
ˆ Izbaci 𝑛 iz otvorene liste i dodaj ga u zatvorenu listu.

6)
3. Izvesti da traženi put ne postoji (otvorena lista je prazna i uspeh nije prijavljen).

01
Slika 4.8: Algoritam Prvo najbolji.

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

Prvo najbolji, za razliku od jednostavnog pohlepnog pristupa omogućava vraćanje na čvorove koji nisu ispitani
iz

jer je neka od alternativa obećavala više. Takode, ovim pristupom se omogućava nastavak pretrage i u slučaju
kada pohlepna pretraga naide na plato ili lokalni optimum (zahvaljujući alternativama u otvorenoj listi) i
eliminiše se mogućnost beskonačnih petlji (zahvaljujući pamćenju obradenih čvorova u zatvorenoj listi).
o
sk

Primer 4.4. U slučaju prethodno diskutovanog primera slagalice, ponovljenog na slici 4.9, situacija prikazana
levo predstavlja lokalni minimum, zbog čega se pohlepna pretraga zaustavlja. Algoritam Prvo najbolji će
n

odabrati jedan od mogućih poteza, ali će alternativno stanje čuvati u otvorenoj listi i možda ga obraditi kasnije.
ro

U situaciji 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,
kt

stanja koja su bila alternative ispitanim stanjima su i dalje u otvorenoj listi i ispituju se dalje. Stoga je algoritam
Prvo najbolji u stanju da reši slagalicu, ali ne garantuje nalaženje rešenja koje se sastoji od najmanjeg broja
poteza.
le
E

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

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
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 4.9: Stanje slagalice (levo) u kojem svi potezi pogoršavaju ocenu rastojanja i stanje slagalice (desno) iz
kojeg postoji niz koraka koji poboljšavaju ocenu rastojanja (pomeranjem praznog polja naniže), ali se završava
u stanju iz kojeg svi potezi pogoršavaju ocenu.
4.3. Algoritam A* 34

4.3 Algoritam A*
Algoritam A* pretraga ili, kraće, algoritam A* (čita se „a zvezda“, engl. „a star“) za odredivanje najkraćeg
puta izmedu dva čvora grafa, jedan je od fundamentalnih i najpopularnijih algoritama veštačke inteligencije.
Zasnovan je na korišćenju heuristika, ali ipak ima svojstva kao što su potpunost i optimalnost. Prvu verziju
algoritma A* su razvili 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 funkciju evaluacije 𝑓 definisana na
sledeći način:
𝑓 (𝑛) = 𝑔(𝑛) + ℎ(𝑛),

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 zavisi ponašanje i efikasnost algoritma. Izbor kvalitetne
heuristike jedan je od najvažnijih i najtežih izazova u dizajniranju konkretnih implementacija algoritma A*.

6)
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

01
putem. Takva provera je u algoritmu Prvo najbolji bila opciona, a u algoritmu A* je obavezna.
Pored toga što je specijalan slučaj metoda Prvo najbolji, algoritam A* je uopštenje Dejkstrinog algoritma.

(2
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 donju granicu daljine do ciljnog čvora. Ključna razlika izmedu dva
je
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
an
funkcije evaluacije 𝑓 (𝑚) = 𝑔(𝑚) + ℎ(𝑚).
Opis algoritma A* dat je na slici 4.10. Prilikom dodavanja čvora 𝑚 u otvorenu listu vrednost 𝑔(𝑚) može se
izračunati na inkrementalan i efikasan način: vrednost 𝑔(𝑚) jednaka je zbiru vrednosti funkcije 𝑔 za roditelja
d

čvora 𝑚 i ceni puta od roditelja do 𝑚.


iz

Algoritam: A*
o

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


sk

Izlaz: najkraći put od polaznog do ciljnog čvora (ako postoji put izmedu ova dva čvora)
1. Zatvorena lista je inicijalno prazna, a otvorena lista sadrži samo polazni čvor.
n
ro

2. Izvršavaj dok god ima elemenata u otvorenoj listi:

ˆ Izaberi čvor 𝑛 (tekući čvor) iz otvorene liste koji ima najbolju ocenu 𝑓 (𝑛).
kt

ˆ Ako je 𝑛 ciljni čvor, izvesti o uspehu i vrati rešenje konstruišući put od polaznog do ciljnog čvora
(idući unazad — od ciljnog čvora).
le

ˆ Za svaki čvor 𝑚 koji je direktno dostupan iz 𝑛 uradi sledeće:


E

– Ako 𝑚 nije ni u otvorenoj ni u zatvorenoj listi, dodaj ga u otvorenu listu i označi 𝑛 kao njegovog
roditelja. Izračunaj i pridruži vrednost 𝑓 (𝑚) čvoru 𝑚.
– Inače, proveri da li je put od polaznog čvora do čvora 𝑚 preko čvora 𝑛 bolji (kraći ili jeftiniji)
od postojećeg puta do 𝑚 (trenutna vrednost 𝑔(𝑚)). Ako jeste, promeni informaciju o roditelju
čvora 𝑚 na čvor 𝑛 i ažuriraj vrednosti 𝑓 (𝑚), a ako je 𝑚 bio u zatvorenoj listi, prebaci ga u
otvorenu.
ˆ Izbaci 𝑛 iz otvorene liste i dodaj ga u zatvorenu listu.

3. Izvesti da traženi put ne postoji (otvorena lista je prazna i uspeh nije prijavljen).

Slika 4.10: Algoritam A*

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 𝑛
bolji od postojećeg puta. Ako jeste bolji, potrebno je ažurirati vrednost 𝑔(𝑚). To može da se desi i za čvor 𝑚
35 4. Informisana pretraga

koji pripada zatvorenoj listi: ako to jeste slučaj, potrebno je čvor 𝑚 ponovo ispitati kao otvoreni čvor. Ovo je
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.

4.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.

6)
Optimalnost: Od svih puteva izmedu dva data čvora, algoritam A* vratiće najkraći (tj. vratiće optimalno

01
rešenje) ako je funkcija ℎ dopustiva (eng. admissible). Funkcija ℎ je dopustiva ako nikada ne precenjuje
stvarno rastojanje izmedu tekućeg čvora i ciljnog čvora, tj. ako za svaki čvor važi:

(2
0 ≤ ℎ(𝑛) ≤ ℎ* (𝑛),

gde je ℎ* (𝑛) cena optimalnog puta od čvora 𝑛 do ciljnog čvora.


je
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 𝑑.
an
Funkcija ℎ je konzistentna (eng. consistent) ako ima vrednost 0 za ciljni čvor i za bilo koja dva susedna
čvora 𝑚 i 𝑛 važi:
d

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


iz

gde je 𝑐(𝑛, 𝑚) cena pridružena (moguće usmerenoj) grani (𝑛, 𝑚). Svaka konzistentna funkcija je dopu-
stiva, ali obratno ne važi. 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
o

ℎ konzistentna, algoritam A* je optimalan i još jednostavniji nego u opštem slučaju. Dokaz optimalnosti
sk

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: vrednosti funkcije 𝑔 , pa onda i 𝑓 za neko stanje mogu da se menjaju u toku
n

primene algoritma, ali u stablu pretrage svaki čvor ima vrednosti 𝑔 i 𝑓 koje se ne menjaju. Može da bude
ro

više čvorova kojima je pridruženo jedno isto stanje.


Lema 4.1. Ako je ℎ konzistentna heuristika, onda u svakom trenutku primene algoritma, duž svakog puta
kt

kroz stablo pretrage, vrednosti 𝑓 (𝑛) nisu opadajuće.


le

Dokaz: Ako je u nekom trenutku primene algoritma čvor stabla pretrage 𝑚 tekući i ako je njegov roditelj
E

čvor 𝑛, onda važi:

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

Tvrdenje leme onda sledi na osnovu jednostavnog induktivnog argumenta. 

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

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 𝑓 (𝑛). 
4.3. Algoritam A* 36

Lema 4.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
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
i 𝑔0 + ℎ(𝑛) > 𝑔1 + ℎ(𝑛), tj. 𝑓0 > 𝑓1 . S druge strane, na osnovu prethodne leme, važi 𝑓0 ≤ 𝑓1 , što je
kontradikcija. 

Teorema 4.2. Ako je ℎ konzistentna heuristika, ako je pronaden put do ciljnog čvora, on je sigurno
optimalan.

6)
Dokaz: Algoritam vraća nadeni put čim ciljni čvor po prvi put postane tekući. Na osnovu prethodne

01
leme, ako je ℎ konzistentna heuristika, kad ciljni čvor postane tekući, do njega je već pronaden
optimalan put, što daje tvrdenje teoreme. 

(2
Upravo lema 4.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
obezbeduje jednostavniju i efikasniju implementaciju algoritma A*. je
an
Ako je funkcija ℎ konzistentna, onda je ona i dopustiva. Obratno ne važi nužno: funkcija ℎ može da bude
dopustiva, a da ne bude konzistentna.
d

Složenost: Vremenska složenost algoritma A* zavisi od heuristike. U najgorem slučaju, broj obradenih
čvorova je eksponencijalan u odnosu na dužinu najkraćeg puta. U tom slučaju, i prostorna i vremen-
iz

ska složenost algoritma A* jednake su kao za BFS algoritam.


Broj obradenih čvorova je polinomijalan ako je heuristika kvalitetna, tj. ako funkcija ℎ zadovoljava sledeći
o

uslov:
sk

|ℎ(𝑥) − ℎ* (𝑥)| ≤ 𝑂(log ℎ* (𝑥))


gde je ℎ* optimalna heuristika, tj. funkcija koja vraća tačnu cenu puta od čvora 𝑥 do ciljnog čvora.
n

Ukoliko funkcija 𝑓 * odgovara optimalnom putu, onda algoritam A* obraduje sve čvorove za koje važi
ro

𝑓 (𝑛) < 𝑓 * (𝑛), kao i neke čvorove 𝑛 za koje važi 𝑓 (𝑛) = 𝑓 * (𝑛).
kt

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
le

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.
E

Primer 4.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 ℎ. Sledeća tabela ilustruje primenu algoritma A*
(odgovarajuće stablo pretrage prikazano je na slici 4.11). .

𝐴 5 𝐺
6 6
6 4

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

𝐶 𝐹 𝐸
6 3 0
37 4. Informisana pretraga

6𝐴1

11 𝐷 11 𝐺
6𝐴1

11 𝐷 2 11 𝐺

6𝐴 16 𝐶 12 𝐹 13 𝐻
6𝐴1

11 𝐷 2 11 𝐺 3

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

11 𝐷 2 11 𝐺 3

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

12 𝐷 13 𝐻 13 𝐵

6)
6𝐴1

11 𝐷 2 11 𝐺 3

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

(2
12 𝐷 13 𝐻 13 𝐵 5

𝐻𝐹 𝐸
6𝐴1

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

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

𝐻𝐹𝐸
iz

6𝐴1

11 𝐷 2 11 𝐺 3
o

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

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

𝐻𝐹𝐸 𝐻𝐹𝐸
n

6𝐴1
ro

11 𝐷 2 11 𝐺 3
kt

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

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

𝐻𝐹𝐸 𝐻𝐹𝐸 8
E

Slika 4.11: Stablo pretrage tokom primene algoritma A* na problem iz primera 4.5 (levo od čvora je zapisana
njegova 𝑓 vrednost, a desno redni broj u nizu tekućih čvorova)

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) 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)
4.3. Algoritam A* 38

Na kraju primene algoritma, kada je čvor 𝐸 postao tekući čvor, konstruiše se traženi put (koristeći infor-
macije o roditeljma za čvorove iz zatvorene liste: 𝐴 − 𝐷 − 𝐻 − 𝐵 − 𝐸 . Korišćena heuristika je dopustiva, pa je
pronadeni put optimalan.
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
bilo radeno, algoritam bi se ponašao na sledeći način:

𝐴 5 𝐺
6 6
6 4

6)
𝐷 3 𝐻 2 𝐵

01
5 4 1
4 5 2

(2
3 3

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

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)
iz

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)
o

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


sk

H(13) E(B,14+0), C(D,10+6) H(D)


E(14) C(D,10+6)
n
ro

Na kraju primene algoritma, kada je čvor 𝐸 postao tekući čvor, konstruiše se put: 𝐴 − 𝐷 − 𝐹 − 𝐵 − 𝐸 . Ovo
kt

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.
le

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 se koristi konzistentna heuristika ℎ čija
E

se vrednost razlikuje u odnosu na prethodnu samo za čvor 𝐻 .

𝐴 5 𝐺
6 6
6 4

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

𝐶 𝐹 𝐸
6 3 0
39 4. Informisana pretraga

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), 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(D,9+3), E(B,13+0), C(D,10+6) B(H)
F(12) E(B,13+0), C(D,10+6) F(D)
E(13) C(D,10+6)

Primer 4.6. U primeru pronalaženja najkraćih puteva izmedu gradova (primer 2.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 4.1. Tabela na slici 4.12 ilustruje izvršavanje algoritma A*
na primeru puta Podgorica-Budimpešta. Nadeni put je Podgorica-Beograd-Budimpešta, za razliku od pohlepne

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

Budimpešta

01
340

(2
300 380
840
Zagreb 320
640
390410
400
290
370 560
290
640
Beograd
je
590
450
Bukurešt
an
190
450 360
Sarajevo 430
230 280 300
320
d

170
240 Sofija
iz

350
Podgorica 170
190
Skoplje
o

tekući stanje otvorene liste u zatvorenu


čvor [čvor(roditelj,g+h)] listu se
sk

dodaje
Pg(-,0+560)
n

Pg Sa(Pg,230+410), Bg(Pg,450+320), Sk(Pg,350+640) Pg(-)


ro

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)
kt

Bud Sk(Pg,350+640), Zg(Sa,630+300)


le

Slika 4.12: Graf koji opisuje problem puteva izmedu gradova.


E

Primer 4.7. Slika 4.13 prikazuje stanje slagalice i tri moguća naslednika, koja imaju ocenu rastojanja istu
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.
Za isto polazno stanje, algoritam A* pronalazi rešenje od pet poteza – levo, gore, desno, dole, dole. Stablo
pretrage vršene algoritmom A* je prikazano na slici 4.14 i odgovara procesu pretrage u kojem se medu stanjima
naslednicima prvo razmatra pogrešan, ali po proceni rastojanja, jednako obećavajuć potez nadole.

4.3.2 Specijalni slučajevi primene


Obilasci grafa u dubinu i širinu mogu se smatrati specijalnim slučajevima algoritma A*.
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
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.
4.3. Algoritam A* 40

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 4.13: Stablo pohlepne pretrage na primeru slagalice u kojem se polazno stanje nalazi na platou.

6)
01
0 + 5 (1)

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

5 6 11 7 5 6 11 7 5 6 11
9 10 8 12 9 10 8 9 10 8 7
iz

13 14 15 13 14 15 12 13 14 15 12

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


o

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

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
n

13 14 15 13 14 15 12 13 14 15 12 13 14 12
ro

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


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

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

13 14 15 12 13 14 15 12 13 14 15 12
E

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

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

Slika 4.14: 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
listu. U zagradama su navedeni redni brojevi pod kojim stanja postaju tekuća.
41 4. Informisana pretraga

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.
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.
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
čvoru.
Opšti algoritam A* često se primenjuje za pronalaženje puta na uniformnoj mreži čvorova (koja odgovara, na
primer, diskretizovanoj mapi). Tada on dobija specifičnu formu. Pretpostavimo 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 je povezano sa svakim susednim poljem
(osim sa preprekama), te ima (izuzev polja na rubu) četiri susedna polja (ali 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

6)
ℎ je euklidsko rastojanje izmedu dva polja. Ova funkcija je konzistentna (te obezbeduje optimalnost), ali je
zahtevna što se tiče vremena izračunavanja (posebno na mapama sa milionima čvorova). Drugi primer funkcije

01
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. Ova heuristika je dopustiva (jer nikad ne precenjuje stvarno rastojanje), te

(2
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 stvarna cena 1, a svakom dijagonalnom potezu stvarna
cena 2 ≈ 1.414 (ovakva cena odgovara euklidskom rastojanju izmedu središta polja; zbog efikasnije primene,
je
ove vrednosti se obično množe nekom konstantom, na primer, 10, i zaokružuju na ceo broj). U ovom slučaju,
Menhetn rastojanje potencijalno precenjuje rastojanje do ciljnog čvora, te nije dopustiva heuristika i zbog toga
an
ne garantuje pronalaženje najkraćeg puta. No, ovaj metod u praksi ipak obično daje dobre rezultate i pronadeni
putevi su obično dovoljno dobri, čak i ako nisu najkraći. 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,
d

iako ne nužno optimalna.


iz

Primer 4.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
o

svako polje je, kao i obično, zbir vrednosti funkcija 𝑔 i ℎ. Polazni čvor označen je zelenom, a ciljni crvenom
sk

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.
n

Postupak je isti kao kod opšteg algoritma: u svakoj iteraciji bira se polje iz otvorene liste sa najmanjom
ro

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
kt

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
le

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 𝑓 .
E

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.
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.
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
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 nijegnog 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
4.3. Algoritam A* 42

𝑓
𝑔 ℎ
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

6)
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

01
88 74 108 94 80 74 74 74 74 102
2860 2450 2880 2470 2060 2450 3440 4430 5420 7230
108 94 88 88 88

(2
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
d

94 74 60 54 74 68 88
2470 1460 1050 1440 5420 5810 6820
iz

108 94 80 74 74 74 74 102
2880 2470 2060 2450 3440 4430 5420 7230
108 94 88 88 88
o

3870 3460 3850 4840 5830


sk

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


n
ro

polja u otvorenoj listi bira se ono sa najmanjom vrednošću funkcije 𝑓 . Ukoliko postoji više takvih svejedno je
kt

koji izabrati. Neka je, na primer, izabrano polje neposredno ispod prethodnog tekućeg polja.
le

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
E

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.
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.
43 4. Informisana pretraga

4.3.3 Implementaciona pitanja


Algoritam A* se obično primenjuje u aplikacijama koje rade u realnom vremenu, te je neohodno 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
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.
Ipak, ukoliko broj čvorova grafa nije preveliki, može da bude isplativo i statičko alociranje potrebnog prostora
(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 (npr. 1.414) potrebno ih je pomnožiti sa, na primer, 1000 i koristiti samo
zaokružene vrednosti.
Najgori slučaj za algoritam A* je kada ne postoji put izmedu polaznog i ciljnog čvora. U tu svrhu može se
implementirati brza provera da li uopšte postoji put izmedu dva čvora: dva čvora su povezana ako i samo ako

6)
pripadaju povezanim delovima grafa. Ako se za svaki čvor može lako proveriti kom delu grafa pripada, onda je
i navedena provera jednostavna.
Kada se algoritam A* primenjuje za pronalaženje puta na uniformnoj mreži, on daje korake u osam mogućih

01
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.

(2
Pitanja i zadaci
je
Pitanje 4.1. Kako se naziva algoritam pretrage koji uvek bira lokalno optimalne akcije?
an
Pitanje 4.2. Šta, umesto globalnog ekstremuma, pohlepna pretraga može vratiti kao rezultat?
Pitanje 4.3. Šta je plato u problemima pretrage?
d

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

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

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


sk

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


algoritma A*?
n

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


ro

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

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

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

Pitanje 4.11. Kakva struktura se koristi za čuvanje vrednosti funkcije evaluacije u okviru algoritma A*?
Obrazložiti.
Pitanje 4.12. Da li je, na samom početku primene algoritma A*, lista zatvorenih čvorova prazna?
Pitanje 4.13. Koji čvor se, prilikom primene algoritma A*, prvi dodaje u listu otvorenih čvorova?
Pitanje 4.14. Kada se, u okviru algoritma A*, u listu zatvorenih čvorova dodaje novi element?
Pitanje 4.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 4.16. Da li je na kraju primene algoritma A* lista otvorenih čvorova nužno prazna?
Pitanje 4.17. Da li je na kraju primene algoritma A* lista zatvorenih čvorova nužno prazna?
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.
4.3. Algoritam A* 44

Pitanje 4.18. Šta je uslov zaustavljanja za algoritam A*?


Pitanje 4.19. Za koje grafove je algoritam A* najpogodniji za primenu?
Pitanje 4.20. Kada kažemo da je funkcija heuristike ℎ u algoritmu A* dopustiva, a kada kažemo da je
konzistentna?
Pitanje 4.21. Šta znači to da je algoritam A* potpun?
Pitanje 4.22. Pod kojim uslovom je algoritam A* potpun?
Pitanje 4.23. Pod kojim uslovom je algoritam A* optimalan (nalazi najkraći put)?
Pitanje 4.24. Ukoliko je 𝑓 * funkcija koja odgovara optimalnom putu izmedu dva čvora u grafu, koje čvorove
obraduje algoritam A*?
Pitanje 4.25. Kada je u algoritmu A* broj obradenih čvorova polinomijalan?

6)
Pitanje 4.26. Kako se zove rastojanje izmedu dva čvora u kojem se broji ukupan broj polja predenih horizon-
talno ili vertikalno od prvog do drugog?

01
Pitanje 4.27. Koliko je Mehnetn rastojanje izmedu donjeg levog i gornjeg desnog polja šahovske table?
Pitanje 4.28. Kada se algoritam A* primenjuje na uniformnoj mreži, koja funkcija se obično primenjuje

(2
kao heuristika? Da li je ova heuristika dopustiva? Zašto se primenjuje ova heuristika, šta je njena ključna
osobina?

je
Pitanje 4.29. Kada se algoritam A* primenjuje na uniformnoj mreži, šta se obično koristi kao cena puta do
susednog čvora koji je desno, a šta do susednog čvora gore-desno?
an
Zadatak 4.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
d

belog na sivo polje je 4 i cena prelaska sa sivog na belo polje je takode 4. Crno polje nije dostupno. Prikazati
iz

izvršavanje algoritma A* za ovaj problem. Za ocenu cene kretanja od nekog polja do cilja, koristiti Menhetn
rastojanje od tog polja do cilja.
o

A
sk

B
n

Zadatak 4.2. Potrebno je naći najjeftiniji put od grada A do grada E. Procenjene cene puta od različitih
ro

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
kt

heuristika dopstiva? Da li je zadata heuristika konzistentna? Prikazati izvršavanje algoritma A* na ovom


problemu.
le

Zadatak 4.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
E

iznad lukova predstavljaju tačne cene prelaska od čvora do čvora.


2c 1 c1

2 3
c c
1 1 0
Zadatak 4.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
45 4. Informisana pretraga

Zadatak 4.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
4
6
𝐶
1
𝐷 1 𝐸

Zadatak 4.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.

𝑉3 9 𝑉2
7
3

6)
8 1
𝑉4 4
𝑉5
2

01
1 5
𝑉0 𝑉1

(2
Zadatak 4.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
polja su neprohodna.
S je
an
C
d

Zadatak 4.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
iz

polja su neprohodna.
C
o
sk

S
n

Zadatak 4.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
ro

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,
kt

Pera se odlučuje da ga nae. algoritmom A* . Opisati Perinu pretragu.


le

1 𝐴 1 1
E

3 𝐵 1
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 5

Programiranje logičkih igara

Programiranje logičkih, intelektualnih igara jedan je od klasičnih problema veštačke inteligencije i verovatno

6)
jedan od najatraktivnijih. Kako logičke igre zahtevaju odlučivanje koje se može smatrati inteligentnim, ova pro-
blematika predmet je interesovanja mnogih istraživača u oblasti veštačke inteligencije, a i ne samo njih. Možda

01
su zbog toga neki od najvećih dometa veštačke inteligencije upravo u ovom domenu: računari su već pobedili
svetske šampione u igrama bekgemon, dame i šah (u igri sa računarom, partiju šaha izgubio je 1997. godine,

(2
tadašnji važeći svetski šampion Gari Kasparov), a nedavno (početkom 2016. godine) i u igri go. Uprkos ovim
dometima, još uvek treba zadržati oprez prema programima za logičke igre, jer njihovi principi odlučivanja
kvalitativno (po pitanjima apstrahovanja, analogija, pravljenja planova i sl.) još uvek nisu dovoljno blizu ljud-
je
skim. Mogućnosti rešavanja ovih problema i primene tih tehnika u drugim domenima upravo i motivišu dalja
istraživanja veštačke inteligencije u ovom pravcu. Većina najznačajnijih programa za igranje igara zasnovana je
an
na efikasnim algoritmima pretrage, a od nedavno (na primer, za igru go) i na naprednim tehnikama mašinskog
učenja.
U ovoj glavi biće reči o razvoju strategija za automatsko igranje logičkih igara, a zatim i o samim strategijama.
d

Neće biti upuštanja u teorijske analize pojedinačnih igara, već će biti opisani opšti pojmovi i algoritmi koji mogu
iz

da se koriste za širok spektar igara. 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, na primer, igre šah, dame, go, reversi,
o

iks-oks, četiri u nizu itd, a ne spadaju, na primer, igre u kojima igrač ne zna karte koje ima protivnik, nepoznati
sk

broj koji treba pogoditi itd.


n

5.1 Razvoj automatskog igranja logičkih igara


ro

Istorija automatskog igranja logičkih igara počinje početkom dvadesetog veka: španski pronalazač Tores
kt

Kevedo (Torres y Quevedo) konstruisao je 1910. godine (i prikazao 1914. na svetskoj izložbi u Parizu) 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 poteza).
le

Razmatranje teorije igara započeo je fon Nojman (Von Neuman) postavljanjem opšteg problema (1928):
E

Igrači 𝑆1 , 𝑆2 , . . . , 𝑆𝑛 igraju datu igru Γ. Kako treba da igra igrač 𝑆𝑚 da bi ostvario najbolji mogući rezultat? Za
većinu igara teško je ili nemoguće efektivno realizovati optimalni algoritam za proizvoljno početno stanje.
Moderna istorija programiranja igara počinje „klasičnim“ tekstom Programming a digital computer for pla-
ying Chess koji je 1950. godine objavio Klod Šenon (Claude Shannon). U tom tekstu Šenon je opisao dve opšte
strategije za izbor poteza: strategije A i B:

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 5.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 i gledanje unapred (eng. lookahead) pristupom, a
ponegde i „sistematskim pretraživanjem“ ili „dubinskim pretraživanjem“. Ako bi se korišćenjem ove strategije,
minimaks algoritmom, pretraživanje stabla igre vršilo do završnih stanja igre, ispitivanjem svih mogućih tokova
partije zaista bi bio izabran najbolji legalan potez i taj izbor bi imao savršeno obrazloženje u samom primenjenom
algoritmu. Medutim, za većinu igara nije praktično moguće pretražiti kompletno stablo igre. Čak i pretraživanje
stabla igre do dubine od svega nekoliko poteza u igrama sa prosečno deset ili dvadeset legalnih poteza, zahteva

47
5.2. Legalni potezi i stablo igre 48

ispitivanje ogromnog broja pozicija. Zbog toga, efikasna primena Šenonove A strategije svodi se na pristup
„gruba sila plus jednostavna vrednosna funkcija“, tj. na pretraživanje stabla igre do relativno male dubine
algoritmima koji su usmereni heuristikama i uz dobro osmišljenu, ali jednostavnu 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 najbolji potez, a obim pretraživanja i
različitih izračunavanja ostaje, najčešće, i dalje veoma veliki. Precizni opisi funkcije evaluacije, algoritama
minimaks i srodnih dati su u poglavlju 5.4.
Šenonovoj strategiji B tipa odgovara lookup table pristup – jednostavna tabela koja zamenjuje izračunavanje
u toku izvršavanja. U kontekstu igara, ovaj pristup zahteva postojanje unapred pripremljene tabele sa dve ko-
lone: u jednoj su moguće pozicije/stanja igre, a u drugoj optimalni potezi. Jedna od „klasičnih“ implemetacija
ovog pristupa je program za igranje šahovske završnice „kralj i kraljica protiv kralja i topa“ koji je 1977. go-
dine 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 jačeg 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 nepobediv. Tabela je kreirana koristeći retrogradnu analizu i induktivni pristup. Za

6)
optimalnu igru igrača koji ima topa, najpre se prepoznaju i označavaju pozicije u kojima je protivnik matiran
(mat u 0 poteza), dalje, prepoznaju se pozicije u kojima ma šta da odigra protivnik postoji mat u najviše 𝑑

01
poteza i za takve pozicije važi da postoji mat u najviše 𝑑 + 1 potez. Za završnicu kralj i top protiv kralja, ovaj
postupak staje posle 33 iteracije (jer iz svake pozicije postoji mat u najviše 33 poteza). Nedavno su (2012),

(2
korišćenjem suštinski 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,
je
znanje o igri ne nalazi se niti u samom programu koji igra, niti u tabeli, već u programu koji je tabelu generisao.
Opisani pristup zahteva, pored adekvatne procedure za generisanje lookup tabele i veliku memoriju (za smeštanje
an
svih mogućih pozicija), ali u samom procesu igre program zahteva zanemarljivo vreme za izbor poteza.
Šenonova strategija A u procesu izbora poteza zahteva malo memorije i mnogo izračunavanja, a strate-
gija B malo izračunavanja i mnogo memorije. Na toj skali odnosa količine podataka koji se koriste i obima
d

izračunavanja, čovekov način zaključivanja je izmedu ovih krajnosti i bitno se od njih razlikuje po svojoj prirodi.
iz

Upravo priroda čovekovog načina razmišljanja i želja da se on oponaša, vodi ka novim pristupima u formalizaciji
igara i njihovom programiranju.
o
sk

5.2 Legalni potezi i stablo igre


Pravila konkretne igre definišu legalna stanja (tj. legalne pozicije) i legalne poteze za svaku legalnu poziciju.
n

Za svaku legalnu poziciju može se efektivno odrediti skup legalnih poteza. Neke legalne pozicije mogu biti
ro

početne pozicije a neke završne. U nekim igrama, legalni potez može biti i dalje, u situaciji kada igrač koji je na
redu nema na raspolaganju legalnih poteza i preskače svoj red (takve situacije ne postoje u šahu, ali postoje,
kt

na primer, u igri reversi).


Prostor stanja igre može se opisati grafom čiji su čvorovi legalne pozicije, a grane legalni potezi. Taj graf je
le

usmeren jer nije nužno da postoje potezi u oba smera koji povezuju dva stanja (na primer, u šahu pešak može da
ide samo napred, ne i nazad). Stablo igre je stablo pretrage koje nastaje pretraživanjem grafa prostora stanja.
E

U igri za dva igrača, u ovako definisanom stablu igre, od korena do bilo kog lista naizmenično se 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. Kompletno stablo igre ima onoliko listova koliko data igra ima različitih regularnih 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 5.1 ilustrovan je deo kompletnog stablo igre za igru iks-oks.
U procesu traženja poteza, ne kreira se stablo pretrage kao struktura, već je stablo samo implicitno i opisano
je procesom (obično rekurzivnim) obilaska pozicija. Ako je proces pretrage rekurzivan, za potez dubine 𝑑 pamte
se samo podaci proistekli iz 𝑑-tostrukog rekurzivnog pozivanja.

5.3 Otvaranje
U programima za logičke igre često je izuzetno značajna biblioteka otvaranja (opening book) — koja je
zasnovana na ljudskom iskustvu i koja sadrži informacije o poznatim i kvalitetnim potezima koji se često
javljaju u otvaranju. Biblioteka otvaranja može biti statička (sadržati odreden, konačan broj varijanti u svakom
potezu i informacije o potezima samo do odredene dubine) ili se proširivati tokom samog izvršavanja programa.
49 5. Programiranje logič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

6)
završno stanje
. ................ . . ....... .

01
Slika 5.1: Deo stabla igre za igru iks-oks

(2
U igri programa sledi se tok partije iz biblioteke dok je to moguće (dok o tome postoje odgovarajuće
je
informacije u biblioteci otvaranja), a onda se prelazi na druge strategije izbora poteza. Ukoliko za neku poziciju
an
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 poteza (kao težnja da
se što duže ostane u poznatim varijantama).
d

Pomenuti pristup može da se realizuje, na primer, na sledeći način: neka je, na osnovu biblioteke otvaranja,
iz

u nekom trenutku na raspolaganju 𝑛 poteza. 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
o

ocena 𝑚𝑖 veća. Takode, ocena 𝑚𝑖 je veća ukoliko je veća dubina biblioteke partija koja sledi za 𝑖-tim potezom.
sk

Tada se, u toj poziciji, 𝑖-ti potez (1 ≤ 𝑖 ≤ 𝑛) bira sa verovatnoćom


𝑚𝑖
n

𝑝𝑖 = ∑︀𝑛 .
𝑗=1 𝑚𝑗
ro

Na taj način izbegava se determinističko ponašanje programa u otvaranju: bolji potezi (u smislu neke procene)
kt

se biraju češće, ali ne uvek. Ocene 𝑚𝑖 mogu se tokom vremena i korigovati.

5.4 Središnjica
le
E

Savremeni programi za logičke igre u središnjici najčešće koriste dubinsko pretraživanje (sa jednostavnom
funkcijom evaluacije) stabla igre koja odgovara Šenonovoj A strategiji. Kod većine programa za kompleksnije
logičke igre, pored kvalitetne funkcije evaluacije, od ključne važnosti su algoritmi koji se koriste za pretraživanje
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.

5.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 se mogu 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.
5.4. Središnjica 50

Funkcija evaluacije obično preslikava skup svih mogućih pozicija u segment celih ili brojeva u pokretnom zarezu:
ℱ : 𝒫 ↦→ [−𝑀, 𝑀 ]
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č.
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 (npr. 1, -1 i 0). Tro-
vrednosna funkcija zahteva pretraživanje stabla igre do završnih čvorova, pa je, zbog potencijalno velike du-
bine pretraživanja, ova funkcija za većinu igara praktično neupotrebljiva. U šahu funkcija evaluacije treba da
uključuje „materijal“ (tj. vrednost ukupnog materijala), pokretljivost figura, pešačku strukturu, rokade i slično.
Na primer, beloj kraljici 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).
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, da funkcija evaluacije za simetrične
pozicije (za zamenjene uloge igrača) treba da daje vrednosti koje se razlikuju samo po znaku.
Ocene završnih pozicija ne moraju nužno biti statičke: mogu se korigovati dodavanjem (odnosno oduzima-

6)
njem) 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

01
maksimalno odgodio).

(2
5

je 𝑚𝑎𝑥
an
5 1 −2

𝑚𝑖𝑛
d
iz

5 7 1 −2 2

𝑚𝑎𝑥
o
sk

5 7 1 1 −2 2 −1 5 7 1 1 −2 2 −1
n

Slika 5.2: Stablo pretrage sa ilustracijom algoritma minimax


ro
kt

5.4.2 Algoritam minimaks


le

Algoritam minimaks je ključni element Šenonove A strategije i on je u osnovi skoro svih algoritama za
E

izbor poteza pretraživanjem stabla igre. Minimaks algoritam pretraživanjem stabla igre za igrača koji je na
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,
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 5.2). Ocena početnog čvora je maksimum ocena čvorova–neposrednih potomaka i rezultat
je potez kojem odgovara taj maksimim. Dakle, algoritam karakteriše maksimizovanje ocene kada je na potezu
sam igrač i minimizovanje kada je na potezu njegov protivnik, pa otuda i ime algoritma. Opis algoritma dat je
na slici 5.3.
Primer 5.1. Na slici 5.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
51 5. Programiranje logičkih igara

Algoritam: Minimax

Ulaz: pozicija
Izlaz: potez
1. 𝑣 := 𝑀 𝑎𝑥(𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎)

2. vrati potez kojem odgovara vrednost 𝑣

Funkcija: Max

Ulaz: 𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎, funkcija evaluacije 𝑓


Izlaz: vrednost pozicije
1. Ako je završna pozicija vrati 𝑓 (𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎)

2. 𝑣 := −∞

6)
3. Za svaku poziciju 𝑠 do koje se može doći u jednom potezu:

ˆ Ako je 𝑀 𝑖𝑛(𝑠) > 𝑣 onda 𝑣 := 𝑀 𝑖𝑛(𝑠)

01
4. vrati 𝑣

(2
Funkcija: Min

Ulaz: 𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎, funkcija evaluacije 𝑓


Izlaz: vrednost pozicije je
an
1. Ako je završna pozicija vrati 𝑓 (𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎)

2. 𝑣 := +∞
d

3. Za svaku poziciju 𝑠 do koje se može doći u jednom potezu:


iz

ˆ Ako je 𝑀 𝑎𝑥(𝑠) < 𝑣 onda 𝑣 := 𝑀 𝑎𝑥(𝑠)


o

4. vrati 𝑣
sk

Slika 5.3: Algoritam minimaks


n
ro

koji dalje slede i da se ne koriste informacije o njima (a te informacije mogu biti veoma važne i često bi
kt

promenile odluku o izabranom potezu). Kada je neki potez odabran na osnovu čvorova na nekoj dubini i
odigran, informacija o tome se ne koristi u procesu izbora narednog poteza (npr. ako je u šahu neki potez
izabran jer odgovara čvor dubine tri u kojem se protivniku daje šah, u sledećem potezu pretraživanje kreće
le

iznova i često neće biti izabran potez koji vodi do šaha protivniku, sada u dva poteza). Dakle, pri pretraživanju
E

stabla igre „vide se“ samo čvorovi na nekoj fiksnoj dubini – ni oni posle, ni oni pre njih. Ovaj fenomen često se
naziva efekat horizonta (eng. horizon effect).

5.4.3 Algoritam alfa-beta


Algoritam alfa-beta 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
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 5.5); nakon tog poteza protivnik (igrač 𝐵 )
5.4. Središnjica 52

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

6)
3 Z0Z0 3 Z0Z0 3 Z0J0
2 kZKZ 2 kZ0Z 2 0Z0Z
1 Z0Z0 1 Z0Z0 1 ZkZ0

01
a b c d a b c d a b c d
/ ... | ... \ / ... \ / ... \

(2
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 kZKZ
1 Z0Z0
2 kZKZ
1 Z0Z0
2 kZ0J
1 Z0Z0
2 kZ0Z
1 Z0Z0
2 kZ0Z
1 Z0Z0
2 0Z0Z
1 ZkZ0
je 2 0Z0Z
1 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 5.4: Ilustracija rada algoritma minimax


d
iz

𝑤𝑛+1 < 𝑤𝑘 −2 < 5


5
o

𝑚𝑎𝑥
sk

𝑤𝑘 𝑤𝑛 𝑤𝑛+1 5 1 −2
n

𝛼 odsecanje 7>5 𝛼 odsecanje


𝑚𝑖𝑛
ro

𝑤𝑗′ 5 7 1 −2 2
kt

𝛽 odsecanje
𝑚𝑎𝑥
le

5 7 1 1 −2 2 −1
E

Slika 5.5: Stablo pretrage sa ilustracijom algoritma alfa-beta

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;
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 (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 5.5). „Beta odsecanje“ je
potpuno analogno i primenjuje se na čvorove u kojima je na potezu protivnik. Naravno, s obzirom na smisao
funkcije evaluacije, maksimumi pominjani u „alfa odsecanju“ zamenjuju se minimumima i obratno (slika 5.5).
Algoritam alfa-beta dat je na slici 5.6.
Kako je stablo igre obično ogromno, ubrzavanje minimaks algoritma heuristikama „alfa-odsecanje“ i „beta-
53 5. Programiranje logičkih igara

Algoritam: Alfa-beta

Ulaz: pozicija
Izlaz: potez
1. 𝑣 = 𝑀 𝑎𝑥(𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎, −∞, +∞)

2. vrati potez kojem odgovara vrednost 𝑣

Funkcija: Max

Ulaz: 𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎, alfa vrednost 𝛼, beta vrednost 𝛽 , funkcija evaluacije 𝑓


Izlaz: vrednost pozicije
1. Ako je završna pozicija vrati 𝑓 (𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎)

2. 𝑣 := −∞

6)
3. Za svaku poziciju 𝑠 do koje se može doći u jednom potezu:

ˆ Ako je 𝑀 𝑖𝑛(𝑠, 𝛼, 𝛽) > 𝑣 onda 𝑣 := 𝑀 𝑖𝑛(𝑠, 𝛼, 𝛽)

01
ˆ Ako je 𝑣 ≥ 𝛽 onda vrati 𝑣

(2
ˆ Ako je 𝑣 > 𝛼 onda 𝛼 := 𝑣

4. vrati 𝑣

Funkcija: Min je
an
Ulaz: 𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎, alfa vrednost 𝛼, beta vrednost 𝛽 , funkcija evaluacije 𝑓
Izlaz: vrednost pozicije
d

1. Ako je završna pozicija vrati 𝑓 (𝑝𝑜𝑧𝑖𝑐𝑖𝑗𝑎)


iz

2. 𝑣 := ∞

3. Za svaku poziciju 𝑠 do koje se može doći u jednom potezu:


o
sk

ˆ Ako je 𝑀 𝑎𝑥(𝑠, 𝛼, 𝛽) < 𝑣 onda 𝑣 := 𝑀 𝑎𝑥(𝑠, 𝛼, 𝛽)


ˆ Ako je 𝑣 ≤ 𝛼 onda vrati 𝑣
n

ˆ Ako je 𝑣 < 𝛽 onda 𝛽 := 𝑣


ro

4. vrati 𝑣
kt

Slika 5.6: Algoritam alfa-beta


le
E

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 5.2. Na slici 5.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 potezi ispituju počev od najboljeg u smislu tekućeg čvora i tada algoritam
alfa-beta daje najbolji efekat (tj. ispituje najmanji broj čvorova stabla). Naravno, takav poredak poteza nije
moguće generisati egzaktno u toku pretraživanja stabla igre, ali se dobrim procenama efekat alfa-beta algoritma
može tako bitno popraviti. Upravo na toj ideji zasnivaju se i neka poboljšanja alfa-beta algoritma.
5.4. Središnjica 54

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

6)
3 Z0Z0 3 Z0Z0 3 Z0ZR
2 kZ0Z 2 0j0Z 2 kZ0Z
1 Z0ZR 1 Z0ZR 1 Z0Z0

01
a b c d a b c d a b c d
/ ... \ / ... X / ... \

(2
1000 100 1000 100 100
4 0J0Z 4 0ZKS 4 0J0Z 4 0ZKS 4 RZ0Z
3 Z0Z0 3 Z0Z0 3 Z0Z0 3 Z0Z0 3 ZKZ0
2 kZ0S
1 Z0ZR
2 kZ0Z
1 Z0ZR
2 0j0S
1 Z0ZR
2 0j0Z
1 Z0ZR
2 0Z0S
1 ZkZ0
je
an
a b c d a b c d a b c d a b c d a b c d

Slika 5.7: Ilustracija rada algoritma alfa-beta


d
iz

5.4.4 Heuristika killer


o

U prethodnom poglavlju rečeno je da se efikasnost algoritma može popraviti ako se u svakom čvoru potezi
sk

ispituju, po nekoj proceni, od najboljeg ka najlošijem. Slično, algoritam alfa-beta daje dobre razultate ako
se u svakom čvoru najpre ispituje najbolji potez. 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. Heuristika
n

killer (ponekad se naziva i w-killer) zasniva se na navedenim činjenicama i ne koristi specifična znanja o igri (da
ro

bi se procenilo koji potezi su dobri).


Neka se u pretraživanju stabla alfa-beta algoritmom prvi put ocenjuje neki čvor na dubini 𝑑 (𝑑 ≥ 1) i neka
kt

je 𝑊 najbolji pronadeni potez u smislu tog čvora. Taj potez zvaćemo killer potezom za dubinu 𝑑. U svakom
sledećem čvoru na dubini 𝑑, ispitivanje poteza počinjemo sa killer potezom za tu dubinu. Ukoliko se pokaže da
le

je za taj čvor bolji neki drugi potez (𝑊 ′ ), taj potez postaje killer potez za dubinu 𝑑.
Ukoliko se pretraživanje stabla igre vrši do dubine 𝑑𝑚𝑎𝑥 , opisana heuristika primenjuje se za sve dubine 𝑑
E

takve da je 1 ≤ 𝑑 ≤ 𝑑𝑚𝑎𝑥 −1. Alfa-beta algoritam proširen killer heuristikom zovemo alfa-beta/killer algoritmom.
Primetimo da se primenom killer heuristike ne menja 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, i to najčešće sa bitno manjim brojem ispitanih čvorova stabla.
Smisao killer 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 pretnju.
Pretraživanjem stabla, u čvoru u kojem je na potezu protivnik, otkriva se matni potez i on postaje killer potez
(za dubinu 1). Pri daljem pretraživanju stabla, na dubini 1 najpre se ispituje taj potez i kako on vodi 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.
Legalni potezi treba da budu organizovani u ciklični niz, i da je za svaki legalan potez jednoznačno odreden
sledeći. Taj zahtev je u direktnoj vezi sa killer heuristikom, jer se ispitivanje poteza u skladu sa njom, vrši počev
od killer poteza i, ispitavši (eventualno) sve ostale, ciklično vraća do tog istog poteza. Takode, kako je moguće
da killer potez u nekom čvoru odgovarajuće dubine nije legalan, generator treba da za svaki mogući potez, bio
on u konkretnoj poziciji legalan ili ne, jednoznačno odreduje sledeći legalan potez.
55 5. Programiranje logičkih igara

5.4.5 Iterativni alfa-beta/killer algoritam


Za dubinu pretraživanja 𝑑𝑚𝑎𝑥 iterativni alfa-beta/killer algoritam se realizuje 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 killer potez za nivo 0 — za početni čvor. Dalje se, redom za
dubine 𝑑 (2 ≤ 𝑑 ≤ 𝑑𝑚𝑎𝑥 ) primenjuje algoritam alfa-beta/killer i dobijeni najbolji potez postaje killer potez za
početni čvor. Kao najbolji potez bira se onaj dobijen završnom primenom alfa-beta/killer algoritma za dubinu
𝑑𝑚𝑎𝑥 .
Efekti iterativnog algoritma su, u svakoj iteraciji, slični efektima alfa-beta/killer algoritma, s tim što u
iterativnom algoritmu postoji i killer potez za početni čvor u pretraživanju. Ima izgleda da je u svakoj iteraciji
taj killer 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 5.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 killer potez za početni čvor, završna iteracija

6)
će obično zahtevati ispitivanje manjeg broja čvorova od alfa-beta/killer algoritma za istu dubinu.
Naglasimo da se i primenom iterativnog alfa-beta/killer algoritma dobija najbolji potez (potez sa najboljom

01
ocenom) za datu funkciju evaluacije i datu dubinu pretraživanja što je važno svojstvo algoritama minimaks,
alfa-beta i alfa-beta/killer.
Kao modifikacija ovog algoritma, može se vršiti samo prva i poslednja iteracija, jer se i prvom iteracijom

(2
često dobija dovoljno dobar killer potez za dubinu 0. U različitim konkretnim situacijama, nekad je bolji jedan,
a nekad drugi algoritam, s tim što je, zbog mogućnosti prekida, u praksi prihvatljiviji kompletni iterativni
algoritam.
je
an
5.4.6 Stabilno pretraživanje
U prethodnim algoritmima se uvek govorilo o pretraživanju do fiksne dubine. Nedostatak takvog pristupa je
d

u tome što funkcija evaluacije, 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
iz

vode lošem izboru poteza (u šahu se npr. 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
o

mat). Zbog toga se primenjuje „stabilno pretraživanje“ (eng. quiscence searching): vrši se pretraživanje do neke
sk

fiksne dubine, ali se pretraživanje nastavlja i dalje ukoliko je, po nekom kriterijumu, završni čvor „nestabilan“.
Maksimalna dubina dodatnog pretraživanja takode može da bude ograničena. Stabilno pretraživanje može se
primenjivati u kombinaciji sa svakom od ranije opisanih tehnika.
n

Kriterijumi stabilnosti poteza odreduju se u skladu sa specifičnostima konkretne igre, ali i za istu igru mogu
ro

biti različiti. 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
kt

izvodenje nekog protivnikovog pešaka. Savremeni programi za šah često pretražuju stablo igre do dubine 4 (4
polupoteza tj. dva poteza) sa dodatnim, stabilnim pretraživanjem do dubine 16 ili više.
le

5.4.7 Prekidi i vremenska ograničenja


E

Važan problem u programiranju logičkih igara su i prekidi: potrebno je da program izabere smislen i dobar
potez i ukoliko se pretraživanje stabla igre prekine pre nego što se izvrši kompletan algoritam. Potrebno je,
dakle, da algoritam, i ukoliko je prekinuto njegovo normalno izvršavanje, vrati neki legalan potez. Naravno,
poželjno je i da taj potez bude što bolji. Prekidi mogu biti izazvani akcijom korisnika ili ograničenjima vremena
raspoloživog za jedan potez ili za celu partiju1 . Većina algoritama koji su do sada opisani u situacijama prekida
može da izabere tekući najbolji potez. Ipak, kad algoritam nije kompletno izvršen (i, na primer, ispitani su
samo neki, povoljni odgovori protivnika), tako odabran potez može biti veoma loš. Za rešavanje ovog problema
najpogodniji je iterativni alfa-beta/killer algoritam, jer praktično u svakom trenutku2 ima neku kompletno
završenu iteraciju i njen rezultat često jeste dovoljno dobar potez (iako, naravno, obično slabiji nego potez koji
bi bio dobijen kompletno izvršenim algoritmom).

5.4.8 Svojstva algoritama minimax i alfa-beta

1 Ukoliko je ograničeno vreme raspoloživo za celu partiju, program mora i da ga ekonomično deli na procenjeni broj poteza.
2 Prva iteracija, za gotovo sve igre i na gotovo svim računarima, može biti završena u deliću sekunde.
5.4. Središnjica 56

Definicija 5.1. 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.
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 𝑏, tj.

6)
𝑅𝑚𝑖𝑛𝑖𝑚𝑎𝑥 (𝑏, 𝐹 ) = 𝑏.

01
Teorema 5.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

(2
dubine ℎ ispituje 𝑂(𝑏ℎ/2 ) listova.

je
Dokaz: Neka 𝑇 (ℎ) označava broj listova koje treba ispitati za odredivanje egzaktne ocene čvora na nivou ℎ (za
an
zadato stablo), pri čemu je u ovom konkretnom kontekstu pogodno da se nivoi broje od listova – njima
odgovara nivo 0.
Neka 𝐿(ℎ) označava broj listova koje treba ispitati za odredivanje ograničenja ocene čvora na nivou ℎ
d

dovoljnog da obezbedi odsecanja u nastavku primene algoritma.


iz

Važi 𝑇 (0) = 1 i 𝐿(0) = 1. Kako se u svakom čvoru najpre ispituje najbolji potez, onda važi
o

𝑇 (ℎ) = 𝑇 (ℎ − 1) + (𝑏 − 1)𝐿(ℎ − 1)
sk

𝐿(ℎ) = 𝑇 (ℎ − 1)
n

odakle sledi
𝑇 (ℎ) = 𝑇 (ℎ − 1) + (𝑏 − 1)𝑇 (ℎ − 2)
ro

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



kt

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

le

(1+ 1+4(𝑏−1) √︀
𝑡2 = 2 = 1/2 + 𝑏 − 3/4
Dakle, važi
E

(︁ √︀ )︁ℎ (︁ √︀ )︁ℎ
𝑇 (ℎ) = 𝑎 · 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
barem reda 𝑂(𝑏ℎ/2 ). Killer heuristika u iterativnoj verziji zaista č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 sa minimaks
algoritmom.
Problem odredivanja faktora grananja alfa-beta algoritma za funkciju 𝐹 sa uniformnom raspodelom mnogo
je složeniji. Odgovor na pitanje o faktoru grananja alfa-beta algoritama daje sledeće teorema Judea Pearl-a iz
1982. godine.
57 5. Programiranje logičkih igara

Teorema 5.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 )

Posledica navedene teoreme je i sledeće važno tvrdenje.

Teorema 5.3. Alfa-beta algoritam 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. Algoritmi, koji su opisani u prethodnom delu
teksta i koji predstavljaju unapredenja algoritma alfa-beta u praksi zaista najčešće daju bolje rezultate nego
algoritam alfa-beta i to je uslovljeno prirodom stabla igre i funkcijom koja ocenjuje završne čvorove (koja nije
slučajna). Ipak, faktori grananja ovih algoritama se ne razlikuju od faktora grananja alfa-beta algoritma i u
opštem slučaju oni ne garantuju manje ispitanih završnih čvorova stabla nego algoritam alfa-beta.

6)
5.5 Završnica

01
U igrama kao što je šah, završnica iziskuje posebne tehnike. Ponekad su to tehnike koje se koriste u središnjici,

(2
ali uz korišćenje posebne ili više posebnih funkcija evaluacije. U onim drugim igrama, rešenja koja 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/taktikom3 .
je
Ukoliko se, 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). Tako, na primer,
an
optimalnu igru u šahovskoj 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 poteza, pa takva završnica za optimalnu igru zahteva dubinu pretraživanja veću od dvadeset. Slični
d

problemi važe i za korektnu taktiku. U nastavku su opisani neki od algoritama koji se mogu efikasno primenjivati
iz

u šahovskim završnicama.
o

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

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


n

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


ro

(c) odigraj potez 𝑞 ;


kt

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

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 – npr. u
E

š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.).
Bramerov algoritam, razlaganjem skupa problema na klase sličnih problema, u priličnoj meri prirodno od-
govara čovekovom načinu razmišljanja. Pored toga, algoritam može biti i veoma efikasan, jer poredenje poteza
vrši po ključnim parametrima za konkretnu završnicu (npr, u šahu, po rastojanju izmedu dva kralja), a ne po
opštim kriterijumima koji se koriste u središnjici. Algoritam zahteva kompleksno definisanje svih relevantnih
klasa pozicija u završnici i svih odgovarajućih funkcija evaluacije, ali je i pored toga verovatno najprihvatljivije
i najčešće korišćeno rešenje za automatski izbor poteza u završnici.
3 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.
5.6. Implementaciona pitanja 58

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“: Proveri da li je moguće matirati protivnika u dva poteza;

2. „stezanje“: Ako (1) nije moguće, pronadi način da topom smanjiš prostor na tabli dostupan protivničkom
kralju;

3. „približavanje“: Ako (1) i (2) nije moguće, pronadi način da svog kralja približiš protivničkom;

4. „zadržavanje“: Ako nisu primenljivi delovi saveta (1), (2) i (3), pronadi potez koji zadržava trenutno stanje
u smislu (2) i (3) (tj. odaberi „potez čekanja“);

5. „razdvajanje“: Ako nisu primenljivi delovi saveta (1), (2), (3) i (4), pronadi potez kojim se dobija pozicija
u kojoj top razdvaja dva kralja, bilo vertikalno ili horizontalno.

6)
Nedostatak koncepta ilustrovanog navedenim primerom je u tome što iziskuje posebne tekstove saveta za
sve suštinski različite završnice. Pored toga, za sve tipove završnica nije jednostavno (ili nije moguće) napraviti

01
koncizan i efikasan tekst saveta.

5.6 Implementaciona pitanja

(2
Za efikasno izvršavanje programa za igre, važne su strukture podataka koje se koriste, osnovni algoritmi,
brza provera legalnosti i drugih bazičnih funkcija.
je
Poželjno je da postoji (ciklično) uredenje poteza, pa se za svaki legalan potez može jednoznačno odrediti
an
sledeći legalan potez. Ovo je potrebno kako bi se obezbedilo brzo ispitivanje svih legalnih poteza bez obzira na
to od kojeg poteza je ispitivanje počelo.
Radi efikasnosti, funkcija evaluacije često se implementira kao celobrojna funkcija. Struktura koja opisuje
d

potez treba da sadrži informacije dovoljne da bi se potez odigrao, ali poželjno je i da bi se eventualno „vratio“.
Kod jednostavnih igara, kao što je npr. igra iks-oks dovoljne su informacije o tome koji je igrač potez odigrao4
iz

i na kojem polju. Kod igre reversi, to više nisu dovoljne informacije, jer na osnovu njih ne može biti vraćen
potez. Naime, na osnovu informacije o igraču i polju ne može se rekonstruisati pozicija pre tog poteza, pa
o

struktura koja opisuje potez mora da sadrži i listu žetona koji pri tom potezu menjaju boju. Kod šaha je
sk

situacija još složenija, jer figure se pomeraju (a ne dolaze „niotkuda“ kao u igrama iks-oks i reversi), pa pored
oznake igrača, struktura koja opisuje potez mora da sadrži informacije i o polaznom i o odredišnom polju. Pored
n

toga, radi mogućnosti vraćanja poteza, ta struktura mora da sadrži i informaciju o (eventualno) „pojedenoj“
figuri, o (eventualno) „izvedenom“ pešaku (i o figuri u koju je promovisan), kao i informaciju o (eventualno)
ro

primenjenom pravilu „en-passant“ 5 .


Kao dobar okvir nameće se organizacija podataka i izračunavanja koja se oslanja na bitovsku aritmetiku.
kt

Tako na primer, u šahu može se za svaki tip figura (i to za oba igrača) koristiti po jedna bitovska tabela 8 × 8
u kojoj bi vrednost 1 označavala da igrač na tom polju ima figuru tog tipa, a vrednost 0 sve ostale mogućnosti.
le

Na taj način jedna tabela 8 × 8 bila bi zamenjena sa 12 (svaki igrač ima po šest tipova figura) tabela 8 × 8 čiji
su elementi bitovskog tipa. Dodatna pogodna okolnost u ovom pristupu je što opisana bitovska tabela može
E

da se opiše jednostavno kao niz osam karaktera (jer tipu karakter odgovara jedan bajt, odnosno osam bita).
Ovakav pristup (i analogni u drugim igrama), mada na prvi pogled možda komplikovaniji, omogućava brojna
jednostavna i brza rešenja kod provere legalnosti poteza, generisanja legalnih poteza i sl. Ukoliko je odabran
pristup sa bitovskom reprezentacijom table i poteza, operacije odigravanja i vraćanja poteza i slične svodiće se
na jednostavne i brze bitovske operacije.
Na nivou programa, opisane strukture treba da budu organizovane tako da omogućavaju igru izmedu dva
igrača, kao i mogućnost da program zameni bilo kog igrača (u celom toku partije, u pojedinačnom potezu ili
samo za davanje preporuke).

Pitanja i zadaci
Pitanje 5.1. Opisati ukratko Šenonove strategije?
Pitanje 5.2. Šta znači da je funkcija ocene koja se koristi u programiranju igara statička?
4 Podatak o tome koji je igrač odigrao potez često nije neophodan, jer se potezi prvog i drugog igrača smenjuju naizmenično.
5 Rokade se mogu opisati samo preko poteza kralja, pa nije potrebno da informacija o rokadi bude sadržana u strukturi potez.
59 5. Programiranje logičkih igara

Pitanje 5.3. Koja je najjednostavnija funkcija evaluacije u igrama nulte sume?


Pitanje 5.4. Ako je statička ocena neke šahovske pozicije jednaka 0, šta to govori?
Pitanje 5.5. Ako je statička ocena neke šahovske pozicije jednaka 𝑐, koja je ocena pozicije koja je dobijena
tako što su sve figure promenile boju?
Pitanje 5.6. Zašto se tako zove minimaks algoritam?
Pitanje 5.7. Ako se pretraga vrši do iste dubine stabla igre, da li algoritam minimax ispituje isti broj pozicija
bez obzira na poredak poteza u jednom čvoru?
Pitanje 5.8. Po čemu se razlikuju 𝛼 i 𝛽 odsecanja?
Pitanje 5.9. Da li algoritam alfa-beta uvek vraća isti rezultat kao algoritam minimax?
Pitanje 5.10. Da li algoritam alfa-beta uvek obradi manje čvorova nego algoritam minimax?

6)
Pitanje 5.11. U kom slučaju (osnovni) algoritam alfa-beta obidje isti broj čvorova kao i minimax?
Pitanje 5.12. Da li algoritam minimax može u nekom slučaju, pretražujući do iste dubine da obide manji

01
broj čvorova od algoritma alfa-beta?
Pitanje 5.13. Da li 𝛼 − 𝛽 algoritam, u odnosu na minimax algoritam: daje iste poteze, ali brže; ili daje nešto

(2
lošije poteze, ali znatno brže; ili daje bolje poteze i to brže; ili daje bolje poteze ali nešto sporije?
Pitanje 5.14. Kada je broj odsecanja u stablu igre najveći u algoritmu alfa-beta?
je
Pitanje 5.15. Naredna slika prikazuje deo stabla igre koje se pretražuje alfa-beta algoritmom. U korenu 𝑅
an
se primenjuje maksimizovanje a u čvorovima 𝐴, 𝐵 , 𝐶 minimizovanje. Koji poredak čvorova 𝐴, 𝐵 , 𝐶 bi dao
najviše alfa-beta odsecanja?
d

𝑅
iz
o

𝐴 𝐵 𝐶
sk
n

1 2 3 5 6 7 8 9 10
ro

Pitanje 5.16. Koja heuristika je zasnovana na činjenici da je broj alfa-beta odsecanja u stablu igre najveći
kt

ako se najpre ispituje najbolji?


Pitanje 5.17. Opisati ukratko heuristiku killer.
le

Pitanje 5.18. Kakav efekat se očekuje od heuristike killer u iterativnoj primeni alfa-beta algoritma i zašto?
E

Pitanje 5.19. Da li iterativni alfa-beta algoritam sa killer heuristikom daje uvek isti rezultat kao alfa-beta
algoritam nad istim stablom igre i za istu dubinu pretrage?
Pitanje 5.20. Da bi heuristika killer funkcionisala i na nultom nivou stabla igre koji je algoritam potrebno
koristiti?
Pitanje 5.21. Koji algoritam je pogodan za igru sa vremenskim prekidima i zašto?
Pitanje 5.22. Šta je to stabilno pretraživanje?
Pitanje 5.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 𝐴?
Pitanje 5.24. Koliki je faktor grananja za algoritam minimax za šahovsku središnjicu? (traži se konkretan
broj)?
Pitanje 5.25. Koliki je faktor granjanja algoritma minimaks, ako se ispituje uniformno stablo stepena 𝑛 i
dubine 𝑑?
5.6. Implementaciona pitanja 60

Pitanje 5.26. Ukoliko čvorovi stabla igre imaju stepen 𝑛, a pretražuje se do dubine 𝑑, koja je složenost
algoritma 𝑚𝑖𝑛𝑖𝑚𝑎𝑥 a koja algoritma 𝛼 − 𝛽 za taj problem?
Pitanje 5.27. U igri 𝑃 za dva igrača, u svakom potezu ima prosečno 6 legalnih poteza, a igra prosečno traje
4 polupoteza. Koliki je faktor grananja algoritma minimax za ovu igru?
Pitanje 5.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?
Pitanje 5.29. U programiranju igara, da li se algoritmi minimax tipa primenjuju u otvaranju, središnjici ili
završnici?
Pitanje 5.30. Navesti barem dve strategije za završnicu u programima za igre.
Pitanje 5.31. Do koje dubine se vrši pretraga u Bramerovom pristupu za završnicu?
Pitanje 5.32. Na datoj tabli igre X-O minimaks algoritmom sa alfa-beta odsecanjem odrediti najbolji potez za
igrača X. Prikazati stablo igre i odsecanja koja algoritam vrši.

6)
X X O

01
O X
O

(2
Zadatak 5.1. 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.

je
an
Zadatak 5.2. Data je sledeća tabla za igru:
1 2
d

3 4
iz

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
o

najbolji polazni potez za prvog igrača. Da li alfa-beta odsecanje omogućava izračunavanje najboljeg poteza u
sk

manje koraka?
Zadatak 5.3. Na datom drvetu minimax algoritmom sa alfa-beta odsecanjem izračunati vrednost korenog
n

čvora. Označiti delove drveta koji su odsečeni pri obilasku s leva na desno. Da li neki drugi raspored grana
ro

drveta omogućava više odsecanja? Ako da, koji?


kt

𝑚𝑎𝑥
le
E

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

Zadatak 5.4. Označiti odsecanja koja čini algoritam minimax sa 𝛼−𝛽 odsecanjem pri obilasku sledećeg stabla
s leva nadesno. Postoji li redosled obilaska stabla pri kojem se odseca veći broj čvorova?

𝑚𝑎𝑥

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

Zadatak 5.5. Prikazati odsecanja koja vrši algoritam minimax 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?
61 5. Programiranje logičkih igara

𝑚𝑎𝑥

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

Zadatak 5.6. Prikazati odsecanja koja vrši algoritam minimax 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?

𝑚𝑎𝑥

6)
01
12 11 13 16 18 41 33 11 9 99 1 10

Zadatak 5.7. Označiti odsecanja koja čini algoritam minimax sa 𝛼−𝛽 odsecanjem pri obilasku sledećeg stabla

(2
s leva nadesno.

𝑚𝑎𝑥 je
an
d

3 8 12 5 1 2 30 4 6 23 30 1
iz
o
sk
n
ro
kt
le
E
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 6

Genetski algoritmi

6)
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

01
problem i rešavanje svakog novog problema korišćenjem heuristika može da bude veoma zahtevno. S druge
strane, metaheuristike ili metaheurističke metode su metode koji opisuju opšte strategije pretrage za rešavanje

(2
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).
d

Genetski algoritmi pripadaju široj grupi metaheurističkih algoritama globalne optimizacije ili pretrage koji
iz

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
o

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
sk

osobinu organizma. Familija gena često se naziva genotip, a familija osobina fenotip. Reprodukcija organizama
uključuje kombinovanje gena roditelja i, pored toga, male količine mutacije. Jedinka može biti manje ili više
n

prilagodena okolini. Jedinka koja je bolje prilagodena okolini u kojoj živi ima veću verovatnoću preživljavanja
ro

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-
kt

lucioni procesi u prirodi su, u odredenom smislu, optimizacioni procesi — procesi u kojima se kroz generacije
optimizuje genetski materijal (tj. osobine organizama) tako da bude što bolje prilagoden okolini.
le

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

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 primenjljiv
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.

63
6.1. Opšti genetski algoritam 64

6.1 Opšti genetski algoritam


Genetski algoritmi implementiraju se kao računarska simulacija u kojoj populacija apstraktno reprezento-
vanih jedinki koje su kandidati za rešenje problema, treba da se približava boljim rešenjima. Reprezentacija
jedinke se naziva 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 reprezentovane nizovima nula
i jedinica, ali su moguće i druge reprezentacije za probleme u kojem binarna reprezentacija nije pogodna. Po-
stupak 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

6)
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

01
polaznih jedinki. Operatorom mutacije može da se modifikuje deo polazne jedinke (i ona oponaša mutacije koje
se u prirodi javljaju pod uticajem spoljnih faktora). U svakoj generaciji, dakle, može da dode do rekombinacije

(2
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 ge-
neracija. Neke jedinke u novoj generaciji mogu biti bolje, ali neke mogu biti lošije od jedinki iz prethodne
je
generacija, ali se očekuje da se prosečna prilagodenost popravlja. Tako dobijena nova generacija koristi se za
sledeću iteraciju algoritma.
an
Postupak se zauastavlja 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
d

vrednost funkcije cilja.


iz

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-
o

netski algoritam za pronalaženje rasporeda časova treba da bude dizajniran tako da rešava različite instance
sk

tog problema — za različite škole sa različitim brojem nastavnika, odeljenja, učionica i termina i sa različitim
specifičnim zahtevima. To znači da funkcija cilja može da bude definisana tek kad su poznati svi podaci koji do
n

precizno zadaju problem. Zbog toga se može smatrati da ulaz za opšti algoritam čini opis problema na osnovu
ro

kojeg tek treba definisati funkciju cilja, ali i brojna podešavanja algoritma (tj. vrednosti njegovih paramatara)
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
kt

mali deo potrebnog truda.


Opšti genetski algoritam prikazan je na slici 6.1.
le

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

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

6.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.

6.2.1 Reprezentacija jedinki


Jedinke mogu biti reprezentovane 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.
65 6. 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. Izvršavaj sledeću petlju sve dok nije zadovoljen uslov zaustavljanja:

ˆ Izaberi iz populacije skup jedinki za reprodukciju;


ˆ Primenom operatora ukrštanja i mutacije kreiraj nove jedinke; (i računaj njihovu prilagodenost)
ˆ Na osnovnu starih i novih jedinki, kreiraj novu generaciju;

4. vrati najkvalitetniju jedinku u poslednjoj populaciji

6)
Slika 6.1: Opšti genetski algoritam

01
bi one narušavale performanse algoritma. Medutim, nekada se koriste i takvi operatori, ali se onda moraju

(2
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
d

𝑛 𝑛
iz

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

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

[︂ ]︂
𝑥−𝑎 𝑛
n

(2 − 1) .
𝑏−𝑎
ro

Primer 6.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
kt

biranju lokacije platforme moguće je meriti postojeće rezerve nafte na bilo kojoj tački izmedu 𝐴 i 𝐵 . Moguća
rešenja mogu se reprezentovati nizovima bitova dužine 10, tj. brojevima od 0 do 1023. Tački 𝐴 tada odgovara broj
le

0 i reprezentacija 0000000000, a tački 𝐵 broj 1023 i reprezentacija 1111111111. Tački 𝐶 na rastojanju 1320m
od tačke 𝐴 odgovara vrednost 1023 · (1320/5000) ≈ 270 i reprezentacija 0100001110, a tački 𝐷 na rastojanju
E

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 6.2).

6.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 sve bolja i bolja.
Primer 6.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
6.2. Komponente genetskog algoritma 66

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

0 1000 1320 2000 3000 3128 4000 5000

6)
01
0 100 200 270 300 400 500 600 640 700 800 900 1000

(2
Slika 6.2: Reprezentacija problema lokacije naftne platforme

je
reprezentacija (na način opisan u poglavlju ). 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,
d

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
iz

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
o

druge strane, funkcija cilja ne mora uvek biti eksplicitno zadata nekom matematičkom reprezentacijom, već
nekakvim manje formalnim zahtevom (u poglavlju 6.4.2 će biti dat jedan takav primer u kojem se genetskim
sk

algoritmom pronalazi agent koji najbrže vozi automobil na nekoj stazi).


n

6.2.3 Inicijalizacija
ro

Populaciju jedinki jedne generacije, ukoliko se koristi binarna reprezentacija, čini skup nizova binarnih cifara.
kt

U toku rešavanja jednog problema, obično sve generacije imaju isti broj jedinki. Taj broj, veličina populacije,
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
le

populacija generiše slučajno (tako da pokriva čitav prostor pretrage). Ukoliko se koristi bitovska reprezentacija,
E

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 se
obično koriguju unapred definisanim postupcima.

6.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
67 6. Genetski algoritmi

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.

Ruletska selekcija Ruletska selekcija (eng. roulette wheel selection) je proces selekcije u kojem veće šanse
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

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

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-
logan odigravanju 𝑚 partija ruleta.

Primer 6.3. Pretpostavimo da populacija ima osam jedinki: 𝑎, 𝑏, 𝑐, 𝑑, 𝑒, 𝑓, 𝑔, ℎ i da su njihove prilagodenosti

6)
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
tabela prikazuje verovatnoće izbora jedinki u ruletskoj selekciji:

01
jedinka a b c d e f g h

(2
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

je
Sledeća slika ilustruje, u formi ruleta, verovatnoće izbora koje su pridružene jedinkama.
an
0.05 0.03
d

𝑑 𝑐
iz

0.20 0.15

𝑒 𝑏
o
sk

𝑎 0.05
n

𝑓 ℎ
ro

0.12
0.10
kt

𝑔
le

0.30
E

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.
Veličina turnira 𝑘 i verovatnoća 𝑝 su parametari procesa turnirske selekcije. Za jedan turnir bira se slučajno
𝑘 jedinki iz populacije. Nakon toga, one se sortiraju po vrednosti funkcije prilagodenosti i 𝑖-ta jedinka u tako
sortiranom nizu se bira sa verovatnoćom 𝑝(1 − 𝑝)𝑖−1 .
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.
6.2. Komponente genetskog algoritma 68

6.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
koristiti proizvoljan broj tačaka prekida (s tim da je manji od dužine hromozoma). Slike 6.3 i 6.4 ilustruju
ukrštanje sa jednom (jednopoziciono ukrštanje) i sa dve tačke ukrštanja (dvopoziciono ukrštanje) za binarnu
reprezentaciju.

roditelj 1
roditelj 2

6)
tačka prekida
dete 1

01
dete 2

(2
Slika 6.3: Jednopoziciono ukrštanje.

je
an
roditelj 1
roditelj 2
tačke prekida
d

dete 1
iz

dete 2
o
sk

Slika 6.4: Dvopoziciono ukrštanje.


n

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

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.
kt

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.
le
E

6.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 po-
mogne 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. Kontrolisano
podsticanje genetske raznolikosti mutacijom često omogućava izbegavanje lokalnih ekstremuma. Mutacije, na-
ime, omogućavaju razmatranje novih delova prostrora pretrage u nadi da će se naići na globalnim 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.
69 6. Genetski algoritmi

6.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 agloritama stabilnog stanja, čim se izabere par roditelja, vrše se ukrštanje i mutacija i
umetanje potomaka u populaciju u skladu sa nekom politikom zamene. Postoje raznovrsne politike zamene a
neke od njih su:

ˆ 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,

6)
ˆ takmičenje roditelja i potomaka prema kojoj se dobijeni potomci zamenjuju svoje roditelje ukoliko su od
njih bolji

01
ˆ 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.

(2
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
je
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
an
se koristi i u generacijskim politikama i u politikama stabilnog stanja.
d

6.2.8 Zaustavljanje
iz

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:
o

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


sk

ˆ Dostignut je zadati broj generacija.


n
ro

ˆ Funkcija prilagodenosti je izračunata zadati broj puta.

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

ˆ Kombinacija nekoliko uslova.


le

6.3 Svojstva genetskih algoritama


E

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 pri-
mer, da bude neprekidna ili diferencijabilna). Medutim, u primenama u veštačkoj inteliegenciji (na primer,
kretanje robota), ciljna funkcija često nije zadata eksplicitno već implicitno, kroz veći broj kriterijuma.

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.
6.4. Primeri primene genetskih algoritama 70

Parametri algoritma. Pogodan izbor operatora ukrštanja i parametara genetskog algoritma (veličina popu-
lacije, verovatnoća ukrštanja, verovatnoću 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.

Domen genetskih algoritama. Genetski algoritmi primenljivi su na veoma širok skup problema. Ipak, za
uspešno rešavanje konkretnih problema zahteva potrebno je napraviti mnogo dobrih izbora (na primer, za
funkciju 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

6)
optimuma teško. Medutim, i ako nije nadeno rešenje koje je globalni optimum, često je rešenje koje je
nadeno dovoljno dobro. Dodatno, kao rezultat algoritma može se ponuditi neki skup najboljih pronadenih

01
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.

(2
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. je
an
6.4 Primeri primene genetskih algoritama
d

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

6.4.1 Obilazak table skakačem


o
sk

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.2 U daljem razmatranju,
pretpostavićemo dimenzije table 5 × 5. Na slici 6.5, prikazana je jedna putanja skakača od osam poteza koja se
n

ne može nastaviti.
ro
kt

5
Z0Z0Z 5
Z0Z0Z
4
0Z0Z0 4
0Z0Z0
le

3 3 5 8
3
Z0M0Z Z0Z0Z
7 2
E

2
0Z0Z0 2
0Z0Z0
1 1 4 6 9
1
Z0Z0Z Z0Z0Z
a b c d e a b c d e

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

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 se 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.
2 Strоžije postavljen problem je problem pronalaženja putanje skakača na šahovskoj tabli kojom skakač po jednom posećuje
svako polje table.
71 6. Genetski algoritmi

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,
rešavanje je bilo izvršeno iz početka 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 broj iteracija koje su bile potrebne za dostizanje najboljeg pronadenog rešenja je 326.7 za prvu, a
188.0 za drugu. Na slici 6.6, 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šanja, što se i moglo očekivati. Nijedna varijanta nije pronašla putanju koja

6)
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.

01
26

(2
24
22
20
18
16
14 je
an
12
10
8
6
d

4
iz

2
0 25 50 75 100125150175200225250275300
o

Slika 6.6: Zavisnost kvaliteta najbolje jedinke u populaciji od broja generacija za obe varijante genetskog
sk

algoritma. Prva je prikazana plavom bojom, a druga crvenom.


n
ro

6.4.2 Vožnja automobila stazom


kt

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 6.7). 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,
le

skretanje ulevo i skretanje udesno. Takode je moguće da agent ne preduzme nikakvu akciju. Bilo koju akciju
E

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
stranja. Neka od tih stanja se neće pojavljivati u toku vožnje (na primer, prepreke i neposredno napred i levo
i desno), ali neće biti unapred odbačena radi jednostavnosti kodiranja i dekodiranja hromozoma. Svako od
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 —
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
realizuje tako što bi se svakom od senzora dodelio jedan bit pri čemu bi njegova vrednost u slučaju postojanja
6.4. Primeri primene genetskih algoritama 72

Slika 6.7: Automobilska staza

prepreke bila 0, a u suprotnom 1 i u slučaju sporog kretanja 0, a u suprotnom 1. Ovi bitovi bi se poredali u

6)
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

01
zapisana u hromozomu na mestu sa indeksom (10011)2 = 19.
Funkcija cilja nije eksplicitno data. Dat je samo zahtev da agent što brže vozi. Moguće je definisati funkciju
prilagodenosti, ali ni ona neće biti data eksplicitno, već će biti izračunavana simuliranjem ponašanja agenta na

(2
nekoj stazi koja uključuje sve pomenute aspekte vožnje (skretanje, ubrzavanje, itd.). Vožnja će biti simulirana
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
je
sporo boduje se sa 1, a svako polje koje se prede brzo, boduje se sa 2. Vrednost funkcija prilagodenosti je zbir
an
tih bodova. Na taj način će prilikom selekcije biti favorizovani agenti koji brže prelaze stazu. Kako je najvažnije
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
d

selekciji u odnosu na ostale, pa se evolucija ubrzava ka njima.


iz

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
sa nekom unapred zadatom malom verovatnoćom trenutna vrednost bila zamenjena nekom slučajno izabranom
o

od preostalih. Time su definisani genetski operatori.


sk

U eksperimentima je korišćena populacija od 300 jedinki, verovatnoća ukrštanja je bila 0.6, verovatnoća
mutacije po hromozomu 0.001, a maksimalan broj iteracija 1000. Kao i u prošlom primeru, rešavanje je izvršeno
n

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
ro

skakačem.
kt

Pitanja i zadaci
le

Pitanje 6.1. Navesti opšti genetski algoritam.


E

Pitanje 6.2. Da li, u genetskim algoritmima, ciljna funkcija mora da bude:


ˆ definisana za sve moguće jedinke?
ˆ diskretna?
ˆ neprekidna?
ˆ diferencijabilna?
Pitanje 6.3. Da li, u genetskim algoritmima, funkcija prilagodenosti mora da bude:
ˆ definisana za sve moguće jedinke?
ˆ diskretna?
ˆ neprekidna?
ˆ diferencijabilna?
73 6. Genetski algoritmi

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

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

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


Pitanje 6.7. Broj mogućih rešenja datog problema je 1000000. Ukoliko se za rešavanje ovog problema koristi
genetski algoritam i binarna reprezentacija, onda je dužina hromozoma koji se koriste

Pitanje 6.8. Ako je za potrebe primene genetskog algoritma, domen {3, 4, 5, 6, 7, 8, 9, 10} reprezentovan

6)
binarnim hromozomima dužine 3 (u istom poretku), kako će biti reprezentovana jedinka 9?

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

01
Pitanje 6.10. Navesti dva genetska operatora.

(2
Pitanje 6.11. Koliko genetski operatori ukrštanja i mutacije imaju ulaznih jedinki?
Pitanje 6.12. Šta je uloga selekcije u genetskim algoritmima?
je
Pitanje 6.13. Najpopularnije vrste selekcije u genetskim algoritmima su:
an
(a) Menhetn i ruletska;
(b) Menhetn i turnirska;
d

(c) ruletska i turnirska;


iz

(d) ruletska i uniformna;

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


o

Pitanje 6.15. Kako se jedinka bira ruletskom selekcijom?


sk

Pitanje 6.16. Ako je 𝑓 (𝑖) vrednost funkcije kvaliteta (prilagodenosti) za jedinku 𝑖, a 𝑁 broj jedinki u populaciji,
n

verovatnoća da će jedinka 𝑖 ruletskom selekcijom biti izabrana da učestvuje u reprodukciji jednaka je 𝑝𝑖 = 𝑓 𝑥(𝑖) ,
ro

gde je 𝑥 jednako:
(a) 1;
kt

(b) 𝑁 𝑗 𝑓 (𝑗);
∑︀

(c) 𝑁 𝑗,𝑗̸=𝑖 𝑓 (𝑗);


∑︀
le

∏︀𝑁
(d) 𝑗 𝑓 (𝑗);
E

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

Pitanje 6.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 6.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 6.20. Opisati algoritam turnirske selekcije.


Pitanje 6.21. Ako je u turnirskoj selekciji veličina turnira 𝑘 jednaka 1, čemu je ona ekvivalentna?
Pitanje 6.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
6.4. Primeri primene genetskih algoritama 74

Pitanje 6.23. U genetskim algoritmima, 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 6.24. Opisati uniformno ukrštanje koje se koristi u genetskim algoritmima
Pitanje 6.25. U genetskim algoritmima, kolika je obično verovatnoća da neki bit neke jedinke mutira?
Pitanje 6.26. Da li se od jedinke 1010 mutacijom može dobiti jedinka: (a) 0000; (b) 0011; (c) 1111.

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

01
Pitanje 6.28. Šta je to elitizam u genetskim algoritmima?

(2
Pitanje 6.29. Navesti bar četiri moguća uslova za zaustavljanje genetskog algoritma.
Zadatak 6.1. Napisati implementacije operatora ukrštanja sa jednom tačkom prekida i mutacije za hromozome
dužine 𝑛 <= 32.
je
Zadatak 6.2. Napisati implemenaciju jednostavne ruletske selekcije.
an
Zadatak 6.3. Napisati C implementacije operatora ukrštanja sa jednom tačkom prekida i mutacije ukoliko se
d

hromozomi mogu predstaviti kao niske od 32 bita.


iz
o
sk
n
ro
kt
le
E
Deo II

6)
Logika i deduktivno zakljucivanje

01
(2
je
an
d
iz
o
sk
n
ro
kt
le
E
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 7

Rešavanje problema korišćenjem logike

6)
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:

01
ˆ fazu modelovanja;

(2
ˆ 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

7.1 Modelovanje
d
iz

Razmotrimo najpre sledeći jednostavan problem.

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

bal bude pozvan Peru ili da ne bude pozvan Katar (Qatar). Kraljica zahteva da budu pozvani Katar ili Rumunija
sk

(ili i Katar i Rumunija). Princ zahteva da ne bude pozvana Peru ili da ne bude pozvan Rumunija (ili da ne budu
pozvani ni Peru ni Rumunija). Da li je moguće organizovati bal i zadovoljiti zahteve svih članova kraljevske
n

porodice?
Navedeni problem potrebno je najpre formulisati na neki precizan način. Iskaz, tvrdnju “na bal će doći
ro

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
kt

„ 𝑞 ili ne 𝑞 “ Uslov koji postavlja kraljica glasi „ 𝑞 ili 𝑟“. Uslov koji postavlja princ glasi „ne 𝑝 ili ne 𝑟“.
Sva navedena ograničenja, svi ovi iskazi, zajedno čine novi, komplikovaniji iskaz koji bismo, mogli da
le

zapišemo na sledeći način:


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

Ova 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 na 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 7.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)“.

77
7.2. Rešavanje 78

7.2 Rešavanje
Ispitivanje da li, pod nekim uslovima, složeni iskaz iz primera 7.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 7.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.

6)
01
(2
je
an
d
iz
o
sk
n
ro
kt
le
E
Glava 8

Iskazna logika

6)
U iskaznoj logici razmatraju se iskazi ili tvrdnje. Iskazne promenljive odgovaraju jednostavnim iskazima. Is-
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

01
ili dizajniranja kombinatornih kola.
Iskazna logika ima tri aspekta: sintaksu (koja opisuje njen jezik), semantiku (koja definiše istinitosnu vred-

(2
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.
Postoji više pristupa i metoda za ispitivanje valjanosti i zadovoljivosti.
d

U algoritmima za logičko zaključivanje često je neki korak zaključivanja moguće sprovesti na različite načine,
iz

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
o

automatskog rasudivanja znatno efikasniji. Ovo pokazuje da je i u logičkom rasudivanju jedan od centralnih
problema problem usmeravanja pretrage.
sk

Kao što je rečeno, sredstvima iskazne logike mogu se opisati mnogi praktični problemi, posebno problemi
nad konačnim domenima. Naime, svaki objekat koji može imati konačan broj stanja može se opisati konačnim
n

brojem iskaznih promenljivih: ako je broj mogućih stanja 2𝑛 , onda je dovoljno koristiti 𝑛 iskaznih promenlji-
ro

vih. Svi brojevi reprezentovani u računaru su reprezentovani bitovima, pa se i oni mogu modelovati iskaznim
promenljivim: koliko bitova, toliko iskaznih promenljivih. Sabiranje celih brojeva (kao i mnoge druge operacije)
kt

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 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 inte-
le

ligencije.
E

Primer 8.1. Razmotrimo, za ilustraciju rešavanja primenom logike, problem „ 𝑛 dama” opisan u poglavlju 8.7.2.
Na slici 8.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 8.1 (desno). 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.

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

79
80

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 8.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)

6)
01
ˆ 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.

(2
ˆ ...

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

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

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

Navedeni uslovi zavise od iskaza oblika „na polju ?? nalazi se dama“. Označimo sa 𝑝𝑎1 iskaz „na polju 𝑎1
o

nalazi se dama“, sa 𝑝𝑎2 iskaz „na polju 𝑎2 nalazi se dama“, . . ., sa 𝑝𝑐3 iskaz „na polju 𝑐3 nalazi se dama“. Onda
sk

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


n

ˆ 𝑝𝑎1 ili 𝑝𝑎2 ili 𝑝𝑎3 .


ro

ˆ 𝑝𝑏1 ili 𝑝𝑏2 ili 𝑝𝑏3 .


kt

ˆ 𝑝𝑐1 ili 𝑝𝑐2 ili 𝑝𝑐3 .

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


le

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


E

ˆ 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 .


81 8. 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 istinitosne vrednosti elementatnih 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 navedni 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.

6)
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

01
rešenjem.

(2
8.1 Sintaksa iskazne logike
Sintaksički aspekt iskazne logike govori o njenom jeziku — o skupu njenih (ispravno formiranih) formula i ne
je
razmatra njihova (moguća) istinitosna 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.
d

Definicija 8.1 (Skup iskaznih formula).


iz

ˆ iskazne promenljive (elementi skupa 𝑃 ) i logičke konstante su iskazne formule;


o

ˆ ako su 𝐴 i 𝐵 iskazne formule, onda su iskazne formule i objekti dobijeni kombinovanjem ovih formula
sk

logičkim veznicima.

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

formule, već samo o tome kako se grade na apstraktni način (implicitno — u vidu stabla). Konkretnom sintaksom
ro

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
kt

∧, 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 (¬𝐴), (𝐴 ∧ 𝐵),
le

(𝐴 ∨ 𝐵), (𝐴 ⇒ 𝐵) i (𝐴 ⇔ 𝐵). Na primer, zapis (𝐴 ∧ ⊤) čitamo „ 𝐴 i te“. U ovakvom, konkretnom zapisu,


neophodno je koristiti zagrade kako bi se izbegla višesmislenost. Da bi se izbeglo korišćenje velikog broja
E

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 8.2. Uslovi iz primera 8.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 .
8.2. Semantika iskazne logike 82

ˆ 𝑝𝑎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 8.2 (Skup potformula). Skup potformula formule 𝐴 je najmanji skup formula koje zadovoljavaju
sledeće uslove:
ˆ svaka iskazna formula 𝐴 je potformula sâma sebi;

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

01
formule 𝐶 istovremeno i potformula formule 𝐴.

(2
Primer 8.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 8.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:
d

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


iz

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

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


sk

ˆ ako za iskazne formule 𝐴, 𝐵1 , 𝐵2 i 𝐶 važi 𝐴 ̸= 𝐶 i 𝐴 = (𝐵1 ∧ 𝐵2 ) (𝐴 = (𝐵1 ∨ 𝐵2 ), 𝐴 = (𝐵1 ⇒ 𝐵2 ),


𝐴 = (𝐵1 ⇔ 𝐵2 )), onda je 𝐴[𝐶 ↦→ 𝐷] = (𝐵1 [𝐶 ↦→ 𝐷]) ∧ (𝐵2 [𝐶 ↦→ 𝐷]) ((𝐵1 [𝐶 ↦→ 𝐷]) ∨ (𝐵2 [𝐶 ↦→ 𝐷]),
n

(𝐵1 [𝐶 ↦→ 𝐷]) ⇒ (𝐵2 [𝐶 ↦→ 𝐷]), (𝐵1 [𝐶 ↦→ 𝐷]) ⇔ (𝐵2 [𝐶 ↦→ 𝐷])).


ro
kt

Pitanja i zadaci
le

Pitanje 8.1. Da li nad konačnim skupom iskaznih promenljivih ima konačno ili prebrojivo ili neprebrojivo
mnogo (sintaksički) različitih iskaznih formula?
E

Pitanje 8.2. Da li nad prebrojivim skupom iskaznih promenljivih ima konačno ili prebrojivo ili neprebrojivo
mnogo (sintaksički) različitih iskaznih formula?
Pitanje 8.3. Šta je literal u iskaznoj logici?
Pitanje 8.4. Ako za iskazne formule 𝐴 i 𝐶 važi 𝐴 = 𝐶 , čemu je jednako 𝐴[𝐶 ↦→ 𝐷]?
Pitanje 8.5. Ako za iskazne formule 𝐴 i 𝐶 važi 𝐴 ̸= 𝐶 i 𝐴 je atomička formula, čemu je jednako 𝐴[𝐶 ↦→ 𝐷]?
Pitanje 8.6. Čemu je jednako (𝑝 ∧ (¬𝑞 ∨ 𝑟))[¬𝑞 ∨ 𝑟 ↦→ 𝑞 ⇒ 𝑟]?
Zadatak 8.1. Ako 𝐶 nije potformula iskazne formule 𝐴, onda je 𝐴[𝐶 ↦→ 𝐷] = 𝐴.

8.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
83 8. Iskazna logika

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
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 konstantim 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 𝑃 ;

6)
ˆ 𝐼𝑣 (⊤) = 1 i 𝐼𝑣 (⊥) = 0;

01
1, ako je 𝐼𝑣 (𝐴) = 0
{︂
ˆ 𝐼𝑣 (¬𝐴) =
0, inače

(2
1, ako je 𝐼𝑣 (𝐴) = 1 i 𝐼𝑣 (𝐵) = 1
{︂
ˆ 𝐼𝑣 (𝐴 ∧ 𝐵) =
0, inače

ˆ 𝐼𝑣 (𝐴 ∨ 𝐵) =
{︂
0, ako je 𝐼𝑣 (𝐴) = 0 i 𝐼𝑣 (𝐵) = 0
1, inače
je
an
0, ako je 𝐼𝑣 (𝐴) = 1 i 𝐼𝑣 (𝐵) = 0
{︂
ˆ 𝐼𝑣 (𝐴 ⇒ 𝐵) =
1, inače
d

1, ako je 𝐼𝑣 (𝐴) = 𝐼𝑣 (𝐵)


iz

{︂
ˆ 𝐼𝑣 (𝐴 ⇔ 𝐵) =
0, inače
Funkcijom 𝐼𝑣 , definisanom na navedeni način, svakoj formuli pridružuje se (jedinstvena) istinitosna vrednost.
o

Vrednost 𝐼𝑣 (𝐴) zovemo istinitosnom vrednošću iskazne formule 𝐴 u interpretaciji 𝐼𝑣 . Ako za valuaciju 𝑣 važi
sk

𝐼𝑣 (𝐴) = 1, onda se kaže da je iskazna formula 𝐴 tačna u interpretaciji 𝐼𝑣 i da je iskazna formula 𝐴 tačna u
valuaciji 𝑣 . Ako za valuaciju 𝑣 važi 𝐼𝑣 (𝐴) = 0, onda se kaže da je iskazna formula 𝐴 netačna u interpretaciji 𝐼𝑣 .
n

Naglasimo da 𝐼𝑣 (𝐴) = 0 nije formula iskazne logike, nego je to formula koja govori o iskaznoj formuli, pa je
ro

zato zovemo meta formula.


Primer 8.4. U primeru 8.2 (koji je nastavak) primera 8.1, ako je 𝑣(𝑝𝑎1 ) = 1 i 𝑣(𝑝𝑎2 ) = 1, onda je 𝐼𝑣 (𝑝𝑎1 ⇒
kt

¬𝑝𝑎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.
le
E

Definicija 8.4 (Zadovoljivost, valjanost, kontradiktornost, porecivost).


ˆ Iskazna formula 𝐴 je zadovoljiva ako postoji valuacija 𝑣 u kojoj je 𝐴 tačna. Tada se kaže da je 𝑣
model za 𝐴 i pišemo 𝑣 |= 𝐴.

ˆ Formula 𝐴 je valjana ili tautologijaa ako je tačna u svakoj valuaciji, tj. ako za svaku valuaciju 𝑣 važi
𝑣 |= 𝐴 i to zapisujemo |= 𝐴.
ˆ Iskazna formula je nezadovoljiva ili kontradikcija ako ne postoji valuacija u kojoj je tačna.
ˆ Formula je poreciva ako postoji valuacija u kojoj nije tačna.
a Reč tautologija grčkog je porekla i sačinjena je od reči tauto (grčki isto) i logos (grčki reč, reći). U bukvalnom prevodu,
„tautologija“ znači „reći isto“. U lingivstičkom smislu, kao i u svakodnevnom jeziku, označava ponavljanje istog, reći istu
stvar drugim rečima, redudantnost (slično, ali ne isto što i pleonazam — pleonazam označava korišćenje suvišnih reči prilikom
ukazivanja na neki pojam). Opisani pojam tautologije razlikuje se od pojma tautologije u logici. U savremenim evropskim
jezicima reč tautologija prvi put se javlja u šesnaestom veku.

Primer 8.5. Iskazne formule 𝑝 ⇒ 𝑝 i 𝑝 ∨ ¬𝑝 su tautologije, iskazna formula 𝑝 ⇒ 𝑞 je zadovoljiva i poreciva, a


iskazna formula 𝑝 ∧ ¬𝑝 je kontradikcija.
8.2. Semantika iskazne logike 84

Definicija 8.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,
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 8.6. Skup iskaznih formula {𝑝 ⇒ 𝑞, 𝑝, ¬𝑞} je kontradiktoran (ali nijedan njegov pravi podskup nije
kontradiktoran).
Primer 8.7. U primeru 8.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 8.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

6)
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.

01
Pitanja i zadaci

(2
Pitanje 8.7. Navesti primer iskazne formule koja je:
ˆ zadovoljiva;
ˆ valjana;
je
an
ˆ poreciva;
d

ˆ kontradikcija;
iz

ˆ zadovoljiva i valjana;
o

ˆ zadovoljiva i nije valjana;


sk

ˆ zadovoljiva i poreciva;
n

ˆ zadovoljiva i nije poreciva;


ro

ˆ zadovoljiva i nije kontradikcija;


ˆ valjana i nije poreciva;
kt

ˆ valjana i nije kontradikcija;


le

ˆ poreciva i nije zadovoljiva;


E

ˆ poreciva i nije valjana;


ˆ poreciva i kontradikcija;
ˆ poreciva i nije kontradikcija;
ˆ kontradikcija i nije zadovoljiva;
ˆ kontradikcija i nije valjana.
Pitanje 8.8. Da li je formula (¬𝑝 ∨ 𝑞) ⇒ (¬𝑞 ∨ 𝑝) tautologija, zadovoljiva, poreciva ili nezadovoljiva?
Pitanje 8.9. Da li je formula (¬𝑝 ∧ 𝑝 ∧ ¬𝑟) ⇒ (¬𝑞 ∨ 𝑟) tautologija, zadovoljiva, poreciva ili nezadovoljiva?
Pitanje 8.10. Ako iskazna formula ima barem jedan model, kakva je onda ona?
Pitanje 8.11. Ako iskazna formula nema nijedan model, kakva je onda ona?
Pitanje 8.12. Ako iskazna formula nije poreciva, kakva je onda ona?
85 8. Iskazna logika

Pitanje 8.13. Ako iskazna formula nije zadovoljiva, kakva je onda ona?
Pitanje 8.14. Ako iskazna formula nije kontradikcija, kakva je onda ona?
Pitanje 8.15. Ako je formula ¬𝐹 zadovoljiva, kakva je onda formula 𝐹 ?
Pitanje 8.16. Ako su iskazne formule 𝐴 i 𝐴 ⇒ 𝐵 tautologije, da li je onda formula 𝐵 tautologija, zadovoljiva,
poreciva ili kontradikcija?
Pitanje 8.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 8.18. Kada je iskazna formula 𝐴 ⇒ 𝐵 tačna u valuaciji 𝑣 ?
Pitanje 8.19. Kada je 𝐼𝑣 (𝐴 ⇒ 𝐵) = 0?
Pitanje 8.20. U iskaznoj logici, za neku valuaciju 𝑣 , čemu je jednaka vrednost 𝐼𝑣 (𝐴 ⇔ 𝐵)?

6)
Pitanje 8.21. Kako se definiše interpretacija u iskaznoj logici?

Zadatak 8.2. Neka su 𝐴, 𝐵 , 𝐶 , 𝐷 iskazne formule takve da su formule 𝐴 ⇒ (𝐵 ⇒ 𝐶) i (𝐴 ∧ 𝐶) ⇒ ¬𝐷

01
tautologije. Dokazati da je i formula (𝐷 ∧ 𝐴) ⇒ ¬𝐵 tautologija.

(2
Zadatak 8.3. Dokazati sledeća tvrdenja:
(a) Ako su formule 𝐴 ∨ 𝐵 i ¬𝐴 ∨ 𝐶 tautologije, onda je i 𝐵 ∨ 𝐶 tautologija.
(b) Ako su formule 𝐴 ∨ 𝐵 , 𝐴 ⇒ 𝐶 , 𝐵 ⇒ 𝐷 tautologije, onda je i 𝐶 ∨ 𝐷 tautologija.
je
(c) Ako su formule ¬𝐴 ∨ 𝐵 i ¬𝐶 ∨ ¬𝐵 tautologije, onda je i 𝐴 ⇒ ¬𝐶 tautologija.
Zadatak 8.4. Dokazati sledeća tvrdenja:
an
(a) Ako je iskazna formula valjana, onda je ona zadovoljiva.
(b) Ako je iskazna formula kontradikcija, onda je ona poreciva.
d

(c) Ako iskazna formula nije zadovoljiva, onda je ona kontradikcija i obratno.
(d) Ako iskazna formula nije tautologija, onda je ona poreciva i obratno.
iz

Zadatak 8.5. Dokazati sledeća tvrdenja:


o

(a) Iskazna formula 𝐴 je valjana ako i samo ako je ¬𝐴 kontradikcija.


(b) Iskazna formula 𝐴 je zadovoljiva ako i samo ako je ¬𝐴 poreciva.
sk


Zadatak 8.6. (Teorema o interpolaciji) Neka su 𝐴 i 𝐵 iskazne formule takve da 𝐴 nije kontradikcija i 𝐵
n

nije tautologija i neka je 𝐴 ⇒ 𝐵 tautologija.


(a) Dokazati da 𝐴 i 𝐵 imaju bar jedno zajedničko iskazno slovo.
ro

(b) Dokazati da postoji iskazna formula 𝐶 takva da 𝐶 ima samo iskazna slova koja su zajednička za 𝐴 i 𝐵
i za koju važi da su 𝐴 ⇒ 𝐶 i 𝐶 ⇒ 𝐵 tautologije.
kt

Zadatak 8.7. Pokazati da iskazne formule 𝑝 ⇒ (𝑞 ⇒ 𝑟) i (𝑝 ⇒ 𝑞) ⇒ 𝑟 nisu logički ekvivalentne.


le

Zadatak 8.8. Dokazati sledeća tvrdenja (Γ i Δ su skupovi iskaznih formula, 𝐴 je iskazna formula):
E

(a) Ako je Γ zadovoljiv i Δ ⊂ Γ, onda je Δ zadovoljiv.


(b) Ako je Γ zadovoljiv i 𝐴 valjana, onda je Γ ∪ {𝐴} zadovoljiv.
(c) Ako je Γ kontradiktoran i Γ ⊂ Δ, onda je Δ kontradiktoran.
(d) Ako je Γ kontradiktoran i 𝐴 valjana, onda je Γ ∖ {𝐴} kontradiktoran.

8.3 Istinitosne tablice i odlučivost problema zadovoljivosti


Pravila za odredivanje vrednosti iskazne formule u zadatoj valuaciji (navedena u prethodnom poglavlju)
mogu biti predstavljena osnovnim istinitosnim tablicama:

𝐴 ¬𝐴
0 1
1 0
8.3. Istinitosne tablice i odlučivost problema zadovoljivosti 86

𝐴 𝐵 𝐴∧𝐵 𝐴∨𝐵 𝐴⇒𝐵 𝐴⇔𝐵


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 kontruisati
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
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

6)
da su problemi ispitivanja valjanosti, zadovoljivosti, nezadovoljivosti i porecivosti odlučivi problemi, tj. postoje
algoritmi koji ih mogu rešiti.

01
Primer 8.9. Iskaznoj formuli (¬𝑞 ⇒ ¬𝑝) ⇒ (𝑝 ⇒ 𝑞) odgovara sledeća istinitosna tablica:

(2
𝑝 𝑞 ¬𝑞 ¬𝑝 ¬𝑞 ⇒ ¬𝑝 𝑝⇒𝑞 (¬𝑞 ⇒ ¬𝑝) ⇒ (𝑝 ⇒ 𝑞)
0 0 1 1 1 1 1
0 1 0 1 1 1 1
1
1
0
1
1
0
0
0
0
1
0
1
je 1
1
an

Dakle, data formula je zadovoljiva i valjana. Ona nije poreciva i nije kontradikcija.
d

Primer 8.10. Istinitosna tablica može biti zapisana u skraćenom obliku — zapisivanjem samo zadate iskazne
iz

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):
o

(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)
sk

0 0 0 0
1 0 0 1
n

0 1 1 0
ro

1 1 1 1
kt

(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)
1 0 1 0 0 1 0
0 1 1 0 0 1 1
le

1 0 0 1 1 0 0
0 1 0 1 1 1 1
E

(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)
1 0 1 1 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 1 1 0 0
0 1 1 0 1 1 1 1

(¬ 𝑞 ⇒ ¬ 𝑝) ⇒ (𝑝 ⇒ 𝑞)
1 0 1 1 0 1 0 1 0
0 1 1 1 0 1 0 1 1
1 0 0 0 1 1 1 0 0
0 1 1 0 1 1 1 1 1

Primer 8.11. U primeru 8.1, za tablu dimenzije 3 × 3, razmatra se skup formula nad 9 iskaznih promenljivih,
te bi odgovarajuća istinitosna tablica imala 29 = 512 vrsta.
87 8. Iskazna logika

Pitanja i zadaci
Pitanje 8.22. Da li je u iskaznoj logici odlučiv problem proveravanja
ˆ zadovoljivosti?
ˆ valjanosti?
ˆ porecivosti?
ˆ kontradiktornosti?
Zadatak 8.9. Ispitati metodom istinitosnih tablica da li je iskazna formula ¬((𝑞 ⇒ 𝑝) ⇒ 𝑝) ⇒ ¬𝑝 zadovoljiva.
Zadatak 8.10. Ispitati metodom tablica da li je iskazna formula (𝑝 ⇒ (𝑞 ⇒ 𝑟)) ⇒ ((𝑝 ⇒ 𝑞) ⇒ (𝑝 ⇒ 𝑟))
tautologija.

Zadatak 8.11. Neka su 𝐴, 𝐵 , 𝐶 , 𝐷 iskazne formule takve da su formule 𝐴 ⇒ (𝐵 ⇒ 𝐶) i (𝐴 ∧ 𝐶) ⇒ ¬𝐷

6)
tautologije. Dokazati, korišćenjem istinitosnih tablica, da je i formula (𝐷 ∧ 𝐴) ⇒ ¬𝐵 tautologija.

01
Zadatak 8.12. Odrediti formulu 𝐴 takvu da je formula ((𝐴 ∧ 𝑞) ⇒ ¬𝑝) ⇒ ((𝑝 ⇒ ¬𝑞) ⇒ 𝐴) tautologija.
Zadatak 8.13. Odrediti, korišćenjem istinitosnih tablica, (ako postoji) formulu 𝐴 takvu da je formula ((𝑝 ⇒

(2
(¬𝑞 ∧ 𝑟)) ⇒ 𝐴) ⇒ (𝐴 ∧ ((𝑟 ⇒ 𝑞) ∧ 𝑝)) tautologija.

Zadatak 8.14. Odrediti (ako postoji) formulu 𝐴 takvu da je formula ((𝑝 ⇒ (¬𝑞∧𝑟)) ⇒ 𝐴) ⇒ (𝐴∧((𝑟 ⇒ 𝑞)∧𝑝))
tautologija.
je
an
8.4 Logičke posledice i logički ekvivalentne formule
d

Često je veoma važno pitanje da li je neki iskaz posledica nekih drugih iskaza. Ovo pitanje se može opisati
iz

u terminima pojma logičke posledice.

Definicija 8.6 (Logička posledica). Kaže se da je iskazna formula 𝐴 logička posledica skupa iskaznih
o

formula Γ i pišemo Γ |= 𝐴 ako je svaki model za skup Γ istovremeno i model za formulu 𝐴.


sk

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
n

ne važi Γ |= 𝐴, onda to zapisujemo Γ ̸|= 𝐴.


ro

Teorema 8.1.
kt

(a) Formula je valjana ako i samo ako je logička posledica praznog skupa formula.
le

(b) Ako je skup Γ kontradiktoran, onda je svaka formula njegova logička posledica. Specijalno, svaka
formula je logička posledica skupa {⊥}.
E

(c) Ako za skupove formula Γ i Δ važi Γ ⊂ Δ i Γ |= 𝐴, onda je Δ |= 𝐴.a


a Ovo svojstvo govori da je iskazna logika monotona — da proširivanjem skupa pretpostavki ne može da se izgubi neka
posledica.

Dokaz:
(a) Ako je formula valjana, onda je ona tačna u svakoj valuaciji pa i u svakom modelu praznog skupa
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
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 Δ |= 𝐴.
8.4. Logičke posledice i logički ekvivalentne formule 88

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 8.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 𝐵 |= 𝐴).

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),

6)
a 𝐴 ⇔ 𝐵 jeste, te naredna teorema povezuje meta nivo iskazne logike sa objektnim nivoom (koji čine sâme
iskazne formule).

01
Teorema 8.2. Važi 𝐴 ≡ 𝐵 ako i samo ako je iskazna formula 𝐴 ⇔ 𝐵 tautologija.

(2
je
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.
an
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
i za 𝐴, te sledi 𝐴 ≡ 𝐵 , što je i trebalo dokazati. 
d
iz
o

Primer 8.12. Za formule 𝑝𝑎1 ⇒ ¬𝑝𝑎3 i 𝑝𝑎3 ⇒ ¬𝑝𝑎1 iz primera 8.1, može se pokazati da važi: 𝑝𝑎1 ⇒ ¬𝑝𝑎3 ≡
sk

𝑝𝑎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:
n
ro

𝑝𝑎1 ∨ 𝑝𝑎2 ∨ 𝑝𝑎3 , 𝑝𝑏1 ∨ 𝑝𝑏2 ∨ 𝑝𝑏3 , 𝑝𝑐1 ∨ 𝑝𝑐2 ∨ 𝑝𝑐3 ,


kt

𝑝𝑎1 ⇒ ¬𝑝𝑎2 , 𝑝𝑎1 ⇒ ¬𝑝𝑎3 , 𝑝𝑎2 ⇒ ¬𝑝𝑎3 ,


le

𝑝𝑏1 ⇒ ¬𝑝𝑏2 , 𝑝𝑏1 ⇒ ¬𝑝𝑏3 , 𝑝𝑏2 ⇒ ¬𝑝𝑏3 ,


E

𝑝𝑐1 ⇒ ¬𝑝𝑐2 , 𝑝𝑐1 ⇒ ¬𝑝𝑐3 , 𝑝𝑐2 ⇒ ¬𝑝𝑐3 ,

𝑝𝑎1 ⇒ ¬𝑝𝑏1 , 𝑝𝑎1 ⇒ ¬𝑝𝑐1 , 𝑝𝑏1 ⇒ ¬𝑝𝑐1 ,

𝑝𝑎2 ⇒ ¬𝑝𝑏2 , 𝑝𝑎2 ⇒ ¬𝑝𝑐2 , 𝑝𝑏2 ⇒ ¬𝑝𝑐2 ,

𝑝𝑎3 ⇒ ¬𝑝𝑏3 , 𝑝𝑎3 ⇒ ¬𝑝𝑐3 , 𝑝𝑏3 ⇒ ¬𝑝𝑐3 ,

𝑝𝑎3 ⇒ ¬𝑝𝑏2 , 𝑝𝑎3 ⇒ ¬𝑝𝑐1 , 𝑝𝑏2 ⇒ ¬𝑝𝑐1 ,

𝑝𝑎2 ⇒ ¬𝑝𝑏1 , 𝑝𝑏3 ⇒ ¬𝑝𝑐2 ,

𝑝𝑎1 ⇒ ¬𝑝𝑏2 , 𝑝𝑎1 ⇒ ¬𝑝𝑐3 , 𝑝𝑏2 ⇒ ¬𝑝𝑐3 ,

𝑝𝑎2 ⇒ ¬𝑝𝑏3 , 𝑝𝑏1 ⇒ ¬𝑝𝑐2 .


89 8. Iskazna logika

Primer 8.13. Neke od logičkih ekvivalencija (ili, preciznije, neke od shema logičkih ekvivalencija) su:
¬¬𝐴 ≡ 𝐴 zakon dvojne negacije
𝐴 ∨ ¬𝐴 ≡ ⊤ zakon isključenja trećeg
𝐴∧𝐴 ≡ 𝐴 zakon idempotencije za ∧
𝐴∨𝐴 ≡ 𝐴 zakon idempotencije za ∨
𝐴∧𝐵 ≡ 𝐵∧𝐴 zakon komutativnosti za ∧
𝐴∨𝐵 ≡ 𝐵∨𝐴 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 ∨

6)
𝐴 ∨ (𝐵 ∧ 𝐶) ≡ (𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶) zakon distributivnosti ∨ u odnosu na ∧
(𝐵 ∧ 𝐶) ∨ 𝐴 ≡ (𝐵 ∨ 𝐴) ∧ (𝐶 ∨ 𝐴) zakon distributivnosti ∨ u odnosu na ∧

01
¬(𝐴 ∧ 𝐵) ≡ ¬𝐴 ∨ ¬𝐵 De Morganov zakon
¬(𝐴 ∨ 𝐵) ≡ ¬𝐴 ∧ ¬𝐵 De Morganov zakon
𝐴∧⊤ ≡ 𝐴 zakon konjunkcije sa tautologijom

(2
𝐴∨⊤ ≡ ⊤ zakon disjunkcije sa tautologijom
𝐴∧⊥ ≡ ⊥ zakon konjunkcije sa kontradikcijom
𝐴∨⊥ ≡ 𝐴 zakon disjunkcije sa kontradikcijom
je
Logičke ekvivalencije navedene u primeru 8.13, izmedu ostalog, pokazuju da su konjunkcija i disjunkcija
an
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
d

čemu njihov poredak nije bitan) zovemo klauza. Klauza je jedinična ako sadrži samo jedan literal.
iz

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 𝐴.
o

Teorema 8.3 (Teorema o zameni). Ako je 𝐶 ≡ 𝐷, onda je 𝐴[𝐶 ↦→ 𝐷] ≡ 𝐴.


sk

Pitanja i zadaci
n
ro

Pitanje 8.23. Kada za iskaznu formulu 𝐴 kažemo da je logička posledica skupa formula Γ?
Pitanje 8.24. Da li nad konačnim skupom iskaznih promenljivih ima konačno ili prebrojivo ili neprebrojivo
kt

(zaokružiti ispravan odgovor) mnogo iskaznih formula od kojih nikoje dve nisu logički ekvivalentne?
le

Pitanje 8.25. Šta sem Γ |= 𝐴 mora da važi da bi važilo Δ |= 𝐴?


E

Pitanje 8.26. Kada kažemo da su iskazne formule 𝒜 ≡ ℬ logički ekvivalentne?


Pitanje 8.27. Ako su formule 𝐴 i 𝐵 logički ekvivalentne, kako to zapisujemo?
Pitanje 8.28. Da li je 𝐴 ≡ 𝐵 formula ili meta-formula? Da li je 𝐴 ⇔ 𝐵 formula ili meta-formula? Kakva
je veza izmedu 𝐴 ≡ 𝐵 i 𝐴 ⇔ 𝐵 ?
Pitanje 8.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,
klauze se smatraju istim ako se razlikuju samo u poretku literala koje sadrže).
Pitanje 8.30. Koliko ima klauza 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.
klauze se smatraju istim ako se razlikuju samo u poretku literala koje sadrže).
8.5. Normalne forme i potpuni skupovi veznika 90

Pitanje 8.31. Navesti teoremu o zameni za iskaznu logiku.


Zadatak 8.15. Dokazati da iz 𝐴 ≡ 𝐴[𝐶 ↦→ 𝐷] ne sledi 𝐶 ≡ 𝐷.

Zadatak 8.16. 𝐴1 , 𝐴2 , . . . , 𝐴𝑛 |= 𝐵 ako i samo ako |= (𝐴1 ∧ 𝐴2 ∧ . . . ∧ 𝐴𝑛 ) ⇒ 𝐵 .

Zadatak 8.17. Γ, 𝐴 |= 𝐵 ako i samo ako Γ |= 𝐴 ⇒ 𝐵 .

Zadatak 8.18. 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

6)
(e) 𝐴1 ⇔ 𝐵1 ≡ 𝐴2 ⇔ 𝐵2 .

Zadatak 8.19. Ako je iskazna formula 𝐴 tautologija koja sadrži iskazna slova 𝑝1 , 𝑝2 , . . . , 𝑝𝑛 i ako su 𝐴1 ,

01
𝐴2 , . . . , 𝐴𝑛 proizvoljne iskazne formule, onda je iskazna formula 𝐵 = 𝐴[𝑝1 ↦→ 𝐴1 , 𝑝2 ↦→ 𝐴2 , . . . , 𝑝𝑛 ↦→ 𝐴𝑛 ]
takode tautologija.

(2
8.5 Normalne forme i potpuni skupovi veznika je
an
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
d

procedure za ispitivanje valjanosti ili zadovoljivosti, ali zbog jednostavnosti i veće efikasnosti one se obično
iz

definišu samo za neke specifične vrste iskaznih formula, za formule koje su u nekoj specifičnoj formi.
o

Definicija 8.8 (Konjunktivna normalna forma). Iskazna formula je u konjunktivnoj normalnoj formi
(knf) ako je oblika
sk

𝐴1 ∧ 𝐴2 ∧ . . . ∧ 𝐴𝑛
n

pri čemu je svaka od formula 𝐴𝑖 (1 ≤ 𝑖 ≤ 𝑛) klauza (tj. disjunkcija literala).


ro

Definicija 8.9 (Disjunktivna normalna forma). Iskazna formula je u disjunktivnoj normalnoj formi (dnf)
kt

ako je oblika
𝐴1 ∨ 𝐴2 ∨ . . . ∨ 𝐴𝑛
le

pri čemu je svaka od formula 𝐴𝑖 (1 ≤ 𝑖 ≤ 𝑛) konjunkcija literala.


E

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
formule 𝐴. Jedna iskazna formula može da ima više različitih konjunktivnih (disjunktivnih) normalnih formi
(na primer, i formula (𝑝 ∨ 𝑟) ∧ (𝑞 ∨ 𝑟) ∧ (𝑝 ∨ 𝑠) ∧ (𝑞 ∨ 𝑠) i formula (𝑠 ∨ 𝑞) ∧ (𝑝 ∨ 𝑟) ∧ (𝑞 ∨ 𝑟) ∧ (𝑝 ∨ 𝑠) ∧ (𝑝 ∨ ¬𝑝) su
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.
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 8.2. Kada se govori o „primeni neke logičke ekvivalencije“ misli se na
korišćenje logičke ekvivalencije na osnovu teoreme o zameni (teorema 8.3).

Teorema 8.4 (Korektnost algoritma KNF). Algoritam KNF se zaustavlja i zadovoljava sledeće svojstvo: ako
je 𝐹 ulazna formula, onda je izlazna formula 𝐹 ′ u konjunktivnoj normalnoj formi i logički je ekvivalentna
sa 𝐹 .
91 8. Iskazna logika

Algoritam: KNF

Ulaz: Iskazna formula 𝐹


Izlaz: Konjunktivna normalna forma formule 𝐹

1. Eliminisati veznik ⇔ koristeći logičku ekvivalenciju


𝐴 ⇔ 𝐵 ≡ (𝐴 ⇒ 𝐵) ∧ (𝐵 ⇒ 𝐴).
2. Eliminisati veznik ⇒ koristeći logičku ekvivalenciju
𝐴 ⇒ 𝐵 ≡ ¬𝐴 ∨ 𝐵 .
3. Dok god je to moguće, primenjivati logičke ekvivalencije
¬(𝐴 ∧ 𝐵) ≡ ¬𝐴 ∨ ¬𝐵 i ¬(𝐴 ∨ 𝐵) ≡ ¬𝐴 ∧ ¬𝐵 .
4. Eliminisati višestruke veznike ¬ koristeći logičku ekvivalenciju

6)
¬¬𝐴 ≡ 𝐴.
5. Dok god je to moguće, primenjivati logičke ekvivalencije

01
(𝐴 ∨ (𝐵 ∧ 𝐶)) ≡ ((𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶)) i
((𝐵 ∧ 𝐶) ∨ 𝐴) ≡ ((𝐵 ∨ 𝐴) ∧ (𝐶 ∨ 𝐴)).

(2
Slika 8.2: Algoritam KNF
je
an
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
d

korak algoritma, kao mera se može koristiti broj veznika ⇔ u formuli. Tvrdenje 𝐹 ≡ 𝐹 ′ sledi na osnovu teoreme
8.3 i činjenice da se u algoritmu koriste samo logičke ekvivalencije.
iz

Transformisanje formule u njenu konjunktivnu normalnu formu može da dâ formulu čija je složenost ekspo-
nencijalna u odnosu na složenost polazne formule. Na primer, transformisanjem formule
o

(𝐴1 ∧ 𝐵1 ) ∨ (𝐴2 ∧ 𝐵2 ) ∨ . . . ∨ (𝐴𝑛 ∧ 𝐵𝑛 )


sk

(koja ima 𝑛 disjunkata) u njenu konjunktivnu normalnu formu, dobija se formula koja ima 2𝑛 konjunkta.
n

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 rezul-
ro

tujuća formula nije logički ekvivalentna polaznoj već samo slabo ekvivalentna: početna formula je zadovoljiva
ako i samo ako je zadovoljiva rezultujuća formula. To je za primene obično dovoljno dobro i, štaviše, iz modela
kt

za rezultujuću formulu (ukoliko oni postoje) mogu se rekonstruisati modeli za polaznu formulu. Cejtinova trans-
formacija može se opisati na sledeći način: Neka 𝑆𝑢𝑏(𝐹 ) označava skup svih potformula formule 𝐹 . Za svaku
le

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 promenljiva).
E

Formula 𝐹 se prvo transformiše u sledeću formulu (gde ⋆ označava binarni iskazni veznik iz skupa binarnih
veznika koji se pojavljuju u 𝐹 ):
⋀︁ ⋀︁
𝑝𝐹 ∧ (𝑝𝐴 ⇔ (𝑝𝐵 ⋆ 𝑝𝐶 )) ∧ (𝑝𝐴 ⇔ ¬𝑝𝐵 )
𝐴∈𝑆𝑢𝑏(𝐹 ) 𝐴∈𝑆𝑢𝑏(𝐹 )
𝐴=𝐵⋆𝐶 𝐴=¬𝐵
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 𝜏 (𝐴)).
8.5. Normalne forme i potpuni skupovi veznika 92

vrsta formule rezultujuće klauze


𝐴 = (¬𝐵) (𝑝𝐴 ∨ 𝑝𝐵 ) ∧ (¬𝑝𝐴 ∨ ¬𝑝𝐵 )
𝐴 = (𝐵 ∧ 𝐶) (𝑝𝐴 ∨ ¬𝑝𝐵 ∨ ¬𝑝𝐶 ) ∧ (¬𝑝𝐴 ∨ 𝑝𝐵 ) ∧ (¬𝑝𝐴 ∨ 𝑝𝐶 )
𝐴 = (𝐵 ∨ 𝐶) (¬𝑝𝐴 ∨ 𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐵 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐶 )
𝐴 = (𝐵 ⇒ 𝐶) (¬𝑝𝐴 ∨ ¬𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (𝑝𝐴 ∨ 𝑝𝐵 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐶 )
𝐴 = (𝐵 ⇔ 𝐶) (¬𝑝𝐴 ∨ ¬𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (¬𝑝𝐴 ∨ 𝑝𝐵 ∨ ¬𝑝𝐶 )∧
(𝑝𝐴 ∨ 𝑝𝐵 ∨ 𝑝𝐶 ) ∧ (𝑝𝐴 ∨ ¬𝑝𝐵 ∨ ¬𝑝𝐶 )

Tabela 8.1: Pravila za Cejtinovu transformaciju

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 8.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.

6)
Primer 8.14. Za zadatu formulu (𝑝 ∧ (𝑞 ∧ 𝑟)) ∨ ((𝑞 ∧ 𝑟) ∧ ¬𝑝), meduoblik za Cejtinovu formu je (iskazne
promenljive 𝑝4 , 𝑝5 , 𝑝6 , 𝑝7 , 𝑝8 su uvedene, definicione promenljive):

01
𝑝8 ∧ (𝑝8 ⇔ (𝑝6 ∨ 𝑝7 )) ∧ (𝑝6 ⇔ (𝑝 ∧ 𝑝4 )) ∧ (𝑝7 ⇔ (𝑝4 ∧ 𝑝5 )) ∧ (𝑝4 ⇔ (𝑞 ∧ 𝑟)) ∧ (𝑝5 ⇔ ¬𝑝))

(2
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 ) ∧
je
an
(𝑝4 ∨ ¬𝑞 ∨ ¬𝑟) ∧ (¬𝑝4 ∨ 𝑞) ∧ (¬𝑝4 ∨ 𝑟) ∧
(𝑝5 ∨ 𝑝) ∧ (¬𝑝5 ∨ ¬𝑝)
d

Problem sa Cejtinovom transformacijom je u tome što ona uvodi mnogo novih promenljivih. Postoje razno-
iz

vrsne tehnike za smanjivanje broja promenljivih i broja klauza.


Primer 8.15. Formula 𝑝𝑎1 ⇒ ¬𝑝𝑎2 iz primera 8.12 može se zameniti logički ekvivalentnom formulom ¬𝑝𝑎1 ∨
o

¬𝑝𝑎2 . Zahvaljujući tome, nije ni potrebno uvoditi nove Cejtinove promenljive i KNF zadatog uslova čini ko-
sk

njunkcija sledećih formula:


𝑝𝑎1 ∨ 𝑝𝑎2 ∨ 𝑝𝑎3 , 𝑝𝑏1 ∨ 𝑝𝑏2 ∨ 𝑝𝑏3 , 𝑝𝑐1 ∨ 𝑝𝑐2 ∨ 𝑝𝑐3 ,
n

¬𝑝𝑎1 ∨ ¬𝑝𝑎2 , ¬𝑝𝑎1 ∨ ¬𝑝𝑎3 , ¬𝑝𝑎2 ∨ ¬𝑝𝑎3 ,


ro

¬𝑝𝑏1 ∨ ¬𝑝𝑏2 , ¬𝑝𝑏1 ∨ ¬𝑝𝑏3 , ¬𝑝𝑏2 ∨ ¬𝑝𝑏3 ,


¬𝑝𝑐1 ∨ ¬𝑝𝑐2 , ¬𝑝𝑐1 ∨ ¬𝑝𝑐3 , ¬𝑝𝑐2 ∨ ¬𝑝𝑐3 ,
kt

¬𝑝𝑎1 ∨ ¬𝑝𝑏1 , ¬𝑝𝑎1 ∨ ¬𝑝𝑐1 , ¬𝑝𝑏1 ∨ ¬𝑝𝑐1 ,


¬𝑝𝑎2 ∨ ¬𝑝𝑏2 , ¬𝑝𝑎2 ∨ ¬𝑝𝑐2 , ¬𝑝𝑏2 ∨ ¬𝑝𝑐2 ,
le

¬𝑝𝑎3 ∨ ¬𝑝𝑏3 , ¬𝑝𝑎3 ∨ ¬𝑝𝑐3 , ¬𝑝𝑏3 ∨ ¬𝑝𝑐3 ,


E

¬𝑝𝑎3 ∨ ¬𝑝𝑏2 , ¬𝑝𝑎3 ∨ ¬𝑝𝑐1 , ¬𝑝𝑏2 ∨ ¬𝑝𝑐1 ,


¬𝑝𝑎2 ∨ ¬𝑝𝑏1 , ¬𝑝𝑏3 ∨ ¬𝑝𝑐2 ,
¬𝑝𝑎1 ∨ ¬𝑝𝑏2 , ¬𝑝𝑎1 ∨ ¬𝑝𝑐3 , ¬𝑝𝑏2 ∨ ¬𝑝𝑐3 ,
¬𝑝𝑎2 ∨ ¬𝑝𝑏3 , ¬𝑝𝑏1 ∨ ¬𝑝𝑐2 .
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 ⇔
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.
93 8. Iskazna logika

Pitanja i zadaci
Pitanje 8.32. Da li je za iskaznu formulu jednoznačno odredena njena konjunktivna normalna forma?
Pitanje 8.33. Navesti jedan algoritam za transformiranje iskazne formule u knf.

Pitanje 8.34. Šta tokom primene algoritma za transformiranje iskazne formule u knf važi nakon primene
logičke ekvivalencije ¬¬𝐴 ≡ 𝐴?
Pitanje 8.35. Da li se može konstruisati iskazna formula za koju se algoritam KNF ne zaustavlja?
Pitanje 8.36. Zašto se zaustavlja prvi korak algoritma KNF?
Pitanje 8.37. Zašto se zaustavlja četvrti korak algoritma KNF?
Pitanje 8.38. Navesti teoremu o korektnosti algoritma KNF za iskaznu logiku.
Pitanje 8.39. Navesti primer skupa formula 𝐴 veličine 𝑛 za koje se algoritmom KNF dobijaju formule veličine

6)
𝑝(𝑛) (𝑝(𝑛) je polinom po 𝑛)?

01
Pitanje 8.40. Navesti primer skupa formula 𝐴 veličine 𝑛 za koje se algoritmom KNF dobijaju formule veličine
𝑝(2𝑛 ) (𝑝(2𝑛 ) je polinom po 2𝑛 )?

(2
Pitanje 8.41. Kako se definišu binarni veznici ↑ i ↓?
Pitanje 8.42. Koliko ima binarnih veznika koji pojedinačno čine potpun skup veznika za iskaznu logiku?
Predstaviti te veznike u terminima osnovnih logičkih veznika.
je
Zadatak 8.20. Odrediti konjunktivnu normalnu formu i disjunktivnu normalnu formu za formule:
an
(a) (𝐴 ⇒ 𝐵) ∨ (¬𝐴 ∧ 𝐶)
(b) 𝐴 ⇔ (𝐵 ∧ ¬𝐴)
d

(c) ((𝐴 ⇒ 𝐵) ⇒ (𝐶 ⇒ ¬𝐴)) ⇒ (¬𝐵 ⇒ ¬𝐶)


(d)
iz

((((𝐴 ⇒ 𝐵) ⇒ ¬𝐴) ⇒ ¬𝐵) ⇒ ¬𝐶) ⇒ 𝐶


(e) (𝐴 ⇒ (𝐵 ⇒ 𝐶)) ⇒ ((𝐴 ⇒ ¬𝐶) ⇒ (𝐴 ⇒ ¬𝐵))

Zadatak 8.21. U računarstvu se često koristi logički veznik ∨ (isključivo ili, isključiva disjunkcija, ekskluzivno
o

ili, ekskluzivna disjunkcija) koji može biti definisan na sledeći način: 𝐴∨𝐵 je jednako (tj. to je kraći zapis za)
sk

¬(𝐴 ⇔ 𝐵) ili (𝐴 ∧ ¬𝐵) ∨ (¬𝐴 ∧ 𝐵). Ispitati da li je skup {∧, ∨} potpun skup veznika.
n

Zadatak 8.22. Dokazati da {⇒, ∨} i {¬, ⇔} nisu potpuni skupovi veznika.


ro

8.6 Problem SAT i DPLL procedura


kt

Za svaku iskaznu formulu postoji njena konjunktivna normalna forma i većina primena iskazne logike svodi
le

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.
E

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
date iskazne formule u knf obliku je co-np-kompletan.
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 polinomijalne složenosti. Kako je opšte uverenje da
su klase problema p i np različite, veruje se i da ne postoji polinomijalni 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.
Problem ispitivanja zadovoljivosti formula u dnf obliku je suštinski drugačiji od ispitivanja zadovoljivosti
formula u knf obliku. Drugi je co-np-kompletan (jer se lako svodi na problem ispitivanja nezadovoljivosti i
obratno), a prvi je trivijalan i pripada klasi p. Ipak, svodenje drugog na prvi je eksponencijalno i nije razuman
put za rešavanje problema sat. Analogno, problem ispitivanja tautologičnosti formule u knf obliku pripada
klasi p, a problem ispitivanja tautologičnosti formule u dnf obliku je np-kompletan.
Dejvis–Patnam–Logman–Lavlendova ili dpll procedura2 je procedura za ispitivanje zadovoljivosti iskaznih
2 Prva verzija procedure čiji su autori Dejvisa i Patnama, unapredena je dve godine kasnije u radu Dejvisa, Logmana i Lovelanda,
pa otuda naziv dpll.
8.6. Problem SAT i DPLL procedura 94

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
je u bilo kojoj od tih klauza bitan poredak literala, te se ulazna formula može smatrati skupom (ili, preciznije,
multiskupom3 ) 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.

Dejvis–Patnam–Logman–Lovelandova procedura data je na slici 8.3, a njena svojstva daje teorema 8.5.

Algoritam: DPLL

Ulaz: Multiskup klauza 𝐷 (𝐷 = {𝐶1 , 𝐶2 , . . . , 𝐶𝑛 })

6)
Izlaz: DA, ako je multiskup 𝐷 zadovoljiv;
NE, ako multiskup 𝐷 nije zadovoljiv

01
1. Ako je 𝐷 prazan, vrati DA.

(2
2. Zameni sve literale ¬⊥ sa ⊤ i zameni sve literale ¬⊤ sa ⊥.

3. Obriši sve literale jednake ⊥.

4. Ako 𝐷 sadrži praznu klauzu, vrati NE.


je
an
5. (tautology)
Ako neka klauza 𝐶𝑖 sadrži literal ⊤ ili sadrži i neki literal i njegovu negaciju, vrati vrednost koju vraća
d

DPLL(𝐷 ∖ 𝐶𝑖 ).
iz

6. (unit propagation)
Ako je neka klauza jedinična i jednaka nekom iskaznom slovu 𝑝, onda vrati vrednost koju vraća
o

DPLL(𝐷[𝑝 ↦→ ⊤]);
sk

Ako je neka klauza jedinična i jednaka ¬𝑝, gde je 𝑝 neko iskazno slovo, onda vrati vrednost koju vraća
DPLL(𝐷[𝑝 ↦→ ⊥]).
n
ro

7. (pure literal)
Ako 𝐷 sadrži literal 𝑝 (gde je 𝑝 neko iskazno slovo), ali ne i literal ¬𝑝, onda vrati vrednost koju vraća
kt

DPLL(𝐷[𝑝 ↦→ ⊤]);
Ako 𝐷 sadrži literal ¬𝑝 (gde je 𝑝 neko iskazno slovo), ali ne i literal 𝑝, onda vrati vrednost koju vraća
le

DPLL(𝐷[𝑝 ↦→ ⊥]).
E

8. (split)
Ako DPLL(𝐷[𝑝 ↦→ ⊤]) vraća DA, onda vrati DA; inače vrati vrednost koju vraća DPLL(𝐷[𝑝 ↦→ ⊥]) (gde
je 𝑝 jedno od iskaznih slova koja se javljaju u 𝐷).

Slika 8.3: DPLL procedura

Teorema 8.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.

Dejvis–Patnam–Logman–Lovelandova 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.
3 Neformalno, multiskup je skup u kojem se elementi mogu pojavljivati više puta.
95 8. 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 8.16. dpll procedura može se primeniti na formulu iz primera 8.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.

Dejvis–Patnam–Logman–Lovelandova 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

6)
utiču na efikasnost pretrage.

01
Primer 8.17. Neka je potrebno ispitati zadovoljivost formule date klauzama:
𝐶1 : ¬𝑎, ¬𝑏, 𝑐
𝐶2 : 𝑎, ¬𝑏

(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 8.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 : 𝑏, ¬𝑐
d

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
iz

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.
o
sk

𝑠𝑝𝑙𝑖𝑡([𝑎 ↦→ ⊤])
n

𝑣(𝑎)=1 𝑣(𝑎)=1
𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊤]) 𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊥])
ro

𝑣(𝑏)=1 𝑣(𝑏)=0 𝑣(𝑏)=1 𝑣(𝑏)=0


kt

𝑢𝑝([𝑐 ↦→ ⊤]) 𝑢𝑝([𝑐 ↦→ ⊤])

𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0


le

𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=1 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=1 𝐼𝑣 (𝐴)=0


E

𝑠𝑝𝑙𝑖𝑡([𝑎 ↦→ ⊤]) 𝑠𝑝𝑙𝑖𝑡([𝑎 ↦→ ⊥])

𝑣(𝑎)=1 𝑣(𝑎)=1
𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊤]) 𝑠𝑝𝑙𝑖𝑡([𝑏 ↦→ ⊥]) 𝑢𝑝([𝑏 ↦→ ⊥])

𝑣(𝑏)=1 𝑣(𝑏)=0 𝑣(𝑏)=1 𝑣(𝑏)=0


𝑢𝑝([𝑐 ↦→ ⊤]) 𝑢𝑝([𝑐 ↦→ ⊤]) 𝑢𝑝([𝑐 ↦→ ⊤])

𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0 𝑣(𝑐)=1 𝑣(𝑐)=0


𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0 𝐼𝑣 (𝐴)=0

Slika 8.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
8.6. Problem SAT i DPLL procedura 96

¬𝐴 nezadovoljiva, što se može proveriti dpll procedurom (pri čemu je, naravno, formulu ¬𝐴 potrebno najpre
transformisati u konjunktivnu normalnu formu).

Pitanja i zadaci
Pitanje 8.43. Kako se zove problem ispitivanja zadovoljivosti iskazne formule u knf obliku? Da li je ovaj
problem odlučiv?
Pitanje 8.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 8.45. U kom obliku mora da bude formula na koju se primenjuje dpll procedura?
Pitanje 8.46. Koji odgovor vraća dpll procedura ako ulazna formula ne sadrži nijednu klauzu?

6)
Pitanje 8.47. Kako glasi pravilo tautology procedure dpll?

Pitanje 8.48. Kako glasi pravilo split dpll procedure?

01
Pitanje 8.49. Koja su pravila dpll procedure primenljiva na formulu: (¬𝑎∨𝑏∨𝑐)∧(𝑎∨𝑏∨¬𝑐)∧(¬𝑎∨𝑏∨¬𝑐)?

(2
Pitanje 8.50. Da li se može konstruisati iskazna formula u knf formi za koju se algoritam dpll ne zaustavlja?
Pitanje 8.51. Koja je složenost dpll procedure u najgorem slučaju?
je
Pitanje 8.52. Da li postoje iskazne formule za koje je vreme izvršavanja procedure dpll polinomijalno u
an
odnosu na veličinu formule?
Pitanje 8.53. Ako želimo da dpll procedurom ispitamo da li je iskazna formula 𝐴 tautologija, šta treba da
d

bude ulaz za dpll proceduru? U kom je onda slučaju, formula 𝐴 valjana?


iz

Zadatak 8.23. Data je iskazna formula


((𝑎 ⇒ 𝑏) ⇒ 𝑐) ∨ (𝑏 ∧ 𝑐)
o
sk

Odrediti knf date formule i ispitati njenu zadovoljivost koristeći dpll algoritam.
Zadatak 8.24. Pomoću dpll algoritma proveriti da li je sledeća formula zadovoljiva:
n
ro

(𝑐 ⇒ (𝑎 ∧ 𝑏))) ⇒ (𝑎 ∧ 𝑐)

Zadatak 8.25. Pomoću algoritma proveriti da li je sledeća formula tautologija:


kt

dpll

((𝑎 ∨ ¬𝑏) ⇒ ¬𝑐) ⇒ (¬𝑎 ∧ 𝑏 ∧ ¬𝑐)


le

Zadatak 8.26. Data je iskazna formula


E

((𝑎 ⇒ 𝑏) ⇒ 𝑐) ∨ (𝑏 ∧ 𝑐)

Ispitati njenu zadovoljivost koristeći dpll algoritam.


Zadatak 8.27. Data je iskazna formula (𝑝 ∨ (𝑞 ∧ 𝑟)) ⇒ (𝑞 ∨ 𝑝 ∨ 𝑟). Odrediti knf date formule i ispitati njenu
zadovoljivost koristeći algoritam dpll.

Zadatak 8.28. Proveriti dpll procedurom da li je sledeća iskazna formula valjana.

((𝑎 ⇒ 𝑏) ⇒ (𝑏 ⇒ 𝑐)) ∧ 𝑎 ∧ ¬𝑐

Zadatak 8.29. Primenom dpll algoritma ispitati da li su sledeće formule zadovoljive:


(a) (𝑝 ⇒ 𝑟) ⇒ ((𝑞 ⇒ 𝑟) ⇒ (𝑝 ∨ 𝑞 ⇒ 𝑟))
(b) ¬((𝑝 ⇒ 𝑟) ⇒ ((𝑞 ⇒ 𝑟) ⇒ (𝑝 ∨ 𝑞 ⇒ 𝑟)))
Zadatak 8.30. Primenom dpll algoritma ispitati da li je formula (𝑝 ∨ ¬𝑞 ∨ ¬𝑟) ∧ (¬𝑝 ∨ 𝑞 ∨ ¬𝑟) ∧ (𝑝 ∨ ¬𝑞 ∨ 𝑟)
zadovoljiva, tautologija, poreciva, kontradikcija.
97 8. Iskazna logika

8.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

6)
svedeni na SAT.

Primer 8.18. Neka su 𝑢 i 𝑣 prirodni brojevi manji od 4. Onda, ako je broj 𝑢 predstavljen parom iskaznih slova

01
(𝑝, 𝑞) (koja odgovaraju njegovim ciframa u binarnom zapisu) a broj 𝑣 predstavljen parom (𝑟, 𝑠), onda je broj
𝑣 + 𝑢 (po modulu 22 ) predstavljen parom ((𝑝∨𝑟)∨(𝑞 ∧ 𝑠), 𝑞∨𝑠) (gde ∨ označava ekskluzivnu disjunkciju).

(2
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.
d

Rešavanje problema svodenjem na SAT biće ilustrovano kroz nekoliko konkretnih primera i nekoliko različitih
iz

vrsta svodenja na SAT.


o

8.7.1 Primeri kodiranja


sk

Retka kodiranja. U praktičnim problemima koji se rešavaju svodenjem na SAT, ne figurišu samo iskazne
promenljive, već često i celobrojne promenljive 𝑣𝑖 koje mogu imati vrednosti iz nekog ograničenog skupa. U
n

takvim situacijima često se koristi retko kodiranje (eng. sparse encoding) u kojem se uvode iskazne promeljive
𝑥𝑣,𝑖 koje su tačne ako i samo ako promeljiva 𝑣 ima vrednost 𝑖. Time se uslov da promeljiva 𝑣 ima jednu vrednost
ro

iz zadatog domena 𝐼 zadaje uslovom („uslov barem-jedna“):


kt

⋁︁
𝑥𝑣,𝑖
𝑖∈𝐼
le

Promenljiva 𝑣 ne može imati dve vrednosti istovremeno, što se opisuje formulom („uslov najviše-jedna“):
E

⋀︁
¬𝑥𝑣,𝑖 ∨ ¬𝑥𝑣,𝑗
𝑖,𝑗∈𝐼,𝑖̸=𝑗

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:
⋁︁
¬𝑥𝑣,𝑖 ∨ 𝑥𝑤,𝑗
𝑗∈𝐴
8.7. Rešavanje problema svodenjem na SAT 98

Log kodiranje. U log kodiranju svakom bitu vrednosti numeričkih promenjivih (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 promenjive manji od
broja mogućih vrednosti iskaznih promenljivih koji se koriste za njeno kodiranje, neke kombinacije vrednosti
iskaznih probemljivih 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 promenjive, 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

6)
¬𝑥𝑣,1 ∨ ¬𝑥𝑣,2 ∨ 𝑥𝑣,3 ∨ 𝑥𝑤,1 ∨ ¬𝑥𝑤,2 ∨ ¬𝑥𝑤,3 .

Primer 8.19. Zadatak je obojiti dve kuće (neka su označene sa 𝑣 i 𝑤) po jednom od tri raspoložive boje (neka

01
su označene brojevima 1, 2, 3), ali tako da su obojene različito.
U retkim kodiranjima problema, biće potrebni „barem jedna“ uslovi

(2
𝑥𝑣,1 ∨ 𝑥𝑣,2 ∨ 𝑥𝑣,3
𝑥𝑤,1 ∨ 𝑥𝑤,2 ∨ 𝑥𝑤,3
i „najviše jedna“ uslovi:
¬𝑥𝑣,1 ∨ ¬𝑥𝑣,2 je
an
¬𝑥𝑣,1 ∨ ¬𝑥𝑣,3
¬𝑥𝑣,2 ∨ ¬𝑥𝑣,3
¬𝑥𝑤,1 ∨ ¬𝑥𝑤,2
d

¬𝑥𝑤,1 ∨ ¬𝑥𝑤,3
iz

¬𝑥𝑤,2 ∨ ¬𝑥𝑤,3
Dodatno, u direktnom kodiranju biće opisan i uslov da nisu obe kuće obojene istom bojom (klauze konflikta):
o

¬𝑥𝑣,1 ∨ ¬𝑥𝑤,1
¬𝑥𝑣,2 ∨ ¬𝑥𝑤,2
sk

¬𝑥𝑣,3 ∨ ¬𝑥𝑤,3
U potpornom kodiranju, klauze konflikta se zadaju na sledeći način:
n

¬𝑥𝑣,1 ∨ (𝑥𝑤,2 ∨ 𝑥𝑤,3 )


ro

¬𝑥𝑣,2 ∨ (𝑥𝑤,1 ∨ 𝑥𝑤,3 )


¬𝑥𝑣,3 ∨ (𝑥𝑤,1 ∨ 𝑥𝑤,2 )
kt

¬𝑥𝑤,1 ∨ (𝑥𝑣,2 ∨ 𝑥𝑣,3 )


¬𝑥𝑤,2 ∨ (𝑥𝑣,1 ∨ 𝑥𝑣,3 )
le

¬𝑥𝑤,3 ∨ (𝑥𝑣,1 ∨ 𝑥𝑣,2 )


Pažljivom analizom može se pokazati na poslednje tri navedene klauze nisu potrebne.
E

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
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

8.7.2 Problem 𝑛 dama


Za svako konkretno 𝑛, analogno kao u slučaju 𝑛 = 3, problem 𝑛 dama 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.
99 8. 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

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

6)
kodiranja opisati na sledeći način:

1. u svakoj koloni mora da bude barem jedna dama:

01
𝑖=1,...,𝑛 𝑣𝑗𝑖 , za 1 ≤ 𝑗 ≤ 𝑛;
⋁︀

(2
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:


d

𝑖=1,...,𝑛;𝑗=1,...,𝑛;𝑘=1,...,𝑛;𝑙=1,...,𝑛; ¬𝑣𝑖𝑗 ∨ ¬𝑣𝑘𝑙 , za |𝑘 − 𝑖| = |𝑙 − 𝑗|;


⋀︀
iz

Kako prva dva skupa uslova obezbeduju da ima ukupno 𝑛 dama, a treći da u svakoj vrsti ima najviše jedna
o

dama, nije potrebno zadavati uslov da u svakoj vrsti mora da bude barem jedna dama.
Konjunkcija navedenih uslova daje formulu koja opisuje zadati problem. Ona je već u konjunktivnoj nor-
sk

malnoj formi i njena zadovoljivost može biti ispitana nekim SAT rešavačem. Na primer, za 𝑛 = 8, formula ima
92 modela i svaki od njih daje po jedno rasporedivanje dama koje ispunjava date uslove.
n
ro

8.7.3 Rasporedivanje sportskih utakmica


kt

Iskazna logika često se koristi u problemima rasporedivanja. Jedan od takvih problema je rasporedivanje
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:
le
E

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 8.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 im 𝑘 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 ≤ 𝑘 ≤ 𝑛}
8.7. Rešavanje problema svodenjem na SAT 100

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 8.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.

6)
1. Svake nedelje na svakom terenu se održava utakmica.

01
1𝑛−1
𝑥11
𝑖𝑗 ∨ . . . ∨ 𝑥𝑖𝑗

𝑥22 2𝑛
𝑖𝑗 ∨ . . . ∨ 𝑥𝑖𝑗

(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𝑗𝑘
d
iz

pod uslovom da ne važi 𝑟1 = 𝑟2 i 𝑖1 = 𝑖2 .


4. Dva različita tima se sastaju najviše jednom.
o
sk

¬𝑥1𝑘 2𝑘2 1𝑘1 2𝑘2


𝑖1 𝑗1 ∨ ¬𝑥𝑖1 𝑗1 ∨ ¬𝑥𝑖2 𝑗2 ∨ ¬𝑥𝑖2 𝑗2
1

pod uslovima 𝑗1 ̸= 𝑗2 i 𝑘1 < 𝑘2 .


n

5. Nijedan tim ne igra više od dva puta na istom terenu.


ro

¬𝑥𝑟𝑖𝑗11𝑘 ∨ ¬𝑥𝑟𝑖𝑗22𝑘 ∨ ¬𝑥𝑟𝑖𝑗33𝑘


kt

pod uslovima 𝑗1 ̸= 𝑗2 , 𝑗1 ̸= 𝑗3 i 𝑗2 ̸= 𝑗3 .
le

Ukupan broj klauza u formuli je reda 𝑂(𝑛6 ).


E

8.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
101 8. Iskazna logika

6)
01
(2
𝐴 𝐵 𝑃
je
an
d
iz
o

𝑍
sk

𝑃
𝐴 𝑍′
n

𝐵
ro

𝑄′
kt

𝑄
le
E

Slika 8.5: Osnovni i optimizovani dizajn sabirača

korektnosti, usled složenosti softvera u kojem su ti algoritmi implementirani, uvek postoji mogućnost da je u
nekom koraku napravljena greška i da finalni, optimizovani, dizajn kola više nije ekvivalentan polaznom. Zbog
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
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 važi 𝐼𝑣 (𝐴) =
𝐼𝑣 (𝐵). 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 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.
8.7. Rešavanje problema svodenjem na SAT 102

𝑥𝑖1 𝑥𝑖0 𝑥𝑖+1


1 𝑥𝑖+1
0
0 0 0 1
0 1 1 0
1 0 0 0
1 1 1 0
Tabela 8.3: Tablica prelaska brojača koji broji od 0 do 2

Postupak provere ekvivalentnosti ćemo prikazati na primeru sabirača. Recimo da je optimizovanjem prvog
kola na slici 8.5, dobijeno drugo. Na osnovu dizajna, za svaki od izlaza može se formirati iskazna formula koja
mu odgovara:

𝑍 = (¬𝐴 ∧ 𝐵 ∧ ¬𝑃 ) ∨ (𝐴 ∧ ¬𝐵 ∧ ¬𝑃 ) ∨ (¬𝐴 ∧ ¬𝐵 ∧ 𝑃 ) ∨ (¬𝐴 ∧ ¬𝐵 ∧ 𝑃 ) ∨ (𝐴 ∧ 𝐵 ∧ 𝐶)

6)
𝑄 = (𝐴 ∧ 𝐵) ∨ (𝐵 ∧ 𝑃 ) ∨ (𝐴 ∧ 𝑃 )

01
𝑍 ′ = (𝐴∨𝐵)∨𝑃

(2
𝑄′ = (𝐴 ∧ 𝐵) ∨ (𝐴∨𝐵) ∧ 𝑃

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
je
da sat-rešavači ipak uspevaju da provere njihovu zadovoljivost zahvaljujući pravilnostima koje su prisutne u
an
tim formulama, a koje sat-rešavači u toku rada mogu mogu da nauče i iskoriste.

8.7.5 Ograničena provera modela


d
iz

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
o

sistema koji se analizira. Jedan od ciljeva verifikacije je dokazivanje da sistem zadovoljava odredena svojstva,
sk

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
n

sigurno doći neko stanje u kojem taj će traženi odgovor biti dat. Dokazivanje tvrdnji poput ovih, koje se naziva
proverom modela, može predstavljati problem koji nije odlučiv. Stoga se u praksi obično koristi ograničena
ro

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.
kt

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
le

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
E

što je brojač na slici 8.6. Njegova tablica prelaska je data tabelom 8.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
3. Stanje u trenutku 𝑖 se opisuje pomoću dva bita 𝑥𝑖0 i 𝑥𝑖1 . Željeno svojstvo se opisuje formulm ¬𝑥𝑖0 ∨ ¬𝑥𝑖1 .
Uslov koji važi u polaznom stanju je ¬𝑥00 ∨ ¬𝑥01 . Iz tablice prelaska se vidi da za svaka dva susedna stanja važe
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:

(¬𝑥00 ∨ ¬𝑥01 )∧ (𝑥10 ⇔ ¬𝑥00 ∧ ¬𝑥01 ) ∧ (𝑥11 ⇔ 𝑥00 )∧ . . . ∧ (𝑥𝑘0 ⇔ ¬𝑥𝑘−1


0 ∧ ¬𝑥1𝑘−1 )∧ (𝑥𝑘1 ⇔ 𝑥𝑘−1
0 )∧ (¬𝑥𝑘0 ∨ ¬𝑥𝑘1 )

Prvi konjunkt u gornjoj konjunkciji predstavlja polazni uslov, potom slede po dva konjunkta koji opisuju
prelaske izmedu susednih stanja, a poslednji konjunkt izražava željeno svojstvo u poslednjem stanju. Željeno
svojstvo je moglo biti formulisano i za sva prethodna stanja, a odgovarajuće formule bi bile dodate u konjunkciju.
Ukoliko je formula zadovoljiva za neko 𝑘 , to znači da postoji putanja od polaznog stanja kojom se može doći do
stanja koje ne zadovoljava traženo svojstvo. U opštem slučaju dobijena valuacija odreduje stanja preko kojih
se može doći do problematičnog stanja, sto može pomoći u pronalaženju greške u analiziranom sistemu.
103 8. Iskazna logika

6)
𝐶𝐿𝐾

𝐷
𝑥1

01
𝐹𝐹0

(2
𝑁 𝑂𝑅 𝐷
𝑥0
𝐹𝐹1

je
an
Slika 8.6: Dizajn brojača koji broji od 0 do 2
d

8.7.6 SAT-rešavači i DIMACS-CNF format


iz

Programe koji rešavaju instance sat problema zovemo sat-rešavači (eng. sat-solvers). Većina savremenih
sat-rešavačazasnovana je na dpll proceduri, ali je obogaćena mnogim tehnikama i heuristikama. Neki od
o

popularnih sat-rešavača su MiniSAT, PicoSAT i zChaff.


sk

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
n

označene rednim brojevima, negirane promenljive odgovarajućim negativnim brojevima i svaki red završava se
brojem 0. Na primer,
ro

p cnf 3 2
kt

1 -3 0
-1 2 3 0
le

reprezentuje formulu (sa tri promenljive i dve klauze): (𝑝1 ∨ ¬𝑝3 )(¬𝑝2 ∨ 𝑝2 ∨ 𝑝3 ).
E

Pitanja i zadaci
Zadatak 8.31. Dva 2-bitna broja se sabiraju i daju rezultat 3. Primenom dpll procedure naći dva takva
broja.
Zadatak 8.32. Zapisati formulu koja opisuje uslov da se u svakoj vrsti table za igru oblika 2x2 polja može
postaviti tačno jedan žeton i proveriti njenu zadovoljivost dpll procedurom.
Zadatak 8.33. 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 8.34. Na tabli 2x2 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?
Zadatak 8.35. U iskaznoj logici
8.7. Rešavanje problema svodenjem na SAT 104

1. zapisati uslov da bitovi 3-bitnog broja moraju biti jednaki i

2. dpll procedurom proveriti da li takav broj postoji i ako postoji, naći primer.

Zadatak 8.36. 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.

Zadatak 8.37. 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 dpll
procedurom proveriti da li je moguce polja obojiti u skladu sa ovim pravilima. Ukoliko jeste naći primer takvog
bojenja.

Zadatak 8.38. Temena trougla se boje pomoću dve boje. Pri tom, ni jedan par temena ne moze 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.

6)
Zadatak 8.39. Za kolo dato na slici, dpll procedurom proveriti da li može da da izlaz 1 i ukoliko je to

01
moguće, naći kombinaciju vrednosti na ulazima za koju je to slučaj.

(2
je
an

Zadatak 8.40. Koristeći direct encoding zapisati sledeće uslove:


d

𝐴, 𝐵, 𝐶 ∈ 4, 5
𝐴 i 𝐵 ne smeju biti jednaki
iz

𝐶 mora biti veće od 𝐵


o

Zadatak 8.41. Tabela 2x2 se boji crvenom ili plavom bojom. Ako je polje (1,1) ofarbano crvenom bojom onda
sk

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
n

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)).
ro

Zadatak 8.42. Tabela 2x2 se boji crvenom ili plavom bojom. Ako je polje B plave boje, polje C je crvene
kt

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.
le
E

A B
C D

Zadatak 8.43. 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?

Zadatak 8.44. Modelovanja jednog problema biće prikazano na primeru jednostavne igre - Vumpus. Igra
se igra na tabli od 4x4 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.
105

E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
8. Iskazna logika
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 9

Logika prvog reda

6)
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

01
prvog reda dozvoljeno je samo kvantifikovanje promenljivih.1 U okviru logike prvog reda mogu se opisati mnoge
matematičke teorije.

(2
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
d

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-
iz

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-
o

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.
sk

Logika prvog reda je izražajnija od iskazne logike i njenim sredstvima može se opisati još više praktičnih
problema. Za neke probleme (nad konačnim domenima) pogodnije je rešavanje korišćenjem iskazne logike, ali
n

za neke je opisivanje i rešavanje znatno lakše korišćenjem predikatske logike.


ro

Primer 9.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
kt

informacija o poretku svih blokova (ovaj problem može se razmatrati i kao problem muzičkih kompakt diskova
poredanih na jednom štapu).
le
E

𝐵
𝐴
𝐶

Slika 9.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.

107
9.1. Sintaksa logike prvog reda 108

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
𝑎(𝐴, 𝐵):

ˆ „za svaka dva bloka 𝑥, 𝑦 važi: ako je 𝑎(𝑥, 𝑦) onda nije 𝑎(𝑦, 𝑥).“
ˆ „za svaka dva bloka 𝑥, 𝑦 važi: 𝑎(𝑥, 𝑦) ako i samo ako 𝑏(𝑦, 𝑥).“
ˆ „za svaka tri bloka 𝑥, 𝑦 , 𝑧 važi: ako je 𝑎(𝑥, 𝑦) i 𝑎(𝑦, 𝑧) onda je 𝑎(𝑥, 𝑧).“

6)
Za sve navedene, a i druge slične formule, potrebno je definisati način na koji im se pridružuje vrednost

01
tačno ili netačno. Iz navedenih uslova potrebno je za proizvoljna tri bloka 𝑥, 𝑦 , 𝑧 , iz pretpostavke da važi 𝑎(𝑦, 𝑥)
i 𝑏(𝑧, 𝑥) izvesti zaključak 𝑎(𝑦, 𝑧) ili 𝑎(𝑧, 𝑦).

(2
9.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 9.1 (Jezik i signatura prvog reda). Jezik prvog reda definiše se za
d

ˆ 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
iz

i binarnih — konjunkcija, disjunkcija, implikacija, ekvivalencija i dva kvantifikatora — univezalni i


egzistencijalni.
o

ˆ Nelogički deo jezika prvog reda koji čine skupovi: (najviše prebrojiv) skup funkcijskih simbola (sa
sk

fiksiranim nenegativnim arnostima), (najviše prebrojiv) skup predikatskih (relacijskih) simbola (sa
fiksiranim nenegativnim arnostima).
n

Skupovi funkcijskih i predikatskih simbola sa svojim fiksiranim arnostima (odredenim funkcijom 𝑎𝑟) čine
ro

signaturu.
Funkcijske simbole arnosti 0 zovemo simbolima konstanti.
kt

Skup formula logike prvog reda ili dobro zasnovanih formula, u daljem tekstu samo skup formula nad nekom
le

signaturom ℒ definiše se na sledeći način.


E

Definicija 9.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
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
109 9. Logika prvog reda

¬, 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 Γ, Δ, . . ..
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 𝒜 = ̸ ℬ.

6)
Primer 9.2. Signatura za problem iz primera 9.1 je ℒ = ({}, {𝑎, 𝑏}, 𝑎𝑟), gde je 𝑎𝑟(𝑎) = 𝑎𝑟(𝑏) = 2.

01
Primer 9.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

(2
promenljivih 𝑉 = {𝑥, 𝑦, 𝑧, . . .} su: 0𝑎 , +𝑎 (𝑥, 𝑦), a neke od formula su <𝑎 (+𝑎 (𝑥, 𝑦), 𝑧), <𝑎 (𝑥, 0𝑎 ), ∀𝑥¬(<𝑎
(𝑥, 𝑥)), ∀𝑥(=𝑎 (𝑥, +𝑎 (𝑥, 0𝑎 ))). Ukoliko se funkcijski i predikatski simboli zapišu infiksno (umesto prefiksno),
onda se navedeni termovi i formule zapisuju na sledeći način: 0𝑎 , 𝑥 +𝑎 𝑦 , 𝑥 +𝑎 𝑦 <𝑎 𝑧 , 𝑥 <𝑎 0𝑎 , ∀𝑥¬(𝑥 <𝑎 𝑥),
∀𝑥(𝑥 =𝑎 (𝑥 +𝑎 0𝑎 )). je
Predikatski simbol =𝑎 iz navedene signature ne treba mešati sa simbolom = koji se koristi za označavanje
an
sintaksički 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
d

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
iz

skupa (videti poglavlje 9.3).


o

Primer 9.4. Razmotrimo signaturu ℒ = ({𝑎}, {𝑝, 𝑞}, 𝑎𝑟), gde je 𝑎𝑟(𝑎) = 0, 𝑎𝑟(𝑝) = 1, 𝑎𝑟(𝑞) = 1.
sk

Neki od termova nad ovom signaturom i skupom promenljivih 𝑉 = {𝑥, 𝑦, 𝑧, . . .} su 𝑥, 𝑦 , 𝑎, neke od atomičkih
formula su 𝑝(𝑥), 𝑞(𝑦), 𝑞(𝑎), a neke od formula (∀𝑥)(𝑝(𝑥) ⇒ 𝑞), ((∀𝑥)𝑝(𝑥)) ⇒ 𝑞).
n

Primer 9.5. Razmotrimo signaturu ℒ = ({𝑠𝑜𝑘𝑟𝑎𝑡}, {𝑚𝑎𝑛, 𝑚𝑜𝑟𝑡𝑎𝑙}, 𝑎𝑟), gde je 𝑎𝑟(𝑠𝑜𝑘𝑟𝑎𝑡) = 0, 𝑎𝑟(𝑚𝑎𝑛) = 1,
ro

𝑎𝑟(𝑚𝑜𝑟𝑡𝑎𝑙) = 1. Neki od termova nad ovom signaturom i skupom promenljivih 𝑉 = {𝑥, 𝑦, 𝑧, . . .} su: 𝑥, 𝑦 ,
𝑠𝑜𝑘𝑟𝑎𝑡, neke od atomičkih formula su 𝑚𝑎𝑛(𝑥), 𝑚𝑜𝑟𝑡𝑎𝑙(𝑦), 𝑚𝑜𝑟𝑡𝑎𝑙(𝑠𝑜𝑘𝑟𝑎𝑡), a neke od formula su (∀𝑥)𝑚𝑎𝑛(𝑥),
(∀𝑥)(𝑚𝑎𝑛(𝑥) ⇒ 𝑚𝑜𝑟𝑡𝑎𝑙(𝑥)),
kt
le

Definicija 9.3 (Slobodno i vezano pojavljivanje promenljive). U formulama ∀𝑥𝒜 i ∃𝑥𝒜, formula 𝒜 je
doseg kvantifikatora.
E

Pojavljivanje promenljive 𝑥 je vezano 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 9.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.

Č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 𝒜.
9.2. Zamena 110

Formule bez promenljivih zovu se bazne formule, a formule bez slobodnih promenljivih zovu se zatvorene
formule ili rečenice. Za formulu 𝒜 kažemo da je univerzalno zatvorena ako je oblika (∀𝑥1 )(∀𝑥2 ) . . . (∀𝑥𝑘 )𝒜′ ,
pri čemu 𝒜′ ne sadrži slobodne promenljive osim (eventualno) promenljivih 𝑥1 , 𝑥2 , . . . , 𝑥𝑘 . Formula 𝒜 je eg-
zistencijalno zatvorena ako je oblika (∃𝑥1 )(∃𝑥2 ) . . . (∃𝑥𝑘 )𝒜′ pri čemu 𝒜′ ne sadrži slobodne promenljive 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 𝒜.

Pitanja i zadaci
Pitanje 9.1. Kako se još nazivaju funkcijski simboli arnosti 0?
Pitanje 9.2. Koliko ima formula logike prvog reda nad konačnim skupom predikatskih i funkcijskih simbola,
a koliko nad prebrojivim skupom iskaznih promenljivih?
Pitanje 9.3. Šta je literal u logici prvog reda?

6)
Pitanje 9.4. Šta je klauza u logici prvog reda?

01
Pitanje 9.5. Šta je term u logici prvog reda?

(2
Pitanje 9.6. Da li je u formuli ∀𝑥(𝑝(𝑥, 𝑦)∧𝑞(𝑦, 𝑧)∧𝑟(𝑧)), promenljiva 𝑥 slobodna ili vezana, da li je promenljiva
𝑦 slobodna ili vezana, da li je promenljiva 𝑧 slobodna ili vezana?

Zadatak 9.1. Zapisati narednu rečenicu u vidu formule logike prvog reda:
je
(a) Svako voli nekoga i niko ne voli svakoga ili neko voli svakoga i neko ne voli nikoga.
an
(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.
d

9.2 Zamena
iz

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ć (∀𝑧)𝑝(𝑦, 𝑧):
o
sk

ˆ ako je 𝑥 ̸= 𝑦 , neka je 𝑧 promenljiva koja se ne pojavljuje ni u (∀𝑦)𝒜 ni u 𝑡𝑥 ; tada je (∀𝑦𝒜)[𝑥 ↦→ 𝑡𝑥 ] =


(∀𝑧)𝒜[𝑦 ↦→ 𝑧][𝑥 ↦→ 𝑡𝑥 ];
n

ˆ ako je 𝑥 ̸= 𝑦 , neka je 𝑧 promenljiva koja se ne pojavljuje ni u (∃𝑦)𝒜 ni u 𝑡𝑥 ; tada je (∃𝑦𝒜)[𝑥 ↦→ 𝑡𝑥 ] =


ro

(∃𝑧)𝒜[𝑦 ↦→ 𝑧][𝑥 ↦→ 𝑡𝑥 ].
kt

U daljem tekstu ćemo pod terminom izraz podrazumevati i termove i formule.

Definicija 9.4 (Zamena). Uopštena zamena (supstitucija) 𝜎 je skup zamena [𝑥1 ↦→ 𝑡1 ], [𝑥2 ↦→ 𝑡2 ], . . .,
le

[𝑥𝑛 ↦→ 𝑡𝑛 ] gde su 𝑥𝑖 promenljive i 𝑡𝑖 su proizvoljni termovi i gde je 𝑥𝑖 ̸= 𝑥𝑗 za 𝑖 ̸= 𝑗 . Takvu zamenu


zapisujemo kraće [𝑥1 ↦→ 𝑡1 , 𝑥2 ↦→ 𝑡2 , . . . , 𝑥𝑛 ↦→ 𝑡𝑛 ].
E

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 9.7. Za 𝜎 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝑠 = 𝑔(𝑎, 𝑥) važi 𝑠𝜎 = 𝑔(𝑎, 𝑓 (𝑦)).
Za 𝜎 = [𝑥 ↦→ 𝑓 (𝑥)] i 𝑠 = 𝑔(𝑎, 𝑥) važi 𝑠𝜎 = 𝑔(𝑎, 𝑓 (𝑥)).
Za 𝜎 = [𝑥 ↦→ 𝑓 (𝑦), 𝑦 ↦→ 𝑎], 𝑠 = 𝑔(𝑎, 𝑥) i 𝑡 = 𝑔(𝑦, 𝑔(𝑥, 𝑦)) važi 𝑠𝜎 = 𝑔(𝑎, 𝑓 (𝑦)) i 𝑡𝜎 = 𝑔(𝑎, 𝑔(𝑓 (𝑦), 𝑎)).
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
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,
ako je 𝑡𝑖 = 𝑥𝑖 za neko 𝑖).
111 9. Logika prvog reda

Definicija 9.5 (Kompozicija zamena). Za supstitucije 𝜑 = [𝑥1 ↦→ 𝑡1 , 𝑥2 ↦→ 𝑡2 , . . . , 𝑥𝑛 ↦→ 𝑡𝑛 ] i 𝜆 = [𝑦1 ↦→


𝑠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
𝑦𝑖 ↦→ 𝑠𝑖 , gde je 𝑦𝑖 = 𝑥𝑗 za neko 𝑗 .

Primer 9.8. Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝜆 = [𝑦 ↦→ 𝑔(𝑧)], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑔(𝑧)), 𝑦 ↦→ 𝑔(𝑧)].


Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝜆 = [𝑦 ↦→ 𝑔(𝑥)], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑔(𝑥)), 𝑦 ↦→ 𝑔(𝑥)].
Za 𝜑 = [𝑥 ↦→ 𝑦] i 𝜆 = [𝑦 ↦→ 𝑥], važi 𝜑𝜆 = [𝑦 ↦→ 𝑥].
Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑦)] i 𝜆 = [𝑥 ↦→ 𝑔(𝑧)], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑦)].
Za 𝜑 = [𝑥 ↦→ 𝑓 (𝑥)] i 𝜆 = [𝑥 ↦→ 𝑎], važi 𝜑𝜆 = [𝑥 ↦→ 𝑓 (𝑎)].

Može se dokazati da je kompozicija supstitucija asocijativna, kao i da važi 𝐸(𝜑𝜆) = (𝐸𝜑)𝜆.

Definicija 9.6 (Instanca izraza). Ako je 𝐸 izraz (term ili formula) i ako je 𝜑 supstitucija, onda kažemo
da je 𝐸𝜑 instanca (ili primerak) izraza 𝐸 .

6)
Definicija 9.7 (Zamena). Neka su formule ℬ1 i ℬ2 takve da formula ℬ2 nema nijednu slobodnu promenljivu

01
koju nema formula ℬ1 . Formulu dobijenu zamenom (supstitucijom) formule ℬ1 formulom ℬ2 u formuli 𝒜,
označavamo sa 𝒜[ℬ1 ↦→ ℬ2 ] i definišemo na sledeći način:

(2
ˆ ako je formula 𝒜 instanca formule ℬ1 , tj. ako je 𝒜 = ℬ1 𝜎 za neku supstituciju 𝜎 , onda je 𝒜[ℬ1 ↦→
ℬ2 ] = ℬ2 𝜎 ;

je
ˆ ako je formula 𝒜 atomička formula i nije instanca formule ℬ1 , onda je 𝒜[ℬ1 ↦→ ℬ2 ] = 𝒜;
an
ˆ (¬𝒜)[ℬ1 ↦→ ℬ2 ] = ¬(𝒜[ℬ1 ↦→ ℬ2 ]);
ˆ (𝒜 ∧ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ∧ ℬ[ℬ1 ↦→ ℬ2 ]);
d

ˆ (𝒜 ∨ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ∨ ℬ[ℬ1 ↦→ ℬ2 ]);


iz

ˆ (𝒜 ⇒ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ⇒ ℬ[ℬ1 ↦→ ℬ2 ]);


o

ˆ (𝒜 ⇔ ℬ)[ℬ1 ↦→ ℬ2 ] = (𝒜[ℬ1 ↦→ ℬ2 ] ⇔ ℬ[ℬ1 ↦→ ℬ2 ]);


sk

ˆ (∀𝑥𝒜)[ℬ1 ↦→ ℬ2 ] = (∀𝑥)(𝒜[ℬ1 ↦→ ℬ2 ]);


n

ˆ (∃𝑥𝒜)[ℬ1 ↦→ ℬ2 ] = (∃𝑥)(𝒜[ℬ1 ↦→ ℬ2 ]).


ro

9.3 Semantika logike prvog reda


kt

Semantički aspekt logike prvog reda govori o značenju formula. U nastavku će biti uvedena semantika logike
le

prvog reda u stilu Tarskog (koji je prvi precizno uveo pojam semantike 1933. godine). Tako uvedenu semantiku
E

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 𝑉 .

Definicija 9.8 (ℒ-struktura). Za datu signaturu ℒ, ℒ-struktura D je par (𝐷, 𝐼 ℒ ), gde je 𝐷 skup, a 𝐼 ℒ
funkcija pri čemu važi sledeće:
ˆ 𝐷 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 𝐷;
9.3. Semantika logike prvog reda 112

ˆ svakom funkcijskom simbolu 𝑓 iz ℒ za koji je 𝑎𝑟(𝑓 ) = 𝑛 i 𝑛 > 0, funkcija 𝐼 ℒ pridružuje jednu totalnu
funkciju 𝑓𝐼 iz 𝐷𝑛 u 𝐷;a
ˆ svakom predikatskom simbolu 𝑝 iz ℒ za koji je 𝑎𝑟(𝑝) = 𝑛 (i 𝑛 > 0) funkcija 𝐼 ℒ pridružuje jednu
totalnu funkciju 𝑝𝐼 iz 𝐷𝑛 u {0, 1} .
a Funkcija 𝑓 : 𝐴 ↦→ 𝐵 je totalna ako je definisana za svaki element skupa 𝐴.

Primer 9.9. Za signaturu iz primera 9.2, jedna moguća ℒ-struktura je (B, 𝐼 ℒ ), gde je B skup konkretnih
blokova prikazanih na slici 9.1. Funkcija 𝐼 ℒ preslikava predikatske simbole 𝑎 i 𝑏 u relacije „jeste iznad“ i „jeste
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.
Primer 9.10. Za signaturu ℒ iz primera 9.3, jedna ℒ-struktura je par (Z, 𝐼 ℒ ), gde je Z skup celih brojeva, a
𝐼 ℒ 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.

6)
Za istu signaturu jedna ℒ-struktura je i par (N, 𝐼 ℒ ), gde je N skup prirodnih brojeva, a 𝐼 ℒ funkcija koja
simbol 0𝑎 preslikava u prirodni broj 0, funkcijske simbole +𝑎 i ·𝑎 u operacije sabiranja i množenja nad prirodnim

01
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 — {𝑝𝑜𝑛𝑒𝑑𝑒𝑙𝑗𝑎𝑘, 𝑢𝑡𝑜𝑟𝑎𝑘,

(2
𝑠𝑟𝑒𝑑𝑎, 𝑐𝑒𝑡𝑣𝑟𝑡𝑎𝑘, 𝑝𝑒𝑡𝑎𝑘, 𝑠𝑢𝑏𝑜𝑡𝑎, 𝑛𝑒𝑑𝑒𝑙𝑗𝑎}, a 𝐼 ℒ funkcija koja simbol 0𝑎 preslikava (na primer) u element 𝑛𝑒𝑑𝑒𝑙𝑗𝑎,
predikatski simbol <𝑎 u relaciju prethodni dan, itd.
Primer 9.11. Za signaturu iz primera 9.5 jedna ℒ-struktura je par (D, 𝐼 ℒ ), gde je D skup svih živih bića, a
je
𝐼 ℒ funkcija koja simbol 𝑠𝑜𝑘𝑟𝑎𝑡 preslikava (na primer) u osobu 𝑆𝑜𝑘𝑟𝑎𝑡, predikatski simbol 𝑚𝑎𝑛 u relaciju „biti
an
č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”,
d

predikatski simbol 𝑚𝑜𝑟𝑡𝑎𝑙 u unarnu relaciju „biti paran broj”.


iz

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 𝑣 .
o

Ako su 𝑣 i 𝑤 valuacije za isti skup promenljivih i u odnosu na isti domen, onda sa 𝑣 ∼𝑥 𝑤 označavamo da je
sk

𝑣(𝑦) = 𝑤(𝑦) 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
n

𝑉 u skup 𝐷, a skup ℒ-formula nad skupom promenljivih 𝑉 u skup {0, 1}. Funkcija 𝐼𝑣 uvodi se narednim dvema
ro

definicijama.
kt

Definicija 9.9 (Interpretacija). Vrednost (ili kraće vrednost ili značenje) terma 𝑡 u interpretaciji 𝐼𝑣 ,
odredenoj ℒ-strukturom D i valuacijom 𝑣 , označavamo sa 𝐼𝑣 (𝑡) i definišemo na sledeći način:
le

ako je 𝑡 simbol promenljive 𝑥, onda je 𝐼𝑣 (𝑡) = 𝑣(𝑥);


E

ˆ 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 , . . . , 𝑑𝑛 ).
Istinitosna 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
𝑎𝑟(𝑝) = 𝑛)
1, ako je 𝐼𝑣 (𝒜) = 0
{︂
ˆ 𝐼𝑣 (¬𝒜) =
0, inače

1, ako je 𝐼𝑣 (𝒜) = 1 i 𝐼𝑣 (ℬ) = 1


{︂
ˆ 𝐼𝑣 (𝒜 ∧ ℬ) =
0, inače
113 9. Logika prvog reda

0, ako je 𝐼𝑣 (𝒜) = 0 i 𝐼𝑣 (ℬ) = 0


{︂
ˆ 𝐼𝑣 (𝒜 ∨ ℬ) =
1, inače
0, ako je 𝐼𝑣 (𝒜) = 1 i 𝐼𝑣 (ℬ) = 0
{︂
ˆ 𝐼𝑣 (𝒜 ⇒ ℬ) =
1, inače

1, ako je 𝐼𝑣 (𝒜) = 𝐼𝑣 (ℬ)


{︂
ˆ 𝐼𝑣 (𝒜 ⇔ ℬ) =
0, inače

⎨ 1, ako postoji valuacija 𝑤 sa domenom 𝐷


ˆ 𝐼𝑣 ((∃𝑥)𝒜) = takva da je 𝑤 ∼𝑥 𝑣 i 𝐼𝑤 (𝒜) = 1


0, inače

⎨ 0, ako postoji valuacija 𝑤 sa domenom 𝐷


ˆ 𝐼𝑣 ((∀𝑥)𝒜) = takva da je 𝑤 ∼𝑥 𝑣 i 𝐼𝑤 (𝒜) = 0


1, inače

6)
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

01
u formuli 𝒜. Vrednost 𝐼𝑣 (𝒜), dakle, zavisi samo od slobodnih promenljivih u formuli 𝒜. Specijalno, ako je 𝒜
rečenica, vrednost 𝐼𝑣 (𝒜) uopšte ne zavisi od 𝑣 .

(2
Definicija 9.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, 𝑣) |= 𝒜.
je
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, 𝑣) |= 𝒜.
an
Ako formula nije zadovoljiva, onda kažemo da je ona kontradiktorna.
d

Definicija 9.11 (Valjanost). Ako je za neku ℒ-strukturu D formula 𝒜 tačna za svaku valuaciju 𝑣 , tj. u
iz

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
o

i to zapisujemo |= 𝒜.
sk

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 𝒜.
n
ro

Analogne definicije uvodimo za skupove formula.

Primer 9.12. Formula ∃𝑥(𝑥 <𝑎 0𝑎 ) tačna je u prvoj interpretaciji iz primera 9.10, a nije tačna u drugoj
kt

interpretaciji. Dakle, ona nije valjana.


le

Primer 9.13. Formula ∀𝑥(𝑚𝑎𝑛(𝑥) ⇒ 𝑚𝑜𝑟𝑡𝑎𝑙(𝑥)) je tačna u prvoj interpretaciji iz primera 9.11, a nije tačna
u drugoj interpretaciji. Dakle, ona nije valjana.
E

Primer 9.14. Razmotrimo formule nad signaturom opisanom u primeru 9.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“.

Definicija 9.12. Skup rečenica Γ je konzinstentan (ili zadovoljiv) ako ima bar jedan model. Inače, kažemo
da je skup Γ nekonzistentan, (ili nezadovoljiv, protivrečan, kontradiktoran).

Relativno lako može se dokazati naredno tvrdenje.

Teorema 9.1. Formula 𝒜 je valjana ako i samo ako je njeno univerzalno zatvorenje valjana formula.
Formula 𝒜 je zadovoljiva ako i samo ako je njeno egzistencijalno zatvorenje zadovoljiva formula.
9.3. Semantika logike prvog reda 114

Pitanja i zadaci
Pitanje 9.7. Za datu signaturu ℒ, šta je to ℒ-struktura D?
Pitanje 9.8. U šta se, u svakoj interpretaciji jezika logike prvog reda, preslikava funkcijski simbol 𝑓 ?
Pitanje 9.9. U šta se, u svakoj interpretaciji jezika logike prvog reda, preslikava predikatski simbol 𝑝?
Pitanje 9.10. U standardnoj semantici logike prvog reda, ako je 𝑥 promenljiva, čemu je jednako 𝐼𝑣 (𝑥) =
Pitanje 9.11. Kada u interpretaciji 𝐼𝑣 formula ∃𝑥𝒞 ima vrednost 0?
Pitanje 9.12. Kada u interpretaciji 𝐼𝑣 formula 𝐼𝑣 (∀𝑥𝒜) ima vrednost 0?
Pitanje 9.13. U logici prvog reda, čemu je, za neku valuaciju 𝑣 , jednaka vrednost 𝐼𝑣 (∀𝑥𝒜)?
Pitanje 9.14. U logici prvog reda, čemu je, za neku valuaciju 𝑣 , jednaka vrednost 𝐼𝑣 (∃𝑥𝒜)?

6)
Pitanje 9.15. Ako, u logici prvog reda, za dve valuacije 𝑣 i 𝑤 važi 𝑣(𝑥) = 1, 𝑣(𝑦) = 2, 𝑤(𝑥) = 3 i 𝑣 ∼𝑥 𝑤,
šta važi za 𝑤(𝑦)?

01
Pitanje 9.16. Da li je problem zadovoljivosti u logici prvog reda odlučiv ili poluodlučiv ili neodlučiv?
Pitanje 9.17. Da li je problem valjanosti u logici prvog reda odlučiv ili poluodlučiv ili neodlučiv?

(2

Zadatak 9.2. Odrediti bar jedan model formule (∀𝑥)(𝑝(𝑥) ⇒ 𝑝(𝑓 (𝑥))).
Zadatak 9.3.

je
Ispitati da li je ℒ-struktura data sa 𝐷 = {𝑎, 𝑏, 𝑐} i
an
𝑓𝐼 𝑝𝐼 𝑎 𝑏 𝑐
𝑎 𝑏 𝑎 1 1 0
d

𝑏 𝑎 𝑏 1 0 1
𝑐 𝑎 𝑐 0 0 1
iz

model formule (∀𝑥)(𝑝(𝑥, 𝑓 (𝑥)) ⇒ 𝑝(𝑓 (𝑥), 𝑥)).



Zadatak 9.4. Odrediti sve dvočlane modele formule (∀𝑥)(∃𝑦)(𝑝(𝑥, 𝑦)⇒¬𝑝(𝑦, 𝑥)).
o
sk


Zadatak 9.5. Odrediti jedan model i jedan kontramodel za formulu
(∀𝑥)(∃𝑦)(𝑝(𝑓 (𝑥, 𝑦), 𝑎)).
n


Zadatak 9.6. Data je formula
ro

𝒜 = (∀𝑥)(𝑝(𝑥, 𝑓 (𝑥)) ∧ ¬𝑝(𝑥, 𝑥)) ∧(∀𝑥)(∀𝑦)(∀𝑧)(𝑝(𝑥, 𝑦) ∧ 𝑝(𝑦, 𝑧) ⇒ 𝑝(𝑥, 𝑧)).


(a) Odrediti bar jedan model za formulu 𝒜.
kt

(b) Odrediti bar jedan kontramodel za formulu 𝒜.


(c) Dokazati da svaki model formule 𝒜 ima beskonačan domen.
le


Zadatak 9.7. Dokazati da je formula (∀𝑥)(∀𝑦)(∃𝑧)(𝑝(𝑥) ∧ 𝑝(𝑦) ⇔ 𝑝(𝑧)) valjana.
E

Zadatak 9.8. Dokazati da su naredne formule valjane:


(a) (∃𝑥)(∀𝑦)𝒜 ⇒ (∀𝑦)(∃𝑥)𝒜
(b) ((∃𝑥)(𝒜⇒ℬ)) ⇔ (𝒜⇒(∃𝑥)ℬ), pri čemu promenljiva 𝑥 nije slobodna u 𝒜.
Zadatak 9.9. Dokazati da naredne formule nisu valjane:
(a) (∃𝑥)𝒜1 ∧ (∃𝑥)𝒜2 ⇔ (∃𝑥)(𝒜1 ∧ 𝒜2 )
(b) (∀𝑥)𝒜1 ∨ (∀𝑥)𝒜2 ⇔ (∀𝑥)(𝒜1 ∨ 𝒜2 )
Zadatak 9.10. Dokazati da formula (∀𝑥)(∃𝑦)𝑝(𝑥, 𝑦) ⇔ (∃𝑦)(∀𝑥)𝑝(𝑥, 𝑦) nije valjana.
Zadatak 9.11. Dokazati da je sledeća formula valjana:
((∀𝑥)𝒜) ∧ ℬ ⇔ (∀𝑥)(𝒜 ∧ ℬ)

pri čemu formula ℬ nema slobodnih pojavljivanja promenljive 𝑥. Dokazati da data formula nije valjana ako se
izostavi navedeni dodatni uslov.
115 9. Logika prvog reda

9.4 Logičke posledice, logički ekvivalentne formule, zamena

Definicija 9.13. Neka je Γ skup formula i neka je 𝒜 formula nad signaturom ℒ. Kažemo da je formula
𝒜 logička posledica skupa formula Γ i pišemo Γ |= 𝒜 ako je svaki model za Γ istovremeno i model za 𝒜.

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 9.15. Ako sa Γ označimo skup formula (iz primera 9.2): {∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇒ ¬𝑎(𝑦, 𝑥)), ∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇔
𝑏(𝑦, 𝑥)), ∀𝑥, 𝑦, 𝑧(𝑎(𝑥, 𝑦) ∧ 𝑎(𝑦, 𝑧) ⇒ 𝑎(𝑥, 𝑧))}, onda se može pokazati da važi: Γ |= ∀𝑥, 𝑦, 𝑧(𝑎(𝑦, 𝑥) ∧ 𝑏(𝑧, 𝑥) ⇒
𝑎(𝑦, 𝑧).

Na osnovu definicije logičke posledice, jednostavno se dokazuje naredno tvrdenje (analogno teoremi 8.1).

6)
Teorema 9.2.
(a) Svaka valjana formula je logička posledica praznog skupa formula.

01
(b) Ako je skup Γ kontradiktoran, onda je svaka formula njegova logička posledica. Specijalno, svaka

(2
formula je logička posledica skupa {⊥}.
(c) Ako za skupove formula Γ i Δ važi Γ ⊂ Δ i Γ |= 𝒜, onda je Δ |= 𝒜.

je
Definicija 9.14. Kažemo da su formule 𝒜 i ℬ logički ekvivalentne i pišemo 𝒜 ≡ ℬ ako je 𝒜 logička
an
posledica formule ℬ i ℬ je logička posledica formule 𝒜.
d

Ako je svaki model za 𝒜 istovremeno i model za ℬ i obratno, onda u bilo kojoj valuaciji formule 𝒜 i ℬ
iz

imaju jednake vrednosti. Tvrdenja oblika 𝒜 ≡ ℬ zovemo logičkim ekvivalencijama (ili kraće ekvivalencijama).
Relacija ≡ je, očigledno, relacija ekvivalencije nad skupom formula.
o

Teorema 9.3. Ako za ℒ-formule 𝒜1 , 𝒜2 , ℬ1 i ℬ2 važi 𝒜1 ≡ 𝒜2 i ℬ1 ≡ ℬ2 , onda je:


sk

(a) ¬𝒜1 ≡ ¬𝒜2


n

(b) 𝒜1 ∧ ℬ1 ≡ 𝒜2 ∧ ℬ2
ro

(c) 𝒜1 ∨ ℬ1 ≡ 𝒜2 ∨ ℬ2
(d) 𝒜1 ⇒ ℬ1 ≡ 𝒜2 ⇒ ℬ2
kt

(e) 𝒜1 ⇔ ℬ1 ≡ 𝒜2 ⇔ ℬ2
le

(f ) (∀𝑥)𝒜1 ≡ (∀𝑥)𝒜2
E

(g) (∃𝑥)𝒜1 ≡ (∃𝑥)𝒜2

Teorema 9.4. Za datu signaturu ℒ, dve ℒ-formule 𝒜 i ℬ su logički ekvivalentne ako i samo ako je formula
𝒜 ⇔ ℬ valjana.

Primer 9.16. Može se dokazati da za proizvoljnu ℒ-formulu 𝒜 važi ¬(∃𝑥)𝒜 ≡ (∀𝑥)¬𝒜. Neka je D proizvoljna
ℒ-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 𝑣 ′′ ∼𝑥 𝑣 ′ ,
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.

Primer 9.17. Neke od logičkih ekvivalencija logike prvog reda (ili, preciznije, neke od shema logičkih ekviva-
lencija logike prvog reda) su:
9.4. Logičke posledice, logički ekvivalentne formule, zamena 116

¬¬𝒜 ≡ 𝒜 zakon dvojne negacije


𝒜 ∨ ¬𝒜 ≡ ⊤ zakon isključenja trećeg
(𝒜 ∧ ℬ) ≡ (ℬ ∧ 𝒜) 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 𝑦 )

6)
(∃𝑥)𝒜 ≡ (∃𝑦)(𝒜[𝑥 ↦→ 𝑦]) zakon o preimenovanju vezane
promenljive (pri čemu 𝒜 ne sadrži

01
slobodna pojavljivanja promenljive 𝑦 )

(2
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.

je
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 𝐴.
an
Teorema 9.5 (Teorema o zameni). Ako važi ℬ1 ≡ ℬ2 , onda je 𝒜 ≡ 𝒜[ℬ1 ↦→ ℬ2 ].
d

Primer 9.18. Važi ¬(∃𝑥)(𝒜 ∧ ¬ℬ) ≡ (∀𝑥)¬(𝒜 ∧ ¬ℬ) ≡ (∀𝑥)(¬𝒜 ∨ ¬¬ℬ) ≡ (∀𝑥)(¬𝒜 ∨ ℬ) ≡ (∀𝑥)(𝒜 ⇒ ℬ). Iz
iz

¬(∃𝑥)(𝒜 ∧ ¬ℬ) ≡ (∀𝑥)(𝒜 ⇒ ℬ), na osnovu teoreme 9.4 sledi da je formula ¬(∃𝑥)(𝒜 ∧ ¬ℬ) ⇔ (∀𝑥)(𝒜 ⇒ ℬ)
valjana.
o

Naglasimo da univerzalni i egzistencijalni kvantifikator ne mogu, u opštem slučaju, da menjaju mesta,


sk

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
n

egzistencijalna kvantifikatora mogu da zamene mesta, tj. formule (∃𝑥)(∃𝑦)𝒜 i (∃𝑦)(∃𝑥)𝒜 su logički ekvivalentne.
ro

To suštinski znači da u bloku kvantifikatora istog tipa, poredak tih kvantifikatora nije bitan.

Pitanja i zadaci
kt

Pitanje 9.18. Ako je formula prvog reda 𝒜 logička posledica skupa formula Γ, a skup Γ je podskup skupa Δ,
le

šta onda važi?


E

Pitanje 9.19. Kada kažemo da su formule logike prvog reda 𝒜 i ℬ logički ekvivalentne?
Pitanje 9.20. Da li je formula (∀𝑥)(𝒜 ∧ ℬ) je logički ekvivalentna nekim od formula:
(∀𝑥)𝒜 ∧ (∀𝑥)ℬ ,
(∀𝑥)𝒜 ∧ ℬ
(∀𝑥)𝒜 ∨ (∀𝑥)ℬ
(∀𝑥)𝒜 ∨ ℬ

Pitanje 9.21. Da li su formule (∀𝑥𝒜) ∧ ℬ i (∀𝑥𝒜 ∧ ℬ) logički ekvivalentne?


Pitanje 9.22. Da li su formule (∀𝑥𝒜) ∧ ∀𝑥ℬ i (∀𝑥𝒜 ∧ ℬ) logički ekvivalentne?
Pitanje 9.23. Šta treba da važi za promenljivu 𝑥 da formule ∀𝑥(𝒜 ∧ ℬ) i ∀𝑥𝒜 ∧ ℬ nisu nužno logički ekviva-
lentne?
Pitanje 9.24. Navesti teoremu o zameni za logiku prvog reda? Gde se ona koristi?

Zadatak 9.12. Navesti primer formule koja je valjana a nije izvod tautologije.
117 9. Logika prvog reda


Zadatak 9.13. Dokazati da je formula (∃𝑥)(𝒜 ⇒ ℬ) ⇔ ((∀𝑥)𝒜 ⇒ (∃𝑥)ℬ) valjana.
Zadatak 9.14. Dokazati da za svaku supstituciju 𝜎 iz 𝒜 ≡ ℬ sledi 𝒜𝜎 ≡ ℬ𝜎 .
Zadatak 9.15. Dokazati da je formula (∀𝑥)(∃𝑦)𝒜 ⇒ (∃𝑦)(𝒜[𝑥 ↦→ 𝑦]) valjana.
Zadatak 9.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 9.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 𝑖).

6)
9.5 Normalne forme

01
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

(2
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.
je
Definicija 9.15. Kažemo da je formula u preneks formi ili preneks normalnoj formi ako je ona oblika
an
𝑄1 𝑥1 𝑄2 𝑥2 . . . 𝑄𝑛 𝑥𝑛 𝒜
d

pri čemu je 𝑄𝑖 ili ∀ ili ∃ i 𝒜 ne sadrži kvantifikatore, kao ni slobodne promenljive osim (eventualno)
iz

promenljivih 𝑥1 , 𝑥2 , . . . , 𝑥𝑛 .

Ako je rečenica (zatvorena formula) 𝒜 logički ekvivalentna formuli ℬ i formula ℬ je u preneks normalnoj
o

formi, onda kažemo da je formula ℬ preneks normalna forma formule 𝒜. Korišćenjem pogodnih logičkih ekviva-
sk

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
n

veznici ⇔ i ⇒. Naglasimo da jedna formula može da ima više preneks normalnih formi (na primer, i formula
(∀𝑥)(∀𝑦)(𝒜(𝑥)∧ℬ(𝑦)) i formula (∀𝑦)(∀𝑥)(ℬ(𝑦)∧𝒜(𝑥)) su preneks normalne forme formule (∀𝑥)𝒜(𝑥)∧(∀𝑦)ℬ(𝑦)).
ro

Slično, jedna formula koja je u preneks normalnoj formi može biti preneks normalna forma za više formula.
Transformisanje formule u preneks normalnu formu može biti opisano procedurom prikazanom na slici 9.2
kt

(kada govorimo o „primeni neke logičke ekvivalencije“ mislimo na korišćenje ekvivalencije na osnovu teoreme o
zameni (9.5)).
le

Korektnost navedenog algoritma može se dokazati slično kao korektnost procedure za transformisanje formule
u konjunktivnu normalnu formu (teorema 8.4).
E

Teorema 9.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 9.19. Razmotrimo formulu


∀𝑥 𝑝(𝑥) ∧ ∀𝑥∃𝑦∀𝑧(𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑥), 𝑦)) .

Nakon koraka
∀𝑥(𝑝(𝑥) ∧ ∀𝑥∃𝑦∀𝑧(𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑥), 𝑦))) ,
9.5. Normalne forme 118

Algoritam: PRENEX

Ulaz: Zatvorena formula 𝒜


Izlaz: Preneks normalna forma formule 𝒜

1. Dok god je to moguće, primenjivati logičke ekvivalencije


𝒜 ⇔ ℬ ≡ (𝒜 ⇒ ℬ) ∧ (ℬ ⇒ 𝒜) i
𝒜 ⇒ ℬ ≡ ¬𝒜 ∨ ℬ .
2. Dok god je to moguće, primenjivati sledeće logičke ekvivalencije:
¬(𝒜 ∧ ℬ) ≡ ¬𝒜 ∨ ¬ℬ ,
¬(𝒜 ∨ ℬ) ≡ ¬𝒜 ∧ ¬ℬ ,
¬(∀𝑥)𝒜 ≡ (∃𝑥)¬𝒜,
¬(∃𝑥)𝒜 ≡ (∀𝑥)¬𝒜.

6)
3. Eliminisati višestruke veznike ¬ koristeći zakon dvojne negacije:

01
¬¬𝒜 ≡ 𝒜.
4. Dok god je to moguće, primenjivati sledeće logičke ekvivalencije:

(2
(∀𝑥𝒜) ∧ ℬ ≡ (∀𝑥)(𝒜 ∧ ℬ),
(∀𝑥𝒜) ∨ ℬ ≡ (∀𝑥)(𝒜 ∨ ℬ),
ℬ ∧ (∀𝑥)𝒜 ≡ (∀𝑥)(ℬ ∧ 𝒜),
ℬ ∨ (∀𝑥)𝒜 ≡ (∀𝑥)(ℬ ∨ 𝒜),
je
an
(∃𝑥𝒜) ∧ ℬ ≡ (∃𝑥)(𝒜 ∧ ℬ),
(∃𝑥𝒜) ∨ ℬ ≡ (∃𝑥)(𝒜 ∨ ℬ),
d

ℬ ∧ (∃𝑥)𝒜 ≡ (∃𝑥)(ℬ ∧ 𝒜),


iz

ℬ ∨ (∃𝑥)𝒜 ≡ (∃𝑥)(ℬ ∨ 𝒜),


o

pri čemu 𝑥 nema slobodna pojavljivanja u formuli ℬ . Ako 𝑥 ima slobodna pojavljivanja u ℬ , onda treba
najpre preimenovati promenljivu 𝑥 u formuli (∀𝑥)𝒜 (odnosno u formuli (∃𝑥)𝒜).
sk
n

Slika 9.2: Algoritam PRENEX


ro

kako je promenljiva 𝑥 slobodna u 𝑝(𝑥), najpre ćemo preimenovati vezanu promenljivu 𝑥 u 𝑢 (u okviru formule
kt

∀𝑥∃𝑦∀𝑧(𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑥), 𝑦))):


∀𝑥(𝑝(𝑥) ∧ ∀𝑢∃𝑦∀𝑧(𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑢), 𝑦))) .
le

Nakon toga kvantifikatori ∀𝑢, ∃𝑦 , ∀𝑧 mogu, jedan po jedan, biti pomereni na početak formule:
E

∀𝑥∀𝑢∃𝑦∀𝑧(𝑝(𝑥) ∧ (𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑢), 𝑦))) .

Definicija 9.16. Formula bez kvantifikatora je u konjunktivnoj normalnoj formi ako je oblika
𝒜1 ∧ 𝒜2 ∧ . . . ∧ 𝒜𝑛

pri čemu je svaka od formula 𝒜𝑖 (1 ≤ 𝑖 ≤ 𝑛) disjunkcija literala.

Konjunktivna normalna forma formule predikatske logike može se dobiti na isti način kao i u slučaju iskazne
logike (videti poglavlje 8.5).
Primer 9.20. Konjunktivna normalna forma formule
𝑝(𝑥) ∧ (𝑞(𝑦, 𝑧) ⇒ 𝑟(𝑔(𝑢), 𝑦))

je formula
𝑝(𝑥) ∧ (¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑢), 𝑦)) .
119 9. Logika prvog reda

Definicija 9.17. 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
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.

6)
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

01
dodavanjem novih funkcijskih simbola. Te dodatne funkcijske simbole zovemo Skolemovim konstantama (za
funkcijske simbole arnosti 0) i Skolemovim funkcijama, a proces eliminisanja egzistencijalnih kvantifikatora

(2
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.
je
Pretpostavimo da rečenica počinje egzistencijalnim kvantifikatorom: ∃𝑦𝒜. Treba izabrati novi simbol kon-
an
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.
d

Ako rečenica počinje nizom univerzalnih kvantifikatora: ∀𝑥1 ∀𝑥2 . . . ∀𝑥𝑛 ∃𝑦𝒜, onda uvodimo novi funkcijski
iz

simbol 𝑓 arnosti 𝑛 koji do tada nije postojao u signaturi. Polazna formula biće onda transformisana u formulu
∀𝑥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
o

konstante samo specijalni slučaj uvodenja novog funkcijskog simbola.)


sk

Teorema 9.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
n

ℬ zadovoljiva.
ro
kt

Primer 9.21. Skolemizacijom se formula


∀𝑥∀𝑢∃𝑦∀𝑧(𝑝(𝑥) ∧ (¬𝑞(𝑦, 𝑧) ∨ 𝑟(𝑔(𝑢), 𝑦)))
le

transformiše u formulu
E

𝑝(𝑥) ∧ (¬𝑞(ℎ(𝑥, 𝑢), 𝑧) ∨ 𝑟(𝑔(𝑢), ℎ(𝑥, 𝑢))) .

Teorema 9.8. Neka je formula ℬ (u klauzalnoj formi) dobijena od rečenice 𝒜 uzastopnom primenom
sledećih postupaka:
ˆ transformisanje formule u preneks normalnu formu;
ˆ transformisanje dela formule bez kvantifikatora u konjunktivnu normalnu formu;
ˆ skolemizacija.
Tada je formula 𝒜 zadovoljiva ako i samo ako je ℬ zadovoljiva.

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
9.6. Unifikacija 120

da je 𝒜 zadovoljiva ako i samo ako je ℬ zadovoljiva. Na osnovu teoreme 9.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 9.22. 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 = (𝐷, 𝐼 ℒ )
ℒ′ ℒ′
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

6)
𝑝𝐼 (𝑐𝐼 , 𝑐𝐼 ) = 1, a iz 𝐼𝑤 (𝑝(𝑐, 𝑐)) = 0 sledi 𝑝𝐼 (𝑐𝐼 , 𝑐𝐼 ) = 0, što je kontradikcija. Dakle, formula 𝑝(𝑥, 𝑥) ∧ ¬𝑝(𝑐, 𝑐) je
nezadovoljiva, pa je polazna formula 𝒜 valjana.

01
Pitanja i zadaci

(2
Pitanje 9.25. Navesti algoritam PRENEX.
Pitanje 9.26. Dokazati da je formula dobijena algoritmom PRENEX logički ekvivalentna ulaznoj formuli.
je
Pitanje 9.27. Kako se zove postupak kojim se formula prvog reda transformiše u formulu bez kvantifikatora?
an
Pitanje 9.28. Navesti teoremu o skolemizaciji.
d

Pitanje 9.29. Ako je formula ℬ dobijena od formule 𝒜 skolemizacijom, kakav odnos važi za ove dve formule?
iz

Pitanje 9.30. Zašto formula 𝒜 i formula dobijena od nje skolemizacijom nisu logički ekvivalentne?
Pitanje 9.31. Kada za dve formule 𝐴 i 𝐵 logike prvog reda kažemo da su slabo ekvivalentne?
o
sk

Pitanje 9.32. Primenom koja tri koraka se dobija klauzalna forma formule 𝒜?
Pitanje 9.33. U kakvom su odnosu formula 𝒜 i njena klauzalna forma?
n

Zadatak 9.18. Odrediti klauzalne forme za formule:


ro

(a) (∃𝑥)𝒜1 ∧ (∃𝑥)𝒜2 ⇒ (∃𝑥)(𝒜1 ∧ 𝒜2 )


(b) (∀𝑥)𝒜1 ∨ (∀𝑥)𝒜2 ⇒ (∀𝑥)(𝒜1 ∨ 𝒜2 )
kt

(c) (∀𝑥)(∃𝑦)𝒜 ⇒ (∃𝑦)𝒜(𝑓 (𝑦), 𝑦)


le

9.6 Unifikacija
E

Problem unifikacije je problem ispitivanja da li postoji supstitucija koja čini dva izraza (dva terma ili dve
formule) jednakim.

Definicija 9.18. 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.

Primer 9.23. 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
unifikator. Unifikator termova 𝑡1 i 𝑡2 je npr. i [𝑥 ↦→ 𝑎, 𝑦 ↦→ 𝑎, 𝑧 ↦→ 𝑓 (𝑎)]. Termovi 𝑔(𝑥, 𝑥) i 𝑔(𝑦, 𝑓 (𝑦)) nisu
unifikabilni.
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 .
121 9. Logika prvog reda

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 𝜎, . . . , 𝑠𝑛 𝜎 = 𝑡𝑛 𝜎 .

Primenjuj, dok je to moguće, sledeće korake:


1. Ako postoje parovi koji imaju više od jednog pojavljivanja, obriši za svaki od njih sva pojavljivanja osim
jednog (factoring).

2. Obriši sve parove oblika (𝑡, 𝑡) (tautology).

3. Ako je 𝑥 promenljiva i 𝑡 term koji nije promenljiva i ako se (𝑡, 𝑥) pojavljuje u nizu parova, zameni par
(𝑡, 𝑥) parom (𝑥, 𝑡). Ovo uraditi za sve parove tog oblika (orientation).
4. Pretpostavimo da je par (𝑠, 𝑡) element niza parova i da ni 𝑠 ni 𝑡 nisu promenljive. Razmotri sledeće
slučajeve:

6)
(a) Ako je 𝑠 jednako 𝜙(𝑢1 , 𝑢2 , . . . , 𝑢𝑘 ) i 𝑡 je jednako 𝜙(𝑣1 , 𝑣2 , . . . , 𝑣𝑘 ) (gde je 𝜙 funkcijski ili predikatski
simbol), onda dodaj parove (𝑢1 , 𝑣1 ), (𝑢2 , 𝑣2 ), . . ., (𝑢𝑘 , 𝑣𝑘 ) i zatim obriši par (𝑠, 𝑡) (decomposition).

01
(b) Ako su 𝑠 i 𝑡 bilo koje druge forme, zaustavi rad i kao rezultat vrati neuspeh (ovo se odnosi na slučajeve
kada je jedan od termova simbol konstante, a drugi nije; kada se u 𝑠 i 𝑡 razlikuju vodeći funkcijski

(2
(odnosno predikatski) simboli i kada su vodeći funkcijski (odnosno predikatski) simboli 𝑠 i 𝑡 različite
arnosti) (collision).

5. Ako je 𝑥 promenljiva i 𝑡 term koji sadrži 𝑥 i par (𝑥, 𝑡) se pojavljuje u tekućem nizu parova, zaustavi rad i
kao rezultat vrati neuspeh (cycle). je
an
6. Ako je 𝑥 promenljiva i 𝑡 term koji ne sadrži 𝑥, 𝑥 se pojavljuje i u nekim drugim parovima i (𝑥, 𝑡) se
pojavljuje u nizu parova, onda primeni supstituciju [𝑥 ↦→ 𝑡] na sve druge parove (application).
d

Ako nije moguće primeniti nijedan od navedenih koraka vrati tekući skup parova kao najopštiji unifikator.
iz

Slika 9.3: Algoritam Najopštiji unifikator


o
sk

Definicija 9.19. 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 𝜇.
n
ro

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
kt

postoji najviše jedan najopštiji unifikator (do na preimenovanje promenljivih).


Na slici 9.3 dat je opis opšteg algoritma za odredivanje najopštijeg unifikatora za niz parova izraza. Algoritam
le

unifikacije ili vraća traženu supstituciju ili se zaustavlja sa uspehom, ukazujući na to da tražena supstitucija ne
postoji.
E

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.
Primer 9.24. Ilustrujmo rad algoritma za odredivanje na primeru sledeća dva para:
(𝑔(𝑦), 𝑥)

(𝑓 (𝑥, ℎ(𝑥), 𝑦), 𝑓 (𝑔(𝑧), 𝑤, 𝑧))


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
(𝑥, 𝑔(𝑧)), (𝑥, 𝑔(𝑧)), (ℎ(𝑥), 𝑤), (𝑦, 𝑧).
9.6. Unifikacija 122

Primenom koraka 1 dobijamo


(𝑥, 𝑔(𝑧)), (ℎ(𝑥), 𝑤), (𝑦, 𝑧).
Primenom koraka 3 dobijamo
(𝑥, 𝑔(𝑧)), (𝑤, ℎ(𝑥)), (𝑦, 𝑧).
Primenom koraka 6 dobijamo
(𝑥, 𝑔(𝑧)), (𝑤, ℎ(𝑔(𝑧))), (𝑦, 𝑧).
Ovaj niz parova odreduje traženi najopštiji unifikator 𝜎 . Za

𝜎 = [𝑥 ↦→ 𝑔(𝑧), 𝑤 ↦→ ℎ(𝑔(𝑧)), 𝑦 ↦→ 𝑧]

važi
𝑔(𝑦)𝜎 = 𝑥𝜎
𝑓 (𝑥, ℎ(𝑥), 𝑦)𝜎 = 𝑓 (𝑔(𝑧), 𝑤, 𝑧)𝜎
tj. važi
𝑔(𝑧) = 𝑔(𝑧)

6)
𝑓 (𝑔(𝑧), ℎ(𝑔(𝑧)), 𝑧) = 𝑓 (𝑔(𝑧), ℎ(𝑔(𝑧)), 𝑧) .
Primer 9.25. Razmotrimo sledeći par:

01
(𝑔(𝑥, 𝑥), 𝑔(𝑦, 𝑓 (𝑦))) .

(2
Primenom koraka 4(𝑎) dobijamo
(𝑥, 𝑦), (𝑥, 𝑓 (𝑦)).
Korak 6 može se primeniti samo na dva načina:
je
ˆ primenom koraka za par (𝑥, 𝑦); tada se dobija (𝑥, 𝑦), (𝑦, 𝑓 (𝑦)), odakle se, primenom koraka 5 dolazi do
an
neuspeha.
ˆ primenom koraka za par 𝑥 = 𝑓 (𝑦)); tada se dobija (𝑓 (𝑦), 𝑦), (𝑥, 𝑓 (𝑦)), odakle se, primenom koraka 3 i
d

koraka 5 dolazi do neuspeha.


iz

Bez dokaza navodimo teoremu o korektnosti navedenog algoritma za odredivanje najopštijeg unifikatora.

Teorema 9.9 (Korektnost algoritma Najopštiji unifikator). Algoritam Najopštiji unifikator zadovoljava
o

sledeće uslove:
sk

ˆ zaustavlja se;
n

ˆ ako vrati supstituciju, onda je ona najopštiji unifikator za dati niz parova izraza;
ro

ˆ ako se algoritam zaustavi sa neuspehom, onda ne postoji unifikator za dati niz parova izraza.
kt

Navedeni algoritam nije efikasan. Postoje znatno efikasniji algoritmi za unifikaciju. Mnogi od njih zasnovani
su na korišćenju pogodnih struktura podataka i implicitnom primenjivanju supstitucije (iz koraka 6). Neki od
le

tih algoritama imaju linearnu složenost (po broju polaznih parova), ali, u opštem slučaju, najopštiji unifikator
može imati i eksponencijalnu dužinu (po broju polaznih parova), te ga nije moguće eksplicitno predstaviti u
E

linearnom vremenu. To ilustruje sledeći primer.


Primer 9.26. Za skup parova
(𝑥1 , 𝑓 (𝑥0 , 𝑥0 ))
(𝑥2 , 𝑓 (𝑥1 , 𝑥1 ))
...
(𝑥𝑛 , 𝑓 (𝑥𝑛−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 9.34. Navesti primer izraza koji pokazaju da relacija unifikabilnosti nije tranzitivna.
123 9. Logika prvog reda

Pitanje 9.35. Ako je za neka dva izraza 𝜎 neki unifikator, a 𝜆 najopštiji unifikator, kakav onda postoji
unifikator 𝜇?
Pitanje 9.36. Do na šta dva izraza imaju jedinstven najopštiji unifikator?
Pitanje 9.37. Kako glasi pravilo cycle algoritma za pronalaženje najopštijeg unifikatora?
Pitanje 9.38. U kom slučaju je primenljivo pravilo decomposition u algoritmu za odredivanje najopštijeg
unifikatora?
Pitanje 9.39. U kojim koracima algoritam za nalaženje najopštijeg unifikatora može da vrati neuspeh?
Pitanje 9.40. Navesti algoritam za odredivanje najopštijeg unifikatora.
Pitanje 9.41. Ako dva izraza nisu unifikabilna, da li je moguće da se algoritam Najopštiji unifikator zaustavi
sa uspehom?
Pitanje 9.42. Ako dva izraza nisu unifikabilna, da li je moguće da se algoritam Najopštiji unifikator zaustavi

6)
sa neuspehom?

01
Pitanje 9.43. Ako dva izraza nisu unifikabilna, da li je moguće da se algoritam Najopštiji unifikator ne zaustavi?
Pitanje 9.44. Da li algoritam za odredivanje najopštijeg unifikatora pripada klasi P? Zašto?

(2
Pitanje 9.45. Šta je najopštiji unifikator za termove 𝑓 (𝑥, 𝑔(𝑎, 𝑦)) i 𝑓 (𝑧, 𝑔(𝑥, 𝑧)) (𝑥, 𝑦 i 𝑧 su simboli promen-
ljivih, 𝑎 je simbol konstante)?
je
Pitanje 9.46. Šta je najopštiji unifikator za termove 𝑓 (𝑥, 𝑔(𝑎, 𝑧)) i 𝑓 (𝑏, 𝑔(𝑦, 𝑥)) (𝑥, 𝑦 i 𝑧 su simboli promen-
ljivih, 𝑎 i 𝑏 su simboli konstanti)?
an
Pitanje 9.47. Šta je najopštiji unifikator za termove 𝑓 (𝑎, 𝑔(𝑥, 𝑦)) i 𝑓 (𝑧, 𝑔(𝑎, 𝑧)) (𝑥, 𝑦 i 𝑧 su simboli promen-
d

ljivih, 𝑎 je simbol konstante)?


iz

Zadatak 9.19. Odrediti najopštiji unifikator za sledeći skup parova termova:


{(𝑔(𝑥, ℎ(𝑦, 𝑧)), 𝑔(𝑢, 𝑥)), (𝑓 (𝑥), 𝑓 (ℎ(𝑐, 𝑣))), (𝑔(𝑧, 𝑢), 𝑔(𝑦, 𝑢))} .
o
sk

Zadatak 9.20. Ispitati da li je relacija unifikabilnosti tranzitivna.



Zadatak 9.21. Dokazati da za dva izraza postoji najviše jedan najopštiji unifikator (do na preimenovanje
n

promenljivih).
ro

9.7 Metod rezolucije


kt

Metod rezolucije formulisao je Alan Robinson 1965. godine, sledeći mnogobrojne prethodne rezultate. Metod
le

rezolucije je postupak za ispitivanje (ne)zadovoljivosti skupa klauza logike prvog reda, a može se pojednostaviti
E

tako da je primenjljiv 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
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 se
može reprezentovati 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
9.7. Metod rezolucije 124

Algoritam: Metod rezolucije

Ulaz: Skup klauza 𝑆


Izlaz: odgovor zadovoljiv/nezadovoljiv

1. Ako je to moguće (tj. ako se tako može izvesti neka nova klauza), primeniti pravilo rezolucije (pri tome,
roditelji rezolvente se ne zamenjuju rezolventom, već se rezolventa dodaje u skup tekući skup klauza).
Ako to nije moguće, vrati odgovor da je skup klauza 𝑆 zadovoljiv.

2. Ako u tekućem skupu klauza postoji prazna klauza (), onda vrati odgovor da je skup klauza 𝑆 nezado-
voljiv;

3. Idi na prvi korak.

Slika 9.4: Algoritam Metod rezolucije

6)
𝑙 označavamo literal ¬𝑝(𝑡1 , 𝑡2 , . . . , 𝑡𝑛 ); ako je literal 𝑙 jednak ¬𝑝(𝑡1 , 𝑡2 , . . . , 𝑡𝑛 ), onda sa 𝑙 označavamo literal

01
𝑝(𝑡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

(2
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
je
Φ 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
an
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.
d

Za razliku od iskaznog slučaja, moguć je i ishod da nove klauze mogu da se izvode beskonačno, a da se pri tome
iz

ne izvede prazna klauza.


o

9.7.1 Metod rezolucije za iskaznu logiku


sk

U metodu rezolucije za iskaznu logiku primenjuje se pravilo rezolucije sledećeg oblika:


n

𝐶 ′ ∨ 𝑙 𝐶 ′′ ∨ 𝑙
𝐶 ′ ∨ 𝐶 ′′
ro

Klauzu 𝐶 ′ ∨ 𝐶 ′′ zovemo rezolventom klauza 𝐶 ′ ∨ 𝑙 i 𝐶 ′′ ∨ 𝑙, a klauze 𝐶 ′ ∨ 𝑙 i 𝐶 ′′ ∨ 𝑙 roditeljima rezolvente.


kt

Kažemo da klauze 𝐶 ′ ∨ 𝑙 i 𝐶 ′′ ∨ 𝑙 rezolviramo pravilom rezolucije.


Metod rezolucije je postupak za ispitivanje zadovoljivosti skupa klauza koji se sastoji od uzastopnog prime-
le

njivanja pravila rezolucije (slika 9.4).


U primeni metoda rezolucije, niz klauza (polaznih i izvedenih) označavaćemo često sa 𝐶𝑖 (𝑖 = 1, 2, . . .). Iza
E

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 ’∨’).

Primer 9.27. Metodom rezolucije se iz skupa {{¬𝑝, ¬𝑞, 𝑟}, {¬𝑝, 𝑞}, {𝑝}, {¬𝑟}} može izvesti prazna klauza:
𝐶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 9.28. Metodom rezolucije se iz skupa {{¬𝑝, ¬𝑞, 𝑟}, {¬𝑝, 𝑞}, {𝑝}} ne može izvesti prazna klauza. Ovaj
skup klauza je, dakle, zadovoljiv.
125 9. Logika prvog reda

Teorema 9.10 (Teorema o metodu rezolucije). Metod rezolucije se zaustavlja 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.

9.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:

Γ′ ∨ 𝒜′ Γ′′ ∨ ¬𝒜′′
(Γ′ ∨ Γ′′ )𝜎

gde su Γ′ i Γ′′ klauze, a 𝜎 je najopštiji unifikator za 𝒜′ i 𝒜′′ .

6)
Opšte pravilo rezolucije omogućava rezolviranje više literala odjednom. Ono može biti reprezentovano na
sledeći način:

01
Γ′ ∨ 𝒜′1 ∨ 𝒜′2 ∨ . . . ∨ 𝒜′𝑚 Γ′′ ∨ ¬𝒜′′1 ∨ ¬𝒜′′2 ∨ . . . ∨ ¬𝒜′′𝑛
(Γ′ ∨ Γ′′ )𝜎

(2
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
d

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.
iz

Primer 9.29. Nad klauzama


o

¬𝑝(𝑥, 𝑦) ∨ ¬𝑝(𝑧, 𝑦) ∨ 𝑝(𝑥, 𝑧)


i
sk

¬𝑝(𝑏, 𝑎)
se može primeniti pravilo rezolucije, jer su literali 𝑝(𝑥, 𝑧) i 𝑝(𝑏, 𝑎) unifikabilni (uz najopštiji unifikator 𝜎 = [𝑥 ↦→
n

𝑏, 𝑧 ↦→ 𝑎]). Rezolventa ove dve klauze je klauza


ro

¬𝑝(𝑏, 𝑦) ∨ ¬𝑝(𝑎, 𝑦).


Ako se pravilo rezolucije primenjuje dalje, onda u dobijenoj klauzi sve promenljive treba da budu preimeno-
kt

vane (treba da dobiju imena koja do tada nisu korišćena):


¬𝑝(𝑏, 𝑦 ′ ) ∨ ¬𝑝(𝑎, 𝑦 ′ ).
le

Metod rezolucije za logiku prvog reda ima isti opšti oblik kao metod rezolucije za iskaznu logiku (slika 9.4).
E

Primer 9.30. Dokazati da je formula 𝑝(𝑎) ⇒ (∃𝑥)𝑝(𝑥) valjana. Negacija date formule je logički ekvivavalentna
formuli 𝑝(𝑎) ∧ (∀𝑥)¬𝑝(𝑥). Metod rezolucije primenjujemo 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 9.31. 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.
9.7. Metod rezolucije 126

Primer 9.32. 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:

6)
(∀𝑥)(∀𝑢)(∀𝑣)(∀𝑧)(𝑝(𝑥, 𝑔(𝑥)) ∧ (¬𝑝(𝑢, 𝑣) ∨ 𝑞(𝑢, 𝑣)) ∧ ¬𝑞(𝑐, 𝑧)) ,

01
pri čemu je 𝑐 nova Skolemova konstanta, a 𝑔 nova Skolemova funkcija. Konjunktivna normalna forma formule

(2
𝑝(𝑥, 𝑔(𝑥)) ∧ (¬𝑝(𝑢, 𝑣) ∨ 𝑞(𝑢, 𝑣)) ∧ ¬𝑞(𝑐, 𝑧)

je
je
𝑝(𝑥, 𝑔(𝑥)) ∧ (¬𝑝(𝑢, 𝑣) ∨ 𝑞(𝑢, 𝑣)) ∧ ¬𝑞(𝑐, 𝑧) .
an
Elementi početnog skupa klauza su:
𝐶1 : 𝑝(𝑥, 𝑔(𝑥)) (prvi deo hipoteze)
𝐶2 : ¬𝑝(𝑢, 𝑣), 𝑞(𝑢, 𝑣) (drugi deo hipoteze)
d

𝐶3 : ¬𝑞(𝑐, 𝑧) (zaključak)
iz

Prazna klauza se izvodi na sledeći način.


𝐶4 : 𝑞(𝑥′ , 𝑔(𝑥′ )) (𝐶1 , 1; 𝐶2 , 1), [𝑣 ↦→ 𝑔(𝑥), 𝑢 ↦→ 𝑥];
preimenovanje: [𝑥 ↦→ 𝑥′ ]
o

𝐶5 :  (𝐶3 , 1; 𝐶4 , 1), [𝑥′ ↦→ 𝑐, 𝑧 ↦→ 𝑔(𝑐)]


sk

Primer 9.33. Dokažimo da je formula


n
ro

∀𝑥, 𝑦, 𝑧(𝑎(𝑦, 𝑥) ∧ 𝑏(𝑧, 𝑥) ⇒ 𝑎(𝑦, 𝑧)

logička posledica skupa formula {∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇒ ¬𝑎(𝑦, 𝑥)), ∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇔ 𝑏(𝑦, 𝑥)), ∀𝑥, 𝑦, 𝑧(𝑎(𝑥, 𝑦) ∧ 𝑎(𝑦, 𝑧) ⇒
kt

𝑎(𝑥, 𝑧))} (videti primere 9.1 i 9.15). Dovoljno je dokazati da je formula


(∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇒ ¬𝑎(𝑦, 𝑥)))∧
le

(∀𝑥, 𝑦(𝑎(𝑥, 𝑦) ⇔ 𝑏(𝑦, 𝑥)))∧


E

(∀𝑥, 𝑦, 𝑧(𝑎(𝑥, 𝑦) ∧ 𝑎(𝑦, 𝑧) ⇒ 𝑎(𝑥, 𝑧)))



∀𝑥, 𝑦, 𝑧(𝑎(𝑦, 𝑥) ∧ 𝑏(𝑧, 𝑥) ⇒ 𝑎(𝑦, 𝑧))
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), []
127 9. Logika prvog reda

Primer 9.34. 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) [𝑥 ↦→ 𝑏]

6)
Da bi se pokazalo da je neka formula nezadovoljiva, dovoljno je, primenom metoda rezolucije, iz njenog skupa
klauza izvesti praznu klauzu. Dodatno, metod rezolucije ima svojstvo da iz zadovoljivog skupa klauza ne može

01
da izvede nezadovoljiv skup klauza. Ova dva svojstva obezbeduju potpunost i saglasnost. Metod rezolucije,
dakle, ima sledeće karakteristike:

(2
ˆ 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
an
ˆ metod rezolucije nije potpun, ali je potpun za pobijanje: iz svakog nezadovoljivog skupa klauza moguće
je izvesti praznu klauzu;
d

Logika prvog reda nije odlučiva, pa najviše što može metod rezolucije da bude je procedura poluodlučivanja
iz

(za problem ispitivanja valjanosti) i o tome govori naredna teorema.

Teorema 9.11 (Potpunost (za pobijanje) metoda rezolucije). Ako je Γ nezadovoljiv skup klauza, onda se
o

iz njega metodom rezolucije može izvesti prazna klauza.


sk

Primetimo da u opisu metoda rezolucije nije specifikovan način na koji se biraju klauze nad kojim se pri-
n

menjuje pravilo rezolucije. Takode, teorema o potpunosti za pobijanje (teorema 9.11) tvrdi da se iz svakog
ro

nezadovoljivog skupa klauza može izvesti prazna klauza, a ne tvrdi da se iz svakog nezadovoljivog skupa klauza
mora izvesti prazna klauza bez obzira na izbor klauza za rezolviranje. Naime, u zavisnosti od izbora klauza
kt

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
metoda rezolucije.
le

Jedna od mogućnosti za obezbedivanje potpunosti metoda rezolucije u strožijem smislu (da postoji strategija
E

za upravljanje metoda rezolucije takva da se iz svakog nezadovoljivog skupa klauza nužno izvodi prazna klauza
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 9.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
9.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. 
9.7. Metod rezolucije 128

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, 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.

6)
01
Pitanja i zadaci

(2
Pitanje 9.48. Šta je rezolventa klauza Γ′ ∨ 𝒜′ i Γ′′ ∨ ¬𝒜′′ je (𝜎 je najopštiji unifikator za 𝒜′ i 𝒜′′ )?
Pitanje 9.49. Navesti pravilo rezolucije za logiku prvog reda. je
an
Pitanje 9.50. Da bi se primenio metod rezolucije u kakvoj formi formula čija se nezadovoljivost ispituje mora
da bude?
d

Pitanje 9.51. Navesti teoremu o potpunosti metode rezolucije za iskaznu i predikatsku logiku.
iz

Pitanje 9.52. Koje korake je potrebno primeniti da bi se metodom rezolucije ispitalo da li je formula logike
prvog reda 𝒜 valjana?
o

Pitanje 9.53. Da li se metodom rezolucije za svaku formulu logike prvog reda koja je valjana može dokazati
sk

da je valjana?
Pitanje 9.54. Da li se metodom rezolucije za svaku formulu logike prvog reda koja nije valjana može dokazati
n

da nije valjana?
ro

Pitanje 9.55. Koji su mogući ishodi primene metoda rezolucije za iskaznu logiku, a koji za logiku prvog reda?
kt

Pitanje 9.56. Da li se metod rezolucije za iskaznu logiku uvek zaustavlja?


le

Pitanje 9.57. U iskaznoj logici, da li će kako god se primenjivalo pravilo rezolucije u konačnom broju koraka
biće izvedena prazna klauza?
E

ˆ ako je početni skup klauza zadovoljiv?


ˆ ako je početni skup klauza nezadovoljiv?
Pitanje 9.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 9.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 9.60. Za koje klauze linearno-ulazna rezolucija ima svojstvo potpunosti?
Pitanje 9.61. Šta su to Hornove klauze i gde se koriste?
129 9. Logika prvog reda

Zadatak 9.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 9.23. Dokazati metodom rezolucije za iskaznu logiku da su naredne formule tautologije:
(a) 𝑞 ⇒ (𝑝 ⇒ 𝑞)

6)
(b) ((𝑝 ⇒ 𝑞) ∧ (𝑞 ⇒ 𝑟)) ⇒ (𝑝 ⇒ 𝑟)
(c) ((𝑝 ⇒ 𝑞) ∧ (𝑝 ⇒ 𝑟)) ⇒ (𝑝 ⇒ (𝑞 ∧ 𝑟))

01
(d) (((𝑝 ⇒ 𝑟) ∧ (𝑞 ⇒ 𝑟)) ∧ (𝑝 ∨ 𝑞)) ⇒ 𝑟
(e) ¬(𝑝 ∧ 𝑞) ⇒ (¬𝑝 ∨ ¬𝑞)

(2
(f ) ¬(𝑝 ∨ 𝑞) ⇒ (¬𝑝 ∧ ¬𝑞)
(g) (¬𝑝 ∨ ¬𝑞) ⇒ ¬(𝑝 ∧ 𝑞)
(h) (𝑝 ∨ (𝑞 ∧ 𝑟)) ⇒ ((𝑝 ∨ 𝑞) ∧ (𝑝 ∨ 𝑟))
je
Zadatak 9.24. Koristeći metod rezolucije za logiku prvog reda dokazati da važi:
an
(∀𝑥)(𝑝(𝑥) ⇒ 𝑞(𝑥)), 𝑝(𝑐) |= 𝑞(𝑐) .
d

Zadatak 9.25. Metodom rezolucije za logiku prvog reda dokazati da je naredna formula valjana:
iz

(∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦) .
o

Zadatak 9.26. Metodom rezolucije za logiku prvog reda dokazati da je naredna formula valjana:
sk

(a) (∀𝑦)((∀𝑥)𝑝(𝑥) ⇒ 𝑝(𝑦))


(b) (∀𝑥)𝑝(𝑥) ⇒ (∃𝑥)𝑝(𝑥)
n

(c) ¬(∃𝑦)𝑝(𝑦) ⇒ (∀𝑦)((∃𝑥)𝑝(𝑥) ⇒ 𝑝(𝑦))


ro

(d) (∃𝑥)𝑝(𝑥) ⇒ (∃𝑦)𝑝(𝑦)


(e) (∀𝑥)(𝑝(𝑥) ∧ 𝑞(𝑥)) ⇔ (∀𝑥)𝑝(𝑥) ∧ (∀𝑥)𝑞(𝑥)
(f ) (∀𝑥)𝑝(𝑥) ∨ (∀𝑥)𝑞(𝑥) ⇒ (∀𝑥)(𝑝(𝑥) ∨ 𝑞(𝑥))
kt

(g) (∃𝑥)(𝑝(𝑥) ∨ 𝑞(𝑥)) ⇔ (∃𝑥)𝑝(𝑥) ∨ (∃𝑥)𝑞(𝑥)


(h) (∃𝑥)(𝑝(𝑥) ∧ 𝑞(𝑥)) ⇒ (∃𝑥)𝑝(𝑥) ∧ (∃𝑥)𝑞(𝑥)
le

Zadatak 9.27. Metodom rezolucije za logiku prvog reda dokazati da je formula (𝐻 ∧ 𝐾) ⇒ 𝐿 valjana, gde je
E

𝐻 = (∀𝑥)(∀𝑦)(𝑝(𝑥, 𝑦) ⇒ 𝑝(𝑦, 𝑥))


𝐾 = (∀𝑥)(∀𝑦)(∀𝑧)((𝑝(𝑥, 𝑦) ∧ 𝑝(𝑦, 𝑧)) ⇒ 𝑝(𝑥, 𝑧))
𝐿 = (∀𝑥)(∀𝑦)(𝑝(𝑥, 𝑦) ⇒ 𝑝(𝑥, 𝑥)).

Zadatak 9.28. Metodom rezolucije za logiku prvog reda dokazati da je formula (∀𝑥)𝑠(𝑥) logička posledica
skupa formula {∀𝑥(𝑝(𝑥) ⇒ 𝑞(𝑥)), ∀𝑥(𝑞(𝑥) ⇒ 𝑠(𝑥)), ∀𝑥(𝑟(𝑥) ⇒ 𝑠(𝑥)), ∀𝑥(𝑝(𝑥) ∨ 𝑟(𝑥))}.

Zadatak 9.29. Metodom rezolucije za logiku prvog reda dokazati da je formula ∀𝑥∀𝑦 (𝑥 = 𝑦 ⇒ 𝑦 = 𝑥) logička
posledica formula ∀𝑥 (𝑥 = 𝑥) i ∀𝑢∀𝑣∀𝑤 (𝑢 = 𝑣 ∧ 𝑤 = 𝑣 ⇒ 𝑢 = 𝑤).

Zadatak 9.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.)
9.8. Prirodna dedukcija 130


Zadatak 9.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 9.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.

9.8 Prirodna dedukcija

6)
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

01
i saglasnosti: ako je neka formula valjana, onda ona može biti dokazana u okviru deduktivnog sistema, a ako
za neku formulu postoji dokaz u okviru deduktivnog sistema, onda je ona sigurno valjana.

(2
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
d

kraći zapis za (𝒜 ⇒ ℬ) ∧ (ℬ ⇒ 𝒜), a formula ⊤ kraći zapis za 𝒜 ⇒ 𝒜. Skup formula definiše se na uobičajeni
način.
iz

Pravila izvodenja sistema prirodne dedukcije data su na slici 9.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
o

𝑒𝑓 𝑞 (Ex falso quodlibet) je jedino pravilo koje ne uvodi niti eliminiše neki logički veznik. Skup pravila sistema
sk

prirodne dedukcije za iskaznu logiku čine sva pravila sa slike 9.5 izuzev onih koja uključuju kvantifikatore.
U pravilima izvodenja prikazanim u tabeli 9.5 simbol 𝑡 označava proizvoljan term. Simbol 𝑦 označava
n

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
ro

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
kt

neoslobodenoj pretpostavci u izvodenju formule ℬ osim, eventualno, u formuli 𝒜[𝑥 ↦→ 𝑦].


Postoji sistem prirodne dedukcije za klasičnu logiku (koji zovemo sistem NK) i sistem prirodne dedukcije za
le

intuicionističku logiku (koji zovemo sistem NJ). U sistemu prirodne dedukcije za klasičnu logiku postoji jedna
aksiomska shema: 𝒜 ∨ ¬𝒜 (tertium non datur). Sistem za intuicionističku logiku nema aksioma.
E

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 9.6).
Naredni primeri ilustruju primenu prirodne dedukcije za dokazivanje u iskaznoj logici.
131 9. Logika prvog reda

[𝒜]𝑢
..
..
⊥ ¬𝐼, 𝑢 𝒜 ¬𝒜
¬𝐸
¬𝒜 ⊥

𝒜 ℬ 𝒜∧ℬ 𝒜∧ℬ
∧𝐼 ∧𝐸 ∧𝐸
𝒜∧ℬ 𝒜 ℬ

[𝒜]𝑢 [ℬ]𝑣
.. ..
.. ..
𝒜 ℬ 𝒜∨ℬ 𝐶 𝐶 ∨𝐸, 𝑢, 𝑣
∨𝐼 ∨𝐼
𝒜∨ℬ 𝒜∨ℬ 𝐶

[𝒜]𝑢
..
..
ℬ 𝒜 𝒜⇒ℬ

6)
⇒ 𝐼, 𝑢 ⇒𝐸
𝒜⇒ℬ ℬ

01
𝒜[𝑥 ↦→ 𝑦] (∀𝑥)𝒜
∀𝐼 ∀𝐸
(∀𝑥)𝒜 𝒜[𝑥 ↦→ 𝑡]

(2
uz dodatni uslov

[𝒜[𝑥 ↦→ 𝑦]]𝑢
..

𝒜[𝑥 ↦→ 𝑡]
je
(∃𝑥)𝒜 ℬ
..
an
∃𝐼 ∃𝐸, 𝑢
(∃𝑥)𝒜 ℬ
uz dodatni uslov
d

⊥ 𝑒𝑓 𝑞
iz

𝐷
o

Slika 9.5: Pravila izvodenja sistema prirodne dedukcije


sk

.. ..
. .
n

𝐴 𝐵 .. ..
.. ..
ro

𝐴 𝐵
𝐶 𝐶
kt

𝐷
.
..
.
le

𝐷
..
.
E

Slika 9.6: Deo dokaza i njegov pojednostavljeni prikaz

Primer 9.35. Formula (𝐴 ∨ 𝐵) ⇒ (𝐵 ∨ 𝐴) je teorema sistema prirodne dedukcije, tj. važi ⊢ (𝐴 ∨ 𝐵) ⇒ (𝐵 ∨ 𝐴):
[𝐴]2 [𝐵]3
1 ∨𝐼 ∨𝐼
[𝐴 ∨ 𝐵] 𝐵 ∨ 𝐴 𝐵∨𝐴
∨𝐸, 2, 3
𝐵∨𝐴 ⇒ 𝐼, 1
(𝐴 ∨ 𝐵) ⇒ (𝐵 ∨ 𝐴)

Primer 9.36. U sistemu prirodne dedukcije važi: 𝐴 ⇒ 𝐵, 𝐵 ⇒ 𝐶 ⊢ 𝐴 ⇒ 𝐶 :


[𝐴]1 𝐴⇒𝐵
⇒𝐸
𝐵 𝐵⇒𝐶
⇒𝐸
𝐶 ⇒ 𝐼, 1
𝐴⇒𝐶
9.8. Prirodna dedukcija 132

Primer 9.37. 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 ⊢ 𝐴 ⇒ (𝐴 ∨ 𝐵) ∧
(𝐴 ∨ 𝐶)).

6)
Naredni primeri ilustruju primenu prirodne dedukcije za dokazivanje u logici prvog reda.
Primer 9.38. Formula (∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦) je teorema sistema prirodne dedukcije (i za klasičnu

01
i za intuicionističku logiku). Neki matematičar bi ovu formulu (neformalno) dokazao na sledeći način:

(2
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 (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦).
d

6. Iz (∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) i iz toga što pretpostavka (∀𝑦)𝑝(𝑥′ , 𝑦) ima za posledicu (∀𝑦)(∃𝑥) 𝑝(𝑥, 𝑦), sledi (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦).
iz

7. Iz pretpostavke (∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) sledi (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦), pa važi (∃𝑥)(∀𝑦) 𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦).
o

Ovaj dokaz može se precizno opisati u vidu dokaza u sistemu prirodne dedukcije (i za klasičnu i za intuicio-
sk

nističku logiku):
1
[(∀𝑦)𝑝(𝑥′ , 𝑦)]
∀𝐸
n

𝑝(𝑥′ , 𝑦 ′ )
∃𝐼
ro

(∃𝑥)𝑝(𝑥, 𝑦 ′ )
2 ∀𝐼
[(∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦)] (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦)
∃𝐸, 1
kt

(∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦)
⇒ 𝐼, 2
(∃𝑥)(∀𝑦)𝑝(𝑥, 𝑦) ⇒ (∀𝑦)(∃𝑥)𝑝(𝑥, 𝑦)
le

Primer 9.39. Formula ¬(∃𝑥)𝑝(𝑥) ⇒ (∀𝑦)¬𝑝(𝑦) je teorema sistema prirodne dedukcije (i za klasičnu i za
intuicionističku logiku):
E

[𝑝(𝑧)]1
∃𝐼
(∃𝑥)𝑝(𝑥) [¬(∃𝑥)𝑝(𝑥)]2
¬𝐸
⊥ ¬𝐼, 1
¬𝑝(𝑧)
∀𝐼
(∀𝑦)¬𝑝(𝑦)
⇒ 𝐼, 2
¬(∃𝑥)𝑝(𝑥) ⇒ (∀𝑦)¬𝑝(𝑦)
Primer 9.40. 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).
133 9. Logika prvog reda

Teorema 9.13. Formula je teorema sistema prirodne dedukcije za klasičnu logiku ako i samo ako je valjana.

Pitanja i zadaci
Pitanje 9.62. Navesti bar tri pravila sistema prirodne dedukcije.
Pitanje 9.63. Koliko u sistemu prirodne dedukcije ima pravila koja uvode veznik ∧?
Pitanje 9.64. Koliko u sistemu prirodne dedukcije ima pravila koja eliminišu veznik ∧?
Pitanje 9.65. Kako glasi pravilo prirodne dedukcije koje elimiše negaciju?
Pitanje 9.66. Kako glasi pravilo eliminasanja implikacije u sistemu prirodne dedukcije?
Pitanje 9.67. Kako glasi pravilo za eliminisanje univerzalnog kvantora u sistemu prirodne dedukcije?

6)
Pitanje 9.68. Navesti bar jedno pravilo prirodne dedukcije koje se koristi u logici prvog reda (a ne i u iskaznoj
logici).

01
Pitanje 9.69. Šta razlikuje sistem prirodne dedukcije za klasičnu i intuicionističku logiku?
Pitanje 9.70. U dokazima prirodnom dedukcijom, šta znači oznaka [𝒜]?

(2
Pitanje 9.71. U sistemu prirodne dedukcije dokazati da važi 𝒜 ∨ ℬ ⊢ ℬ ∨ 𝒜.

je
Pitanje 9.72. U sistemu prirodne dedukcije dokazati da važi 𝒜, ℬ ∧ 𝒞 ⊢ 𝒜 ∧ ℬ.
an
Pitanje 9.73. U sistemu prirodne dedukcije dokazati da važi 𝒜 ∧ ℬ, 𝒞 ⊢ 𝒜 ∧ 𝒞 .
Pitanje 9.74. Šta povezuje pojam valjane formule i pojam formule dokazive u prirodnoj dedukciji za klasičnu
d

logiku?
iz


Zadatak 9.33. Dokazati da u prirodnoj dedukciji važi 𝐴 ∨ 𝐵, ¬𝐴 ⊢ 𝐵 .

Zadatak 9.34. Dokazati da je formula (𝐴 ⇒ 𝐵) ⇒ (¬𝐵 ⇒ ¬𝐴) teorema sistema prirodne dedukcije za
o

klasičnu logiku.
sk


Zadatak 9.35. Dokazati da je formula (𝐴 ∨ (𝐵 ∧ 𝐶)) ⇒ ((𝐴 ∨ 𝐵) ∧ (𝐴 ∨ 𝐶)) teorema sistema prirodne
dedukcije za klasičnu logiku.
n


ro

Zadatak 9.36. Dokazati da je formula ¬(𝐴 ∧ 𝐵) ⇒ (¬𝐴 ∨ ¬𝐵) teorema sistema prirodne dedukcije za
klasičnu logiku.
kt

9.9 Rešavanje problema svodenjem na problem valjanosti


le

9.9.1 FOL dokazivači i TPTP format


E

Programe koji rešavaju instance problema zadovoljivosti 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, Spass.
FOL dokazivača 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
dokazivač treba da dokaže. U slučaju primera 9.33, 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)))).

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.
9.9. Rešavanje problema svodenjem na problem valjanosti 134

Pitanja i zadaci
Zadatak 9.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 9.38. Zapisati sledeću rečenicu 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 je dokazati metodom rezolucije.

Zadatak 9.39. Dokazati metodom rezolucije da je sledeća formula VALJANA: (∀𝑥)(𝑝(𝑥) ⇒ 𝑞(𝑥)) ⇒ (∀𝑥)(𝑝(𝑥) ⇒
(𝑞(𝑥) ∧ 𝑝(𝑥)))

Zadatak 9.40. Zapisati konjunkciju sledećih rečenica kao formulu logike prvog reda i dokazati da je ona
nezadovoljiva:

ˆ 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

6)
ˆ ne postoji neko ko je povredio osobu koju voli i

01
ˆ osoba Y je povredila svog prijatelja X.

(2
Zadatak 9.41. Zapisati u logici prvog reda rečenicu: Ako “šta leti to ima krila i lagano je” i “šta pliva, to
nema krila”, onda “šta pliva, to ne leti”. Potom dokazati ovu rečenicu metodom rezolucije.

Zadatak 9.42. Na jeziku logike prvog reda zapisati i dokazati metodom rezolucije da je sledeća rečenica
je
valjana: "Ako postoji cipela koja u svakom trenutku odgovara svakoj nozi, onda za svaku nogu postoji cipela
an
koja joj u nekom trenutku odgovara i za svaku nogu postoji trenutak takav da postoji cipela koja joj u tom
trenutku odgovara".
d

Zadatak 9.43. U logici prvog reda


iz

1. zapisati rečenicu “svaka dva čoveka se vole ili ne vole” i

2. dokazati da je dobijena formula valjana.


o
sk

Zadatak 9.44. U logici prvog reda pokazati da je rečenica “ko rano rani, ceo dan je pospan” logička posledica
rečenica “ko rano rani ceo dan je pospan ili dve sreće grabi” i “ko dve sreće grabi, ceo dan je pospan”.
n

Zadatak 9.45. Metodom rezolucije pokazati da iz tvrdnji dve nemimoilazne prave se seku ili su paralelne",
ro

"prave koje se seku leze u istoj ravni"i "prave koje su paralelne leze u istoj ravnišledi tvrdnja dve nemimoilazne
prave leže u istoj ravni".
kt

Zadatak 9.46. Metodom rezolucije dokazati da je recenica "Janko ruča kod kuće ili pere sudove u resto-
ranu"logička posledica rečenica Švako ruča kod kuće ili u restoranu", "ko ruča u restoranu i nema novca, taj
le

pere sudove u restoranu"i "Janko nema novca".


E

Zadatak 9.47. U sistemu prirodne dedukcije dokazati 𝐴 ⇒ 𝐶, 𝐵 ⇒ 𝐶 ⊢ (𝐴 ∨ 𝐵) ⇒ 𝐶 .


Zadatak 9.48. 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 9.49. Zapisati sledeće rečenice u logici prvog reda:


Švako zadovoljstvo se plaća."
Švaki posao se plaća."
"Neki posao je zadovoljstvo."
"Nijedno zadovoljstvo nije posao."
135 9. Logika prvog reda

Zadatak 9.50. Metodom rezolucije pokazati da je rečenica Švako dete voli da se igra."logička posledica rečenica
Švaki dečak voli da se igra", Švaka devojčica voli da se igra.Dete je dečak ii je devojčica."
Zadatak 9.51. 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.
ˆ Janko se vozi avionom.
ˆ Janko ne radi puno.
Zadatak 9.52. Metodom rezolucije dokazati da je recenica "Pera voli da plese"logička posledica rečenica Švako
ko je srećan voli da peva", Švako ko voli da peva, voli da pleše"i "Pera je srećan".
Zadatak 9.53.

6)
Zadatak 9.54. Pokazati da ako važe sledeće rečenice švako ima rodaka na moru ili u na planini", "ko ima

01
rodaka na moru, bio je na moru"i "ko ima rodaka na planini, bio je na plnini"ne može važiti rečenica "neko
nije bio ni na moru ni na planini".

(2
Zadatak 9.55. Na jeziku logike prvog reda zapisati sledeće rečenice i rezolucijom dokazati da su skupa neza-
dovoljive:
ˆ Svaka dva brata imaju zajednickog roditelja. je
an
ˆ Roditelj je stariji od deteta.
ˆ Postoje braća.
d

ˆ Ni jedna osoba nije starija od druge.


iz
o
sk
n
ro
kt
le
E
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 10

PROLOG

U logičkom programiranju, logika se koristi kao deklaritivni jezik za opisivanje problema, a dokazivač teo-

6)
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.

01
Jezik PROLOG najznačajniji je predstavnik jezika deskriptivnog i logičkog programiranja. Veoma je po-
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

(2
jednostavno implementiraju. Ime PROLOG-a dolazi od engleskih reči PROgramming in LOGic. Mehanizam
izvodenja zaključaka u PROLOG-a 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
d

efikasnog kompilatora Davida Warrena, u Edinburgu 1977. godine. Ta verzija jezika, Edinburški PROLOG,
iz

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.
PROLOG sistemi obično sadrže interaktivni interpretator (sa debagerom). Pored toga, neki sistemi omogućavaju
o

i kompiliranje kôda (na mašinski jezik ili na neki drugi jezik niskog nivoa) koje daje izvršne verzije koje mogu
sk

samostalno da se izvršavaju. Izvršni kôd često je veoma efikasan i uporediv sa izvršnim kôdom dobijenim od
programa na nekom proceduralnom jeziku.
n

Komunikacija sa PROLOG interpretatorom odvija se kroz komandni prozor. Prompt interpretatora obično
izgleda ovako:
ro

?-
kt

Većina PROLOG sistema sadrži uputstva o korišćenju jezika a i samog interpretatora. Ovo uputstvo se
obično može dobiti sa ?- help(help). Komanda halt prekida izvršavanje interpretatora (ili kompiliranog
le

programa) i vraća kontrolu operativnom sistemu. Neki od najpopularnijih PROLOG interpretatora su Quintus,
E

Sixtus, SWI PROLOG itd.

10.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 (polinomijalan) 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 

Svaki nezadovoljiv skup Hornovih klauza mora da sadrži bar jednu činjenicu i bar jednu ciljnu klauzu.

137
10.1. Metod rezolucije i PROLOG 138

prolog konvencija je da se konstante zapisuju malim početnim slovom, a promenljive velikim početnim
slovom.

Primer 10.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.
Pretpostavimo da je zadato i pravilo (recimo, sa ?- assert(mortal(X) :- man(X)).):

6)
mortal(X) :- man(X).

01
U ovom pravilu, predikat mortal(X) je glava pravila a (jednočlani) niz predikata man(X) je rep pravila. Upit:
?- mortal(sokrat).

(2
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 ¬
je
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) valjana
an
formula.
Ako se zada upit:
d

? - mortal(X).
iz

onda se metodom rezolucije pokušava dokazivanje nezadovoljivosti skupa klauza:


man(sokrat)
o

¬ man(X) ∨ mortal(X)
sk

¬ mortal(Y)
Primetimo da je u trećoj klauzi promenljiva preimenovana u Y, da ne bi došlo do preklapanja imena u dve
n

klauze. Ciljna (treća) klauza može da se rezolvira sa drugom klauzom, korišćenjem unifikatora [ Y ↦→ X ] dajući
novi cilj
ro

¬ man(X)
Rezolviranjem ove klauze sa prvom klauzom iz početnog skupa, korišćenjem unifikatora [ X ↦→ sokrat ] dobija
kt

se prazna klauza, pa je dokazana nezadovoljivost datog skupa klauza i prolog vraća rezultat:
Yes
le
E

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
? - 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.
139 10. PROLOG

man(sokrat).

mortal(A) :-
man(A).

Primer 10.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.
zensko(reja).
zensko(demetra).
zensko(leto).
zensko(artemida).
zensko(amfitrita).

musko(kron).
musko(zevs).

6)
musko(posejdon).
musko(apolon).

01
musko(triton).
musko(jasion).
musko(pluto).

(2
roditelj(kron,zevs).
roditelj(reja,zevs).
roditelj(kron,posejdon).
roditelj(reja,posejdon).
je
an
roditelj(kron,demetra).
roditelj(reja,demetra).
d

roditelj(zevs,apolon).
roditelj(leto,apolon).
iz

roditelj(zevs,artemida).
roditelj(leto,artemida).
o

roditelj(posejdon,triton).
sk

roditelj(amfitrita,triton).
roditelj(demetra,pluto).
roditelj(jasion,pluto).
n
ro

predak(X,Y) :- roditelj(X,Y).
predak(X,Y) :- roditelj(X,Z), predak(Z,Y).
kt

majka(X,Y) :- zensko(X), roditelj(X,Y).


le

otac(X,Y) :- musko(X), roditelj(X,Y).


brat(X,Y) :- musko(X), roditelj(Z,X), roditelj(Z,Y), X\==Y.
E

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
vrednost netačno. U natavku navodimo nekoliko primera upita i rezultata koje sistem daje.
10.2. Sintaksa i semantika u PROLOG-U 140

?- stric(posejdon,apolon).

Yes

?- ujak(X,Y).

X = zevs,
Y = pluto
X = zevs,
Y = pluto
X = posejdon,
Y = pluto
X = posejdon,
Y = pluto

?- sestraodstrica(X,Y).

6)
X=artemida,

01
Y=triton
X=artemida,

(2
Y=triton

U navedenim primerima, mogu se primetiti ponavljanja istih rešenja. U slučaju upita ujak(X,Y), razlog za
je
to je što zadovoljavanje ovog cilja, zavisi od zadovoljavanja podcilja brat(X,Z), koji zavisi od zadovoljavanja
podciljeva roditelj(W,X) i roditelj(W,Z). U slučaju da važi X=zevs, Y=pluto i Z=demetra, onda postoje
an
dve mogucnosti za W, što su kron i reja. Kako sistem dva puta nalazi način da zadovolji sve potciljeve u
kojima figurišu dodele vrednosti X=zevs i Y=pluto, dva puta navodi tu kombinaciju kao rešenje. Slučak upita
sestraodstrica(X,Y) je analogan.
d
iz

Pitanja i zadaci
Pitanje 10.1. Na kom metodu je zasnovan mehanizam izvodenja zaključaka u PROLOG-u?
o
sk

Pitanje 10.2. Kakve klauze logike prvog reda odgovaraju PROLOG činjenicama, pravilima i upitima?
Pitanje 10.3. Koliko literala bez negacije se moze javiti u kluzama koje se koriste u PROLOG-u?
n
ro

Pitanje 10.4. Koja klauza prvog reda odgovara PROLOG pravilu


p(x1,x2,...,xn) :- q(y1,y2,...,ym),...,r(z1,z2,...,zk) ?
kt

Pitanje 10.5. Da li se algoritam mergesort može implementirati u PROLOGU? Da li se algoritam quicksort


može implementirati u PROLOGU?
le
E

10.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, npr. -123, 3.14) ili
atomi. Atom je:

– niz slova, cifara i simbola _ koji počinje malim slovom (npr. sokrat).
– slovna niska u jednostrukim znacima navoda (npr. ’sokrat’).
– niz specijalnih simbola (npr. :-).
141 10. PROLOG

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
PROLOG termovi. Baza znanja, koju PROLOG održava, sastoji se od činjenica i pravila. Činjenice su predikati
oblika:
p(x1,x2,...,xn)

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.
Pravila u bazi znanja su oblika:

p(x1,x2,...,xn) :- q(y1,y2,...,ym),...,r(z1,z2,...,zk)

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

6)
the rule). Navedeno pravilo interpretira se kao implicitno univerzalno kvantifikovana implikacija:
q(y1,y2,...,ym)∧ . . . ∧ r(z1,z2,...,zk) ⇒ p(x1,x2,...,xn)

01
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.
Upiti ili ciljevi (eng. goals) su oblika

(2
q(y1,y2,...,ym),...,r(z1,z2,...,zk)

je
Postaviti cilj znači tražiti proveru da li je zadati skup atomičkih formula za neku valuaciju promenljivih
an
koje sadrži tačan (tj. ima semanič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.
d

Na primer, ukoliko baza znanja sadrži činjenicu man(sokrat), i pravilo mortal(X) :- man(X), onda cilj
iz

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
o

zadati cilj se mora završavati tačkom.


sk

Č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
n

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
ro

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.
kt

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
le

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
E

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.

10.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 10.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).
10.3. Stablo izvodenja 142

p(a). /* C1 */
p(X) :- q(X), r(X). /* C2 */
p(X) :- u(X). /* C3 */

q(X) :- s(X). /* C4 */

r(a). /* C5 */
r(b). /* C6 */

s(a). /* C7 */
s(b). /* C8 */
s(c). /* C9 */

u(d). /* C10 */

6)
01
p(X)

(2
C1 (X=a) C2 C3
true q(X),r(X) u(X)
X=a

C4
s(X),r(X)
je C10(X=d)
true
an
X=d

C7(X=a) C8(X=b) C9(X=c)


d

r(a) r(b) r(c)


iz

C5 C6 C5 C6 C5 C6
o

true fail fail true fail fail


X=a X=b
sk

Slika 10.1: Primer stabla izvodenja


n
ro

Svaki čvor stabla je u nekom trenutku tekući cilj koji može da čini nekoliko podciljeva. Ukoliko se krajnji
kt

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
le

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
E

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:

?- p(X).

X = a ;

X = a ;

X = b ;

X = d ;

No
143 10. PROLOG

Pitanja i zadaci
Pitanje 10.6. Da li se u PROLOG-u stablo izvodenja obilazi u dubinu ili u širinu?
Pitanje 10.7. U Prologu svakom listu stabla pretrage odgovara ili unifikacija koja daje jedno rešenje ili
Pitanje 10.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 10.9. U PROLOG bazi postoji skup činjenica:
p(a).
p(b).

q(a).
q(b).
q(c).

6)
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).

01
10.4 Operator sečenja

(2
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 unzad do tačke stabla izvodenja
(uključujući i nju) gde se nalazi operator. je
Za program naveden u poglavlju 10.3, za cilj p(X),!. dobija se samo jedan odgovor (a odgovarajuće stablo
an
izvodenja je prikazano na slici 10.2 — sivom bojom označeni su čvorovi koji se ne obilaze):
d

?- p(X),!.
iz

X = a ;
o

No
sk

p(X)
n
ro

C1 (X=a) C2 C3
true q(X),r(X) u(X)
X=a
kt

C4 C10(X=d)
le

s(X),r(X) true
X=d
E

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 10.2: Primer rada operatora sečenja

Za isti program, upit r(X),s(Y) daje odgovore (stablo izvodenja je prikazano na slici 10.3):

?- r(X),s(Y).

X = a
Y = a ;
10.4. Operator sečenja 144

X = a
Y = b ;

X = a
Y = c ;

X = b
Y = a ;

X = b
Y = b ;

X = b
Y = c ;

No

6)
01
r(X),s(Y)

(2
C5(X=a) C5(X=b)
s(Y) s(Y)

je
an
C7(Y=a) C7(Y=b) C7(Y=c) C7(Y=a) C7(Y=b) C7(Y=c)
true true true true true true
d

X=a,Y=a X=a,Y=b X=a,Y=c X=b,Y=a X=b,Y=b X=b,Y=c


iz

Slika 10.3: Stablo izvodenja


o

Upit r(X),!,s(Y), zbog operatora sečenja daje samo odgovore (stablo izvodenja je prikazano na slici 10.4):
sk

?- r(X),!,s(Y).
n

X = a
ro

Y = a ;
kt

X = a
Y = b ;
le

X = a
E

Y = c ;

No

Konačno, upit r(X),s(Y),!, zbog operatora sečenja daje samo jedan odgovore (stablo izvodenja je prikazano
na slici 10.5):

?- r(X),s(Y),!.

X = a
Y = a ;

No

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:
145 10. PROLOG

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

Slika 10.4: Stablo izvodenja sa operatorom sečenja

r(X),s(Y),!

6)
01
C5(X=a) C5(X=b)
s(Y) s(Y)

(2
C7(Y=a) C7(Y=b) C7(Y=c) C7(Y=a) C7(Y=b) C7(Y=c)
true true true true trueje 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
an

Slika 10.5: Stablo izvodenja sa operatorom sečenja


d
iz

max(X,Y,Y) :- X =< Y.
max(X,Y,X) :- X>Y.
o
sk

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,
n

ukoliko dode do bektrektinga program će pokušati da zadovolji max(3,4,Y) na neki drugi način, što je u ovom
ro

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
kt

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:
le

max(X,Y,Y) :- X =< Y,!.


E

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 prihvaljiva. 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 popravljanje efikasnosti.
Postoji i druga vrsta operatora sečenje — 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 upotebu ne
postoji dobar razlog. Razmotrimo sledeći primer:

max(X,Y,Y) :- X =< Y,!.


max(X,Y,X).
10.5. Negacija kao neuspeh 146

Ovaj predikat je sličan prethodnom, uz razliku da je u drugoj klauzi izostavljen uslov X>Y. Navedni program
sa opetorom 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).

X = 101
Yes

?- max(3,2,X).

X = 3
Yes

Ipak, situacija nije ista kao sa zelenim operatorom sečenja i značenje predikata max je promenjeno. Na

6)
primer, ukoliko su sva tri argumenta instancirana, cilj može da bude da se zadovolji max(2,3,2). Ovaj upit ne
bi trebalo da uspe, ali u navednoj verziji sa crvenim operatorom sečenja on (neočekivano?) uspeva. Naime, ne

01
uspeva unifikovanje sa prvom klauzom, te se prelazi na drugu. Cilj se uspešno unifikuje sa drugom klauzom i biva
zadovoljen. Ovaj primer pokazuje kako neoprezna upotreba operatora sečenja može da dovede do neočekivanog

(2
ponašanja programa. On je tipičan primer za crveni operator sečenja. Navedena implementacija zapravo ne
definiše maksimum, već neki drugi predikat i ponaša se očekivano (kao maksimum) samo u nekim slučajevima.
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. je
an
Pitanja i zadaci
Pitanje 10.10. Kako se naziva operator sečenja čijim se dodavanjem ne menja skup rešenja, ali se povećava
d

efikasnost izračunavanja?
iz

Pitanje 10.11. U čemu se razlikuju zeleni i crveni operator sečenja u PROLOG-u?


o

Pitanje 10.12. Da li zeleni operator sečenja može da odseca deo stabla pretrage u PROLOG-u?
sk

Da li crveni operator sečenja može da odseca deo stabla pretrage u PROLOG-u?


Pitanje 10.13. Da li operator sečenja u PROLOG-u nužno menja rezultat programa? Da li operator sečenja
n

u PROLOG-u može da promeni rezultat programa?


ro

Pitanje 10.14. Kako treba modifikovati Prolog upit ?- r(X),s(Y). da on pronalazi samo jednu vrednost za
X?
kt
le

10.5 Negacija kao neuspeh


E

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 defiše pojam woman preko pojma man:

man(sokrat).
man(platon).
woman(X):- \+( man(X) ).

Za tako definisan predikat dobija se:


147 10. PROLOG

?- woman(sokrat).

no

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
takva činjenica ne postoji u bazi). Ipak, cilj

?- woman(X).

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
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.
Razmotrimo još jedan primer za ilustraciju razlike izmedu negacije kao neuspeha i klasične logičke negacije:

6)
a(1).

01
a(2).
p(X,Y) :- a(X),a(Y),\+(X=Y).
q(X,Y) :- \+(X=Y),a(X),a(Y).

(2
Od upita p(X,Y) i q(X,Y) bismo očekivali isto ponašanje, medutim dobijamo:

?- p(X,Y). je
an
X=1
Y=2;
d

X=2
iz

Y=1;

No.
o
sk

?- q(X,Y).
n

No.
ro

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
kt

not(X=Y) ne uspeva, pa ni upit q(X,Y).


Generalno, očekivani rezultat (očekivani u smislu klasične logike prvog reda) dobija se samo ako nema
le

slobodnih promenljivih u upitu, tj. ako je argument operatora \+ vezan u trenutku kada je ovaj operator
pozvan.
E

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 10.15. Kako se u PROLOG-u obično definiše operator not?
Pitanje 10.16. Navesti PROLOG cilj koji uspeva ako i samo ako su termovi 𝐴 i 𝐵 unifikabilni ali ih pri tom
ne unifikuje.

10.6 Liste
Liste su jedan od ključnih tipova podataka koji se koriste u logičkom programiranju. Lista je prazna lista ili
element za kojim sledi lista. Liste se rekurzivno definišu, pa se rekurzija prirodno javlja u rešenjima problema
10.6. Liste 148

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]
[a,3,4,jovan,f(x,y)]
[[1,2,3],a,1,[],[x]]

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.

Term 1 Term 2 unifikabilni unifikator


[1,2,3] [5,6,7] ne
[a,b,c] [a,b] ne

6)
[X,1,2] [Y,Y,2] da X=1, Y=1
[a,b,c] [H|T] da H=a, T=[b,c]

01
[a,b,c] [X,Y|T] da X=a, Y=b, T=[c]
[] X da X=[]

(2
[] [] da
[] [H|T] ne
[[]] [H|T] da H=[], T=[]
[a,b,c]
[a,b,c]
[X|[Y|Z]]
[X|[Y|[Z]]]
da
da
je X=a,Y=b,Z=[c]
X=a,Y=b,Z=c
an
[a] [H|T] da H=a,T=[]
[[],[]] [H|T] da H=[],T=[[]]
[a,b|X] [a,b,c] da X=[c]
d

[a,X,Y|T] [a,b,c] da X=b,Y=c, T=[]


iz

[a,b|X] [a,b] da X=[]

Predikat koji odreduje prvi element liste se može definisati na sledeći način:
o
sk

glava([H|_],H).
n

a prva tri elementa na sledeći način:


ro

prvatri([X,Y,Z|_],X,Y,Z).
kt

Rep liste se može odrediti na sledeći način:


rep([_|T],T).
le
E

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
(dok se u drugoj verziji pretraga do kraja liste i kad je traženi elemente već pronaden). Medutim, druga verzija
se može koristiti i za nabrajanje članova liste. Upit clan1([1,2,3],X) daje odgovor:
149 10. PROLOG

?- clan1([1,2,3],X).

X=1;

No.

U slučaju upita clan2([1,2,3],X) dobijamo:

?- clan2([1,2,3],X).

X=1;

X=2;

X=3;

6)
No.

01
Još jedna razlika izmedu ovih predikata se ilustruje sledećim primerima:

?- clan1([1,2,3],X), X>2.

(2
No.

?- clan2([1,2,3],X), X>2. je
an
X=3;
d

No.
iz

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,
o

posle neuspeha cilja X>2, bektrekingom se dolazi do unifikacije promenljive X sa poslednjim elementom liste,
sk

kada i cilj X>2 uspeva.


Dužina liste se može izračunati sledećim predikatom:
n

duzina([],0).
ro

duzina([_|R],M):-duzina(R,M1), M is M1+1.
kt

Predikat brisi_jedno izbacuje jedno pojavljivanje datog elementa iz date liste:

brisi_jedno(X,[X|R],R).
le

brisi_jedno(X,[F|R],[F|S]) :- brisi_jedno(X,R,S).
E

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] ;
L = [a,b,3,c] ;
L = [a,b,c,3] ;
No
10.6. Liste 150

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).

Navedimo definiciju predikata za dopisivanje dve liste jednu na drugu:

append([X|Y],Z,[X|W]) :- append(Y,Z,W).
append([],X,X).

Predikat append moguće je koristiti na nekoliko načina, za izračunavanje različitih argumenta:

?- append([1,2,3],[4,5],[1,2,3,4,5]).
Yes

?- append([1,2,3],[4,5],A).

6)
A = [1,2,3,4,5]

01
?- append([1,2,3],A,[1,2,3,4,5]).
A = [4,5]

(2
?- append(A,[4,5],[1,2,3,4,5]).
A = [1,2,3]

Ilustrujmo primene listi i kroz dva algoritma za sortiranje.


je
an
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.
d

mergesort([],[]).
iz

mergesort([A],[A]).
mergesort([A,B|R],S) :-
split([A,B|R],L1,L2),
o

mergesort(L1,S1),
sk

mergesort(L2,S2),
merge(S1,S2,S).
n
ro

split([],[],[]).
split([A],[A],[]).
split([A,B|R],[A|Ra],[B|Rb]) :- split(R,Ra,Rb).
kt

merge(A,[],A).
le

merge([],B,B).
merge([A|Ra],[B|Rb],[A|M]) :- A =< B, merge(Ra,[B|Rb],M).
E

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.


swap([Z|R], [Z|R1]) :- swap(R, R1).

Druga varijanta uključuje prolog operator implikacije -> (a naravno postoji i varijanta i bez njega):
151 10. PROLOG

bubblesort2(List, Sorted) :-
append(P, [A, B|T], List),
B < A ->
append(P, [B, A|T], R),
bubblesort2(R, Sorted)
; Sorted = List.

Pitanja i zadaci
Pitanje 10.17. Da li su PROLOG termovi [[],[]] i [H|T] unifikabilni i ako jesu - sa kojim unifikatorom:
Pitanje 10.18. Da li su PROLOG termovi [[]] i [H|T] unifikabilni i ako jesu - sa kojim unifikatorom:

10.7 Ugradeni predikati

6)
Logičke konstante

01
Predikat true uvek uspeva kao cilj, predikat false nikad ne uspeva kao cilj.
Provera promenljive

(2
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.
Provera tipa je
an
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.
d

Predikat real(X) proverava da li je X vezana za realan broj.


iz

Predikat string(X) proverava da li je X vezana za karaktersku nisku.


o

Unifikabilnost i jednakost
sk

Upit X = Y proverava da li su X i Y unifikabilni, upit X \= Y proverava da li X i Y nisu unifikabilni,


Upit X == Y proverava da li su X i Y imaju jednake vrednosti upit X \== Y proverava da li X i Y imaju
n

različite vrednosti.
ro

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
kt

izraz čija je vrednost odredena.


le

Aritmetiči operatori
Za brojeve N i M, dozvoljeni su sledeći aritmetički operatori: N > M, N < M, N =< M, N >= M.
E

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.
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.
listing prikazuje sadržaj baze.
10.7. Ugradeni predikati 152

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.
Cilj [F1,F2,...] označava učitavanje datoteke F1, zatim datoteke F2, itd.
U PROLOG programima komentari se pišu izmedu znakova /* i */.
Ulaz i izlaz
seeing(X) uspeva ako je X vezana za tekući ulazni tok (tzv. port). Na primer, seeing(user) uspeva ako
je tekući ulazni tok tastatura.
see(X) otvara kao ulazni port datoteku X. Naredni ulazi za predikat read biće citan sa tog porta.
seen zatvara sve ulazne portove i naredni ulazi za predikat read biće citani sa porta user.
read(X) čita izraz sa tekućeg porta i smešta ga u X.

6)
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.

01
tell(X) otvara kao izlazni port datoteku X. Naredni ulazi predikata write biće slati na taj port.
told zatvara sve izlazne portove i naredni ulazi za predikat biće biće slat na porta user.

(2
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. je
an
Kontrola toka
call(P) poziva predikat P, uspeva ako i samo ako uspeva P.
d

! operator sečenja.
iz

Negacija kao neuspeh


not(Q), \+Q daje efekat negacije kao neuspeha (kao što je objašnjeno u poglavlju 10.5.
o

Obrada PROLOG termova


sk

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.
n

functor(E,F,N) uspeva ako je vrednost E vezana za funkcijski izraz oblika f(...). F će biti vezano za f
ro

a N za broj argumenat u f(...).


arg(N,E,A) uspeva ako je vrednost E vezana za funkcijski izraz oblika f(...) i ako N može biti vezano
kt

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, upit ?- name(’.pl’,L). daje odgovor
le

L = [46,112,108].
E

=.. 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;
fx za prefiksni neasocijativni;
fy za prefiksni desno asocijativni;
xf za postfiksni neasocijativni;
yf za postfiksni levo asocijativni;
153 10. PROLOG

O je ime operatora.
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
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.
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 10.6.

+ +

+ 𝑐 𝑎 +

6)
01
𝑎 𝑏 𝑏 𝑐

(2
Slika 10.6: Dva stabla koja mogu odgovarati izrazu a+b+c

je
Ako posmatramo desno drvo, primećujemo da njegovo desno poddrvo ima operator + u korenu koji nije
an
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
d

jednom poddrvetu javlja operator + istog prioriteta. Ovo se može rešiti pomoću zagrada, pošto je prioritet
iz

izraza u njima 0. Stoga tip xfx nameće korišćenje zagrada, što znači da operator nije asocijativan.
Ugradeni operatori, poredani po prioritetima:
o

:- xfx, fx
sk

?- fx
; xfy
, xfy
n

not fy
ro

is, =.., <, itd. xfx


+, - yfx, fx
kt

*, / yfx
^ xfy
le

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

ć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 10.19. Kako se u PROLOG-u, u interaktivnom radu, dodaje nova činjenica?
Pitanje 10.20. Koji predikat prekida izvršavanje Prolog interpretarora?
Pitanje 10.21. Kojim izrazom se u PROLOG-u promenljiva 𝑋 veže za numeričku vrednost, npr. 5?
Pitanje 10.22. Kako se PROLOG program učitava iz datoteke datoteka?
10.8. Primeri rešavanja problema primenom PROLOG-a 154

Pitanje 10.23. Koji upit u PROLOG-u uspeva ako i samo ako je X neinstancirana promenljiva?

10.8 Primeri rešavanja problema primenom PROLOG-a


PROLOG je veoma pogodan za rešavanje problema veštačke inteligencije. Ilustrovaćemo to kroz nekoliko
primera.

10.8.1 Implementacija KNF algoritma


Kao prvi veci primer PROLOG programa koji ilustruje razne koncepte jezika, navodimo implementaciju
KNF algorima. Kasnije ćemo na to nadovezati implementaciju algoritma DPLL. Radi preglednijeg zapisa, prvo
uvodimo logičke veznike kao nove operatore.

:- op(10,fx,non).

6)
:- op(20,yfy,and).
:- op(30,yfy,or).
:- op(40,xfx,imp).

01
:- op(50,xfx,eq).

(2
Operatori and i or su definisani kao asocijativni (yfy), što dovodi do ispuštanja nepotrebnih zagrada u
zapisu i lakše čitljivosti.
Predikat knf implementira KNF algoritam iz tri koraka. Prvo se eliminišu veznici ekvivalencije i implikacije,
je
zatim se vrši primena de Morganovih zakona uz eliminisanje dvostrukih negacija, a na kraju primena zakona
distributivnosti disjunkcije i konjunkcije.
an

knf(X,Y) :- elim(X,Z),dem(Z,T),dist(T,Y).
d

elim(X eq Y,R) :- elim((X imp Y) and (Y imp X),R).


iz

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).
o

elim(X and Y,X1 and Y1) :- elim(X,X1),elim(Y,Y1).


sk

elim(non X,non X1) :- elim(X,X1).


elim(X,X) :- atom(X).
n

Primetimo da je pri svakom pozivu primenljivo samo jedno pravilo za eliminaciju, tako da PROLOG neće
ro

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.
kt

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).
le

dem(non non X,X1) :- dem(X,X1).


E

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 8.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),!.
dist(X,Y,X or Y).
155 10. PROLOG

Kada mu je argument neka konjunkcija, predikat dist omogućava rekurzivnu primenu na konjunkte, a
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.

10.8.2 Implementacija DPLL algoritma


Posle transformacije formule u konjunktivnu normalnu formu, u cilju primene DPLL algoritma, potrebno ju
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 10.6.
Konverzija se vršti 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.

knf_u_listu_listi(X,[[X]]) :- atom(X).

6)
knf_u_listu_listi(non X, [[non X]]) :- atom(X).
knf_u_listu_listi(X and Y,R) :- knf_u_listu_listi(X,R1),

01
knf_u_listu_listi(Y,R2),
append(R1,R2,R).
knf_u_listu_listi(X or Y,[R]) :- disjunkcija_u_listu(X or Y, R).

(2
disjunkcija_u_listu(X,[X]) :- atom(X).
disjunkcija_u_listu(non X,[non X]).
disjunkcija_u_listu(X or Y,R) :- disjunkcija_u_listu(X,R1), je
an
disjunkcija_u_listu(Y,R2),
append(R1,R2,R).
d

U cilju implementacije DPLL algoritma, prvo su nam potrebni pomoćni predikati koji implementiraju rad
iz

sa listama i listama listi.


Predikat koji proverava da li se lement nalazi u listi je poznat od ranije:
o

sadrzi([X|R],X).
sk

sadrzi([Y|R],X) :- sadrzi(R,X).
n

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.
ro

formula_sadrzi_literal(X,Y) :- sadrzi(X,Z),sadrzi(Z,Y).
kt

Kako se u DPLL algoritmu koriste i zamene literala ili iskaznih slova, koristićemo i sledeći predikat:
le

zameni_u_disj(X,Y,[X|R],[Y|T]) :- zameni_u_disj(X,Y,R,T),!.
E

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_dsij(X,Y,P,Q),
zameni_literal(X,Y,R,T).
zameni_literal(X,Y,[],[]).

Zamena iskaznog slova p u formuli se može 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).

Brisanje svih pojavljivanja elementa liste vršimo na sledeći način:


10.8. Primeri rešavanja problema primenom PROLOG-a 156

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,
vrši zamene ¬⊤ sa ⊥ i ¬⊥ sa ⊤, briše pojavljivanja literala ⊥ koji je u našoj implementaciji predstavljen atomom
f (dok je ⊤ predstavljen atomom t) i proverava da li se prazna klauza nalazi u skupu klauza. Posle toga se
pokusava sa koracima tautology, unit propagation, pure literal i split.

% Provera da li je argument prazna klauza


dpll([]) :- !.

% Zamene literala non t sa f i non f sa t


dpll(X) :- formula_sadrzi_literal(X,non t),!,

6)
zameni_negacije_literala(X,Y),dpll(Y).
dpll(X) :- formula_sadrzi_literal(X,non f),!,
zameni_negacije_literala(X,Y),dpll(Y).

01
% Brisanje literala f

(2
dpll(X) :- formula_sadrzi_literal(X,f),!,brisi_f(X,Y),dpll(Y).

% Ako formula sadrzi praznu klauzu, onda je


% polazna formula nezadovoljiva
dpll(X) :- sadrzi_praznu_klauzu(X),!,fail.
je
an
% Korak tautology
d

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),!,
iz

brisi_sve(Y,X,Z),dpll(Z).
o

% Korak unit propagation


dpll(X) :- sadrzi(X,[Y]),atom(Y),!,zameni_slovo(Y,t,X,Z),dpll(Z).
sk

dpll(X) :- sadrzi(X,[non Y]),!,zameni_slovo(Y,f,X,Z),dpll(Z).


n

% Korak pure literal


ro

dpll(X) :- formula_sadrzi_literal(X,Y),atom(Y),
not(formula_sadrzi_literal(X,non Y)),!,
kt

zameni_slovo(Y,t,X,Z),dpll(Z).
dpll(X) :- formula_sadrzi_literal(X,non Y),
not(formula_sadrzi_literal(X,Y)),!,
le

zameni_slovo(Y,f,X,Z),dpll(Z).
E

% 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.
Zamene negiranih literala se vrše jednostavno kad imamo implementirane pomoćne predikate.
157 10. PROLOG

zameni_negacije_literala(X,Y) :- zameni_literal(non t,f,X,Z),


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([],[]).

Predikat sadrzi_praznu_klauzu se trivijalno implementira.

sadrzi_praznu_klauzu(X) :- sadrzi(X,[]).

Sada možemo dodati još jedan predikat koji proverava da li je formula zadovoljiva:

zadovoljiva(X) :- knf(X,Y),knf_u_listu_listi(Y,Z),dpll(Z).

6)
01
10.8.3 Pretraga grafa

(2
Kako grafovi predstavljaju binarne relacije nad nekim domenom, PROLOG omogućava vrlo jednostavno
opisivanje i pretragu grafova. Graf se zadaje listom svojih grana.

edge(1,
edge(1,
5).
7). je
an
edge(2, 1).
edge(2, 7).
edge(3, 1).
d

edge(3, 6).
iz

edge(4, 3).
edge(4, 5).
edge(5, 8).
o

edge(6, 4).
sk

edge(6, 5).
edge(7, 5).
n

edge(8, 6).
edge(8, 7).
ro

Nalaženje putanje se realizuje rekurzivno. Postoji put od čvora 𝐴 do čvora 𝐵 ako je 𝐴 = 𝐵 ili ako postoji
kt

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 rekurzili.
le

% path(Start, Finish, Visited, Path)


E

path(Node, Node, _, [Node]).


path(Start, Finish, Visited, [Start|Path]):-
edge(Start, X), not(sadrzi(Visited,X)),
path(X,Finish,[X|Visited],Path).

10.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
stanja je
10.8. Primeri rešavanja problema primenom PROLOG-a 158

state(3, 1, left)

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)

Stanja igre možemo smatrati čvorovima grafa čije su grane potezi pomoću kojih se prelazi iz jednog sta-
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
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.

6)
mandc(state(0, 0, right), _, []).
mandc(CurrentState, Visited, [Move | RestOfMoves]) :-
newstate(CurrentState, NextState),

01
not(sadrzi(NextState, Visited)),
make(CurrentState, NextState, Move),

(2
mandc(NextState, [NextState | Visited], RestOfMoves).

Za uočeno stanje koje nasleduje trenutno, potez koji realizuje prelaz se lako izračunava.
je
make(state(M1,C1,left), state(M2,C2,right), move(M,C,right)) :-
an
M is M1 - M2,
C is C1 - C2.
make(state(M1,C1,right), state(M2,C2,left), move(M,C,left)) :-
d

M is M2 - M1,
iz

C is C2 - C1.

Da bismo konstruisali sledeće stanje, potrebno je definisati legalne prelaze čamcem


o
sk

carry(2, 0).
carry(1, 0).
carry(1, 1).
n

carry(0, 1).
ro

carry(0, 2).
kt

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,
le

stanja koj kojih su sva tri misionara na levoj obali i stanja kod kojih su svi misionari na desnoj obali.
E

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).
newstate(state(M1, C1, right), state(M2, C2, left)) :-
carry(M, C),
159 10. PROLOG

M2 is M1 + M,
C2 is C1 + C,
M2 =< 3,
C2 =< 3,
legal(M2, C2).

Pitanja i zadaci
Zadatak 10.1. Napisati u PROLOG-u:
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).

6)
:- op(20,yfy,and).
:- op(30,yfy,or).

01
2. Predikat koji od date liste pravi novu, koja od elemenata polazne liste sadrži samo one koji su i sami liste

(2
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 [].

Zadatak 10.2. Data su pravila i činjenice:


je
an
Ko laže taj krade.
Ko krade i uhvaćen je u kradi taj ide u zatvor.
d

Al Kapone laže.
Al Kapone je uhvaćen u kradi.
iz

Laki Lućiano laže.


Napisati PROLOG program koji opisuje navedene činjenice i pravila. Koje odgovore PROLOG daje na
o

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.
sk

Zadatak 10.3. Napisati u PROLOG-u predikat koji izračunava vrednost binarnog zapisa broja. Broj je dat u
n

obliku liste nula i jedinica. Na primer za ulaz [1, 0, 1, 0], izlaz treba da bude 10.
ro

Zadatak 10.4. Napisati u PROLOG-u predikat koji generiše sve liste date dužine koje se sastoje od elemenata
0 i 1.
kt

Zadatak 10.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.
le

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


E

[1,2,[1,2,3,4]], rezultat je [].


Zadatak 10.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 10.7. Napisati PROLOG predikat koji za datu listu brojeva izračunava koliko se parnih brojeva u
njoj javlja.
Zadatak 10.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 10.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].
10.8. Primeri rešavanja problema primenom PROLOG-a 160

Zadatak 10.10. Napisati predikat ubaci koji izlistava sve moguće načine ubacivanja elementa u datu listu.
ubaci(5,[1,2,3],X).
X=[5,1,2,3]
X=[1,5,2,3]
X=[1,2,5,3]
X=[1,2,3,5]

Zadatak 10.11. Koje vrednosti imaju promenljive X, Y i R nakon unifikacije [1,2,[1,2,3]]=[X,Y|R] ?


Zadatak 10.12. Pretpostavimo da su definisani predikati
paran(2).
paran(4).
dvaparna(X,Y) :- not(X=Y),paran(X),paran(Y).
Šta će vratiti upit ?-dvaprana(X,Y)?

Zadatak 10.13. U PROLOG-u napisati predikat cifre koji prevodi dati broj u listu njegovih cifara u bilo

6)
kom redosledu.

01
Zadatak 10.14. U PROLOG-u napisati predikat minmax koji računa minimum maksimuma elemanata liste
listi. Na primer upit
?- minmax([[1,2,3],[3,4,5],[2,3,4]],X)

(2
treba da da rezultat X=3. Ukoliko je potrebno, mogu se pisati i pomoćni predikati.

Zadatak 10.15. U PROLOG-u napisati predikat prebroj koji za datu listu listi proizvodi listu dužina tih
listi. Na primer, upit
?-prebroj([[1,2,3],[1,2],[1]],X).
je
an
treba da da odgovor X=[3,2,1].
d

Zadatak 10.16. Napisati PROLOG predikat koji iz liste brojeva izdvaja elemente čiji su indeksi stepeni
dvojke. Pretpostaviti da indeksi počinju od 1. Na primer
iz

?-izdvoj([5,3,4,1,6,8,9,10,2],X).
X=[5,3,1,10]
o

Zadatak 10.17. Napisati predikat u PROLOG-u koji kao argument uzima listu brojeva L, i izračunava novu
sk

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.
n
ro

Zadatak 10.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
kt

?-razdvoj([1,2,3,4,5,6,7,8],9,X,Y).
X=[1,2], Y=[4,5,6,7,8]
le

Zadatak 10.19. U sistemu prirodne dedukcije za logiku prvog reda pokazati ¬𝑆(𝑎), 𝑃 (𝑎) ⇒ 𝑅(𝑎) ∨ 𝑆(𝑎) ⊢
E

𝑃 (𝑎) ⇒ ∃𝑥𝑅(𝑥).
U PROLOG-u napisati predikat koji proverava da li su sve cifre datog broja parne. Na primer
?-parne(123).
false.

Zadatak 10.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 10.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 10.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]
161 10. PROLOG

Zadatak 10.23. Napisati predikat rotiraj koji ciklično pomera elemente liste ulevo za N mesta. Pretpostaviti
da N nije veće od dužine liste.
?-rotiraj([1,2,3,4,5],3,X).
X=[4,5,1,2,3].
Zadatak 10.24. Napisati predikat palindrom koji proverava da li je data lista palindrom.
?-palindrom([1,2,3,2,1]).
Yes.
Zadatak 10.25. Napisati program koji za dati broj formira listu njegovih prostih delilaca. Na primer:
?-delioci(350,X).
X=[2,5,7].
Zadatak 10.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).

6)
X=[5,3,1,10]
Zadatak 10.27. U PROLOG-u napisati predikat koji u listi L pronalazi pojavljivanja liste A i zamenjuje ih

01
listom B. Na primer
?-zamena([1,2,3,1,2],[1,2],[4]).

(2
[4,3,4]
Zadatak 10.28. Napisati predikat parni koji za datu listu brojeva izdvaja sve one brojeve čiji je zbir cifara
paran.
je
an
?-parni([461, 422, 6, 27, 890, 71, 9, 11, 83], X).

X = [422, 6, 71, 11]


d

Zadatak 10.29. Napisati predikat parne_niske koji za datu listu brojeva odreduje listu podniski konstantne
iz

parnosti.
o

?-parni([1, 4, 6, 2, 2, 7, 9, 11, 8], X).


sk

X = [[1], [4, 6, 2, 2], [7, 9, 11], [8]]


n

Zadatak 10.30. Da bi se napravio LED televizor potrebno je napraviti pripremiti razlicite delove. U bazi
ro

podataka nalaze se podaci šta od čega zavisi, tj. koji delovi su potrebni da bi se napravio neki drugi deo.
Recimo:
kt

zavisi(LCD_panel, ekran).
zavisi(osvetljenje, ekran).
le

zavisi(prikljucak_za_struju, napajanje).
E

...

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 10.31. U bazi podataka date su cinjenice oblika predmet(ime_predmeta, kategorija) gde je sa
kategorija označeno da li predmet pripada grupi programerskih ili matematičkih prdmeta. 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 10.32. Napisati predikat izbaci(L1, L2, L) koja iz liste L1 izbacuje sve elemente koji se pojavljuju
u listi L2 i rezultat smešta u L.
10.8. Primeri rešavanja problema primenom PROLOG-a 162

Zadatak 10.33. Napisati predikat pozneg koji za datu listu brojeva izračunava koliko se podniski kontstantnog
znaka javlja u toj nisci.

?-pozneg([1,2,-2,-6,-3,5,-2,-3],X).

X=4.

?-pozneg([1,2,2,-6,3,-5,4],X).

X=5.

Zadatak 10.34. 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.

6)
Svaka mačka je životinja.
U PROLOG-u zapisati činjenice i predikate pomoću kojih se može utvrditi ko je udario Tunu.

01

Zadatak 10.35. Definisati predikat koji izračunava sumu prvih N prirodnih brojeva.

(2

Zadatak 10.36. Definisati predikat koji izračunava sumu cifara datog broja.

Zadatak 10.37. Definisati predikat koji izračunava N-ti stepen zadatog broja.

Zadatak 10.38. Definisati predikat koji obrće cifre broja. je
an

Zadatak 10.39. Definisati predikat koji izračunava najveći zajednički delilac dva broja.

Zadatak 10.40. Definisati predikat koji proverava da li je broj prost.
d


Zadatak 10.41. Definisati predikat koji izračunava sumu elemenata liste.
iz


Zadatak 10.42. Definisati predikat koji obrće listu.
o


Zadatak 10.43. Definisati predikat koji dodaje element na kraj liste.
sk


Zadatak 10.44. Definisati predikat koji proverava da li se tri zadata elementa nalaze na uzastopnim
n

pozicijama u listi.

ro

Zadatak 10.45. Definisati predikat koji konstruiše listu koja se sastoji od prvih 𝑛 elemenata zadate liste.

Zadatak 10.46. Definisati predikat koji deli datu listu brojeva na listu negativnih i nenegativnih elemenata.
kt


Zadatak 10.47. Definisati predikat koji deli datu listu na dve na sve moguće načine.
le


Zadatak 10.48. Definisati predikat koji ispisuje sve podliste date liste.
E


Zadatak 10.49. Definisati predikat koji iz date liste briše sva ponavljanja elemenata.

Zadatak 10.50. Definisati predikat koji nalazi uniju dve liste.

Zadatak 10.51. Definisati predikat koji nalazi presek dve liste.

Zadatak 10.52. Definisati predikat koji nalazi razliku dve liste.

Zadatak 10.53. Definisati predikat koji nalazi simetričnu razliku dve liste.
Zadatak 10.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.
Deo III

6)
Mašinsko učenje i induktivno zaključivanje

01
(2
je
an
d
iz
o
sk
n
ro
kt
le
E
E
le
kt
ro
n
sk
o
iz
d
an
je
(2
01
6)
Glava 11

Uvod u mašinsko učenje

6)
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-

01
sciplina koja se bavi proučavanjem generalizacije i konstrukcijom i analizom algoritama koji generalizuju. Prva
definicija bliža je inženjerskom i praktičnom računarskom načinu razmišljanja sa akcentom na rešavanju kon-

(2
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?
d

ˆ Kako se povećava efikasnost učenja u zavisnosti od obima iskustva?


iz

ˆ 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
o

već došlo do značajnih rezultata, tako i kroz eksperimentalnu evaluaciju algoritama na podacima iz realnih
sk

problema.
n

11.1 Primeri primena mašinskog učenja


ro

Mašinsko učenje uspešno se primenjuje u mnoštvu praktičnih problema. Jedan od najstarijih, a još uvek
kt

zanimljivih praktičnih rezultata postignut je od strane sistema ALVINN zasnovanog na neuronskoj mreži, krajem
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
le

mreža, sredinom prve decenije ovog veka, projekat razvoja autonomnog vozila je dobio novi zamah. Pod okriljem
E

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).

165
11.2. Pojam generalizacije 166

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 relanom ž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.

6)
11.2 Pojam generalizacije

01
Deduktivno zaključivanje, vodeno zakonima logike, može se smatrati osnovnom karakteristikom inteligentnog

(2
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
d

preduzimanjem adekvatne akcije u situaciji u kojoj se nalazi predupredi ishode nepovoljne po njega ili dovede
iz

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
o

zaključivanjem. Generalizacija predstavlja jedan od osnovnih koncepata mašinskog učenja.


sk

Da bi generalizacija bila uspešna, odredeni aspekti entiteta o kojima se rezonuje moraju biti zanemareni
ukoliko nisu od suštinskog značaja za generalizaciju. Primera radi, ukoliko je potrebno naučiti veštački sistem
n

da prepoznaje rukom pisani tekst i da ga prevodi u elektronski tekstualni zapis, potrebno je da sistem zanemari
ro

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
kt

zaključi da se cifra 1 zapisuje podvučeno crticom, ali takav, induktivni zaključak ne bi bio korektan i sistem ne
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,
le

kao što je rečeno, ne moraju biti uvek tačni. I pored toga, induktivno zaključivanje je i dalje veoma značajno,
a nekad i jedino moguće. To je jedan od osnovnih načina za formiranje predstava o okruženju, situacijama
E

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.

11.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 na neki način da reprezentuje 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
167 11. Uvod u mašinsko učenje

0 0

6)
Slika 11.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

01
(2
računarski 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
je
te reči 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
d

jedne kategorije ovi računarski termini visokofrekventni, a u drugim niskofrekventni, tačke koje odgovaraju
iz

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 11.1 (levo).
Izmedu crvenih i plavih tačaka možda postoji prava koja ih razdvaja, kao na slici 11.1 (desno). Ako je ova
o

prava poznata, onda neki nov, nepoznat članak može biti prepoznat kao članak iz oblasti računarstva ukoliko
sk

se vektor koji mu odgovara nalazi sa iste strane prave kao i vektori računarskih članaka koji su nam poznati. U
suprotnom, smatra se da članak nije iz oblasti računarstva.
n

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
ro

jednačinom:
kt

𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 = 0

gde 𝑥1 označava frekvenciju reči „računar“, a 𝑥2 frekvenciju reči „datoteka“. Očigledno, znak funkcije 𝑤1 𝑥1 +
le

𝑤2 𝑥2 + 𝑤3 pruža informaciju sa koje strane prave se nalazi tačka (𝑥1 , 𝑥2 ).


Pronalaženje željene prave može se izvesti kroz pomeranje neke polazne prave dok ona ne bude pozicioni-
E

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 formulisati algoritam učenja koji će na osnovu raspoloživih podataka doći
do tih koeficijenata. Jedan takav algoritam dat je na slici 11.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 Zapravo, radi se o stohastičkom gradijentnom spustu, 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.
11.4. Nadgledano i nenadgledano učenje 168

Ulaz: Trening skup 𝑇 , brzina učenja 𝜂 i preciznost 𝜀


Izlaz: Koeficijenti (𝑤1 , 𝑤2 , 𝑤3 )
1. Postaviti 𝑤 na (0, 0, 0).

2. Ponavljati

ˆ Postaviti 𝑤′ na 𝑤
ˆ Za svaku instancu (𝑥1 , 𝑥2 , 𝑦) ∈ 𝑇
– Uvećati 𝑤1 za 𝜂(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦)𝑥1
– Uvećati 𝑤2 za 𝜂(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦)𝑥2
– Uvećati 𝑤3 za 𝜂(𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦)
dok važi |𝑤 − 𝑤′ | > 𝜀

3. Vratiti 𝑤 kao rešenje.

6)
Slika 11.2: Algoritam za klasifikaciju članaka.

01
(2
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.
d

11.4 Nadgledano i nenadgledano učenje


iz

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 dve glavna vida problema učenja nadgledano učenje i nenadgledano
o

učenje (koja se ne odnose na iste vrste zadataka).


sk

Nadgledano učenje odnosi se na situacije u kojima se algoritmu, zajedno sa podacima iz kojih uči, daju
i željeni izlazi, to jest vrednosti takozvane ciljne promenljive. Algoritam treba da nauči da za date podatke
n

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
ro

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
kt

primer nadgledanog učenja je problem regresija, zadatak učenja u kojem objektima treba pridružiti vrednosti
iz skupa realnih brojeva. Na primer, predvidanje dužine života osobe u zavisnosti od njenih životnih navika
le

(bavljenjem sportom, pušenje i slično).


Nenadgledano učenje odnosi se na situacije u kojima se algoritmu koji uči pružaju samo podaci bez izlaza.
E

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.

11.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 reprezenzacije 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 promen-
169 11. Uvod u mašinsko učenje

ljivih 𝑥1 , 𝑥2 i 𝑦 . U primeru klasterovanja piksela, model će iztražavati 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.

6)
Ovaj fenomen biće diskutovan kasnije.

01
11.6 Podaci

(2
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
11.6.1 Reprezentacija podataka
d

Instance treba da budu reprezentovane 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
iz

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
o

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
sk

što je to bio slučaj u primeru sa klasifikacijom članaka. Atributi takode mogu biti i kategorički, odnosno mogu
predstavljati imena nekih kategorija kojima se ne mogu jednoznačno dodeliti smislene numeričke vrednosti ili
n

uredenje. Primer kategoričkog atributa može biti grad u kome osoba živi, pol, nacionalnost i slično. U slučaju
ro

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
kt

proizvoljno izabrani.
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
le

razlikovati članke o operativnim sistemima od članaka o bazama podataka, poznavanje frekvencija reči „računar“
E

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 informacije 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 obrnut 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 algorimi 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.

11.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
11.7. Izbori u dizajnu sistema koji uči 170

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 o kojoj će biti reči kasnije.

11.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

6)
zajedničkih odlika je način dizajniranja sistema koji uči. Elementi dizajna su već pomenuti u prethodnim
poglavljima, a sumirani su u nastavku:

01
ˆ Prepoznavanje formulacija problema učenja (nadgledano ili nenadgledano učenje);

(2
ˆ 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;
ˆ Izbor mera kvaliteta učenja.
an
Sada je moguće sumirati kako su navedeni elementi bili izabrani u slučaju prepoznavanja računarskih članaka.
d

Primer 11.1.
iz

ˆ 3000 članaka je razvrstano u dve unapred fiksirane kategorije (računarski i ostali), tako da je zadatak
učenja bio formulisan kao zadatak nadgledanog učenja.
o

ˆ Svaki članak je predstavljen vektorom frekvencija reči iz nekog rečnika računarske terminologije i vrednošću
sk

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
n

strane prave, a −1 tačkama sa druge strane. Imaju linearnu formu sa koeficijentima 𝑎, 𝑏 i 𝑐.


ro

ˆ Algoritam učenja je formulisan nalik gradijentnom spustu za minimizaciju odstupanja izmedu vrednosti
ciljne promenljive i prednosti predvidenih modelom na datim primerima.
kt

ˆ Za meru kvaliteta učenja uzet je udeo tačno klasifikovanih članaka.


le

U daljem tekstu biće diskutovano nadgledano i nenadgledano mašinsko učenje. Za obe vrste biće izložene
E

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.

Pitanja i zadaci
Pitanje 11.1. Kako se naziva proces u kojem se znanje koje važi za neki skup instanci prenosi na neki njegov
nadskup?
Pitanje 11.2. U čemu se razlikuju nadgledano i nenadgledano učenje?
Pitanje 11.3. Kako se zove učenje kod kojeg se algoritmu zajedno sa podacima iz kojih uči daju i željeni
izlazi?
Pitanje 11.4. Kako se u mašinskom učenju zovu atributi instanci čije vrednosti se ne mogu prirodno numerički
opisati?
Pitanje 11.5. Kakve su promenljive koje predvidaju u slučaju klasifikacije, a kakve u slučaju regresije?
Glava 12

Nadgledano mašinsko učenje

Nadgledano mašinsko učenje karakteriše se time da su za sve podatke poznate vrednosti ciljne promenljive.

6)
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

01
i algoritama za njihovo rešavanje, vremenom je uočena jedna opšta shema dizajna algoritama nadgledanog
učenja koja pruža kako smernice za dizajn novih algoritama, tako i mogućnost objedinjenog razmatranja mnogih

(2
postojećih metoda kao instanci te sheme. Stoga će u nastavku prvo biti reči o dizajnu algoritama nadgledanog
učenja uopšte.

12.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
nadgledanog učenja instance ove sheme (ti koji nisu su često stariji algoritmi, ali mnogi su i dalje u aktivnoj
d

upotrebi). S druge strane, mnogi od najvažnijih algoritama nadgledanog učenja jesu instance ove sheme. Neki
iz

od tih važnih algoritama su linearna i logistička regresija, neuronske mreže, metoda potpornih vektora i uslovna
slučajna polja.
o

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.
sk

Primera radi, model oblika


𝑚
n

∑︁
𝑓 (𝑥, 𝑤) = 𝑤𝑖 𝑥𝑖
ro

𝑖=1
gde je 𝑚 broj atributa, izražava linearnu zavisnost vrednosti ciljne promenljive od atributa 𝑥𝑖 pri kojoj jedinično
uvećanje vrednosti atributa 𝑥𝑖 uvećava vrednost ciljne promenljive za 𝑤𝑖 (pri tome, 𝑤𝑖 može biti i negativno).
kt

Ukoliko takve zavisnosti približno važe u razmatranom fenomenu, takav model je adekvatan. U suprotnom,
može biti upotrebljiv, ali verovatno vredi uložiti trud u formulisanje boljeg modela. Primetimo da je model
le

obično u potpunosti odreden nekim skupom koeficijenata, koje ćemo označavati 𝑤.


E

Primer 12.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.
Primer 12.2. U primeru klasifikacije članaka, za funkciju gubitka, izabrana je funkcija:
ℓ(𝑥, 𝑦, 𝑤) = (𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 − 𝑦)2

171
12.1. Dizajn algoritama nadgledanog učenja 172

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
𝑛
1 ∑︁
𝑅𝑒𝑚𝑝 (𝑤) = ℓ(𝑥𝑖 , 𝑦𝑖 , 𝑤)
𝑛 𝑖=1

6)
gde je 𝑛 broj instanci.
Primer 12.3. U primeru klasifikacije članaka, empirijski rizik dat je funkcijom:

01
𝑛
1 ∑︁
𝑅𝑒𝑚𝑝 (𝑤) = (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )2

(2
𝑛 𝑖=1

Može se dokazati da pod odredenim uslovima vrednosti parametara 𝑤 dobijene minimizacijom empirijskog
rizika dobro aproksimiraju vrednosti parametara koje bi bile dobijene minimizacijom stvarnog rizika. Stoga se
je
vrednosti parametara 𝑤 biraju tako da vrednost empirijskog rizika bude minimalna. Empirijski rizik predstavlja
an
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
d

obrnuto. Stoga, vrednost rizika igra ulogu mere prilagodenosti modela podacima.
iz

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
o

generalizacije, ali prevazilazi okvire ove knjige. Ipak, osnovni zaključak se može kratko formulisati — osnovna
sk

prepreka aproksimaciji optimalnih vrednosti parametara, a time i uspešnoj generalizaciji, je preterano bogatstvo
skupa dopustivih modela. Ukoliko je taj skup toliko bogat da u njemu za svaki zamislivi trening skup postoji
n

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
ro

ilustrativna primera.
kt

Primer 12.4. Neka je dat trening skup instanci koje predstavljaju članke, od kojih su neki računarski, a neki
ne. Taj skup je prikazan na slici 12.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
le

računarskih termina. Ovakvih primera ima malo. U praksi je česta situacija da iz različitih razloga odredeni
E

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 12.2 ilustruje takvav 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 ralčunarski.
Slika 12.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

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
173 12. Nadgledano mašinsko učenje

6)
01
(2
Slika 12.1: Trening skup. Plave tačke označavaju računarske, a crvene ostale članke.

je
an
d
iz
o
sk
n
ro
kt
le
E

Slika 12.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.

članci koji ne sadž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 12.5. Pretpostavimo da je dat trening skup od 20 instanci koje se sastoje od jednog atributa i vrednosti
ciljne promenljive. Pretpostavimo da je forma modela linearna — 𝑓 (𝑥, 𝑤) = 𝑤1 𝑥 + 𝑤2 i da su koeficijenti
𝑤 odreden minimizacijom empirijskog rizika pri čemu je za funkciju gubitka korišćen kvadrat razlike ciljne i
12.1. Dizajn algoritama nadgledanog učenja 174

6)
01
(2
Slika 12.3: Polinomijalni 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
predvidene vrednosti. Slika 12.4 ilustruje takvav 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,
d

jednostavan linearni model nije dovoljno fleksibilan da se može potpuno prilagoditi podacima za trening. S druge
iz

strane, očigledno je da on dobro opisuje opšti linearni trend koji se u podacima vidi i, posebno važno, za očekivati
je da je greška na novim podacima iz iste raspodele bude približna emprijskom riziku.
Slika 12.5 prikazuje aproksimaciju datih podataka korišćenjem modela iz skupa svih polinoma proizvoljnog
o

stepena, odnosno u slučaju da se za modele koristi forma 𝑓 (𝑥, 𝑤) = 𝑛𝑖=1 𝑤𝑖 𝑥𝑖 . Izabrani model je saglasan sa
∑︀
sk

svim instancama iz trening skupa i stoga je empirijski rizik jednak nuli. Medutim, posmatrajući globalni izgled
izabranog modela, vidi se da on ne opisuje nikakvu zakonitost u podacima. Oscilacije koje pravi izmedu tačaka
n

čine njegovo korišćenje u predikciji potpuno nepouzdanim i sigurno je da je stvarni rizik daleko veći od nule.
ro

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,
kt

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
le

preprilagodavanje 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
E

smanjenjem fleksibilnosti forme modela. Primera radi, linearna forma modela sa ogrnaič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 minmizacije 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
normama, pa su uobičajeni izbori poput
𝑚
∑︁
Ω(𝑤) = ‖𝑤‖22 = 𝑤𝑖2
𝑖=1
175 12. Nadgledano mašinsko učenje

20





15

● ●


10

● ●

6)



5

01

(2

0

je
an
5 10 15 20
d
iz

Slika 12.4: Linearni model minimalnog empirijskog rizika.


o

ili
sk

𝑚
∑︁
Ω(𝑤) = ‖𝑤‖1 = |𝑤𝑖 |
n

𝑖=1

ali se koriste i mnogi drugi. 1 Minimizacija empirijskog rizika, koji meri prilagodenost modela podacima, zahteva
ro

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
kt

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
le

se time dobijaju ne mogu dovoljno prilagoditi podacima, pa je kvalitet učenja u tom slučaju loš.
Primer 12.6. Neka se u primeru klasifikacije članaka koristi forma modela koja odgovara polinomu dve promen-
E

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
12.6. Očigledno je da povećavanje regularizacionog parametra smanjuje mogućnost preprilagodavanja modela,
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
više.
Na slici 12.3.2 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 𝜆.
1 Različit izbor regularizacionog izraza može voditi različitim svojstvima algoritma i za mnoge regularizacione izraze je poznato
kakva svojstva indukuju.
12.1. Dizajn algoritama nadgledanog učenja 176

20





15

● ●


10

● ●

6)



5

01

(2

0

je
an
5 10 15 20
d
iz

Slika 12.5: Polinomijalni model minimalnog empirijskog rizika.


o

Kako empirijski rizik predstavlja ocenu stvarnog rizika, stvarnom riziku se može pridružiti interval poverenja2 u
sk

odnosu na tu ocenu. Širina intervala poverenja je predstavljena drugom, opadajućom, krivom. U slučaju visokog
empirijskog rizika, na osnvu uskog intervala poverenja, možemo biti relativno sigurni da će i stvarni rizik biti
n

visok. U slučaju vrlo niske vrednosti empirijskog rizika, na osnovu širokog intervala poverenja, nemamo nikakve
garancije da će i stvarni rizik biti nizak. Treća kriva je zbir prethodne dve i predstavlja gornju granicu stvarnog
ro

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
kt

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 traning,
le

takode dobro aproksimira ciljnu promenljivu i na ostalim instancama, kaže se da model dobro generalizuje iz
prikazanih primera.
E

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 primenjljiv 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
metoda optimizacije koja je posebno pogodna za njega. Temeljnije upućivanje u optimizacione metode izlazi iz
okvira ove knjige.
Primer 12.7. U slučaju problema
𝑁
∑︁
min (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )2 + 𝜆‖𝑤‖2
𝑤
𝑖=1
2 Za ovu diskusiju nije bitna konkretna verovatnoća pridružena intervalu poverenja (npr. 95% ili 90%).
177 12. Nadgledano mašinsko učenje

6)
01
(2
je
an
d
iz
o
sk
n
ro
kt
le
E

Slika 12.6: Polinomijalni modeli dobijeni za različite vrednosti regularizacionog parametra.

za optimizacioni metod može se uzeti gradijentni spust. Za primenu gradijentnog spusta, potrebno je izvesti
gradijent regularizovanog empirijskog rizika, čije su koordinate u ovom slučaju:
𝑁 𝑁
𝜕 ∑︁ ∑︁
( (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 23 − 𝑦𝑖 )2 + 𝜆‖𝑤‖2 ) = 2 (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )𝑥1 + 2𝜆𝑤1
𝜕𝑤1 𝑖=1 𝑖=1

𝑁 𝑁
𝜕 ∑︁ ∑︁
( (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 23 − 𝑦𝑖 )2 + 𝜆‖𝑤‖2 ) = 2 (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 )𝑥2 + 2𝜆𝑤2
𝜕𝑤2 𝑖=1 𝑖=1
𝑁 𝑁
𝜕 ∑︁ ∑︁
( (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 23 − 𝑦𝑖 )2 + 𝜆‖𝑤‖2 ) = 2 (𝑤1 𝑥𝑖1 + 𝑤2 𝑥𝑖2 + 𝑤3 − 𝑦𝑖 ) + 2𝜆𝑤3
𝜕𝑤3 𝑖=1 𝑖=1
12.2. Regresija 178

𝑅𝑔
𝐶 𝑅𝑒𝑚𝑝

0 𝜆

Slika 12.7: Ponašanje empirijskog rizika 𝑅𝑒𝑚𝑝 , širine intervala poverenja 𝐶 i gornje granice rizika 𝑅𝑔 u zavisnosti
od vrednosti regularizacionog parametra 𝜆

6)
Kada je poznat gradijent, moguće je primeniti metod gradijentnog spusta sa Armiho-Goldštajnovom pretragom.
Ako se umesto gradijenta greške na celom trening skupu, koristi gradijent greške samo na jednoj instanci, pri

01
č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.

(2
Pošto je shema dizajna izložena, vredi je koncizno sumirati, kao i osvrnuti se na njen značaj. Elementi
dizajna algoritma nadgledanog učenja su:
je
an
ˆ forma modela,
d

ˆ funkcija gubitka,
iz

ˆ regularizacioni izraz i
o

ˆ algoritam optimizacije.
sk

Ovi elementi se često mogu birati nezavisno, ali je moguće i da izbor za neku od stavki ograniči izbore za
n

neku drugu stavku. Na primer, u slučaju da je funkcija gubitka nediferencijalbilna, običan gradijentni spust
ro

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
kt

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
le

nebitnih atributa, dok izbor Ω(𝑤) = ‖𝑤‖22 često vodi nešto većoj preciznosti predikcije od prethodnog izbora.
E

12.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 , . . . , 𝑋𝑛 = 𝑥𝑛 )

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.
179 12. Nadgledano mašinsko učenje

12.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:
𝑚
∑︁
𝑓 (𝑥, 𝑤) = 𝑤 · 𝑥 = 𝑤 𝑖 𝑥𝑖 (12.1)
𝑖=1

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 transformisane.

Primer 12.8. Neki primeri linearnih modela su:


ˆ 𝑓 (𝑥, 𝑤) = 𝑤0 + 𝑤1 𝑥1 + 𝑤2 𝑥2

ˆ 𝑓 (𝑥, 𝑤) = 𝑤0 + 𝑤1 cos(𝑥1 ) + 𝑤2 𝑥22 + 𝑤3 𝑒𝑥3

6)
ˆ 𝑓 (𝑥, 𝑤) = 𝑤0 + 𝑤1 𝑥1 + 𝑤2 𝑥2 + 𝑤3 𝑥1 𝑥2

01
Sledeći primeri ne predstavljaju linearne modele:

(2
ˆ 𝑓 (𝑥, 𝑤) = 𝑤 1 𝑥1
𝑤2+𝑥2

ˆ 𝑓 (𝑥, 𝑤) = cos(𝑤1 𝑥1 )𝑤2 𝑥2


𝑒𝑤3 𝑥3
je
Pored osnovnog zadatka pronalaženja prediktivnog modela, linearna regresija je korisna i za ustanovljavanje
an
jačine uticaja nekog atributa na vrednost ciljne promenljive. Naime, veće apsolutne vrednosti koeficijenata 𝑤
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
d

problem odredivanja optimalnih vrednosti koeficijenata 𝑤 i proveru kvaliteta naučenog modela.


iz

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
o

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
sk

ih modelirati. Linearni model je u ovom slučaju oblika


n

𝑦 = 𝑤0 + 𝑤1 𝑥
ro

što je standardna jednačina linearne funkcije.


Na slici 12.8 je prikazano 100 tačaka pri čemu svaka odgovara jednom ispitaniku. Koordinata 𝑥 predstavlja
kt

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
le

nazivamo izuzecima (eng. outliers). Prikazana prava predstavlja linearni model datih podataka. Metod kojim
se do njega dolazi biće prikazan u nastavku.
E

U slučaju korišćenja opšte jednačine linearnog modela 12.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
problem minimizacije srednjekvadratne greške. Funkcija gubitka je ℓ(𝑥, 𝑦, 𝑤) = (𝑥 · 𝑤 − 𝑦)2 , pa je minimizacioni
problem
𝑛
∑︁
min (𝑤 · 𝑥𝑖 − 𝑦𝑖 )2 + 𝜆Ω(𝑤)
𝑤
𝑖=1

pri tome je 𝑛 broj instanci u trening skupu. Alternativno, u matričnoj notaciji, isti problem može se zapisati
kao
min ‖𝑋𝑤 − 𝑌 ‖22 + 𝜆Ω(𝑤)
𝑤
12.2. Regresija 180

120

● ●

● ●
●● ●


100

● ●
● ●
● ●
●● ●
● ●
● ● ●
● ●● ●
● ●
● ● ●
● ●
● ●
80

● ●●
y

● ●
● ●
● ●●
●● ●
● ● ● ● ●●● ●

6)
● ● ●
● ● ● ● ●

● ● ●
● ●
● ● ●●

01

60

● ●

● ●


● ●

(2
● ● ●

● ●

40


je
an
150 160 170 180 190 200

x
d
iz

Slika 12.8: Primer jednostavne regresije kojom se predvida telesna težina na osnovu visine.
o

U slučaju da je Ω(𝑤) = ‖𝑤‖22 , ispostavlja se da za postavljeni problem postoji jednostavno rešenje koje ne
sk

zahteva korišćenje optimizacionih metoda:


𝑤 = (𝑋 ⊤ 𝑋 + 𝜆𝐼)−1 𝑋 ⊤ 𝑌
n

pri čemu je 𝐼 jedinična matrica i važi


ro

⎡ ⎤ ⎡ ⎤
1 𝑥11 𝑥12 ··· 𝑥1𝑚 𝑦1
kt

⎢ 1 𝑥21 𝑥22 ··· 𝑥2𝑚 ⎥ ⎢ 𝑦2 ⎥


𝑋=⎢ .. .. .. .. 𝑌 =⎢ ..
⎢ ⎥ ⎢ ⎥
. . . . .
⎥ ⎥
⎣ ⎦ ⎣ ⎦
le

1 𝑥𝑛1 𝑥𝑛2 ··· 𝑥𝑛𝑚 𝑦𝑛


E

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
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.

12.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
181 12. Nadgledano mašinsko učenje

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
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
veličina greške ne zavisi od vrednosti 𝑦 (pošto 𝜎 je konstantno). Više o ispitivanju ovih poretpostavki biće
rečeno u nastavku.
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.

12.2.3 Ispitivanje kvaliteta linearne regresije

6)
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
se često naziva i dijagnostikom modela.

01
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

(2
kad su te pretpostavke donekle narušene, ove provere se često vrše neformalno — inspekcijom podataka pomoću
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
je
potvrduje inspekcijom grafika koji prikazuje reziduale 𝑟𝑖 u zavisnosti od predvidenih vrednosti 𝑤 · 𝑥. Ukoliko se
na ovom grafiku ne uočava zavisnost izmedu te dve veličine, smatra se da je pretpostavka ispunjena. S druge
an
strane, ukoliko se može uočiti zavisnost, smatra se da pretpostavka nije ispunjena i da se model može popraviti
dodavanjem novih atributa ili primenom drugačijih metoda.
d

Osnovna mera kvaliteta linearne regresije je srednjekvadratna greška, koja meri odstupanje predvidenih
vrednosti na nekom test skupu od stvarnih
iz

𝑛
∑︁
𝐸(𝑌, 𝑋𝑤) = (𝑦𝑖 − 𝑤 · 𝑥𝑖 )2
o

𝑖=1
sk

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
n

i druge mere. Česta je upotreba koeficijenta determinacije.


Koeficijent determinacije 𝑟2 izmedu predvidenih i stvarnih vrednosti na test skupu, se računa po formuli
ro

∑︀𝑛 2
2 𝑖=1 (𝑦𝑖 − 𝑤 · 𝑥𝑖 )
𝑟 (𝑌, 𝑋𝑤) = 1 − ∑︀
kt

𝑛 2
𝑖=1 (𝑦𝑖 − 𝑦)

gde nadvučena linija označava prosek uzorka. Vrednost 1 koeficijenta determinacije označava potpuno podu-
le

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.
E

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
odnosno uzoračka varijansa za 𝑌 . Rastojanja koja ulaze u ovu grešku su prikazana na slici 12.9. U slučaju
korišćenja linearnog regresionog modela, srednjekvadratna greška, ili varijansa vrednosti 𝑌 u odnosu na model,
je
𝑛
1 ∑︁
𝐸(𝑌, 𝑋𝑤) = (𝑦𝑖 − 𝑤 · 𝑥)2
𝑛 𝑖=1
Rastojanja koja ulaze u ovu grešku su prikazana na slici 12.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
količnik sa 𝐸(𝑌, 𝑦) se onda može smatrati udelom neobjašnjene varijanse, a koeficijent determinacije, onda
očigledno, udelom objašnjene varijanse.
12.2. Regresija 182

6)
01
(2
je
an

Slika 12.9: Grafik reziduala u zavisnosti od predvidenih vrednosti telesne težine.


d
iz
o
sk
n
ro
kt
le
E

Slika 12.10: Grafik reziduala u zavisnosti od predvidenih vrednosti telesne težine.


183 12. Nadgledano mašinsko učenje

20
15
10

6)
01
5

(2
je
0

an
−30 −20 −10 0 10 20 30
d
iz

Slika 12.11: Histogram reziduala u predvidanju telesne težine.


o

Primer 12.9. U slučaju primera sa predikcijom telesne težine u zavisnosti od visine na slici 12.11 prikazan
sk

je histogram reziduala. Prikazana raspodela je bliska normalnoj (što je potvrdeno i statističkim testom). Na
slici 12.12 prikazan je grafik zavisnosti reziduala od predivdenih vrednosti. Kako raspodela ne odaje zavisnost
n

izmedu reziduala i predvidenih vrednosti (što je takode potvrdeno i statističkim testom), zaklučuje se da su u
ro

tom problemu pretpostavke linearne regresije ispunjene.


Koeficijent determinacije iznosi 0.51 što znači da promenljiva 𝑋 objašnjava oko pola varijanse promenljive
kt

𝑌 , i da postoji prostor da se predikcija dalje popravi dodavanjem novih atributa.


le

U primeru preprilagodavanja podacima, koji je dat u poglavlju 12.1, koeficijenti polinomijalnog modela su
izabrani upravo linearnom regresijom. Iako su polinomi nelinearne funkcije, oni su ipak linearni u odnosu na
E

koeficijente i stoga predstavljaju linearne modele, pa je zato bila moguća primena linearne regresije.

12.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
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
č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
numeričke vrednosti niti uredenje. Dakle, atribut klase, čiju je vrednost potrebno odrediti, je kategorički atribut.
12.3. Klasifikacija 184


20




● ● ● ●

● ● ●
10


● ● ●
● ● ●
● ●
● ● ●
● ●
● ● ●
● ● ● ● ●
●● ●
● ●● ● ●
● ● ● ●
0

●● ● ● ● ● ● ●


● ● ● ●
● ●

6)
● ● ● ●●
● ●
● ● ●
● ● ●


−10

● ● ● ●

01
● ●

● ● ●


● ●

(2


−20

● ●

je
an
50 60 70 80 90 100
d
iz

Slika 12.12: Grafik reziduala u zavisnosti od predvidenih vrednosti telesne težine.


o
sk

Postoji veliki broj metoda kojima se ovaj problem rešava. Neke od njih su logistička regresija (eng. logistic
n

regression), metode zasnovane na instancama (eng. instance based classification), učenje stabla odlučivanja
(eng. decision tree induction) i metoda potpornih vektora (eng. support vector machines). U daljem tekstu
ro

opisaćemo prve tri pomenute metode.


kt

12.3.1 Logistička regresija


le

Logistička regresija predstavlja jednu od nakorišćenijih metoda klasifikacije. Glavni razlozi za to su jedno-
stavnost, efikasno treniranje i postojanje verovatnosne interpretacije rezultata. Ograničenje ove metode je da je
E

primenljiva samo na binarnu klasifikaciju. U slučaju binarne klasifikacije, svaka instanca može priadati 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
preslikavanje predstavlja sigmoidna funkcija 𝜎(𝑥) = 1/(1 + 𝑒−𝑥 ). Ovo nije jedina funkcija koja zadovoljava
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 12.13. Logistički model se
185 12. Nadgledano mašinsko učenje

0.5

−6 −5 −4 −3 −2 −1 0 1 2 3 4 5 6

Slika 12.13: Grafik sigmoidne funkcije.

dobija komponovanjem prethodne dve funkcije i ima formu:

6)
1
𝑓 (𝑥, 𝑤) =

01
1 + 𝑒−𝑤·𝑥

Primer sa kategorizacijom članaka na računarske i ostale je tipičan primer situacije u kojoj je prirodno

(2
primeniti logističku regresiju. Pošto logistički model kada važi 𝑤 · 𝑥 > 0 predvida verovatnoću veću od 0.5 da
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
je
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
an
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.
d

Kao što je navedeno u motivaciji logističke regresije, verovatnoća 𝑃𝑤 (𝑦 = 1|𝑥) se predvida formulom
iz

1
𝑃𝑤 (𝑦 = 1|𝑥) = 𝑓 (𝑥, 𝑤) =
1 + 𝑒−𝑤·𝑥
o
sk

Takode, važi
𝑒−𝑤·𝑥 1 1
𝑃𝑤 (𝑦 = −1|𝑥) = 1 − 𝑃𝑤 (𝑦 = 1|𝑥) = = 𝑤·𝑥 =
n

1+𝑒 −𝑤·𝑥 𝑒 +1 1 + 𝑒𝑤·𝑥


ro

Odavde se može izvesti opšti zaključak:


1
𝑃𝑤 (𝑦|𝑥) =
kt

1 + 𝑒−𝑦𝑤·𝑥
S obzirom da postoji verovatnosna interpretacija, intuitivno je vrednosti parametara izabrati tako da vero-
le

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
E

𝑛
∏︁
𝑃𝑤 (𝑦𝑖 |𝑥𝑖 )
𝑖=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.
12.3. Klasifikacija 186

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 gradijenti 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.

6)
12.3.2 Metode klasifikacije zasnovane na instancama

01
Osnovna karakteristika metoda zasnovanih na instancama je da ne grade eksplicitan model podataka u vidu
neke funkcije kao što to radi većina metoda mašinskog učenja. Stoga se klasifikacija ne vrši na osnovu već

(2
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.
d

Definicija 12.1. Neka je 𝑋 skup instanci. Funkcija 𝑑 : 𝑋 × 𝑋 → R predstavlja rastojanje na skupu 𝑋


iz

ukoliko zadovoljava sledeće uslove:


1. 𝑑(𝑥, 𝑦) ≥ 0, pritom 𝑑(𝑥, 𝑦) = 0 ⇔ 𝑥 = 𝑦 (pozitivna definitnost)
o

2. 𝑑(𝑥, 𝑦) = 𝑑(𝑦, 𝑥) (simetričnost)


sk

3. 𝑑(𝑥, 𝑧) ≤ 𝑑(𝑥, 𝑦) + 𝑑(𝑦, 𝑧) (nejednakost trougla)


n
ro

Primer 12.10. Neki primeri rastojanja su:


ˆ 𝑑(𝑥, 𝑦) =
kt

√︀ ∑︀
𝑛
𝑖 (𝑥𝑖 − 𝑦𝑖 )𝑛

ˆ 𝑑(𝑥, 𝑦) = cos(∠(𝑥, 𝑦)) = √ 𝑥·𝑦



le

𝑥·𝑥 𝑦·𝑦
{︂
0, 𝑥=𝑦
E

ˆ 𝑑(𝑥, 𝑦) =
1, 𝑥 ̸= 𝑦
Intuitivno, što je rastojanje izmedu dva objekta veće, to je sličnost izmedu njih manja i obrnuto. 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 12.3.2. 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
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
187 12. Nadgledano mašinsko učenje

6)
Slika 12.14: Stabilnost klasifikacije pomoću algoritma 𝑛 najbližih suseda

01
(2
𝐵 se klasifikuje u plavu klasu. Za 𝑛 = 4 ponovo nije moguće odlučiti, a za 𝑛 = 5, ona se ponovo klasifikuje u
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
je
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
an
može analizirati i za fiksiranu vrednost parametra 𝑛. Može se primetiti da je za manje vrednosti parametra 𝑛
nepostojanost pri variranju vrednosti atributa instance veća nego za veće vrednosti parametra 𝑛.
d

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
iz

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
o

skloniji preprilagodavanju, dok se za veće vrednosti parametra 𝑛 dobijaju manje fleksibilni modeli manje skloni
sk

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
ulogu sličnu ulozi regularizacionog parametra 𝜆. Odredivanje njihovih vrednosti će biti zajednički diskutovano
n

kasnije.
ro
kt

N-grami

Metode mašinskog učenja su često formulisane tako da se jednostavno primenjuju na numeričke podatke, ali
le

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-
E

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 simbolja 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 uredenh 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-
matike.
12.3. Klasifikacija 188

Primer 12.11. U ovom primeru razmotrićemo klasifikaciju tekstova prema jeziku. Srpski i engleski jezik biće
predstavljenim 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
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

6)
izvrsiti direktno zakljucivanje zahteva primenu pretrage.
Manje apstraktan primer je upravljanje robotskom rukom. Pretpostavimo da robotska ruka ima nekoliko me-

01
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,

(2
ali se moze razbiti na sekvencu atomicnih koraka — pokreta pojedinacnih zglobova oko razlicitih osa za odreden
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
je
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.
an
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
d

adekvatno, u kontekstu vestacke inteligencije u kome obicno pretpostavljamo postojanje nekog entiteta koji deluje
preduzimanjem nekih akcija (agenta), ona je prirodna.
iz

E1: There are two paths to achieving an AGI, says Peter Voss, a software developer and founder of the firm
o

Adaptive A.I. Inc. One way, he says, is to continue developing narrow AI, and the systems will become generally
sk

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
n

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
ro

years, tops. The two approaches outlined by Vosseither tinkering with mundane programs to make them more
capable and effective or designing a single comprehensive AGI system speak to the long-standing philosophical
kt

feud that lies at the heart of AI research: the war between the neats and the scruffies. J. Storrs Hall, author
of Beyond AI: Creating the Conscience of the Machine (Prometheus Books, 2007), reduces this dichotomy to a
le

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
E

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)
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.
189 12. Nadgledano mašinsko učenje

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
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
is necessary for the support of animated existence.

6)
E3: Principia Mathematica, the landmark work in formal logic written by Alfred North Whitehead and Ber-

01
trand Russell, was first published in three volumes in 1910, 1912 and 1913. Written as a defense of logicism
(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

(2
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.
je
an
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.
Trening i test skup su dati u tabeli 12.1.
d
iz

N-gram Trening skup Test skup


S1 E1 S2 S3 E2 E3
JE_ 0.0129 0 0.0131 0.0201 0 0
o

_PR 0.0125 0.0023 0.0098 0.0148 0 0


sk

ANJ 0.0076 0 0.0082 0.0027 0 0


_KO 0.0076 0 0.0016 0.0027 0 0
n

JA_ 0.0076 0 0.0033 0.0040 0 0


_JE 0.0067 0 0.0082 0.0121 0 0
ro

_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
kt

NJE 0.0058 0 0.0065 0.0027 0 0


_U_ 0.0058 0 0.0033 0.0067 0 0
le

_TH 0 0.0212 0 0 0.0270 0.0175


THE 0 0.0148 0 0 0.0202 0.0191
E

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 12.1: Trening i test skup za klasifikaciju tekstova prema jeziku. Za svaki 3-gram prikazana je njegova
frekvencija u tekstu S1 i E1.

Prilikom klasifikacije biće korišćeno Euklidsko rastojanje



⎸𝑚
⎸∑︁
𝑑(𝑥, 𝑦) = ⎷ (𝑥𝑖 − 𝑦𝑖 )2
𝑖=1
12.3. Klasifikacija 190

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


𝑑(𝐸2, 𝐸1) = 0.0149

𝑑(𝐸3, 𝑆1) = 0.0397


𝑑(𝐸3, 𝐸1) = 0.0141

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

6)
da je S3 tekst na srpskom, E2 tekst na engleskom i E3 takode, tekst na engleskom jeziku. Posebno je zanimljivo
da tekstovi S3 i E2 po svom sadržaju nemaju dodira sa instancama za trening S1 i E1 što ne ometa postupak
klasifikacije.

01
(2
12.3.3 Učenje stabala odlučivanja
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
je
može biti da ili ne. Kada misli da je postavio dovoljno pitanja, igrač može dati svoj sud o kom predmetu se radi
i igra se završava. Očito, proces ispitivanja se može predstaviti u vidu stabla koje u svakom čvoru ima po jedno
an
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
d

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
iz

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
o

atributa i vrednost ciljne promenljive za tu instancu.


sk

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
n

promenljive. Instance su opisane vrednostima svojih atributa. Klasifikuju se polazeći od korena, spuštajući se
ro

niz granu koja odgovara vrednosti testiranog atributa instance koju klasifikujemo. Klasa se dodeljuje instanci
kad se dode do lista.
kt

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 (npr. jezik, datum objavljiva-
nja, datum poslednjeg iznajmljivanja itd.). Knjige za koje se predvida da neće biti skoro tražene se mogu smestiti
le

u magacin. Istraživanje je radeno u biblioteci univerziteta Harvard. Sredinom devedesetih stabla odlučivanja
E

su primenjena u klasifikaciji tumora i prognozi njihovog ponašanja. Svaka instanca je opisivana pomoću 31 atri-
buta, 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.
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
191 12. Nadgledano mašinsko učenje

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 12.15.

Algoritam: ID3(𝑃 𝑟𝑖𝑚𝑒𝑟𝑖, 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖)

Ulaz: 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖 je skup instanci za trening, a 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 je lista atributa koji se mogu testirati u čvorovima stabla.
Izlaz: Stablo odlučivanja koje odgovara datim instancama
1. Napraviti koreni čvor stabla 𝑅.

2. Ako sve instance iz 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖 pripadaju istoj klasi, vratiti čvor 𝑅 sa oznakom te klase.

6)
3. Ako je 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 prazna lista, vrati čvor 𝑅 označen oznakom najčešće klase koja se javlja u 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖.

01
4. U suprotnom

(2
– Neka je 𝐴 ∈ 𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 najbolji* atribut za testiranje u odnosu na 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖
– Neka je 𝐴 atribut koji se testira u 𝑅
– Za svaku moguću vrednost 𝑣𝑖 atributa 𝐴
* Dodaj granu iz 𝑅 koja odgovara testu 𝐴 = 𝑣𝑖 je
an
* Neka je 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖𝑣𝑖 podskup od 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖 takav da svi njegovi elementi imaju vrednost 𝑣𝑖 atributa
𝐴
d

* Ako je 𝑃 𝑟𝑖𝑚𝑒𝑟𝑖𝑣𝑖 prazan, onda na dodatu granu iz 𝑅 dodati list sa oznakom najčešće klase u
𝑃 𝑟𝑖𝑚𝑒𝑟𝑖
iz

* U suprotnom na dodatu granu nadovezati podstablo ID3(𝑃 𝑟𝑖𝑚𝑒𝑟𝑖𝑣𝑖 ,𝐴𝑡𝑟𝑖𝑏𝑢𝑡𝑖 ∖ {𝐴})

3. Vratiti 𝑅.
o

* Atribut je najbolji prema nekom statističkom kriterijumu.


sk
n

Slika 12.15: Algoritam ID3


ro

Bitno je pitanje statističkog kriterijuma koji će biti korišćen za izbor najboljeg atributa za testiranje u nekom
kt

č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
le

meru neuredenosti nekog sistema. Ako sa 𝑝𝑖 označimo verovatnoću da instanca pripada 𝑖-toj klasi, onda se
E

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 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. Dobitak informacije stoga poredstavlja
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:
∑︁ |𝑆𝑣 |
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐴) = 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆) − 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆𝑣 ) (12.2)
|𝑆|
𝑣∈𝑉 𝑟𝑒𝑑(𝐴)
12.3. Klasifikacija 192

gde je 𝑐 broj klasa, odnosno vrednosti ciljnog atributa, 𝑝𝑖 udeo elemenata skupa 𝑆 koji pripadaju klasi 𝑖 u celom
skupu 𝑆 , 𝑉 𝑟𝑒𝑑(𝐴) predstavlja skup svih mogućih vrednosti atributa 𝐴, a 𝑆𝑣 = {𝑠 ∈ 𝑆|𝐴(𝑠) = 𝑣}.
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
𝐸𝑟𝑟(𝑆) = 1 − max 𝑝𝑖
𝑖

Za ovu meru se može definisati dobitak analogan opisanom dobitku informacije ukoliko se u izrazu 12.2 entropija
zameni greškom klasifikacije.

Primer 12.12. U tabeli 12.2 su date instance koje opisuju različite životinje, sa datom klasifikacijom koja
označava da li je životinja opasna po čoveka. Izdvojili smo nekoliko karakteristika koje bi mogle biti relevantne
u odredivanju vrednosti ciljnog atributa, ali smo namerno dodali dva atributa koji nisu relevantni — broj nogu i
parnost prosečne visine u okviru vrste, izražene u centimetrima.

6)
Životinja Veličina Ishrana Otrovna Noge Parnost Opasna
Lav Velika Meso Ne 4 Neparna Da

01
Mačka Mala Meso Ne 4 Neparna Ne
Koza Mala Biljke Ne 4 Parna Ne

(2
Zec Mala Biljke Ne 4 Neparna Ne
Komodo zmaj Velika Meso Da 4 Neparna Da
Tabela 12.2: Skup primera za trening
je
an
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:
d

2 2 3 3
𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆) = − log2 − log2 = 0.971
iz

5 5 5 5
Ukoliko se izvrši podela instanci po vrednosti prvog atributa, dobijamo
o
sk

𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆|𝑀 𝑎𝑙𝑎) = −1 · log2 1 − 0 · log2 0 = 0


n

𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆|𝑉 𝑒𝑙𝑖𝑘𝑎) = −0 · log2 0 − 1 · log2 1 = 0


ro

2 3
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑉 𝑒𝑙𝑖𝑐𝑖𝑛𝑎) = 0.971 − · 0 − · 0 = 0.971
kt

5 5
Slično se dobija:
le

𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐼𝑠ℎ𝑟𝑎𝑛𝑎) = 0.42


E

𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑂𝑡𝑟𝑜𝑣𝑛𝑎) = 0.322


𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑁 𝑜𝑔𝑒) = 0
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑃 𝑎𝑟𝑛𝑜𝑠𝑡) = 0.171
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 12.16. U slučaju datih primera za učenje, dobijeno
stablo je bilo očigledan uzbor i bez primene bilo kakve metodologije.
Nešto komplikovanije stablo odlučivanja može se dobiti dodavanjem primera iz tabele 12.3.

Životinja Veličina Ishrana Otrovna Noge Parnost Opasna


Zmija Mala Meso Da 0 Parna Da
Pčela ubica Mala Biljke Da 6 Parna Da
Morska krava Velika Biljke Ne 0 Parna Ne
Tabela 12.3: Dodatni primeri za trening
193 12. Nadgledano mašinsko učenje

VELIČINA

mala velika

NE DA

Slika 12.16: Jednostavno stablo odlučivanja

Jedno ručno konstruisano stablo koje je saglasno sa podacima za trening je dato na slici 12.17. Izbor lošeg

6)
atributa za testiranje u korenom čvoru je namerno učinjen. To dovodi do potrebe za ponavljanjem istih testova u
levom i desnom podstablu, pošto informacija dobijena testiranjem u kornenu nije relevantna za odredivanje klase

01
instance. Takode, u slučaju životinjske vrste sa parnom prosečnom visinom koja je otrovna, imamo 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 dosta bolje stablo odlučivanja.

(2
PARNOST

parna
je
neparna
an
OTROVNA OTROVNA

ne da ne da
d
iz

VELIČINA ISHRANA VELIČINA DA

mala velika biljke meso mala velika


o

NE ISHRANA DA DA NE ISHRANA
sk

biljke meso biljke meso


n

NE DA NE DA
ro
kt

Slika 12.17: Ručno konstruisano stablo odlučivanja


le

Vrednosti entropije i dobitka informacije se sada razlikuju:


E

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

5 3
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑉 𝑒𝑙𝑖𝑐𝑖𝑛𝑎) = 1 − · 0.971 − · 0.918 = 0.049
8 8
Slično se dobija:

𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝐼𝑠ℎ𝑟𝑎𝑛𝑎) = 0.189


𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑂𝑡𝑟𝑜𝑣𝑛𝑎) = 0.549
12.3. Klasifikacija 194

𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑁 𝑜𝑔𝑒) = 0
𝐷𝑜𝑏𝑖𝑡𝑎𝑘(𝑆, 𝑃 𝑎𝑟𝑛𝑜𝑠𝑡) = 0.156
Posle dodavanja novih instanci, najbolji atributi za testiranje su Otrovnost i Ishrana. Rekurzivnom primenom
ovog postupka dobija se stablo na slici 12.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.

OTROVNA

ne da

VELIČINA DA

mala velika

6)
NE ISHRANA

01
biljke meso

(2
NE DA

je
Slika 12.18: Stablo odlučivanja konstruisano pomoću ID3 algoritma
an
Učenje stabala odlučivanja nije formulisano u skladu sa osnovnom shemom dizajna algoritama nadgledanog
d

učenja. Kao i drugi metodi učenja, ID3 se može shvatiti kao pretraga skupa dopustivih modela za onim koji
„najbolje“ odgovara podacima za trening, ali nije lako formulisati tačan kriterijum u odnosu na koji je dobijeno
iz

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
o

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
sk

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
n

sa podacima za trening. Pošto nema vraćanja u pretrazi (backtracking ), već se stablo gradi od jednostavnijeg
ro

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
kt

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
le

kojim se često vode i naučnici - Okamovom oštricom: entitete ne treba umnožavati preko potrebe, odnosno
E

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, predstaljaju manje skupove ovakvih pravila, možemo ih
smatrati jednostavnijim.
Kako formulacija učenja stabala odlučivanja nije u okvirima ranije diskutovane sheme dizajna algoriama
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 dubitnu stabla, takav skup modela je očigledno vrlo bogat i stoga postoji opasnost od
preprilagodavanja. Jedan pristup rešavanju ovog problema je ograničavanje maksimalna dubina 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.
195 12. Nadgledano mašinsko učenje

12.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
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
su klasifikovani kao da nisu računarski, tada je preciznost u tom primeru
𝑟+𝑜
𝑝=
𝑛
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 slučaj sa testovima koji ustanovljavaju da li je pacijent oboleo od neke bolesti. Neka bolest ima samo 1%
ljudi u populaciji. Test koji bi uvek prijavljivao da pacijent nema bolest bi imao preciznost od 99%, ali je

6)
neupotrebljiv. Stoga je u takvim slučajevima bitna mera osetljivost klasifikatora, odnosno njegova mogućnost
da primeti instance koje se traže (npr. bolesne pacijente). Opštije, neka su date dve klase 𝐶+ i 𝐶− koje
smatramo pozitivnim i negativnim primerima neke kategorije. Na primer pacijenti koji imaju i pacijenti koji

01
nemaju neku bolest. Tada pod stvarno pozitivnim instancama podrazumevamo pozitivne instance kojie su
prepoznate kao pozitivne. Pod stvarno negatinvim, instance koje su negativne i prepoznate kao negativne. Pod

(2
lažno pozitivnim podrazumevamo instance koje su negativne, ali su greškom u klasifikaciji proglašene pozitivnim
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
je
matrici konfuzije koja po vrstama prikazuje kako su instance klasifikovane, a po kolonama prikazuje koje su
stvarne klase instanci. Ova matrica je prikazana tabelom 12.4.
an
P N
KP
d

𝑆𝑃 𝐿𝑃
KN 𝐿𝑁 𝑆𝑁
iz

Tabela 12.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)
o

ili negativne (N).


sk

Kada su poznati ovi brojevi, udeo stvarno pozitivnih instanci, odnosno osetljivost je definisana kao:
n
ro

𝑆𝑃
𝑈 𝑆𝑃 =
𝑆𝑃 + 𝐿𝑁
kt

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
le

𝑆𝑁
E

𝑈 𝑆𝑁 =
𝑆𝑁 + 𝐿𝑃
Udeo lažno pozitivnih i lažno negativnih se definišu slično:
𝐿𝑃 𝐿𝑁
𝑈 𝐿𝑃 = 𝑈 𝐿𝑁 =
𝐿𝑃 + 𝑆𝑁 𝐿𝑁 + 𝑆𝑃
Preciznost se može izračunati kao
𝑆𝑃 + 𝑆𝑁
𝑃 𝑟𝑒𝑐 =
𝑆𝑃 + 𝐿𝑃 + 𝑆𝑁 + 𝐿𝑁
Primer 12.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 12.13
Odavde se mogu izračunati mere kvaliteta:
398
𝑃 𝑟𝑒𝑐 = = 0.995
400
2
𝑈 𝑆𝑃 = = 0.5
4
12.4. Tehnike evaluacije i kofigurisanja algoritma učenja 196

P N
KP 2 0
KN 2 396
Tabela 12.5: Matrica konfuzije vezana za klasifikaciju obolelih.

396
𝑈 𝑆𝑁 = =1
396
0
𝑈 𝐿𝑃 = =0
396
2
𝑈 𝐿𝑁 = = 0.5
4
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.

6)
12.4 Tehnike evaluacije i kofigurisanja algoritma učenja

01
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

(2
trenira na jednom skupu podataka, a da se evaluira na odvojenom skupu podataka za testiranje. Pritom se
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
je
u zavisnosti od toga koji je podskup izabran. Pouzdaniji način evaluacije naučenog znanja je takozvana unakrsna
validacija. Ceo skup podataka kojim se raspolaže se deli na 𝑛 približno jednakih podskupova. Jedan podskup
an
se izdvaja i trening se vrši na ostalih 𝑛 − 1 podskupova. Posle treninga, kvalitet naučenog znanja se ocenjuje
na izdvojenom podskupu. Ovaj postupak se ponavlja za sve ostale izdvojene podskupove i kao finalna ocena
d

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 stabilniju ocenu kvaliteta. Pored
iz

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.
o

Iako nije očigledno da je u vezi sa tehnikama evaluacije, u nastavku će biti razmotreno dugo odlagano
sk

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 parametera 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
n

načine, pri čemu različite konfiguracije daju različite modele za iste ulazne podatke. U nastavku će biti reči
ro

samo o izboru parametra 𝜆, ali se diskusija odnosi i na probleme konfigurisanja algoritama učenja u opštijem
smislu.
kt

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
le

vrednosti uzrokuju loše rezultate zbog premale fleksibilnosti modela. Poželjne vrednosti parametra se obično
E

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 konkrentom 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, ugrubo rečeno, model za svaku od tih vrednosti evaluira i bira
se najbolji. Ipak, postavlja se pitanje kako se vrši evluacija.
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 nejbolji 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
197 12. Nadgledano mašinsko učenje

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 posupak se ponavlja za
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
unakrsnom validacijom pošto se u svakom od 𝑛 koraka unakrsne validacije vrši puna nova unakrsna validacija.
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
Zadatak 12.1. Mašinsko učenje se bavi proučavanjem:
(a) dedukcije;
(b) pretrage;

6)
(c) generalizacije;
(d) optimizacije;

01
(e) ne znam.
Pitanje 12.1. Koji od narednih modela su linearni?

(2
ˆ 𝑦 = 𝛽1 𝑥 + 𝛽2 𝑧
ˆ 𝑦 = 𝛽0 + 𝛽1 𝑥 2 + 𝛽2 𝑥 3
ˆ 𝑦^ = 𝛽^0 + 𝛽^1 log(𝑥) + 𝛽^1 log(𝑥)
je
an
ˆ 𝑦^ = 𝛽^0 + 𝛽^1 log(𝑥) + 𝛽^1 log(sin(𝑥))
d

Pitanje 12.2. Ako se učenje vrši sa siromašnim skupom dopustivih modela, da li to može dovesti do loših
iz

rezultata?
Pitanje 12.3. Ako se učenje vrši sa bogatim skupom dopustivih modela, da li to može dovesti do loših rezultata?
o

Pitanje 12.4. Šta je čest uzrok lošeg ponašnja modela koji ima dobre mere kvaliteta na trening podacima?
sk

Pitanje 12.5. Koju raspodelu se pretpostavlja da ima šum pri korišćenju linearne regresije?
n

Pitanje 12.6. Šta je osnovna mera kvaliteta linearne regresije?


ro

Pitanje 12.7. Navesti definiciju srednjekvadratne greške.


kt

Zadatak 12.2. 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
le

iz datih podataka. Kog znaka je koeficijent korelacije i šta to znači?


Zadatak 12.3. Vrednost evra 3. juna je 100 dinara, 4. juna je 101 dinar, a 5. juna je 105 dinara. Pomoću
E

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 12.4. 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 12.5. 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
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.
Zadatak 12.6. 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?
12.4. Tehnike evaluacije i kofigurisanja algoritma učenja 198

Zadatak 12.7. U toku dana praćena je temperatura vazduha. U 8:00 ujutru je bilo 15 stepeni, a u 10:00
je bilo 18 stepeni. Linearnom regresijom odrediti model koji predvidja temperaturu u budućnosti i proceniti
temperaturu u 12:00 i 14:00.
Zadatak 12.8. Telo se krece po putu konstanantnom brzinom. Nakon jedne sekunde telo je prešlo 6m od
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 12.8. Navesti barem dva algoritma klasifikacije.
Pitanje 12.9. Da li su modeli koje grade metode zasnovane na instancama implicitni ili eksplicitni?
Pitanje 12.10. Kako se zove metod klasifikacije koji koristi 𝑛 instanci za koje je rastojanje do instance koja
se klasifikuje najmanje?
Pitanje 12.11. Navesti primer funkcije rastojanja koja se može koristiti u metodi 𝑛 najbližih suseda.

6)
Pitanje 12.12. Da li su u metodu 𝑛 najbližih suseda rezultati bolji za veće vrednosti 𝑛?
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 𝑛?

01
Pitanje 12.13. Instanca (1, 0) pripada klasi 𝐴, instanca (9, 1) pripada klasi 𝐵 , a instanca (15, 19) pripada

(2
klasi 𝐶 . Kojoj od ovih klasa bi algoritam 𝑛-najbližih suseda pridružio instancu (2, 2) za 𝑛 = 1?
Zadatak 12.9. 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)? je
an
Zadatak 12.10. 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
d

𝑋1 𝑋2 𝑋3 Klasa Test skup


iz

1 1 0 A 𝑋1 𝑋2 𝑋3 Klasa
1 0 2 A 0 0 0 A
2 2 3 A 3 3 3 A
o

3 2 4 B 1 3 4 B
sk

1 4 3 B 4 5 3 B
4 3 3 B
n

Zadatak 12.11. 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,
ro

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,
kt

1, C)? Kao meru rastojanja koristiti Euklidovo rastojanje u ravni. Odrediti preciznost i udele tačno i lažno
pozitivnih.
le

Pitanje 12.14. Koliko ima 2-grama u reči matematika i koje su njihove frekvencije u ovoj reči?
E

Pitanje 12.15. Da li, za konačnu azbuku, 𝑛-grama za fiksno 𝑛 ima: konačno mnogo, prebrojivo mnogo ili
neprebrojivo mnogo?
Pitanje 12.16. Šta čini 𝑛-gramski profil instance?
Pitanje 12.17. Navesti barem dve funkcije rastojanja koje se mogu koristiti za klasifikaciju 𝑛-gramskih profila
metodom 𝑛 najbližih suseda.
Pitanje 12.18. Navesti ime barem jednog algoritma za konstrukciju stabla odlučivanja na osnovu skupa in-
stanci za trening.
Pitanje 12.19. Navesti algoritam ID3.
Pitanje 12.20. Šta vraća algoritam ID3 u slučaju da je lista atributa prazna?
Pitanje 12.21. Šta vraća algoritam ID3 u slučaju da sve ulazne instance pripadaju istoj klasi?
Pitanje 12.22. Da li algoritam ID3 ima tendenciju da konstruiše plića ili dublja stabla odlučivanja?
199 12. Nadgledano mašinsko učenje

Pitanje 12.23. Koje se mere obično koriste za izbor najpogodnijeg atributa prilikom izgradnje stabla odlučivanja?
Pitanje 12.24. Navesti definiciju veličine 𝐸𝑛𝑡𝑟𝑜𝑝𝑖𝑗𝑎(𝑆).
Pitanje 12.25. Ako se razmatra entropija kuglica rasporedenih u dve činije, kada ona najveća, a kada naj-
manja?
Pitanje 12.26. Ako skup sadrži podjednako instanci iz dve klase, kolika je vrednost entropije za taj skup?
Pitanje 12.27. Kako se definiše entropija skupa 𝑆 podeljenog na podskupove veličina 𝑝1 , 𝑝2 , . . ., 𝑝𝑐 ?
Pitanje 12.28. 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?
Pitanje 12.29. Kakva su pravila koja se lako mogu izvesti iz stabla odlučivanja?
Zadatak 12.12. Na osnovu datih primera, konstruisati stablo odlučivanja za ciljnu promenljiu koja odreduje
da li je jagoda zrela.

6)
Boja Veličina Zrela
Zelena Mala Ne

01
Crvena Mala Da
Zelena Velika Ne

(2
Crvena Velika Da
Zadatak 12.13. Konstruisati stablo odlučivanja za sledeće instance koje govore o životinjama. Odgovor
detaljno obrazložiti.
Otrovnost Boja
je
Opasna
an
Otrovna Zelena Da
Neotrovna Zelena Ne
d

Otrovna Crvena Da
iz

Neotrovna Crvena Ne
Zadatak 12.14. Na osnovu sledećih podataka, konstruisati stablo odlučivanja dubine 1 korišćenjem mere
o

„greška klasifikacije“.
sk

A 2 1 2 1 2 1 2 1
B 1 1 2 3 3 3 1 2
n

C 2 2 1 2 1 3 3 3
Klasa + - + + - + - +
ro

Izračunati preciznost dobijenog stabla odlučivanja na sledećem test skupu.


kt

A 1 1 1 3
B 1 2 2 3
le

C 1 1 3 1
Klasa - + - +
E

Zadatak 12.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
preciznost ovog stabla na brojevima 2,4,5 i 7?
Zadatak 12.16. Na osnovu mere „greška klasifikacije“ i datih podataka, odabrati najbolji atribut za izgradnju
stabla odlučivanja.
𝑋1 𝑋2 𝑋3 Klasa
T T T A
F T T A
F T T A
F F T A
F F F A
F F F B
T F F B
T F F B
T T F B
T T F B
12.4. Tehnike evaluacije i kofigurisanja algoritma učenja 200

Zadatak 12.17. Na osnovu mere „greška klasifikacije“ i datih podataka izgraditi stablo odlučivanja dubine 1.
𝑋1 𝑋2 𝑋3 Klasa
T T T B
F T T B
F T T A
F F T A
F F F A
T F F B
T T F B
T T F B
T F F A
T F F A

Zadatak 12.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

6)
preciznost predvia.nja tog stabla na sledećem skupu: kokoška, kornjača, konj, lav?

01
Zadatak 12.19. Na osnovu sledećih podataka, konstruisati stablo odlučivanja korišćenjem mere „greška kla-
sifikacije“.

(2
𝑋1 𝑋2 𝑋3 Klasa
A M F 𝐶0
A D F 𝐶0
L
L
M
D
F
F
je
𝐶0
an
𝐶1
L M G 𝐶0
L D G 𝐶1
d

A D G 𝐶1
iz

Pitanje 12.30. Koja je osnovna mera kvaliteta klasifikatora?


Pitanje 12.31. Stablo odlučivanja je za 5 instanci ponudilo klase 𝐴, 𝐴, 𝐵, 𝐵, 𝐴, dok su ispravne klase bile
o

𝐴, 𝐴, 𝐴, 𝐵, 𝐵 . Kolika je preciznost ovog stabla odlučivanja?


sk

Pitanje 12.32. Koji procenat podataka se u mašinskom učenju obično uzima za trening podatke, a koji za test
n

podatke?
ro

Pitanje 12.33. Šta se, radi pouzdanije evaluacije klasifikatora, često koristi umesto jednog deljenja na trening
i test podatke?
kt

Pitanje 12.34. 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?
le

Pitanje 12.35. Kako se sprovodi unakrsna validacija?


E

Pitanje 12.36. U problemu klasifikacije, za koje instance kažemo da su lažno pozitivne?


Pitanje 12.37. Kako se definiše veličina USP (udeo stvarno pozitivnih)?
Glava 13

Nenadgledano učenje

6)
01
(2
je
an
d
iz
o
sk
n
ro
kt
le
E

201

You might also like