Vještačka Inteligencija

You might also like

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

Predrag Janicic

Mladen Nikolic

Vesta
cka inteligencija
c
Juni
2010

2
Autori:
dr Predrag Janicic, vanredni profesor Matematickog fakulteta u Beogradu
email: janicic@matf.bg.ac.rs
url: www.matf.bg.ac.rs/~janicic
Mladen Nikolic, asistent na Matematickom fakultetu u Beogradu
email: nikolic@matf.bg.ac.rs
url: www.matf.bg.ac.rs/~nikolic

CKA

VESTA
INTELIGENCIJA

Sva prava zadrzana. Nijedan deo ovog materijala ne moze biti reprodukovan niti smesten
u sistem za pretrazivanje ili transmitovanje u bilo kom obliku, elektronski, mehanicki,
fotokopiranjem, smanjenjem ili na drugi nacin, bez prethodne pismene dozvole autora.

Sadrzaj
1

Uvod
1.1 Uska i opsta vestacka inteligencija . . . . . . . . . . . . . . . . .

9
11

Logika i logicko programiranje

15

Iskazna logika
2.1 Sintaksa iskazne logike . . . . . . . . . . . . . . . . . . . . . .
2.2 Semantika iskazne logike . . . . . . . . . . . . . . . . . . . . .
2.2.1 Valuacija, interpretacija, model; zadovoljive, valjane,
porecive i kontradiktorne formule . . . . . . . . . . .
2.2.2 Istinitosne tablice . . . . . . . . . . . . . . . . . . . . .
2.2.3 Logicke posledice, logicki ekvivalentne formule,
supstitucija . . . . . . . . . . . . . . . . . . . . . . . .
2.2.4 Potpuni skupovi veznika . . . . . . . . . . . . . . . .
2.2.5 Normalne forme . . . . . . . . . . . . . . . . . . . . .
2.2.6 DejvisPatnamLogmanLovelandova procedura . .
2.2.7 Primer modelovanja problema u iskaznoj logici . . .

Logika prvog reda


3.1 Sintaksa logike prvog reda . . . . . . . . . . . . . . . . . . . .
3.2 Semantika logike prvog reda . . . . . . . . . . . . . . . . . .
3.2.1 Valuacija, interpretacija, model; zadovoljive, valjane,
porecive i kontradiktorne formule . . . . . . . . . . .
3.2.2 Logicke posledice, logicki ekvivalentne formule,
supstitucija . . . . . . . . . . . . . . . . . . . . . . . .
3.2.3 Normalne forme . . . . . . . . . . . . . . . . . . . . .
3.2.4 Unifikacija . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.5 Metod rezolucije . . . . . . . . . . . . . . . . . . . . .
3.3 Prirodna dedukcija . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Sazetak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROLOG
4.1 Interpretatori i kompilatori . . . .
4.2 Sintaksa i semantika u PROLOG-U
4.3 Pocetni primeri . . . . . . . . . . .
4.4 PROLOG i metod rezolucije . . . .
4.5 Stablo izvodjenja . . . . . . . . . .
3

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

. .
. .

17
17
19

. .
. .

19
21

.
.
.
.
.

.
.
.
.
.

23
26
28
30
31

. .
. .

35
36
39

. .

39

.
.
.
.
.
.

.
.
.
.
.
.

43
48
52
57
67
72

.
.
.
.
.

73
73
74
75
77
78

.
.
.
.
.


SADRZAJ

4
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13

II

Operator secenja . . . . . . . . . . . . . . .
Negacija kao neuspeh . . . . . . . . . . . .
Liste . . . . . . . . . . . . . . . . . . . . . .
Ugradjeni predikati . . . . . . . . . . . . .
Implementacija KNF algoritma . . . . . .
Implementacija DPLL algoritma . . . . .
Pretraga grafa . . . . . . . . . . . . . . . .
Primer resavanje jednostavnog problema

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

Pretraga

79
83
85
89
92
94
97
97

101

Resavanje problema kao pretraga


103
5.1 Kvalitet algoritama pretrage . . . . . . . . . . . . . . . . . . . . . 105
5.2 Neinformisana i informisana pretraga . . . . . . . . . . . . . . . 106

Pohlepna pretraga
6.1 Penjanje uzbrdo u slucaju diferencijabilne funkcije cilja . . . . .

109
110

Odredivanje
puteva u grafu

7.1 Obilazak grafa u dubinu i s irinu . . . . . . . . . . . . . . .


7.2 Dejkstrin algoritam . . . . . . . . . . . . . . . . . . . . . . .
7.3 A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3.1 Primer upotrebe algoritma A* . . . . . . . . . . . . .
7.3.2 Specijalni slucajevi . . . . . . . . . . . . . . . . . . .
7.3.3 Primer upotrebe algoritma A* na uniformnoj mrezi
7.3.4 Svojstva algoritma A* . . . . . . . . . . . . . . . . .
7.3.5 Implementaciona pitanja . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

113
113
114
115
117
119
120
124
124

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

127
127
129
131
132
132
133
133
134
137
138
139
139
140
141
142
142
143

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

Programiranje logickih igara


8.1 Razvoj automatskog igranja logickih igara i osnovni koncepti
8.2 Legalni potezi i stablo igre . . . . . . . . . . . . . . . . . . . . .
8.3 Otvaranje i biblioteka partija . . . . . . . . . . . . . . . . . . . .
8.4 Sredisnjica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.1 Staticka ocena pozicije i funkcija evaluacije . . . . . . .
8.4.2 Pretrazivanje stabla igre . . . . . . . . . . . . . . . . . .
8.4.3 Algoritam minimaks . . . . . . . . . . . . . . . . . . . .
8.4.4 Algoritam alfa-beta . . . . . . . . . . . . . . . . . . . . .
8.4.5 Heuristika killer . . . . . . . . . . . . . . . . . . . . . . .
8.4.6 Iterativni alfa-beta/killer algoritam . . . . . . . . . . .
8.4.7 Stabilno pretrazivanje . . . . . . . . . . . . . . . . . . .
8.4.8 Prekidi i vremenska ogranicenja . . . . . . . . . . . . .
8.4.9 Slozenost algoritama za pretrazivanje stabla igre . . . .
8.5 Zavrsnica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.5.1 Skupovi pozicija kao klase ekvivalencija . . . . . . . . .
8.5.2 Tekstovi saveta . . . . . . . . . . . . . . . . . . . . . . .
8.6 Implementaciona pitanja . . . . . . . . . . . . . . . . . . . . . .


SADRZAJ
9

III

Genetski algoritmi
9.1 Motivacija za genetske algoritme . . . . . . . . . . . . . .
9.2 Osnovni genetski algoritam . . . . . . . . . . . . . . . . .
9.3 Reprezentacija jedinki . . . . . . . . . . . . . . . . . . . .
9.3.1 Binarna reprezentacija . . . . . . . . . . . . . . . .

9.4 Funkcija prilagodenosti


. . . . . . . . . . . . . . . . . . .
9.5 Inicijalizacija i zaustavljanje . . . . . . . . . . . . . . . . .
9.6 Selekcija . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.1 Ruletska selekcija . . . . . . . . . . . . . . . . . . .
9.6.2 Turnirska selekcija . . . . . . . . . . . . . . . . . .
9.7 Reprodukcija i genetski operatori . . . . . . . . . . . . . .
9.7.1 Ukrstanje . . . . . . . . . . . . . . . . . . . . . . .
9.7.2 Mutacija . . . . . . . . . . . . . . . . . . . . . . . .
9.8 Zaustavljanje . . . . . . . . . . . . . . . . . . . . . . . . . .
9.9 Parametri algoritma . . . . . . . . . . . . . . . . . . . . . .
9.10 Svojstva genetskih algoritama . . . . . . . . . . . . . . . .
9.11 Primer primene genetskih algoritama evolucija agenta
9.11.1 Implementaciona pitanja . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

Masinsko ucenje

10 Uvod
10.1 Generalizacija i apstrakcija . . . . . . . . . . . .
10.2 Primer problema ucenja . . . . . . . . . . . . .
10.3 Nadgledano i nenadgledano ucenje . . . . . . .
10.4 Ciljna funkcija i modeli podataka . . . . . . . .
10.5 Podaci . . . . . . . . . . . . . . . . . . . . . . .
10.5.1 Reprezentacija podataka . . . . . . . . .
10.5.2 Podaci za trening i podaci za testiranje
10.6 Dizajn sistema koji uci . . . . . . . . . . . . . .

147
147
148
149
149
150
151
151
152
153
153
153
154
154
155
155
156
157

159
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

161
162
163
166
166
167
167
168
168
171
171
172
173
177
183
186

11 Klasifikacija
11.1 Metode klasifikacije zasnovane na instancama . . . . .
11.1.1 Metoda n-najblizih suseda . . . . . . . . . . . . .
11.1.2 N-grami . . . . . . . . . . . . . . . . . . . . . . .
11.2 Ucenje stabala odlucivanja . . . . . . . . . . . . . . . . .
11.3 Mere kvaliteta i tehnike evaluacije klasifikacije . . . . .

11.4 Preterano prilagodavanje


modela podacima za trening

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

12 Regresija
12.1 Linearna regresija . . . . . . . . . . . . . . . . . . . . . .
12.2 Pretpostavke linearne regresije . . . . . . . . . . . . . .
12.3 Ispitivanje kvaliteta linearne regresije . . . . . . . . . .

12.4 Preterano prilagodavanje


modela podacima za trening

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

189
. 189
. 192
. 192
. 196

13 Klasterovanje

199


SADRZAJ

IV

Resenja zadataka

14 Resenja zadataka

201
203

Predgovor
Ovo su beleske koji prate predavanja i vezbe iz predmeta Vestaca inteligencija koje smo drzali akademskih godina 2007/08, 2008/09, 2009/10. Funkcija
beleski je da olaksaju pracenje predavanja i da sluze kao podsetnik tokom

pripremanja ispita. Oni ne mogu da zamene pohadanje


nastave i korisc enje
druge literature.

Predrag Janicic i Mladen Nikolic


Beograd, juni 2010.

SADRZAJ

Glava 1

Uvod
Smatra se da je vestacka inteligencija kao informaticka disciplina ustanovljena
na znamenitoj konferenciji The Dartmouth Summer Research Conference on Artificial Intelligence u Darmutu (Sjedinjene Americke Drzave), 1956. godine. Tom
prilikom predlozeno je, od strane Dzona Makartija, i samo ime discipline, ne
sasvim srecno, jer je to ime c esto izazivalo nedumice i podozrenje. Konferencija
je trajala mesec dana i bila je pre svega usmerena ka profilisanju nove oblasti
koja je nastajala. Konferenciju su organizovali Dzona Makartija, Marvin Min
ski, Natanijel Rocester i Klod Senon.
Vestacka inteligencija je jedna od oblasti racunarstva koja se poslednjih decenija
najbrze razvija. Paralelno sa tim burnim razvojem rastu i ocekivanja od ove
discipline. Dok se za neke oblasti racunarstva vec smatra da su zaokruzene i da
se u njima ne ocekuju novi znacajni prodori, od vestacke inteligencije se rezultati tek ocekuju, uprkos tome s to su vec razvijeni mnogi inteligentni sistemi
koji funkcionisu izuzetno dobro. Ovo mozda mozemo da objasnimo time s to ti
inteligentni sistemi, i pored varljivih spoljnih manifestacija, funkcionisu na
principima koje, najcesc e ne mozemo smatrati zaista inteligentnim. Time, naravno, vestacka inteligencija samo dovbija na atraktivnosti, a novi eksperimenti
i teorijska istrazivanja predstavljaju put ka novim primenama u najrazlicitijim
oblastima. Kako je razvoj vestacke inteligencije oduvek bio zasnovan na komplementarnom povezivanju teorije i eksperimenata, tako i buduci razvoj zahteva prosirivanje i ucvrsc ivanje teorijskih znanja, pre svega matematickih,
ali i znanja o specificnim oblastima primene, kao i njihovu adekvatnu formalizaciju.
U uvodnom delu pokusajmo da odgovorimo i na osnovna pitanja s ta je to
inteligencija i s ta je to vestacka inteligencija. Uobicajeno pod inteligencijom
podrazumevamo sposobnost usvajanja, pamcenja i obrade odredjenjih znanja.
Ipak, nijedna definicija vestacke inteligencije nije opste prihvacena (bar ne neka
koja bi odgovarala uobicajenom, svakodnevnom smislu i istovremeno precizno
i formalno opisivala pojam). U svakom slucaju mozemo smatrati da inteligencija podrazumeva bar dve sposobnosti: sposobnost pamcenja, skladistenja znanja
i mogucnost njegove obrade. Osoba (ili masina) bez ikakvog znanja ne moze
biti smatrana inteligentnom. Takodje, inteligentnom ne moze biti smatrana
ni osoba (ili masina) sa ogromnom kolicinom statickog znanja odnosno podataka, ali bez sposobnosti da to znanje obradjuje i da resava probleme u vezi
sa njim. Postoje i drugi aspekti inteligencije. Jedan od njih je brzina obrade

10

1 Uvod

znanja, koja je, kada su u pitanju racunari, zavisna ne samo od procedura za


zakljucivanje, vec, naravno, i od tehnickih karakteristika pojedinog racunara.
Sposobnost ucenja - usvajanja novih znanja takodje je jedan od aspekata inteligencije, iako je mozemo uvrstiti u sposobnost resavanja problema. Aspektom inteligencije mozemo smatrati i sposobnost komunikacije sa drugim
inteligentnim bicima (masinama), koju takodje mozemo uvrstiti u resavanje
problema. Smatracemo, dakle, da bice ili masina imaju atribute intelignetnog,
ako imaju navedena svojstva. Ako se radi o masini odnosno uredjaju bilo koje
vrste sa navedenim svojstvima, govoricemo o vestackoj inteligenciji. Podsetimo se i jedne klasicne definicije vestacke inteligencije: ako su u odvojene
dve prostorije smestene jedna ljudska osoba i neka naprava i ako na identicne
probleme one pruzaju odgovore na osnovu kojih se ne moze pogoditi u kojoj sobi je c ovek, a u kojoj naprava, onda mozemo smatrati da ta naprava
ima atribute vestacke inteligencije. Bez obzira na sve manjkavosti ovih opisa,
necemo pokusavati da pronadjemo bolje opise pojmova o kojima je rec. Nakon
svega, dobro je navesti i jednu rigorozniju i mozda suvoparniju, ali verovatno
najbolju definiciju vestacke inteligencije to je disciplina koja se bavi problemima u kojima se javlja kombinatorna eksplozija.
Za pojam inteligencije sustinska su dva pitanja: pitanje znanja i pitanje zakljucivanja, koja, kada govorimo o racunarima, odgovaraju pojmovima baze
znanja i komponente zakljucivanja. Komponenta zakljucivanja (izvodjenja)
predstavlja takodje neku vrstu znanja - to je znanje o procesu izvodjenja novih
informacija iz iz date baze znanja i o pravilima po kojima se to izvodjenje vrsi.
Znanje ovog tipa zvacemo meta-znanjem. Sam pojam znanja, takodje ima vise
aspekata. Po mnogim filozofskim koncepcijama znanje predstavlja tvrdjenja za
koje je utvrdjeno ili moze biti utvrdjeno da su tacna. Ipak, mi c emo c esto imati
potrebu da radimo i sa informacijama koje ne moraju da budu tacne, pa c emo
prihvatiti s iri pojam znanja i pod njim podrazumevati i istinite, potvrdjene
c injenice, ali i hipoteze, nepotpune informacije i informacije date sa odredjenim
verovatnocama. Izbor reprezentacije znanja je jedan od kljucnih problema i on
je u direktnoj vezi i sa prirodom odredjenog znanja, ali i sa prirodom mehanizama za zakljucivanje. Mehanizmi za zakljucivanje moraju biti prilagodjeni
reprezentaciji znanja i njegovoj prirodi, pa c e u jednom slucaju biti zasnovani
na klasicnoj logici, a u drugom na modalnoj logici, teoriji verovatnoce, fazi
logici itd. Zakljucivanjem mocemo smatrati proces po kojem se na osnovu baze
znanja moze izvesti informacija koja u njoj nije eksplicitno sadrzana. Tako, na
primer, ako u bazi znanja imamo c injenice:
I1 : ...
I2 : ...
na osnovu njih moguce je izvesti c injenicu:
I3 : ...
koja zaista nije bila eksplicitno sadrzana u polaznoj bazi znanja. Navedeni
primer odgovara uobicajenom zakljucivanju koje odgovara ljudskom iskustvu.

Cesto
c emo se, medjutim, susretati sa problemima kod kojih je tesko precizno
zasnovati proces zakljucivanja koji odgovara c ovekovom i biti prinudjeni da
tragamo za sofisticiranijim tehnikama koje odgovaraju tim zahtevima. U vezi

1.1 Uska i opsta vestacka inteligencija

11

sa formalizacijom prirodnog toka zakljucivanja su i problemi monotonog i nemonotonog


zakljucivanja. Na kraju uvodnog dela jednostavnim primerom ilustrovacemo
nekoliko razlicitih oblika zakljucivanja. Razmotrimo odnos veze
(i)x(P (x) Q(x))
i c injenica
(ii)P (a)
(iii)Q(a).
Izvodjenje c injenice Q(a) na osnovu (i) i (ii) je potpuno opravdano i odgovara matematickim principima deduktivnog zakljucivanja. Izvodjenje veze
(i) na osnovu niza parova (ii), (iii) za razlicite instance argumenta, odgovara
nepotpunoj indukciji, nema matematicku egzaktnost, a u prakticnim primenama pouzdanost mu se povecava sa brojem instanci koje potvrdjuju hipotezu.
Izvodjenje c injenice (ii) na osnovu (i) i (ii) zovemo abdukcijom. Ono takodje
nije egzaktno, a opravdanje ima u odnosu uzroka i posledice. Tako, ako raspolazemo
nizom veza oblika (i) za razlicita svojstva Qi (i = 1, ..., n) i nizom c injenica
Qi (a)(i = 1, ..., n), mozemo da zakljucimo (sa izvesnom pouzdanosc u), da
kao uzrok posledicama Qi (a)(i = 1, ..., n) vazi svojstvo P (a). Ovaj princip zakljucivanja c esto se primenjuje u medicinskim ekspertnim sistemima za utvrdjivanje (potencijalnog) uzroka na osnovu poznatih simptoma.

1.1

Uska i opsta vestacka inteligencija

The advent of a human-level artificial intelligencea machine capable of the richness of expression and nuance of thought that we associate with humanity
promises to generate tremendous wealth for the inventors and companies that
develop it. According to the Business Communications Company, the market
for AI software and products reached 21 billion in 2007, an impressive figure that doesnt touch on the wealth that a human-level artificial intelligence
could generate across industries. At present, the worlds programmers have
succeeded in auto mating the delivery of electricity to our homes, the trading of stocks on exchanges, and much of the flow of goods and services to
stores and offices across the globe, but, after more than half a century of research, they have yet to reach the holy grail of computer sciencean artificial
general intelligence (AGI). Is the tide turning? At the second annual Singularity Summit in San Francisco last September, I discovered that the thinkers and
researchers at the forefront of the field are pitched in an intellectual battle over
how soon AGI might arrive and what it might mean for the rest of us. The NotSo-Rapid Progress Of AI Research The scientific study of artificial intelligence
has many roots, from IBMs development of the first number-crunching computers of the 1940s to the U.S. militarys work in war-game theory in the 1950s.
The proud papas of computer science Marvin Minsky, Charles Babbage, Alan
Turing, and John Von Neumann were also the founding fathers of the study of
artificial intelligence. During the late 1960s and early 1970s, money for AI work
was as easy as expectations were unrealistic, fueled by Hollywood images of
cocktail -serving robots and a Hal 9000 (a non- homicidal one, presumably)
for every home. In an ebullient moment in 1967, Marvin Minsky, proclaimed.

12

1 Uvod

Within a generation . . . the problem of creating artificial intelligence will


substantially be solved, by which he meant a humanistic AI. Public interest
dried up when the robot army failed to materialize by the early 1980s, a period
that researchers refer to as the AI winter. But research, though seemingly dormant, continued. The field has experienced a revival of late. Primitive-level
AI is no longer just a Hollywood staple. Its directing traffic in Seattle through
a program called SmartPhlow, guiding the actions of hedge-fund managers
in New York, executing Internet searches in Stockholm, and routing factory
orders in Beijing over integrated networks like Ciscos. More and more, the
worlds banks, governments, militaries, and businesses rely on a variety of extremely sophisticated computer programswhat are sometimes called narrow
AIs to run our ever-mechanized civilization. We look to AI to perform tasks
we can easily do ourselves but havent the patience for any longer. There are
1.5 million robot vacuum cleaners already in use across the globe. Engineers
from Stanford University have developed a fully autonomous self-driving car
named Stanley, which they first showcased in 2005 at the Defense Advanced
Research Projects Agencys (DARPA) Grand Challenge motor cross. Stanley
represents an extraordinary improvement over the self-driving machines that
the Stanford team was showing off in 1979. The original self-driving robot
needed six hours to travel one meter. Stanley drove 200 meters in the same
time. The next big leap will be an autonomous vehicle that can navigate and
operate in traffic, a far more complex challenge for a robotic driver, according
to DARPA director Tony Tether. In other words, robot taxis are coming to a
city near you. The decreasing price and increasing power of computer processing suggest that, in the decades ahead, narrow AIs like these will become
more effective, numerous, and cheap. But these trends dont necessarily herald
the sort of radical intellectual breakthrough necessary to construct an artificial
general intelligence. Many of the technical (hardware) obstacles to creating
an AGI have fallen away. The raw computing power may finally existand be
cheap enoughto run an AGI program. But the core semantic and philosophical
problems that science has faced for decades are as palpable as ever today. How
exactly do you write a computer program that can think like a human?
The War between the Neats and the Scruffies
There are two paths to achieving an AGI, says Peter Voss, a software developer and founder of the firm Adaptive A.I. Inc. One way, he says, is to
continue developing narrow AI, and the systems will become generally competent. It will become obvious how to do that. When that will happen or how it
will come about, whether through simbots or some DARPA challenge or something, I dont know. It would be a combination of those kinds 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 thinkfive to 10 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 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 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

1.1 Uska i opsta vestacka inteligencija

13

a math problem. The scruffies just want to build something, write narrow AI
codes, make little machines, little advancements, use whatever is available,
and hammer away until something happens. The neat approach descends from
computer science in its purest form, particularly the war game studies of Von
Neumann and his colleagues in the 1930s and 1940s. The 1997 defeat of world
chess champion Garry Kasparov by IBMs Deep Blue computer is considered
by many the seminal neat success. Up until that moment, the mainstream scientific community generally accepted the premise that AIs could be written to
perform specific tasks reasonably well, but largely resisted the notion of superhuman computing ability. Deep Blue proved that an AI entity could outperform a human at a supposedly human task, perceiving a chess board (Deep
Blue could see 200 million board positions per second) and plotting a strategy
(74 moves ahead as opposed to 10, the human record).
But the success of Deep Blue was limited. While the machine demonstrated
technical expertise at chess, it didnt show any real comprehension of the game
it was playing, or of itself. As Paris Review editor George Plimpton observed
after the match, The machine isnt going to walk out of the hotel there and start
doing extraordinary things. It cant manage a baseball team, cant tell you what
to do with a bad marriage. The validity of this observation isnt lost on todays
AI community. What we thought was easy turned out to be hard, and what we
thought was hard turned out to be easy, says Stephen Omohundro, founder
of the firm Self-Aware Systems. Back in the early Sixties, people thought that
something like machine vision would be a summer project for a masters student. Todays machine vision systems are certainly better than they were, but
no vision system today can reliably tell the difference between a dog and a cat,
something that small children have no problem doing. Meanwhile, beating a
world chess champion turned out to be a snap.

14

1 Uvod

Deo I

Logika i logicko
programiranje

Glava 2

Iskazna logika
U iskaznoj logici promenljive reprezentuju iskaze. Iskazi mogu biti kombinovani u slozenije iskaze logickim veznicima. Iskazna logika dovoljno je izrazajna
za opisivanje i reprezentovanje mnogih problema, ukljucujuci mnoge prakticne
probleme, kao s to je, na primer, dizajn integrisanih kola.
Iskazna logika ima tri aspekta: svoju sintaksu (ili jezik), svoju semantiku (ili
znacenje iskaza) i svoje deduktivne sisteme. I semantika i deduktivni sistemi
grade se nad isto definisanom sintaksom, tj. nad istim skupom formula.
Centralni problemi u iskaznoj logici su ispitivanje da li je data iskazna formula valjana (tautologija) i da li je data iskazna formula zadovoljiva. Ovaj
drugi problem poznat je kao problem SAT i on je tipican predstavnik skupa
NP -kompletnih problema.
Postoji vise metoda i pristupa za ispitivanje valjanosti i zadovoljivosti. Neki
od njih su semanticke, a neki deduktivne (tj. sintaksno-deduktivne) prirode.
ova dva koncepta je tvrdenje

Kljucna veza izmedu


da je iskazna formula valjana (sto je semanticka kategorija) ako i samo ako je ona teorema (sto je deduktivna kategorija). Zahvaljujuci ovoj vezi, sintaksa iskazne logike (jezik iskazne
logike), njena semantika (konvencije o znacenju formula) i njena deduktivna
svojstva c ine kompaktnu celinu.

2.1

Sintaksa iskazne logike

Sintaksni aspekt iskazne logike govori o njenom jeziku, a o formulama iskljucivo kao o nizovima simbola i ne uzima u obzir bilo kakvo njihovo (moguce)
znacenje.
Definicija 2.1 Skup iskaznih formula (ili jezik iskazne logike) nad prebrojivim
skupom iskaznih slova P je skup za koji vazi:
iskazna slova (iz skupa P ) i logicke konstante (> i ) su iskazne formule;
ako su A i B iskazne formule, onda su i (A), (A B), (A B), (A B) i
(A B) iskazne formule.
iskazne formule mogu se dobiti samo konacnom primenom prethodna dva pravila.

18

2 Iskazna logika

Umesto termina iskazna formula c esto c emo pisati krace formula ili iskaz.
U daljem tekstu smatracemo (ako nije drugacije naglaseno) da je skup P fiksiran. Elemente skupa P obicno oznacavamo malim latinicnim slovima (eventualno sa indeksima). Iskazne formule obicno oznacavamo velikim latinicnim
slovima (eventualno sa indeksima). Skupove iskaznih formula obicno oznacavamo velikim slovima grckog alfabeta (eventualno sa indeksima).
Logicke veznike zovemo i bulovskim veznicima ili, krace, veznicima. Zapis
(A) c itamo negacija A ili ne A. Zapis (A B) c itamo A konjunkcija B ili A i
B. Zapis (A B) c itamo A disjunkcija B ili A ili B. Zapis (A B) c itamo
A implikacija B ili iz A sledi B. Zapis (A B) c itamo A ekvivalencija B ili A
ekvivalentno B.
Iskazna slova zovemo i iskazne promenljive ili iskazne varijable. Elemente
skupova P i {>, } zovemo atomickim iskaznim formulama. Simbol > c itamo
te, a simbol c itamo nete. Literal je iskazna formula koja je ili atomicka iskazna
formula ili negacija atomicke iskazne formule. Klauza je disjunkcija literala.
Ako su dve iskazne formule A i B sintaksno identicne (tj. ako su jednake
kao nizovi simbola), onda to oznacavamo A = B. Ako dve iskazne formule A
i B nisu sintaksno identicne, onda to oznacavamo A 6= B.
Zagrade se koriste kako bi se izbegla visesmislenost. Naime, bez zagrada,
iskazna formula a b c ima dva moguca tumacenja: ((a b) c) i (a
(b c)). Visesmislenost se moze izbeci i korisc enjem prefiksne poljske notacije.
U toj notaciji, iskazna formula ((a b) c) se zapisuje a b c, a iskazna
formula (a (b c)) se zapisuje a b c. Ipak, zbog c itljivosti, koristicemo
infiksni zapis, zapis iskaznih formula koji odgovara prethodnoj definiciji. Da
bismo izbegli korisc enje velikog broja zagrada obicno izostavljamo spoljne zagrade i usvajamo konvenciju uz koju u nekim iskaznim formulama neke zagrade mogu biti izostavljene bez straha od visesmislenosti. Ta konvencija za
snovana je na prioritetu veznika i to na sledeci nacin (veznici su poredani
po
prioritetima od veceg ka manjem): .
Definicija 2.2 Skup potformula formule A je najmanji skup formula koje zadovoljavaju sledece uslove:
svaka iskazna formula A je potformula sama sebi;
Ako je A jednako B, onda je svaka potformula formule B istovremeno i potformula formule A. Ako je A jednako B C, B C, B C ili B C,
onda je svaka potformula formule B i svaka potformula formule C istovremeno
i potformula formule A.
Primer 2.1 Skup potformula formule (p q) r je {p, q, r, p q, (p q) r}.
Definicija 2.3 Funkcija c iz skupa iskaznih formula u skup N (skup prirodnih brojeva) svakoj iskaznoj formuli pridruzuje slozenost na sledeci nacin:
1. ako je A atomicka iskazna formula, onda je c(A) = 0;
2. c(A) = c(A) + 1;
3. c(A B) = c(A) + c(B) + 1;
4. c(A B) = c(A) + c(B) + 1;

2.2 Semantika iskazne logike

19

5. c(A B) = c(A) + c(B) + 1;


6. c(A B) = c(A) + c(B) + 1.
Funkcijom c svakoj iskaznoj formuli pridruzuje se (jedinstvena) slozenost.

2.2

Semantika iskazne logike

Semanticki aspekt iskazne logike govori o znacenju formula. U nastavku c e


biti uvedena semantika iskazne logike u stilu Tarskog (koji je prvi precizno
uveo pojam semantike 1933. godine) [?]. Tako uvedenu semantiku zovemo i
semantika Tarskog.

2.2.1

Valuacija, interpretacija, model; zadovoljive, valjane,


porecive i kontradiktorne formule

Funkcije v iz P u {0, 1} zovemo valuacijama. Skup {0, 1} zovemo domenom ili

univerzumom valuacije. Svaka valuacija v odreduje


funkciju Iv koju zovemo
interpretacijom za valuaciju v i koja preslikava skup iskaznih formula u skup
{0, 1}. Interpretaciju Iv definisemo na sledeci nacin:
Iv (p) = v(p), za svaki element p skupa P ;
Iv (>) = 1 i Iv () = 0;
Iv (A) = 1 ako je Iv (A) = 0 i Iv (A) = 0 ako je Iv (A) = 1;
Iv (A B) = 1 ako je Iv (A) = 1 i Iv (B) = 1; Iv (A B) = 0 inace;
Iv (A B) = 0 ako je Iv (A) = 0 i Iv (B) = 0 ; Iv (A B) = 1 inace;
Iv (A B) = 0 ako je Iv (A) = 1 i Iv (B) = 0 ; Iv (A B) = 1 inace;
Iv (A B) = 1 ako je Iv (A) = Iv (B); Iv (A B) = 0 inace.
Vrednost Iv (A) zovemo vrednosc u iskazne formule A u interpretaciji Iv . Ako
za valuaciju v vazi Iv (A) = 1, onda kazemo da je iskazna formula A tacna u
interpretaciji Iv i da je iskazna formula A tacna u valuaciji v. Ako za valuaciju v
vazi Iv (A) = 0, onda kazemo da je iskazna formula A netacna u interpretaciji Iv .

Moze se dokazati da se, za odredenu


valuaciju v, funkcijom Iv definisanom na
navedeni nacin, svakoj formuli pridruzuje (jedinstvena) vrednost (u toj interpretaciji).
Definicija 2.4 Valuacija v je zadovoljavajuca za formulu A ako je Iv (A) = 1. Kazemo
i da je zadovoljavajuca valuacija v model za A i pisemo v |= A.
Definicija 2.5 Iskazna formula A je zadovoljiva ako postoji valuacija koja je za nju
zadovoljavajuca. Formula A je valjana ili tautologija1 ako je svaka valuacija za nju
1 Re
c tautologija grckog je porekla i sacinjena je od reci tauto (grcki isto) i logos (grcki rec, reci).
U bukvalnom prevodu, ,,tautologija znaci ,,reci isto. U lingivstickom smislu, kao i u svakodnevnom jeziku, oznacava ponavljanje istog, reci istu stvar drugim recima, redudantnost (slicno,
ali ne isto s to i pleonazam pleonazam oznacava korisc enje suvisnih reci prilikom ukazivanja na
neki pojam). Opisani pojam tautologije razlikuje se od pojma tautologije u logici. U savremenim
evropskim jezicima rec tautologija prvi put se javlja u s esnaestom veku.

20

2 Iskazna logika

zadovoljavajuca, tj. ako za svaku valuaciju v vazi v |= A i to zapisujemo |= A. Iskazna


formula je nezadovoljiva ili kontradikcija ako ne postoji valuacija koja je za nju
zadovoljavajuca. Formula je poreciva ako postoji valuacija koja za nju nije zadovoljavajuca.
Drugim recima, iskazna formula je zadovoljiva ako postoji valuacija u kojoj
je ta formula tacna. Iskazna formula je valjana ako je tacna u svakoj valuaciji.
Iskazna formula je nezadovoljiva ako je netacna u svakoj valuaciji. Iskazna
formula je poreciva ako postoji valuacija u kojoj je ta formula netacna.
Primer 2.2 Iskazne formule p p i p p su tautologije; iskazna formula p q je
zadovoljiva i poreciva, a iskazna formula p p je kontradikcija.
Problem ispitivanja da li je data iskazna formula zadovoljiva oznacava se sa
(od engleskog satisfiability problem problem zadovoljivosti). SAT problem je NP-kompletan [?]. S obzirom na to da se jos uvek ne zna da li su klase
P i NP problema jednake, to znaci da se jos uvek ne zna da li postoji algoritam za ispitivanje zadovoljivosti koji je polinomijalne slozenosti. Kako je opste
uverenje da su klase P i NP problema razlicite, veruje se i da ne postoji polinomijalni algoritam za resavanje SAT problema. I najefikasniji danas poznati
algoritmi za resavanje ovog problema su eksponencijalne slozenosti.
SAT

Definicija 2.6 Skup iskaznih formula je zadovoljiv ako postoji valuacija u kojoj je
svaka formula iz tacna. Za valuaciju v koja je zadovoljavajuca za sve formule iz
kazemo da je model za . Skup iskaznih formula je nezadovoljiv ili kontradiktoran
ako ne postoji valuacija u kojoj je svaka formula iz tacna.
Primer 2.3 Skup iskaznih formula {p q, p, q} je kontradiktoran (ali nijedan njegov pravi podskup nije kontradiktoran).
Teorema 2.1 Ako su iskazne formule A i A B tautologije, onda je i B tautologija.

Dokaz: Pretpostavimo da su A i A B tautologije. Pretpostavimo da postoji


valuacija v u kojoj formula B nije tacna. Formula A je tautologija, pa je
tacna i u valuaciji v. U toj valuaciji, dakle, formula A B nije tacna,
s to protivreci pretpostavci da je A B tautologija. Dakle, formula B je
tacna u svakoj valuaciji, pa je ona tautologija, s to je i trebalo dokazati. 2

Zadaci

Zadatak 1
Neka su A, B, C, D iskazne formule takve da su formule A (B
C) i (A C) D tautologije. Dokazati da je i formula (D A) B tautologija.

Zadatak 2 Dokazati sledeca tvrdenja:


(a) Ako su formule A B i A C tautologije, onda je i B C tautologija.
(b) Ako su formule AB, A C, B D tautologije, onda je i C D tautologija.
(c) Ako su formule A B i C B tautologije, onda je i A C tautologija.

2.2 Semantika iskazne logike

21

Zadatak 3 Dokazati sledeca tvrdenja:


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

Zadatak 4 Dokazati sledeca tvrdenja:


(a) Iskazna formula A je valjana ako i samo ako je A kontradikcija.
(b) Iskazna formula A je zadovoljiva ako i samo ako je A poreciva.
Zadatak 5 Navesti primer iskazne formule koja je:
(a) zadovoljiva
(b) valjana
(c) poreciva
(d) kontradikcija
(e) zadovoljiva i valjana
(f) zadovoljiva i nije valjana
(g) zadovoljiva i poreciva
(h) zadovoljiva i nije poreciva
(i) zadovoljiva i nije kontradikcija
(j) valjana i nije poreciva
(k) valjana i nije kontradikcija
(l) poreciva i nije zadovoljiva
(m) poreciva i nije valjana
(n) poreciva i kontradikcija
(o) poreciva i nije kontradikcija
(p) kontradikcija i nije zadovoljiva
(q) kontradikcija i nije valjana.

Zadatak 6 Dokazati sledeca tvrdenja


( i su skupovi iskaznih formula, A je iskazna
formula):
(a) Ako je zadovoljiv i , onda je zadovoljiv.
(b) Ako je zadovoljiv i A valjana, onda je {A} zadovoljiv.
(c) Ako je kontradiktoran i , onda je kontradiktoran.
(d) Ako je kontradiktoran i A valjana, onda je \ {A} kontradiktoran.
Zadatak 7 Odrediti (ako postoji) formulu A takvu da je formula ((p (q r))
A) (A ((r q) p)) tautologija.

2.2.2

Istinitosne tablice

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

A
1
0

22

2 Iskazna logika
A
0
0
1
1

AB
0
0
0
1

B
0
1
0
1

AB
0
1
1
1

AB
1
1
0
1

AB
1
0
0
1

Na osnovu navedenih tablica (tj. na osnovu pravila za odredivanje


vrednosti formule), moze se kontruisati istinitosna tablica za proizvoljnu iskaznu
formulu. U istinitosnoj tablici za neku formulu svakoj vrsti odgovara jedna
valuacija iskaznih slova koje 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 A sadrzi iskazne varijable p1 , p2 , . . ., pn , istinitosna tablica treba da
sadrzi sve moguce valuacije za ovaj skup varijabli (valuacije za druge varijable
nisu relevantne). U zavisnosti od vrednosti iskaznih varijabli, izracunavaju
se vrednosti slozenijih iskaznih formula, sve do same iskazne formule koja
se ispituje. Ako su u koloni koja odgovara samoj iskaznoj formuli sve vrednosti jednake 1, formula je tautologija; ako je bar jedna vrednost jednaka 1,
formula je zadovoljiva; ako je bar jedna vrednost jednaka 0, formula je poreciva; ako su sve vrednosti jednake 0, formula je kontradikcija. Ovo pokazuje
da su problemi ispitivanja valjanosti, zadovoljivosti, nezadovoljivosti i porecivosti odlucivi problemi, tj. postoje algoritmi koji ih mogu resiti.
Primer 2.4 Iskaznoj formuli (q p) (p q) odgovara sledeca istinitosna
tablica:
p
0
0
1
1

q
0
1
0
1

q
1
0
1
0

p
1
1
0
0

q p
1
1
0
1

pq
1
1
0
1

(q p) (p q)
1
1
1
1

Dakle, data formula je zadovoljiva i valjana. Ona nije poreciva i nije kontradikcija.
Primer 2.5 Istinitosna tablica moze biti zapisana u skracenom obliku zapisivanjem
samo zadate iskazne formule i odgovarajucih vrednosti ispod pojedinacnih iskaznih
slova i veznika. Iskaznoj formuli iz prethodnog primera odgovara sledeca skracena
istinitosna tablica (popunjena u nekoliko koraka):
(

q
0
1
0
1

p)
0
0
1
1

(p
0
0
1
1

q)
0
1
0
1

(
1
0
1
0

q
0
1
0
1

1
1
0
0

p)
0
0
1
1

(p
0
0
1
1

1
1
0
1

q)
0
1
0
1

2.2 Semantika iskazne logike

23

(
1
0
1
0

q
0
1
0
1

1
1
0
1

1
1
0
0

p)
0
0
1
1

(p
0
0
1
1

1
1
0
1

q)
0
1
0
1

(
1
0
1
0

q
0
1
0
1

1
1
0
1

1
1
0
0

p)
0
0
1
1

1
1
1
1

(p
0
0
1
1

1
1
0
1

q)
0
1
0
1

Zadaci
Zadatak 8 Ispitati metodom istinitosnih tablica da li je iskazna formula ((q p)
p) p zadovoljiva.
Zadatak 9 Ispitati metodom tablica da li je iskazna formula (p (q r)) ((p
q) (p r)) tautologija.

Zadatak 10
Neka su A, B, C, D iskazne formule takve da su formule A (B
C) i (A C) D tautologije. Dokazati, korisc enjem istinitosnih tablica, da je i
formula (D A) B tautologija.

Zadatak 11
Odrediti formulu A takvu da je formula ((A q) p) ((p
q) A) tautologija.
Zadatak 12 Odrediti, korisc enjem istinitosnih tablica, (ako postoji) formulu A takvu
da je formula ((p (q r)) A) (A ((r q) p)) tautologija.

2.2.3

Logicke posledice, logicki ekvivalentne formule,


supstitucija

Definicija 2.7 Kazemo da je iskazna formula A logicka posledica skupa iskaznih


formula i pisemo |= A ako je svaki model za skup istovremeno i model za formulu
A.
Kada je skup konacan, tada {A1 , ..., An } |= B (tj. |= B) pisemo krace
A1 , ..., An |= B. Ako je formula A logicka posledica praznog skupa formula,
onda to zapisujemo |= A. Ako ne vazi |= A, onda to zapisujemo 6|= A.
Teorema 2.2
(a) Formula je valjana ako i samo ako je logicka posledica praznog skupa formula.
(b) Ako je skup kontradiktoran, onda je svaka formula njegova logicka posledica.
Specijalno, svaka formula je logicka posledica skupa {}.
(c) Ako je i |= A, onda je |= A.

Dokaz:

24

2 Iskazna logika
(a) Ako je formula valjana, onda je ona tacna u svakoj valuaciji pa i u
svakom modelu praznog skupa formula, te je ona logicka posledica praznog skupa formula. Svaka valuacija je model za prazan
skup formula, pa ako je formula logicka posledica praznog skupa
formula, onda je ona tacna u svakoj valuaciji, te je valjana.
(b) Ako je skup kontradiktoran, onda on nema nijedan model. Vazi da
je svaki model iz tog (praznog!) skupa modela model za proizvoljnu
formulu, pa je proizvoljna formula logicka posledica skupa .
(c) Pretpostavimo da vazi i |= A. Iz |= A sledi da je proizvoljan model za model i za A. Kako je , proizvoljan model za
je model za , pa i za A. Dakle, vazi |= A.
2

Primetimo da se simbol |= koristi i za zapisivanje da je valuacija v model


formule A i za oznacavanje relacije logicke posledice. Primetimo i da u oba
okvira zapis |= A ima isto znacenje da je formula A valjana.

Definicija 2.8 Kazemo da su dve iskazne formule A i B logicki ekvivalentne i


pisemo A B ako je svaki model formule A model i za B i obratno (tj. ako vazi
A |= B i B |= A).

Ako je svaki model za A istovremeno i model za B i obratno, onda u bilo

kojoj valuaciji formule A i B imaju jednake vrednosti. Tvrdenja


oblika A B
zovemo logickim ekvivalencijama (ili krace ekvivalencijama). Relacija je, ocigledno, relacija ekvivalencije nad skupom iskaznih formula.
Teorema 2.3 Vazi A B ako i samo ako je iskazna formula A B tautologija.

Dokaz: Pretpostavimo da vazi A B. U proizvoljnoj valuaciji v formule A i


B imaju istu vrednost, pa je formula A B tacna u v. Odatle sledi da
je A B tautologija. Pretpostavimo da je A B tautologija. Ako je u
proizvoljnoj valuaciji v formula A tacna, onda mora da je i B tacna u v
(jer je formula A B tacna u v). Dakle, svaki model za A je model i za
B. Analogno vazi obratno svaki model za B je model i za A, te sledi
A B, s to je i trebalo dokazati.
2

Primer 2.6 Neke od logickih ekvivalencija (ili, preciznije, neke od shema logickih ekvi-

2.2 Semantika iskazne logike

25

valencija) su:
A
A A
AA
AA
AB
AB
AB
A (B C)
A (B C)
A (B C)
A (A B)
A (A B)
A (B C)
(B C) A
A (B C)
(B C) A
(A B)
(A B)
A>
A>
A
A

A
>
A
A
BA
BA
BA
(A B) C
(A B) C
(A B) C
A
A
(A B) (A C)
(B A) (C A)
(A B) (A C)
(B A) (C A)
A B
A B
A
>

zakon dvojne negacije


zakon iskljucenja treceg
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
zakon distributivnosti u odnosu na
zakon distributivnosti u odnosu na
De Morganov zakon
De Morganov zakon
zakon konjunkcije sa tautologijom
zakon disjunkcije sa tautologijom
zakon konjunkcije sa kontradikcijom
zakon disjunkcije sa kontradikcijom

ostalog, pokazuju
Logicke ekvivalencije navedene u primeru 2.6, izmedu
da su konjunkcija i disjunkcija komutativni i asocijativni veznici. Zato mozemo
(uslovno) smatrati da konjunkcija (i disjunkcija) mogu da povezuju vise od dve
formule, pri c emu ne moramo da vodimo racuna o njihovom poretku. Svaki
c lan uopstene konjunkcije zovemo konjunkt, a svaki c lan uopstene disjunkcije
zovemo disjunkt. Disjunkciju vise literala (pri c emu njihov poredak nije bitan)
zovemo klauza. Klauza je jedinicna ako sadrzi samo jedan literal.
Definicija 2.9 Rezultat zamene (supstitucije) svih pojavljivanja iskazne formule C
u iskaznoj formuli A iskaznom formulom D oznacavamo sa A[C 7 D]. Ta zamena
(supstitucija) definise se na sledeci nacin:
ako za iskazne formule A i C vazi A = C, onda je A[C 7 D] jednako D;
ako za iskazne formule A i C vazi A 6= C i A je atomicka iskazna formula, onda
je A[C 7 D] jednako A;
ako za iskazne formule A, B i C vazi A 6= C i A = (B), onda je A[C 7 D] =
(B[C 7 D]);
ako za iskazne formule A, B1 , B2 i C vazi A 6= C i A = (B1 B2 ) (A =
(B1 B2 ), A = (B1 B2 ), A = (B1 B2 )), onda je A[C 7 D] =
(B1 [C 7 D]) (B2 [C 7 D]) ((B1 [C 7 D]) (B2 [C 7 D]), (B1 [C 7
D]) (B2 [C 7 D]), (B1 [C 7 D]) (B2 [C 7 D])).
Definicija 2.10 Uopstena zamena (supstitucija) je skup zamena [C1 7 D1 ], [C2 7
D2 ], . . ., [Cn 7 Dn ] gde su Ci i Di proizvoljne iskazne formule. Takvu zamenu zapisujemo [C1 7 D1 , C2 7 D2 , . . . , Cn 7 Dn ].

26

2 Iskazna logika

Uopstena zamena primenjuje se simultano na sva pojavljivanja formula C1 , C2 ,


. . ., Cn u polaznoj formuli i samo na njih (tj. ne primenjuje se na potformule dobijene
zamenama).
U daljem tekstu c emo umesto termina uopstena zamena (uopstena supstitucija)
koristiti termin zamena (supstitucija).
Formulu koja je rezultat primene zamene [C1 7 D1 , C2 7 D2 , . . . , Cn 7
Dn ] nad formulom A, oznacavamo sa A[C1 7 D1 , C2 7 D2 , . . . , Cn 7 Dn ].
Primer 2.7
((p q) r)[p q 7 p q] = (p q) r
((p q) (p r))[p q 7 p q, p r 7 p r] = (p q) (p r)
((p q) r)[p q 7 p q, p q 7 q p] = (p q) r
Teorema 2.4 (Teorema o zameni) Ako je C D, onda je A[C 7 D] A.

Zadaci
Zadatak 13
Zadatak 14
Zadatak 15

A1 , A2 , . . . , An |= B ako i samo ako |= (A1 A2 . . . An ) B.


, A |= B ako i samo ako |= A B.
Ako je A1 A2 i B1 B2 , onda je:

(a) A1 A2
(b) A1 B1 A2 B2
(c) A1 B1 A2 B2
(d) A1 B1 A2 B2
(e) A1 B1 A2 B2 .

Zadatak 16
Ako je iskazna formula A tautologija koja sadrzi iskazna slova p1 , p2 ,
. . . , pn i ako su A1 , A2 , . . . , An proizvoljne iskazne formule, onda je iskazna formula
tautologija.
B = A[p1 7 A1 , p2 7 A2 , . . . , pn 7 An ] takode
Zadatak 17 Ako C nije potformula iskazne formule A, onda je A[C 7 D] = A.
Zadatak 18 Dokazati da iz A A[C 7 D] ne sledi C D.

2.2.4

Potpuni skupovi veznika

Istinitosna funkcija nad n argumenata je funkcija koja preslikava skup {0, 1}n
n
u skup {0, 1}. Nad n argumenata ima 22 razlicitih istinitosnih funkcija (jer
skup {0, 1}n ima 2n elemenata i svaki od njih se moze preslikati u 0 ili u 1).
Svaka iskazna formula koja ima n iskaznih slova generise neku istinitosnu
funkciju nad n argumenata. Logicki ekvivalentne iskazne formule (sa istim
brojem iskaznih slova) generisu identicne istinitosne funkcije. Svaka istinitosna funkcija je generisana nekom iskaznom formulom koja sadrzi samo veznike
, i .

2.2 Semantika iskazne logike

27

Primer 2.8
x1
1
0
1
0

x2
1
1
0
0

f (x1 , x2 )
0
1
1
1

Iskazna formula A koja generise istinitosnu funkciju f je (p1 p2 ) (p1 p2 )


(p1 p2 ).
U bilo kojoj iskaznoj formuli, mogu se, korisc enjem ekvivalencija
A B (A B) (B A)
A B A B
A B (A B)
eliminisati sva pojavljivanja veznika , i . Dobijena formula sadrzace,
dakle, samo veznike i . Kazemo da je skup veznika {, } potpun, jer je
svaka iskazna formula logicki ekvivalentna nekoj iskaznoj formuli samo nad
ova dva veznika i bez logickih konstanti > i . Kako je skup {, } potpun,
sledi da je svaka istinitosna funkcija generisana nekom iskaznom formulom
potpun.
koja sadrzi samo veznike i . Skup {, } je, takode,
Veznici i definisu se na sledeci nacin: A B je jednako (A B), a A B
je jednako (A B). Naglasimo da su ove definicije c isto sintaksne prirode i da
zapis A B mozemo smatrati samo kracim zapisom formule (A B). Veznik

zovemo nili ili Lukasijeviceva funkcija, a veznik zovemo ni ili Seferova


funkcija.
Na osnovu datih definicija mogu se izvesti istinitosne tablice za i .
A
0
0
1
1

B
0
1
0
1

AB
1
0
0
0

AB
1
1
1
0

Lako se pokazuje da je A (A A) i AB ((A A) (B B)). Kako je


skup veznika {, } potpun, sledi da je potpun i skup {}. Isto vazi i za skup
{}.
Teorema 2.5 Veznici i su jedina dva binarna veznika koja sama (pojedinacno) c ine
potpun sistem.

Teorema 2.5 je specijalni slucaj tvrdenja


za veznike proizvoljne arnosti [?].

Zadaci
Zadatak 19 Dokazati da {, } i {, } nisu potpuni skupovi veznika.

Zadatak 20
Svaki stanovnik jedne drzave ili uvek laze ili uvek govori istinu i na
svako pitanje odgovara uvek samo sa da ili ne. Neki turista dolazi na raskrsnicu u toj
drzavi i zna da samo jedan od dva puta vodi do glavnog grada. Ne postoji znak koji
pokazuje koji je to put, ali postoji mestanin R koji stoji na raskrsnici. Koje da-ili-ne
pitanje treba turista da postavi da bi odredio kojim putem da krene?

28

2 Iskazna logika

Zadatak 21 U racunarstvu se c esto koristi logicki veznik (iskljucivo ili, iskljuciva disjunkcija, eksluzivno ili, ekskluzivna disjunkcija) koji moze biti definisan na
sledeci nacin: AB je jednako (tj. to je kraci zapis za) (A B) ili (AB)(A
B). Ispitati da li je skup {, } potpun skup veznika.

2.2.5

Normalne forme

Definicija 2.11 Iskazna formula je u konjunktivnoj normalnoj formi (KNF) ako je


oblika
A1 A2 . . . An
pri c emu je svaka od formula Ai (1 i n) klauza (tj. disjunkcija literala).
Definicija 2.12 Iskazna formula je u disjunktivnoj normalnoj formi (DNF) ako je
oblika
A1 A2 . . . An
pri c emu je svaka od formula Ai (1 i n) konjunkcija literala.
Ako je iskazna formula A logicki ekvivalentna iskaznoj formuli B i iskazna
formula B je u konjunktivnoj (disjunktivnoj) normalnoj formi, onda kazemo
da je formula B konjunktivna (disjunktivna) normalna forma formule A.
Korisc enjem pogodnih ekvivalencija, svaka iskazna formula moze biti transformisana u svoju konjunktivnu (disjunktivnu) normalnu formu. Naglasimo
da jedna iskazna formula moze da ima vise konjunktivnih (disjunktivnih) normalnih formi (na primer, i formula (p r) (q r) (p s) (q s) i formula
(s q) (p r) (q r) (p s) (p p) su konjunktivne normalne forme formule (p q) (r s)). Slicno, jedna formula koja je u konjunktivnoj normalnoj
formi moze biti konjunktivna normalna forma za vise iskaznih formula.
Transformisanje iskazne formule u konjunktivnu normalnu formu moze
biti opisano algoritmom prikazanim na slici 2.1. Kada govorimo o ,,primeni
neke logicke ekvivalencije mislimo na korisc enje logicke ekvivalencije na osnovu teoreme o zameni (teorema 2.4).
Teorema 2.6 (Korektnost algoritma KNF) Algoritam KNF se zaustavlja i zadovoljava sledece svojstvo: ako je F ulazna formula, onda je izlazna formula F 0 u konjunktivnoj normalnoj formi i logicki je ekvivalentna sa F .
Zaustavljanje algoritma KNF moze se dokazati korisc enjem pogodno odabrane

mere formula.2 Tvrdenje


F F 0 sledi na osnovu teoreme 2.4 i c injenice da se u
algoritmu koriste logicke ekvivalencije.
2 U cilju dokazivanja zaustavljanja postupka transformisanja formule u konjunktivnu normalnu
formu definise se preslikavanje iz skupa iskaznih formula u skup prirodnih brojeva [?]:

(A)

2 (gde je A atomicka formula)

(A)

2 (A)

(A B)

(A) (B)

(A B)

(A) + (B) + 1

Moze se jednostavno dokazati da je vrednost (A0 ) uvek manja od (A) ako je formula A0 dobijena
primenom nekog pravila prezapisivanja na formulu A (jer, na primer, vazi da je (A B) =
2 (A)+ (B) manje od ((A B)) = 2 (A)+ (B)+1 ). Odatle sledi da se postupak transformisanja
proizvoljne formule u konjuktivnu normalnu formu zaustavlja za proizvoljnu ulaznu formulu A
(jer ne postoji beskonacan strogo opadajuci niz prirodnih brojeva c iji je prvi element (A)).

2.2 Semantika iskazne logike

29

Algoritam: KNF
Ulaz: Iskazna formula F
Izlaz: Konjunktivna normalna forma formule F
1. Eliminisati veznik koristeci logicku ekvivalenciju
A B (A B) (B A).
2. Eliminisati veznik koristeci logicku ekvivalenciju
A B A B.
3. Dok god je to moguce, primenjivati logicke ekvivalencije
(A B) A B i (A B) A B.
4. Eliminisati visestruke veznike koristeci logicku ekvivalenciju
A A.
5. Dok god je to moguce, primenjivati logicke ekvivalencije
(A (B C)) ((A B) (A C)) i
((B C) A) ((B A) (C A)).
Figure 2.1: Algoritam KNF
Naglasimo da transformisanje formule u njenu konjunktivnu normalnu formu moze da da formulu c ija je duzina eksponencijalna u funkciji duzine polazne formule. Na primer, transformisanjem formule
(A1 B1 ) (A2 B2 ) . . . (An Bn )
(koja ima n disjunkata) u njenu konjunktivnu normalnu formu, dobija se formula koja ima 2n konjunkta.
Transformisanje formule u disjunktivnu normalnu formu opisuje se algoritmom analognim algoritmu KNF.

Zadaci
Zadatak 22 Odrediti konjunktivnu normalnu formu i disjunktivnu normalnu formu
za formule:
(a) (A B) (A C)
(b) A (B A)
(c) ((A B) (C A)) (B C)
(d) ((((A B) A) B) C) C
(e) (A (B C)) ((A C) (A B))
Zadatak 23 Odrediti kanonsku disjunktivnu normalnu formu formule
(A B) ((B C) (A C)).
Zadatak 24 Odrediti kanonsku konjunktivnu normalnu formu formule
(C A) ((B C) A).

30

2 Iskazna logika

Zadatak 25
(Teorema o interpolaciji) Neka su A i B iskazne formule takve da A
nije kontradikcija i B nije tautologija i neka je A B tautologija.
(a) Dokazati da A i B imaju bar jedno zajednicko iskazno slovo.
(b) Dokazati da postoji iskazna formula C takva da C ima samo iskazna slova koja
su zajednicka za A i B i za koju vazi da su A C i C B tautologije.

2.2.6

DejvisPatnamLogmanLovelandova procedura

DejvisPatnamLogmanLovelandova procedura3 (DPLL procedura) vrsi ispitivanje zadovoljivosti iskaznih formula [?]. Ona se primenjuje na iskazne formule u konjunktivnoj normalnoj formi (a za svaku iskaznu formulu postoji
njena konjunktivna normalna forma). 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;
zato se ulazna formula moze smatrati skupom (ili, preciznije, multiskupom4 )
klauza, od kojih se svaka moze smatrati skupom (ili, preciznije, multiskupom)

literala. Ipak, radi odredenosti


rada algoritma, smatracemo da je skup (odnosno

multiskup) klauza ureden.


U proceduri se podrazumevaju sledece konvencije:
prazan skup klauza (zvacemo ga praznom formulom) je zadovoljiv;
klauza koja ne sadrzi nijedan literal (zvacemo je prazna klauza) je nezadovoljiva; formula koja sadrzi praznu klauzu je nezadovoljiva.
DejvisPatnamLogmanLovelandova procedura data je na slici 2.2.
Teorema 2.7 (Korektnost DPLL procedure) Za svaku iskaznu formulu DPLL procedura se zaustavlja i vraca odgovor DA ako i samo ako je polazna formula zadovoljiva.
DejvisPatnamLogmanLovelandova procedura je u najgorem slucaju eksponencijalne slozenosti O(2N ), gde je N broj iskaznih slova u formuli, usled
rekurzivne primene split pravila (vise o slozenosti izracunavanja videti u dodatku ??). Iste (eksponencijalne) slozenosti su i svi drugi do sada poznati algoritmi za ispitivanje zadovoljivosti. Ipak, svi ti algoritmi su znatno efikasniji od
metode istinitosnih tablica.
Izbor iskaznog slova u pravilu split je veoma vazan. Neke varijante ovog
pravila su da se bira iskazno slovo sa najvise pojavljivanja u tekucoj formuli,
da se bira neko od iskaznih slova iz najkrace klauze itd.
Formula je tautologija ako i samo ako njena negacija nije zadovoljiva, formula je kontradikcija ako i samo ako ona nije zadovoljiva i formula je poreciva
ako i samo ako je njena negacija zadovoljiva. Primetimo da odatle sledi da
DPLL proceduru mozemo iskoristiti i za ispitavanje da li je data formula tautologija, poreciva ili kontradikcija.
3 Na ovu proceduru se, zbog dve njene verzije, ponekad ukazuje kao na DejvisPatnamovu (DP)
proceduru ili kao na DejvisLogmanLovelandovu (DLL) proceduru.
4 Multiskup je, neformalno, skup u kojem se elementi mogu pojavljivati vi
se puta.

2.2 Semantika iskazne logike

31

Algoritam: DPLL
Ulaz: Multiskup klauza D (D = {C1 , C2 , . . . , Cn })
Izlaz: DA, ako je multiskup D zadovoljiv;
NE, ako multiskup D nije zadovoljiv
1. Ako je D prazan, vrati DA.
2. Zameni sve literale sa > i zameni sve literale > sa .
3. Obrisi sve literale jednake .
4. Ako D sadrzi praznu klauzu, vrati NE.
5. Ako neka klauza Ci sadrzi literal > ili sadrzi i neki literal i njegovu
negaciju, vrati vrednost koju vraca DPLL(D \ Ci ) (tautology).
6. Ako je neka klauza jedinicna i jednaka nekom iskaznom slovu p, onda
vrati vrednost koju vraca DPLL(D[p 7 >]); ako je neka klauza jedinicna i jednaka p, gde je p neko iskazno slovo, onda vrati vrednost
koju vraca DPLL(D[p 7 ]) (unit propagation).
7. Ako D sadrzi literal p (gde je p neko iskazno slovo), a ne i literal p,
onda vrati vrednost koju vraca DPLL(D[p 7 >]); ako D sadrzi literal
p (gde je p neko iskazno slovo), a ne i literal p, onda vrati vrednost
koju vraca DPLL(D[p 7 >]) (pure literal).
8. Ako DPLL(D[p 7 >]) vraca DA, onda vrati DA; inace vrati vrednost
koju vraca DPLL(D[p 7 ]) (gde je p jedno od iskaznih slova koje
se javljaju u D) (split).
Figure 2.2: DPLL procedura

Zadaci
Zadatak 26 Primenom DPLL algoritma ispitati da li su sledece formule zadovoljive:
(a) (p r) ((q r) (p q r))
(b) ((p r) ((q r) (p q r)))
Zadatak 27 Primenom DPLL algoritma ispitati da li je formula (p q r) (p
q r) (p q r) zadovoljiva, tautologija, poreciva, kontradikcija.

2.2.7

Primer modelovanja problema u iskaznoj logici

Modeliranja jednog problema bice prikazano na primeru jednostavne igre Vumpus.


U pecini u kojoj z ivi c udoviste Vumpus nalazi se zlato. Igrac ulazi u pecinu
i trazi ga. Igra se igra na tabli od 4x4 polja. Vumpus se nalazi na jednom od
njih. Na nekima od njih se mogu nalaziti provalije, a na jednom je zlato. Posto
je u pecini mrak igrac ne vidi s ta se nalazi na susednim poljima. Na poljima
oko provalija se oseca povetarac. Kako se Vumpus ne kupa, na poljima oko
njega, oseca se smrad. Ako igrac stane na polje na kome se nalazi provalija ili

32

2 Iskazna logika

Figure 2.3: Tabla za igru Vumpus


Vumpus, on strada i igra je zavrsena. Igrac ima jednu strelu koju moze odapeti
na susedno polje kako bi ubio Vumpusa. Primer table je prikazan na slici 2.2.7.
Znanje o okolini u kojoj se igrac nalazi, moze se modelirati pravilima oblika
Pravila za slucaj kada nema smrada:
R1 : S11 V11 V12 V21
R2 : S21 V11 V21 V31 V22
R3 : S12 V11 V12 V13 V22
...
Pravila za slucaj kada ima smrada:
R4 : S12 V11 V12 V13 V22
...

2.2 Semantika iskazne logike

33

Na pocetnom polju igrac ne oseca ni smrad ni povetarac, pa zna da su polja


(2,1) i (1,2) bezbedna. Recimo da prvo ode na polje (2,1). Tu oseca povetarac i
zna da se na polju (3,1) ili (2,2) nalazi provalija, pa se vraca na polje (1,1). Posto
je na polju (2,1) upravo bio, istrazuje polje (1,2). Tu se oseca smrad. Dosadasnja
igraceva znanja se mogu se opisati na sledeci nacin:
S11 , S21 , S12
P11 , P21 , P12
Nalazenje Vumpusa je sada lako.
1. Na osnovu R4 i S12 , dobija se
V11 V12 V13 V22
2. Na osnovu R1 i S11 , dobija se
V11 V12 V21
3. Odatle
V11 V12 V21
4. Na osnovu V11 V12 V13 V22 i V11 , dobija se
V12 V13 V22
5. Na osnovu V12 V13 V22 i V12 , dobija se
V13 V22
6. Na osnovu R2 i S21 , dobija se
V11 V21 V31 V22
7. Odatle
V11 V21 V31 V22
8. Na osnovu V13 V22 i V22 , dobija se
V13
Znaci Vumpus se nalazi na polju (1,3).
Da bismo dali primer zapisivanja akcije koju igrac moze da preduzme uvesc emo
i orijentaciju igraca. Neka 4 promenljive Oi oznacavaju orijentaciju igraca ka
4 strane sveta. Npr. O1 znaci da je igrac orijentisan prema istoku, O2 prema
zapadu, O3 prema severu i O4 prema jugu. Kako bi opis orijentacije bio konzistentan, potrebno je zadovoljiti uslov da igrac ne bude orijentisan na vise strana
odjednom
(O1 O2 ) (O1 O3 ) (O1 O4 ) (O2 O3 )(O2 O4 )(O3 O4 ).

34

2 Iskazna logika

S druge strane potrebno je da igrac bude orijentisan na neku stranu s to se


izrazava uslovom
O1 O2 O3 O4 .
Sada se akcija odapinjanja strele na susedno polje na kome se nalazi Vumpus moze zapisati kao:
A11 O1 V21 P ucaj
Ocigledan problem je s to za 16 polja za jednu orijentaciju postoji 16 pravila
ovog tipa. Pomocu predikatskog racuna bi svih 16 moglo biti zapisana jednim
pravilom:
ij(Aij O1 Vi+1,j P ucaj).

Glava 3

Logika prvog reda


Logika prvog reda, predikatska logika, znatno je izrazajnija od iskazne logike.

Osnovna novina u odnosu na iskaznu logiku je uvodenje


kvantifikovanja, univerzalnog i egzistencijalnog. Zahvaljujuci kvantifikatorima, u logici prvog reda

mogu se formulisati tvrdenja


koja nije moguce formulisati na jeziku iskazne

logike kao, na primer, tvrdenje


,,za svaku valuaciju postoji klauza iz S koja nije
tacna ako i samo ako ne postoji valuacija takva da je svaka klauza iz S tacna. U
logici prvog reda dozvoljeno je samo kvantifikovanje promenljivih.1 U okviru
logike prvog reda mogu se opisati mnoge matematicke teorije.
Kao i iskazna logika, logika prvog reda ima tri aspekta: svoju sintaksu
(ili jezik), svoju semantiku (ili znacenje iskaza) i svoje deduktivne sisteme. I
semantika i deduktivni sistemi grade se nad isto definisanom sintaksom, tj. nad
istim skupom formula.
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 odlucivi, te ne postoje efektivni algoritmi za njihovo resavanje. No, problem ispitivanja valjanosti za predikatsku
logiku je poluodluciv, pa postoje metode koje za svaku valjanu formulu mogu
da dokazu da je ona valjana (a ne mogu za bilo koju formulu koja nije valjana
da utvrde da nije valjana).
Postoji vise metoda i pristupa za ispitivanje i dokazivanje valjanosti i zadovoljivosti. Neki od njih su semanticke, a neki deduktivne (tj. sintaksno-deduk ova dva koncepta
tivne) prirode. Kao i u iskaznoj logici, kljucna veza izmedu

je tvrdenje
da je formula valjana (sto je semanticka kategorija) ako i samo ako
je ona teorema (sto je deduktivna kategorija). Zahvaljujuci ovoj vezi, sintaksa
predikatske logike (jezik predikatske logike), njena semantika (konvencije o
znacenju formula) i njena deduktivna svojstva c ine kompaktnu celinu.

1 U logici vi
seg reda predikati i funkcije kao argumente mogu imati druge predikate i funkcije
i dozvoljeno je njihovo kvantifikovanje. 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 n mogu za argumente imati predikate i funkcije n 1 reda i mogu biti kvantifikovani.

36

3 Logika prvog reda

3.1

Sintaksa logike prvog reda

Sintaksni aspekt logike prvog reda govori o njenom jeziku, a o formulama


iskljucivo kao o nizovima simbola i ne uzima u obzir njihovo moguce znacenje.
Definicija 3.1 Logicki deo jezika prvog reda c ine skupovi:
1. prebrojiv skup promenljivih V ;
2. skup logickih veznika {, , , , }, pri c emu je unarni veznik, a , ,
i su binarni veznici;
3. skup kvantifikatora {, }, pri c emu je univerzalni kvantifikator, a
egzistencijalni kvantifikator;
4. skup logickih konstanti {>, };
5. skup pomocnih simbola {(, ), ,}.
Elemente nabrojanih skupova zovemo logicki simboli.
Recnik ili signatura L sastoji se od najvise prebrojivih skupova i , koje redom
nazivamo skupom funkcijskih simbola i skupom predikatskih (relacijskih) simbola, kao i od funkcije ar koja preslikava skup u skup nenegativnih celih brojeva.
Za k , vrednost ar(k) zovemo stepen ili arnost simbola k. Presek svaka dva od
skupova , , skupa promenljivih, skupa logickih veznika, skupa kvantifikatora, skupa
logickih konstanti i skupa pomocnih simbola je prazan. Funkcijske simbole arnosti 0
zovemo simbolima konstanti. Skupovi i c ine nelogicki deo jezika prvog reda,
a sve njihove elemente zovemo nelogickim simbolima.
Za datu signaturu
L = (, , ar)
rec nad L je bilo koji niz simbola iz skupova , ili logickog dela jezika.
Uz indeks ili bez indeksa, obicno oznacavamo sa:
a, b, c, . . . simbole konstanti;
f, g, h, . . . funkcijske simbole arnosti vece od 0;
p, q, r, . . . predikatske simbole;
x, y, z, . . . promenljive.
Definicija 3.2 Skup termova nad signaturom L = (, , ar) i skupom promenljivih
V je skup za koji vazi:
svaki simbol konstante (tj. svaki funkcijski simbol arnosti 0) je term;
svaki simbol promenljive je term;
ako je f funkcijski simbol za koji je ar(f ) = n i t1 , t2 , . . ., tn su termovi, onda
je i f (t1 , t2 , . . . , tn ) term.
termovi se mogu dobiti samo konacnom primenom prethodna dva pravila.
Definicija 3.3 Skup atomickih formula nad signaturom L = (, , ar) i skupom
promenljivih V je skup za koji vazi:

3.1 Sintaksa logike prvog reda

37

logicke konstante > i su atomicke formule;


ako je p predikatski simbol za koji je ar(p) = n i t1 , t2 , . . ., tn su termovi, onda
je p(t1 , t2 , . . . , tn ) atomicka formula.
atomicke formule se mogu dobiti samo konacnom primenom prethodna dva pravila.
Definicija 3.4 Skup dobro zasnovanih formula nad signaturom L = (, , ar) i
skupom promenljivih V (ili jezik prvog reda nad L i V ) je skup za koji vazi:
svaka atomicka formula je dobro zasnovana formula;
ako je A dobro zasnovana formula, onda je i (A) dobro zasnovana formula;
ako su A i B dobro zasnovane formule, onda su i (A B), (A B), (A B) i
(A B) dobro zasnovane formule;
ako je A dobro zasnovana formula i x je promenljiva, onda su ((x)A) i ((x)A)
dobro zasnovane formule.
dobro zasnovane formule se mogu dobiti samo konacnom primenom prethodnih
pravila.
Umesto termina dobro zasnovana formula, c esto c emo pisati krace formula.
Dobro zasnovane formule obicno oznacavamo velikim pisanim latinicnim
slovima (eventualno sa indeksima). Skupove dobro zasnovanih formula obicno
oznacavamo velikim slovima grckog alfabeta (eventualno sa indeksima).
Logicke veznike zovemo i bulovskim veznicima ili, krace, veznicima. Veznik
zovemo negacija, veznik konjunkcija, disjunkcija, veznik implikacija i
ekvivalencija. Zapis (A) c itamo negacija A ili ne A. Zapis (A B) c itamo A
konjunkcija B ili A i B. Zapis (A B) c itamo A disjunkcija B ili A ili B. Zapis
(A B) c itamo A implikacija B ili iz A sledi B. Zapis (A B) c itamo A
ekvivalencija B ili A ekvivalentno B. Zapis ((x)A) c itamo za svako x A. Zapis
((x)A) c itamo postoji x takvo da je A.
Ako su dve dobro zasnovane formule A i B sintaksno identicne (tj. ako
su jednake kao nizovi simbola), onda to oznacavamo A = B. Ako dve dobro
zasnovane formule A i B nisu sintaksno identicne, onda to oznacavamo A =
6 B.
Termove, atomicke formule i dobro zasnovane formule nad signaturom L
ponekad c emo krace zvati i L-termovi, L-atomicke formule i L-formule.
Bazni term je term koji ne sadrzi nijednu promenljivu. Bazna formula je formula koja ne sadrzi nijednu promenljivu.
Literal je atomicka formula ili negacija atomicke formule. Klauza je disjunkcija literala.
Da bismo izbegli korisc enje velikog broja zagrada obicno izostavljamo spoljne zagrade i usvajamo konvenciju uz koju u nekim dobro zasnovanim formulama neke zagrade mogu biti izostavljene i to na isti nacin kao i za iskazne
formule, pri c emu kvantifikatori imaju veci prioritet od svih logickih veznika.

Kazemo da formula A odreduje


ili indukuje signaturu L, ako je L signatura
koja sadrzi sve funkcijske i predikatske simbole iz A i nijedan vise.
Definicija 3.5 Funkcija c iz skupa dobro zasnovanih formula u N svakoj dobro zasnovanoj formuli pridruzuje slozenost na sledeci nacin:

38

3 Logika prvog reda


1. ako je A atomicka dobro zasnovana formula, onda je c(A) = 0;
2. c(A) = c(A) + 1;
3. c(A B) = c(A) + c(B) + 1;
4. c(A B) = c(A) + c(B) + 1;
5. c(A B) = c(A) + c(B) + 1;
6. c(A B) = c(A) + c(B) + 1;
7. c(xA) = c(A) + 1;
8. c(xA) = c(A) + 1.

Definicija 3.6 Slobodno pojavljivanje i vezano pojavljivanje promenljive u formuli definise se na sledeci nacin:
svako pojavljivanje promenljive u atomickoj formuli je slobodno u toj formuli;
svako pojavljivanje promenljive koje je slobodno u A je slobodno i u A; svako
pojavljivanje promenljive koje je vezano u A je vezano i u A;
svako pojavljivanje promenljive koje je slobodno u A ili u B je slobodno i u AB,
A B, A B, A B; svako pojavljivanje promenljive koje je vezano u A ili
u B je vezano i u A B, A B, A B, A B;

svako slobodno pojavljivanje promenljive razlicite od x u formuli A je takode


slobodno u formuli (x)A; svako slobodno pojavljivanje promenljive x u A
je vezano (vodecim kvantifikatorom) u (x)A (tada kazemo da je x u dosegu
vodeceg kvantifikatora); pojavljivanje promenljive x u (x) u formuli (x)A je
vezano; analogno za egzistencijalni kvantifikator.
Definicija 3.7 Promenljiva je vezana (slobodna) u formuli ako i samo ako ima vezano
(slobodno) pojavljivanje u toj formuli.
Primetimo da promenljiva moze biti i slobodna i vezana u jednoj formuli.
Primer 3.1 U formuli p(x, y), pojavljivanje promenljive x je slobodno i ona je slobodna u ovoj formuli.
U formuli p(x, y) (x)q(x) prvo pojavljivanje promenljive x je slobodno, a
drugo i trece pojavljivanje je vezano. U ovoj formuli, promenljiva x je i slobodna i
vezana.
U formuli (x)p(x, y) (x)q(x), sva pojavljivanja promenljive x su vezana i
promenljiva je vezana u ovoj formuli.
U sva tri primera, pojavljivanja promenljive y su slobodna.
Primer 3.2 U formuli (x)(p(x) (x)q(x)) c etvrto pojavljivanje promenljive x je
vezano i ono je u dosegu kvantifikatora x, a ne i kvantifikatora x.

3.2 Semantika logike prvog reda

39

Cesto
c emo pokazivati da formula A ima slobodne promenljive x1 , x2 , . . .,

xn zapisom A(x1 , x2 , . . . , xn ). Ovaj zapis, medutim,


ne znaci da formula A
ne sadrzi jos neke slobodne promenljive, niti znaci da promenljive x1 , x2 , . . .,
xn nemaju i neka vezana pojavljivanja u formuli A. Zapis A(x1 , x2 , . . . , xn ) je
pogodan, jer mozemo da usvojimo konvenciju da kao A(t1 , t2 , . . . , tn ) zapisujemo formulu dobijenu zamenjivanjem svih slobodnih pojavljivanja promenljivih x1 , x2 , . . . , xn redom termovima t1 , t2 , . . . , tn .
L-formulu bez slobodnih promenljivih zovemo zatvorena L-formula ili Lrecenica. Za formulu A kazemo da je univerzalno zatvorena ako je oblika (x1 )(x2 ) . . . (xk )A0 ,
gde je xi V (i = 1, 2, . . . , k) i A0 ne sadrzi kvantifikatore kao ni slobodne
promenljive osim (eventualno) promenljivih x1 , x2 , . . . , xk . Formula A je egzistencijalno zatvorena ako je oblika (x1 )(x2 ) . . . (xk )A0 gde je xi V (i =
1, 2, . . . , k) i A0 ne sadrzi kvantifikatore kao ni slobodne promenljive osim (eventualno) promenljivih x1 , x2 , . . . , xk . Ako formula A ima kao slobodne samo
promenljive x1 , x2 , . . . , xk onda formulu (x1 )(x2 ) . . . (xk )A nazivamo univerzalnim zatvorenjem formule A i krace je oznacavamo sa A. Ako formula A
ima kao slobodne samo promenljive x1 , x2 , . . . , xk , onda formulu (x1 )(x2 ) . . .
(xk )A nazivamo egzistencijalnim zatvorenjem formule A i krace je oznacavamo
sa A.

Zadaci
Zadatak 28 Zapisati narednu recenicu u vidu dobro zasnovane formule logike prvog
reda:
(a) Svako voli nekoga i niko ne voli svakoga ili neko voli svakoga i neko ne voli
nikoga.
(b) Mozete lagati neke ljude sve vreme i mozete lagati sve ljude neko vreme, ali ne
mozete lagati sve ljude sve vreme.

3.2

Semantika logike prvog reda

Semanticki aspekt logike prvog reda govori o znacenju formula. U nastavku c e


biti uvedena semantika logike prvog reda u stilu Tarskog (koji je prvi precizno
uveo pojam semantike 1933. godine) [?]. Tako uvedenu semantiku zovemo i
semantika Tarskog.

3.2.1

Valuacija, interpretacija, model; zadovoljive, valjane,


porecive i kontradiktorne formule

U nastavku c emo smatrati da se podrazumeva (i kada to nije eksplicitno receno)


da se, kada se govori o formulama, govori o L-formulama za neku fiksnu
signaturu L i fiksan skup promenljivih V .
Definicija 3.8 Za datu signaturu L, L-struktura D je par (D, I L ), gde je D skup, a
I L funkcija pri c emu vazi sledece:
D je neprazan skup i zovemo ga domen, nosac ili univerzum;
svakom simbolu konstante c iz L (tj. svakom funkcijskom simbolu arnosti 0),
funkcija I L pridruzuje jedan element cI iz D;

40

3 Logika prvog reda


svakom funkcijskom simbolu f iz L za koji je ar(f ) = n i n > 0, funkcija I L
pridruzuje jednu totalnu funkciju fI iz Dn u D;
svakom predikatskom simbolu p iz L za koji je ar(p) = n (i n > 0) funkcija I L
pridruzuje jednu totalnu funkciju pI iz Dn u {0, 1} .

Valuacija v za skup promenljivih V u odnosu na domen D je preslikavanje


koje svakom elementu iz V dodeljuje jedan element iz D. Ako je v(xi ) = dj ,
onda kazemo da je dj vrednost promenljive xi u valuaciji v. Ako su v i w valuacije za isti skup promenljivih i u odnosu na isti domen, onda sa v x w
oznacavamo da je v(y) = w(y) za svaku promenljivu y razlicitu od x.
Ako je D = (D, I L ) L-struktura za neku signaturu L i v valuacija za skup

promenljivih V i za domen D, onda par (D, v) odreduje


interpretaciju, tj. funkciju Iv koja preslikava skup L-termova nad skupom promenljivih V u skup D,
a skup L-formula nad skupom promenljivih V u skup {0, 1}. Funkcija Iv uvodi
se narednim dvema definicijama.

Definicija 3.9 Vrednost (ili znacenje) terma t u interpretaciji Iv , odredenoj


L-strukturom
D i valuacijom v, oznacavamo sa Iv (t) i definisemo na sledeci nacin:
ako je t simbol promenljive x, onda je Iv (t) = v(x);
ako je t simbol konstante c, onda je Iv (t) = cI ;
ako je t jednako f (t1 , t2 , . . . , tn ) (pri c emu je ar(f ) = n) i ako je Iv (ti ) = di za
i = 1, 2, . . . , n (pri c emu je di D), onda je Iv (t) = fI (d1 , d2 , . . . , dn ).

Definicija 3.10 Vrednost (ili znacenje) formule A u interpretaciji Iv , odredenoj


Lstrukturom D i valuacijom v, oznacavamo sa Iv (A) i definisemo na sledeci nacin:
ako je A atomicka formula > onda je Iv (A) = 1;
ako je A atomicka formula onda je Iv (A) = 0;
ako je A atomicka formula p(t1 , t2 , . . . , tn ) (pri c emu je ar(p) = n) i ako
je Iv (ti ) = di za i = 1, 2, . . . , n (pri c emu je di D), onda je Iv (A) =
pI (d1 , d2 , . . . , dn );
ako je A = B, onda je

Iv (A) =

0, ako je Iv (B) = 1
1, ako je Iv (B) = 0

ako je A = B1 B2 , onda je

1, ako je Iv (B1 ) = 1 i Iv (B2 ) = 1
Iv (A) =
0, inace
ako je A = B1 B2 , onda je

1, ako je Iv (B1 ) = 1 ili Iv (B2 ) = 1
Iv (A) =
0, inace

3.2 Semantika logike prvog reda

41

ako je A = B1 B2 , onda je

0, ako je Iv (B1 ) = 1 i Iv (B2 ) = 0
Iv (A) =
1, inace
ako je A = B1 B2 , onda je

1, ako je Iv (B1 ) = Iv (B2 )
Iv (A) =
0, inace
ako je A = (x)B, onda je Iv (A) = 1 ako postoji valuacija w sa domenom D
takva da je w x v i Iw (B) = 1; inace je Iv (A) = 0;
ako je A = (x)B, onda je Iv (A) = 0 ako postoji valuacija w sa domenom D
takva da je w x v i Iw (B) = 0; inace je Iv (A) = 1.
Moze se dokazati da je na opisani nacin svakoj formuli A nad signaturom
L i skupom V pridruzena (jedinstvena) vrednost Iv (A). Primetimo da Iv (A)
zavisi od v(x) samo ako promenljiva x ima slobodna pojavljivanja u formuli
A. Vrednost Iv (A), dakle, zavisi samo od slobodnih promenljivih u formuli
A. Specijalno, ako je A recenica, vrednost Iv (A) uopste ne zavisi od v, pa tada
umesto Iv (A) pisemo krace I(A).

Definicija 3.11 Ako je interpretacija Iv odredena


L-strukturom D i valuacijom v i
ako za L-formulu A vazi Iv (A) = 1, onda kazemo da interpretacija Iv zadovoljava formulu A, da je formula A tacna u interpretaciji Iv i da je L-struktura D sa
valuacijom v model formule A i pisemo (D, v) |= A. Formula A je zadovoljiva u
L-strukturi D ako postoji valuacija v takva da je (D, v) |= A. L-formula A je zadovoljiva ako postoje L-struktura D i valuacija v takve da je (D, v) |= A.
Ako formula nije zadovoljiva, onda kazemo da je ona kontradiktorna.
Definicija 3.12 Ako je za neku L-strukturu D formula A tacna za svaku valuaciju
v, tj. u svakoj interpretaciji Iv , onda kazemo da je L-struktura D model formule A,
kazemo da je formula A valjana u L-strukturi D i pisemo D |= A. Ako je formula nad
signaturom L valjana u svakoj L-strukturi, onda za tu formulu kazemo da je valjana
i to zapisujemo |= A.
Ako formula nije valjana, onda kazemo da je ona poreciva.
Ako nije D |= A, onda pisemo D 6|= A i kazemo da je D kontramodel za A.
Analogne definicije uvodimo za skupove formula.
Definicija 3.13 Skup recenica je konzinstentan ili zadovoljiv ako ima bar jedan
model. Inace, kazemo da je nekonzistentan, nezadovoljiv, protivrecan ili kontradiktoran.
Teorema 3.1 Ako su formule A i A B (nad nekom signaturom L) valjane, onda je
i formula B valjana.
Dokaz: Pretpostavimo da postoje L-struktura D i odgovarajuca interpretacija
Iv u kojoj formula B nije tacna. Formula A je valjana, pa je tacna i u
interpretaciji Iv . U toj interpretaciji, onda, formula A B nije tacna (jer
je Iv (A) = 1 i Iv (B) = 0), s to protivreci pretpostavci da je formula A B
valjana. Dakle, polazna pretpostavka je pogresna, pa je formula B tacna
u svakoj interpretaciji, tj. ona je valjana, s to je i trebalo dokazati.
2

42

3 Logika prvog reda

Teorema 3.2 Formula A nad signaturom L je valjana u L-strukturi D ako i samo ako
je formula (x)A valjana u D.
Dokaz: Pretpostavimo da je formula A valjana u D. Pretpostavimo da formula
(x)A nije valjana u D, tj. pretpostavimo da postoji valuacija v takva da
je Iv ((x)A) = 0. Odatle sledi da postoji valuacija w za koju je w x v
i vazi Iw (A) = 0, pa formula A nije valjana u D, s to je u suprotnosti sa
pretpostavkom. Dakle, formula (x)A je valjana u D.
Pretpostavimo da je formula (x)A valjana u D. To znaci da za svaku
valuaciju v vazi Iv ((x)A) = 1. Pretpostavimo da formula A nije valjana
u D. Tada postoji valuacija w takva da je Iw (A) = 0, pa je Iw ((x)A) = 0,
s to je u suprotnosti sa pretpostavkom. Dakle, formula A je valjana u D.
2
Teorema 3.3 Formula A je valjana ako i samo ako je formula (x)A valjana.
Dokaz: Neka je A formula nad signaturom L. Ako je formula A valjana, onda
je ona valjana u svakoj L-strukturi D, pa je onda, na osnovu teoreme 3.2,
u svakoj L-strukturi D valjana i formula (x)A. Analogno vazi i obratno,
pa je formula A valjana ako i samo ako je formula (x)A valjana.
2
Na osnovu teorema 3.2 i 3.3 i jednostavnog induktivnog argumenta slede
naredne dve teoreme.
Teorema 3.4 Formula A nad signaturom L je valjana u L-strukturi D ako i samo ako
je formula A valjana u D.
Teorema 3.5 Formula A je valjana ako i samo ako je formula A valjana.
Naredne dve teoreme analogne su (preciznije dualne) prethodnim teoremama.
Teorema 3.6 Formula A nad signaturom L je zadovoljiva u L-strukturi D ako i samo
ako je formula A zadovoljiva u D.
Teorema 3.7 Formula A je zadovoljiva ako i samo ako je formula A zadovoljiva.

Zadaci
Zadatak 29
Zadatak 30

Odrediti bar jedan model formule (x)(p(x) p(f (x))).


Ispitati da li je L-struktura data sa D = {a, b, c} i
a
b
c

fI
b
a
a

pI
a
b
c

model formule (x)(p(x, f (x)) p(f (x), x)).

a b
1 1
1 0
0 0

c
0
1
1

3.2 Semantika logike prvog reda


Zadatak 31

43

Odrediti sve dvoclane modele formule (x)(y)(p(x, y)p(y, x)).

Zadatak 32
Odrediti jedan model i jedan kontramodel za formulu
(x)(y)(p(f (x, y), a)).

Zadatak 33
Data je formula
A = (x)(p(x, f (x)) p(x, x)) (x)(y)(z)(p(x, y) p(y, z) p(x, z)).
(a) Odrediti bar jedan model za formulu A.
(b) Odrediti bar jedan kontramodel za formulu A.
(c) Dokazati da svaki model formule A ima beskonacan domen.

Zadatak 34
Dokazati da je formula (x)(y)(z)(p(x) p(y) p(z)) valjana.
Zadatak 35 Dokazati da su naredne formule valjane:
(a) (x)(y)A (y)(x)A
(b) ((x)(AB)) (A(x)B), pri c emu promenljiva x nije slobodna u A.
Zadatak 36 Dokazati da naredne formule nisu valjane:
(a) (x)A1 (x)A2 (x)(A1 A2 )
(b) (x)A1 (x)A2 (x)(A1 A2 )
Zadatak 37 Dokazati da formula (x)(y)p(x, y) (y)(x)p(x, y) nije valjana.
Zadatak 38 Dokazati da je sledeca formula valjana:
((x)A) B (x)(A B)
pri c emu formula B nema slobodnih pojavljivanja promenljive x. Dokazati da data
formula nije valjana ako se izostavi navedeni dodatni uslov.

3.2.2

Logicke posledice, logicki ekvivalentne formule,


supstitucija

Definicija 3.14 Neka je skup formula i neka je A formula nad signaturom L.


Kazemo da je formula A logicka posledica skupa formula i pisemo |= A ukoliko za svaku L-strukturu D i svaku valuaciju v vazi: ako za svaku formulu B iz
vazi (D, v) |= B, onda vazi (D, v) |= A.
Drugim recima, kazemo da je formula A logicka posledica skupa formula
ako je svaki model za istovremeno i model za A.
Ako je skup konacan, tj. ako je = {B1 , B2 , . . . , Bk }, onda pisemo B1 , B2 ,
. . . , Bk |= A. Ako je prazan skup, onda pisemo |= A. Ako je |= A, onda
formulu A zadovoljava svaka interpretacija i tada je formula A valjana.
Ako ne vazi |= A, onda to zapisujemo 6|= A.
Na osnovu definicije logicke posledice, jednostavno se dokazuje naredno

tvrdenje
(analogno teoremi 2.2).
Teorema 3.8
(a) Svaka valjana formula je logicka posledica praznog skupa formula.
(b) Ako je skup kontradiktoran, onda je svaka formula njegova logicka posledica.
Specijalno, svaka formula je logicka posledica skupa {}.

44

3 Logika prvog reda

(c) Ako je i |= A, onda je |= A.


Definicija 3.15 Kazemo da su formule A i B logicki ekvivalentne i pisemo A B
ako je A logicka posledica formule B i B je logicka posledica formule A.
Ako je svaki model za A istovremeno i model za B i obratno, onda u bilo

kojoj valuaciji formule A i B imaju jednake vrednosti. Tvrdenja


oblika A B
zovemo logickim ekvivalencijama (ili krace ekvivalencijama). Relacija je, ocigledno, relacija ekvivalencije nad skupom formula.
Teorema 3.9 Ako za L-formule A1 , A2 , B1 i B2 vazi A1 A2 i B1 B2 , onda je:
(a) A1 A2
(b) A1 B1 A2 B2
(c) A1 B1 A2 B2
(d) A1 B1 A2 B2
(e) A1 B1 A2 B2
(f) (x)A1 (x)A2
(g) (x)A1 (x)A2
Teorema 3.10 Za datu signaturu L, dve L-formule A i B su logicki ekvivalentne ako
i samo ako je formula A B valjana.
Primer 3.3 Moze se dokazati da za proizvoljnu L-formulu A vazi (x)A (x)A.
Neka je D proizvoljna L-struktura. Pretpostavimo da vazi Iv ((x)A) = 1 i dokazimo
da onda vazi i Iv ((x)A) = 1. Iz Iv ((x)A) = 1 sledi Iv ((x)A) = 0, pa u svakoj
valuaciji v 0 , takvoj da je v 0 x v, vazi Iv0 (A) = 0. To znaci da u svakoj valuaciji v 0 ,
takvoj da je v 0 x v, vazi Iv0 (A) = 1, a odatle sledi da u svakoj valuaciji v 00 , takvoj
da je v 00 x v 0 , vazi Iv00 ((x)A) = 1, pa i u valuaciji v, tj. Iv ((x)A) = 1, sto je i

trebalo dokazati. Drugi smer tvrdenja


(da iz Iv ((x)A) = 1 sledi Iv ((x)A) = 1)
dokazuje se analogno.
Primer 3.4 Neke od logickih ekvivalencija logike prvog reda (ili, preciznije, neke od
shema logickih ekvivalencija logike prvog reda) su:
(x)A
(x)A
(x)(A B)
(x)(A B)
(x)(A B)

(x)A
(x)A
(x)A (x)B
(x)A (x)B
(x)A B

(x)(A B)

(x)A B

De Morganov zakon
De Morganov zakon
zakon distributivnosti prema
zakon distributivnosti prema
zakon distributivnosti prema
(pri c emu B ne sadrzi slobodna
pojavljivanja promenljive x)
zakon distributivnosti prema
(pri c emu B ne sadrzi slobodna
pojavljivanja promenljive x)

Definicija 3.16 Term dobijen zamenom (supstitucijom) promenljive x termom tx u


termu t oznacavamo sa t[x 7 tx ] i definisemo na sledeci nacin:

3.2 Semantika logike prvog reda

45

ako je t simbol konstante, onda je t[x 7 tx ] = t;


ako je t = x, onda je t[x 7 tx ] = tx ;
ako je t = y, gde je y 6= x, onda je t[x 7 tx ] = t;
ako je t = f (t1 , t2 , . . . , tn ), onda je t[x 7 tx ] = f (t1 [x 7 tx ], t2 [x 7
tx ], . . . , tn [x 7 tx ]).
Definicija 3.17 Formulu dobijenu zamenom (supstitucijom) promenljive x termom
tx u formuli A oznacavamo sa A[x 7 tx ] i definisemo na sledeci nacin:
>[x 7 tx ] = >;
[x 7 tx ] = ;
ako je A = p(t1 , t2 , . . . , tn ), onda je A[x 7 tx ] = p(t1 [x 7 tx ], t2 [x 7
tx ], . . . , tn [x 7 tx ]);
(A)[x 7 tx ] = (A[x 7 tx ]);
(A B)[x 7 tx ] = (A[x 7 tx ] B[x 7 tx ]);
(A B)[x 7 tx ] = (A[x 7 tx ] B[x 7 tx ]);
(A B)[x 7 tx ] = (A[x 7 tx ] B[x 7 tx ]);
(A B)[x 7 tx ] = (A[x 7 tx ] B[x 7 tx ]);
(xA)[x 7 tx ] = (xA);
(xA)[x 7 tx ] = (xA);
ako je x 6= y, neka je z promenljiva koja se ne pojavljuje ni u (y)A ni u tx ; tada
je (yA)[x 7 tx ] = (z)A[y 7 z][x 7 tx ];
ako je x 6= y, neka je z promenljiva koja se ne pojavljuje ni u (y)A ni u tx ; tada
je (yA)[x 7 tx ] = (z)A[y 7 z][x 7 tx ].

Primetimo da poslednja dva pravila u prethodnoj definiciji obezbeduju,


na
primer, da ((y)p(x, y))[x 7 y] ne bude (y)p(y, y) vec (z)p(y, z).
Primer 3.5 Vazi:
(x)A

(y)(A[x 7 y])

(x)A

(y)(A[x 7 y])

zakon o preimenovanju vezane


promenljive (pri c emu A ne sadrzi
slobodna pojavljivanja promenljive y)
zakon o preimenovanju vezane
promenljive (pri c emu A ne sadrzi
slobodna pojavljivanja promenljive y)

U daljem tekstu c emo pod terminom izraz podrazumevati i termove i formule.

46

3 Logika prvog reda

Definicija 3.18 Uopstena zamena (supstitucija) je skup zamena [x1 7 t1 ], [x2 7


t2 ], . . ., [xn 7 tn ] gde su xi promenljive i ti su proizvoljni termovi i gde je xi 6= xj za
i 6= j. Takvu zamenu zapisujemo krace [x1 7 t1 , x2 7 t2 , . . . , xn 7 tn ].
Uopstena zamena primenjuje se simultano na sva pojavljivanja promenljivih x1 ,
x2 , . . ., xn u polaznom izrazu i samo na njih (tj. ne primenjuje se na podtermove
dobijene zamenama).
U daljem tekstu c emo umesto termina uopstena zamena (uopstena supstitucija)
koristiti termin zamena (supstitucija).
Izraz koji je rezultat primene zamene nad izrazom E, oznacavamo sa E.
Ocigledno, iz zamene [x1 7 t1 , x2 7 t2 , . . . , xn 7 tn ] se mogu (ali ne
moraju) izostaviti sve pojedinacne zamene oblika xi 7 xi .
Primer 3.6 Za = [x 7 f (y)] i s = g(a, x) vazi s = g(a, f (y)).
Za = [x 7 f (x)] i s = g(a, x) vazi s = g(a, f (x)).
Za = [x 7 f (y), y 7 a], s = g(a, x) i t = g(y, g(x, y)) vazi s = g(a, f (y)) i
t = g(a, g(f (y), a)).
Ukoliko u zameni = [x1 7 t1 , x2 7 t2 , . . . , xn 7 tn ] nijedan od termova
ti ne sadrzi nijednu od promenljivih xj (sem, eventualno, ako je ti = xi za neko
i), onda je efekat te zamene jednak efektu sukcesivno primenjenih pojedinacnih
zamena. Supstitucija je idempotentna (tj. za bilo koji izraz E vazi E =
(E)) ako i samo ako vazi taj uslov da nijedan od termova ti ne sadrzi
nijednu od promenljivih xj (sem, eventualno, ako je ti = xi za neko i).
Definicija 3.19 Za supstitucije = [x1 7 t1 , x2 7 t2 , . . . , xn 7 tn ] i = [y1 7
s1 , y2 7 s2 , . . . , ym 7 sm ], kompozicija supstitucija je supstitucija [x1 7
t1 , x2 7 t2 , . . . , xn 7 tn , y1 7 s1 , y2 7 s2 , . . . , ym 7 sm ] iz koje su izbrisane
zamene oblika xi 7 xi , kao i zamene oblika yi 7 si , gde je yi = xj za neko j.
Primer 3.7 Za = [x 7 f (y)] i = [y 7 g(z)], vazi = [x 7 f (g(z)), y 7
g(z)].
Za = [x 7 f (y)] i = [y 7 g(x)], vazi = [x 7 f (g(x)), y 7 g(x)].
Za = [x 7 y] i = [y 7 x], vazi = [y 7 x].
Za = [x 7 f (y)] i = [x 7 g(z)], vazi = [x 7 f (y)].
Za = [x 7 f (x)] i = [x 7 a], vazi = [x 7 f (a)].
Moze se dokazati da je kompozicija supstitucija asocijativna, kao i da vazi
E() = (E).
Definicija 3.20 Ako je E izraz (term ili formula) i ako je supstitucija, onda kazemo
da je E instanca (ili primerak) izraza E. Ako je izraz E bazni, onda kazemo da je
on bazna instanca izraza E.
Definicija 3.21 Neka su formule B1 i B2 takve da formula B2 nema nijednu slobodnu
promenljivu koju nema formula B1 . Formulu dobijenu zamenom (supstitucijom) formule B1 formulom B2 u formuli A, oznacavamo sa A[B1 7 B2 ] i definisemo na sledeci
nacin:
ako je formula A instanca formule B1 , tj. ako je A = B1 za neku supstituciju
, onda je A[B1 7 B2 ] = B2 ;

3.2 Semantika logike prvog reda

47

ako je formula A atomicka formula i nije instanca formule B1 , onda je A[B1 7


B2 ] = A;
(A)[B1 7 B2 ] = (A[B1 7 B2 ]);
(A B)[B1 7 B2 ] = (A[B1 7 B2 ] B[B1 7 B2 ]);
(A B)[B1 7 B2 ] = (A[B1 7 B2 ] B[B1 7 B2 ]);
(A B)[B1 7 B2 ] = (A[B1 7 B2 ] B[B1 7 B2 ]);
(A B)[B1 7 B2 ] = (A[B1 7 B2 ] B[B1 7 B2 ]);
(xA)[B1 7 B2 ] = (x)(A[B1 7 B2 ]);
(xA)[B1 7 B2 ] = (x)(A[B1 7 B2 ]).
Naglasimo da smo u prethodnoj definiciji datom restrikcijom pojednostavili problem slobodnih pojavljivanjima promenljivih u formulama B1 i B2 . Osnovna svrha koncepta zamene formule formulom je u zameni formule logicki
ekvivalentnom formulom i za tu svrhu je data definicija dovoljna.
Teorema 3.11 (Teorema o zameni) Ako vazi B1 B2 , onda je A A[B1 7 B2 ].
Primer 3.8 Neke od logickih ekvivalencija logike prvog reda (koje proizilaze iz iskazne
logike) su (videti i primer 2.6):
A A
zakon dvojne negacije
A A >
zakon iskljucenja treceg
(A B) (B A) zakon komutativnosti za
Primer 3.9 Vazi (x)(AB) (x)(AB) (x)(AB) (x)(A
B) (x)(A B). Iz (x)(A B) (x)(A B), na osnovu teoreme 3.10
sledi da je formula (x)(A B) (x)(A B) valjana.

Zadaci
Zadatak 39
Zadatak 40

Navesti primer formule koja je valjana a nije izvod tautologije.


Dokazati da je formula (x)(A B) ((x)A (x)B) valjana.

Zadatak 41 Dokazati da za svaku supstituciju iz A B sledi A B.


Zadatak 42 Dokazati da je formula (x)(y)A (y)(A[x 7 y]) valjana.
Zadatak 43 Dokazati sledecu logicku ekvivalenciju:
xA y(A[x 7 y])
pri c emu formula A nema slobodnih pojavljivanja promenljive y. Dokazati da data
logicka ekvivalencija ne vazi ako se izostavi navedeni dodatni uslov.
Zadatak 44 Dokazati da je supstitucija = [x1 7 t1 , x2 7 t2 , . . . , xn 7 tn ]
idempotentna (tj. da za bilo koji izraz E vazi E = (E)) ako i samo ako nijedan od
termova ti ne sadrzi nijednu od promenljivih xj (sem, eventualno, ako je ti = xi za
neko i).

48

3.2.3

3 Logika prvog reda

Normalne forme

Definicija 3.22 Kazemo da je formula u preneks formi ili preneks normalnoj formi
ako je ona oblika
Q1 x1 Q2 x2 . . . Qn xn A
pri c emu je Qi ili ili i A ne sadrzi kvantifikatore, kao ni slobodne promenljive osim
(eventualno) promenljivih x1 , x2 , . . . , xn .
Ako je recenica (zatvorena formula) A logicki ekvivalentna formuli B i formula B je u preneks normalnoj formi, onda kazemo da je formula B preneks
normalna forma formule A. Korisc enjem pogodnih logickih ekvivalencija, svaka zatvorena formula moze biti transformisana u svoju preneks normalnu formu. Radi jednostavnosti procedure i rezultujuce formule, obicno se u okviru
transformisanja formule u preneks formu najpre eliminisu veznici i . Naglasimo da jedna formula moze da ima vise preneks normalnih formi (na primer, i formula (x)(y)(A(x)B(y)) i formula (y)(x)(B(y)A(x)) su preneks
normalne forme formule (x)A(x) (y)B(y)). Slicno, jedna formula koja je u
preneks normalnoj formi moze biti preneks normalna forma za vise formula.
Transformisanje formule u preneks normalnu formu moze biti opisano procedurom prikazanom na slici 3.1 (kada govorimo o ,,primeni neke logicke ekvivalencije mislimo na korisc enje ekvivalencije na osnovu teoreme o zameni
(3.11)).
Korektnost navedenog algoritma moze se dokazati slicno kao korektnost
procedure za transformisanje formule u konjunktivnu normalnu formu (teorema 2.6). Za slucaj kada (prilikom primene koraka 4 algoritma) promenljiva
x ima slobodna pojavljivanja u formuli B, izborom nove promenljive od, na
primer, formule (xA) B dobija se formula u(A[x 7 u] B), pa je potrebno
dokazati i:
(xA) B u(A[x 7 u] B)
(kao i preostale analogne logicke ekvivalencije). Bez detalja dokaza, navodimo
teoremu o korektnosti algoritma PRENEX.
Teorema 3.12 (Korektnost algoritma PRENEX) Algoritam PRENEX se zaustavlja i zadovoljava sledece svojstvo: ako je A ulazna formula, onda je izlazna formula
A0 u preneks normalnoj formi i logicki je ekvivalentna sa A.
Za transformisanje formule u njenu preneks normalnu formu mogu se koristiti i logicke ekvivalencije kao s to su
B (xA) (x)(B A),
(x)A B (x)(A B),
pri c emu x nema slobodna pojavljivanja u formuli B, ali to nije potrebno ako
su na pocetku eliminisani veznici i .
U nekim situacijama moguce je primeniti neki korak navedenog algoritma
na vise od jednog nacina. Na primer, formulu (x)p(x) (y)q(y) moguce je
transformisati i u (x)(p(x) (y)q(y)) i u (y)((x)p(x) q(y)). Obe ove formule su, naravno, logicki ekvivalentne sa polaznom formulom. Ipak, u situacijama kada je moguce ,,pomeriti i univerzalni i egzistencijalni kvantifikator,
uvek c emo radije ,,pomeriti najpre egzistencijalni, a onda univerzalni. Takav
prioritet uvodimo zarad jednostavnijeg koraka skolemizacije (o kojem c e biti
reci u nastavku). Naglasimo da univerzalni i egzistencijalni kvantifikator ne

3.2 Semantika logike prvog reda

Algoritam: PRENEX
Ulaz: Zatvorena dobro zasnovana formula A
Izlaz: Preneks normalna forma formule A
1. Dok god je to moguce, primenjivati logicke ekvivalencije
A B (A B) (B A) i
A B A B.
2. Dok god je to moguce, primenjivati sledece logicke ekvivalencije:
(A B) A B,
(A B) A B,
(x)A (x)A,
(x)A (x)A.
3. Eliminisati visestruke veznike koristeci zakon dvojne negacije:
A A.
4. Dok god je to moguce, primenjivati sledece logicke ekvivalencije:
(xA) B (x)(A B),
(xA) B (x)(A B),
B (x)A (x)(B A),
B (x)A (x)(B A),
(xA) B (x)(A B),
(xA) B (x)(A B),
B (x)A (x)(B A),
B (x)A (x)(B A),
pri cemu x nema slobodna pojavljivanja u formuli B. Ako x ima slobodna pojavljivanja u B, onda treba najpre preimenovati promenljivu
x u formuli (x)A (odnosno u formuli (x)A).
Figure 3.1: Algoritam PRENEX

49

50

3 Logika prvog reda

mogu, u opstem slucaju, da menjaju mesta, tj. formule (x)(y)A i (y)(x)A


nisu u opstem slucaju logicki ekvivalentne. S druge strane, dva univerzalna
kvantifikatora mogu da zamene mesta, tj. formule (x)(y)A i (y)(x)A su
logicki ekvivalentne. Slicno, dva egzistencijalna kvantifikatora mogu da zamene mesta, tj. formule (x)(y)A i (y)(x)A su logicki ekvivalentne. To
sustinski znaci da u bloku kvantifikatora istog tipa, njihov poredak nije bitan.
Primer 3.10 Razmotrimo formulu
x p(x) xyz(q(y, z) r(g(x), y)) .
Nakon koraka
x(p(x) xyz(q(y, z) r(g(x), y))) ,
kako je promenljiva x slobodna u p(x), najpre c emo preimenovati vezanu promenljivu
x u u (u okviru formule xyz(q(y, z) r(g(x), y))):
x(p(x) uyz(q(y, z) r(g(u), y))) .
Nakon toga kvantifikatori u, y, z mogu, jedan po jedan, biti pomereni na pocetak
formule:
xuyz(p(x) (q(y, z) r(g(u), y))) .
Definicija 3.23 Formula bez kvantifikatora je u konjunktivnoj normalnoj formi ako
je oblika
A1 A2 . . . An
pri c emu je svaka od formula Ai (1 i n) disjunkcija literala.
Konjunktivna normalna forma formule predikatske logike moze se dobiti
na isti nacin kao i u slucaju iskazne logike (videti poglavlje 2.2.5).
Primer 3.11 Konjunktivna normalna forma formule
p(x) (q(y, z) r(g(u), y))
je formula
p(x) (q(y, z) r(g(u), y)) .
Definicija 3.24 Formula je u klauzalnoj formi ako je oblika
x1 x2 . . . xn A
gde je A formula bez kvantifikatora koja je u konjunktivnoj normalnoj formi i A nema
slobodnih promenljivih osim, eventualno, promenljivih x1 , x2 , . . . , xn .
Ako je formula x1 x2 . . . xn A u klauzalnoj formi, onda se c esto u zapisu
izostavljaju kvantifikatori i pise samo A, podrazumevajuci da se misli na univerzalno zatvorenje formule A.
Ne postoji za svaku recenicu formula koja je u klauzalnoj formi i koja joj
je logicki ekvivalentna. Na primer, za recenicu (x)p(x) ne postoji formula

koja je u klauzalnoj formi i koja joj je logicki ekvivalentna. Medutim,


moze se
dokazati da za svaku recenicu A postoji formula B u klauzalnoj formi takva
da je A zadovoljiva ako i samo ako je B zadovoljiva (videti teoremu 3.15). To

3.2 Semantika logike prvog reda

51

je dovoljno i pogodno za ispitivanje zadovoljivosti formula ako se ispituje


zadovoljivost recenice A, dovoljno je ispitati zadovoljivost formule B koja je u
klauzalnoj formi (pogodnoj za neke metode) i zadovoljiva je ako i samo ako je
zadovoljiva formula A. Uslov da je formula A zadovoljiva ako i samo ako je B
zadovoljiva zove se slaba ekvivalencija.
Transformisanje recenice A u formulu B koja je u klauzalnoj formi i koja
je zadovoljiva ako i samo ako je A zadovoljiva ukljucuje eliminisanje egzistencijalnih kvantifikatora. Ono se zasniva na izmeni polazne signature dodavanjem novih funkcijskih simbola. Te dodatne funkcijske simbole zovemo
Skolemovim konstantama (za funkcijske simbole arnosti 0) i Skolemovim funkcijama, a proces eliminisanja egzistencijalnih kvantifikatora zovemo skolemizacijom (po matematicaru 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 eliminisu se egzistencijalni kvantifikatori, jedan po
jedan, sleva nadesno.
Pretpostavimo da recenica pocinje egzistencijalnim kvantifikatorom: yA.
Treba izabrati novi simbol konstante d koji se ne pojavljuje u signaturi, obrisati
kvantifikator i zameniti promenljivu y simbolom d. Na taj nacin formula yA
transformise se u formulu A[y 7 d]. Moze se dokazati da je formula yA
zadovoljiva ako i samo ako je formula A[y 7 d] zadovoljiva.
Ako recenica pocinje nizom univerzalnih kvantifikatora: x1 x2 . . . xn yA,
onda uvodimo novi funkcijski simbol f arnosti n koji do tada nije postojao u
signaturi. Polazna formula bice onda transformisana u formulu x1 x2 . . . xn
A[y 7 f (x1 , x2 , . . . , xn )]. Moze se dokazati da je formula x1 x2 . . . xn yA
zadovoljiva ako i samo ako je formula x1 x2 . . . xn A[y 7 f (x1 , x2 , . . . , xn )]

zadovoljiva. (Primetimo da je uvodenje


nove konstante samo specijalni slucaj

uvodenja
novog funkcijskog simbola.)
Teorema 3.13 (Teorema o skolemizaciji) Ako je formula B nad signaturom L0 dobijena skolemizacijom od recenice A nad signaturom L koja je u preneks normalnoj
formi, onda je A zadovoljiva ako i samo ako je B zadovoljiva.
Primer 3.12 Skolemizacijom se formula
xuyz(p(x) (q(y, z) r(g(u), y)))
transformise u formulu
p(x) (q(h(x, u), z) r(g(u), h(x, u))) .
Teorema 3.14 Neka je formula B (u klauzalnoj formi) dobijena od recenice A uzastopnom primenom sledecih postupaka:
transformisanje formule u preneks normalnu formu;
transformisanje dela formule bez kvantifikatora u konjunktivnu normalnu formu;
skolemizacija.
Tada je formula A zadovoljiva ako i samo ako je B zadovoljiva.

52

3 Logika prvog reda

Dokaz: Transformacija formule u preneks normalnu formu i transformacija dela


formule bez kvantifikatora u konjunktivnu normalnu formu zasnovane
su na logickim ekvivalencijama, pa ako je formula B dobijena od formule
A uzastopnom primenom navedene dve transformacije, vazi A B,
s to je jaci uslov nego uslov da je A zadovoljiva ako i samo ako je B
zadovoljiva. Na osnovu teoreme 3.13 sledi da skolemizacija c uva zadovoljivost i nezadovoljivost, pa je formula B zadovoljiva ako i samo ako je
A zadovoljiva.
2

Na osnovu prethodne teoreme neposredno sledi naredno tvrdenje.


Teorema 3.15 Za svaku recenicu A postoji formula B u klauzalnoj formi takva da je
A zadovoljiva ako i samo ako je B zadovoljiva.
Klauzalna forma je pogodna za dokazivanje pobijanjem. Da bi se dokazalo
da je formula A valjana, dovoljno je dokazati da je formula A nezadovoljiva,
pa je dovoljno i dokazati da je klauzalna forma formule A nezadovoljiva.
Primer 3.13 Formula A = (x)p(x, x) (y)p(y, y) nad signaturom L je valjana.
To se moze dokazati na sledeci nacin.
Formula A je jednaka ((x)p(x, x) (y)p(y, y)) i njena preneks normalna
forma je (y)(x)(p(x, x) p(y, y)). Skolemizacijom dobijamo formulu p(x, x)
p(c, c), gde je c novi simbol konstante. Neka je L0 signatura dobijena prosirivanjem
signature L simbolom c. Pokazimo da je formula p(x, x) p(c, c) nezadovoljiva.
Pretpostavimo suprotno pretpostavimo da navedena formula ima model. Neka je
0
0
0
to L0 -struktura D = (D, I L ) sa valuacijom v. Neka je I L (p) = pI i I L (c) = cI .
Vazi Iv (p(x, x) p(c, c)) = 1 tj. Iv ((x)(p(x, x) p(c, c))) = 1, pa za svaku
valuaciju w takvu da je w x v vazi Iw (p(x, x) p(c, c)) = 1. To, dakle, vazi i za
valuaciju w u kojoj je w(x) = cI . Iz Iw (p(x, x) p(c, c)) = 1 sledi Iw (p(x, x)) = 1
i Iw (p(c, c)) = 0. Iz Iw (p(x, x)) = 1 sledi pI (cI , cI ) = 1, a iz Iw (p(c, c)) = 0 sledi
pI (cI , cI ) = 0, sto je kontradikcija. Dakle, formula p(x, x) p(c, c) je nezadovoljiva,
pa je polazna formula A valjana.

Zadaci
Zadatak 45 Odrediti klauzalne forme za formule:
(a) (x)A1 (x)A2 (x)(A1 A2 )
(b) (x)A1 (x)A2 (x)(A1 A2 )
(c) (x)(y)A (y)A(f (y), y)

3.2.4

Unifikacija

Problem unifikacije je problem ispitivanja da li postoji supstitucija koja c ini dva


izraza (dva terma ili dve formule) jednakim. Unifikacija se prvi put pominje u
radovima Posta, a zatim i u radovima Erbrana.
Definicija 3.25 Ako su e1 i e2 izrazi i ako postoji supstitucija takva da vazi e1 =
e2 , onda kazemo da su izrazi e1 i e2 unifikabilni i da je supstitucija unifikator za
ta dva izraza.

3.2 Semantika logike prvog reda

53

Dva unifikabilna izraza mogu da imaju vise unifikatora. Za dva unifikatora


1 i 2 kazemo da su jednaka do na preimenovanje promenljivih ako postoji
supstitucija koja je oblika [v10 7 v100 , v20 7 v200 , . . . , vn0 7 vn00 ], pri c emu su vi0 i vi00
simboli promenljivih i vazi 1 = 2 .
Primer 3.14 Neka je term t1 jednak g(x, z), neka je term t2 jednak g(y, f (y)) i neka
je supstitucija [y 7 x, z 7 f (x)]. Tada je i t1 i t2 jednako g(x, f (x)), pa su
termovi t1 i t2 unifikabilni, a je (jedan) njihov unifikator. Unifikator termova t1 i t2
je npr. i [x 7 a, y 7 a, z 7 f (a)]. Termovi g(x, x) i g(y, f (y)) nisu unifikabilni.
Definicija 3.26 Supstitucija je najopstiji unifikator za izraze e1 i e2 ako svaki
unifikator izraza e1 i e2 moze biti predstavljen u obliku = za neku supstituciju
.
Na osnovu definicije, svaki unifikator izraza e1 i e2 moze biti dobijen od
najopstijeg unifikatora primenom neke supstitucije. Svaka dva unifikabilna
izraza imaju najopstiji unifikator. Moze se dokazati da za dva izraza postoji
najvise jedan najopstiji unifikator (do na preimenovanje promenljivih).
Unifikacija ima mnoge primene. Jedna od najznacajnijih je u metodu rezolucije.

Na slici 3.2 dat je opis opsteg algoritma za odredivanje


najopstijeg unifikatora. Pretpostavimo da je dat niz parova izraza
(s1 , t1 ), (s2 , t2 ), . . . , (sn , tn )
i da se trazi supstitucija takva da vazi
s1 = t1 , s2 = t2 , . . . , sn = tn .
Algoritam unifikacije ili vraca trazenu supstituciju ili se zaustavlja neuspesno,
ukazujuci na to da trazena supstitucija ne postoji. Ukoliko postoji bar jedna
supstitucija koja zadovoljava trazeni uslov, algoritam unifikacije vraca najopstiji unifikator (za date parove izraza). Ulaz za algoritam unifikacije za parove
(s1 , t1 ), (s2 , t2 ), . . . , (sn , tn ) se obicno zadaje u vidu niza jednakosti s1 = t1 , s2 =
t2 , . . . , sn = tn .
Primetimo da je korak 6 algoritma moguce u opstem slucaju primeniti na
vise nacina. Bilo koji od tih nacina vodi istom rezultatu neuspehu (ako ne
postoji trazeni unifikator) ili jednom od unifikatora koji se mogu razlikovati
samo do na preimenovanje promenljivih.

U koracima 5 i 6 se primenjuje tzv. provera pojavljivanja c ime se obezbeduje


zaustavljanje procedure (tj. sprecava pojavljivanje beskonacnih petlji).

Primer 3.15 Ilustrujmo rad algoritma za odredivanje


na primeru sledece dve jednakosti:
g(y) = x
f (x, h(x), y) = f (g(z), w, z)
Polazni niz jednakosti je
g(y) = x, f (x, h(x), y) = f (g(z), w, z).
Primenom koraka 3 dobijamo
x = g(y), f (x, h(x), y) = f (g(z), w, z).

54

3 Logika prvog reda

Algoritam: Najopstiji unifikator


Ulaz: Niz jednakosti s1 = t1 , s2 = t2 , . . . , sn = tn
Izlaz: Najopstiji unifikator (ako on postoji)
Primenjuj, dok je to moguce, sledece korake:
1. Ako postoje jednakosti koje imaju vise od jednog pojavljivanja, obrisi
za svaku od njih sva pojavljivanja osim jednog (factoring).
2. Obrisi sve jednakosti oblika t = t (tautology).
3. Ako je x promenljiva i t term koji nije promenljiva i ako se t = x
pojavljuje u nizu jednakosti, zameni jednakost t = x sa x = t. Ovo
uraditi za sve jednakosti tog oblika (orientation).
4. Pretpostavimo da je jednakost s = t element niza jednakosti i da ni s
ni t nisu promenljive. Razmotri sledece slucajeve:
(a) Ako je s jednako (u1 , u2 , . . . , uk ) i t je jednako
(v1 , v2 , . . . , vk ) (gde je funkcijski ili predikatski simbol), onda dodaj jednakosti u1 = v1 , u2 = v2 , . . ., uk = vk i
zatim obrisi jednakost s = t (decomposition).
(b) Ako su s i t bilo koje druge forme, zaustavi rad i kao rezultat
vrati neuspeh (ovo se odnosi na slucajeve kada je jedan od termova simbol konstante, a drugi nije; kada se u s i t razlikuju
vodeci funkcijski (odnosno predikatski) simboli i kada su vodeci
funkcijski (odnosno predikatski) simboli s i t razlicite arnosti)
(collision).
5. Ako je x promenljiva, t term koji sadrzi x i x = t se pojavljuje u nizu
jednakosti, zaustavi rad i kao rezultat vrati neuspeh (cycle).
6. Ako je x promenljiva, t term koji ne sadrzi x, x se pojavljuje i u nekim
drugim jednakostima i x = t se pojavljuje u nizu jednakosti, onda
primeni supstituciju [x 7 t] na sve druge jednakosti (application).
Ako nije moguce primeniti nijedan od navedenih koraka vrati tekuci skup
jednakosti kao najopstiji unifikator.
Figure 3.2: Algoritam Najopstiji unifikator

3.2 Semantika logike prvog reda

55

Primenom koraka 4(a) dobijamo


x = g(y), x = g(z), h(x) = w, y = z.
Korak 6 je moguce primeniti na vise nacina. Primenom koraka 6 za y = z dobijamo
x = g(z), x = g(z), h(x) = w, y = z.
Primenom koraka 1 dobijamo
x = g(z), h(x) = w, y = z.
Primenom koraka 3 dobijamo
x = g(z), w = h(x), y = z.
Primenom koraka 6 dobijamo
x = g(z), w = h(g(z)), y = z.
trazeni najopstiji unifikator . Za
Ovaj niz jednakosti odreduje
= [x 7 g(z), w 7 h(g(z)), y 7 z]
vazi
g(y) = x
f (x, h(x), y) = f (g(z), w, z)
tj. vazi
g(z) = g(z)
f (g(z), h(g(z)), z) = f (g(z), h(g(z)), z) .
Primer 3.16 Razmotrimo sledecu jednakost:
g(x, x) = g(y, f (y)) .
Primenom koraka 4(a) dobijamo
x = y, x = f (y).
Korak 6 moze se primeniti samo na dva nacina:
primenom koraka za jednakost x = y; tada se dobija x = y, y = f (y), odakle se,
primenom koraka 5 dolazi do neuspeha.
primenom koraka za jednakost x = f (y); tada se dobija f (y) = y, x = f (y),
odakle se, primenom koraka 3 i koraka 5 dolazi do neuspeha.
Bez dokaza navodimo teoremu o korektnosti navedenog algoritma za odre
divanje
najopstijeg unifikatora (videti, na primer, [?, ?]).
Teorema 3.16 (Korektnost algoritma Najopstiji unifikator) Algoritam Najopstiji unifikator zadovoljava sledece uslove:
zaustavlja se;
ako vrati supstituciju, onda je ona najopstiji unifikator za dati niz parova izraza;
ako se algoritam zaustavi sa neuspehom, onda ne postoji unifikator za dati niz
parova izraza.

56

3 Logika prvog reda

Navedeni algoritam nije efikasan. Postoje znatno efikasniji algoritmi za


unifikaciju. Mnogi od njih zasnovani su na korisc enju pogodnih struktura podataka i implicitnom primenjivanju supstitucije (iz koraka 6). Neki od tih algoritama imaju linearnu slozenost (po broju polaznih jednakosti), ali, u opstem
slucaju, najopstiji unifikator moze imati i eksponencijalnu duzinu (po broju polaznih jednakosti), te ga nije moguce eksplicitno predstaviti u linearnom vremenu. To ilustruje sledeci primer.
Primer 3.17 Za skup jednakosti
x1 = f (x0 , x0 )
x2 = f (x1 , x1 )
...
xn = f (xn1 , xn1 )
Najopstiji unifikator sadrzi zamenu xn 7 t, gde je t term koji sadrzi samo simbole x0
i f , pri c emu ima 2n 1 pojavljivanja simbola f .
Primetimo da je problem ispitivanja da li je neka formula instanca neke

aksiomske sheme blizak problemu unifikacije. Navedeni algoritam za odredivanje najopstijeg unifikatora moze se koristiti i za unifikovanje dobro zasnovanih formula. Prilikom ispitivanja da li neka formula c ini instancu neke aksi
omske sheme, medutim,
vrsi se samo jednosmerno uparivanje i varijable u formulama se smatraju konstantama koje nije moguce instancirati. Postoje i drugi
algoritmi za jednosmerno uparivanje.
Primer 3.18 Za testiranje da li je p(f (s(a), f (u, v)), s(f (a, f (u, v)))) instanca for
mule p(f (s(x), y), s(f (x, y))) moze se primeniti algoritam za odredivanje
najopstijeg
unifikatora na jednakost
p(f (s(a), f (u, v)), s(f (a, f (u, v)))) = p(f (s(x), y), s(f (x, y)))
uz restrikciju da se koristi samo jednostrano uparivanje tj. da se sve promenljive iz prve
formule smatraju konstantama koje nije moguce supstituisati. Time se dobija najopstiji
unifikator
= [x 7 a, y 7 f (u, v)] .
Zbog restrikcije nad varijablama u jednosmernom uparivanju, u testiranju da li je
p(f (s(a), f (u, y)), s(f (a, f (u, y)))) instanca formule p(f (s(x), y), s(f (x, y))), simboli y u prvoj i drugoj formuli ne smatraju se jednakim, te je najopstiji unifikator za
ove dve formule
= [x 7 a, y 7 f (u, y)] .

Zadaci
Zadatak 46 Odrediti najopstiji unifikator za sledeci skup parova termova:
{(g(x, h(y, z)), g(u, x)), (f (x), f (h(c, v))), (g(z, u), g(y, u))} .
Zadatak 47 Ispitati da li je relacija unifikabilnosti tranzitivna.

Zadatak 48
Dokazati da za dva izraza postoji najvise jedan najopstiji unifikator
(do na preimenovanje promenljivih).

3.2 Semantika logike prvog reda

3.2.5

57

Metod rezolucije

Metod rezolucije formulisao je Alan Robinson 1965. godine [?], sledeci mnogobrojne prethodne rezultate. Metod rezolucije je postupak za ispitivanje (ne)zadovoljivosti
skupa klauza logike prvog reda, a moze se pojednostaviti tako da je primenjljiv
za ispitivanje (ne)zadovoljivosti skupa klauza iskazne logike. Metod rezolucije
za iskaznu logiku primenjuje se na iskazne formule koje su u konjunktivnoj
normalnoj formi, a metod za logiku prvog reda primenjuje se na formule koje
su u klauzalnoj formi.
Formula se reprezentuje kao skup klauza od kojih je svaka skup literala.
Na osnovu asocijativnosti i komutativnosti konjunkcije i disjunkcije, kao i na
osnovu logickih ekvivalencija A A A i A A A, formula koja je u konjunktivnoj normalnoj moze da se zameni (logicki ekvivalentnom) formulom
koja je skup (razlicitih) klauza od kojih je svaka skup (razlicitih) literala. Sve
klauze koje sadrze logicke 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 sadrzi literal > je
u svakoj valuaciji tacna, pa moze biti eliminisana (jer ne utice na zadovoljivost
polaznog skupa klauza). Ako klauza C sadrzi literal , onda taj literal moze
biti obrisan, dajuci novu klauzu C 0 (jer je u svakoj valuaciji klauza C tacna ako
i samo ako je tacna klauza C 0 ).
Klauza je zadovoljiva ako postoji interpretacija u kojoj je bar jedan literal iz
te klauze tacan. Prazna klauza, u oznaci 2, ne sadrzi nijedan literal i nije zadovoljiva. Formula koja je skup klauza je zadovoljiva ako postoji interpretacija u
kojoj su sve klauze te formule tacne, a inace je nezadovoljiva.
U slucaju iskazne logike, ako je literal l jednak iskaznom slovu p, onda
sa l oznacavamo literal p; ako je literal l jednak negaciji iskaznog slova p
(tj. literalu p), onda sa l oznacavamo literal p. Za literale l i l kazemo da su

medusobno
komplementni. U slucaju logike prvog reda, ako je literal l jednak
p(t1 , t2 , . . . , tn ), onda sa l oznacavamo literal p(t1 , t2 , . . . , tn ); ako je literal l
jednak p(t1 , t2 , . . . , tn ), onda sa l oznacavamo literal p(t1 , t2 , . . . , tn ). Za lit
erale l i l kazemo da su (medusobno)
komplementni.
Metod rezolucije za iskaznu logiku
U metodu rezolucije za iskaznu logiku primenjuje se pravilo rezolucije sledec eg oblika:
C 0 l C 00 l
C 0 C 00
Klauzu C 0 C 00 zovemo rezolventom klauza C 0 l i C 00 l, a klauze C 0 l i
C 00 l roditeljima rezolvente. Kazemo da klauze C 0 l i C 00 l rezolviramo pravilom
rezolucije.
Metod rezolucije je postupak za ispitivanje zadovoljivosti skupa klauza koji
se sastoji od uzastopnog primenjivanja pravila rezolucije. Pravilom rezolucije se roditelji rezolvente ne zamenjuju rezolventom, vec se rezolventa dodaje u
skup tekuci skup klauza. Neka je S pocetni skup, neka je S0 = S i neka je Si+1
rezultat primene pravila rezolucije na skup Si . Postupak se zaustavlja na jedan
od sledeca dva nacina:

58

3 Logika prvog reda


ako u nekom koraku skup Si sadrzi praznu klauzu (2), onda zaustavi
primenu procedure i vrati odgovor da je skup klauza S nezadovoljiv;
ako ne postoji mogucnost da se primeni pravilo rezolucije tako da se
skupovi Si i Si+1 razlikuju, onda zaustavi primenu procedure i vrati
odgovor da je skup klauza S zadovoljiv.

Niz klauza (polaznih i izvedenih) oznacavacemo obicno sa Ci (i = 1, 2, . . .).


Iza izvedene klauze zapisivacemo oznake klauza iz kojih je ona izvedena, kao
i redne brojeve literala nad kojim je primenjeno pravilo rezolucije. Literale u
klauzama razdvajacemo obicno simbolom , (umesto simbolom ).
Primer 3.19 Metodom rezolucije se iz skupa {{p, q, r}, {p, q}, {p}, {r}} moze
izvesti prazna klauza:
C1 : p, q, r
C2 : p, q
C3 : p
C4 : r
C5 : p, r
(C1 , 2; C2 , 2)
C6 : p
(C4 , 1; C5 , 2)
C7 : 2
(C3 , 1; C6 , 1)
Skup klauza {{p, q, r}, {p, q}, {p}, {r}} je, dakle, nezadovoljiv.
Primer 3.20 Metodom rezolucije se iz skupa {{p, q, r}, {p, q}, {p}} ne moze izvesti
prazna klauza. Ovaj skup klauza je, dakle, zadovoljiv.
Teorema 3.17 (Teorema o metodu rezolucije) Metod rezolucije se zaustavlja za svaku
iskaznu formulu i u zavrsnom skupu klauza postoji prazna klauza ako i samo ako je polazna formula nezadovoljiva.
Metod rezolucije moze na razne nacine biti modifikovan tako da bude efikasniji.
U svom osnovnom obliku, metod rezolucije proverava da li je dati skup

klauza (ne)zadovoljiv. Medutim,


metod rezolucije moze se koristiti i za ispitivanje valjanosti. Naime, ako je potrebno ispitati da li je formula A valjana,
dovoljno je metodom rezolucije utvrditi da li je formula A nezadovoljiva (pri
c emu je potrebno najpre formulu A transformisati u konjuktivnu normalnu
formu). Ovaj vid dokazivanja da je formula A valjana zovemo dokazivanje pobijanjem. Za metod rezolucije primenjen na ovaj nacin, saglasnost govori da nije
moguce rezolucijom pogresno utvrditi (pobijanjem) da je neka formula valjana, a potpunost govori da je za svaku valjanu formulu metodom rezolucije
moguce dokazati (pobijanjem) da je valjana.
Metod rezolucije za logiku prvog reda
U logici prvog reda, pravilo rezolucije je opstije nego u iskaznom slucaju, i
umesto da zahteva da u dve klauze postoje komplementni literali, zahteva da
u dve klauze postoje literali A0 i A00 takvi da su atomicke formule A0 i A00
unifikabilne. Pravilo rezolucije za logiku prvog reda (u njegovom osnovnom
obliku, tzv. binarna rezolucija) moze se prikazati na sledeci nacin:
0 A0 00 A00
(0 00 )

3.2 Semantika logike prvog reda

59

gde su 0 i 00 klauze, a je najopstiji unifikator za A0 i A00 .


Obe klauze na koje se primenjuje pravilo rezolucije su (implicitno) univerzalno kvantifikovane. Zbog toga se svaka od njihovih varijabli moze pre
imenovati (jer su formule xA(x) i x0 A(x0 ) logicki ekvivalentne). Stavi
se,
to je neophodno uraditi za sve deljene varijable, jer bi, inace, neke primene
pravila rezolucije bile (pogresno) onemogucene (jer odgovarajuci literali ne
bi bili unifikabilni). Preimenovanje varijabli moze se primeniti pre primene
pojedinacnog pravila rezolucije ili unapred, pre primene samog metoda rezolucije. Ako se preimenovanje varijabli primenjuje unapred, pre primene
metoda rezolucije, onda ono treba da obezbedi da nikoje dve klauze nemaju zajednicku promenljivu. Dodatno, u svakoj novoizvedenoj klauzi treba preimenovati promenljive tako da se novi simboli promenljivih ne pojavljuju ni u jednoj drugoj klauzi.
Primer 3.21 Nad klauzama
p(x, y) p(z, y) p(x, z)
i
p(b, a)
se moze primeniti pravilo rezolucije, jer su literali p(x, z) i p(b, a) unifikabilni (uz
najopstiji unifikator = [x 7 b, z 7 a]). Rezolventa ove dve klauze je klauza
p(b, y) p(a, y).
Ako se pravilo rezolucije primenjuje dalje, onda u dobijenoj klauzi sve promenljive
treba da budu preimenovane (treba da dobiju imena koja do tada nisu korisc ena):
p(b, y 0 ) p(a, y 0 ).
Definicija 3.27 Forma Kovalskog klauze
A1 A2 . . . Am B1 B2 . . . Bn
je formula
A1 A2 . . . Am B1 B2 . . . Bn .
Specijalno, forma Kovalskog klauze
B1 B2 . . . Bn
je formula
B1 B2 . . . Bn ,
a klauze
A1 A2 . . . Am
formula
A1 A2 . . . Am .
Ako je u A1 A2 . . . Am B1 B2 . . . Bn i m = 0 i n = 0, onda je to
prazna klauza, koju oznacavamo ili 2.
Precizno govoreci, forme Kovalskog B1 B2 . . .Bn , A1 A2 . . .Am
i nisu dobro zasnovane formule, ali c ine zapis klauza koji je intuitivan i
blizak zapisu u PROLOG-u.
Pravilo rezolucije moze da se reprezentuje i koristeci formu Kovalskog:
0 B 0 A0 00 A00 B 00
(0 00 B 0 B 00 )

60

3 Logika prvog reda

gde je najopstiji unifikator za formule A0 , A100 .


Zaista, primenom supstitucije na prvu formulu (0 B 0 A0 ) dobija se
0 B 0 A ,
gde je A = A0 = A00 . Primenom supstitucije na drugu formulu (00 A00
B 00 ) dobija se
A 00 B 00 .
Iz 0 B 0 A i A 00 B 00 dobija se
0 B 0 00 B 00 ,
s to je logicki ekvivalentnto sa
(0 00 B 0 B 00 ) .
Primer 3.22 Razmotrimo sledece dve klauze Kovalskog: p(x, y) p(z, y) p(x, z) i
p(b, u) . Literali p(x, z) i p(b, u) mogu biti unifikovani supstitucijom [x 7 b, z 7
a, u 7 a]. Tada je forma Kovalskog rezolvente date dve klauze: p(b, y) p(a, y) .
Metod rezolucije sastoji se od uzastopnog primenjivanja pravila rezolucije.
Neka je S pocetni skup, neka je S0 = S i neka je Si+1 rezultat primene pravila
rezolucije na skup Si .2 Postupak se zaustavlja na jedan od sledeca dva nacina:
ako u nekom koraku skup Si sadrzi praznu klauzu (2), onda zaustavi
primenu procedure i vrati odgovor da je skup klauza S nezadovoljiv;
ako ne postoji mogucnost da se primeni pravilo rezolucije tako da se
skupovi Si i Si+1 razlikuju, onda zaustavi primenu procedure i vrati
odgovor da je skup klauza S zadovoljiv.
Da bi se dokazalo da je neka formula A valjana, njena negacija se transformise u klauzalnu formu i onda se na dobijeni skup klauza primenjuje metod
rezolucije. Ako se izvede prazna klauza, onda to znaci da je formula A
nezadovoljiva, pa je A valjana; ako u nekom koraku ne moze da se izvede
nijedna nova klauza, onda to znaci je formula A zadovoljiva, pa A nije valjana. Moguc je i ishod da nove klauze mogu da se izvode beskonacno, a da se
pri tome ne izvede prazna klauza.
Da bi se dokazalo da je neka formula A logicka posledica formula B1 , B2 ,
. . ., Bn potrebno je dokazati da je formula B1 B2 . . . Bn A valjana,
tj. dokazati da formula (B1 B2 . . . Bn A) nije zadovoljiva. Potrebno
je, dakle, dokazati da formula B1 B2 . . . Bn A nije zadovoljiva.
Primer 3.23 Dokazati da je formula p(a) (x)p(x) valjana. Negacija date formule
je logicki ekvivavalentna formuli p(a) (x)p(x). Metod rezolucije primenjujemo
na skup klauza {p(a), p(x)}. Pravilo rezolucije moguce je primeniti samo na jedan
nacin literali p(a) i p(x) se unifikuju supstitucijom [x 7 a] i njime se dobija
prazna klauza. Odatle sledi da je formula p(a) (x)p(x) valjana.
2 Primetimo da u op
stem metodu nije specifikovano kako se, od svih mogucih, bira par klauza
nad kojim se primenjuje pravilo rezolucije.

3.2 Semantika logike prvog reda

61

Primer 3.24 Formula (x)(y)p(x, y) (y)(x)p(x, y) nije valjana. Negacija


date formule je logicki ekvivalentna sa formulom (x)(y)(p(x, y)(y)(x) p(x, y))
i sa formulom (x)(y)(u)(v)(p(x, y) p(v, u)). Skolemizacijom se dobija skup
od dve klauze: {p(x, f (x)), p(g(x, u), u)}. Pravilo rezolucije nije moguce primeniti
na ove dve klauze, odakle sledi da je formula (x)(y) (p(x, y) (y)(x)p(x, y))
zadovoljiva, tj. polazna formula nije valjana.
Niz klauza (polaznih i izvedenih) oznacavacemo obicno sa Ci (i = 1, 2, . . .).
Izvedene klauze oznacavacemo ponekad i sa Ri (i = 1, 2, . . .). Iza izvedene
klauze zapisivacemo oznake klauza iz kojih je ona izvedena, redne brojeve literala u tim klauzama, iskorisc eni najopstiji unifikator, kao i supstituciju kojom
se preimenuju promenljive. Literale u klauzama razdvajacemo obicno simbolom , (umesto simbolom ).
Primer 3.25 Dokazimo da je formula
(x)(y)q(x, y)
logicka posledica skupa formula
{(x)(y)p(x, y), (x)(y)(p(x, y) q(x, y))} .
Dovoljno je dokazati da je formula
A = ((x)(y)p(x, y) (x)(y)(p(x, y) q(x, y))) (x)(y)q(x, y)
valjana. Preneks normalna forma negacije ove formule je
(w)(x)(y)(u)(v)(z)(p(x, y) (p(u, v) q(u, v)) q(w, z)) .
Nakon skolemizacije, ova formula dobija oblik:
(x)(u)(v)(z)(p(x, g(x)) (p(u, v) q(u, v)) q(c, z)) ,
pri c emu je c nova Skolemova konstanta, a g nova Skolemova funkcija. Konjunktivna
normalna forma formule
p(x, g(x)) (p(u, v) q(u, v)) q(c, z)
je
p(x, g(x)) (p(u, v) q(u, v)) q(c, z) .
Elementi pocetnog skupa klauza su:
H1 : p(x, g(x))
(prvi deo hipoteze)
H2 : p(u, v), q(u, v) (drugi deo hipoteze)
C1 : q(c, z)
(zakljucak)
Prazna klauza se izvodi na sledeci nacin.
R1 : q(x0 , g(x0 )) (H1 , 1; H2 , 1), [v 7 g(x), u 7 x];
preimenovanje: [x 7 x0 ]
R2 : 2
(C1 , 1; R1 , 1), [x0 7 c, z 7 g(c)]

62

3 Logika prvog reda

Primer 3.26 Dokazati da je formula A = xyz(x y y z x z) logicka


posledica formule B = xy(x y w(w x w y)) (simboli i su
predikatski simboli arnosti 2 zapisani infiksno).
Transformisanjem formule (B A) B A dobija se sledeci skup klauza:
H1 : (x1 y1 ), (w1 x1 ), w1 y1 (deo formule B)
H2 : x2 y2 , f (x2 , y2 ) x2
(dva dela formule B,
H3 : x3 y3 , (f (x3 , y3 ) y3 )
f je Skolemova funkcija za w)
C1 : a b
(tri dela negacije formule A,
C2 : b c
a, b, c su Skolemove konstante za
C3 : (a c)
promenljive x, y, z u formuli A)
Izvedene klauze oznacavacemo sa Ri (i = 1, 2, . . .).
R1 : (w2 a), w2 b
(H1 , 1; C1 , 1), [x1 7 a, y1 7 b];
preimenovanje: [w1 7 w2 ]
R2 : (w3 b), w3 c
(H1 , 1; C2 , 1), [x1 7 b, y1 7 c];
preimenovanje: [w1 7 w3 ]
R3 : a y4 , f (a, y4 ) b
(H2 , 2; R1 , 1), [x2 7 a, w2 7 f (a, y2 )];
preimenovanje: [y2 7 y4 ]
R4 : x4 c, (f (x4 , c) b) (H3 , 2; R2 , 2), [y3 7 c, w3 7 f (x3 , c)];
preimenovanje: [x3 7 x4 ]
R5 : a c, a c
(R3 , 2; R4 , 2), [x4 7 a, y4 7 c];
R6 : 2
(R5 , 1, 2; C3 , 1)
Hornove klauze su klauze u kojima postoji najvise jedan literal koji nije pod

negacijom. U PROLOG-u se koriste upravo Hornove klauze. Cetiri


tipa Hornovih
klauza prikazana su u sledecoj tabeli.
Tip
implikaciona klauza
ciljna klauza
c injenica
prazna klauza

standardna forma
A1 . . . An A
A1 . . . An
A
2

forma Kovalskog
A1 . . . An A
A1 . . . An
A

PROLOG

A : A1 , . . . , An .
? A 1 , . . . , An .
A.
false

Moze se dokazati da svaki nezadovoljiv skup Hornovih klauza sadrzi bar


jednu c injenicu i bar jednu ciljnu klauzu. Programski jezik PROLOG zasnovan
je na metodu rezolucije i na korisc enju Hornovih klauza. Postoji polinomijalni
algoritam za ispitivanje zadovoljivosti skupa iskaznih Hornovih klauza i on se
koristi u PROLOG-u.
Primer 3.27 Pretpostavimo da je u PROLOG-u zadata c injenica (assertion):
man(sokrat).
i pravilo (rule):
mortal(X) :- man(X).
(PROLOG konvencija je da se konstante zapisuju malim pocetnim slovom, a promenljive
velikim pocetnim slovom.) Ako se zada upit:
? - mortal(sokrat).

onda se metodom rezolucije pokusava izvodenje


prazne klauze iz skupa klauza:
{man(sokrat), man(X) mortal(X), mortal(sokrat)} .
U ovom slucaju, prazna klauza se izvodi jednostavno (koristeci unifikaciju {X 7
sokrat}) i PROLOG vraca rezultat:

3.2 Semantika logike prvog reda

63

Yes
Primetimo da, na primer, upit
? - mortal(platon).
ne moze da uspe (sem ako nije zadata i c injenica man(platon)).
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 moze da
izvede nezadovoljiv skup klauza. Ova dva svojstva dokazacemo kao teoremu
o potpunosti i teoremu o saglasnosti za rezoluciju (teoreme ?? i 3.18). Metod
rezolucije, dakle, ima sledece karakteristike:
metod rezolucije je saglasan: ako je primenom metoda dobijena prazna
klauza, onda je i polazni skup klauza nezadovoljiv (ili, drugim recima, iz
zadovoljivog skupa klauza moze se dobiti samo zadovoljiv skup klauza);
metod rezolucije nije potpun, ali je potpun za pobijanje: iz svakog nezadovoljivog skupa klauza moguce je izvesti praznu klauzu;
logika prvog reda nije odluciva, pa najvise s to moze metod rezolucije da
bude je procedura poluodlucivanja (za problem ispitivanja valjanosti).
Teorema 3.18 (Potpunost (za pobijanje) metoda rezolucije) Ako je nezadovoljiv skup klauza, onda se iz njega metodom rezolucije moze izvesti prazna klauza.
Primer 3.28 Formula xy (p(x, y) p(y, x)) je logicka posledica formula x p(x, x)
i uvw (p(u, v) p(w, v) p(u, w)), pa je formula
A = (x p(x, x)) (uvw (p(u, v) p(w, v) p(u, w)))
(xy (p(x, y) p(y, x)))
valjana.
C1
C2
C3
C4
C5

:
:
:
:
:

C6 :
C7 :

p(x, x)
p(u, v), p(w, v), p(u, w)
p(a, b)
p(b, a)
p(u0 , b), p(u0 , a)
p(b, b)
2

(C2 , 2; C3 , 1) [w 7 a, v 7 b];
preimenovanje: [u 7 u0 ]
(C4 , 1; C5 , 2) [u0 7 b]
(C1 , 1; C6 , 1) [x 7 b]

Primetimo da u opisu metoda rezolucije nije specifikovan nacin na koji se


teorema o
biraju klauze nad kojim se primenjuje pravilo rezolucije. Takode,
potpunosti (teorema 3.18) tvrdi da se iz svakog nezadovoljivog skupa klauza
moze 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 na koje se primenjuje pravilo rezolucije
moguce je da se i za nezadovoljiv skup klauza metod rezolucije ne zaustavlja.
Nacin na koji se biraju klauze na koje se primenjuje pravilo rezolucije c ini strategiju ili strategiju za upravljanje konkretne verzije metoda rezolucije. Strategija

je od sustinske vaznosti za obezbedivanje


nuznog izvodenja
prazne klauze iz
nezadovoljivog skupa, ali i za efikasnost metoda.

64

3 Logika prvog reda

Jedna od mogucnosti za obezbedivanje


potpunosti metoda rezolucije u stroz ijem smislu (da postoji strategija za upravljanje metoda rezolucije takva da se
iz svakog nezadovoljivog skupa klauza nuzno izvodi prazna klauza u konacno

mnogo koraka) je sistematsko izvodenje


svih rezolventi iz skupa klauza koji se
s iri tokom primene metoda. Sistematski metod rezolucije moze se definisati na
sledeci nacin: metod se primenjuje u stupnjevima; prvi stupanj c ini kreiranje
pocetnog skupa klauza; neka pre i-tog stupnja tekuci skup klauza c ine klauze

C1 , C2 , . . ., Cn , i-ti stupanj sastoji se od izvodenja


(i dodavanja tekucem skupu
klauza) svih mogucih rezolventi iz po svake dve klauze iz skupa C1 , C2 , . . ., Cn
(broj tih klauza je konacan); metod se zaustavlja ako se u nekom koraku izvede
prazna klauza ili ako se u nekom stupnju ne moze izvesti nijedna nova klauza.
Teorema 3.19 (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 3.18) iz njega metodom rezolucije
moze izvesti prazna klauza, tj. postoji niz rezolventi R1 , R2 , . . ., Rn (koje
se izvode iz pocetnih i izvedenih klauza) od kojih je poslednja u nizu
prazna klauza. Ako se na skup klauza primeni sistematski metod rezolucije, u nekom stupnju bice (ako vec pre toga nije izvedena prazna
klauza) izvedene sve klauze iz skupa R1 , R2 , . . ., Rn , pa i prazna klauza.
2
Ocigledno je da je sistematski metod rezolucije izuzetno neefikasan. Po

stoji vise strategija koje obezbeduju


nuzno izvodenje
prazne klauze iz nezadovoljivog skupa klauza (tj. sprecavaju beskonacne petlje), ali na efikasniji nacin.
Te strategije su od sustinske vaznosti i za broj klauza koje se izvode i, shodno

tome, za efikasnost metoda. Smanjivanje izvodenja


nepotrebnih klauza jedan
je od najvaznijih problema metoda rezolucije. U daljem tekstu bice ukratko
opisane neke od strategija koje se koriste u razlicitim varijantama metoda rezolucije.
Razmotrimo sledeci primer: potrebno je dokazati da je formula xy(p(x, y)
p(y, x)) logicka posledica formula xp(x, x) i uvw(p(u, v) p(w, v)
p(u, w)). Dovoljno je dokazati da formula x p(x, x) (uvw (p(u, v)
p(w, v) p(u, w))) (xy (p(x, y) p(y, x))) nije zadovoljiva. Negacija
navedene formule, transformisanjem u klauzalnu formu, dobija oblik: p(x, x)
(p(u, v) p(w, v) p(u, w)) p(a, b) p(b, a) (gde su a i b nove, Skolemove
konstante). Primenimo metod rezolucije na ovako dobijen skup klauza:
C1 : p(x1 , x1 )
(prva hipoteza)
C2 : p(u1 , v1 ), p(w1 , v1 ), p(u1 , w1 ) (druga hipoteza)
C3 : p(a, b)
(prvi deo zaljucka)
C4 : p(b, a)
(drugi deo zakljucka)
C5 : p(b, v2 ), p(a, v2 )
(C4 , 1; C2 , 3) [u1 7 b, w1 7 a];
preimenovanje: [v1 7 v2 ]
C6 : p(b, b)
(C5 , 2; C3 , 1) [v2 7 b]
C7 : 2
(C6 , 1; C1 , 1) [x1 7 b]
Primetimo da se u navedenom primeru u svakoj primeni pravila rezolucije
koristi poslednja klauza u nizu (osim u prvom koraku, to je uvek rezolventa iz

3.2 Semantika logike prvog reda

65

prethodno primenjenog pravila rezolucije) i rezolvira sa nekom od originalnih


klauza. Ovaj vid pobijanja je veoma prirodan. On, u izvesnom smislu, oponasa

rezonovanje matematicara koji krece od tvrdenja


koje treba dokazati i u dokazu
koristi aksiome i date hipoteze. Ova 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 pocetnih klauza.
Linearna ulazna rezolucija je jedna od varijanti opsteg metoda rezolucije. S

obzirom na to da ona iskljucuje mnoge puteve izvodenja


novih klauza, ona je

obicno znatno efikasnija nego opsti metod rezolucije. Medutim,


iz istog razloga, linearna ulazna rezolucija nema svojstvo potpunosti (kao s to ga ima opsti
metod rezolucije). Nepotpunost linearne ulazne rezolucije ilustruje sledeci
primer:
C1 : p(x1 ), q(x1 )
C2 : p(x2 ), q(x2 )
C3 : q(x3 ), p(x3 )
C4 : p(x4 ), q(x4 )
C5 : p(x5 ), p(x5 ) (C4 , 2; C2 , 2) [x4 7 x2 ];
preimenovanje: [x2 7 x5 ]
C6 : q(x6 )
(C5 , 1, 2; C1 , 1) [x5 7 x1 ];
preimenovanje: [x1 7 x6 ]
C7 : p(x7 )
(C6 , 1; C3 , 1), [x6 7 x3 ];
preimenovanje: [x3 7 x7 ]
Klauza C7 moze se rezolvirati samo sa klauzom C2 ili sa klauzom C4 . Rezolucija sa C2 daje q(x), s to vodi u beskonacnu petlju. Rezolucija sa C4 daje
q(x), s to, dalje, daje simetricnu situaciju. Slicno vazi i za sve ostale mogucnosti, te praznu klauzu nije moguce izvesti ukoliko se koristi linearna ulazna
strategija.
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 moze dovesti do prazne klauze za svaki kontradiktoran skup Hornovih klauza (u navedenom primeru, prva klauza nije Hornova). Linearna ulazna rezolucija nad
Hornovim klauzama se koristi u PROLOG-u.
Pored opisane ulazne strategije i linearne strategije, neke od najznacajnijih
strategija za upravljanje metodom rezolucije su prednost jedinicnim klauzama,
skup potpore, itd. U cilju efikasnijeg primenjivanja metodu, pored pravila rezolucije, koriste se i dodatna pravila, kao na primer paramodulacija. Sa ciljem
da zameni veliki broj (cesto komplikovanih i neprirodnih koraka) u korisc enju
aksioma jednakosti, uvodi se pravilo paramodulacije. Ono povecava efikasnost
metoda rezolucije, ali nije nuzno njegov deo (jer pravilo paramodulacije moze
biti izvedeno pravilom rezolucije). Pravilo paramodulacije moze biti reprezentovano na sledeci nacin:
A t = s B ( ili s = t B)
(A[t0 7 s] B)
gde je najopstiji unifikator za termove t i t0 i gde je A formula koja sadrzi term
t0 . Na primer, iz klauza h(a) = b i c = a moze da se izvede klauza h(c) = b

66

3 Logika prvog reda

primenom pravila paramodulacije (u jednom koraku) na sledeci nacin:


h(a) = b c = a
((h(a) = b)[a 7 c]) [ ]

Za detaljniji opis ovih i srodnih tehnika videti na primer, [?, ?].

Zadaci
Zadatak 49 Dati su skup P od n (n 1) iskaznih slova, skup C svih klauza nad P i
dva podskupa, S1 i S2 , skupa C.
(a) Koliko elemenata ima skup C?
(b) Da li je skup C zadovoljiv?
(c) Ako su skupovi S1 i S2 zadovoljivi, da li je i skup S1 S2 zadovoljiv?
(d) Ako su skupovi S1 i S2 zadovoljivi, da li je i skup S1 S2 zadovoljiv?
(e) Ako je skup S1 zadovoljiv, da li skup C \ S1 moze da bude zadovoljiv?
(f) Ako je skup S1 zadovoljiv, da li skup C \ S1 mora da bude zadovoljiv?
Zadatak 50 Dati su skup P od n (n 1) iskaznih slova, skup C svih klauza nad P i
dva podskupa, S1 i S2 , skupa C.
(a) Da li je skup C kontradiktoran?
(b) Ako su skupovi S1 i S2 kontradiktorni, da li skup S1 S2 moze da bude kontradiktoran?
(c) Ako su skupovi S1 i S2 kontradiktorni, da li skup S1 S2 mora da bude kontradiktoran?
(d) Ako su skupovi S1 i S2 kontradiktorni, da li skup S1 S2 moze da bude kontradiktoran?
(e) Ako su skupovi S1 i S2 kontradiktorni, da li skup S1 S2 mora da bude kontradiktoran?
Zadatak 51 Dokazati metodom rezolucije za iskaznu logiku da su naredne formule
tautologije:
(a) q (p q)
(b) ((p q) (q r)) (p r)
(c) ((p q) (p r)) (p (q r))
(d) (((p r) (q r)) (p q)) r
(e) (p q) (p q)
(f) (p q) (p q)
(g) (p q) (p q)
(h) (p (q r)) ((p q) (p r))
Zadatak 52 Koristeci metod rezolucije za logiku prvog reda dokazati da vazi:
(x)(p(x) q(x)), p(c) |= q(c) .
Zadatak 53 Metodom rezolucije za logiku prvog reda dokazati da je naredna formula
valjana:
(x)(y)p(x, y) (y)(x)p(x, y) .

3.3 Prirodna dedukcija

67

Zadatak 54 Metodom rezolucije za logiku prvog reda dokazati da je naredna formula


valjana:
(a) (y)((x)p(x) p(y))
(b) (x)p(x) (x)p(x)
(c) (y)p(y) (y)((x)p(x) p(y))
(d) (x)p(x) (y)p(y)
(e) (x)(p(x) q(x)) (x)p(x) (x)q(x)
(f) (x)p(x) (x)q(x) (x)(p(x) q(x))
(g) (x)(p(x) q(x)) (x)p(x) (x)q(x)
(h) (x)(p(x) q(x)) (x)p(x) (x)q(x)
Zadatak 55 Metodom rezolucije za logiku prvog reda dokazati da je formula (H
K) L valjana, gde je
H = (x)(y)(p(x, y) p(y, x))
K = (x)(y)(z)((p(x, y) p(y, z)) p(x, z))
L = (x)(y)(p(x, y) p(x, x)).
Zadatak 56 Metodom rezolucije za logiku prvog reda dokazati da je formula (x)s(x)
logicka posledica skupa formula {x(p(x) q(x)), x(q(x) s(x)), x(r(x)
s(x)), x(p(x) r(x))}.
Zadatak 57 Metodom rezolucije za logiku prvog reda dokazati da je formula xy (x =
y y = x) logicka posledica formula x (x = x) i uvw (u = v w = v u =
w).

Zadatak 58
Vazi sledece:
Janko ima psa.
Svaki vlasnik psa voli z ivotinje.
Nijedna osoba koja voli z ivotinje ne moze da udari z ivotinju.
Janko ili Marko su udarili macku c ije je ime Tuna.
Svaka macka je z ivotinja.
Metodom rezolucije za logiku prvog reda dokazati da je Marko udario Tunu.
Zadatak 59 Za narednu formulu metodom rezolucije za logiku prvog reda dokazati
da je valjana:
(x)(A(x) C) ((x)A(x) C)
pri c emu je C recenica. (Ovaj zadatak ilustruje kako metod rezolucije moze biti oslabljen
tako da se primenjuje i na formule koje nisu u klauzalnoj formi.)
Zadatak 60 Prevesti na jezik logike prvog reda i dokazati metodom rezolucije za logiku

prvog reda sledece tvrdenje:


Ako su svi politicari lukavi i ako su samo pokvareni ljudi
politicari, onda, ako postoji bar jedan politicar, onda je neki pokvaren c ovek lukav.

3.3

Prirodna dedukcija

Pojam valjanosti je semanticke prirode, a koncept dokazivanja i sistema za dedukciju vodi do pojma teoreme koji je sintaksno-deduktivne prirode. Kao s to je
teorija modela vezana za semantiku, tako su deduktivni sistemi i teorija dokaza
vezani za sintaksu. Pojam teoreme je deduktivni pandan pojma valjane formule,
ova dva pojma postoji veza i deduktivni
koji je semanticke prirode. Izmedu

68

3 Logika prvog reda

sistemi obicno imaju svojstvo potpunosti i saglasnosti: ako je neka formula


valjana, onda ona moze biti dokazana u okviru deduktivnog sistema, a ako za
neku formulu postoji dokaz u okviru deduktivnog sistema, onda je ona sigurno valjana.
Sistemi za dedukciju su c isto sintaksne prirode primenjuju se kroz kombinovanje simbola, ne ulazeci u semantiku formula. Sisteme za dedukciju za
iskaznu logiku zovemo i racun (iskazni racu u slucaju iskazne logike i predikatski
racu u slucaju logike prvog reda). Postoji vise razlicitih deduktivnih sistema, a
u nastavku c e biti opisan samo jedan prirodna dedukcija.
Sistem prirodne dedukcije (racun prirodne dedukcije) uveo je, 1935. godine,
Gerhard Gencen sa namerom da prirodnije opise uobicajeno zakljucivanje matematicara [?].
U prirodnoj dedukciji koriste se logicki veznici3 , , , , kao i logicka
konstanta . Formula A B je kraci zapis za (A B) (B A), a formula
> kraci zapis za A A. Skup formula definise se na uobicajeni nacin.

Pravila izvodenja
sistema prirodne dedukcije data su u tabeli 3.1. Primetimo da za svaki logicki veznik i svaki kvantifikator postoje pravila koja ga
uvode (pravila I-tipa) i pravila koja ga eliminisu (pravila E-tipa). Pravilo ef q
(Ex falso quodlibet) je jedino pravilo koje ne uvodi niti eliminise neki logicki
veznik. Skup pravila sistema prirodne dedukcije za iskaznu logiku c ine sva
pravila iz tabele 3.1 izuzev onih koja ukljucuju kvantifikatore.
Postoji sistem prirodne dedukcije za klasicnu logiku (koji zovemo sistem
NK) i sistem prirodne dedukcije za intuicionisticku logiku (koji zovemo sistem
NJ). U sistemu prirodne dedukcije za klasicnu logiku postoji jedna aksiomska
shema: A A (tertium non datur). Sistem za intuicionisticku logiku nema
aksioma.

U pravilima izvodenja
prikazanim u tabeli 3.1 simbol t oznacava proizvoljan term. Simbol y oznacava tzv. eigenvariable (pravu promenljivu) simbol
promenljive za koju vazi tzv. eigenvariable uslov. Ovaj uslov za pravilo I je
da vazi da je x = y ili da promenljiva y nije slobodna u A, kao i da vazi da

y nije slobodna ni u jednoj neoslobodenoj


pretpostavci u izvodenju
formule
A[x 7 y]. Eigenvariable uslov za pravilo E je da vazi da je x = y ili da
promenljiva y nije slobodna u A, kao i da vazi da y nije slobodna u B niti u bilo

kojoj neoslobodenoj
pretpostavci u izvodenju
formule B osim, eventualno, u
formuli A[x 7 y].

Tokom izvodenja
dokaza u sistemu prirodne dedukcije mogu se koristiti

(nedokazane) pretpostavke, ali one moraju biti eliminisane (,,oslobodene)


pre

kraja izvodenja.
U zapisu pravila, [F ] oznacava da se nekoliko (mozda i nula)
brise (kao nedokazane, neraspolozive
pojavljivanja pretpostavke F oslobada,
pretpostavke) neposredno nakon primene pravila. Pri tome, moze ostati i

nekoliko neoslobodenih
pojavljivanja pretpostavke F . Pretpostavkama su pridruzene oznake (obicno 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 c ijem je svakom
c voru pridruzena formula, a svakom listu ili pretpostavka ili aksioma. Formula A je teorema prirodne dedukcije ako postoji dokaz u c ijem je korenu A i
3 Iz sistema prirodne dedukcije mogu
ce je eliminisati veznik smatrajuci formulu A
skracenim zapisom za A .

3.3 Prirodna dedukcija

69

[A]u
..
..
I, u
A

A B
I
AB

A
I
AB

B
I
AB

[A]u
..
..
B
I, u
AB

AB
E
A

AB
E
B

[A]u
..
..
AB
C
C

[B]v
..
..
C E, u, v

A[x 7 y]
I
(x)A
uz dodatni uslov

A
E

AB
E
B
(x)A
E
A[x 7 t]

A[x 7 t]
I
(x)A

(x)A

[A[x 7 y]]u
..
..
B
E, u

B
uz dodatni uslov
ef q
D

Table 3.1: Pravila izvodenja


sistema prirodne dedukcije

koji nema neoslobodenih


pretpostavki i tada pisemo ` A i kazemo da je formula A dokaziva u sistemu prirodne dedukcije. Ako postoji dokaz, u c ijem je

korenu formula A i koji ima neoslobodene


pretpostavke koje pripadaju nekom
nizu , onda kazemo da je formula A deduktivna posledica niza i tada pisemo
` A. Elemente niza tada zovemo i premisama ili hipotezama dokaza. Ako je
niz jednak B1 , B2 , . . . , Bn , onda pisemo B1 , B2 , . . . , Bn ` A.
Dokaz u sistemu prirodne dedukcije se obicno prikazuje u vidu stabla c iji
su listovi na vrhu, a koren na dnu. To stablo se prikazuje pojednostavljeno,
stilizovano (videti sliku 3.3).
Naredni primeri ilustruju primenu prirodne dedukcije za dokazivanje u
iskaznoj logici.

Primer 3.29 Formula (A B) (B A) je teorema sistema prirodne dedukcije,

70

3 Logika prvog reda


..
.

..
.

..
..
A

..
..
B
C
D
..
..

D
..
.

Figure 3.3: Deo dokaza i njegov pojednostavljeni prikaz


tj. vazi ` (A B) (B A) :
[A]2
[B]3
I
I
[A B] B A
BA
E, 2, 3
BA
I, 1
(A B) (B A)
1

Primer 3.30 U sistemu prirodne dedukcije vazi: A B, B C ` A C:


[A]1

AB
E
B
BC
E
C
I, 1
AC

Primer 3.31 U sistemu prirodne dedukcije vazi ` A (A B) (A C):


[A]1
[A]1
I
I
AB
AC
I
(A B) (A C)
I, 1
A (A B) (A C)

U prethodnom dokazu, primenom pravila I nisu morala da budu oslobodena


sva
pojavljivanja pretpostavke A. Na primer:
[A]1
A
I
I
AB
AC
I
(A B) (A C)
I, 1
A (A B) (A C)

Ovaj dokaz je dokaz tvrdenja


A ` A (A B) (A C) (sto je slabije tvrdenje
od

tvrdenja
` A (A B) (A C)).
Naredni primeri ilustruju primenu prirodne dedukcije za dokazivanje u
logici prvog reda.
Primer 3.32 Formula (x)(y)p(x, y) (y)(x)p(x, y) je teorema sistema prirodne dedukcije (i za klasicnu i za intuicionisticku logiku). Neki matematicar bi ovu
formulu (neformalno) dokazao na sledeci nacin:

3.3 Prirodna dedukcija

71

1. Pretpostavimo da vazi (x)(y)p(x, y).


2. Pretpostavimo da vazi (y)p(x0 , y) za neko x0 .
3. Neka je y 0 proizvoljni objekat. Tada vazi p(x0 , y 0 ).
4. Iz p(x0 , y 0 ) sledi da vazi (x)p(x, y 0 ).
5. Objekat y 0 je proizvoljan, pa vazi (y)(x)p(x, y).
6. Iz (x)(y)p(x, y) i iz toga sto pretpostavka (y)p(x0 , y) ima za posledicu (y)(x)
p(x, y), sledi (y)(x)p(x, y).
7. Iz pretpostavke (x)(y)p(x, y) sledi (y)(x)p(x, y), pa vazi (x)(y) p(x, y)
(y)(x)p(x, y).
Ovaj dokaz moze se precizno opisati u vidu dokaza u sistemu prirodne dedukcije (i
za klasicnu i za intuicionisticku logiku):
1

[(y)p(x0 , y)]
E
p(x0 , y 0 )
I
(x)p(x, y 0 )
I
2
[(x)(y)p(x, y)] (y)(x)p(x, y)
E, 1
(y)(x)p(x, y)
I, 2
(x)(y)p(x, y) (y)(x)p(x, y)
Primer 3.33 Formula (x)p(x) (y)p(y) je teorema sistema prirodne dedukcije
(i za klasicnu i za intuicionisticku logiku):
[p(z)]1
I
(x)p(x)

[(x)p(x)]2

E
I, 1
p(z)
I
(y)p(y)
I, 2
(x)p(x) (y)p(y)

Primer 3.34 U sistemu prirodne dedukcije vazi xA, x(A B) ` xB:


xA
E
A

x(A B)
E
AB
E
B
I
xB

Naredna teorema povezuje semanticka i deduktivna svojstva klasicne logike


(ona vazi i za iskaznu i za predikatsku logiku).
Teorema 3.20 Formula je teorema sistema prirodne dedukcije za klasicnu logiku ako i
samo ako je valjana.

72

3 Logika prvog reda

Zadaci
Zadatak 61

Dokazati da u prirodnoj dedukciji vazi A B, A ` B.

Zadatak 62
Dokazati da je formula (A B) (B A) teorema sistema
prirodne dedukcije za klasicnu logiku.

Zadatak 63
Dokazati da je formula (A (B C)) ((A B) (A C)) teorema
sistema prirodne dedukcije za klasicnu logiku.

Zadatak 64
Dokazati da je formula (A B) (A B) teorema sistema
prirodne dedukcije za klasicnu logiku.

3.4

Sazetak

Glava 4

PROLOG
U logickom programiranju, logika se koristi kao deklaritivni jezik za opisivanje problema, a dokazivac teorema kao mehanizam za resavanje problema.
Resavanje problema je podeljeno izmedju programera koji opisuje problem i
dokazivaca teorema koji problem resava.
Jezik PROLOG je najznacajniji predstavnik jezika deskriptivnog i logickog
programiranja. Veoma je pogodan za mnoge primene tehnika vestacke 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 slicne operacije jednostavno implementiraju. Ime PROLOG-a dolazi
od engleskih reci PROgramming in LOGic. Mehanizam izvodjenja zakljucaka
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 saradnje istrazivaca Alain Colmerauer-a iz
Marseja i Roberta Kowalskog iz Edinburga. Oni su primetili da se klauzalna
forma moze koristiti za opisivanje formalnih gramatika i da se dokazivaci zasnovani na rezoluciji mogu koristiti za parsiranje. Efikasan PROLOG mehanizam omogucen je otkricem LUSH ili SLD rezolucije koju je opisao Kowalski
1973. godine.
Prakticna upotreba PROLOG-a kao programskog jezika omogucena je razvojem efikasnog kompilatora Davida Warrena, u Edinburgu 1977. godine. Ta
verzija jezika, Edinburski PROLOG, detaljno opisana 1980. u knjizi Clocksina i Mellish-a nametnula se vremenom kao standardna verzija jezika i najjace
uticala na ISO standard za PROLOG.

4.1

Interpretatori i kompilatori

PROLOG sistemi obicno sadrze interaktivni interpretator (sa debagerom). Pored

toga, neki sistemi omoguavaju i kompiliranje koda


koje daje izvrsne verzije
c esto je veoma efikasan
koje mogu samostalno da se izvrsavaju. Izvrsni kod

i uporediv sa izvrsnim kodom


dobijenim od programa na nekom proceduralnom jeziku.
Komunikacija sa PROLOG interpretatorom odvija se kroz komandni prozor. Prompt interpretatora obicno izgleda ovako:

74

4 PROLOG

?Vecina PROLOG sistema sadrzi uputstva o korisc enju jezika a i samog interpretatora. Ovo uputstvo se obicno moze dobiti sa
?- help(help).
Komanda halt prekida izvrsavanje interpretatora (ili kompiliranog programa) i vraca kontrolu operativnom sistemu.
Neki od najpopularnijih PROLOG interpretatora su Quintus, Sixtus, SWI
PROLOG itd.

4.2

Sintaksa i semantika u PROLOG-U

Jezik PROLOG-a c ine: mala i velika slova engleskog alfabeta, cifre i specijalni
simboli (_, +, *, (, ), [, ], . . ..
Skup termova definise se na sledeci nacin:
promenljive su termovi; promenljive se zapisuju pocetnim velikim slovom
ili simbolom _ (simbolom _ pocinju imena anonimnih promenljivih c 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 pocinje malim slovom (npr. sokrat).
slovna niska u jednostrukim znacima navoda (npr. sokrat).
niz specijalnih simbola (npr. :-).
Ako je f atom, a A1, . . ., An termovi, onda je f(A1,...,An) term viseg reda
(na primer, man(sokrat) ili ucitelj(sokrat,X)). Ovakve termove viseg reda
u PROLOG-u zovemo i predikati.
Semantika, interpretacija termova odredjena je tekucim stanjem baze znanja.
Domen interpretacije c ine sami PROLOG termovi. Baza znanja, koju PROLOG

odrzava, sastoji se od c injenica i pravila. Cinjenice


su predikati oblika:
p(x1,x2,...,xn)
Ukoliko baza znanja sadrzi c injenicu man(sokrat), onda se u pratecoj interpretaciji atomickoj formuli man(sokrat) pridruzuje vrednost 1, tj. ona je tacna.
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 the rule). Navedeno
pravilo interpretira se kao implicitno univerzalno kvantifikovana implikacija:
q(y1,y2,...,ym) . . . r(z1,z2,...,zk) p(x1,x2,...,xn)
Ukoliko baza znanja sadrzi pravilo mortal(sokrat) :- man(sokrat) i c injenicu
man(sokrat), onda iz nje sledi da mortal(sokrat) ima semanticku vrednost
1.
Upiti ili ciljevi (eng. goals) su oblika
q(y1,y2,...,ym),...,r(z1,z2,...,zk)
Postaviti cilj znaci traziti proveru da li je zadati skup atomickih formula
za neku valuaciju promenljivih koje sadrzi tacan (tj. ima semanicku vrednost
1) u odnosu na tekuce stanje baze. Ako je taj uslov ispunjen, kazemo da je

4.3 Pocetni primeri

75

cilj zadovoljen ili da cilj uspeva (eng. succeed). Valuaciju za koju je zadati cilj
zadovoljen zovemo odgovorom na zadati cilj ili resenjem zadatog cilja.
Na primer, ukoliko baza znanja sadrzi c injenicu man(sokrat), i pravilo
mortal(X) :- man(X), onda cilj mortal(Y) moze biti zadovoljen i to za valuaciju kojom se promenljiva Y preslikava u vrednost sokrat. Jedini odgovor
na ovaj cilj bice, dakle, Y = sokrat.
U interaktivnom okruzenju, nove c injenice i pravila se zadaju iza prompta,
kao argumenti predikata assert(...) i svaki zadati cilj se mora zavrsavati
tackom.

Cinjenice,
pravila i ciljevi, pored navedene, deklarativne semantike, imaju i
odgovarajucu proceduralnu semantiku koja omogucava korisc enje PROLOG-a
kao programskog jezika. Proceduralna semantika c injenice man(sokrat) je da
je zadatak man(sokrat) izvrsen. Proceduralna semantika pravila mortal(X) :- man(X)
je: da bi se izvrsio zadatak mortal(X) potrebno je da se izvrsi zadatak man(X).
Proceduralna semantika cilja mortal(X) je: odredi valuaciju takvu da je mortal(X)
tacno. Proceduralna semantika za slozeni cilj, koji se sastoji od vise pojedinacnih ciljeva, je analogna, s tim s to se podciljevi obradjuju sleva na desno.
PROLOG interpretator kao odgovor na neki cilj koji je zadovoljen, ispisuje
jednu valuaciju (zbog specificnog domena, valuaciju c emo zvati i instanciranje)
promenljivih za koju je cilj tacan i rec Yes (ukoliko ime neke promenljive pocinje
simbolom _, onda se njena vrednost ne ispisuje). Ukoliko cilj ne moze biti
zadovoljen, interpretator ispisuje rec No. Ukoliko jedan cilj ima vise odgovora
(tj. zadovoljavajucih valuacija), PROLOG ih navodi jedan po jedan, nakon s to
korisnik ukuca znak ;. Ukoliko korisnik pritisne Enter, interpretator prestaje
sa daljim navodjenjem resenja. Kada su sva resenja navedena, interpretator
ispisuje rec No.

4.3

Pocetni primeri

Nova c injenica se moze zadati kao u sledecem primeru:


?- assert(man(sokrat)).
Nakon ovoga, upit
?- man(sokrat).
uspeva, tj. daje rezultat Yes.
Naravno, upit
?- man(plato).
ne uspeva, tj. daje odgovor No.
Novo pravilo se zadaje na slican nacin, na primer:
?- assert(mortal(X) :- man(X)).
U pravilu mortal(X) :- man(X), predikat mortal(X) je glava pravila a (jednoclani)
niz predikata man(X) je rep pravila.
Komandom listing mozemo da dobijemo spisak svih postojecih c injenica
i pravila:
?- listing.
man(sokrat).
mortal(A) :-

76

4 PROLOG
man(A).

Upit
?- mortal(sokrat).
uspeva (daje odgovor Yes). Da bi ovaj upit bio zadovoljen, u pravilu mortal(X) :- man(X)
je promenljiva X bila unifikovana sa konstantom sokrat. Nakon toga, cilj mortal(sokrat)
je zamenjen ciljem man(sokrat) i on uspeva jer postoji takva c injeniva.
Upit
?- mortal(plato).
ne uspeva (daje odgovor No).
Upit
?- mortal(A).
uspeva i daje odgovor
A = sokrat.
To je jedino moguce resenje i ako ukucamo simbol ; dobicemo odgovor No.
Jednostavan i ilustrativan primer definisanja odnosa u PROLOG-u moze se
dati na primeru porodicnih relacija kao s to su otac, majka, brat, tetka i slicno.
zensko(jelena).
zensko(milica).
zensko(milena).
zensko(mina).
zensko(maja).
zensko(senka).
musko(mladen).
musko(stevan).
musko(mihajlo).
musko(rajko).
musko(petar).
roditelj(stevan,mladen).
roditelj(stevan,jelena).
roditelj(milica,mladen).
roditelj(milica,jelena).
roditelj(mihajlo,milica).
roditelj(milena,milica).
roditelj(milena,senka).
roditelj(mihajlo,senka).
roditelj(milena,rajko).
roditelj(mihajlo,rajko).
roditelj(rajko,petar).
roditelj(rajko,mina).
roditelj(maja,petar).
roditelj(maja,mina).
majka(X,Y):-zensko(X),roditelj(X,Y).
otac(X,Y):-musko(X),roditelj(X,Y).
predak(X,Y):-roditelj(X,Y).
predak(X,Y):-roditelj(X,Z),predak(Z,Y).

4.4 PROLOG i metod rezolucije

77

brat(X,Y):-musko(X),roditelj(Z,X),roditelj(Z,Y),X\==Y.
sestra(X,Y):-zensko(X),roditelj(Z,X),roditelj(Z,Y),X\==Y.
tetka(X,Y):-sestra(X,Z),roditelj(Z,Y).
ujak(X,Y):-brat(X,Z),majka(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 predikag X\==Y je ima vrednost tacno ako je X
razlicito od Y. U suprotnom, ima vrednost netacno.

4.4

PROLOG i metod rezolucije

Pravilo oblika:
p(x1,x2,...,xn) :- q1(y1,y2,...,ym),...qm(z1,z2,...zk)
moze se smatrati implikacijom
q1(y1,y2,...,ym) . . . qm(z1,z2,...zk) p(x1,x2,...,xn)
ili klauzom
q1(y1,y2,...,ym) . . . qm(z1,z2,...zk) p(x1,x2,...,xn)

Cinjenica
oblika:
p(x1,x2,...,xn)
moze se smatrati klauzom
p(x1,x2,...,xn).
Cilj oblika:
q1(y1,y2,...,ym),...qm(z1,z2,...zk)
moze se smatrati klauzom
q1(y1,y2,...,ym) . . . qm(z1,z2,...zk)
U primeru iz poglavlja 4.3, ako postoje sledece c injenice i pravila:
man(sokrat).
mortal(A) :man(A).
upitu
?- mortal(X).
odgovara ispitivanje nezadovoljivosti skupa klauza:
man(sokrat)
man(X) mortal(X)
mortal(Y)
Primetimo da je u trecoj klauzi promenljive preimenovana u Y, da ne bi
doslo do preklapanja imena u dve klauze. Ciljna klauza moze da se rezolvira
sa drugom klauzom, korisc enjem unifikatora [ Y 7 sokrat ] dajuci novi cilj
man(sokrat)
Rezolviranjem ove klauze sa prvom klauzom iz pocetnog skupa, korisc enjem
unifikatora [ X 7 sokrat ] dobija se prazna klauza, pa je dokazana nezadovoljivost datog skupa klauza. Pritom je odredjena (jedinstveno) instanciranje
promenljive X iz zadatog cilja.

78

4 PROLOG

Primetimo da u svim PROLOG klauzama najvise jedan literal nije pod negacijom. Takve klauze zovemo Hornovim klauzama i one omogucavaju efikasan
mehanizam izvodjenja prazne klauze.
PROLOG mehanizam je kompletan: on moze izvesti praznu klauzu iz bilo
kog nezadovoljivog skupa.

4.5

Stablo izvodjenja

PROLOG sistem (interpretator ili kompilator) pokusava da zadovolji zadati


cilj sistematicnim ispitivanjem svih mogucnosti. Sve mogucnosti c ine stablo
izvodjenja (eng. derivation tree) ili stablo pretrage (eng. search tree) c 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
resenje za zadati cilj.
Stablo izvodjenja PROLOG-a ilustrovacemo primerom. Pretpostavimo da
dat na slici 4.1 (na kraju svakog
je ucitana PROLOG datoteka koja sadrzi kod
reda, pod komentarom je oznaka klauze). Grane stabla su oznacene oznakama
klauza koje se koriste u izvodjenju. Direktni potomci jednog c vora odgovaraju
svim mogucim izvodjenjima odgovarajuceg podcilja. PROLOG mehanizam
ih sve ispituje sistematicno. Poredak potomaka direktno odgovara poretku
klauza u postojecem programu i on diktira nacin izvrsavanja upita.
Na slici je prikazano kompletno stablo izvodjenja za cilj ?-p(X).
Svaki c vor stabla je u nekom trenutku tekuci cilj koji moze da c ini nekoliko podciljeva. Ukoliko se krajnji levi podcilj unifikuje sa glavom neke klauze,
onda se taj podcilj zamenjuje telom klauze instanciranim tom istom unifikacijom. Ako je telo klauze prazno, onda se podcilj samo izostavlja. Ako se svi
podciljevi mogu obrisati tokom izvodjenja, onda je polazni cilj zadovoljen, a
instanciranje promenljivih odredjeno usput daje odgovor.
PROLOG stablo izvodjenja obilazi u dubinu, s to znaci da c e alternativni izbori da budu ispitani onda kada se pretraga vrati do tacke u kojoj ti izbori
postoje. Ovaj postupak pretrage zove se bektreking (eng. backtracking).
U skladu sa prikazanim stablom izvodjenja, upit p(X) dace sledece odgovore:
?- p(X).
X = a ;
X = a ;
X = b ;
X = d ;
No

4.6 Operator secenja

79

p(a).
p(X) :- q(X), r(X).
p(X) :- u(X).

/* C1 */
/* C2 */
/* C3 */

q(X) :- s(X).

/* C4 */

r(a).
r(b).

/* C5 */
/* C6 */

s(a).
s(b).
s(c).

/* C7 */
/* C8 */
/* C9 */

u(d).

/* C10 */
p(X)

C1 (X=a)
true
X=a

C2
q(X),r(X)

C3
u(X)

C4
s(X),r(X)

C10(X=d)
true
X=d

C7(X=a)
r(a)

C8(X=b)
r(b)

C9(X=c)
r(c)

C5
C6
C5
C6
C5
C6
true fail fail true fail fail
X=a
X=b

Figure 4.1: Primer stabla izvodjenja

4.6

Operator secenja

Operator secenja (eng. cut operator), koji se zapisuje !, odseca delove stabla pretrage. Ovaj operator, uspeva kada je on tekuci cilj i stablu izvodjenja se odsecaju svi drugi izvori na putu unzad do tacke stabla izvodjenja (ukljucujuci i
nju) gde se nalazi operator.
Za program naveden u poglavlju 4.5, za cilj p(X),!. dobija se samo jedan
odgovor (a odgovarajuce stablo izvodjenja je prikazano na slici 4.2 sivom
bojom oznaceni su c vorovi koji se ne obilaze):
?- p(X),!.
X = a ;

80

4 PROLOG

No
p(X)

C1 (X=a)
true
X=a

C2
q(X),r(X)

C3
u(X)

C4
s(X),r(X)

C10(X=d)
true
X=d

C7(X=a)
r(a)

C8(X=b)
r(b)

C9(X=c)
r(c)

C5
C6
C5
C6
C5
C6
true fail fail true fail fail
X=a
X=b

Figure 4.2: Primer rada operatora secenja


Za isti program, upit r(X),s(Y) daje odgovore (stablo izvodjenja je prikazano
na slici 4.3):
?- r(X),s(Y).
X = a
Y = a ;
X = a
Y = b ;
X = a
Y = c ;
X = b
Y = a ;
X = b
Y = b ;
X = b
Y = c ;
No
Upit r(X),!,s(Y), zbog operatora secenja daje samo odgovore (stablo izvodjenja je prikazano na slici 4.4):
?- r(X),!,s(Y).

4.6 Operator secenja

81
r(X),s(Y)

C5(X=a)
s(Y)

C5(X=b)
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

Figure 4.3: Stablo izvodjenja

X = a
Y = a ;
X = a
Y = b ;
X = a
Y = c ;
No
r(X),!,s(Y)

C5(X=a)
s(Y)

C5(X=b)
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

Figure 4.4: Stablo izvodjenja sa operatorom secenja


Konacno, upit r(X),s(Y),!, zbog operatora secenja daje samo jedan odgovore (stablo izvodjenja je prikazano na slici 4.5):
?- r(X),s(Y),!.
X = a
Y = a ;

82

4 PROLOG

No
r(X),s(Y),!

C5(X=a)
s(Y)

C5(X=b)
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

Figure 4.5: Stablo izvodjenja sa operatorom secenja


Operator secenja ne koristi se samo u ciljevima, vec moze da se koristi i u
pravilima/klauzama koje c ine program. On sprecava korisc enje klauza koje
postoje iza klauze koja ga sadrzi.
Razmotrimo primer predikata koji opisuje maksimum dva broja:
max(X,Y,Y) :- X =< Y.
max(X,Y,X) :- X>Y.
Naravno, ovako implementiran predikat je sasvim ispravan. No, on nije dovoljno efikasan. Ukoliko je cilj max(3,4,Y) pozvan u okviru izvrsavajna nekog

veceg programa, bice dobijen (ispravan) odgovor Y=4. Medutim,


ukoliko dode

do bektrektinga program ce pokusati da zadovolji max(3,4,Y) na neki drugi


nacin, s to je u ovom slucaju potpuno nepotrebno: maximum brojeva 3 i 4 je
4 i nema drugog moguceg rezultata. U gore navedenoj definicije, dve klauze

se medusobno
iskljucuju (ako prva uspeva, onda druga sigurno ne uspeva i
obratno), pa je svaki pokusaj da cilj bude zadovoljen na dva nacina gubljenje
vremena.
Opisani problem moze se prevazici korisc enjem operatora secenja. Ako je
prva klauza zadovoljena, potrebno je obezbediti da se nikad ne ispituje druga:
max(X,Y,Y) :- X =< Y,!.
max(X,Y,X) :- X>Y.
Navedena implementacija funkcionise na sledeci nacin: ukoliko je pozvan
cilj max(X,Y,Y) i ukoliko X =< Y uspeva, onda je drugi argument maksimum i
operator secenja onemogucava ispitivanje drugih mogucnosti. S druge strane,
(samo) ako X =< Y ne uspeva, prelazi se na sledecu klauzu.
Primetimo da upotrebljeni operator secenja ne menja znacenje programa i
skup odgovora (u odnosu na prethodnu verziju). Obe verzije programa su iste,
do na operator secenja i to sugerise da je njegova upotreba opravdana i prihvaljiva. Takav operator secenja (koji ne menja znacenje programa) zovemo zeleni operator secenja. Operator secenja tog tipa ima za cilj izbegavanje nepotrebnih izracunavanja popravljanje efikasnosti.

4.7 Negacija kao neuspeh

83

Postoji i druga vrsta operatora secenje crveni operator secenja. Crvenim


zovemo operator secenja koji menja znacenje programa. U principu dobro je
izbegavati takve operatore, sem ako za njihovu upotebu ne postoji dobar razlog. Razmotrimo sledeci primer:
max(X,Y,Y) :- X =< Y,!.
max(X,Y,X).
Ovaj predikat je slican prethodnom, uz razliku da je u drugoj klauzi izostavljen uslov X>Y. Navedni program sa opetorom secenja nije isti ukoliko se izostavi
operator secenja. To sugerise da njegova upotreba zahteva posebnu paznju (jer
on menja znacenje programa). Za neke upite navedena implementacija je ispravna. Na primer, ona ispravno odgovara na upite u kojima je (samo) treci
argument promenljiva:
?- max(100,101,X).
X = 101
Yes
?- max(3,2,X).
X = 3
Yes
Ipak, situacija nije ista kao sa zelenim operatorom secenjam i znacenje predikata
max je promenjeno. Na primer, ukoliko su sva tri argumenta instancirana, cilj
moze da bude da se zadovolji max(2,3,2). Ovaj upit ne bi trebalo da uspe,
ali u navednoj verziji sa crvenim operatorom secenja on (neocekivano?) uspeva. Naime, ne uspeva unifikovanje sa prvom klauzom, te se prelazi na
drugu. Cilj se uspesno unifikuje sa drugom klauzom i biva zadovoljen. Ovaj
primer pokazuje kako neoprezna upotreba operatora secenja moze da dovede
do neocekivanog ponasanja programa. On je tipican primer za crveni operator secenja. Navedena implementacije zapravo ne definise maksimum, vec
neki drugi predikat i ponasa se ocekivano (kao maksimum) samo u nekim
slucajevima.
Dobra praksa je da se najpre implementira jasan program bez operatora
secenja i da se tek onda njegova efikasnost popravi korisc enjem operatora secenja.

4.7

Negacija kao neuspeh

Termin negacija kao neuspeh se koristi za nacin na koji se pretpostavka zatvorenog


sveta (eng. closed world assumption) implementira kao vrsta negacije u PROLOGu. Grubo receno, pretpostavka zatvorenog sveta govori da je netacno sve s to
nije eksplicitno navedeno kao tacno. Operator \+ daje efekat negacije kao
neuspeha, isto kao predikat not definisan na sledeci nacin (u nekim implementacijama PROLOG-a raspoloziv je i ovakav predikat not):
not(Q) :- call(Q), !, fail.
not(Q).

84

4 PROLOG

Dakle, cilj not(Q) uspeva ako i samo ako cilj Q ne uspeva.


Razmotrimo sledeci primer u kojem se defise pojam woman preko pojma
man:
man(sokrat).
man(platon).
woman(X):- \+( man(X) ).
Za tako definisan predikat dobija se:
?- 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 mogucnosti bektrekinga). S druge strane, cilj woman(ksantipa) uspeva (iako takva c injenica ne
postoji u bazi). Ipak, cilj
?- woman(X).
ne uspeva. Zaista, ovaj cilj moze da uspe samo ako cilj man(X) ne uspeva.
Ali cilj man(X) moze da uspe (za X koje se instancira na sokrat). Dakle, cilj
woman(X) ne uspeva i X ne postaje vezana.
Upit ?- woman(X) mozemo 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
obicne logicke negacije.
negacije kao
Razmotrimo jos jedan primer za ilustraciju razlike izmedu
neuspeha i klasicne logicke negacije:
a(1).
a(2).
p(X,Y) :- a(X),a(Y),\+(X=Y).
q(X,Y) :- \+(X=Y),a(X),a(Y).

Od upita p(X,Y) i q(X,Y) bismo ocekivali isto ponasanje, medutim


dobijamo:
?- p(X,Y).
X=1
Y=2;
X=2
Y=1;
No.
?- q(X,Y).
No.

4.8 Liste

85

Prvi upit se ponasa u skladu sa nasim ocekivanjem, ali drugi od njega


odstupa. Prvi podcilj cilja q(X,Y) je not(X=Y). Posto se neinstancirane promenljive
X i Y uvek mogu unifikovati, cilj X=Y uvek uspeva. Stoga cilj not(X=Y) ne uspeva, pa ni upit q(X,Y).
Generalno, ocekivani rezultat (ocekivani u smislu klasicne logike prvog
reda) dobija se samo ako nema slobodnih promenljivih u upitu, tj. ako je argument operatora \+ vezan u trenutku kada je ovaj operator pozvan.
Primetimo i da se cilj \+(\+(man(X))) razlikuje od cilja man(X) jer ako je
prvi zadovoljen, onda c e promenljiva X ostati slobodna, za razliku od cilja
man(X) koji c e biti zadovoljen a promenljiva X c e biti instancirana na sokrat.
Ovo svojstvo moze da posluzi i kao pogodan test da li su dva terma unifikabilna bez njihovog unifikovanja u bilo kom slucaju. Na primer, cilj \+(\+(X=2))
uspeva, a pri tome se X ne instancira na 2.

4.8

Liste

Liste su jedan od kljucnih tipova podataka koji se koriste u logickom programiranju. Lista je prazna lista ili element za kojim sledi lista. Liste se rekurzivno
definisu, pa se rekurzija prirodno javlja u resenjima problema u kojima se one
koriste.
Lista moze da se zapise kao niz njenih elemenata razdvojenih zarezima
zagrada [ i ]. Lista kao svoj element moze da sadrzi i drugu
zapisu izmedu
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 oznacavamo sa []. Ukoliko je lista neprazna, njen prvi element
zovemo glava liste, a nastavak rep liste, takvu listu oznacavamo sa [GlavaListe|RepListe].
Sledeca tabela pokazuje na primerima da li se i kako mogu unifikovati razlicite liste.

86

4 PROLOG
Term 1
[1,2,3]
[a,b,c]
[X,1,2]
[a,b,c]
[a,b,c]
[]
[]
[]
[[]]
[a,b,c]
[a,b,c]
[a]
[[],[]]
[a,b|X]
[a,X,Y|T]
[a,b|X]

Term 2
[5,6,7]
[a,b]
[Y,Y,2]
[H|T]
[X,Y|T]
X
[]
[H|T]
[H|T]
[X|[Y|Z]]
[X|[Y|[Z]]]
[H|T]
[H|T]
[a,b,c]
[a,b,c]
[a,b]

unifikabilni
ne
ne
da
da
da
da
da
ne
da
da
da
da
da
da
da
da

unifikator

X=1, Y=1
H=a, T=[b,c]
X=a, Y=b, T=[c]
X=[]

H=[], T=[]
X=a,Y=b,Z=[c]
X=a,Y=b,Z=c
H=a,T=[]
H=[],T=[[]]
X=[c]
X=b,Y=c, T=[]
X=[]

Predikat koji odreduje


prvi element liste se moze definisati na sledeci nacin:
glava([H|_],H).
a prva tri elementa na sledeci nacin:
prvatri([X,Y,Z|_],X,Y,Z).
Rep liste se moze odrediti na sledeci nacin:
rep([_|T],T).
Predikat koji dodaje element na pocetak liste se moze definisati na sledeci
nacin:
dodajnapocetak(Lista,X,[X|Lista]).
Proveru da li je element X c lan liste definisacemo na dva nacina:
clan1([X|_],X):- !.
clan1([_|R],X):- clan1(R,X).
clan2([X|_],X).
clan2([_|R],X):- clan2(R,X).
Prva definicija je efikasnija, posto operator secenja sprecava bektreking posle
uspesnog nalazenja trazenog c lana (dok se u drugoj verziji pretraga do kraja

liste i kad je trazeni elemente vec pronaden).


Medutim,
druga verzija se moze
koristiti i za nabrajanje c lanova liste. Upit clan1([1,2,3],X) daje odgovor:
?- clan1([1,2,3],X).
X=1;
No.

4.8 Liste

87

U slucaju upita clan2([1,2,3],X) dobijamo:


?- clan2([1,2,3],X).
X=1;
X=2;
X=3;
No.
ovih predikata se ilustruje sledecim primerima:
Jos jedna razlika izmedu
?- clan1([1,2,3],X), X>2.
No.
?- clan2([1,2,3],X), X>2.
X=3;
No.
U slucaju prvog predikata, promenljiva X se pomocu prvog pravila za clan1
unifikuje sa prvim elementom liste, a operator secenja onemogucava bektreking. Stoga ne uspeva cilj X>2 i sistem odgovara No. U drugom slucaju, posle
neuspeha cilja X>2, bektrekingom se dolazi do unifikacije promenljive X sa
poslednjim elementom liste, kada i cilj X>2 uspeva.
Duzina liste se moze izracunati sledecim predikatom:
duzina([],0).
duzina([_|R],M):-duzina(R,M1), M is M1+1.
Predikat brisi_jedno_pojavljivanje izbacuje jedno pojavljivanje datog
elementa iz date liste:
brisi_jedno_pojavljivanje(X,[X|R],R).
brisi_jedno_pojavljivanje(X,[F|R],[F|S]) :- brisi_jedno_pojavljivanje(X,R,S).
Ovo je primer upotrebe navedenog predikata:
?- brisi_jedno_pojavljivanje(X,[1,2,3],L).
X=1 L=[2,3] ;
X=2 L=[1,3] ;
X=3 L=[1,2] ;
No
Sledeci upit:
?- brisi_jedno_pojavljivanje(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

88

4 PROLOG

pokazuje da predikat brisi_jedno_pojavljivanje(X,L,R) moze 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_pojavljivanje(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 moguce je koristiti na nekoliko nacina, za izracunavanje
razlicitih argumenta:
?- append([1,2,3],[4,5],[1,2,3,4,5]).
Yes
?- append([1,2,3],[4,5],A).
A = [1,2,3,4,5]
?- append([1,2,3],A,[1,2,3,4,5]).
A = [4,5]
?- append(A,[4,5],[1,2,3,4,5]).
A = [1,2,3]
Ilustrujmo primene listi i kroz dva algoritma za sortiranje.
Primetimo da u narednoj implementaciji algoritma mergesort nema potrebe
za primenom operatora secenja, za bilo koje argumente navedni predikatu
mogu biti zadovoljeni samo na po jedan nacin.
mergesort([],[]).
mergesort([A],[A]).
mergesort([A,B|R],S) :split([A,B|R],L1,L2),
mergesort(L1,S1),
mergesort(L2,S2),
merge(S1,S2,S).
split([],[],[]).
split([A],[A],[]).
split([A,B|R],[A|Ra],[B|Rb]) :merge(A,[],A).
merge([],B,B).
merge([A|Ra],[B|Rb],[A|M]) :merge([A|Ra],[B|Rb],[B|M]) :-

split(R,Ra,Rb).

A =< B, merge(Ra,[B|Rb],M).
A > B, merge([A|Ra],Rb,M).

Ovaj predikat je definisan tako da se koristi za izracunavanje drugog argumenta ako je dat prvi. Nije ga moguce koristiti za izracunavanje 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 greske.
Algoritam bubble sort moze se implementirati na sledeci nacin:

4.9 Ugradjeni predikati

89

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 ukljucuje PROLOG operator implikacije -> (a naravno postoji i varijanta i bez njega):
bubblesort2(List, Sorted) :append(P, [A, B|T], List),
B < A ->
append(P, [B, A|T], R),
bubblesort2(R, Sorted)
; Sorted = List.

4.9

Ugradjeni predikati

Logicke konstante Predikat true uvek uspeva kao cilj, predikat false nikad
ne uspeva kao cilj.
Provera promenljive
Predikat var(X) proverava da li je X promenljiva koja nije vezana.
Predikat ground(G) proverava da li je G ne sadrzi promenljive koje nisu
vezane.
Provera tipa
Predikat atom(X) uspeva ako je X vezana za simbolicki atom. Na primer,
atom(foot) i atom(foot) uspevaju, a atom("foot") i atom(3) ne uspevaju.
Predikat integer(X) proverava da li je X vezana za ceo broj.
Predikat real(X) proverava da li je X vezana za realan broj.
Predikat string(X) proverava da li je X vezana za karaktersku nisku.
Unifikabilnost i jednakost
Upit X = Y proverava da li su X i Y unifikabilni, 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 razlicite vrednosti.
Vezivanje promenljive za numericku vrednost
Cilj V is E vezuje promenljivu V za numericku vrednost E. Vrednost E
mora biti numericka konstanta ili izraz c ija je vrednost odredjena.
Aritmetici operatori
Za brojeve N i M, dozvoljeni su sledeci aritmeticki operatori: N > M, N < M,
N =< M, N >= M.

90

4 PROLOG

Pomocni predikati
Cilj help(S) uvek uspeva i daje objasnjenje (ako ono postoji) za pojam S
(S treba da bude simbolicki atom, na primer, help(var)).
Cilj halt uvek uspeva, zaustavlja PROLOG i vraca kontrolu operativnom
sistemu.
Cilj trace uvek uspeva i ukljucuje pracenje izvrsavanja izracunavanja.
Cilj notrace uvek uspeva i iskljucuje pracenje izvrsavanja izracunavanja.
Dodavanje u PROLOG bazu i brisanje iz PROLOG baze
Cilj asserta(C) dodaje klauzu C u bazu pre klauza koje imaju isti kljucni
predikat (kljucni 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 kljucni predikat.
Cilj retract(C) brise klauzu C iz baze. Klauza C treba da bude instancirana tako da moze da se odredi kljucni predikat.
listing prikazuje sadrzaj baze.
Ucitavanje PROLOG programa
Cilj consult(F) ucitava program iz datoteke F.
Cilj reconsult(F) ucitava program iz datoteke F, s tim s to se definicijom
predikata koji se ucitava zamenjuje (eventualna) postojeca definicija.
Cilj [F1,F2,...] oznacava ucitavanje datoteke F1, zatim datoteke F2, itd.
U PROLOG programima komentari se pisu izmedju znakova /* i */.
Ulaz i izlaz
seeing(X) uspeva ako je X vezana za tekuci ulazni tok (tzv. port). Na
primer, seeing(user) uspeva ako je tekuci ulazni tok tastatura.
see(X) otvara kao ulazni port datoteku X. Naredni ulazi za predikat read
bice citan sa tog porta.
seen zatvara sve ulazne portove i naredni ulazi za predikat read bice
citani sa porta user.
read(X) c ita izraz sa tekuceg porta i smesta ga u X.
telling(X) uspeva ako X moze biti vezana za tekuci izlazni port. Na
primer, tellin(user) uspeva ako je tekuci izlazni tok ekran.
tell(X) otvara kao izlazni port datoteku X. Naredni ulazi predikata write
bice slati na taj port.
told zatvara sve izlazne portove i naredni ulazi za predikat bi\ce bice
slat na porta user.
write(E) ispisuje izraz vezan za E na tekuci izlazni port.
nl omogucava prelazak u novi red.
tab(N) ispisuje N razmaka na tekuci izlazni port.
Kontrola toka
call(P) poziva predikat P, uspeva ako i samo ako uspeva P.
! operator secenja.

4.9 Ugradjeni predikati

91

Negacija kao neuspeh


not(Q), \+Q daje efekat negacije kao neuspeha (kao s to je objasnjeno u
poglavlju 4.7.
Obrada PROLOG termova
clause(H,B) vraca klauze iz baze c ija glava se uparuje sa H, a telo sa B.
Vrednost H mora biti dovoljno instancirana da odredjuje glavni predikat
glave.
functor(E,F,N) uspeva ako je vrednost E vezana za funkcijski izraz oblika f(...). F c e biti vezano za f 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 moze biti vezano za neki redni broj argumenta u f(...).
Ukoliko cilj uspe, A c e biti vezano za N-ti argument u f(...).
name(A,L) vrsi konvertovanje izmedju atoma i liste. Na primer, upit
?- name(.pl,L). daje odgovor L = [46,112,108].
=.. vrsi konvertovajne izmedju terma i liste. Na primer, ?- parent(a,X) = .. L.
daje odgovor L = [parent, a, _X001].
Operator :- op(P,T,O). uvodi simbol operatora.
P odredjuje prioritet operatora, vecoj vrednost odgovara nizi prioritet
(prioriteti za ugradjene operatore zavisi 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;
O je ime operatora.
Tip operatora se definise pomocu jednostavnih, gore datih, niski karaktera. Karakter f oznacava poziciju operatora, a x i y pozicije argumenata. Pri tome x znaci da se radi o argumentu sa glavnim operatorom
strogo manjeg prioriteta od operatora koji definisemo. y znaci da prioritet glavnog operatora argumenta moze biti manji ili jednak prioritetu operatora koji definisemo. Pri tome se smatra da atomi i izrazi u zagradama
imaju prioritet 0.
Smisao ovakvog definisanja tipa operatora se najbolje ilustruje pomocu
drveta operatora. Neka je operator + tipa yfx i neka je dat izraz a+b+c.
Postoje dva drveta izraza koja mu potencijalno mogu odgovarati. Data
su na slici 4.6.
Ako posmatramo desno drvo, primecujemo da njegovo desno poddrvo
ima operator + u korenu koji nije strogo manjeg prioriteta od operatora

+ u korenu celog drveta. Medutim,


njegov tip yfx to zahteva, pa stoga

92

4 PROLOG

Figure 4.6: Dva drveta koja mogu odgovarati izrazu a+b+c


desno drvo moramo odbaciti. Odnosno, operator je levo asocijativan i
izraz se tumaci kao ((a+b)+c). Da je tip operatora bio xfx ni jedno od
ova dva drveta ne bi bilo prihvatljivo, posto se bar u jednom poddrvetu
javlja operator + istog prioriteta. Ovo se moze resiti pomocu zagrada,
posto je prioritet izraza u njima 0. Stoga tip xfx namece korisc enje zagrada,
s to znaci da operator nije asocijativan.
Ugradjeni operatori, poredjani po prioritetima:
:?;
,
not
is, =.., <, itd.
+, *, /
^

xfx, fx
fx
xfy
xfy
fy
xfx
yfx, fx
yfx
xfy

Pronalazenje svih resenja findall(Things,GoalExpression,Bag) pronalazi


sve vrednosti za Thing koje zadovoljavaju uslov GoalExpression i smesta
ih u listu Bag. Ako cilj GoalExpression ne uspeva, list Bag c e biti prazna.
Sve promenljive u GoalExpression se smatraju egzistencijalno kvantifikovanim.
bagof(Things,GoalExpression,Bag) pronalazi sve vrednosti za Thing
koje zadovoljavaju uslov GoalExpression i smesta ih u listu Bag. Ne uspeva ako ne uspeva cilj GoalExpression. Slobodne promenljive u GoalExpression
mogu da se vezu.
setof(Things,GoalExpression,Bag) funkionise isto kao bagof uz razliku da c e lista Bag biti sortirana i da nece sadrzati duplikate.

4.10

Implementacija KNF algoritma

Kao prvi veci primer PROLOG programa koji ilustruje razne koncepte jezika,
navodimo implementaciju KNF algorima. Kasnije c emo na to nadovezati im-

4.10 Implementacija KNF algoritma

93

plementaciju algoritma DPLL. Radi preglednijeg zapisa, prvo uvodimo logicke


veznike kao nove operatore.
:-op(10,fx,non).
:-op(20,yfy,and).
:-op(30,yfy,or).
:-op(40,xfx,implies).
:-op(50,xfx,equiv).
Operatori and i or su definisani kao asocijativni (yfy), s to dovodi do ispustanja
nepotrebnih zagrada u zapisu i lakse c itljivosti.
Predikat knf implementira KNF algoritam iz tri koraka. Prvo se eliminisu
veznici ekvivalencije i implikacije, zatim se vrsi primena de Morganovih zakona uz eliminisanje dvostrukih negacija, a na kraju primena zakona distributivnosti disjunkcije i konjunkcije.
knf(X,Y):-eliminacija(X,Z),demorgan(Z,T),distributivnost(T,Y).
eliminacija(X equiv Y,R):-eliminacija((X implies Y) and (Y implies X),R).
eliminacija(X implies Y,non X1 or Y1):-eliminacija(X,X1),eliminacija(Y,Y1).
eliminacija(X or Y,X1 or Y1):-eliminacija(X,X1),eliminacija(Y,Y1).
eliminacija(X and Y,X1 and Y1):-eliminacija(X,X1),eliminacija(Y,Y1).
eliminacija(non X,non X1):-eliminacija(X,X1).
eliminacija(X,X):-atom(X).
Primetimo da je pri svakom pozivu primenljivo samo jedno pravilo za eliminaciju, tako da PROLOG nece traziti vise od jednog resenja. Osim toga, treba
primetiti da je prvo pravilo specificno zato s to eliminisuci jedan veznik uvodi
novi koji je potrebno eliminisati.
demorgan(non (X and Y),X1 or Y1):-demorgan(non X,X1),demorgan(non Y,Y1).
demorgan(non (X or Y),X1 and Y1):-demorgan(non X,X1),demorgan(non Y,Y1).
demorgan(non non X,X1):-demorgan(X,X1).
demorgan(X or Y,X1 or Y1):-demorgan(X,X1),demorgan(Y,Y1).
demorgan(X and Y,X1 and Y1):-demorgan(X,X1),demorgan(Y,Y1).
demorgan(non X,non X):-atom(X).
demorgan(X,X):-atom(X).
Primetimo da je jednostavnosti radi ucinjeno malo odstupanje od KNF algoritma kako je dat na slici 2.1. Naime, dozvoljena je eliminacija dvostruke
negacije i pre nego s to se do kraja primene de Morganovi zakoni.
distributivnost(X and Y, X1 and Y1):-distributivnost(X,X1),distributivnost(Y,Y1).
distributivnost(X or Y, R):-distributivnost(X,X1),distributivnost(Y,Y1),
distributivnost(X1,Y1,R).
distributivnost(non X, non X).
distributivnost(X,X):-atom(X).
distributivnost(X and Y, Z, XZ and YZ):-distributivnost(X,Z,XZ),
distributivnost(Y,Z,YZ),!.
distributivnost(X, Y and Z, XY and XZ):-distributivnost(X,Y,XY),
distributivnost(X,Z,XZ),!.
distributivnost(X,Y,X or Y).

94

4 PROLOG

Kada mu je argument neka konjunkcija, predikat distributivnost omogucava


rekurzivnu primenu na konjunkte, a slucaju disjunkcije primenjuje zakone distributivnosti. Pri tome se uzima u obzir i to da primena ovog zakona moze
dovesti do stvaranja novih uslova za njegovu primenu u okviru podformula
dobijenog izraza.

4.11

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 unutrasnjih listi koje predstavljaju klauze. Kako bismo ovo
implementirali, prvo nam je potreban pomocni predikat koji spaja dve liste. Za
to c emo koristiti predikat append definisan u sekciji 4.8.
Konverzija se vrsti tako s to se prolazi kroz konjunkcije spajajuci liste koje se
dobijaju rekurzivnom primenom predikata knf_u_listu_listi na konjunkte
do dis(koji su ponovo u konjunktivnoj normalnoj formi) sve dok se ne dode
junkcije. U tom trenutku se prelazi na novi predikat disjunkcija_u_listu koji
od disjunkcije formira listu literala analogno nacinu na koji knf_u_listu_listi
gradi listu listi.
knf_u_listu_listi(X,[[X]]):-atom(X).
knf_u_listu_listi(non X, [[non X]]):-atom(X).
knf_u_listu_listi(X and Y,R):-knf_u_listu_listi(X,R1),knf_u_listu_listi(Y,R2),
append(R1,R2,R).
knf_u_listu_listi(X or Y,[R]):-disjunkcija_u_listu(X or Y, R).
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),disjunkcija_u_listu(Y,R2),
append(R1,R2,R).
U cilju implementacije DPLL algoritma, prvo su nam potrebni pomocni
predikati koji implementiraju rad sa listama i listama listi.
Predikat koji proverava da li se lement nalazi u listi je poznat od ranije:
sadrzi([X|R],X).
sadrzi([Y|R],X):-sadrzi(R,X).
Da bismo proverili da li lista listi sadrzi neki element koristicemo dvostruku
primenu predikata sadrzi, s tim s to c emo u nastavku predikatima davati nazive
u skladu sa njihovim smislom u implementaciji DPLL algoritma.
formula_sadrzi_literal(X,Y):-sadrzi(X,Z),sadrzi(Z,Y).
Kako se u DPLL algoritmu koriste i zamene literala ili iskaznih slova, koristicemo i sledeci predikat:
zameni_u_disjunkciji(X,Y,[X|R],[Y|T]):-zameni_u_disjunkciji(X,Y,R,T),!.
zameni_u_disjunkciji(X,Y,[Z|R],[Z|T]):-zameni_u_disjunkciji(X,Y,R,T).
zameni_u_disjunkciji(X,Y,[],[]).

4.11 Implementacija DPLL algoritma

95

Pri tome se podrazumeva da su disjunkcije unutrasnje liste. Zamena elementa liste listi (literala u celoj formuli) se sad lako vrsi:
zameni_literal_u_formuli(X,Y,[P|R],[Q|T]):-zameni_u_disjunkciji(X,Y,P,Q),
zameni_literal_u_formuli(X,Y,R,T).
zameni_literal_u_formuli(X,Y,[],[]).
Zamena iskaznog slova p u formuli se moze uraditi tako s to se zamene oba
literala - p i non p odgovarajucim simbolima u celoj formuli.
zameni_slovo_u_formuli(X,Y,P,Q):-zameni_literal_u_formuli(X,Y,P,R),
zameni_literal_u_formuli(non X, non Y,R,Q).
Brisanje svih pojavljivanja elementa liste vrsimo na sledeci nacin:
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 operise sa praznom listom klauza i
ako je tako vraca yes, a u suprotnom, vrsi zamene > sa i sa >, brise
pojavljivanja literala koji je u nasoj 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),!,zameni_negacije_literala(X,Y),dpll(Y).
dpll(X):-formula_sadrzi_literal(X,non f),!,zameni_negacije_literala(X,Y),dpll(Y).

% Brisanje literala f
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.

% Korak tautology
dpll(X):-sadrzi(X,Y),sadrzi(Y,t),!,brisi_sve(Y,X,Z),dpll(Z).
dpll(X):-sadrzi(X,Y),sadrzi(Y,L),atom(L),sadrzi(Y, non L),!,brisi_sve(Y,X,Z),dpll(Z).

96

4 PROLOG

% Korak unit propagation


dpll(X):-sadrzi(X,[Y]),atom(Y),!,zameni_slovo_u_formuli(Y,t,X,Z),dpll(Z).
dpll(X):-sadrzi(X,[non Y]),!,zameni_slovo_u_formuli(Y,f,X,Z),dpll(Z).

% Korak pure literal


dpll(X):-formula_sadrzi_literal(X,Y),atom(Y),not(formula_sadrzi_literal(X,non Y)),!,
zameni_slovo_u_formuli(Y,t,X,Z),dpll(Z).
dpll(X):-formula_sadrzi_literal(X,non Y),not(formula_sadrzi_literal(X,Y)),!,
zameni_slovo_u_formuli(Y,f,X,Z),dpll(Z).

% Korak split
dpll([[X|R1]|R2]):-atom(X),zameni_slovo_u_formuli(X,t,[[X|R1]|R2],Y),dpll(Y),!.
dpll([[X|R1]|R2]):-atom(X),zameni_slovo_u_formuli(X,f,[[X|R1]|R2],Y),dpll(Y).
dpll([[non X|R1]|R2]):-zameni_slovo_u_formuli(X,t,[[non X|R1]|R2],Y),dpll(Y),!.
dpll([[non X|R1]|R2]):-zameni_slovo_u_formuli(X,f,[[non X|R1]|R2],Y),dpll(Y).
Primetimo da je recimo u koraku tautology moguce da postoji vise klauza
koje sadrze literal t. U tom slucaju PROLOG bi prirodno vrsio bektreking u potrazi za svim resenjima. Kako to u nasoj implementaciji nema svrhe, ubacen je
predikat reza koji sprecava ovakvo ponasanje. Slicna opaska vazi i u pravilima
unit propagation i pure literal.
Zamene negiranih literala se vrse jednostavno kad imamo implementirane
pomocne predikate.
zameni_negacije_literala(X,Y):-zameni_literal_u_formuli(non t,f,X,Z),
zameni_literal_u_formuli(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 mozemo dodati jos jedan predikat koji proverava da li je formula
zadovoljiva:
zadovoljiva(X):-knf(X,Y),knf_u_listu_listi(Y,Z),dpll(Z).

4.12 Pretraga grafa

4.12

97

Pretraga grafa

Kako grafovi predstavljaju binarne relacije nad nekim domenom, PROLOG


omogucava vrlo jednostavno opisivanje i pretragu grafova. Graf se zadaje listom svojih grana.
edge(1,
edge(1,
edge(2,
edge(2,
edge(3,
edge(3,
edge(4,
edge(4,
edge(5,
edge(6,
edge(6,
edge(7,
edge(8,
edge(8,

5).
7).
1).
7).
1).
6).
3).
5).
8).
4).
5).
5).
6).
7).

Nalazenje putanje se realizuje rekurzivno. Postoji put od c vora A do c vora


B ako je A = B ili ako postoji grana od c vora A do c vora X i postoji put od
X do B. Kako grafovi mogu u opstem slucaju sadrzati cikluse, potrebno je
pamtiti i listu posecenih c vorova kako ne bi doslo do prekoracenja steka pri
rekurzili.
% path(Start, Finish, Visited, Path)
path(Node, Node, _, [Node]).
path(Start, Finish, Visited, [Start|Path]):edge(Start, X), not(sadrzi(Visited,X)), path(X,Finish,[X|Visited],Path).

4.13

Primer resavanje jednostavnog problema

PROLOG je poznat po svojoj pogodnosti za resavanje problema vestacke inteligencije. Ilustrovacemo to na primeru jednostavne igre.
Na levoj obali reke nalaze se tri misionara i tri ljudozdera (eng. missionaries
and cannibals). Pomocu c amca koji prima dve osobe, svi treba da se prevezu
preko reke. Pri tome, ne sme se desiti da na nekoj obali broj ljudozdera bude
veci od broja misionara jer c e ih ovi pojesti. Potrebno je naci neki raspored
reku.
prevozenja tako da svi predu
svaka
Resavanje ovog problema c emo svesti na pretragu grafa. Izmedu

dva poteza, igra se nalazi u odredenom


stanju. To stanje se karakterise brojem misionara i ljudozdera na obalama i polozajem c amca. Broj misionara i
ljudozdera je dovoljno precizirati za levu stranu, jer je tad broj na desnoj strani

jednoznacno odreden.
Primer stanja je
state(3, 1, left)

98

4 PROLOG

Potezi predstavljaju prevozenje jedne ili dve osobe na drugu stranu reke.

Potpuno su odredeni
brojem misionara i ljudozdera koji se prevoze i stranom
na koju se c amac krece. Primer poteza je
move(1,1,right)
Stanja igre mozemo smatrati c vorovima grafa c ije su grane potezi pomocu
kojih se prelazi iz jednog stanja u drugo. Na ovaj nacin se resavanje problema
svodi na nalazenje putanje kroz graf od polaznog stanja state(3,3,left) do
zavrsnog state(0,0,right). Samo resenje je lista poteza koji odgovaraju granama

koje spajaju medustanja


u toku resavanja.
[move(0,2,left), move(0,1,right)|...]
Osnovni predikat za resavanje ovog problema ima formu vec prikazanog
predikata za pretragu grafa.
mandc(state(0, 0, right), _, []).
mandc(CurrentState, Visited, [Move | RestOfMoves]) :newstate(CurrentState, NextState),
not(sadrzi(NextState, Visited)),
make_move(CurrentState, NextState, Move),
mandc(NextState, [NextState | Visited], RestOfMoves).

Za uoceno stanje koje nasleduje


trenutno, potez koji realizuje prelaz se lako
izracunava.
make_move(state(M1, C1, left), state(M2, C2, right), move(M, C, right)) :M is M1 - M2,
C is C1 - C2.
make_move(state(M1, C1, right), state(M2, C2, left), move(M, C, left)) :M is M2 - M1,
C is C2 - C1.
Da bismo konstruisali sledece stanje, potrebno je definisati legalne prelaze
c amcem
carry(2,
carry(1,
carry(1,
carry(0,
carry(0,

0).
0).
1).
1).
2).

kao i legalna stanja. Pozicija c amca je nebitna, ali broj ljudozdera ni na jednoj
obali ne sme prelaziti broj misionara. Stoga, legalna su samo stanja kod kojih
je broj misionara na levoj strani jednak broju ljudozdera, stanja koj kojih su sva
tri misionara na levoj obali i stanja kod kojih su svi misionari na desnoj obali.
legal(X, X).
legal(3, X).
legal(0, X).

4.13 Primer resavanje jednostavnog problema

99

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 moze biti vise od tri misionara,
odnosno ljudozdera.
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),
M2 is M1 + M,
C2 is C1 + C,
M2 =< 3,
C2 =< 3,
legal(M2, C2).

Zadaci

Zadatak 65
Vazi sledece:
Janko ima psa.
Svaki vlasnik psa voli z ivotinje.
Nijedna osoba koja voli z ivotinje ne moze da udari z ivotinju.
Janko ili Marko su udarili macku c ije je ime Tuna.
Svaka macka je z ivotinja.
U PROLOG-u zapisati c injenice i predikate pomocu kojih se moze utvrditi ko je
udario Tunu.

Zadatak 66
Definisati predikat koji izracunava sumu prvih N prirodnih brojeva.

Zadatak 67
Definisati predikat koji izracunava sumu cifara datog broja.

Zadatak 68
Definisati predikat koji izracunava N-ti stepen zadatog broja.

Zadatak 69
Definisati predikat koji obrce cifre broja.

Zadatak 70
Definisati predikat koji izracunava najveci zajednicki delilac dva broja.

Zadatak 71
Definisati predikat koji proverava da li je broj prost.

Zadatak 72
Definisati predikat koji izracunava sumu elemenata liste.

Zadatak 73
Definisati predikat koji obrce listu.

Zadatak 74
Definisati predikat koji dodaje element na kraj liste.

Zadatak 75
Definisati predikat koji proverava da li se tri zadata elementa nalaze
na uzastopnim pozicijama u listi.

100

4 PROLOG

Zadatak 76
Definisati predikat koji konstruise listu koja se sastoji od prvih n elemenata zadate liste.

Zadatak 77
Definisati predikat koji deli datu listu brojeva na listu negativnih i
nenegativnih elemenata.

Zadatak 78
Definisati predikat koji deli datu listu na dve na sve moguce nacine.

Zadatak 79
Definisati predikat koji ispisuje sve podliste date liste.

Zadatak 80
Definisati predikat koji iz date liste brise sva ponavljanja elemenata.

Zadatak 81
Definisati predikat koji nalazi uniju dve liste.

Zadatak 82
Definisati predikat koji nalazi presek dve liste.

Zadatak 83
Definisati predikat koji nalazi razliku dve liste.

Zadatak 84
Definisati predikat koji nalazi simetricnu razliku dve liste.

Deo II

Pretraga

Glava 5

Resavanje problema kao


pretraga
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 c e 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 c e se pokazati kao opravdana ili neopravdana. U slucaju da se pokaze kao neopravdana, preduzima se alternativna akcija. Znaci, situacija u kojoj nije moguce izvrsiti direktno zakljucivanje zahteva
primenu pretrage.
Manje apstraktan primer je upravljanje robotskom rukom. Pretpostavimo
da robotska ruka ima nekoliko mehanickih zglobova c ije se kretanje kontrolise
elektricnim impulsima. Pri tom, 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
c ase ovakvom robotskom rukom je netrivijalan zadatak, ali se moze razbiti
na sekvencu atomicnih koraka pokreta pojedinacnih zglobova oko razlicitih
ugao. Mozemo zamisliti da se ovi koraci izvrsavaju strogo
osa za odreden
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 zglobova i svaki bi se pojedinacno dovodio u z eljeni polozaj. Druga
mogucnost je da se kretanja zglobova izvode simultano, kao kod c oveka, pri
tom povecavajuci broj mogucih kombinacija u svakom trenutku.
Dati primeri motivisu razmisljanje o pretrazi kao o nalazenju niza akcija kojima se ostvaruje cilj kada to ne moze biti ostvareno pojedinacnim akcijama. Iako
u opstem slucaju ovakva definicija ne mora delovati adekvatno, u kontekstu
vestacke inteligencije u kome obicno pretpostavljamo postojanje nekog entiteta
koji deluje preduzimanjem nekih akcija (agenta), ona je prirodna.
Pored algoritama koji se u potpunosti mogu podvesti pod ovako definisan

104

5 Resavanje problema kao pretraga

pojam pretrage, u ovom delu c emo opisati i neke algoritme optimizacije, koji
su opstiji.
Kako bi se neki problem predstavio kao problem pretrage i resio primenom

algoritama pretrage potrebno je da ima odredenu


strukturu. Kako bi aspekti
ove strukture bili jasnije izlozeni bice ilustrovani na primeru nalazenja puta
dva grada. Pretpostavlja se da direktan put izmedu
njih ne mora posizmedu
njih,
tojati, vec da je potreban prolazak kroz veci broj gradova na putu izmedu
ali se pretpostavlja da je ciljni grad dostupan iz polaznog.
Elementi problema pretrage koje je potrebno definisati su sledeci:
Skup mogucih stanja: U toku procesa pretrage agent koji sprovodi pretragu
se moze naci u razlicitim stanjima. Poznavanje stanja pruza sve informacije potrebne za razumevanje procesa pretrage i agenta u datom trenutku.
dva grada, skup stanja predstavlja skup
Za agenta koji nalazi put izmedu
gradova koji su dostupni iz polaznog grada.

Polazno stanje: Na pocetku resavanja problema agent se nalazi u odredenom


stanju. Ovo stanje nazivamo polaznim stanjem. U primeru nalazenja
puta, to je grad iz koga se krece.
Skup mogucih akcija: U svakom koraku pretrage, agent moze preduzeti neku
akciju. Niz akcija preduzetih u odgovarajucim trenucima treba da dovede
do resavanja problema. Skup akcija moze biti isti u svakom stanju ili
moze da varira od stanja do stanja. To zavisi od problema koji se resava.
Skup akcija moze biti kretanje ka jednom od susednih gradova. Niz
ovakvih izbora treba da dovede agenta do ciljnog grada. Skup akcija u
ovom problemu ocito varira od stanja do stanja jer su za razlicite gradove
razliciti i skupovi susednih gradova.
Fukcija prelaska: Ova funkcija preslikava parove stanje-akcija u stanja koja
slede posto se u datom stanju preduzme data akcija. Ova funkcija omogucava
izbor narednog stanja izborom neke akcije. Ukoliko ona nije poznata,
agent ne moze biti siguran u koje c e stanje dospeti posle preduzimanja

odredene
akcije i sam proces odlucivanja postaje kompleksniji. U nekim
problemima funkcija prelaska ne mora biti poznata. Na primer u slucaju
delovanja u nepoznatoj okolini. Jedan nacin resavanja ovakvih problema je korisc enjem informacija iz iskustva, odnosno aproksimacijom ove
funkcije pomocu procesa koji se zasniva na analizi pokusaja i gresaka.
Jedan nacin kojim se resavaju ovakvi problemi je primena algoritama
ucenja uslovljavanjem (eng. reinforcement learning). Jos jedan primer u
kome funkcija prelaska moze biti nedefinisana je delovanje u promenljivoj
okolini. U tom slucaju je potrebno korisc enje prilagodljivih algoritama
koriste informacije iz iskustva. Na primer, algoritama ucenja
koji takode
uslovljavanjem i genetskih algoritama.
dva grada, funkcija prelaska je
U slucaju primera nalazenja puta izmedu

jednoznacno odredena
putnom kartom datog podrucja koja odreduje
u

kom gradu se agent moze naci posto iz datog grada krene u odredenom
pravcu.
Test cilja: Ovim testom se ustanovljava da li se doslo do zavrsetka procesa
pretrage. To moze biti test jednakosti sa zavrsnim gradom.

5.1 Kvalitet algoritama pretrage

105

Cena akcije: Ovo je funkcija koja preslikava par stanje-akcija u numericku vrednost cenu preduzimanja date akcije u datom stanju. Primer cene ak susednih
cije je duzina puta ili cena goriva potrebnog za prevoz izmedu
gradova.
Kod nekih problema se ovi elementi lako i prirodno uocavaju, kao na datom
primeru, dok je kod drugih potrebno manje ili vece modeliranje ili preformulacija problema. U slucaju primera upravljanja robotskom rukom bilo bi
potrebno odrediti moguce ose rotacije za razlicite zglobove i diskretizovati in bi bilo
tervale u kojima se rotacija obavlja. Na primer po 10 stepeni. Takode
potrebno odluciti da li se pokreti razlicitim zglobovima mogu preduzimati simultano ili ne. Posle toga bi se navedeni elementi mogli lako definisati.
Resenje problema predstavlja niz akcija koji vode od polaznog stanja do stanja
u kome je ispunjen test cilja. Svakom resenju se moze pridruziti njegova cena
kao suma cena akcija koje se preduzimaju. Optimalno resenje je resenje sa najmanjom cenom. Ono ne mora biti jednoznacno definisano.

Primer 5.1 Slagalica se sastoji od 8 kvadrata rasporedenih


na prostoru velicine 3x3
polja. Kvadrati su numerisani brojevima od 1 do 8. Slagalicu je potrebno tako urediti
da se u prvom redu nalazi prazno polje, a zatim kvadrati 1 i 2, u drugom kvadrati
3, 4 i 5, a u trecem kvadrati 6, 7 i 8 sto c emo kompaktno zapisivati kao [ 12345678].
Elementi ovog problema mogu biti definisani na sledeci nacin.
1. Skup stanja predstavlja skup svih kombinacija [s1 s2 . . . s9 ] za si { , 1, 2, 3, 4, 5, 6, 7, 8}.
2. Polazno stanje moze biti bilo koje stanje slagalice. Na primer [7638 1425].
3. Skup akcija moze biti {levo, desno, gore, dole} gde se date akcije odnose na
pomeranje praznog polja levo, desno, gore i dole. Iako je naizgled prirodnije
za akcije uzeti pomeranje kvadrata susednih praznom polju na prazno polje, sto
tako definse u stvarnosti i desava, postoji jednoznacna korespodencija izmedu
isanih akcija i definicije koja je data, tako da se odlucujemo za formulaciju koja je
jednostavnija.
4. Funkcija prelaska presliakva stanja i akcije u stanja koja nastaju pomeranjem
praznog polja na neku od c etiri moguce strane.
5. Test cilja je test jednakosti sa stanjem [ 12345678].
6. Cena akcije je konstantna (npr. 1) posto ne postoji razlog da se neka pomeranja
smatraju skupljim od drugih. Cena resenja je u tom slucaju proporcionalna broju
pomeranja potrebnih za slaganje slagalice.
Neke od realnih primena algoritama pretrage su nalazenje najkracih puteva,
igranje igara, navigacija robota, automatsko nalazenje redosleda sklapanja u in
dustriji, dizajn proteina sa odredenim
trazenim svojstvima, resavanje logistickih
problema i slicno.

5.1

Kvalitet algoritama pretrage

Kao i kod drugih vrsta algoritama i kod algoritama pretrage potrebno je poznavati njihova svojstva kako bi se lakse izvrsio izbor pogodnog algoritma za

106

5 Resavanje problema kao pretraga

dati problem. Osnovni aspekti koji se smatraju bitnim za algoritme pretrage su


sledeci:
Kompletnost je svojstvo koje garantuje da c e algoritam naci nekakvo resenje
problema ako ono postoji. Ovo svojstvo je ocito pozeljno, ali se u nekim
slucajevima izostavlja. Naime, u slucaju vrlo teskih problema c esto je
moguce formulisati heuristike koje ne garantuju nalazenje resenja, ali u
visokom procentu slucajeva nalaze dobra resenja mnogo brze nego egzaktni algoritmi.
Optimalnost je svojstvo koje garantuje nalazenje resenja sa najmanjom cenom.
Kao i u prethodnom slucaju c esto je moguce da se uz izostavljanje ovog
resenja bliska optimalnom u znacajno kracem vremenu.
uslova nadu
Vremenska slozenost govori koliko c e vremena biti potrebno za izvrsavanje
procesa pretrage i kao koncept je prisutna i u analizi drugih vrsta algoritama.
Prostorna slozenost govori koliko je memorije potrebno za izvrsavanje pre se definise i za druge vrste algoritama.
trage. Takode,

5.2

Neinformisana i informisana pretraga

Prilikom resavanja nekog problema, moguci su razliciti stepni poznavanja detalja samog problema. U primeru nalazenja puta od grada do grada, moguce
je na primer:
gradova,
1. potpuno nepoznavanje rastojanja izmedu
susednih gradova koja se na primer
2. poznvanje rastojanja samo izmedu
mogu procitati sa putokaza,
3. dodatno poznavanje vazdusnih rastojanja od svih gradova do ciljnog
grada koje se moze izmeriti lenjirom na putnoj karti,
svih, ne nuzno susednih gradova pri
4. tacno poznavanje rastojanja izmedu
kretanju putevima koja se mogu izmeriti na karti korisc enjem kurvimetra.
Prema dostupnosti informacija koje mogu pomoci u nalazenju ciljnog stanja
u toku pretrage, problemi pretrage se dele na probleme informisane i neinformisane
pretrage. U skladu sa time moguce je formulisati i algoritme koji mogu da
iskoriste dostupne informacije, pa stoga i algoritme delimo na algoritme informisane i neinformisane pretrage.
U slucaju datog primera, prvi slucaj ocigledno predstavlja problem neinformisane pretrage. U drugom slucaju je prisutno vise informacija o problemu,

medutim
ta informacija nam ne omogucava lakse nalazenje cilja, vec samo
nalazenje najblizeg susednog grada s to ne mora ni sugerisati brze dolazenje
do cilja. Stoga i drugi slucaj predstavlja problem neinformisane pretrage. Poz gradova se moze iskoristiti za navodenje

navanje vazdusnih rastojanja izmedu


pretrage. Na primer, pri izboru sledeceg grada, moze se izabrati grad za koji
njega i ciljnog
je zbir direktnog puta do njega i vazdusnog rastojanja izmedu

5.2 Neinformisana i informisana pretraga

107

grada najmanji. Ovakva heuristika ne mora biti dobra. Na primer, na liniji


izabranog grada i ciljnog grada se moze nalaziti dugacak neprohoizmedu
dan planinski venac tako da je informacija o vazdusnom rastojanju beskorisna.

Medutim,
c esto se ovakvo parcijalno znanje moze upotrebiti za ubrzavanje pretrage. Stoga ovaj slucaj spada u probleme informisane pretrage. U c etvrtom
slucaju je moguce uvek napraviti optimalan izbor. Za sledeci grad treba izabrati onaj za koji je zbir direktnog rastojanja do njega i najkraceg rastojanja
od njega do ciljnog grada minimalan. Ovo je ocigledno problem informisane
pretrage.
U slucaju neinformisane pretrage, moguce je koristiti standardne algoritme
za pretragu u s irinu ili u dubinu, dok se u slucaju informisane pretrage mogu
napraviti specijalizovani algoritmi u zavisnosti od vrste informacija koje su
na raspolaganju. Za problem nalavzenja najkracih puteva u grafu algoritam

A* moze na primer da iskoristi informaciju o euklidskom rastojanju izmedu


c vorova u grafu. U slucaju problema igranja s aha, egzaktan algoritam pretrage
MINIMAX se moze kombinovati sa heuristickom procenom stanja. Na primer
korisc enjem informacije o figurama, mogucnosti mata u 3 poteza i slicno.

108

5 Resavanje problema kao pretraga

Glava 6

Pohlepna pretraga
Pohlepnim algoritmom se naziva svaki algoritam koji tezi neposrednom povecanju
vrednosti neke ciljne funkcije, odnosno algoritam koji bira lokalno optimalne
akcije. Lokalna optimalnost znaci da algoritam ne moze da proceni dugorocni
kvalitet izabranih akcija, odnosno koliko te akcije doprinose ostvarenju konacnog
cilja, vec da bira akciju koja se na osnovu znanja dostupnog u trentuku izb raspolozivim akcijama. Ovakvi algoritmi su
ora procenjuje kao najbolja medu
c esto znacajno jednostavniji za formulaciju od algoritama koji garantuju opti c esto daju prakticno prihvatjiva resenja,
malnost procesa resavanja. Takode,
iako c esto ne optimalna.
Pohlepni algoritmi se mogu koristiti i za resavanje opstijih problema od
pretrage problema matematicke optimizacije. Ovi problemi pretpostavljaju
postojanje funkcije cilja i skupa dopustivih resenja. U zavisnosti od formulacije
problema, potrebno je naci dopustivo resenje sa minimalnom ili maksimalnom
vrednosc u funkcije cilja. Takvo resenje se naziva optimalnim resenjem problema
optimizacije. Ovakvi problemi ne moraju pretpostavljati postojanje stanja, akcija i drugih elemenata problema pretrage. U kontekstu matematicke optimizacije, pohlepni algoritmi se obicno nazivaju algoritmima penjanja uzbrdo
posto biraju susedna dopustiva resenja koja imaju najvise vrednosti funkcije
cilja.
gradova, pohlepni informisani
Primer 6.1 U primeru nalazenja najkracih puteva izmedu
algoritam bi mogao za suseda da bira grad za koji je zbir direktnog rastojanja do grada
i vazdusnog rastojanja do cilja minimalan. Ovakav algoritam u svakom koraku bira
optimalnu akciju s obzirom na raspolozivo znanje u vreme izbora akcije, pa je stoga
pohlepan. U slucaju da vazdusna rastojanja nisu poznata, vec samo rastojanja do
susednih gradova, pohlepni algoritam bi uvek birao najblizi susedni grad u nadi da c e
se na taj nacin naci najkraca putanja do cilja.
Primer 6.2 Problem trgovackog putnika podrazumeva da je dat graf u kome su ivicama grafa pridruzene njihove duzine. Cilj je nalaci najkracu putanju koja kroz sve
c vorove grafa prolazi tacno jednom. Pohlepni algoritam bi mogao biti formulisan tako
da u svakom koraku bira ivicu najkrace duzine. Iako je ovo popularan pristup konstruisanju putanja i dobro se ponasa za neke specificne probleme, u opstem slucaju
je dokazano da za svaki broj c vorova n, postoji instanca
predstavlja los pristup. Cak
problema trgovackog putnika sa n c vorova za koju ovako formulisan pohlepni algoritam
bira jedinstvenu najgoru putanju.

110

6 Pohlepna pretraga

Pohlepna pretraga se obicno ponasa dobro u slucaju problema kod kojih


kvalitet odluke u nekom stanju pretrage ne zavisi od buducih odluka ili ako
se dati problem moze aproksimirati problemom za koji ovo vazi. Ako navedeno svojstvo vazi, lokalno optimalna odluka je stvarno optimalna. Navedeno
svojstvo se moze i drugacije formulisati pohlepna pretraga c e se ponasati
dobro ukoliko se optimalno resenje problema gradi neposredno od optimalnih
resenja podproblema.
Osnovni kvaliteti pohlepne pretrage su jednostavnost formulisanja i s to
c esto moze dati prakticno prihvatljiva resenja. S druge strane, mane ovakvog
pristupa su sledece:
Opasnost od lokalnih maksimuma: Lokalni mksimumi su tacke u prostoru
pretrage c iji susedi imaju manju vrednost funkcije cilja od nje, ali je njena
vrednost manja od vrednosti globalnog maksimuma. Algoritmim penjanja uzbrdo nemaju nacina da primete da se nalaze u lokalnom maksimumu.
Grebeni: Grebeni predstavljaju nizove nadovezanih lokalnih maksimuma kod
kojih najstrmije penjanje uzbrdo vodi ka jednom lokalnom maksimumu
umesto u pravcu rasta niza lokalnih maksimuma. Ovakva situacija se

moze razresiti kretanjem u stranu umesto najstrmije uzbrdo, medutim,


trenutak u kome je takvo kretanje potrebno primeniti se ne moze lako
prepoznati.
Platoi: Platoi predstavljaju oblasti prostora pretrage u kome funkcija cilja ima
konstantnu vrednost. Zbog toga je nemoguce odrediti koji potez je na izlaz sa
jbolji, a samim tim se moze desiti da pohlepna pretraga ne nade
platoa.
Postoje razne varijacije osnovnog penjanja uzbrdo koje pokusavaju da se izbore sa navedenim problemima. Takvo je na primer stohasticko penjanje uzbrdo
koje ne bira uvek susedno stanje sa najvecom vrednosc u, ali verovatnoca da

odredeno
stanje bude izabrano je utoliko veca s to je veca njegova vrednost.
Druga varijacija je penjanje uzbrdo sa slucajnim restartovanjem kod koga se posle
nalazenja lokalnog maksimuma proces pretrage ponovo pokrece iz slucajno
generisanog polaznog stanja. Ovaj metod omogucava nalazenje globalnog maksimuma sa verovatnocom koja se priblizava 1 sa povecanjem broja pokusaja.

6.1

Penjanje uzbrdo u slucaju diferencijabilne funkcije


cilja

Metode pretrage i matematicke optimizacije c esto pokusavaju da iskoriste neku


zakonitost u strukturi prostora pretrage, odnosno prostora dupustivih resenja.
Tako, penjanje uzbrdo u slucaju diferencijabilne funkcije cilja pociva na korisc enju
koncepta gradijenta. Ukoliko je data diferencijabilna funkcija cilja f : Rn R
gradijent se definise kao vektor parcijalnih izvoda te funkcije:

f =

f
f f
,
,...,
x1 x2
xn

6.1 Penjanje uzbrdo u slucaju diferencijabilne funkcije cilja

111

Gradijent izracunat u odredenoj


tacki A Rn predstavlja vektor u prosn
toru R u c ijem pravcu funkcija f najstrmije raste u okolini tacke A. Stoga
se kretanjem u ovom pravcu moze doci do lokalnog maksimuma. Ovaj princip je osnova algoritma najstrmijeg uspona. Analogno, kretanjem u suprotnom
pravcu se dolazi do lokalnog minimuma.
Prethodne konstatacije omogucavaju skiciranje algoritma najstrmijeg uspona:
1. n 0.
2. Izabrati polaznu tacku x0 .
3. Izracunati gradijent funkcije f (xn ) u trenutnoj tacki.
4. Izvrsiti kretanje u pravcu gradijenta do sledece tacke xn+1 .
5. n n + 1.
6. Ukoliko xn nije maksimum, nastaviti od koraka 3.
7. Vratiti xn kao resenje.
Da bi se dati algoritam u potpunosti definisao potrebno je precizirati neke
njegove korake. U koraku 2, polazna tacka se c esto bira slucajnim izborom.
Poznavanje gradijenta i kretanje u njegovom pravcu u prkasi ipak ne garantuje
nalazenje maksimuma, tako da je u koraku 4 u zavisnosti od duzine koraka
moguce preci preko maksimuma, nastaviti dalje i time ga promasiti. Stoga je
u svakom koraku potrebno odrediti konstantu n takvu da se umesto samog
gradijenta koristi vektor n f (xn ). Dobra aproksimacija ove konstante je:
n =

f (xn )f (xn )>


f (xn )H(xn )f (xn )>

pri c emu je H matrica parcijalnih izvoda drugog reda funkcije f :


 2

f (xn )
H(xn ) =
xi xj
Ocito, ova aproksimacija za n se moze koristiti samo kada su parcijalni
izvodi drugog reda funkcije definisani.
U koraku 6 se u praksi ne moze ocekivati nalazenje same tacke lokalnog
maksimuma s obzirom da se ne radi o diskretnom prostoru. Zbog toga se pos vrednosti dva uzastopna
tupak c esto prekida u trenutku kada razlika izmedu
resenja ne prelazi neku unapred zadatu vrednost .
Sada se algoritam najstrmijeg uspona moze formulisati na sledeci nacin:
1. n 0.
2. Izabrati polaznu tacku x0 .
3. Izracunati gradijent funkcije f (xn ) u trenutnoj tacki.
4. izracunati vrednost n .
5. xn+1 = xn + n f (xn ).
6. n n + 1.

112

6 Pohlepna pretraga

7. Ukoliko vazi |f (xn+1 ) f (xn )| , nastaviti od koraka 3.


8. Vratiti xn kao resenje.
Primer 6.3 Pretpostavimo da je potrebno da se data hemijska reakcija izvrsi u sto
kracem vremenskom roku. Na brzinu hemijske reakcije uticu kolicine dva katalizatora oznacene sa k1 i k2 . Poznato je da je brzina date reakcije obrnuto proporcionalna
velicini (k1 1)2 + k24 . Stoga je potrebno naci maksimum funkcije
f (k1 , k2 ) = (k1 1)2 k24
Odoka se vidi da se taj maksimum postize u tacki (1, 0), ali je primer dobar za
ilustraciju metode najstrmijeg uspona.
Za vrednost  moze se uzeti na primer broj 0.01. Gradijent f se lako moze
izracunati:
f (k1 , k2 ) = (2k1 + 2, 4k23 )
Matrica H parcijalnih izvoda drugog reda je


2
0
H(k1 , k2 ) =
0 12k22
Za polaznu tacku se moze uzeti na primer tacka x0 = (0.5, 0.5). Vrednost gradijenta u toj tacki je f (x0 ) = (1, 0.5). Zato je




1
f (x0 ) f (x0 ) = 1 0.5
= 1.25
0.5
>

f (x0 )H(x0 )f (x0 ) =

0.5

2
0

0
3



1
0.5


= 2.75

5
0.45. Stoga, sledeca tacka u preOtuda je vrednost koeficijenta 0 jednaka 11
trazi je
x1 = (0.5, 0.5) + 0.45 (1, 0.5) = (0.95, 0.275)

Moze se primetiti da su se vrednosti k1 i k2 priblizile odgovarajucim vrednostima u


resenju. Razlika vrednosti novog i starog resenja je
0.0025
|f (x1 ) f (x0 )| | 0.3125 (0.0082)| 0.3
sto je vece od zadatog broja , pa se nastavlja sa sledecom iteracijom. Dalje iteracije se
izvode po istom principu.
Kako data funkcija ima samo jedan maksimum, optimalna vrednost dobijena lokalnom
otimizacijom je i globalni maksimum, pa je u ovom primeru metoda najstrmijeg uspona
adekvatna.
Kao s to je receno, problem nalazenja maksimuma u prethodnom primeru

je lak. Resenje je ocigledno i problem se lako resava i analiticki. Medutim,


ovo
nije uvek slucaj. Funkcije c iji je maksimum, odnosno minimum potrebno naci
mogu biti previse komplikovane da bi se resenje trazilo analiticki i u takvim
slucajevima je korisc enje algoritma najstrmijeg uspona vrlo korisno. Treba
imati u vidu da algoritam ne garantuje nalazenje globalnog maksimuma. U
slucaju da funkcija ima veci broj maksimuma, u zavisnosti od izabrane polazne

tacke resenja koja algoritam daje mogu biti razlicita i pronadeni


maksimum
moze biti samo lokalni.

Glava 7

Odredivanje
puteva u grafu

U mnogi problemima vestacke inteligencije potrebno je obici neki graf ili odred dva c vora grafa.
iti najkraci put izmedu
Opsti problem nalazenja puta (eng. path finding) moze se opisati na sledeci
nekih od njih; ovim
nacin: dat je graf svojim c vorovima i granama izmedu
dva data
granama pridruzene su nenegativne cene; zadatak je naci put izmedu
c vora (polazni c vor i ciljni c vor) takvu da je zbir svih cena svih grana na stazi
minimalan. Postoji nekoliko algoritama za resavanje ovog problema [?, ?]. Oni
imaju mnoge primene, ukljucujuci primene u planiranju obilazaka i putovanja,
dizajniranju c ipova, rutiranju u racunarskim mrezama, navigaciji robota, inudstriji igara, itd. Algoritam A* pretraga ili krace samo algoritam A* je jedan,
verovatno najpopularniji, od algoritama iz te familije. On je uopstenje Dejk
strinog algoritma iste namene. Cesto
se koriste i algoritam Belmana i Forda,
kao i algoritam Flojda i Varsala.

7.1

Obilazak grafa u dubinu i s irinu

Oblizak grafa u dubinu (eng. depth-first search DFS) i u s irinu (eng. breadthfirst search BFS) su ,,neinformisane (eng. uninformed) metode pretrage
koje ispituju sve c vorove u grafu trazeci resenje (na primer, neki specifican
c vor). Oni sistematski pretrazuju ceo graf, bez ikakve heuristike, tj. bez ikakvog

specificnog navodenja
ci najpre polazni c vor i zatim njeDFS je pretraga koja napreduje obraduju
na trazeni c vor i sve dok je ti potomci
gove potomke i sve dok se ne naide
postoje. Ukoliko vise nema potomaka koje treba ispitati, pretraga se vraca unazad do c vora c iji svi potomci nisu ispitani i nastavlja dalje. U nerekurzivnoj
verziji, c vorovi se obicno c uvaju u LIFO listi. Da ne bi doslo do beskonacne
petlje, potrebno je c uvati informaciju o c vorovima koji su vec poseceni. Slika
7.1 ilustruje obilazak grafa primenom algoritma DFS.
BFS ,,otvara sve c vorove koji su susedni tekucem c voru i kasnije, otvara,
redom, sve njihove potomke. U traganju za c vorom koji zadovoljava neki

onaj na najmanjem rastojanju od polaznog c vora. Cvorovi


uslov, bice pronaden
koji se razmatraju obicno se c uvaju u redu, tj. u FIFO listi. I u ovom pristupu, da
ne bi doslo do beskonacne petlje, potrebno je c uvati informaciju o c vorovima
koji su vec poseceni. Slika 7.2 ilustruje obilazak grafa primenom algoritma BFS.

114

7 Odredivanje
puteva u grafu

Figure 7.1: Primer obilaska grafa primenom algoritma DFS (oznake c vorova
ukazuju na poredak obilaska c vova)
1

Figure 7.2: Primer obilaska grafa primenom algoritma BFS (oznake c vorova
ukazuju na poredak obilaska c vova)
Prostorna slozenost pretrage DFS je manja nego pretrage BFS. Dodatno, ona
je pogodnija za usmeravanje nekom heuristikom koja bira c vorove koji vise
obecavaju. Vremenska slozenost oba algoritma je propocinalna zbiru c vorova i
grana grafa koji se pretrazuje: (O(|V | + |E|)).

7.2

Dejkstrin algoritam

Dejksrin algoritam, koji je razvio holandski informaticar Edzger Dejkstra 1959. godine je algoritam za pretragu grafa koji nalazi najkrace puteve u grafu za nenegativnim cenama koje su pridruzene granama. Algoritam se moze koristiti za

odredivanje
najkraceg puta od datog polaznog c vora do datog ciljnog c vora,

ali i za odredivanje
najkracih puteva od svih c vorova grafa do datog ciljnog
c vora.
Ideja Dejkstrinog algoritma moze se ilustrovati na sledeci nacin. Pretpostavimo
da je niz c vorova vezan nitima (i da cenom puta od jednog do drugog c vora
smatramo duzinu niti koja ih vezuje). Uzmimo c vor koji je izabran za polazni
i pocnimo da podizemo celu konfiguraciju (tako da nikoje dve niti nisu upletene). Postepeno se c vorovi, jedan po jedan, odvajaju od tla. Najmanje rasto nekog od tih c vorova i polaznog c vora je upravo direktno rastojanje izmedu

7.3 A*

115

njih. Opsta ideja algoritma je slicna: postoje c vorovi koji su vec


janje izmedu
podignuti sa tla i oni koji su jos uvek na tlu. Za one koji su podignuti sa tla
vec znamo najkrace puteve od polaznog c vora. U svakom koraku mozemo jos
jedan c vor ,,podici sa tla i izracunati njegovo najmanje rastojanje od polaznog
c vora (ramatrajuci samo one c vorove koji su mu susedni i koji su vec iznad tla).
Ukoliko na kraju ovog postupa na tlu ostanu jos neki c vorovi, to znaci da do
njih ne postoji put od polaznog c vora.
Dejkstrin algoritam je dat na slici 7.3. U algoritmu, komanda
u := izaberi\_najblizi\_cvor\_cvoru\_source($Q$)
traga za c vorom u u skupu c vorova Q (to su c vorovi koji su ,,na tlu) takvim da
je vrednost dist[u] (tekuce najmanje rastojanje od polaznog c vora) najmanja.
Taj c vor se tada brise iz skupa Q. Ukoliko je to ciljni c vor, onda se konstruise
trazeni put od polaznog c vora (koristeci informaciju o roditeljskim c vorovima).
Inace, za svaki c vor v iz Q koji je susedan c voru u proverava se da li se (preko
u) moze popraviti tekuce najmanje rastojanje od polaznog c vora i, ako moze,
c vor u se postavlja za roditelja c vora v.
Primer 7.1 Sledeca tabela prikazuje efekat primene Dejkstrinog algoritma na graf ilustrovan na slici 7.4: c vor A je polazni, a c vor F ciljni c vor.
korak
1
2
3
4
5
6

3
3
3
3
3

2
2
2
2
2

6
6
6
5
5

4
3
3
3
3

8
7
6

c vor u
A
C
B
E
D
F

U najjednostavnijoj implementaciji Dejkstrinog algoritma, skup Q se implementira kao obicna povezana lista ili niz. Slozenost takve implementacije je
O(|V |2 +|E|) = O(|V |2 ), gde je |E| broj grana, a |V | broj c vorova grafa. Za retke
grafove (koji imaju mnogo manje grana od |V |2 ), Dejkstrin algoritam se moze
implementirati efikasnije. Na primer, varijanta koja koristi binarni min-hip1 za

odredivanje
tekuceg najblizeg c vora ima slozenost O((|E| + |V |) log |V |).

7.3

A*

dva c vora grafa je jedan


Algoritam A* za odredivanje
najkraceg puta izmedu
od fundamentalnih i najpopularnijih algoritama vestacke inteligencije. Zasnovan je na korisc enju heuristika, ali ipak ima dobra svojstva kao s to su potpunost i optimalnost.
Prvu verziju algoritma A* su razvili Har, Nilsson i Raphael 1968. godine [?],

a u narednim godinama uvedeno je nekoliko unapredenja


[?, ?].

Korisc enje algoritma A* nije uvek jednostavno. Cesto


je algoritam potrebno
prilagoditi specificnom problemu a uvek je, u kontekstu aplikacija koje rade u
realnom vremenu, vazno imati u vidu vremensku slozenost, prostornu slozenost,
1 Min-hip je specifi
cna stablolika struktura koja zadovoljava hip-svojstvo: ako je B potomak
c vora A, onda je vrednost pridruzena c voru A manja od vrednosti pridruzene c voru B. U skladu
sa tim, najmanji element je uvek koren stabla. Max-hip se definise analogno.

116

7 Odredivanje
puteva u grafu

Algoritam: Dejkstrin algoritam


Ulaz: Graf G, polazni cvor source i ciljni cvor target
Izlaz: najkraci put od cvora source do cvora target u grafu G (ako postoji
put izmeu ova dva cvora
1. Za svaki cvor v grafa G:
rastojanje[v] :=
prethodni[v] := nedefinisano
2. rastojanje[source] := 0
3. Q := G
4. Dok skup Q nije prazan:
u := izaberi najblizi cvor cvoru source(Q)
Obrisi u iz Q
Ako je (u = target)
konstruisi put S na sledeci nacin i prijavi uspeh
S := prazan niz
u := target
Dok god je definisano prethodni[u]
dodaj u na pocetak S
u := prethodni[u]
Za svaki sused v cvora u takav da v koji pripada Q:
alt := rastojanje[u] + cena(u, v)
Ako je alt < dist[v]
rastojanje[v] := alt
prethodni[v] := u
5. prijavi neuspeh
Figure 7.3: Dejkstrin algoritam
upravljanje memorijom i razlicite dodatne faktore. Neka od dodatnih svojstava
algoritma zahtevaju dodatno matematicko znanje i izracunavanja, specificne
implementacione tehnike i strukture. Svi ti moduli treba da budu uklopljeni u
kompaktan i efikasan sistem za nalazenje puta. Postoji mnogo varijanti algo
ritma A* prilagodenih
specificnim problemima [?].
Algoritam A* je uopstenje Dejkstrinog algoritma i obicno smanjuje broj
c vorova grafa koje treba ispitati. To smanjivanje je zasnovano na korisc enju
heuristike koja procenjuje donju granicu daljine do ciljnog c vora. Kao i u Dejkstrinom algoritmu, c vorove koji tek treba obraditi c uvaju se u redu, sortiranom
prema nekom kriterijumu. Sve vreme se odrzavaju lista otvorenih c vorova

c vorova koji su vec poseceni ali nisu obradeni


svi njihovi susedi i zatvorenih

c vorova c vorova koji su poseceni i kojima su obradeni


svi njihovi susedi.

7.3 A*

117
3

A
2

B
5

6
4

D
2

1
E

Figure 7.4: Primer primene Dejkstrinog algoritma

Kljucna razlika je u tome s to Dejkstrin algoritam (kao ,,neinformisani algoritam) uzima u obzir samo cenu od polaznog do tekuceg c vora, dok A* (kao
,,informisani algoritam) koristi funkciju evaluacije f nad c vorovima grafa,
definisanu na sledeci nacin:
f (n) = g(n) + h(n),
gde je g(n) cena puta od polaznog c vora do c vora n, a h(n) je procenjena (heuristicka)
cena najjeftinijeg puta od c vora n do ciljnog c vora. Dok tragamo za najkracim
putem, uvek znamo tekucu minimalnu cenu od polaznog c vora do c vora n
(tj. tekucu vrednost za g(n)), ali se vrednost h(n) moze samo procenjivati. Da
bi se obezbedila optimalnost A* pretrage, funkcija h mora da bude konzistentna
(eng. consistent), tj. da za bilo koja dva susedna c vora u i v vazi:
h(u) c(u, v) + h(v)
gde je c(u, v) cena pridruzena grani (u, v). U nekim specijalnim slucajevima
dovoljno je da funkcija h bude dopustiva (eng. admissible), tj. da nikada ne precenjuje cenu stizanja do cilja. Svojstvo konzistentnosti ima za posledicu svojstvo dopustivosti. Dodatno, dopustive funkcije su c esto i konzistentne.
Opis algoritma A* dat je na slici 7.5.
Sa ravnomernom pretragom (sa funkcijom h = 0), skup otvorenih c vorova
c e se s iriti ravnomerno, u ,,koncentricnim krugovima oko polaznog c vora. S
druge strane, sa preciznijom heuristikom, skup otvorenih c vorova c e se s iriti
ka ciljnom c voru i bice bolje usmerena kao optimalnom putu.

7.3.1

Primer upotrebe algoritma A*

U sledecem grafu zadatak je naci najkraci put od A do E. Pored c vorova grafa


zapisane su procenjene duzine puta do c vora E, tj. vrednosti funkcije h.

118

7 Odredivanje
puteva u grafu

Algoritam: Algoritam A*
Ulaz: Graf G, polazni cvor source i ciljni cvor target
Izlaz: najkraci put od cvora source do cvora target u grafu G (ako postoji
put izmeu ova dva cvora
1. Inicijalno je zatvorena lista prazna.
2. Dodaj polazni cvor (zajedno sa procenjenom cenom do ciljnog cvora,
koja je odreena funkcijom h) u otvorenu listu cvorova koje je
potrebno razmotriti.
3. Izvrsavaj sledecu petlju dok god ima elemenata u otvorenoj listi:
Izaberi cvor n (zvacemo ga tekuci cvor) iz otvorene liste koji ima
najmanju vrednost f (n).
Ako je tekuci cvor ciljni cvor, izvesti o uspehu, konstruisi put od
polaznog do ciljnog cvora (iduci unazad od ciljnog cvora) i
zaustavi izvrsavanje petlje.
Ispitaj sve cvorove koji su direktno dostupni iz tekuceg cvora i pri
tome ne pripadaju zatvorenoj listi. Za svaki takav cvor m uradi
sledece:
Ako on nije u otvorenoj listi, dodaj ga u otvorenu listu.
Oznaci tekuci cvor kao roditelja ovog cvora (sto je vazno
za konstruisanje staze na kraju). Izracunaj i zapamti vrednosti f (m), g(m) i h(m) za cvor. (Primetimo da se vrednosti g(m) mogu izracunati na inkrementalan i efikasan
nacin: vrednost g(m) jednaka je zbiru vrednosti funkcije
g za roditelj cvora m i ceni puta od roditelja do m.)
Ako je on vec u otvorenoj listi, proveri da li je odgovarajuci
put od polaznog cvora do m bolji od tekuceg puta (preko
cvora n). Za tu proveru koristi se vrednost g(m). Manja
vrednost g znaci da je taj put bolji. Ako je tekuci put bolji,
promeni informaciju o roditelju cvora m na cvor n i azuriraj
vrednosti g(m) i f (m).
Izbrisi tekuci cvor iz otvorene liste i dodaj ga u zatvorenu listu
cvorova (on ne treba da ponovo bude ispitivan).
4. Na kraju, ako je petlja zavrsena a da nije prijavljen uspeh (tada je
otvorena lista prazna), onda ne postoji trazeni put. Inace, put je
pronaen i on se konstruise od dete-roditelj veza (iduci unazad od
ciljnog cvora).
Figure 7.5: Algoritam A*
5

4
3

5
4

1
3

4
3

7.3 A*

119

Sledeca tabela ilustruje primenu algoritma A*.


tekuci
c vor
A
D
G
F
B
H
E

stanje otvorene lista


[cvor(roditelj,g+h)]
A(null 0+6)
D(A,6+5), G(A,5+6)
G(A,5+6), F(D,9+3), H(D,9+4), C(D,10+6)
F(D,9+3), H(D,9+4), C(D,10+6)
B(F,12+1), H(D,9+4), C(D,10+6)
H(D,9+4), E(B,14+0), C(D,10+6)
E(B,14+0), C(D,10+6)
C(D,10+6)

c vor(roditelj) dodaje
se u zatvorenu listu
A(-)
D(A)
G(A)
F(D)
B(F)
H(D)
E(B)

Na kraju primene algoritma, kada je c vor E postao tekuci c vor, konstruise


se trazeni put (koristeci informacije o roditeljma za c vorove iz zatvorene liste:
A D F B E. Ovo jeste put od c vora A do c vora E, ali nije najkraci
moguci: naime, kraci je sledeci put: A D H B E. Ovaj problem je nastao
zbog toga s to korise na funkcija h nije konzistentna (iako jeste dopustiva): vazi
h(H) > 2 + h(B).
Ukoliko se za isti zadatak koristi konzistenta funkcija, rezultat c e biti optimalan, najkraci moguci put od A do E. U narednom primeru se koristi funkcija
h c ija se vrednost razlikuje u odnosu na prethodnu samo za c vor H.
5

4
3

5
4

7.3.2

1
3

A
D
G
H
B
F
E

tekuci
c vor

stanje otvorene lista


[cvor(roditelj,g+h)]
A(null 0+6)
D(A,6+5), G(A,5+6)
G(A,5+6), H(D,9+3), F(D,9+3), C(D,10+6)
H(D,9+3), F(D,9+3), C(D,10+6)
B(H,11+1), F(D,9+3), C(D,10+6)
F(D,9+3), E(B,13+0), C(D,10+6)
E(B,13+0), C(D,10+6)
C(D,10+6)

c vor(roditelj) dodaje
se u zatvorenu listu
A(-)
D(A)
G(A)
H(D)
B(H)
F(D)
E(B)

Specijalni slucajevi

Obilasci grafa u dubinu i s irinu mogu se smatrati specijalnim slucajevima algoritma A*.

120

7 Odredivanje
puteva u grafu

Za obilazak grafa u dubinu, moze se koristiti algoritam A* sa g = 0 i


pogodno odabranom funkcijom h. Na primer, neka je brojac C inicijalizovan na

neku veoma veliku vrednost. Kad god obradujemo


neki c vor dodajemo vrednost C svim njegovim susedima. Nakon svake dodele smanjujemo vrednost
C za jedan. Time c e vrednost h(x) da bude veca za c vorove na koje se ranije
naislo. Primetimo da ovako definisana funkcija h nije nuzno dopustiva.
je
Dejkstrin algoritam, kao specijalni slucaj obilaska grafa u s irinu takode
specijalni slucaj algoritma A* gde je h(x) = 0 za svaki c vor x. Ovakva funkcija
h je dopustiva i konzistentna i garantuje nalazenje optimalnog puta.
Za g = 0, algoritam A* ponasa se u skladu sa najpre-najboljim, pohlep
nim pristupom koji najpre obraduje
c vorove sa najpovoljnijom heursitickom
vrednosc u. Ova varijanta algoritma nije nuzno optimalna.
Opsti algoritam A* c esto se primenjuje za nalazenje puta na uniformnoj
mrezi c vorova (koja odgovara, na primer, diskretizovanoj mapi). Tada on dobija specificnu formu. Pretpostavimo da je mreza pravilna (sacinjena od kvadrata)
i da ima pravougaonu formu. Dodatno, pretpostavljamo da neki c vorovi (tj. neki
kvadrati, neka polja mreze) nisu dostupni i da oni predstavljaju prepreke. Svako
polje je povezano sa svakim susednim poljem (osim sa preprekama), te ima
(izuzev polja na rubu) osam susednih polja (ali neka od njih mogu biti prepreke
i kao takve nedostupne). U ovoj varijanti problema, cene su pridruzene c vorovima
susednih c vorova). U ovom
(poljima), a ne granama grafa (vezama izmedu
kontekstu, funkcija g(n) je zbir svih cena polja duz puta od polaznog do polja
n. Na primer, svakom ,,horizontalnom ili ,,vertikalnom
pokretu moze se

pridruziti cena 1 a svakom dijagonalnom cena 1.414 2 (ovakva cena odgo sredista polja). Funkcija h moze se opisati
vara euklidskom rastojanju izmedu
dva c vora, a
na razlicite nacine. Jedan od njih je euklidsko rastojanje izmedu

jedan metod Menhetn u kojem se broji ukupan broj polja predenih


horizontalno
ili vertikalno da bi se doslo od polaznog polja do tekuceg polja2 . Primetimo da
ukoliko su dozvoljeni dijagonalni potezi, onda Menhetn metod potencijalno
precenjuje rastojanje do ciljnog c vora i zbog toga ne garantuje nalazenje na
jkraceg puta. No, ovaj metod u praksi obicno daje dobre rezultate i nadeni

putevi su obicno dovoljno dobri, c ak i ako nisu najkraci. Kada se odreduje


vrednost h, mogu da se ignorisu sve prepreke jer vrednost h(n) je procenjeno
a ne stvarno rastojanje.
Kada se algoritam A* primenjuje za nalazenje puta na uniformnoj mrezi,
on daje korake u osam mogucih smerova s to kasnije c esto dovodi do neprirodnih puteva sacinjenih od segmenata sa jednim od osam nagiba. Omeksavanje

(eng. smoothing) je tehnika za unapredivanje


takvih puteva tako da oni izgledaju prirodnije.

7.3.3

Primer upotrebe algoritma A* na uniformnoj mrezi

Naredni primer3 ilustruje primer upotrebe algoritma A* na uniformnoj mrezi.


Vrednosti funkcija f , g i h su napisane u svakom polju koje se ispituje: vrednost funkcije f je zapisana gore-levo, vrednost funkcije g dole-levo, a vrednost
funkcije h dole-desno. Vrednost funkcije f za svako polje je, kao i obicno, zbir
2 Metod se zove Menhetn, jer podse
ca na brojanje gradskih blokova od jednog mesta do drugog,
pri c emo nije moguce prolaziti blokove dijagonalno.
3 Ovaj primer preuzet je iz teksta Patrick Lester: A* Pathfinding for Beginners, 2005, http://www.
policyalmanac.org/games/aStarTutorial.htm.

7.3 A*

121

vrednosti funkcija g i h. Polazni c vor oznacen je zelenom, a ciljni crvenom bojom. Otvorena polja su oznacena tankim zelenim kvadratima, a zatvorena debljim crvenim kvadratima u okviru polja. Strelice ukazuju na tekuceg roditelja
polja.
Postupak je isti kao kod opsteg algoritma: u svakoj iteraciji bira se polje
iz otvorene liste sa najmanjom vrednosc u funkcije f . To, tekuce polje izbacujemo iz otvorene liste i dodajemo u zatvorenu listu. Proveravamo sve susedna
polja, ne razmatrajuci polja koja su u zatvorenoj listi ili nisu dostupna. Ako
susedno polje nije vec u otvorenoj listi, izracunavamo vrednosti funkcija g, h
i f za njega i oznacavamo da je tekuce polje njegov roditelj. Ako je susedno
polje vec u otvorenoj listi, proveravamo da li je put preko tekuceg polja bolji,
tj. proveravamo da li je vrednost funkcije g za to susedno polje manja ako se
do njega dolazi preko tekuceg polja. Ukoliko to nije tacno, ne preduzima se
nista, a ako jeste tekuce polje postaje novi roditelj tog susegnog polja i njemu
se pridruzuju nove vrednosti g i f .
Pretraga krece od polaznog polja jer je na pocetku samo ono u otvorenoj
listi. U poljima levo, desno, gore i dole od polaznog polja, vrednost funkcije g
je 10. U dijagonalnim poljima vrednost funkcije g je 14. Ove vrednosti odgovaraju pribliznom euklidskom rastojanju (pomnozenom sa 10 i zaokruzenom).
Vrednosti funkcije h se izracunavaju na osnovu Menhetn rastojanja (pomnozenog
sa 10) do ciljnog polja i zanemarujuci prepreku.

f
g

h
74

60

54

14 60 10 50 14 40
60

40

10 50
74

10 30
60

54

14 60 10 50 14 40

Polazno polje brise 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 vrednosc u funkcije f (40), to je polje neposredno desno od polaznog polja
i ono c e biti sledece tekuce polje.

122

7 Odredivanje
puteva u grafu

74

60

54

14 60 10 50 14 40
60

40

10 50
74

10 30
60

54

14 60 10 50 14 40

To polje izbacujemo iz otvorene liste, dodajemo ga u zatvorenu listu i onda


proveravamo njegova susedna polja (naravno, samo ona koja nisu u zatvorenoj
listi i nisu prepreke). Preostala c etiri polja su vec u otvorenoj listi, pa je potrebno
proveriti da li put preko tekuceg c vora popravlja njihove trenutne ocene. Razmotrimo, na primer, polje neposredno iznad tekuceg polja: vrednost funkcije
g za njega je 14. Ukoliko bi se do njega dolazilo preko tekuceg polja, vrednost funkcije g bila bi 20 (10 je cena od polaznog do tekuceg c vora i 10 je cena
prelaska od tekuceg polja). Dakle, na ovaj nacin se ne moze popraviti vrednost
funkcije g u polju iznad i ona ostaje nepromenjena.
Opisani postupak sprovodimo za sva c etiri susegna polja i, u ovom slucaju,

utvrdujemo
da ocena nijegnog ne moze da se popravi. Time je obrada tekuceg
polja zavrsena i trazimo novo tekuce polje. Od preostalih sedam polja u otvorenoj
listi biramo ono sa najmanjom vrednosc u funkcije f . Ukoliko postoji vise takvih
svejedno je koji izabrati. Neka je, na primer, izabrano polje neposredno ispod
prethodnog tekuceg polja.

74

60

54

14 60 10 50 14 40
60

40

10 50
74

10 30
60

54

14 60 10 50 14 40
88

74

28 60 24 50

Za tekuce polje nece se razmatrati susedna polja koja su u zatvorenoj listi i


koja su nedostupna (tj. prepreke). No, moze se (iako to nije nuzno i zavisi od
konkretne primene) zabraniti ispitivanje polja koje je desno-dole od tekuceg
polja. Naime, moze se smatrati da je dijagonalni potez od tekuceg do tog polja
nemoguc zbog prepreke koja se nalazi desno od tekuceg polja.

7.3 A*

123

Ukoliko prihvatimo takvo ogranicenje, ostaje jos tri susednih polja koja
treba razmotriti. Dva polja ispod tekuceg polja nisu u otvorenoj listi, pa ih
dodajemo zajedno sa izracunatim vrednostima funkcija i informacijom da im
je roditelj tekuce polje. Za polje levo od tekuceg polja se proverava da li se
moze smanjiti vrednost funkcije g (odgovor je ne) i time je zavrsena obrada
tekuceg polja.
Opisani postupak se nastavlja dok ciljno polje ne postane tekuce.
108

94

80

74

28 80 24 70 20 60 24 50
94

74

60

54

24 70 14 60 10 50 14 40
80

60

20 60 10 50
94

74

60

40

82

10 30

72 10 68

54

74

94

80

74

82
0 72 10

68

88

54 20 58 10 68 20

24 70 14 60 10 50 14 40
108

68

74

74

74

102

28 80 24 70 20 60 24 50 34 40 44 30 54 20 72 30
108

94

88

88

88

38 70 34 60 38 50 48 40 58 30

Primetimo da su se, nakon nekoliko iteracija, vrednosti funkcija g i f , kao


i roditeljsko polje promenili za polje dva polja ispod polaznog polja. Ranije je
ovo polje imalo vrednost funkcije g jednaku 28 (i vrednost funkcije f jednaku
88) i roditeljsko polje je bilo gore-desno. Kasnije, ovo isto polje ima vrednost
funkcije g jednaku 20 (i vrednost funkcije f jednaku 80), a roditeljsko polje

je gore. Ova izmena dogodila se u nekoj iteraciji u meduvremenu.


U ovom

slucaju ona ne utice na pronadeni


put, ali su ovakve izmene u opstem slucaju
veoma c este i uticu na konacno resenje.
Kada se tokom pretrage ciljno polje postane tekuce, trazeni put od polaznog c vora se konstruise jednostavno. Krece se od ciljnog c vora i prelazi
do polaznog c vora. Ovako odreden
niz polja
na roditeljski sve dok se ne dode
u suporotnom poretku daje trazeni put od polaznog do ciljnog polja.
108

94

80

74

28 80 24 70 20 60 24 50
94

74

60

54

24 70 14 60 10 50 14 40
80

60

20 60 10 50
94

74

60

40

82

10 30

72 10 68

54

74

24 70 14 60 10 50 14 40
108

94

80

74

68

82
0 72 10

68

88

54 20 58 10 68 20
74

74

74

102

28 80 24 70 20 60 24 50 34 40 44 30 54 20 72 30
108

94

88

88

88

38 70 34 60 38 50 48 40 58 30

124

7.3.4

7 Odredivanje
puteva u grafu

Svojstva algoritma A*

Moze se dokazati da je algoritam A* potpun i da je, pod odredenim


uslovima
optimalan [?]:
dva c vor, algoritam A* c e naci jedan takav
Potpunost: Ako postoji put izmedu
(naravno, ukoliko je raspolozivo dovoljno vreme i memorijski prostor).

Cak
i ako je heuristicka funkcija veoma losa, ciljni c vor c e biti dostignut
u konacnom broju koraka.
dva data c vora, bice izabran najkraci
Optimalnost: Od svih puteva izmedu
put, ukoliko je funkcija heuristike h konzistentna. Ukoliko funkcija h nije
dopustiva, ali ne precenjuje stvarno cenu za vise od d, onda je cena puta
koji c e pronaci algoritam A* skuplji od najkraceg za ne vise od d.
Ukoliko se ne koristi lista zatvorenih c vorova (tj. ukoliko se razmatraju i
susedni c vorovi koji su vec bili tekuci), da bi algoritam bio optimalan dovoljno je da funkcije h bude dopustiva (nije neophodno da bude konzistentna).
Ukoliko se koristi nad stablima, da bi algoritam bio optimalan dovoljno
je da funkcije h bude nenegativna i dopustiva.

Ukoliko funkcija f odgovara optimalnom putu, onda algoritam A* obraduje


sve c vorove za koje vazi f (n) < f (n); i neke c vorove n za koje vazi f (n) =
f (n).
Vremenska slozenost algoritma A* zavisi od heuristike. U najgorem slucaju,

broj obradenih
c vorova je eksponencijalan u odnosu na duzinu najkraceg puta,
ali je polinomijalan ako funkcija heuristike h zadovoljava sledeci uslov:
|h(x) h (x)| O(log h (x))
gde je h optimalna heuristika, tj. funkcija koja vraca tacnu cenu puta od c vora
x do ciljnog c vora. Drugim recima, greska funkcije h ne treba da raste brze od
logaritma idealne heuristike.

Prethodna dva tvrdenja


sugerisu da algoritam A* najbolje performanse (na
jmanji broj obradenih
c vorova) daje kada je funkcija heuristike bliska idealnoj funkciji heuristike. S druge strane, optimalnost je garantovana samo ako
funkcija heuristike nikada ne precenjuje stvarnu cenu puta. Zajedno, to govori
da dobra funkcija heuristke mora da bude veoma pazljivo konstruisana, tako
da bude s to bliza idealnoj funkciji, ali da je nikada ne premasuje.
Za vise detalja o svojstvima algoritma A* videti, na primer, [?].

7.3.5

Implementaciona pitanja

Algoritam A* se obicno primenjuje u aplikacijama koje rade u realnom vremenu, te je neohodno da je efikasno implementiran (korisc enjem pogodnih
struktura podataka, efikasnim upravljanjem memorijom, izbegavanjem mnozenja
i drugih skupih operacija itd.) U ovom poglavlju ukratko c emo prokomentarisati nekoliko nacina koji popravljaju efikasnost implementacije algoritma
A*.
Otvorena lista se c esto implementira kao binarni min-hip (kako bi se brzo
dolazilo do elementa sa najmanjom vrednosc u funkcije f ), a zatvorena lista kao

7.3 A*

125

hes tabela4 . Korisc enjem ovih fukcija operacije za dodavanje u i brisanje elemenata iz otvorene liste zahteva vreme O(log V ), gde je V broj c vorova grafa, a
dodavanje c vora u zatvorenu listu i proveravanje da li je vec u zatvorenoj listi
zahteva vreme O(1).
Zahtevi za memorijskim prostorom su za algoritam A* c esto jos veci problem nego vremenska slozenost. Ipak, ukoliko broj c vora grafa nije preveliki,
moze da bude isplativo i staticko alociranje potrebnog prostora (ili dinamicko
alociranje vecih blokova) koji onda moze da se koristi u savezu sa min-hip
strukturom, kako bi se izbegle c este i skupe operacije dinamickog alociranje (i
dealociranje) za pojedinacne c vorove. Dodatno, ako se algoritam primenjuje za
nalazenje puta na uniformnoj mapi dimenzija M M i ako se staticki rezervise
prostor za svaki c vor, pristupanje c vorovima je brze ako je M oblika 2m .
Potrebno je eliminisati racun sa decimalnim brojevima i koristiti samo celobrojnu aritmetiku. Ukoliko cene imaju decimelne vrednosti (npr. 1.414) potrebno
ih je pomnoziti sa, na primer, 1000 i koristiti samo zaokruzene vrednosti.
polaznog i
Najgori slucaj za algoritam A* je kada ne postoji put izmedu
ciljnog c vora. U tu svrhu moze se implementirati brza provera da li uopste
dva c vora: dva c vora su povezana ako i samo ako pripadaju
postoji put izmedu
povezanim delovima grafa. Ako se za svaki c vor moze lako proveriti kom delu
grafa pripada, onda je i navedena provera jednostavna.
Algoritam A* c esto se koristi kao komponenta s irih sistema koji treba da
rade u realnom vremenu. Zbog toga je obicno potrebno implementirati tako
da se na zahteva izvrsavanje u jednom neprekinutom vremenskom periodu,
kojih se izvrsavaju druge komponente
vec u vremenskim intervalima izmedu
sistema. Ovakav pristup se c esto zove deljenje vremena na kriske (eng. time slicing).

4 He
s tabela je struktura podataka koja povezuje vrednosti i kljuceve. Ona omogucava efikasno
nalazenje vrednosti na osnovu kljuca. To se postize preslikavanjem kljuca hes funkcijom u hes
vrednost koja sluzi kao indeks niza na kojem se nalazi odgovarajuca vrednost.

126

7 Odredivanje
puteva u grafu

Glava 8

Programiranje logickih igara


Programiranje logickih igara jedan je od klasicnih problema vestacke inteligencije i verovatno jedan od najatraktivnijih. Kako logicke igre zahtevaju odlucivanje
koje se moze smatrati inteligentnim, ova problematika je predmet interesovanja mnogih istrazivaca u oblasti vestacke inteligencije (i ne samo njih). Mozda
su zbog toga neki od najvecih dometa vestacke inteligencije upravo u ovom
domenu: racunari su vec pobedili svetske s ampione u igrama bekgemon i
dame, a nedavno je u brzopoteznoj igri sa racunarom, partiju s aha izgubio i
svetski s ampion Gari Kasparov. Uprkos tim dometima, jos uvek treba zadrzati
oprez prema programima za logicke igre, jer njihovi principi odlucivanja kvalitativno (po pitanjima apstrahovanja, analogija, pravljenja planova i sl.) jos
uvek nisu dovoljno blizu ljudskim. Mogucnosti resavanja ovih problema i
primene tih tehnika u drugim domenima upravo i motivisu dalja istrazivanja
vestacke inteligencije u ovom pravcu.
U ovoj glavi bice reci o razvoju strategija za automatsko igranje logickih
igara, a zatim i o samim strategijama. Nece biti upustanja u teorijske analize
pojedinacnih igara, vec c e biti opisani opsti pojmovi i algoritmi koji mogu da
se koriste za s irok spektar igara. Razmatracemo algoritme za igre dva igraca
bez nepoznate informacije, dakle igre kod kojih svaki igrac zna koje poteze
na raspolaganju ima protivnik (u ovu kategoriju ne spadaju, na primer, igre u
kojima igrac ne zna karte koje ima protivnik, nepoznati broj koji treba pogoditi
itd).
Za oznake u s ahu, koji c e biti jedna od igara najcesc e uzimanih za primer,
prihvaticemo engleske oznake. Tako c emo kralja oznacavati sa K (King), kraljicu
sa Q (Queen), topa sa R (Rook), lovca sa B (Bishop), konja sa N (Knight) i
pesaka sa P (Pawn). Shodno tome oznacavacemo i s ahovske zavrsnice (npr.
zavrsnicu kralj i kraljica protiv kralja i topa oznacavacemo sa KQKR).

8.1

Razvoj automatskog igranja logickih igara i osnovni koncepti

Istorija automatskog igranja logickih igara pocinje u devetnaestom veku: s panski


pronalazac Tores Kevedo (Torres y Quevedo) konstruisao je 1890. godine (i
koji je
prikazao 1900. na svetskoj izlozbi u Parizu) elektro-mehanicki uredaj

128

8 Programiranje logickih igara

igrao s ahovsku zavrsnicu KRK.


Opsta teorijska razmatranja zapoceo je Von Nojman (Von Neuman) postavljanjem opsteg problema (1928): Igraci S1 , S2 , . . . , Sn igraju datu igru . Kako
treba da igra igrac Sm da bi ostvario najbolji moguci rezultat? Odgovor na ovako
postavljeno pitanje tesko je dati za vecinu igara. Naravno, nije bilo tesko naslutiti da je za puno igara, c ak i ako on postoji, tesko ili gotovo nemoguce efektivno realizovati optimalni algoritam za proizvoljnu poziciju. U svakom slucaju,
ova problematika postala je predmet interesovanja mnogih matematicara i,
posebno, matematicke discipline teorija igara.
Moderna istorija programiranja igara pocinje klasicnim tekstom Programming a digital computer for playing Chess (Philosophical Magazine, 41) koji je

1950. godine objavio Klod Senon


(Claude Shannon). U tom tekstu Senon
je
opisao dve opste strategije za izbor poteza: strategije A i B tipa (danas c esto

oznacavane kao Senonova


A i B strategija):

A: Minimaks procedurom vrsi se pretrazivanje stabla igre sa odredenom


vrednosnom funkcijom i ocenjivanje legalnih poteza; bira se potez sa najboljom ocenom (videti poglavlje 8.4.3).
B: Potez se bira na osnovu trenutne pozijice/situacije u igri i na osnovu
odgovarajuce, unapred pripremljene tabele.

Koncept zasnovan na Senonovoj


A strategiji naziva se i gledanje unapred
ili gledanje u dubinu (eng. lookahead) pristupom, a ponegde i ,,sistematskim
pretrazivanjem, ,,dubinskim pretrazivanje ili ,,najpre najdublji. Ako bi se
korisc enjem ove strategije, minimaks algoritmom, pretrazivanje stabla igre vrsilo
do zavrsnih stanja igre, ispitivanjem svih mogucih tokova partije zaista bi bio
izabran najbolji legalan potez i taj izbor bi imao savrseno obrazlozenje u samom

primenjenom algoritmu. Medutim,


za vecinu igara nije prakticno moguce pre
traziti kompletno stablo igre. Cak
i pretrazivanje stabla igre do dubine od
svega nekoliko poteza u igrama sa prosecno deset ili dvadeset legalnih poteza,

zahteva ispitivanje miliona pozicija. Zbog toga, efikasna primena Senonove


A strategije svodi se na pretrazivanje stabla igre do relativno male dubine
algoritmima koji su ubrzani heuristikama1 (umesto najjednostavnijim minimaks algoritmom) i uz dobro osmisljenu, ali jednostavnu funkciju evaluacije za
ocenu nezavrsnih pozicija igre (umesto jednostavne ,,trovrednosne funkcije
za ocenu zavrsnih pozicija). Ovakvim pristupom gubi se svojstvo po kome
se pretrazivanjem dobija zaista najbolji potez, a obim pretrazivanja i razlicitih
izracunavanja ostaje, najcesc e, i dalje veoma velik. Opisani koncept c esto se
naziva konceptom ,,gruba sila plus jednostavna vrednosna funkcija (eng. bruteforce method plus simple evaluation function). Precizni opisi funkcije evaluacije, algoritama minimaks i srodnih dati su u poglavlju 8.4.

Senonovoj
strategiji B tipa odgovara koncept koji zovemo gledanje uvis ili
mozda adekvatnije trenutni pogled (eng. lookup). Ovaj pristup zahteva postojanje unapred pripremljene tabele sa dve kolone: u jednoj su moguce pozicije/situacije igre, a u drugoj optimalni potezi. Jedna od ,,klasicnih implemetacija
1 Heuristike su (aproksimativne) metode za usmeravanje i su
zavanje pretrage u problematici gde se javlja kombinatorna eksplozija. Kvalitet i mogucnosti njihove primene zavise od
specificnosti domena i njegove neprekidnosti (malim promenama problema treba da odgovaraju
male promene resenja).

8.2 Legalni potezi i stablo igre

129

ovog pristupa je program za igranje s ahovske zavrsnice KQKR koji je 1977.


godine napravio Kenet Tompson (Kenneth Thompson, Bell Telephone Laboratories), poznat kao tvorac operativnog sistema UNIX). Tabela koju je koristio
program sadrzavala je sve moguce pozicije za oba igraca i optimalne poteze za
sve te pozicije (pri c emu se pod optimalnim potezom za jaceg igraca (koji ima
kralja i kraljicu) smatra potez koji vodi pobedi u najmanjem broju poteza, a za
slabijeg, potez koji maksimalno odlaze poraz). Tabela je imala oko tri miliona
vrsta i program koji se na njoj zasnivao bio je, i u pozicijama koje su teorijski
izgubljene, prakticno nepobediv c ak i za vrhunske s ahiste. U ovoj strategiji,
znanje o igri (u ovom primeru, o s ahu) ne nalazi se niti u samom programu
koji igra, niti u tabeli, vec u programu koji je tabelu generisao. Opisani pristup
zahteva, pored adekvatne procedure za generisanje lookup tabele i veliku memoriju (za smestanje svih mogucih pozicija), ali u samom procesu igre program
zahteva najcesc e jako malo vremena za pronalazenje odgovarajuceg poteza.

Senonova
B strategija moze se primenjivati i u modifikonvanim varijantama
po kojima se, na primer, ne bi prepoznavale sve moguce pozicije, vec c itave
klase pozicija i na slican nacin nalazili optimalni potezi.

ci Senonove
Uporeduju
strategije A i B (odnosno pristupe lookahead i lookup)
vidimo da prva u samom procesu izbora poteza zahteva malo memorije i mnogo
izracunavanja (deep mentality), a druga, obrnuto, malo izracunavanja (shallow
mentality) i mnogo memorije. Na toj skali odnosa kolicine podataka koji se
ovih krakoriste i obima izracunavanja, c ovekov nacin zakljucivanja je izmedu
jnosti, a najcesc e se bitno razlikuje i po svojoj prirodi. Upravo priroda c ovekovog
nacina razmisljanja i z elja da se on oponasa, vodi ka novim pristupima u formalizaciji igara i njihovom programiranju. Neki od njih su koncept skupovi
pozicija kao klase ekvivalencije i koncept advice texts (tekstovi saveta). Po ovom kon
ceptu, za odredenu
klasu problema (odnosno klasu pozicija u igri) formulisu
se pravila (odnosno saveti) koja treba slediti i to obliku resenja (jednostavnijih) potproblema. Takav nacin reprezentacije znanja o problemu i o nacinima
njegovog resavanja moze biti jako blizak ljudskom i pripadati onom segmentu
skale obim izracunavanja kolicina korisc ene memorije koji odgovara c oveku.
U nastavku teksta, za izbor poteza u otvaranjima razmatrace se strategije

koje su u osnovi Senonovog


tipa B tipa, za sredisnicu strategije Senonovog
tipa A i za zavrsnicu pristupe tipa skupovi pozicija kao klase ekvivalencije
ili advice texts.

8.2

Legalni potezi i stablo igre

terLegalne poteze definisu pravila igre. Naglasimo da pravimo razliku izmedu


mina moguci potezi i legalni potezi: mogucim potezima nazivamo one koji su
legalni u bar jednoj regularnoj poziciji igre.
Pretpostavka je da se u svakom trenutku igre moze jednoznacno odred
iti skup legalnih poteza. Dodatno, pozeljno je da postoji (ciklicno) uredenje
poteza, pa se za svaki legalan potez moze jednoznacno odrediti sledeci legalan
potez.
Stablo igre je stablo u kojem c vorovima odgovaraju regularne pozicije u igri
(u skladu sa pravilima date igre), a granama legalni potezi (u smislu date igre).

Cvor
x stabla igre je neposredni predak c vora y ako se iz pozicije/cvora x nekim

130

8 Programiranje logickih igara

legalnim potezom dobija pozicija/cvor y (tada kazemo i da je c vor y neposredni


potomak c vora x). Za c vor x stabla kazemo da je predak c vora y ako postoji niz
c vorova stabla x = z0 , z1 , . . . , zn = y (n 1) takvih da je za svako i, 0
i n 1 c vor zi neposredni predak c vora zi+1 . Tada kazemo i da je c vor
y potomak c vora x. Legalnim potezom smatramo i prazan potez (u engleskom
jeziku c esto se koristi termin pass) u situaciji kada igrac koji je na redu nema na
raspolaganju legalnih poteza i preskace svoj red (takve situacije nisu regularne,
na primer, u s ahu, ali regularne, na primer, u igri reversi). U igri za dva igraca,
u ovako definisanom stablu igre, od korena do bilo kog lista naizmenicno se
smenjuju grane koje odgovaraju potezima prvog i drugog igraca. Slicno, ako
se radi o igri za vise igraca, od korena do bilo kog lista redom se smenjuju
grane koje odgovaraju potezima svih igraca. Na slici 8.1 ilustrovano je stablo
igre za igru iks-oks.

xo

x o

...

...

. ................ .

o
xox

o
x

...

...

...

o
o
x x

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

. ................ .

...

...

...

o
x x

...

...

...

...

...

...

...

...

oo
x x

... ... ... ...

zavrsno stanje
. ....... .

Figure 8.1: Stablo igre za igru iks-oks


Kompletnim stablom igre zovemo stablo u kojem je koren pocetna pozicija
igre (u skladu sa pravilima date igre), a listovi su zavrsne pozicije igre. Kompletno stablo igre ima onoliko listova koliko data igra ima razlicitih regularnih
tokova. Taj broj je kod vecine igara (cak i kod veoma jednostavnih) ogroman
i onemogucava kompletno pretrazivanje u cilju izbora optimalne strategije.
Zato se u programima za igre (najcece u sredisnici) za izbor poteza primenjuju algoritmi koji pretrazuju samo delove ovog stabla (videti poglavlje 8.4).
Za potpuni opis stabla u racunarskoj implementaciji nije potrebno c uvati informaciju i c vorovima/pozicijama i o granama/potezima. Naime, kako granama
odgovaraju legalni potezi i kako oni na osnovu tekuce pozicije jednoznacno

odreduju
sledecu poziciju, za opis stabla dovoljan je opis korena stabla (tj. polazne pozicije) i opis grana/legalnih poteza za odgovarajuce c vorove. Na taj
nacin implicitno moze biti opisano/generisano celo stablo, a zauzeti memorijski prostor daleko je manji nego kada bi se eksplicitno pamtile i pozicije koje
odgovaraju c vorovima stabla. Takav nacin opisa stabla moze da se koristi i za

8.3 Otvaranje i biblioteka partija

131

opis biblioteke partija, o c emu govori naredno poglavlje.

8.3

Otvaranje i biblioteka partija

Potreba za skladistenjem (i korisc enjem) opisa partija odredene


igre moze da
proistice bilo iz potrebe da se ti podaci koriste za izbor poteza u samom programu, bilo iz potrebe da se omoguci jednostavnija analiza pojedinih situacija/pozicija
ili c itavih partija.
Opisi partija mogu biti posebne, nezavisne celine, ali mogu biti i organizovani tako da korisniku omogucavaju laku uporednu analizu slicnih varijanti u
igri i da su istovremeno upotrebljivi za pomoc u automatskom izboru poteza.
Jedna od najpogodnijih reprezentacija biblioteke partija je u obliku stabla igre.
U takvoj reprezentaciji biblioteke partija, dovoljno je da odgovarajuce stablo
igre sadrzi informacije o potezima (koji odgovaraju granama stabla), jer su

njima odredene
i odgovarajuce pozicije (koje odgovaraju c vorovima stabla).
U programima za logicke igre c esto je izuzetno znacajna biblioteka otvaranja
(opening book) koja je zasnovana na ljudskom iskustvu i koja sadrzi informacije o poznatim i kvalitetnim potezima koji se c esto javljaju u otvaranju.
Biblioteka otvaranja, kao i biblioteka partija, najcesc e se reprezentuje stablom

igre. Ta struktura moze biti staticka (sadrzi odreden,


konacan broj varijanti

u svakom potezu i informacije o potezima samo do odredene


dubine) ili se
prosirivati tokom samog izvrsavanja programa.
U igri programa sledi se tok partije iz biblioteke dok je to moguce (dok o
tome postoje odgovarajuce informacije u biblioteci otvaranja), a onda se prelazi
na druge strategije izbora poteza. Ukoliko za neku poziciju postoji u biblioteci

vise mogucih nastavaka, izbor moze da se nacini po odredenim


verovatnocama
koje mogu da se koriguju tokom rada programa (u skladu sa ,,stilom igre programa koji proistice iz prirode funkcije evaluacije) ili jednim delom i prema

duzini koja u stablu sledi iza odredenog


poteza (kao teznja da se s to duze ostane u poznatim varijantama). Pomenuta strategija moze da se realizuje na
sledeci nacin: neka je, na osnovu biblioteke otvaranja, u nekom trenutku na
raspolaganju n poteza. Svakom od njih neka je pridruzena ocena mi (1 i n)
na osnovu empirijske procene i na osnovu dubine biblioteke partija koja sledi
za i-tim potezom (te ocene predstavljaju karakteristican, dodatni deo biblioteke
partija). Ukoliko emprijske procene govore da je i-ti potez bolji, to je ocena mi
ocena mi je veca ukoliko je veca dubina biblioteke partija koja
veca. Takode,
sledi za i-tim potezom. Tada se, u toj poziciji, i-ti potez (1 i n) bira sa
verovatnocom
mi
.
pi = Pn
j=1 mj
Na taj nacin izbegava se deterministicko ponasanje programa u otvaranju: bolji
potezi (u smislu neke procene) se biraju c esc e, ali ne uvek. Ocene mi mogu se
tokom igre korigovati na sledeci nacin: ukoliko je posle izbora i-tog poteza
(na nekoj dubini d) program dobio (izgubio) partiju, oceni mi dodaje se (oduzima se) neka karakteristicna pozitivna vrednost c. Te korekcije ocena u biblioteci partija vrse se na svim nivoima d na kojima izbor poteza nije bio jed
noznacno odreden.
Na taj nacin program ,,uci, popravlja kvalitet svoje igre i

prilagodava
je specificnim znanjima o igri koje primenjuje u daljem toku partije.

132

8 Programiranje logickih igara

Poseban problem u otvaranju je situacija u kojoj protivnik svojim potezom


primora program da napusti biblioteku otvaranja, a potom se u igri ponovo
do neke pozicije koja postoji u biblioteci otvaranja. Prepoznavanje pozidode
cije koja postoji u razlicitim delovima stabla moze da predstavlja problem i
iziskuje kompleksniju reprezentaciju podataka o poznatim otvaranjima. Takav

zahtev moze da vodi i ka resenju koje je tipicno za Senonovu


B strategiju:
u lookup tabeli trazi se tekuca pozicija i njoj odgovarajuci potez (ili potezi).
Resenje ovog tipa u vecini igara je neprimereno zbog velikog obima podataka
koji zahteva (umesto samo pojedinacnih poteza, sve pozicije se predstavljaju
kompletno i posebno) i vremena potrebnog za izvrsavanje (u lookup tabeli, za
neke igre, morali bi da budu smesteni podaci o hiljadama, ili milionima relevantnih pozicija).

8.4

Sredisnjica

Velika vecina savremenih programa za logicke igre u sredisnjici koristi strate


giju dubinskog pretrazivanja stabla igre koja odgovara Senonovoj
A strategiji.
Zbog obima izracunavanja koje zahteva, kao i zbog razlika u odnosu na strategije tipicne za c oveka, ovaj pristup c esto se naziva i ,,metod grube sile sa jednostavnom funkcijom evaluacije (eng. brute-force method plus simple evaluation function). U narednim poglavljima opisacemo smisao i ulogu funkcije
evaluacije, kao i neke od algoritama koji se koriste u pretrazivanju stabla igre.

8.4.1

Staticka ocena pozicije i funkcija evaluacije

U cilju odredivanja
najboljeg poteza za igraca koji je na potezu, c vorovima stabla igre se mogu dodeliti neke ocene, na osnovu koje c vorovi tj. pozicije i potezi
mogu da se porede po kvalitetu. Staticka ocena je vrednost koja se, u skladu
sa specificnim karakteristikama konkretne igre, dodelje poziciji pri c emu se ne
ispituju moguci nastavci koji joj odgovaraju. Funkcija evaluacije (eng. evaluation function) je funkcija F koja mogucim, regularnim pozicijama u nekoj igri
dodeljuje njihove ocene:
F : P 7 <.
Radi efikasnosti, funkcija evaluacije obicno se implementira kao racionalna ili
celobrojna funkcija.
Smisao funkcije evaluacije za protivnike u igri za dva igraca je suprotan
ono s to je najbolje stanje za jednog igraca najlosije je za drugog i obratno.
Funkcije evaluacije razlikuju se od igre do igre (i od programa do programa).
Gotovo sve znanje o igri koje se koristi u sredisnjici partije sadrzano je u funkciji
evaluacije i u najvecoj meri od nje zavisi kvalitet igre programa. Potrebno je da
sadrzi s to vise relevantnih informacija, ali s druge strane, kako se izracunava
mnogo puta, potrebno je da bude jednostavna, pa je pozeljno da se funkcija
pozeljno je
evaluacije racuna jednostavno i u celobrojnoj aritmetici. Takode,
da funkcija evaluacije za simetricne pozicije (za zamenjene uloge igraca) daje
vrednosti koje se razlikuju samo po znaku. Najjednostavnija je tzv. trovrednosna funkcija: ona se primenjuje samo na zavrsne pozicije igre i ima samo tri
razlicite vrednosti za pobedu prvog, za pobedu drugog igraca i za neresen
ishod (npr. 1, -1 i 0). Trovrednosna funkcija zahteva pretrazivanje stabla igre

8.4 Sredisnjica

133

do zavrsnih c vorova, pa je, zbog potencijalno velike dubine pretrazivanja, ova


funkcija za vecinu igara prakticno neupotrebljiva. Generalno, funkcija evaluacije obicno preslikava skup svih mogucih pozicija preslikava u segment celih
ili racionalnih brojeva:
F : P 7 [M, M ]
Vrednost M dodeljuje se samo zavrsnim c vorovima u kojima je pobednik prvi
igrac, a vrednost vrednost M samo zavrsnim c vorovima u kojima je pobednik
drugi igrac.
Ocene zavrsnih pozicija igre mogu se korigovati dodavanjem (odnosno oduzimanjem) dubine odgovarajuceg c vora u pretrazivanju, 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 neizbezan, taj poraz maksimalno
odgodio).
Funkcija evaluacije moze biti i slozene strukture, sastavljena od modula
koji odgovaraju razlicitim fazama partije (npr. sredisnjici i zavrsnici) ili razlicitim statickim parametrima (npr. u s ahu: vrednost ukupnog materijala,
pokretljivost figura, pesacka struktura, rokada i dr.).

8.4.2

Pretrazivanje stabla igre

Kod vecine programa za kompleksnije logicke igre, pored kvalitetne funkcije


evaluacije, od kljucne vaznosti su algoritmi koji se koriste za pretrazivanje
stabla igre. Pri pretrazivanju stabla igre u sredisnjici, funkcija evaluacije se

izracunava samo za c vorove na nekoj odredenoj


dubini, a ostalim c vorovima se
pozicija ocenjuje na osnovu ocena nekih od c vorova-potomaka. Pretrazivanje

stabla igre u cilju odredivanja


najboljeg moguceg poteza iz datog c vora, kod
razlicitih logickih igara (i razlicitih programa) realizuje se na razlicite nacine.
Realizacije se razlikuju po algoritmu pretrazivanja, po dubini pretrazivanja stabla, po heuristikama koje se primenjuju (nekad se, zbog brzine, odustaje od
najbolji potez za datu dubinu, vec se trazi ,,dovoljno
zahteva da se pronade
dobar potez) itd. Kod kompleksnijih logickih igara stablo igre najcesc e je
ogromno i njegovo pretrazivanje zahteva puno vremena. Zato su heuristike
koje ubrzavaju to pretrazivanje od izuzetnog znacaja. Stablo igre se pri pretrazivanju ne realizuje staticki, vec se dinamicki realizuje samo put od pocetnog
c vora do pozicije koja se trenutno ispituje. Kako se za pretrazivanje stabla igre
koristi rekurzija, to znaci da se za potez dubine d pamte samo podaci proistekli
iz d-tostrukog pozivanja funkcije za pretrazivanje (sa povratnim adresama i sl).

8.4.3

Algoritam minimaks

Algoritam minimaks je kljucni element Senonove


A strategije i on je u osnovi
skoro svih algoritama za izbor poteza pretrazivanjem stabla igre. Minimaks al
goritam pretrazivanjem stabla igre za igraca koji je na potezu odreduje
najbolji
moguci potez u datoj situaciji (za zadati c vor, zadatu dubinu pretrazivanja i
za izabranu funkciju evaluacije). Pretrazivanje celog stabla garantuje nalazenje
zaista najboljeg poteza (u navedenom smislu ako se menja dubina pretrazivanja
ne mora da se dobija isti rezultat), ali zbog odsustva heuristika (koje bi to pretrazivanje ubrzale) to pretrazivanje moze da traje jako dugo. Pretpostavimo,
jednostavnosti radi, da se pretrazivanje vrsi do fiksne dubine (tj. da su iste

134

8 Programiranje logickih igara

duzine svih puteva iz datog do zavrsnih c vorova u pretrazivanju). Pretpostavimo


jos da funkcija evaluacije za igraca koji je na potezu ima pozitivan smisao

(tj. bolji je potez ako obezbeduje


vecu vrednost funkcije). Funkcijom evaluacije ocene se dodeljuju samo ,,najdubljim c vorovima u pretrazivanju (pretrazivanje se vrsi do fiksne dubine i ,,najdublji c vorovi ne moraju da predstavljaju zavrsna stanja igre); dalji postupak je rekurzivan: kao ocena c voru
dodeljuje se minimum ocena c vorova-potomaka, ako je u tom c voru na potezu
protivnik, a kao maksimum ocena c vorova potomaka, u suprotnom (slika 8.2).
Ocena pocetnog c vora je maksimum ocena c vorovaneposrednih potomaka i
rezultat je potez kojem odgovara taj maksimim. Dakle, algoritam karakterise
maksimizovanje ocene kada je na potezu sam igrac i minimizovanje kada je na
ovog algoritma
potezu njegov protivnik, pa otuda i ime algoritma. Pseudokod
dat je na slici 8.3.
5

max
5

min
5

2 1

max
5

2 1

Figure 8.2: Stablo pretrage sa ilustracijom algoritma minimax


Algoritam minimaks (kao i ostali algoritmi zasnovani na minimaksingu)
vrsi izbor poteza samo na osnovu vrednosti koje su pridruzene c vorovima na
maksimalnoj dubini pretrazivanja. To znaci da se ne ispituju potezi koji dalje
slede i da se ne koriste informacije o njima (a te informacije mogu biti veoma
vazne i c esto bi promenile odluku o izabranom potezu). Pored toga, kada je
neki potez odabran na osnovu c vorova na nekoj dubini, u sledecem koraku
(pri izboru sledeceg poteza) te informacije se ne koriste i ,,zaboravlja se zasto
je odabran taj put (npr. ako je u s ahu neki potez izabran zato s to mu odgovara
c vor dubine tri u kojem se protivniku daje s ah, u sledecem potezu pretrazivanje
krece iznova i c esto nece biti izabran potez kojim se protivniku daje s ah
potez koji je motivisao izbor prethodnog). Dakle, pri pretrazivanju stabla igre
,,vide se samo c vorovi na nekoj fiksnoj dubini ni oni posle, ni oni pre njih.
Ovaj fenomen c esto se naziva efekat horizonta (eng. horizon effect).

8.4.4

Algoritam alfa-beta

Algoritam alfa-beta otkriven je sredinom dvadesetog veka nezavisno od strane


nekoliko istrazivaca. Artur Semjuel sa jedne strane i Ricards, Hart, Levin i Edvards (svi iz SAD) formulisali su nezavisno ranu verziju algoritma pocetkom

8.4 Sredisnjica

135

Algoritam: Minimax
Ulaz: pozicija
Izlaz: potez
1. v := M ax(pozicija)
2. vrati potez kojem odgovara vrednost v
Funkcija: Max
Ulaz: pozicija, funkcija evaluacije f
Izlaz: vrednost pozicije
1. Ako je zavrsna pozicija vrati f (pozicija)
2. v :=
3. Za svaku poziciju s do koje se moze doci u jednom potezu:
Ako je M in(s) > v onda v := M in(s)
4. vrati v
Funkcija: Min
Ulaz: pozicija, funkcija evaluacije f
Izlaz: vrednost pozicije
1. Ako je zavrsna pozicija vrati f (pozicija)
2. v := +
3. Za svaku poziciju s do koje se moze doci u jednom potezu:
Ako je M ax(s) < v onda v := M ax(s)
4. vrati v
Figure 8.3: Algoritam minimaks
pedesetih godina. Makarti je slicne ideje predstavio 1956. godine, tokom znamenite konferencije u Darmutu. Aleksander 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 c vorova je minimaks tipa: vrednosnom funkcijom ocenjuju se samo
c vorovi na nekoj odabranoj dubini, a zatim se rekurzivnim postupkom (minimaksingom) ocenjuju c vorovi prethodnici. Postupak ,,alfa odsecanje bie opisan
pretpostavljajuci da funkcija evaluacije za igraca koji je na potezu ima pozitivan smisao (bolje su vee ocene).
Neka je u tekucem c voru na potezu igrac A koji trazi najbolji potez; neka
je ocenjeno n od m (n < m) njegovih legalnih poteza i neka su dobijene ocene
w1 , w2 ... wn i neka je wk najveca od njih. Razmatramo n + 1-i legalni potez
(slika 8.4); nakon tog poteza protivnik (igrac B) ima vise mogucnosti i igrac

136

8 Programiranje logickih igara

wn+1 < wk

2 < 5

max
wk

wn

wn+1

wj0

odsecanje

7>5

odsecanje

min
1

2 1

odsecanje

max

Figure 8.4: Stablo pretrage sa ilustracijom algoritma alfa-beta

A trazi onu sa najmanjom ocenom; za svaku ocenu wi0 legalnih poteza u tom
0
c voru, svakako vazi da je veca ili jednaka zajednickom minimumu wmin
(wi0
0
do
wmin ) koji predstavlja ocenu c vora; dakle, ako se u tom pretrazivanju dode
ocene wj0 koja je manja ili jednaka oceni wk (wj0 wk ) sigurno je da je i ocena
0
c vora manja ili jednaka oceni wk (wmin
wk ). S obzirom da se u pocetnom
c voru trazi maksimum ocena mogucih poteza, to znaci da taj c vor (sa ocenom
0
0
wmin
wk ) ne utice na ocenu pocetnog c vora (jer je wmin
wk wmax ),
pa se dalje pretrazivanje poteza protivnika u tekucem c voru moze prekinuti
bez uticaja na rezultat pretrazivanja moze da se izvrsi odsecanje stabla
(slika 8.4). ,,Beta odsecanje je potpuno analogno i primenjuje se na c vorove
u kojima je na potezu protivnik. Naravno, s obzirom na smisao vrednosne
funkcije, maksimumi pominjani u ,,alfa odsecanju zamenjuju se minimumima
algoritma alfa-beta dat je na slici 8.5.
i obratno (slika 8.4). Pseudokod
Kako stablo pretrazivanja c esto moze biti jako veliko, ubrzanje minimaks
algoritma heuristikama ,,alfa-odsecanje i ,,beta-odsecanje ima izuzetan znacaj.
Posebno je vazna c injenica da i alfa-beta algoritam nalazi zaista najbolji moguci
potez za zadati c vor i zadatu dubinu pretrazivanja, s to znaci da heuristike koje
se primenjuju ne narusavaju tu osobinu minimaks algoritma.
Ukoliko se u svakom c voru potezi ispituju od najlosijeg ka najboljem (u
smislu tekuceg c vora), tada nema nijednog alfa ili beta odsecanja, pa se alfabeta algoritam svodi na algoritam minimaks. Obratno, najvise alfa i beta odsecanja ima kada su potezi ispituju od najboljeg ka najlosijem u smislu tekuceg
c vora i tada algoritam alfa-beta daje najbolji efekat (tj. ispituje najmanji broj
c vorova stabla). Naravno, takav poredak poteza nije moguce generisati egzaktno u toku pretrazivanja stabla igre, ali se dobrim procenama efekat alfa-beta
algoritma tako moze bitno popraviti. Upravo na toj ideji zasnivaju se i neka
poboljsanja alfa-beta algoritma.

8.4 Sredisnjica

137

Algoritam: Alfa-beta
Ulaz: pozicija
Izlaz: potez
1. v = M ax(pozicija, , +)
2. vrati potez kojem odgovara vrednost v
Funkcija: Max
Ulaz: pozicija, alfa vrednost , beta vrednost , funkcija evaluacije f
Izlaz: vrednost pozicije
1. Ako je zavrsna pozicija vrati f (pozicija)
2. v :=
3. Za svaku poziciju s do koje se moze doci u jednom potezu:
Ako je M in(s, , ) > v onda v := M in(s, , )
Ako je v onda vrati v
Ako je v > onda := v
4. vrati v
Funkcija: Min
Ulaz: pozicija, alfa vrednost , beta vrednost , funkcija evaluacije f
Izlaz: vrednost pozicije
1. Ako je zavrsna pozicija vrati f (pozicija)
2. v :=
3. Za svaku poziciju s do koje se moze doci u jednom potezu:
Ako je M ax(s, , ) < v onda v := M in(s, , )
Ako je v onda vrati v
Ako je v < onda := v
4. vrati v
Figure 8.5: Algoritam alfa-beta

8.4.5

Heuristika killer

U prethodnom poglavlju receno je da se efikasnost algortima moze popraviti


ako se u svakom c voru potezi ispituju, po nekoj proceni, od najboljeg ka najlos ijem. Slicno, algoritam alfa-beta daje dobre razultate ako se u svakom c voru
najpre ispituje najbolji potez. Naravno, nije moguce unapred znati koji je potez
najbolji u datom c voru, ali se i dobrim procenama (izborom jednog od boljih
poteza) postizu dobri efekti. Heuristika killer (ponekad se naziv i w-killer) zasniva se na navedenim c injenicama i ne koristi specificna znanja o igri (da bi se

138

8 Programiranje logickih igara

procenilo koji potezi su dobri).


Neka se u pretrazivanju stabla alfa-beta algoritmom prvi put ocenjuje neki

c vor na dubini d (d 1) i neka je W najbolji pronadeni


potez u smislu tog c vora.
Taj potez zvacemo killer potezom za dubinu d. U svakom sledecem c voru na
dubini d, ispitivanje poteza pocinjemo sa killer potezom za tu dubinu. Ukoliko
se pokaze da je za taj c vor bolji neki drugi potez (W 0 ), taj potez postaje killer
potez za dubinu d.
Ukoliko se pretrazivanje stabla igre vrsi do dubine dmax , opisana heuristika
primenjuje se za sve dubine d takve da je 1 d dmax 1. Alfa-beta algoritam prosiren killer heuristikom zovemo alfa-beta/killer algortimom. Primetimo
da se primenom killer heuristike ne menja rezultat alfa-beta algoritma (za istu
vrednosnu funkciju i istu dubinu pretrazivanja) tj. dobija se potez sa istom
ocenom (ne nuzno i isti potez) kao primenom algoritama alfa-beta ili minimaks, i to najcesc e sa bitno manjim brojem ispitanih c vorova stabla.
Smisao killer heuristike je sledeci: ukoliko je u jednoj grani stabla na dubini
d najbolji potez W , ima izgleda da je on najbolji (ako je legalan) i u drugim
granama stabla na istoj dubini. Ilustrujmo to na primeru s aha: neka igracu koji
je na redu preti mat u sledecem potezu i neka nijedan njegov potez ne moze
da otkloni tu pretnju. Pretrazivanjem stabla, u c voru u kojem je na potezu protivnik, otkriva se matni potez i on postaje killer potez (za dubinu 1). Pri daljem
pretrazivanju stabla, na dubini 1 najpre se ispituje taj potez i kako on vodi
pobedi protivnika, alfa odsecanje c ini nepotrebnim dalje ispitivanje poteza u
tom c voru. Time se broj c vorova stabla koje u ovakvoj situaciji treba ispitati
drasticno smanjuje.
U poglavlju 8.2 receno je da moguci (ne samo legalni) potezi treba da budu

organizovani u ciklicni niz, tj. da se je za svaki potez jednoznacno odreden


sledeci. Taj zahtev je u direktnoj vezi sa killer heuristikom, jer se ispitivanje
poteza u skladu sa njom, vrsi pocev od killer poteza i, ispitavsi (eventaulno)
kako je moguce da killer
sve ostale, ciklicno vraca do tog istog poteza. Takode,
potez u nekom c voru odgovarajuce dubine nije legalan, generator treba da za
svaki moguci potez, bio on u konkretnoj poziciji legalan ili ne, jednoznacno

odreduje
sledeci legalan potez.

8.4.6

Iterativni alfa-beta/killer algoritam

Za dubinu pretrazivanja dmax iterativni alfa-beta/killer algoritam se realizuje


na sledeci nacin: najpre se vrsi pretrazivanje 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 pocetni c vor. Dalje se,
redom za dubine d (2 d dmax ) primenjuje algoritmom alfa-beta/killer. i
dobijeni najbolji potez postaje killer potez za pocetni c vor. Kao najbolji potez
bira se onaj dobijen zavrsnom primenom alfa-beta/killer algoritma za dubinu
dmax .
Efekti iterativnog algoritma su, u svakoj iteraciji, slicni efektima alfa-beta/killer
algoritma, s tim s to u iterativnom algoritmu postoji i killer potez za pocetni
c vor u pretrazivanju. Ima izgleda da je u svakoj iteraciji taj killer potez bolje
odabran i da daje bolje rezultate (veci broj alfa i beta odsecanja). Druga vazna
i dobra osobina iterativnog algoritma je to s to za slucaj prekida pretrazivanja,

prakticno u svakom trenutku ima smisleni rezultat kao najbolji pronadeni


potez
za neku kompletno zavrsenu iteraciju (videti poglavlje 8.4.8). Ono s to izgleda

8.4 Sredisnjica

139

kao mana algortima visestruko pretrazivanje nekih c vorova ne utice bitno


na perofrmanse algoritma. Naime, u odnosu na vreme utroseno za zavrsnu iteraciju, vreme utroseno na sve ostale iteracije prakticno je zanemarljivo. Pored
toga, s obzirom na (najcesc e) dobro odabran killer potez za pocetni c vor, zavrsna
iteracija c e obicno zahtevati ispitivanje manjeg broja c 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 ocenom) za datu vrednosnu funkciju i datu
dubinu pretrazivanja s to je vazno svojstvo algoritama minimaks, alfa-beta i
alfa-beta/killer.
Kao modifikacija ovog algoritma, moze se vrsiti samo prva i poslednja iteracija, jer se i prvom iteracijom c esto dobija dovoljno dobar killer potez za
dubinu 0. U razlicitim konkretnim situacijama, nekad je bolji jedan, a nekad
drugi algoritam, s tim s to je, zbog mogucnosti prekida, u praksi prihvatljiviji
kompletni iterativni algoritam.

8.4.7

Stabilno pretrazivanje

U prethodnim algoritmima se uvek govorilo o pretrazivanju do fiksne dubine.


Nedostatak takvog pristupa je u tome s to funkcija evaluacije, koja se primenjuje na c vorove na najvecoj dubini, ne razmatra moguce nastavke za pozicije
na najvecoj dubini. Te ocene, ma koliko funkcija evaluacije bila dobra, mogu
da budu varljive i da vode losem izboru poteza (u s ahu se npr. moze izabrati
potez zbog nekog, naizgled dobrog, zavrsnog c vora u kojem se zarobljava protivnikov top, ali se ne zna da nakon toga moze da bude izgubljena kraljica ili
da sledi mat). Zbog toga se primenjuje ,,stabilno pretrazivanje(eng. quiscence
searching): vrsi se pretrazivanje do neke fiksne dubine, ali se pretrazivanje
nastavlja i dalje ukoliko je, po nekom kriterijumu, zavrsni c vor ,,nestabilan.
moze da bude ogranicena.
Maksimalna dubina dodatnog pretrazivanja takode
Stabilno pretrazivanje moze se primenjivati u kombinaciji sa bilo kojim od do
sada opisanih algoritama.

Kriterijumi stabilnosti poteza odreduju


se u skladu sa specificnostima konkretne
igre, ali i za istu igru mogu biti razlikiciti. U s ahu, na primer, pozicija se moze
smatrati stabilnom ukoliko igrac koji je na potezu nije pod s ahom, ukoliko mu
kraljica ne ,,visi, ukoliko ne ,,visi nijedna protivnikova figura i ukoliko ne

preti neposredno izvodenje


nekog protivnikovog pesaka. Savremeni programi
za s ah c esto pretrazuju stablo igre do dubine 4 (4 polupoteza tj. dva poteza) sa
dodatnim, stabilnim pretrazivanjem do dubine 16 ili vise.

8.4.8

Prekidi i vremenska ogranicenja

Vazan problem u programiranju logickih igara su i prekidi: potrebno je da


program izabere smislen i dobar potez i ukoliko se pretrazivanje stabla igre
prekine pre nego s to se izvrsi kompletan algoritam. Potrebno je, dakle, da algoritam, i ukoliko je prekinuto njegovo normalno izvrsavanje, vrati neki legalan
potez. Naravno, pozeljno je i da taj potez bude s to bolji. Prekidi mogu biti
izazvani akcijom korisnika ili ogranicenjima vremena raspolozivog za jedan

140

8 Programiranje logickih igara

potez ili za celu partiju2 . Vecina algoritama koji su do sada opisani u situacijama prekida moze da izabere tekuci najbolji potez. Ipak, kad algoritam nije
kompletno izvrsen (i, na primer, ispitani su samo neki, povoljni odgovori protivnika), tako odabran potez moze biti veoma los. Za resavanje ovog problema
najpogodniji je iterativni alfa-beta/killer algoritam, jer prakticno u svakom
trenutku3 ima neku kompletno zavrsenu iteraciju i njen rezultat c esto jeste dovoljno dobar potez (iako, naravno, obicno slabiji nego potez koji bi bio dobijen
kompletno izvrsenim algoritmom).

8.4.9

Slozenost algoritama za pretrazivanje stabla igre

Za formulisanje tvrdenja
u vezi sa kompleksnosc u algoritama za pretrazivanje
stabla igre, potrebno je uvesti nekoliko definicija.
Definicija 8.1 Uniformno stablo stepena n je stablo c iji svi c vorovi sem zavrsnih
imaji tacno po n neposrednih potomaka.
Definicija 8.2 (d, n, F )-stablo je uniformno stablo dubine d, gde je d paran broj i
stepena n sa zavrsnim c vorovima kojima su pridruzene vrednosti po raspodeli F .
Definicija 8.3 Neka je A deterministicki algoritam za pretrazivanje (d, n, F )-stabla
i neka je IA (d, n, F ) ocekivani broj zavrsnih c vorova koje algoritam A ispituje. Tada
vrednost
RA (n, F ) = lim [IA (d, n, F )]1/d
d

zovemo faktor grananja algoritma A.


Faktor grananja je kljucna karakteristika algoritama za pretrazivanje stable
igre jer govori o ocekivanom broju zavrsnih c vorova koje nekim algoritmom
treba ispitati. Naime, ukoliko je R faktor grananja nekog algoritma, onda je
ocekivani broj ispitanih c vorova za dubinu pretrazivanja d jednak Rd .
Ako se uniformno stablo stepena n i dubine d pretrazuje minimaks algoritmom, bice ispitano nd zavrsnih c vorova stabla, pa je faktor grananja algoritma
minimaks ocigledno jednak n, tj.
Rminimax (n, F ) = n.

Problem odredivanja
faktora grananja alfa-beta algoritma mnogo je slozeniji.
Slagle i Dixon pokazali su 1969. godine da alfa-beta algoritam mora da ispita
vise od 2n[d/2] 1 zavrsnih c vorova uniformnog stabla stepena n i dubine
d, ali da u najlosijoj situaciji moze da ispita i svih nd [?]. Knuth i Moore su
1975. godine [?] dokazali da faktor grananja za jednu pojednostavljenu verziju
algoritma alfa-beta (bez dubokih odsecanja) pripada klasi funkcija O(n/ log n).
Konacan odgovor na pitanje o faktoru grananja alfa-beta algoritama daje sledece
teorema Judea Pearl-a iz 1982. godine [?].
2 Ukoliko je ograni
ceno vreme raspolozivo za celu partiju, program mora i da ga ekonomicno
deli na procenjeni broj poteza.
3 Prva iteracija, za gotovo sve igre i na gotovo svim ra
cunarima, moze biti zavrsena u delicu
sekunde.

8.5 Zavrsnica

141

Teorema 8.1 Faktor grananja alfa-beta algoritma za neprekidno-vrednosno uniformno


stablo stepena n jednak je
n
R =
1 n
gde je n pozitivni koren jednacine xn + x 1 = 0.
Za n 1000 vrednost
nosti n3/4 , tj.

n
1n

R =

priblizno je jednaka (0.925)n0.747 i, grubo, vred-

n
(0.925)n0.747 n3/4 .
1 n

Posledicu navedene teoreme je i sledece, izuzetno vazno tvrdenje


[?]).
Teorema 8.2 Alfa-beta algoritam je asimptotski optimalan algoritam za pretrazivanje
stabla igre.

Navedeno tvrdenje
znaci da ne postoji algoritam za pretrazivanje stabla
igre koji, u opstem slucaju, asimptotski ispituje manje zavrsnih c vorova nego
algoritam alfa-beta. Algoritmi, koji su opisani u prethodnom delu teksta i

koji predstavljaju unapredenja


algoritma alfa-beta u praksi zaista najcesc e daju
bolje rezultate nego algoritam alfa-beta i to je uslovljeno prirodom stabla igre
i funkcijom koja ocenjuje zavrsne c vorove (koja nije slucajna). Ipak, faktori
grananja ovih algoritama se ne razlikuju od faktora grananja alfa-beta algoritma i u opstem slucaju oni ne garantuju manje ispitanih zavrsnih c vorova
stabla nego algoritam alfa-beta.
U praksi, faktor grananja alfa-beta algoritma za vecinu diskretno-vrednosnih
stabala jednak je R = n1/2 .

8.5

Zavrsnica

U igrama kao s to je s ah zavrsnica se, po svojim karakteristikama i po znanjima koje se koriste, bitno razlikuje od sredisnjice, pa iziskuje i posebne pristupe. U nekim od takvih igara, i u zavrsnici se uspesno mogu koristiti algoritmi i tehnike koje se koriste u sredisnjici, ali uz korisc enje posebne ili vise
posebnih funkcija evaluacije. U onim drugim igrama, resenja koja se zasnivaju
na dubinskom pretrazivanju ne daju dobre rezultate u zavrsnici jer kvalitetna
igre iziskuje jako veliku dubinu pretrazivanja. Problem zavrsnice je jos tezi
ako se postavi zahtev za korektnom ili optimalnom igrom/taktikom4 . Ukoliko
se, tehnikama koje se koriste u sredisnici, sistematsko pretrazivanje vrsi do

zavrsnih c vorova time se obezbeduje


optimalna strategija (naravno, za vecinu
igara to je u praksi nemoguce izvesti). Tako, na primer, optimalnu igru u
s ahovskoj zavrsnici prakticno je nemoguce obezbediti (za uobicajena vremenska ogranicenja), jer su moguce zavrsnice u kojoj igrac ima dobijenu poziciju, ali ne moze da matira protivnika u manje od dvadeset poteza, pa takva
4 Za

taktiku kazemo da je korektna ukoliko u dobijenoj poziciji sigurno vodi do pobede i ukoliko
pri (teorijskoj) remipoziciji sigurno vodi bar remiju. Za taktiku kazemo da je optimalna ukoliko u
dobijenoj poziciji vodi pobedi u najmanjem broju poteza, odnosno ukoliko u izgubljenoj poziciji
poraz maksimalno odlaze. Ocigledno, ako je taktika optimalna, onda je i korektna, ali ne vazi
obratno.

142

8 Programiranje logickih igara

zavrsnica za optimalnu igru zahteva dubinu pretrazivanja vecu od dvadeset.


Slicni problemi vaze i za korektnu taktiku.
Neprimenljivost dubinskog pretrazivanja u zavrsnici uslovljava razvoj kval
itativno novih tehnika prilagodenih
konkretnim igrama. Neke od njih zasnovane su na tehnikama koje se koriste u resavanju problema (u razlicitim
domenima vestacke inteligencije) ili u automatskom dokazivanju teorema. Kako
u ovoj problematici (jos) nisu data opsta valjana resenja, kako postojeca resenja
predstavljaju primene c itavih matematickih teorija na domen igara, u nastavku
c e biti opisani samo neki od algoritama i ideja koji se mogu efikasno primenjivati u automatskom izboru poteza u s ahovskim zavrsnicama.

8.5.1

Skupovi pozicija kao klase ekvivalencija

M.A.Bramer (Faculty of Mathematics, Milton Keynes, England) je 1975. (v. [?])


fomulisao sledeci opsti algoritam za zavrsnicu:
(a) generisi skup svih legalnih poteza skup Q;
(b) odaberi najbolje ocenjeni elemenat skupa Q element q;
(c) odigraj potez q;
Kljucni korak algoritma (korak (b)) zasnovan je na sledecoj ideji: neka je
skup Q skup svih regularnih pozicija u igri i neka je svaka od tih pozicija
svrstana u tacno jedan od podskupova koji razlazu Q (to razlaganje definise se
u skladu sa prirodom konkretne igre tako da istom skupu pripadaju sustinski
slicne pozicije npr. u s ahu, sve pozicije KPK); svakom od tih skupova (odnosno
klasa ekvivalencije) pridruzena 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 nacin ocenjuju se svi legalni potezi iz datog c vora i to bez ikakvog pretrazivanja preko dubine 1. Kao najbolji bira se potez kojem odgovara najveca zbirna ocena. Opisani algoritam ima brojne varijacije (ukljucujuci vari
jacije uporedivanja
elemenata iz razlicitih klasa ekvivalencije, provere izabranog poteza pretrazivanjem u dubinu itd.).
Bramerov algoritam, razlaganjem skupa problema na klase slicnih problema, u prilicnoj meri prirodno odgovara c ovekovom nacinu razmisljanja. Pored

toga, algoritam moze biti i veoma efikasan, jer poredenje


poteza vrsi po kljucnim
dva
parametrima za konkretnu zavrsnicu (npr, u s ahu, po rastojanju izmedu
kralja), a ne po opstim kriterijumima koji se koriste u sredisnici. Algoritam zahteva kompleksno definisanje svih relevantnih klasa pozicija u zavrsnici i svih
odgovarajucih funkcija evaluacije, ali je i pored toga verovatno najprihvatljivije
i najcesc e korisc eno resenje za automatski izbor poteza u zavrsnici.

8.5.2

Tekstovi saveta

Jedan od koncepata koji se primenjuju u s ahovskim zavrsnicama je i tzv. koncept tekstova saveta (eng. advice texts; autor Ivan Bratko, Ljubljana, Slovenija;
v. [?]). Navedimo, kao ilustraciju, tekst saveta za zavrsnicu KRK kralj i top
protiv kralja:

8.6 Implementaciona pitanja

143

1. ,,MAT: Proveri da li je moguce matirati protivnika u dva poteza;


nacin da topom smanjis
2. ,,STEZANJE: Ako (1) nije moguce, pronadi
prostor na tabli dostupan protivnickom kralju;

nacin da svog
3. ,,PRIBLIZAVANJE:
Ako (1) i (2) nije moguce, pronadi
kralja priblizis protivnickom;

4. ,,ZADRZAVANJE:
Ako nisu primenljivi delovi saveta (1), (2) i (3), pronadi
potez koji zadrzava trenutno stanje u smislu (2) i (3) (tj. odaberi potez
c ekanja);
5. ,,RAZDVAJANJE: Ako nisu primenljivi delovi saveta (1), (2), (3) i (4),
potez kojim se dobija pozicija u kojoj top razdvaja dva kralja,
pronadi
bilo vertikalno ili horizontalno.
Nedostatak koncepta ilustrovanog navedenim primerom je u tome s to iziskuje
posebne tekstove saveta za sve sustinski razlicite zavrsnice. Pored toga, za
sve tipove zavrsnica nije jednostavno (ili nije moguce) napraviti koncizan i
efikasan tekst saveta.

8.6

Implementaciona pitanja

U ovom poglavlju bice reci o polaznim pitanjima u pravljenju programa za

logicke igre: o strukturama podataka koje se koriste, o njihovim medusobnim


bice reci i o proveri legalvezama i organizaciji na nivou programa. Takode,
nosti (korektnosti) poteza i o generatorima legalnih poteza. Izbor resenja ovih
problema od kljucne je vaznosti za svaki pojedinacni program i on determinise
gotovo c itav koncept programa.
Kao kod gotovo svih oblasti programiranja, i kod programiranja igara izbor
struktura podataka je najcesc e pitanje od izuzetne vaznosti. Od pravilnog izbora struktura podataka neposredno zavisi ne samo jednostavnost programa,
vec i njegova efikasnost. Pored toga, dobra pocetna organizacija podataka

c esto prirodno odreduje


c itav koncept programa i resavanje mnogih drugih
sustinskih problema.
U programima za vecinu logickih igara, zbog velikog broja poteza koje je
potrebno ispitivati, neophodna je velika brzina izvrsavanja pojedinih modula
(i pored sve brzih racunara). Zato je potrebno podatke organizovati tako da
izracunavanja (u s irem smislu te reci) koja se koriste budu s to jednostavnija
i brza. U tom smislu, kao dobar okvir namece se organizacija podataka koja
se oslanja na bitovsku aritmetiku (umesto na celobrojnu ili realnu). I za sva
izracunavanja pozeljno je koristiti bitovsku aritmetiku, a tamo gde je to nemoguce
ili nepodesno celobrojnu.
Kod svih igara, jedna od osnovnih struktura podataka je struktura koja
odgovara potezu. Kod igara koje se igraju na tabli, ta struktura je, ocigledno, u
neposrednoj vezi sa strukturom koja opisuje tablu. Tablu igre nm u programu
mozemo opisati kao tabelu, odnosno matricu nm c iji su elementi tipa char ili
int5 . U skladu sa navedenom idejom o upotrebi bitovske aritmetike, moze se
5 U daljem tekstu c
emo, kada govorimo o nekim konkretnim realizacijama na racunaru, ako ne
naglasimo drugacije, podrazumevati da se radi o resenjima u okviru programskog jezika C.

144

8 Programiranje logickih igara

kao prihvatljivo resenje za opis table izabrati i niz bitovskih matrica. Tako npr.
u s ahu moze se za svaki tip figura (i to za oba igraca) koristiti po jedna bitovska
tabela 8 8 u kojoj bi vrednost 1 oznacavala da igrac na tom polju ima figuru
tog tipa, a vrednost 0 sve ostale mogucnosti. Na taj nacin jedna tabela 8 8
bila bi zamenjena sa 12 (svaki igrac ima po s est tipova figura) tabela 8 8 c iji
su elementi bitovskog tipa. Dodatna pogodna okolnost u ovom pristupu je s to
opisana bitovska tabela moze da se opise 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 mozda komplikovaniji,
omogucava brojna jednostavna i brza resenja kod provere legalnosti poteza,
generisanja legalnih poteza i sl.
Struktura koja opisuje potez treba da sadrzi informacije dovoljne da bi se
potez odigrao, ali pozeljno je (mada ne i neophodno) i da bi se eventualno
vratio. Kod jednostavnih igara, kao s to je npr. igra iks-oks dovoljne su informacije o tome koji je igrac potez odigrao6 i na kojem polju. Kod igre reversi,
to vise nisu dovoljne informacije, jer na osnovu njih ne moze biti vracen potez.
Naime, na osnovu informacije o igracu i polju ne moze se rekonstruisati pozicija pre tog poteza, pa struktura koja opisuje potez mora da sadrzi i listu z etona
koji pri tom potezu menjaju boju. Kod s aha je situacija jos slozenija, jer figure
se pomeraju (a ne dolaze niotkuda kao u igrama iks-oks i reversi), pa pored
oznake igraca, struktura koja opisuje potez mora da sadrzi informacije i o polaznom i o odredisnom polju. Pored toga, radi mogucnosti vracanja poteza,
ta struktura mora da sadrzi i informaciju o (eventualno) pojedenoj figuri, o
(eventualno) izvedenom pesaku (i o figuri u koju je promovisan), kao i informaciju o (eventualno) primenjenom pravilu en-passant7 . Nacin na koji c e
navedeni podaci da budu opisani direktno je uslovljen strukturom koja opisuje
tablu igre. Ukoliko je odabran pristup sa bitovskom reprezentacijom table i
poteza, operacije odigravanja i vracanja poteza i slicne svodice se na jednostavne i brze logicke operacije AND, OR, XOR, NOT i njihove kombinacije.
Program za igru moze biti tako koncipiran da se potezi koji se odigravaju

ne pamte niti povezuju na bilo koji nacin. Medutim,


ukoliko se z eli mogucnost
vracanja poteza (i ako je ta mogucnost pripremljena pravilnim izborom strukture koja opisuje potez tako da sadrzi sve potrebne informacije), potezi se
tokom partije smestaju u povezanu listu (LIFO tipa, tj. stek). Pored toga, ukoliko se z eli i mogucnost ponovnog reprodukovanja partije ili njenog memorisanja, poteze tokom partije treba smestati u dvostruko povezanu listu.
Na nivou programa, opisane strukture treba da budu organizovane tako
dva igraca, kao i mogucnost da program zameni
da omogucavaju igru izmedu
bilo kog igraca (u celom toku partije, u pojedinacnom potezu ili samo za davanje preporuke).
Provera legalnosti poteza vrsi se u skladu sa pravilima pojedine igre, a u
konkretnom programu, i u skladu sa izabranim strukturama podataka. Na
termina moguci potezi
samom pocetku, naglasimo da pravimo razliku izmedu
i legalni potezi: mogucim potezima nazivamo one koji su legalni u bar jednoj
regularnoj poziciji igre.
Ako sam program ucestvuje u partiji kao jedan od igraca i ako treba da
6 Podatak o tome koji je igra
c odigrao potez c esto nije neophodan, jer se potezi prvog i drugog
igraca smenjuju naizmenicno.
7 Rokade se mogu opisati samo preko poteza kralja, pa nije potrebno da informacija o rokadi
bude sadrzana u strukturi potez.

8.6 Implementaciona pitanja

145

odabere svoj potez, koristi se tzv. generator legalnih poteza. Pre svega u
strategijama koje se koriste u sredisnjici partije, vrsi se pretrazivanje legalnih
poteza i po nekom kriterujumu bira se najbolji potez. Kako se pri tome ide
i po nekoliko poteza u dubinu, ocigledna je neophodnost da generator legalnih poteza (koji se oslanja na modul za proveru legalnosti) radi izuzetno brzo.
Moduli za proveru legalnosti i generisanje poteza treba, dakle, da budu s to je
moguce jednostavniji i brzi. Ukoliko izabrane strukture podataka to dozvoljavaju, pozeljno je da ovi moduli rade koristeci bitovsku aritmetiku.
Pozeljno je da se legalni potezi generisu ciklicno tj. da se za svaki legalan
potez moze jednoznacno odrediti sledeci legalan potez. Ovo je potrebno kako
bi se obezbedilo brzo ispitivanje svih legalnih poteza bez obzira na to od kojeg
poteza je ispitivanje pocelo. Takva organizacija legalnih poteza bice korisc ena u
algoritmima za sredisnjicu partije, o c emu c e biti reci u narednim poglavljima.

146

8 Programiranje logickih igara

Glava 9

Genetski algoritmi
Genetski algoritmi (GA) su familija opstih heuristickih algoritama globalne
pretrage zasnovanih na Darvinovoj ideji evolucije. Oni pripadaju s iroj grupi
evolucionih algoritama koji koriste tehnike inspirisane evolucionom biologi
jom, kao s to su nasledivanje,
mutacija, selekcija, ukrstanje itd. Genetski algoritmi se mogu koristiti za nalazenje tacnog ili pribliznog resenja nekog problema optimizacije ili pretrage. Mada je jos pedesetih godina dvadesetog veka
bilo racunarskih simulacija zasnovanih na evoluciji, smatra se da je moderne
genetske algoritme uveo Dzon Holand sedamdesetih godina dvadesetog veka
[?], a postali su popularni kasnih osamdesetih godina.
Tokom prethodnih dvadesetak godina ostvaren je veliki napredak u razvoju
genetskih algoritama. Genetski algoritmi se uspesno primenjuju na s irokom
skupu problema, c esto NP-kompletnih ili tezih problema, za koje ne postoje
efikasna resenja. Neki od tih problema su problem nalazenja najkraceg puta
u grafu, problem trgovackog putnika, logickim igrama itd. Genetski algoritmi
imaju uspesne primene u ekonomiji, tehnici, bioinformatici, hemiji, fizici itd.
Popularnost genetskih algoritama potice iz njihove uspesnosti, ali i jednostavnosti. Naime, ideje na kojima su genetski algoritmi zasnovani su jednostavne za razumevanje i implementiranje, a daju opsti sistem pretrage primenjljiv na veliki broj problema. Uporedo sa nalazenjem brojnih novih primena i

unapredivanjem
algoritma, razvijaju se i teorijski osnove genetskih algoritama,
ali jos uvek sa nedovoljno uspeha.
Genetski algoritmi uspesno se primenjuju u optimizacionim problemima
u kojima postoji vise lokalnih ekstremuma. Ipak, iako c esto nalaze globalne
eksremume, za genetske algoritme ne postoji nikakva garancija o tome da li je

u pitanju lokalni estremum niti o tome sa kolikom greskom je odredeno


resenje.

9.1

Motivacija za genetske algoritme

Genetski algoritmi motivisani su prirodnim evolucionim procesima. U prirodi,

evolucija je proces u kojem jedinke koje su najbolje prilagodene


okolini prezivljavaju

i ostavljaju potomstvo koje je, najcesc e isto tako ili bolje prilagodeno
okolini.
Svaka c elija svakog z ivog organizma sadrzi hromozome. Svaki hromozom

sadrzi skup gena blokove DNK. Svaki gen odreduje


neku osobinu organizma. Familija gene se c esto naziva genotip, a familija osobina fenotip. Re-

148

9 Genetski algoritmi

produkcija organizama ukljucuje kombinovanje gena roditelja i, pored toga,


okolini.
male kolicine mutacije. Jedinka moze biti manje ili vise prilagoden

Jedinka koja je bolje prilagoddena


okolini u kojoj z ivi ima vecu verovatnocu
prezivljavanja i ostavljanja potomstva, a time i prenosenja svog genetskog ma
terijala. Genetski materijal prilagodenih
jedinki uglavnom opstaje, dok genet
ski materijal neprilagodenih
jedinki uglavnom nestaje kroz generacije. Dakle,

evolucioni procesi u prirodi su, u odredenom


smislu, optimizacioni procesi
procesi u kojima se kroz generacije optimizuje genetski materijal (tj. osobine
okolini.
organizama) tako da bude s to bolje prilagoden

9.2

Osnovni genetski algoritam

Genetski algoritmi se implementiraju kao racunarska simulacija u kojoj populacija apstraktno reprezentovanih jedinki (nazvanih hromozomi ili genotip)
koje su kandidati za resenje za optimizacioni problem (to moze biti numericka
vrednost, matematicka funkcija, put u grafu itd.), treba da se postupno priblizava boljim resenjima. Jedinke su obicno reprezentovane nizovima nula
i jedinica, ali su moguce i druge reprezentacije (za probleme u kojem binarna reprezentacija nije pogodna). Postupak se odvija kroz generacije. Pocetna
generacija obicno c ine slucajno generisane jedinki ali moze da se zasniva i na
jedinkama koje su (grubi) rezultat neke druge optimizacione metode.
Obicno u svakoj generaciji postoji isti broj jedinki i za svaku od njih se

racuna njen kvalitet (analogon prilagodenosti


okolini). Funkcija koja pridruzuje

te vrednosti jedinkama naziva se funkcija prilagodenosti,


funkcija kvaliteta, funkcija
evaluacije1 ili funkcija cilja. Ova funkcija ima kljucnu ulogu u algoritmu.

Iz jedne generacije se stohasticki, na osnovu vrednosti funkcije prilagodenosti,


biraju jedinke (sa vecom verovatnocom se biraju one kvalitetnije) koje c e biti
prenete u sledecu generaciju i biti iskorisc ene za stvaranje novih jedinki (potomstva). Ovaj postupak izbora jedinki se naziva selekcija. Nad izabranim
jedinkama primenjuju se genetski operatori ukrstanja2 i mutacije i tako dobijaju nove jedinke. Ukrstanjem se od dve jedinke dobija nova (ili dve nove) sa
genetskim materijalom koji je dobijen neposredno od roditelja, tj. od polaznih
jedinki. Mutacijom se modifikuje deo polazne jedinke (i ona oponasa mutacije
koje se u prirodi javljaju pod uticajem spoljnih faktora). U svakoj generaciji,
dakle, dolazi do rekombinacije gena zbog koje se javlja slicnost sa roditeljskim
jedinkama iste generacije. Generalno, neke
jedinkama, ali i razlicitost medu
jedinke u novoj generaciji mogu biti bolje ali neke mogu biti losije od jedinki

iz prethodne generacija, ali se ocekuje da se prosecna prilagodenost


popravlja.
Tako dobijena nova generacija koristi se za sledecu iteraciju algoritma.
Postupak se zauastavlja kada je dostignut zadati broj generacija, kada je

dostignut zadati nivo kvaliteta populacije (najprilagodenije


jedinke u njoj ili

nekog procenta najprilagodenijih


jedinki) ili kada je ispunjen neki drugi uslov.
Ukoliko je dostignut zadati broj generacija, nema nikakvih garancija da tekuca

najkvalitetnija jedinka ima zadovoljavajucu prilagodenost.


Opsti genetski algoritam prikazan je na slici .
1 Ponekad se termin funkcija evaluacije koristi za funkciju koja meri performanse genetskog algoritma sa nekim fiksiranim parametrima.
2 Ovaj termin nije sasvim u skladu sa zna
cenjem koji ima u biologiji.

9.3 Reprezentacija jedinki

149

Algoritam: Opsti genetski algoritam


Ulaz:
Izlaz: najkvalitetnija jedinka u tekucoj populaciji
1. Generisi pocetnu populaciju potencijalnih resenja;
2. Izracunaj prilagoenost svake jedinke u populaciji;
3. Izvrsavaj sledecu petlju sve dok nije zadovoljen uslov zaustavljanja:
Izaberi iz populacije skup jedinki za reprodukciju;
Generisi novu generaciju, primenivsi nad izabranim jedinkama
proces reprodukcije (tj. genetske operatore ukrstanje i mutaciju);
Izracunaj prilagoenost novogenerisanih jedinki;
Zameni najlosije jedinke u populaciji novogenerisanim jedinkama.
4. vrati najkvalitetniju jedinku u tekucoj populaciji
Figure 9.1: Opsti genetski algoritam
Da bi navedeni opsti algoritam bio specifikovan potrebno je definisati reprezentaciju
domena tj. skupa jedinki i funkciju kvaliteta.
Postoje mnoge varijante genetskih algoritama, pa i navedeni opsti algori moze biti variran. Na primer, moguce je ne prenositi jedinke iz
tam takode
jedne generacije u drugu, vec c itavu novu generaciju dobiti ukrstanjem od izabranih jedinki iz prethodne generacije.

9.3

Reprezentacija jedinki

Jedinke mogu biti reprezentovane proizvoljnom strukturom podataka koja opisuje


njihova svojstva (koju zovemo hromozom). Neophodno je da hromozom moze
da opise moguce resenje razmatranog problema i da se nad njim definisu genetski operatori (ukrstanje i mutacija). Genetski operatori treba da budu definisani
tako da se njima ne dobijaju jedinke koje ne predstavljaju moguca resenja (na
primer, nelegalne puteve u grafu), jer bi one samo narusavale performanse algoritma. Pogodno odabrana reprezentacija moze bitno uticati na efikasnost
algoritma.

9.3.1

Binarna reprezentacija

Najcesc e i najuspesnije korisc ena reprezentacija jedinki je u vidu nizova bitova.


Svaki bit u takvoj reprezentaciji zovemo gen. Dublja priroda binarne reprezentacije
zavisi od konkretnog problema. Na primer, ako je duzina hromozoma n (bitova)
i ako je prostor mogucih resenja interval realnih brojeva [a, b], onda je potrebno
nizova n bitova i realnih brojeva iz datog intervala.
uspostaviti vezu izmedu
Tako c e binarna reprezentacija 000
. . . 0} odgovarati broju a, a binarna reprezentacija
| {z
n

150

9 Genetski algoritmi

000
. . . 1} broju b. Broju x sa binarnom reprezentacijom izmedu
. . . 0} i 111
. . . 1}
|111{z
| {z
| {z
n

odgovara realni broj


a+

x
(x a)
2n 1

S druge strane, realnom broju x iz intervala [a, b] pridruzujemo vektor koji


predstavlja binarnu reprezentaciju broja


xa n
(2 1) .
ba
Primer 9.1 Pretpostavimo da naftnu platformu treba postaviti na pogodnom mestu na
tacaka A i B, koji je duzine 5000m. Lokacija platofrme je pogodnija ukoputu izmedu
liko na tom mestu postoje vece rezerve nafte. U biranju lokacije moguce je meriti pos A i B. Moguca resenja mogu se reprezentojece rezerve nafte na bilo kojoj tacki izmedu
tovati nizovima bitova duzine 10, tj. brojevima od 0 do 1023. Tacki A tada odgovara
broj 0 i reprezentacija 0000000000, a tacki B broj 1023 i reprezentacija 1111111111.
Tacki C na rastojanju 1320m od tacke A odgovara vrednost 1023 (1320/5000) 270
i reprezentacija 0100001110, a tacki D na rastojanju 3128m od tacke A odgovara vrednost 1023 (3128/5000) 640 i reprezentacija 1010000000.

A (0000000000)
0

1000

100

D (1010000000)

C (0100001110)
1320

200 270 300

2000

400

3000 3128

500

600 640 700

B (1111111111)
4000

800

5000

900

1000

Za vrednost funkcije prilagodenosti


jedne tacke moze se uzeti rezerva nafte izmerena u toj taci.

9.4

Funkcija prilagodenosti

Funkcija prilagodenosti
daje ocenu kvaliteta jedinke. Ukoliko je zadatak odred
iti maksimum neke funkcije, onda je prirodna funkcija prilagodenosti
sama

ta funkcija. Pogodan izbor funkcije prilagodenosti


je od izuzetne vaznosti

9.5 Inicijalizacija i zaustavljanje

151

za efikasnost algoritma. Ne postoje nikakvi opsti uslovi koje funkcija pri


lagodenosti
treba da zadovoljava (sem da je definisana za sve moguce jedinke),
mada je algoritam c esto efikasniji za funkcije koje zadovoljavaju neke specificne
je vrednost funkcije prilagodenosti

uslove. Sto
za neku jedinku veca, to c e
bit veca verovatnoca da se ta jedinka koristi za generisanje sledece generacije.
Tokom rada algoritma (tj. tokom ,,procesa evolucije) generisu se nove gen
eracije, pri c emu se ocekuje da je ukupna prilagodenost
(pa i prosecna pri
lagodenost,
jer je broj jedinki u svim generacijama jednak) sve bolji i bolji.
Primer 9.2 Potrebno je odrediti maksimum funkcije f (x) na intervalu [a, b]. Funkcija
je definisana za sve elemente datog intervala, ali nije nuzno ni neprekidna, ni diferen
cijabilna. Genetski algoritam moguce je primeniti tako da se za funkciju prilagodenosti
koristi upravo funkcija f , a da se za reprezentaciju koristi bitovska reprezentacija (na
nacin opisan u poglavlju 9.3.1). Ukoliko je potrebno odrediti minimum funkcije f (x),

onda bi za funkciju prilagodenosti


mogla da se koristi funkcija f .

9.5

Inicijalizacija i zaustavljanje

Populaciju jedinki jedne generacije, ukoliko se koristi bitovska reprezentacija,


c ini vektor binarnih vektora. U toku resavanja jednog problema, obicno sve
generacije imaju isti broj jedinki. Taj broj, velicina populacije, je parametar
algoritma i on je c esto nekoliko desetina ili stotina.
Proces inicijalizacije, tj. proces generisanja pocetne populacije je jednostavan. Najsece se pocetna populacija generise slucajno (tako da pokriva c itav
prostor pretrage). Ukoliko se koristi bitovska reprezentacija, jedinke pocetne
generacije se generisu kao slucajni brojevi u intervalu [0, 2n 1], gde je n duzina
hromozoma u izabranoj reprezentaciji. Dodatno, u pocetnu populaciju mogu
biti dodate neke specificne jedinke (na primer, iz delova prostora pretrage za
koje se veruje da sadrzi optimalna resenja) ili c itava pocetna populacija moze
biti generisana koristeci neki drugi optimizacioni metod.

9.6

Selekcija

Selekcija obezbeduje
c uvanje i prenosenje dobrih osobina populacije (tj. dobrog genetskog materijala) na sledecu generaciju. U svakoj generaciji, deo
jedinki se izdvaja za reprodukciju i generisanja nove generacije. Izdvajanje

jedinki koje c e ucestovavati u reprodukciji zasniva se na funkciji prilagodenosti

i, generalno, prilagodenije
jedinke imaju vecu verovatnocu da imaju potomstvo. U najjednostavnijim pristupima biraju se jedinke sa najvecom vrednosc u

funkcije prilagodenosti.
U drugim pristupima se se jedinke biraju slucajno,

ali sa verovatnocama koje su izvedene iz prilagodenosti,


pri c emu je moguce

da budu izabrane i neke losije prilagodene


jedinke (to moze da pomogne u
odrzvanju genetske raznolikosti i, dalje, u sprecavanju prerane konvergencije
ka nekom lokalnom optimumu). Najpopularnije strategije selekcije su ruletska
i turnirska selekcija.
U bilo kojoj strategiji selekcije postoji opasnost da se neka kvalitetna jedinka
izgubi tokom evolucionog procesa. Elitizam je varijacija procesa selekcije u kojoj se najbolja jedinka (ili nekoliko najboljih jedinki) u generaciji s titi od eliminisanja ili bilo kakvih izmena i takva prenosi u sledecu generaciju.

152

9 Genetski algoritmi

9.6.1

Ruletska selekcija

Ruletska selekcija (eng. roulette wheel selection) je proces selekcije u kojem

vece s anse da ucestvuju u reprodukciji imaju prilagodenije


jedinke.

Ako je f (i) vrednost funkcije prilagodenosti


za jedinku i, a N broj jedinki u
populaciji, verovatnoca da c e jedinka i biti izabrana da ucestvuje u reprodukciji
jednaka je
f (i)
pi = PN
j f (j)
Naziv ruletske selekcije potice od analogije koje se moze napraviti sa ruletom. Ukoliko polja ruleta imaju s irine proporcionalne verovatnocama jedinki
populacije, onda je proces biranja m jedinki za reprodukciju analogan odigravanja m partija ruleta.
Primer 9.3 Pretpostavimo da populacija ima osam jedinki: a, b, c, d, e, f, g, h i da su

njihove prilagodenosti
redom 0.10, 0.30, 0.06, 0.10, 0.40, 0.24, 0.60, 0.20. Ukupna

prilogodenost
generacije jednaka je 2.00. Sledeca tabela prikazuje verovatnoce izbora
jedinki u ruletskoj selekciji:
jedinka

prilagodenost
verovatnoca izbora

a
0.10
0.05

b
0.30
0.15

c
0.06
0.03

d
0.10
0.05

e
0.40
0.20

f
0.24
0.12

g
0.60
0.30

h
0.20
0.10

Sledeca slika ilustruje, u formi ruleta, verovatnoce izbora koje su pridruzene jedinkama.

0.05

0.03

d c

0.20

0.15

b
a

0.12

0.05

0.10

g
0.30

U opisanom pristupu, podrazumeva da funkcija prilagodenosti


ima samo
pozitivne vrednosti. Ukoliko funkcija ne ispunjava taj uslov, mora se trans
formisati u drugu funkciju prilagodenosti.
Alternativno, jedinke se mogu sor
tirati (opadajuce) po vrednosti funkcije prilagodenosti
i onda verovatnoce izbora mogu da im budu pridruzene po nekoj (opadajucoj) distribuciji.

9.7 Reprodukcija i genetski operatori

153

U ruletskoj selekciji moguce je da jedna jedinka bude vise puta izabrana


da ucestvuje u sledecoj generaciji i reprodukciji. Prevelik broj ponavljanja istih
jedinki lose utice na performanse algoritma.

9.6.2

Turnirska selekcija

U turnirskoj selekciji, jedinke ,,odigravaju turnire u kojima vece s anse za pobedu

(tj. za prelazak u narednu generaciju) imaju one sa boljom prilagodeno


sc u.
Velicina turnira k i verovatnoca p su parametari procesa turnirske selekcije.
Za jedan turnir bira se slucajno k jedinki iz populacije. Nakon toga, one se

sortiraju po vrednosti funkcije prilagodenosti


i i-ta jedinka u tako sortiranom
nizu se bira sa verovatnocom p(1 p)i1 .
Ukoliko se u procesu selekcije koristi veca velicina turnira, onda nekvalitetne
jedinke imaju manje s anse da budu izabrane. Selekcija sa velicinom turnira 1
ekvivalentna je slucajnoj selekciji. U deterministickoj turnirskoj selekciji (p = 1)
bira se najbolja jedinka u svakom turniru.
Jedinkama koje su jednom izabrane moze se zabraniti ucestvovanje u daljim
turnirima.
Turnirska selekcija se moze efikasno implementirati na paralelnim arhitekturama.

9.7

Reprodukcija i genetski operatori

U reprodukciji ucestvuju jedinke koje su izabrane u procesu selekcije. Proces


reprodukcije kontrolisu dva genetska operatora: ukrstanje i mutacija.

9.7.1

Ukrstanje

U ukrstanju (eng. crossover) ucestvuju dve jedinke koje se nazivaju roditelji.


Rezultat ukrstanja je jedna nova jedinka ili dve nove jedinke koje zovemo deca.

Ocekivano je da deca nasleduju


osobine roditelja, ukljucujuci njihovu prilagodenost,

pa i da imaju bolju prilagodenost


od svojih roditelja.
Postoji vise jednostavnih varijanti ukrstanja kada se koristi binarna reprezentacija.
U jednoj varijanti dovoljno je izabrati tacke prekida i prekombinovati ni
zove bitova jedno dete deo od jedne tacke prekida do sledece nasleduje
od
jednog roditelja, a naredni deo od drugog. Ukrstanje moze koristiti proizvoljan broj tacaka prekida (s tim da je manji od duzine hromozoma). Slike 9.2 i 9.3
ilustruju ukrstanje sa jednom i sa dve tacke prekida.
roditelj 1
roditelj 2
tacka prekida
dete 1
dete 2

Figure 9.2: Ukrstanje sa jednom tacke prekida

154

9 Genetski algoritmi

roditelj 1
roditelj 2
tacke prekida
dete 1
dete 2

Figure 9.3: Ukrstanje sa dve tacke prekida


Uniformno ukrstanje tipicno daje dva deteta. Kod ovog ukrstanja svaki bit
prvog roditelja se sa verovatnocom p prenosi na prvo dete i sa verovatnocom

1 p na drugo dete (pri c emu dete koje nije izabrano nasleduje


bit drugog
roditelja). Verovatnoca p je obicno jednaka 0.5, ali moze biti i drugacija.
U poluuniformnom ukrstanju, kombinuju se tacno pola bitova koji se razlikuju kod roditelja. Dakle, najpre se racuna Hamming rastojanje (broj razlicitih
roditelja i deli se sa dva. Dobijena vrednost daje broj bitova koji
bitova) izmedu
c e se prenositi na decu kao u shemi uniformnog ukrstanja.
Ukrstanje se primenjuje na sledeci nacin: iz skupa jedinki izabranih u procesu selekcije biraju se dve razlicite i ukrstaju sa zadatom verovatnocom (obicno
0.6 i 0.9. Tacke prekida se biraju slucajno iz skupa svih mogucih tacaka
izmedu
prekida.

9.7.2

Mutacija

Mutacija je operator koji u binarnoj reprezentaciji menja jedan ili vise slucajno
odabranih gena. Od jedne jedinke dobija se jedna nova jedinka. Verovatnoca
da c e neki bit neke jedinke populacije biti promenjen je parametar algoritma i
0.01 i 0.001. Mutacija se primenjuje nakon procesa ukrstanja.
c esto je izmedu
Uloga mutacija u genetskim algoritmima je da spreci da jedinke u populaciji postanu suvise slicne i da pomogne u obnavljanju izgubljenog genetskog materijala. Na primer, ukoliko u jednoj generaciji sve jedinke imaju istu
vrednost jednog gena, onda taj gen samo ukrstanjem nikada ne bi mogao da
se promeni. Kontrolisano podsticanje genetske raznolikosti mutacijom c esto
omogucava izbegavanje lokalnih ekstremuma. Mutacije, naime, omogucavaju
razmatranje novih delova prostrora pretrage u nadi da c e se naici na globalnim
ekstremum. Dovoljno je da se jedna jedinka priblizi globalnom ekstremumu,
pa da za nekoliko generacija sve jedinke budu u tom delu prostora pretrage.
Ukoliko je verovatnoca mutacije za svaki bit jednaka jedinici, onda se algoritam pretvara u slucajnu pretragu. Ukoliko je ta verovatnoca jednaka nuli,
onda nema mutacije i algoritam c e verovatno brzo dospeti do nekog lokalnog
ekstremuma.

9.8

Zaustavljanje

Genetski algoritam se izvrsava, tj. evolucioni proces stvaranja novih generacija


se ponavlja, sve dok nije zadovoljen neki uslov zaustavljanja. Najcesc e se koriste sledeci uslovi zaustavljanja:

9.9 Parametri algoritma

155

Pronadeno
je resenje koje zadovoljava unapred zadate (minimalne) kriterijume.
Dostignut je zadati broj generacija.

Funkcija prilagodenosti
je upotrebljena zadati broj puta.

Vrednost prilagodenosti
najboljih jedinki se u nekoliko generacija ne popravlja.
Kombinacija nekoliko uslova.

9.9

Parametri algoritma

Za vecinu varijanti genetskog algoritma potrebno je specifikovati velicinu populacije, verovatnocu ukrstanja i verovatnocu mutacije.
Verovatnoca ukrstanja je u direktnoj vezi sa procentom jedinki koje se na
kraju jedne iteracije eliminisu, tako da je dovoljno zadati jedan od njih. Ukoliko
je zadata verovatnoca ukrstanja, onda c e za svaki par razlicitih jedinki iz skupa
dobijenog selekcijom da budu generisani njihovi potomci sa tom verovatnocom

i sve tako generisane jedinke zamenice najlosije prilagodene


jedinke iz prethodne
generacije. Ukoliko je zadat procenat jedinki koje se na kraju jedne iteracije eli 25% i 50%), onda se u fazi ukrstanja parovi razlicitih
minisu (obicno izmedu
jedinki biraju i ukrastaju sve dok nije generisano dovoljno jedinki da zameni
one koje c e biti eliminisane.
Izbor parametara genetskog algoritma je c esto od kljucne vaznosti za njegove performanse (brzina dolazenja do resenja i kvalitet resenja). Optimizovanje parametara genetskog algoritma je kompleksan problem koji se najcesc e

resava izvodenjem
velikog broja eksperimenata. Za izbor pogodnih parametara c esto se koriste sami genetski algoritmi. Parametri genetskog algoritma

ne moraju biti fiksirani, vec mogu da se menjaju i prilagodavaju


tokom rada (na
primer, ukoliko su tekuce jedinke raznolike, onda treba povecati verovatnocu
ukrstanja, a smanjiti mutaciju, a ukoliko su slicne onda treba uraditi obratno,
kako bi se povecale s anse za priblizavanje globalnom optimumu).

9.10

Svojstva genetskih algoritama

Genetski algoritmi imaju s irok domen i uspesno se primenjuju na velikom


broju optimizacionih problema, c esto onih koji su NP-kompletni ili tezi. S
druge strane, jos uvek nema mnogo teorijskih rezultata koji govore o svojstvima genetskih algoritama, o kvalitetu resenja koja daju, pa c ak ni o tome
zasto su genetski algoritmi uspesni. U daljem tekstu, bice reci o nekim dobrim
i losim stranama genetskih algoritama.
Funkcija koja se optimizuje. Funkcija f koja se optimizuje moze biti potpuno
proizvoljna i ne mora da zadovoljava nikakve uslove (na primer, da bude
neprekidna ili diferencijabilna). Ipak, c esto nije lako konstruisati odgo
varajucu funkciju prilagodenosti.
Genetski algoritmi se ne mogu uspesno
primeniti na probleme za koje se moze reci samo da li je nesto resenje ili
nije. Dodatno, c esto, posebno u primenama u vestackoj inteliegenciji (na

156

9 Genetski algoritmi
primer, kretanje robota), funkcija koju treba optimizovati nije zadata eksplicitno vec implicitno, kroz veci broj kriterijuma.

Parametri algoritma. Parametri genetskih algoritama daju mogucnost uspesnog

prilagodavanja
specificnom problemu. No, upravo ta sloboda izbora
parametara je istovremeno i pretnja da mogu da budu korisc eni parametri
koji daju veoma lose performanse.
Domen genetskih algoritama. Genetski algoritmi primenljivi su na veoma s irok
skup problema. Ipak, uspesno resavanje speficnih problema zahteva izbor pogodne reprezentacije, kao i izbor pogodnih parametara, s to je tezak

problem. Stavi
se, c ak i ako su parametri dobro izabrani, genetski algoritam c e najcesc e davati losija resenja od pristupa koji je specijalizovan
za problem koji se resava. Otuda i zapazanje da su ,,neuronske mreze i
genetski algoritmi drugo i trece najbolje resenje za skoro bilo koji optimizacioni problem.
Kvalitet resenja. Ponavljanjem postupka moze se dobiti veca pouzdanost resenja.

Ukoliko nije nadeno


resenje koje je globalni optimum, c esto je nadeno
resenje koje je dovoljno dobro. Dodatno, kao rezultat algoritma moze se
smatrati neki skup najboljih resenja, s to je c esto veoma pogodno. S druge

strane, genetski algoritam ne daje nikakvu garanciju da je pronadeno


resenje globalni optimum. I zaista, genetski algoritmi c esto imaju tendenciju da idu ka lokalnim optimumima.
Zahtevani resursi. Genetski algoritmi se jednostavno implementiraju, a postoji i mnostvo raznolikih dostupnih implementacija. Iako su algoritmi
i implementacije jednostavni, izvrsavanje genetskih algoritama je c esto
veoma vremenski i memorijski zahtevno.

9.11

Primer primene genetskih algoritama evolucija agenta

Kao s to je vec receno, genetski algoritmi predstavljaju heuristicku metodu za


optimizaciju funkcija. Kako na ovako apstraktno opisanom domenu nije ocigledna
s irina primenljivosti genetskih algoritama, u ovom poglavlju bice dat jedan
konkretan, jednostavan, ali ilustrativan primer.
Neka je potrebno opisati agenta koji je u stanju da brzo vozi automobil
po stazi za karting. Staza ima start koji je ujedno i cilj i ima krivine ulevo
i udesno. Staza je izdeljena na polja. Voznju je potrebno zavrsiti s to brze.
Agent raspolaze sa nekoliko akcija prebacivanje u brzu voznju, prebacivanje
je moguce da agent
u sporu voznju, skretanje ulevo i skretanje udesno. Takode
ne preduzme nikakvu akciju. Bilo koju akciju da preduzme, agent nastavlja da
se krece (i) napred. Agent raspolaze 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 tacno jedno slobodno
polje levo ili desno. U toku kretanja, agent ne moze skretati ukoliko se krece
brzo.

9.11 Primer primene genetskih algoritama evolucija agenta

157

Kako bi voznja bila s to pre zavrsena, pozeljno 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, pocev od reprezentacije hromozoma. Zarad jednostavnosti, koristicemo modifikovanu binarnu reprezentaciju. Svaki senzor
kojim agent raspolaze moze da daje dve vrednosti. Stoga agent ne moze razlikovati vise od 25 = 32 stranja. Neka od tih stanja se nece pojavljivati u toku
voznje (na primer, prepreke i neposredno napred i levo i desno), ali nece biti
unapred odbacena radi jednostavnosti kodiranja i dekodiranja hromozoma.
Svako od mogucih stanja predstavljace jednu poziciju u hromozomu na kojoj
se belezi akcija koju agent u tom stanju preduzima. Akcije se mogu kodirati celim brojevima od 0 do 4, na primer, 0 ne preduzimati nista, 1 ubrzati, 2
usporiti, 3 skrenuti levo i 4 skrenuti desno. Na osnovu ovoga, hromozom
agenta koji u svakom stanju samo skrece desno bio bi predstavljen pomocu
niza od 32 c etvorke. Dekodiranje hromozoma moze da se realizuje tako s to bi
se svakom od senzora dodelio jedan bit pri c emu bi njegova vrednost u slucaju
postojanja prepreke bila 0, a u suprotnom 1 i u slucaju sporog kretanja 0, a u
u fiksiranom poretku, na primer, brzina,
suprotnom 1. Ovi bitovi bi se poredali
polje neposredno ispred, dva polja ispred, polje levo i polje desno. Tada bi se
akcija u slucaju brzog kretanja i sa preprekama levo i desno, a bez prepreka
na sledeca dva polja nalazila zapisana u hromozomu na mestu sa indeksom
(10011)2 = 19.
Ukrstanje moze da bude sa jednom tackom prekida, a mutacija moze da se
realizuje tako s to bi na svakoj poziciji svakog hromozoma sa nekom unapred
zadatom malom verovatnocom trenutna vrednost bila zamenjena nekom slucajno
izabranom od preostalih. Time su definisani genetski operatori.
Selekcija moze da bude jednostavna ruletska.
Funkcija koja se optimizuje u ovom slucaju nije eksplicitna, jer se njena
vrednost ne moze izracunati direktno na osnovu samog hromozoma. Stoga

c e funkcija prilagodenosti
da se izracunava simuliranjem ponasanja agenta na
nekoj stazi koja ukljucuje sve pomenute aspekte voznje (skretanje, ubrzavanje,
itd.). Voznja c e biti simulirana tako s to c e agenta u svakom koraku da se
pomera po jedno polje duz staze u pravcu kretanja. Pri tome se u svakom

koraku dekodira hromozom i odreduje


se akcija koju agent preduzima. Svako
sporo boduje se sa 1, a svako polje koje se prede
brzo,
polje koje agent prede
boduje se sa 2. Na taj nacin c e prilikom selekcije biti favorizovani agenti koji
brze prelaze stazu. Kako je najvaznije da agent uopste zavrsi trku, a tek onda
da je zavrsi s to brze, svaki agent koji zavrsi trku dobija dodatne poene (na
primer, onoliko koliko staza ima polja). Na taj nacin se agenti koji zavrsavaju
trku favorizuju u selekciji u odnosu na ostale, pa se evolucija ubrzava ka njima.
Na navedeni nacin je zavrseno dizajniranje svih aspekata genetskog algoritma.

9.11.1

Implementaciona pitanja

158

9 Genetski algoritmi

Deo III

Masinsko ucenje

Glava 10

Uvod
Masinsko ucenje je oblast vestacke inteligencije koja se moze definisati na razlicite nacine. Jedna definicija bi mogla biti da je to disciplina koja se bavi izgradnjom prilagodljivih racunarskih sisitema koji su sposobni da poboljsavaju
svoje performanse koristeci informacije iz iskustva. Masinsko ucenje bi se
moglo definisati i kao disciplina koja se bavi proucavanjem generalizacije i
konstrukcijom i analizom algoritama koji generalizuju.
Prva definicija je bliza inzinjerskom i prakticnom racunarskom nacinu razmisljanja
sa akcentom na resavanju konkretnih problema i implementaciji. Druga je bliza
c istom matematickom razmisljanju i statistici. Mi se necemo ograniciti na samo
jedan od njih.
Preciznu definiciju je nezahvalno traziti, kako zbog c estog preklapanja sa
drugim disciplinama, tako i zbog c injenice da se radi o oblasti koja je ponikla iz
nevezanih razmatranja problema ucenja u razlicitim domenima, bez zajednicke
teorijske osnove. Iako su se prva teorijska razmatranja pojavila jos kasnih 60ih u radovima Golda, univerzalne teorijske osnove su se pocele ucvrsc ivati
tek tokom 80-ih godina proslog veka. Najvazniji teorijski pristupi su Goldov
model granicnog ucenja (learning in the limit), Valiantov PAC (Probably Approximately Correct) model i verovatno najkompletnija statisticka teorija ucenja.
ostalog, i zbog svoje teznje da se
Masinsko ucenje je zanimljivo, izmedu
priblizi ljudskom ucenju po efikasnosti, kao i da ga objasni, odnosno pruzi
teorijski model za njega. Naravno, oba cilja su za sada daleko od ostvarenja u
punom smislu.
Neka od najvaznijih pitanja masinskog ucenja su:
se moze nauciti i pod kojim uslovima?
Sta
Kako se povecava efikasnost ucenja u zavisnosti od obima iskustva?
Koji su algoritmi pogodni za koje vrste problema?
Odgovore na ova pitanja treba traziti upravo kroz teorijske modele ucenja u
okviru kojih se u ovom pogledu vec doslo do znacajnih rezultata.
Razlog zbog kojeg su prakticni rezultati prethodili teorijskim bi lako mogao
biti taj s to je ova oblast duboko motivisana prakticnim primenama. Postignuti
su rezultati u raznim oblastima.

162

10 Uvod

Jedan od zanimljivijih prakticnih rezultata je postignut od strane sistema


ALVINN zasnovanog na neuronskoj mrezi, krajem osamdesetih godina dvadesetog veka, koji je naucen da vozi javnim putem u prisustvu drugih vozila bez
ljudske pomoci brzinom od oko 110km/h. Uspesno je vozio na putu duzine
oko 140km.
koriste masinsko ucenje u nekoj
Sistemi za prepoznavanje govora takode
sa kraja osamdesetih, se oslanja na neuronske
formi. Sistem Sphinx, takode

mreze i skrivene Markovljeve modele u prilagodavanju


izgovoru razlicitih ljudi,
karakteristikama mikrofona, pozadinskoj buci i slicno.
Jedan od najpoznatijih primera primene masinskog ucenja je sistem TDGammon za igranje igre Backgammon konstruisan devedesetih godina. Igrajuci
protiv sebe preko milion partija i nastavljajuci da uci u igri sa ljudskim igracima,
dostigao je nivo igre u rangu svetskog s ampiona. On kombinuje ucenje uslovljavanjem (eng. reinforcement learning) sa neuronskom mrezom koju koristi za
internu reprezentaciju naucenog znanja.
Jedan od skorijih rezultata je ucenje sistema koji kontrolise robotsku ruku
da c itanjem napona misica preko povrsine koze izvodi z eljenje pokrete.
Poslednjih godina Microsoft razvojni centar u Srbiji radi na razvoju sistema za prepoznavanje rukom pisanog teksta koji su zasnovani na masinskom

ucenju. Sistem se trenira na osnovu uzoraka koje su pisali razliciti ljudi. Takode,

radi se na prilagodavanju
sistema rukopisu korisnika. Posebna paznja je posvecena
prepoznavanju u specijalizovanim domenima. Neki od njih su prepoznavanje
matematickih formula, hemijskih dijagrama i arhitektonskih crteza.
jedna od najskorijih primena masinskog ucenja je sistem koji je u
Takode
stanju da vodi dijalog sa korisnikom u cilju pruzanja informacija koje se odnose
na primer na ugostiteljske objekte u gradu u kome se korisnik nalazi. U ovom

problemu je potrebno da sistem u odredenom


smislu razume zahteve korisnika, da se prilagodi izgovorima razlicitih ljudi, da razlikuje pozadinsku buku
od reci koje korisnik izgovara i slicno. Ovaj sistem se zasniva na ucenju uslovljavanjem.
razlicitih ljudi, razlike
Problemi koji se pri ovome javljaju su razlike izmedu
u polozajima i pokretima ruke u vreme ucenja i u vreme korisc enja, zamor
misica, znojenje i slicno. U ovom problemu su se pokazali uspesni pristupi
bazirani na neuronskim mrezama i metodi potpornih vektora.

Koliko god primene masinskog ucenja bile raznovrsne, postoje odredene


karakteristike zadataka koje se c esto ponavljaju. Stoga je moguce govoriti o
vrstama zadataka ucenja koje se c esto srecu. Klasifikacija je verovatno najcesc i
zadatak ucenja u praksi. Ona predstavlja prepoznavanje vrste objekata. Na

primer da li odredeno
elektronsko pismo predstavlja nezeljenu postu (eng. spam)
ili ne. Regresija je zadatak ucenja u kome objektima odgovaraju vrednosti iz

skupa realnih brojeva. Na primer, predvidanje


duzine z ivota osobe u zavisnosti od njenih z ivotnih navika (bavljenjem sportom, pusenje, i slicno).

10.1

Generalizacija i apstrakcija

Deduktivno zakljucivanje, vodeno


zakonima logike, moze se smatrati osnovnom
karakteristikom inteligentnog ponasavanja. Ovakvo zakljucivanje jedan je od
osnovnih nacina zakljucivanja kod ljudi. Druga karakteristika inteligentnog

ponasanja koja se moze primetiti i kod z ivotinja je prilagodavanje


ponasanja

10.2 Primer problema ucenja

163

jedinke okolini u kojoj se ona nalazi. Kroz evolutivne procese, prilagodljivost


se postize i kod nizih organizama, ali je ova sposobnost sa tacke gledista vestacke
inteligencije posebno zanimljiva kod z ivotinja i ljudi kod kojih se manifes
tuje u toku z ivota jedinke. Kod njih se prilagodavanje
postize ucenjem na osnovu primera iz iskustva i primenom naucnog znanja u slicnim situacijama u
buducnosti. Primera radi, za z ivi organizam je znacajno da uoci kljucne karakteristike neke situacije ili skupa situacija u kojima preduzimanje neke akcije
dovodi do pozeljnih odnosno nepozeljnih posledica po organizam. Prepoznavanje slicnih situacija u buducnosti omogucava organizmu da preduzimanjem
adekvatne akcije u situaciji u kojoj se nalazi predupredi ishode nepovoljne po
njega ili dovede do ishoda koje su za njega povoljni.
Apstraktnije razmatrano, moguce je govoriti o donosenju zakljucaka o nepoznatim slucajevima, na osnovu znanja o nekim drugim, poznatim, slucajevima.
Proces u kome se znanje koje vazi za neki skup slucajeva prenosi na neki njegov
nadskup, naziva se generalizacijom ili induktivnim zakljucivanjem. Generalizacija
predstavlja jedan od osnovnih koncepata masinskog ucenja.
Koncept generalizacije je direktno povezan sa konceptom apstrakcije. Naime,

da bi generalizacija bila uspesna, odredeni


apsekti entiteta o kojima se rezonuje
moraju biti zanemareni ukoliko nisu od sustinskog znacaja za generalizaciju.
Primera radi, ukoliko je potrebno nauciti vestacki sistem da prepoznaje rukom
pisani tekst i da ga prevodi u elektronski tekstualni zapis, potrebno je da sistem
zanemari specificnosti koje postoje kod razlicitih ljudi u visini i nagibu slova ili
brzini i ostrini poteza prilikom pisanja. Kontrola generalizacije i apstrakcije je
jedna od kljucnih tema u teorijskom razmatranju masinskog ucenja.
Za jednostavan primer generalizacije moze se uzeti sledeci primer. Sistem
koji prepoznaje rukom pisani tekst bi na osnovu nekoliko primera mogao da
zakljuci da se broj 0 pise kao elipsa ili krug koji prilikom pisanja mogu evenutalno biti malo otvoreni. U ovom slucaju, generalizacija je korektna. Za razliku
od deduktivnog zakljucivanja, proces generalizacije ne pruza garancije da su
zakljucci ispravni. Tako, na primer, zakljucak da se broj 1 uvek pise podvucen
crticom potkrepljen nekolicinom takvih primera ne bi bio korektan iako je kao
induktivni zakljucak moguc. Iako zakljucci dobijeni generalizacijom ne moraju
biti tacni, induktivno zakljucivanje je i dalje veoma znacajno. To je jedan od
osnovnih nacina za formiranje predstava o okruzenju, situacijama ili uzrocno
posledicnim odnosima ili formalnije receno za pravljenje modela podataka iz
iskustva. Ukoliko su u nekom domenu greske u zakljucivanju prihvatljive, algoritmi induktivnog zakljucivanja omogucavaju zakljucivanje i bez temeljnog
poznavanja i kompletnog formalnog opisivanja domena na koji se primenjuju.
mogu biti efikasniji od algoritama deduktivnog zakljucivanja.
Takode,

10.2

Primer problema ucenja

Pretpostavimo da smo zapoceli izgradnju specijalizovanog pretrazivaca Interneta i da z elimo da omogucimo korisnicima da pretrazuju samo racunarske
c lanke. Da bi ovo bilo moguce potrebno je da sistem bude u stanju da razlikuje
c lanke iz oblasti racunarstva od ostaliih c lanaka. Mozemo primetiti da se radi
o problemu klasifikacije. Kako bi sistem naucio da ispravno klasifikuje, prvo

mu je potreban odredeni
skup primera koji bi sadrzao kako racunarske, tako i
c lanke iz drugih oblasti. Recimo da je unapred sakupljeno 3000 c lanaka po

164

10 Uvod

Figure 10.1: Plavi krugovi predstavljaju racunarske c lanke, a crveni ostale. X


koordinata predstavlja frekvenciju reci racunar, a koordinta Y predstavlja
frekvenciju reci datoteka.

1500 iz obe klase. Iz obe klase c emo izdvojiti po 500 c lanaka kako bismo posle
ucenja procenili kvalitet sistema.
Da bi sproveli ucenje, potrebno je da ove c lanke pretstavimo u nekom obliku koji je pogodan za algoritam ucenja i koji bi mogao na neki nacin da
reprezentuje osnovne karakteristike na osnovu kojih se c lanci iz ove dve kategorije mogu razlikovati. Za to nam je potrebna ideja kako bismo razlikovali
c lanke. Ocekivano je da c e u c lancima iz racunarstva biti c esc e pominjani
racunarski pojmovi nego u ostalim c lancima. To svojstvo bi se moglo iskoristiti
za razlikovanje c lanaka.
U skladu sa ovim, mozemo nabrojati sve reci iz nekog recnika racunarske
terminologije koje se pojavljuju u svim c lancima koje imamo. Svaki c lanak
mozemo predstaviti vektorom frekvencija ovih reci. Frekvencija neke reci u
c lanku se racuna tako s to se broj pojavljivanja te reci podeli ukupnim brojem
pojavljivanja svih reci u c lanku. Ako je x vektor koji odgovara nekom c lanku,
onda c emo frekvencije izabranih reci oznacavati sa xi .
Posmatrajmo ove vektore geometrijski, kao da su tacke u euklidskom prostoru. Jednostavnosti radi, pretpostavicemo da se u recniku nalaze samo dve
reci racunar i datoteka.Ukoliko su u c lancima iz jedne kategorije ovi
racunarski termini visokofrekventni, a u drugim niskofrekventni, tacke koje
odgovaraju racunarskim c lancima c e se grupisati dalje od koordinatnog pocetka,
dok c e se ostale grupisati blize njemu. Pojednostavljen prikaz je dat na slici
10.2.
ovih tacaka bi se mogla provuci prava koja bi ih razdvajala kao na
Izmedu
slici 10.2. Ako nam je ova prava poznata, onda za neki nov, nepoznat c lanak
mozemo reci da je iz oblasti racunarstva ukoliko se vektor koji mu odgovara
nalazi sa iste strane prave kao i vektori racunarskih c lanaka koji su nam poznati. U suprotnom bismo smatrali da c lanak nije iz oblasti racunarstva.
Jednacina prave ima oblik

10.2 Primer problema ucenja

165

Figure 10.2: Osim krugova koji predstavljaju c lanke, prikazana je i prava koja
ih razdvaja

ax + by + c = 0
Neka je f (x) = 1 ukoliko je x c lanak iz oblasti racunarstva i f (x) = 1 u
suprotnom. Ocigledno, funkcija sgn(ax + by + c), gde sgn(t) oznacava znak
vrednosti t, pruza informaciju sa koje strane prave se nalazi tacka (x, y).
Pronalazenje z eljene prave mozemo posmatrati kao pomeranje neke po tacaka koje treba da razdlazne prave dok ona ne bude pozicionirana izmedu

vaja. Formalno, da bismo nasli razdvajajucu pravu, potrebno je da nademo


koeficijente a, b i c tako da funkcije f (x) i sgn(ax + by + c) budu jednake ili
makar jednake u vecini slucajeva. Kako bismo to uradili potrebno je da formulisemo algoritam ucenja koji c e na osnovu podataka koje imamo doci do tih
koeficijenata. Algoritam ucenja moze biti sledeci:
1. Neka je a = 0, b = 0 i c = 0 za svako i i = 0.01.
2. Za svaki trening primer < x, y > za koji nam je poznata vrednost f (<
x, y >):
(a) Izracunati sgn(ax + by + c) koristeci trenutne koeficijente a,b i c.
(b) Za koeficijente uraditi
a a + (f (< x, y >) sgn(ax + by + c)) x
b b + (f (< x, y >) sgn(ax + by + c)) y
c c + (f (< x, y >) sgn(ax + by + c)) 1
Ne mora biti ocigledno da azuriranje koeficijenata u algoritmu koji koristimo za ucenje vodi poboljsanju naucene funkcije. Pre svega, vrednost mora
biti mala kako bi korekcije bile male i postepene. Drugo, primetimo da su x i y

uvek pozitivni ili jednaki 0 i da stoga znak korekcije zavisi od razlike izmedu

166

10 Uvod

vrednosti funkcija f i sgn(ax + by + c). Ukoliko je vrednost funkcije f veca,


povecavamo koeficijente, tako da se vrednost funkcije sgn(ax + by + c) zbog
toga povecava. Analogno u slucaju da je vrednost funkcije f manja. Kad greske
nema, vrednost korekcije je 0. Stoga, ovim se funkcija sgn(ax+by+c) priblizava
se primecuje da su korekcije proporcionalne vrednostima x
funkciji f . Takode
i y, odnosno vece su za koeficijente c ija promena moze vise doprineti promeni
vrednosti funkcije sgn(ax + by + c) za dati primer. Teorijsko opravdanje za ovaj
postupak lezi u tome s to se radi o gradijentnom spustu kojim se minimizuje
srednjekvadratno odstupanje funkcije sgn(ax + by + c) od funkcije f .

Kada su koeficijenti a,b i c nadeni,


za nepoznati c lanak je dovoljno videti
sa koje strane prave se nalazi njegov vektor frekvencija reci, odnosno da li je
sgn(ax + by + c) jednako 1 ili -1.
Kada je ucenje zavrseno, pozeljno je proceniti koliko se sistem dobro ponasa.
Na pocetku smo izdvojili 1000 c lanaka koje sad mozemo klasifikovati. Kad su
c lanci klasifikovani kao meru kvaliteta ucenja mozemo izracunati udeo dobro
klasifikovanih c lanaka u ukupnom broju c lanaka. Pozeljno je da je on s to veci.

10.3

Nadgledano i nenadgledano ucenje

Postoje dve glavne formulacije problema ucenja:


Nadgledano ucenje je pristup problemu ucenja koji se odnosi na situacije u
kojima se algoritmu zajedno sa podacima iz kojih uci daju i z eljeni izlazi.
Algoritam treba da nauci da za date podatke (ne nuzno trening podatke)
pruzi odgovarajuce izlaze.
Nenadgledano ucenje je pristup problemu ucenja koji se odnosi na situacije
u kojima se algoritmu koji uci pruzaju samo podaci bez izlaza. Od algoritma koji uci ocekuje se da sam uoci neke zakonitosti u podacima koji su
mu dati.
Naravno, ovi drasticno razliciti pristupi se ne odnose na iste vrste problema. Primer nadgledanog ucenja je vec pomenuta klasifikacija c lanaka na
racunarske i ostale, kod koje su unapred poznati primeri za razlicite kategorije.
Primer nenadgledanog ucenja je takozvano klasterovanje - uocavanje grupa
na neki nacin slicnih objekata kada nemamo prethodno znanje o tome koliko
grupa postoji ili koje su njihove karakteristike. Jedan primer primene klasterovanja bi mogao da bude redukcija skupa boja slike. Pikseli slike se mogu
grupisati klasterovanjem po njihovoj blizini u RGB prostoru boja, a potom se
iz svakog klastera moze izabrati po jedna boja koja bi ga predstavljala i kojom
bi bili obojeni svi pikseli koji pripadaju tom klasteru.

10.4

Ciljna funkcija i modeli podataka

Ono s to je potrebno nauciti se u masinskom ucenju definise ciljnom funkcijom.


Ona definise z eljeno ponasanje sistema koji uci. U slucaju da korisnik z eli
da prepozna c lanke na Internetu sa sadrzajem iz racunarstva ciljna funkcija
takvim c lancima pridruzuje 1, a ostalim -1. U ranije navedenom primeru, to
je bila funkcija f . U ucenju igranja s aha, ciljna funkcija bi vrsila pridruzivanje
optimalnih poteza pozicijama s ahovske table.

10.5 Podaci

167

Kako su greske pri ucenju moguce i c ak sasvim izvesne, ucenje predstavlja

priblizno odredivanje
ove ciljne funkcije, odnosno moze biti videno
kao aproksimiranje funkcija. Funkciju kojom aproksimiramo ciljnu nazivamo modelima podataka ili hipotezama. Koristicemo oba termina. U slucaju prepoznavanja racunarskih
c lanaka model je bila funkcija sgn(ax + by + c) koja je pridruzivala 1 svim
tackama sa jedne strane prave, a -1 tackama sa druge.
Skup svih dopustivih hipoteza nazivamo prostorom hipoteza. U masinskom
ucenju prostor hipoteza se obicno ne navodi eksplicitno nabrajanjem hipoteza,
reprezentacijom hipoteze. Drugim recima, prostor hipoteza
vec je odreden
predstavlja skup svih hipoteza koje se mogu predstaviti u zadatom obliku.
Potencijalne reprezentacije su raznovrsne. Mogu predstavljati pravila oblika
IF...THEN, linearne funkcije, i druge. U primeru prepoznavanja racunarskih
c lanaka hipoteze su reprezentovane pravim definisanim preko vrednosti koeficijenata a, b i c.
Nalazenje hipoteze koja najbolje aproksimira ciljnu funkciju mozemo videti

kao pretragu prostora hipoteza koja je vodenja


podacima, a koju realizuje algoritam ucenja. Stoga se u nekom smislu algoritmi ucenja mogu smatrati algoritmima pretrage, ali u prostoru hipoteza pri c emu je uloga podataka iz iskustva
nov element koji nije bio prisutan u ranije izlozenim opstim pristupima pretrazi.
Izbor prostora hipoteza je od fundamentalnog znacaja za kvalitet ucenja.
Ukoliko prostor hipoteza ne sadrzi ciljnu funkciju, onda ona u praksi moze biti
samo priblizno naucena. To u praksi moze biti dovoljno dobro. Pored toga,
bogatstvo prostora hipoteza je od velikog znacaja. Naizgled paradoksalno,
preterano bogatstvo prostora hipoteza po pravilu dovodi do losijih rezultata.

10.5

Podaci

Jedna od definicija masinskog ucenja koje su navedene kaze da se masinsko


ucenje bavi generalizacijom, odnosno zakljucivanjem o nepoznatim objektima,
na osnovu poznatih objekata. Umesto termina objekat, c esc e c emo koristiti
termin instanca ili primerak. U slucaju prepoznavanja racunarskih c lanaka, instanca je jedan c lanak. Instance c e biti u racunaru predstavljene pmocu nekih
podataka koji ih opisuju i kojima ih identifikujemo.

10.5.1

Reprezentacija podataka

Instance se na neki nacin moraju reprezentovani u obliku koji je pogodan za


primenu algoritama ucenja. Najpogodniji nacin koji se najcesc e koristi kod algoritama masinskog ucenja uopste je predstavljanje instanci pomocu nekih njihovih svojstava, odnosno atributa (eng. feature, attribute). Svojstva ili atributi
predstavljaju karakteristike instanci kao s to su boja, velicina, tezina i slicno.
Svaki od izabranih atributa moze imati vrednost koja pripada nekom unapred
zadatom skupu. Te vrednosti su c esto numericke kao u slucaju tezine koja je
skalarna velicina i koja se najbolje opisuje brojem. Primer numericke vrednosti
moze biti i frekvencija reci u nekom c lanku kao s to je to bio slucaj u primeru sa
mogu biti i kategoricki, odnosno mogu
klasifikacijom c lanaka. Atributi takode
predstavljati imena nekih kategorija kojima se ne mogu jednoznacno dodeliti

smislene numericke vrednosti ili uredenje.


Primer kategorickog atributa moze

168

10 Uvod

biti grad u kome osoba z ivi, pol, nacionalnost i slicno. U slucaju prepoznavanja racunarskih c lanaka, oznaka klase koju treba pogoditi 1 za racunarkse
kategoricka vrednost iako je predstavljena brojem
c lanke i -1 za ostale je takode
posto se radi o dve kategorije za koje su ovi brojevi proizvoljno izabrani.
Skup atributa koji c e se koristiti u zapisu instance generalno nije unapred
zadat, vec ga je potrebno odabrati u skladu sa time koje su karakteristike instanci bitne za dati problem ucenja. Primera radi, ako je potrebno razlikovati
c lanke o operativnim sistemima od c lanaka o bazama podataka poznavanje
frekvencija reci racunar i datoteka ne nosi korisnu informaciju posto su
ove reci zastupljene u obe kategorije. Stoga te atribute nema svrhe koristiti
u ovom problemu ucenja. S druge strane, reci proces i indeks nose vise
informacije posto su uze specificne za pomenuta polja. Ukoliko je potrebno
razlikovati racunarske c lanke od drugih vrsta c lanaka izbor atributa bi mogao
da bude upravo obrnut posto reci proces i indeks mogu imati i drugacija
znacenja od onih koja im se pridruzuju u racunarskoj terminologiji. Postoje i
metode za automatski izbor podskupa atributa iz nekog s ireg skupa koje su
najrelevantnije za dati problem ucenja, ali njih ne opisujemo.
Kada su izabrani atributi pomocu kojih se instance opisuju, svaka instanca
se moze predstaviti vektorom vrednosti atributa koje joj odgovaraju.

10.5.2

Podaci za trening i podaci za testiranje

Prirodno je da svako ucenje polazi od nekih podataka. Podaci na osnovu kojih se vrsi generalizacija, nazivaju se podacima za trening, a njihov skup trening
skup. Testiranje naucenog znanja na podacima na osnovu kojih je uceno obicno
dovodi do znacajno boljih rezultata od onih koji se mogu kasnije dobiti u primenama. Stoga je pre upotrebe potrebno proceniti kvalitet naucenog znanja.
To se obicno radi tako s to se razmatra koliko je nauceno znanje u skladu sa
nekim unapred datim podacima za testiranje. Podaci za testiranje c ine test skup.
Test skup treba da bude disjunktan sa trening skupom.

Cesto
se prilikom konstrukcije sistema koji ukljucuje ucenje raspolaze ogranicenom
kolicinom podataka koja se mora upotrebiti u obe svrhe. Jedan od standardnih nacina je da se jedna trecina ili neki blizak procenat izdvoji unapred za
testiranje, a da se trening vrsi na ostatku. Takva podela je bila korisc ena i
u primeru prepoznavanja racunarskih c lanaka. Obicno se ova podela vrsi
slucajnim izborom skupa za testiranje.

10.6

Dizajn sistema koji uci

Zahvaljujuci svom brzom razvoju oblast masinskog ucenja se znacajno raz


granala, ali i dalje postoje odredene
karakteristike resavanja problema ucenja
koje su zajednicke za vecinu pristupa. Jedna od bitnih zajednickih odlika je
nacin dizajniranja sistema koji uci. Elementi dizajna su vec pomenuti u prethodnim poglavljima i sad c emo ih sumirati:
Formulacija problema ucenja:
Nadgledano ili nenadgledano ucenje
Zapis primera

10.6 Dizajn sistema koji uci

169

Izbor ciljne funkcije


Izbor prostora hipoteza
Izbor algoritma
Izbor mera kvaliteta ucenja
Sada je moguce sumirati kako su dati aspekti dizajna bili izabrani u slucaju
prepoznavanja racunarskih c lanaka.
Primer 10.1
3000 c lanaka je razvrstano u dve unapred fiksirane kategorije (racunarski i ostali), tako da je zadatak ucenja bio formulisan kao zadatak nadgledanog ucenja.
Svaki c lanak je pretstavljen vektorom frekvencija reci iz nekog recnika racunarske
terminologije. Kako bi se smanjila velicina zapisa, uzete su u obzir samo one reci
koje se javljaju bar u jednom c lanku.
Ciljna funkcija f pridruzuje 1 racunarskim c lancima, a -1 ostalim.
Prostor hipoteza odgovara skupu svih pravih u odgovarajucem prostoru. Hipoteze
su funkcije koje pridruzuju 1 tackama sa jedne strane prave, a -1 tackama sa
druge strane. Hipoteze se biraju izborom vrednosti koeficijenata a, b i c.

Algoritam ucenja je bio gradijentni spust za minimizaciju odstupanja izmedu


vrednosti ciljne funkcije i hipoteze na datim primerima.
Za meru kvaliteta ucenja uzet je udeo tacno klasifikovanih c lanaka.

U daljem tekstu bice opisana dva najcesc a zadatka masinskog ucenja


klasifikacija i regresija. Za oba metoda bice izlozene i neke metode masinskog
uz izlaganje metoda masinskog
ucenja kojima se ti zadaci c esto resavaju. Takode,
ucenja, bice diskutovani i razni bitni koncepti masinskog ucenja.

170

10 Uvod

Glava 11

Klasifikacija
Problem klasifikacije je problem razvrstavanja nepoznate instance u jednu od

unapred ponudenih
kategorija klasa. Neki od primera klasifikacije su razvrstavanje bankovnih transakcija u rizicne koje mogu predstavljati prevaru i ner
izicne koje predstavljaju uobicajene transakcije, odredivanje
autorstva tekstova
pri c emu se tekstu nepoznatog autora pridruzuje jedan od nekoliko unapred

ponudenih
autora, razvrstavanje elektronske poste u z eljenu i nezeljenu (eng. spam)
i slicno.
U navedenim primerima svaka instanca (bankovna transakcija, tekst, elektronska poruka) se moze predstaviti nekim izabranim skupom njenih atributa.
svakoj instanci se kao atribut moze dodati i oznaka klase kojoj instanca
Takode,

pripada. Problem klasifikacije se sastoji u odredivanju


vrednosti atributa klase
na osnovu preostalih atributa instance. Formalnije, problem klasifikacije se
moze videti kao aproksimacija ciljne funkcije koja svakoj instanci dodeljuje oznaku klase kojoj ta instanca pripada. Kljucno zapazanje je da je ciljna funkcija
u ovom problemu diskretna. Pri tom, u opstem slucaju, oznakama klasa se

ne mogu smisleno dodeliti numericke vrednosti niti uredenje.


Dakle, atribut
klase, c iju je vrednost potrebno odrediti, je kategoricki atribut.
Postoji veliki broj metoda kojima se ovaj problem resava. Neke od njih su
metode zasnovane na instancama (eng. instance based classification), ucenje
stabla odlucivanja (eng. decision tree induction), metoda potpornih vektora
(eng. support vector machines) i metode bajesovske klasifikacije zasnovane na
verovatnoci (eng. bayesian classification). U daljem tekstu opisacemo prve dve
pomenute metode.

11.1

Metode klasifikacije zasnovane na instancama

Osnovna karakteristika metoda zasnovanih na instancama je da ne grade eksplicitan model podataka u vidu neke funkcije kao s to to radi vecina metoda
masinskog ucenja. Stoga se klasifikacija ne vrsi na osnovu vec formulisanog
modela, nego na osnovu skupa instanci za trening. Umesto izgradnje mod
ela, instance predvidene
za treniranje se c uvaju i bivaju upotrebljene tek kad
je potrebno klasifikovati nepoznatu instancu. Time se vecina izracunavanja
premesta iz faze ucenja u fazu primene.

172

11 Klasifikacija

11.1.1

Metoda n-najblizih suseda

Metoda n-najblizih suseda (eng. n-nearest neighbours) se zasniva na vrlo jednostavnom principu nepoznatu instancu treba klasifikovati u klasu c ije su
instance najslicnije nepoznatoj. Koncept slicnosti se najjednostavnije formalizuje preko funkcija rastojanja.
Definicija 11.1 Neka je X skup instanci. Funkcija d : X X R predstavlja
rastojanje na skupu X ukoliko zadovoljava sledece uslove:
1. d(x, y) 0, pri tom d(x, y) = 0 x = y (pozitivna definitnost)
2. d(x, y) = d(y, x) (simetricnost)
3. d(x, z) d(x, y) + d(y, z) (nejednakost trougla)
Primer 11.1 Neki primeri rastojanja su:
pP
n
d(x, y) = n
i (xi yi )
d(x, y) = cos((x, y)) =

d(x, y) =

0,
1,

xy

xx yy

x=y
x 6= y

dva objekta vece, to je slicnost izmedu

Intuitivno, s to je rastojanje izmedu


njih manja i obrnuto. Naravno, posto je moguce birati razlicite funkcije rastojanja, pretpostavka je da izabrana funkcija rastojanja, u smislu relevantnom za
dva objekta.
posmatrani domen, stvarno oslikava razlicitost izmedu
Kada je funkcija rastojanja izabrana, najjednostavniji nacin klasifikacije je
klasifikovanje nepoznate instance u klasu iz koje potice instanca trening skupa
najbliza nepoznatoj instanci. Ovo je primer metode n-najblizih suseda za n = 1.
U opstem slucaju metoda n-najblizih suseda se sastoji u nalazenju n instanci iz
trening skupa koje su najblize nepoznatoj instanci i njenom klasifikovanju u
pronadenih

klasu c iji se elementi najcesc e javljaju medu


n najblizih suseda.
vise klasa, nije moguce doneti odU slucaju izjednacenog ishoda izmedu
luku, ali se u praksi ovaj osnovni algoritam moze modifikovati kako bi se
ovakvi slucajevi razresili.
Analizirajmo detaljnije metodu n-najblizih suseda. Posmatrajmo nepoznate instance A i B prikazane na slici 11.1.1. Metodom n-najblizih suseda uz
korisc enje euklidskog rastojanja instanca A biva klasifikovana u crvenu klasu
za sve vrednosti n od 1 do 5. Klasifikacija instance A je postojana zato s to se
ona nalazi blizu crvenih instanci, a udaljeno od plavih instanci. S druge strane,
klasa instance B moze da varira u zavisnosti od broja n. Za n = 1 instanca B
se klasifikuje u crvenu klasu. Za n = 2 ne moze se odluciti. Za n = 3 instanca
B se klasifikuje u plavu klasu. Za n = 4 ponovo nije moguce odluciti, a za
n = 5, ona se ponovo klasifikuje u crvenu klasu. Klasifikacija instance B nije
postojana jer se ona nalazi blizu instanci iz obe klase. Znaci, metoda n-najblizih
suseda je postojana u unutrasnjosti oblasti koju zauzimaju instance jedne klase,
ali je nepostojana na obodu te oblasti. Ovo ponasanje bi se moglo uociti i kod
drugih metoda klasifikacije.
Pored toga s to se nepostojanost klasifikacije moze demonstrirati menjanjem
moze analizirati i za fiksiranu vrednost parametra
parametra n, ona se takode

11.1 Metode klasifikacije zasnovane na instancama

173

Figure 11.1: Stabilnost klasifikacije pomocu algoritma n-najblizih suseda


n. Moze se primetiti da je za manje vrednosti parametra n nepostojanost pri
variranju vrednosti atributa instance veca nego za vece vrednosti parametra n.

Odredivanje
vrednosti parametra n koja je pogodna za upotrebu se vrsi empirijski evaluacijom uspesnosti klasifikacije za razlicite vrednosti parametra
n. Bira se vrednost n za koju je klasifikacija bila najuspesnija. Mere i metode
pomocu kojih se vrsi evaluacija uspesnosti klasifikacije bice izlozene kasnije u
ovom poglavlju.
Kao s to se moze videti u slucaju metode najblizih suseda, jos jedno bitno
svojstvo metoda zasnovanih na instancama je njihova lokalnost. Nepoznata
instanca se klasifikuje iskljucivo ili uglavnom na osnovu poznatih instanci koje
se nalaze unjenoj blizini. Ovo svojstvo doprinosi fleksibilnosti modela koje ove
metode (implicitno) grade.

11.1.2

N-grami

Metode masinskog ucenja su c esto formulisane tako da se jednostavno primenjuju na numericke podatke, ali tesko na podatke u nekom drugom obliku.
Stoga se traze nacini da se i drugi podaci predstave u numerickom obliku. To

c esto podrazumeva i odredeni


gubitak informacije. U slucaju problema klasifikacije tekstova, proteinskih sekvenci i slicnih podataka c esto se u svrhu predstavljanja podataka u numerickom obliku koriste n-gramski profili [?].
Ako je data niska S = s1 s2 . . . sN nad azbukom , gde je N pozitivan ceo
broj, n-gram niske S, za n N , je bilo koja podniska susednih simbolja duzine
n. 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 (n-gram, frekvencija) gde je
frekvencija izracunata u odnosu na sve n-grame niske. Ovakvi profili predstavljaju reprezentaciju pogodnu za metode klasifikacije i c esto se koriste zajedno sa metodom n-najblizih suseda.

174

11 Klasifikacija

Osnovne prednosti korisc enja n-grama su robusnost (na primer, nisu mnogo
osetljivi na greske u kucanju ili na pojavljivanje reci u razlicitim gramatickim
oblicima), nezavisnost od domena koji se analizira, efikasnost (dovoljan je jedan
prolaz kroz tekst) i jednostavnost. Problem je eksponencijalna zavisnost broja
mogucih n-grama u odnosu na duzinu n-grama.
N-gramski profili su uspesno korisc eni u razlicitim primenama koje ukljucuju
prepoznavanje autorstva tekstova, prepoznavanje jezika kojim je tekst pisan,

prepoznavanje govora i odredene


probleme iz oblasti bioinformatike.
Primer 11.2 U ovom primeru razmotricemo klasifikaciju tekstova prema jeziku. Srpski i engleski jezik bice predstavljenim po jednim kracim tekstom oznacenim sa S1 i
E1. Posto se izracunaju frekvencije n-grama za ta dva teksta, njihovi n-gramski profili c ine trening skup. Test skup c e biti dobijen na osnovu c etiri kratka teksta od kojih
su dva na srpskom oznacena sa S2 i S3, a dva na engleskom jeziku oznacena sa E2 i
E3. Klasifikacija c e biti izvrsena pomocu algoritma 1-najblizih suseda. U tekstovima
na srpskom jeziku nisu korisc 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 izvrsiti direktno zakljucivanje zahteva primenu
pretrage.
Manje apstraktan primer je upravljanje robotskom rukom. Pretpostavimo da robotska ruka ima nekoliko mehanickih zglobova cije se kretanje kontrolise elektricnim impulsima. Pri tom, neki zglobovi omogucavaju rotacije samo oko jedne ose (kao ljudski
lakat ili zglobovi na pristima), a drugi rotaciju oko veceg broja osa (kao ljudsko rame ili
zglobovi u korenu prstiju). Pokret hvatanja case ovakvom robotskom rukom je netrivijalan zadatak, ali se moze razbiti na sekvencu atomicnih koraka pokreta pojedinacnih
zglobova oko razlicitih osa za odreden 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
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.
Dati primeri motivisu razmisljanje o pretrazi kao o nalazenju niza akcija kojima
se ostvaruje cilj kada to ne moze biti ostvareno pojedinacnim akcijama. Iako u opstem
slucaju ovakva definicija ne mora delovati adekvatno, u kontekstu vestacke inteligencije
u kome obicno pretpostavljamo postojanje nekog entiteta koji deluje preduzimanjem
nekih akcija (agenta), ona je prirodna.
E1: There are two paths to achieving an AGI, says Peter Voss, a software developer
and founder of the firm Adaptive A.I. Inc. One way, he says, is to continue developing

11.1 Metode klasifikacije zasnovane na instancama

175

narrow AI, and the systems will become generally competent. It will become obvious
how to do that. When that will happen or how it will come about, whether through
simbots or some DARPA challenge or something, I dont know. It would be a combination of those kinds of things. The other approach is to specifically engineer a system
that can learn and think. Thats the approach that [my firm] is taking. Absolutely
I think thats possible, and I think its closer than most people think five to 10 years,
tops. The two approaches outlined by Vosseither tinkering with mundane programs to
make them more capable and effective or designing a single comprehensive AGI system
speak to the long-standing philosophical feud that lies at the heart of AI research: the
war between the neats and the scruffies. J. Storrs Hall, author of Beyond AI: Creating
the Conscience of the Machine (Prometheus Books, 2007), reduces this dichotomy to a
scientific approach vs. an engineering mind-set. The neats are after a single, elegant
solution to the answer of human intelligence, Hall says. Theyre trying to explain the
human mind by turning it into a math problem. The scruffies just want to build something, write narrow AI codes, make little machines, little advancements, use whatever
is available, and hammer away until something happens. The neat approach descends
from computer science in its purest form, particularly the war game studies of Von
Neumann and his colleagues in the 1930s and 1940s. The 1997 defeat of world chess
champion Garry Kasparov by IBMs Deep Blue computer is considered by many the
seminal neat success. Up until that moment, the mainstream scientific community
generally accepted the premise that AIs could be written to perform specific tasks reasonably well, but largely resisted the notion of superhuman computing ability. Deep
Blue proved that an AI entity could outperform a human at a supposedly human task,
perceiving a chess board (Deep Blue could see 200 million board positions per second)
and plotting a strategy (74 moves ahead as opposed to 10, the human record).
S2: Precizni postupci za resavanje matematickih problema postojali su u vreme starogrckih matematicara (npr. Euklidov algoritam za odredivanje najveceg zajednickog
delioca dva broja), a i pre toga. Ipak, sve do pocetka dvadesetog veka nije se uvidala
potreba za preciznim definisanjem pojma algoritma. Tada je, u jeku reforme i novog
utemeljivanja matematike, postavljeno pitanje da li postoji algoritam kojim se (pojednostavljeno receno) mogu dokazati sve matematicke teoreme. Da bi se ovaj problem
uopste razmatrao, bilo je neophodno najpre definisati (matematicki precizno) sta je to
precizan postupak, odnosno sta je to algoritam.
S3: Dositej Obradovic (svetovno ime Dimitrije) (Cakovo, 1744 Beograd, 1811) je
bio srpski prosvetitelj i reformator revolucionarnog perioda nacionalnog budjenja i preporoda. Rodjen je u rumunskom delu Banata tadasnje Austrije. Skolovao se za kaludjera, ali je napustio taj poziv i krenuo na putovanja po celoj Evropi, gde je primio ideje
evropskog prosvetiteljstva i racionalizma. Ponesen takvim idejama radio je na prosvecivanju svog naroda, prevodio je razna dela medju kojima su najpoznatije Ezopove
basne, a potom je i sam pisao dela, prvenstveno programskog tipa, medju kojima je najpoznatije Zivot i prikljucenija. Dositej je bio prvi popecitelj (ministar) prosvete u
Sovjetu i tvorac svecane pesme Vostani Serbie. Njegovi ostaci pocivaju u Beogradu,
na ulazu u Sabornu crkvu.
E2: The planet Mars, I scarcely need remind the reader, revolves about the sun at a
mean distance of 140,000,000 miles, and the light and heat it receives from the sun is
barely half of that received by this world. It must be, if the nebular hypothesis has any

176

11 Klasifikacija

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.

E3: Principia Mathematica, the landmark work in formal logic written by Alfred
North Whitehead and Bertrand 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 developing and
popularizing modern mathematical logic. It also served as a major impetus for research
in the 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.
Prilikom izdvajanja n-grama korisc ena je vrednost n = 3. Pri tom je iz tekstova
S1 i E1 izdvojeno po 10 najfrekventnijih n-grama. Oni c e c initi atribute instanci na
osnovu kojih c e biti vrseno treniranje i testiranje. Trening i test skup su dati u tabeli
11.1.
N-gram
JE
PR
ANJ
KO
JA
JE
PO
SE
NJE
U
TH
THE
HE
ING
NG
CO
ER
ND
TO
TO

Trening skup
S1
E1
0.0129 0
0.0125 0.0023
0.0076 0
0.0076 0
0.0076 0
0.0067 0
0.0067 0.0009
0.0062 0.0018
0.0058 0
0.0058 0
0
0.0212
0
0.0148
0
0.0120
0
0.0088
0
0.0078
0.0004 0.0074
0.0009 0.0069
0
0.0065
0.0018 0.0065
0.0009 0.0065

S2
0.0131
0.0098
0.0082
0.0016
0.0033
0.0082
0.0147
0.0049
0.0065
0.0033
0
0
0
0
0
0
0
0
0.0049
0.0033

Test skup
S3
E2
0.0201 0
0.0148 0
0.0027 0
0.0027 0
0.0040 0
0.0121 0
0.0080 0
0.0027 0.0016
0.0027 0
0.0067 0
0
0.0270
0
0.0202
0
0.0185
0
0.0017
0
0.0034
0
0.0051
0
0.0051
0
0.0101
0
0.0034
0
0.0034

E3
0
0
0
0
0
0
0.0016
0.0032
0
0
0.0175
0.0191
0.0127
0.0032
0.0048
0
0.0032
0.0079
0.0016
0.0016

Table 11.1: Trening i test skup za klasifikaciju tekstova prema jeziku. Za svaki
3-gram prikazana je njegova frekvencija u tekstu S1 i E1.

11.2 Ucenje stabala odlucivanja

177

Prilikom klasifikacije bice korisc eno Euklidsko rastojanje


v
u n
uX
d(x, y) = t (xi yi )2
i=1

Potrebno je ispitati rastojanja od instanci test skupa do instanci trening skupa.


d(S2, S1) = 0.0124
d(S2, E1) = 0.0417
d(S3, S1) = 0.0133
d(S3, E1) = 0.0450
d(E2, S1) = 0.0482
d(E2, E1) = 0.0149
d(E3, S1) = 0.0397
d(E3, E1) = 0.0141
Posto je rastojanje od instance S2 do S1 manje nego od S2 do E1, zakljucuje se
da je S1 najblizi sused instance S2. Zbog toga se instanca S2 prepoznaje kao tekst na
sprskom jeziku. Slicno se ispravno zakljucuje i da je S3 tekst na srpskom, E2 tekst na
tekst na engleskom jeziku. Posebno je zanimljivo da tekstovi S3
engleskom i E3 takode,
i E2 po svom sadrzaju nemaju dodira sa instancama za trening S1 i E1 sto ne ometa
postupak klasifikacije.

11.2

Ucenje stabala odlucivanja

Razmotrimo igru 20 pitanja. Jedan igrac zamislja neki predmet, a drugi treba
da pogodi o kom je predmetu rec. Kako bi pogodio o kom predmetu se radi
ima pravo da postavi 20 pitanja na koje odgovor moze biti
igrac koji pogada
da ili ne. Kada misli da je postavio dovoljno pitanja, igrac moze dati svoj sud
o kom predmetu se radi i igra se zavrsava. Ocito, proces ispitivanja se moze
predstaviti u vidu stabla koje u svakom c voru ima po jedno pitanje, osim u
listovima u kojima se nalazi sud igraca o nepoznatom predmetu. Svaki c vor
osim listova ima dve grane oznacene sa da ili ne koje vode u podstablo koje
odgovara nastavku ispitivanja posle razmatranog pitanja. Ovo je primer stabla
odlucivanja.
Ovakva stabla se mogu uopstiti zanemarivanjem ogranicenja na 20 pitanja i
tako s to bi se dozvolilo da odgovori ne moraju biti samo da ili ne, vec da mogu

pripadati odredenom
unapred definisanom skupu za dato pitanje. Ovakva
stabla se mogu automatski nauciti iz primera koji za svaku instancu ukljucuju
vrednosti njenih atributa i vrednost ciljne funkcije za tu instancu.
Ucenje stabala odlucivanja je metod aproksimacije diskretnih ciljnih funkcija
u kome se naucena funkcija predstavlja u vidu stabla. Slicno igri 20 pitanja,
svakom c voru stabla odgovara test nekog atributa instance, a grane koje izlaze
iz c vora razlicitim vrednostima tog atributa. Listovima odgovaraju vrednosti
ciljne funkcije. Instance su opisane vrednostima svojih atributa. Klasifikuju se
polazeci od korena, spustajuci se niz granu koja odgovara vrednosti testiranog

178

11 Klasifikacija

atributa instance koju klasifikujemo. Klasa se dodeljuje instanci kad se dode


do lista.
Ucenje stabala odlucivanja je vec primenjeno u razlicitim problemima. Jedan

primer se odnosi na predvidanje


buduce potraznje za knjigama u bibliotekama,
na osnovu nekih njihovih atributa (npr. jezik, datum objavljivanja, datum
da nece biti skoro
poslednjeg iznajmljivanja itd.). Knjige za koje se predvida

trazene se mogu smestiti u magacin. Istrazivanje je radeno


u biblioteci univerziteta Harvard. Sredinom devedesetih stabla odlucivanja su primenjena
u klasifikaciji tumora i prognozi njihovog ponasanja. Svaka instanca je opisivana pomocu 31 atributa, a klasifikacije su date nezavisno od strane vise
strucnjaka. U astronomiji stabla odlucivanja su primenjena u cilju razlikovanja
zvezda i tragova kosmickih zraka na snimcima teleskopa Habl. Na osnovu 20
numerickih karakteristika, sa stablima dubine do 9 c vorova, postignuta je pre postoje primene i u ekonomiji i drugim
ciznost klasifikacije od 95%. Takode
oblastima.
Korisc enje stabla odlucivanja nije podjednako pogodno za sve probleme
ucenja. Potrebno je da se instance predstavljaju pomocu vrednosti fiksnog
broja atributa. Skup vrednosti bi trebalo da bude diskretan i mali, mada se
na kontinualne atribute moze primeniti diskretizacija tako s to bi se skup podelio u podintervale. Svakom podintervalu se pridruzuje oznaka koja zamenjuje
vrednosti atributa iz tog intervala u zapisima instanci. Stabla odlucivanja se
pokazuju posebno primenljiva u slucaju kada je neophodno predstavljanje disjunkcija uslova, kada podaci za trening sadrze greske i kada u trening skupu
postoje instance kojima nedostaju vrednosti nekih atributa.
Ukoliko stablo odlucivanja instanci dodeljuje neku klasu, to znaci da instanca ispunjava sve uslove koji su definisani putanjom od korena do odgovarajuceg lista kroz stablo i oblika su atribut=vrednost. Stoga putanje kroz stablo predstavljaju konjunkcije ovakvih uslova. Za svaku klasu moguce je uociti
putanje koje se zavrsavaju listovima koji odgovaraju toj klasi. Disjunkcija svih
takvih konjunkcija definise instance koje pripadaju datoj klasi prema datom
stablu.
Jedan od najpoznatijih algoritama za ucenje stabla odlucivanja je ID3 [?]
na koji c emo se skoncentrisati. Ovaj algoritam konstruise stablo od korena,
nanize, pitajuci se u svakom c voru koji je najbolji atribut koji se u datom c voru

moze testirati. Ovo se odreduje


statistickim kriterijumom koji meri koliko
dobro neki atribut sam klasifikuje podatke. Atribut ne moze biti dva puta
korisc en u jednoj putanji od korena do lista. Za sve vrednosti odabranog atributa

kreiraju se grane do c vorova naslednika, a podaci za treniranje se dele izmedu

ovih c vorova tako da svaki od njih nasleduje


primere koji imaju odgovarajucu
vrednost prethodno testiranog atributa. Za svaki od c vorova naslednika ovaj
postupak se rekurzivno primenjuje sve dok nije ispunjen bar jedan od sledeca
dva uslova: (1) u putanji od korena do trenutnog c vora iskorisc eni su svi atributi,
ili (2) sve instance za trening koje su pridruzene trenutnom c voru imaju istu
vrednost ciljnog atributa. Svakom listu se pridruzuje najcesc a oznaka instanci
za trening koje su mu pridruzene. Algoritam je preciznije dat na slici 11.2.
Bitno je pitanje statistickog kriterijuma koji c e biti korisc en za izbor najboljeg atributa za testiranje u nekom c voru. ID3 bira atribut koji maksimizuje
takozvani dobitak informacije na skupu instanci koje su pridruzene posmatranom c voru. Dobitak informacije predstavlja razlku entropije u odnosu na ciljni
atribut skupa instanci za trening S pre deljenja i prosecne entropije posle del-

11.2 Ucenje stabala odlucivanja

179

Algoritam: ID3(P rimeri, Atributi)


Ulaz: P rimeri je skup instanci za trening, a Atributi je lista atributa koji
se mogu testirati u cvorovima stabla.
Izlaz: Stablo odlucivanja koje odgovara datim instancama
1. Napraviti koreni cvor stabla R.
2. Ako sve instance iz P rimeri pripadaju istoj klasi, vratiti cvor R sa
oznakom te klase.
3. Ako je Atributi prazna lista, vrati cvor R oznacen oznakom najcesce
klase koja se javlja u P rimeri.
4. U suprotnom
Neka je A Atributi najbolji* atribut za testiranje u odnosu na
P rimeri
Neka je A atribut koji se testira u R
Za svaku mogucu vrednost vi atributa A
Dodaj granu iz R koja odgovara testu A = vi
Neka je P rimerivi podskup od P rimeri takav da svi njegovi elementi imaju vrednost vi atributa A
Ako je P rimerivi prazan, onda na dodatu granu iz R dodati
list sa oznakom najcesce klase u P rimeri
U suprotnom na dodatu granu nadovezati podstablo
ID3(P rimerivi ,Atributi \ {A})
3. Vratiti R.
* Atribut je najbolji prema nekom statistickom kriterijumu.
Figure 11.2: Algoritam ID3

jenja prema nekom atributu A. Entropija predstavlja meru neuredenosti


nekog
sistema. Ako sa pi oznacimo verovatnocu da instanca pripada i-toj kasi, onda
se entropija moze definisati sledecim izrazom:
Entropija(S) =

c
X

pi log2 pi

i=1

Po definiciji vazi 0 log2 0 = 0. Entropija se moze interpretirati i kao minimalni ocekivani broj bitova potrebnih za kodiranje klasifikacije proizvoljne instance iz S. Primera radi, neka je potrebno poslati informaciju o klasi instance
udaljenom primaocu. Neka je broj klasa c i neka je p0 = 1 (tada je pi = 0
za 1 i c). U tom slucaju je sigurno da c e instanca imati klasifikaciju 0
i nije potrebno nikakvo kodiranje informacije. U slucaju da je pi = 1/c za
0 i c, svi ishodi su jednako verovatni i za kodiranje je potrebno iskoristiti
log2 c bitova. U slucaju raspodele koja nije uniformna, dodeljujuci krace kodove
javljaju, moze se doklasama koje se c esc e javljaju, a duze onima koje se rede

180

11 Klasifikacija

biti manja prosecna duzina kodiranja. Dobitak informacije stoga poredstavlja


smanjenje u potrebnom broju bitova za kodiranje klase proizvoljne instance,
kada je poznata vrednost koju na njoj ima atribut A. Dobitak informacije se
formalno definise na sledeci nacin:
Dobitak(S, A) = Entropija(S)

X
vV red(A)

|Sv |
Entropija(Sv )
|S|

(11.1)

gde je c broj klasa, odnosno vrednosti ciljnog atributa, pi udeo elemenata skupa
S koji pripadaju klasi i u celom skupu S, V red(A) predstavlja skup svih mogucih
vrednosti atributa A, a Sv = {s S|A(s) = v}.
Pored entropije, postoje i druge mere koje se mogu koristiti za merenje

neuredenosti
nekog skupa. Jedna jednostavna mera je greska klasifikacije. Ona
predstavlja gresku koja se c ini ukoliko se sve instance nekog skupa klasifikuju
u najbrojniju klasu u tom skupu. Stoga, ako je pi verovatnoca da instanca pripada i-toj klasi, greska klasifikacije se definise izrazom
Err(S) = 1 max pi
i

Za ovu meru se moze definisati dobitak analogan opisanom dobitku informacije ukoliko se u izrazu 11.1 entropija zameni greskom klasifikacije.
Primer 11.3 U tabeli 11.2 su date instance koje opisuju razlicite z ivotinje, sa datom
klasifikacijom koja oznacava da li je z ivotinja opasna po c oveka. Izdvojili smo neko
liko karakteristika koje bi mogle biti relevantne u odredivanju
ciljne funkcije, ali smo
namerno dodali dva atributa koji nisu relevantni broj nogu i parnost prosecne visine
u okviru vrste, izrazene u centimetrima.

Zivotinja
Lav
Macka
Koza
Zec
Komodo zmaj

Velicina
Velika
Mala
Mala
Mala
Velika

Ishrana
Meso
Meso
Biljke
Biljke
Meso

Otrovnost
Neotrovna
Neotrovna
Neotrovna
Neotrovna
Otrovna

Broj nogu
4
4
4
4
4

Parnost visine
Neparna
Neparna
Parna
Neparna
Neparna

Table 11.2: Skup primera za trening


Da bi se izgradilo stablo odlucivanja, za svaki od atributa je potrebno izracunati
dobitak informacije pri deljenju skupa podataka prema tom atributu. U prvom koraku,
vazi:
2
2 3
3
Entropija(S) = log2 log2 = 0.971
5
5 5
5
Ukoliko se izvrsi podela instanci po vrednosti prvog atributa, dobijamo
Entropija(S|M ala) = 1 log2 1 0 log2 0 = 0
Entropija(S|V elika) = 0 log2 0 1 log2 1 = 0
Dobitak(S, V elicina) = 0.971

2
3
0 0 = 0.971
5
5

Opasna
Da
Ne
Ne
Ne
Da

11.2 Ucenje stabala odlucivanja

181

Slicno se dobija:
Dobitak(S, Ishrana) = 0.42
Dobitak(S, Otrovnost) = 0.322
Dobitak(S, Broj nogu) = 0
Dobitak(S, P arnost visine) = 0.171
Odavde se vidi da je najbolji atribut za testiranje u prvom c voru atribut Velicina.
Stablo koje se u ovom slucaju dobija primenom algoritma ID3 je dato na slici 11.3. U
slucaju datih primera za ucenje, dobijeno stablo je bilo ocigledan uzbor i bez primene
bilo kakve metodologije.

VELICINA

mala

NE

velika

DA

Figure 11.3: Jednostavno stablo odlucivanja


Nesto komplikovanije stablo odlucivanja moze se dobiti dodavanjem primera iz
tabele 11.3.

Zivotinja
Zmija
Pcela ubica
Morska krava

Velicina
Mala
Mala
Velika

Ishrana
Meso
Biljke
Biljke

Otrovnost
Otrovna
Otrovna
Neotrovna

Broj nogu
0
6
0

Parnost visine
Parna
Parna
Parna

Table 11.3: Dodatni primeri za trening


Jedno rucno konstruisano stablo koje je saglasno sa podacima za trening je dato
na slici 11.4. Izbor loseg atributa za testiranje u korenom c voru je namerno ucinjen.
To dovodi do potrebe za ponavljanjem istih testova u levom i desnom podstablu, posto

informacija dobijena testiranjem u kornenu nije relevantna za odredivanje


klase in u slucaju z ivotinjske vrste sa parnom prosecnom visinom koja je otrostance. Takode,
vna, imamo nepotreban test vezan za njenu ishranu. U oba slucaja klasa je ista, pa se
taj test moze zameniti listom sa klasom DA. Upotreba ID3 algoritma daje dosta bolje
stablo odlucivanja.
Vrednosti entropije i dobitka informacije se sada razlikuju:
1 1
1
1
Entropija(S) = log2 log2 = 1
2
2 2
2
Ukoliko se izvrsi podela instanci po vrednosti prvog atributa, dobijamo

Opasna
Da
Da
Ne

182

11 Klasifikacija
PARNOST VISINE
parna

neparna

OTROVNOST
neotrovna

otrovna

VELICINA

NE

ISHRANA

velika biljke

mala

OTROVNOST

DA

ISHRANA
biljke

neotrovna

VELICINA

meso mala
DA

NE

NE DA

DA

velika
ISHRANA
biljke

meso

otrovna

meso

NE DA

Figure 11.4: Rucno konstruisano stablo odlucivanja

3 2
2
3
Entropija(S|M ala) = log2 log2 = 0.971
5
5 5
5
1
1 2
2
Entropija(S|V elika) = log2 log2 = 0.918
3
3 3
3
Dobitak(S, V elicina) = 1

3
5
0.971 0.918 = 0.049
8
8

Slicno se dobija:
Dobitak(S, Ishrana) = 0.189
Dobitak(S, Otrovnost) = 0.549
Dobitak(S, Broj nogu) = 0
Dobitak(S, P arnost visine) = 0.156
Posle dodavanja novih instanci, najbolji atributi za testiranje su Otrovnost i Ishrana.
Rekurzivnom primenom ovog postupka dobija se stablo na slici 11.5. Ono je ocigledno
manje od rucno konstruisanog i ima relevantnije atribute pri vrhu stabla, dok se dva
nebitna atributa uopste ne testiraju.
Kao i drugi metodi ucenja, ID3 se moze shvatiti kao pretraga prostora hipoteza
za onom koja najbolje odgovara podacima za trening. Prostor pretrage je potpun prostor svih stabala odlucivanja. Svaka diskretna funkcija se moze predstaviti nekim stablom odlucivanja, tako da se ne moze desiti da ciljna funkcija
nije u prostoru hipoteza. ID3 u svakom trenutku c uva samo jednu hipotezu,
pa je nemoguce znati koliko ima drugih hipoteza koje su saglasne sa podacima
za trening. Posto nema vracanja u pretrazi (backtracking), vec se stablo gradi

11.3 Mere kvaliteta i tehnike evaluacije klasifikacije

183

OTROVNOST
neotrovna

otrovna

VELICINA
mala
NE

DA

velika
ISHRANA
biljke

NE

meso

DA

Figure 11.5: Stablo odlucivanja konstruisano pomocu ID3 algoritma


od jednostavnijeg ka slozenijem, postoji opasnost od dostizanja lokalnih optimuma koji nisu globalni. Jedna vrsta vracanja je odsecanje ili potkresivanje (pruning) stabla koje c e biti objasnjeno kasnije. Zahvaljujuci tome s to ID3 uci iz svih
podataka za trening odjednom, greske u pojedinacnim instancama ne dolaze
toliko do izrazaja.
Treba primetiti da ID3 preferira stabla sa manjom dubinom, kao i stabla
u kojima se atributi koji nose veci dobitak informacije nalaze blize korenu.
Ovo je posledica toga s to izgradnja stabla pocinje od praznog stabla pri c emu
se dodaje nivo po nivo i nacina na koji se biraju atributi koji se pridruzuju
c vorovima. Afinitet prema kracim stablima je zanimljiva pretpostavka jer je
u skladu sa odavno poznatim filozofskim principom kojim se c esto vode i
naucnici - Okamovom ostricom: entitete ne treba umnozavati preko potrebe,
odnosno najjednostavnije objasnjenje je verovatno i najbolje. Stabla odlucivanja
sa manjom dubinom imaju manji broj listova. Svakoj putanji od krena do nekog
od listova odgovara po jedno pravilo oblika
IF A1 = v1 A2 = v2 ... An = vn T HEN
Klasa = klasa koja odgovara listu
gde su Ai 0 i n tributi koji se testiraju na putanji od korena do odgovarajuceg c vora, a vi njihove vrednosti za datu instancu. Kako stabla sa manjom dubinom, predstaljaju manje skupove ovakvih pravila, mozemo ih smatrati jednostavnijim.

11.3

Mere kvaliteta i tehnike evaluacije klasifikacije

Kada se govori o trazenju modela koji najbolje aproksimira ciljnu funkciju,


potrebno je dati i mere kvaliteta modela, odnosno ucenja. Mogu se koristiti
razlicite mere u zavisnosti od vrste problema, ali za neke vrste problma vec
postoje neke opste prihvacene mere. U slucju problema klasifikacije se obicno

184

11 Klasifikacija

koristi preciznost, odnosno broj tacno klasifikovanih instanci podeljen ukupnim


brojem instanci. U primeru sa prepoznavanjem racunarksih c lanaka, smo upravo koristili preciznost kao meru kvaliteta. Ako je n ukupan broj c lanaka i ako
sa r oznacimo broj racunarskih c lanaka koji su klasifikovani kao racunarski
c lanci i sa o broj ostalih c lanaka koji su klasifikovani kao da nisu racunarski,
tada je preciznost u tom primeru
r+o
n
U nekim slucajevima preciznost nije adekvatna mera. Ukoliko postoje dve
klase i jedna je znacajno manja od druge, moguce je dobiti visoku preciznost
tako s to c e se sve instance klasifikovati u vecu grupu. Takav je slucaj 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 neupotrebljiv. Stoga je u takvim slucajevima
bitna mera osetljivost klasifikatora, odnosno njegova mogucnost da primeti instance koje se traze (npr. bolesne pacijente). Opstije, neka su date dve klase
C+ i C koje smatramo pozitivnim i negativnim primerima neke kategorije.
Na primer pacijenti koji imaju i pacijenti koji nemaju neku bolest. Tada pod
stvarno pozitivnim instancama podrazumevamo pozitivne instance kojie su
prepoznate kao pozitivne. Pod stvarno negatinvim, instance koje su negativne
i prepoznate kao negativne. Pod lazno pozitivnim podrzaumevamo instance
koje su negativne, ali su greskom u klasifikaciji proglasene pozitivnim i pod
lazno negativnim podrazumevamo instance koje su pozitivne, ali su greskom
klasifikovane kao negativne. Brojeve ovih instanci oznacavamo redom SP ,
SN , LP i LN . Ove brojeve obicno zapisujemo u takozvanoj matrici konfuzije koja po vrstama prikazuje kako su instance klasifikovane, a po kolonama
prikazuje koje su stvarne klase instanci. Ova matrica je prikazana tabelom 11.4.
p=

KP
KN

P
SP
LN

N
LP
SN

Table 11.4: Vrste matrice konfuzije u zbiru daju broj instanci koje su klasifikovane pozitivno (KP) i broj instanci koje su klasifikovane negativno (KN).
Kolone u zbiru daju broj instanci koje su stvarno pozitivne (P) ili negativne
(N).
Kada su poznati ovi brojevi, udeo stvarno pozitivnih instanci, odnosno osetljivost je definisana kao:
U SP =

SP
SP + LN

odnosno broj stvarno pozitivnih podeljen brojem svih pozitivnih (i onih koji su
klasifikovani kao pozitivni i onih koji su greskom klasifikovani kao negativni).
Udeo stvarno negativnih se analogno definise
U SN =

SN
SN + LP

Udeo lazno pozitivnih i lazno negativnih se definisu slicno:

11.3 Mere kvaliteta i tehnike evaluacije klasifikacije

LP
LP + SN
Preciznost se moze izracunati kao
U LP =

P rec =

U LN =

185

LN
LN + SP

SP + SN
SP + LP + SN + LN

Primer 11.4 Neka je testirano 400 ispitanika. Od toga 4 imaju bolest zbog koje se
testiraju, a ostali ne. Neka je test dao pozitivnu klasifikaciju u slucaju 2 osobe koje obe
imaju bolest. Matrica konfuzije data je tabelom 11.4

KP
KN

P
2
2

N
0
396

Table 11.5: Matrica konfuzije vezana za klasifikaciju obolelih.


Odavde se mogu izracunati mere kvaliteta:
398
= 0.995
400
2
U SP = = 0.5
4
396
U SN =
=1
396
0
U LP =
=0
396
2
U LN = = 0.5
4
Preciznost je izuzetno visoka i sugerise odlicno ponasanje klasifikatora. S druge
strane poznavanje udela stvarno pozitivnih otkriva da je ovaj utisak lazan zato sto je
identifikovan mali broj elemenata pozitivne klase.
P rec =

Pored izbora mere za evaluaciju klasifikacije bitno je izabrati i nacin na koji

se ta mera ocenjuje. Cesta


praksa je da se model trenira na jednom skupu podataka, a da se evaluira na odvojenom skupu podataka za testiranje. Pri tome
se podela raspolozivih podataka na podatke za trening i podatke za testiranje

vrsi slucajnim izborom podataka za testiranje. Medutim,


ovakav nacin evaluacije moze dovesti do znacajnih oscilacija u vrednostima mera kvaliteta u zavisnosti od toga koji je podskup izabran. Pouzdaniji nacin evaluacije naucenog
znanja je takozvana unakrsna validacija. Ceo skup podataka kojim se raspolaze
se deli na n priblizno jednakih podskupova. Jedan podskup se izdvaja i trening
se vrsi na ostalih n 1 podskupova. Posle treninga, kvalitet naucenog znanja
se ocenjuje na izdvojenom podskupu. Ovaj posupak se ponavlja za sve ostale
izdvojene podskupove i kao finalna ocena kvaliteta se uzima prosek dobijenih
ocena za svaki od podskupova. Za vrednost n se obicno uzima broj 10. Ovakav
postupak daje stabilniju ocenu kvaliteta. Pored toga, prednost ovog metoda je
da se u svakom od n koraka unakrsne validacije koristi velika kolicina podataka pri treniranju, a da sve raspolozive instance u jednom trenutku budu
iskorisc ene za testiranje.

186

11.4

11 Klasifikacija

Preterano prilagodavanje
modela podacima za

trening

Vrlo znacajna tema pri evaluaciji naucenog modela je mogucnost da se prilikom treninga model previse prilagodi specificnostima podataka za trening i
da zbog toga daje lose rezultate kada se primeni na drugim podacima. Naime,

podaci za trening mogu imati odredene


karakteristike kao plod c iste slucajnosti,
mogu predstavljati i pristrasan uzorak celog skupa
odnosno s uma, ali takode
podataka. U praksi, podatke je c esto tesko sakupiti i obicno se mora raditi sa
podacima koji su raspolozivi bez obzira na njihove manjkavosti. Stoga, iako
je potrebno da se postigne visok nivo preciznosti prilikom treniranja modela,
je potrebno paziti da ne dode
do preteranog prilagodavanja

takode
podacima.

Osnovni razlog zbog koga dolazi do preteranog prilagodavanja


podacima
je bogatstvo prostora hipoteza, odnosno skupa dopustivih modela. U bogatijem skupu je lakse naci model koji dobro odgovara podacima. Primera radi,
ukoliko se pri ucenju dopustaju samo stabla dubine 1, koja testiraju samo jedan
atribut svake instance, jasno je da takva stabla ne mogu lako postici visoku
preciznost klasifikacije. Ona predstavljaju previse grube modele koji ne mogu
da opisu znacajne zakonitosti u podacima. S druge strane, ukoliko se dozvoli
korisc enje stabala proizvoljne dubine, ukoliko je potrebno, moguce je naci stablo koje je u stanju da razlikuje bilo koje dve instance, odnosno da postigne

savrsenu preciznost na podacima za treniranje. Medutim,


stabla koja su vrlo
duboka i precizno opisuju svaku i najnebitniju specificnost podataka za trening, se u praksi pokazuju nepouzdanim, posto s iri skupovi podataka ne moraju
uvek imati sve specificnosti skupa podataka za trening.
Ovde se uocava znacaj ranije pomenutog koncepta apstrakcije. Adekvatna
hipoteza bi trebalo da apstrahuje, odnosno zanemari, takve specificnosti. U
primeru prepoznavanja racunarksih c lanaka mogli smo izostaviti ogranicenje
da se reci moraju nalaziti u nekom recniku racunarske terminologije. U tom
slucaju, ukoliko bi se koristile stranice koje pise mala skupina autora, moguce
je da bi se njihova imena mogla pokazati kao visokofrekventne reci karakteristicne za racunarske c lanke, s to bi bio vrlo los kriterijum prepoznavanja c im
bi se pojavili racunarski c lanci koje pisu drugi autori.
U vezi sa prethodnim razmatranjem treba primetiti dve zakonitosti. Sa
povecanjem dozvoljene dubine stabla, povecava se moc ucenja, odnosno verovatnoca
onaj koji dobro opisuje podatke.
da c e u skupu dopustivih modela biti naden
Zato se sa povecanjem dozvoljene dubine stabala, smanjuje greska klasifikacije.
Dalje, ukoliko stablo dubine, na primer, 1 ima visoku preciznost, to znaci da je

u podacima nadena
jaka i vrlo jednostavna zakonitost. Stoga je za ocekivati da
ona postoji i u s irem skupu podataka, odnosno ocekivano odstupanje greske na
s irem skupu podataka od greske koja se primecuje na trening skupu bi trebalo
da bude malo. S druge strane, ukoliko je stablo visoke preciznosti vrlo duboko,
to znaci da je uocena zakonitost u podacima vrlo kompleksne prirode i stoga
moze biti specificna samo za podatke u trening skupu. Odnosno, ocekivano
odstupanje greske na s irem skupu podataka od greske na trening skupu moze
biti veliko. Na slici 11.6 prikazane su tri krive. Jedna, opadajuca, predstavlja
ponasanje greske klasifikacije na trening skupu u zavisnosti od dozvoljene dubine stabla. Druga, rastuca, predstavlja ponasanje odstupanja greske na s irem
skupu podataka od greske na trening podacima u zavisnosti od dozvoljene du-

11.4 Preterano prilagodavanje


modela podacima za trening

187

Figure 11.6: Greska klasifikacije u zavisnosti od bogatsktva skupa dopustivih


modela.
bine stabla. Treca predstavlja gornju granicu greske klasifikacije u zavisnosti
od dozvoljene dubine stabla i ona je zbir prethodne dve. Ocigledno, i premale i prevelike vrednosti za dozvoljenu dubinu stabla vode losim rezultatima.
Prve usled nefleksibilnosti dozvoljenih modela, a druge zbog preteranog pri
lagodavanja
modela trening podacima. Bitno je naglasiti da je isto rezonovanje
moglo biti sprovedeno i za druge metode masinskog ucenja. Pri tom u analizi

ne bi figurisala dozvoljena dubina stabla, vec odredena


opsta mera slozenosti
skupa modela o kojoj necemo detaljnije govoriti. Adekvatno upravljanje bogatstvom prostora hipoteza c ini kljuc dobre generalizacije. Neki algoritmi ucenja
kao metoda potpornih vektora su konstruisani tako da prilikom izbora modela
automatski resavaju i ovaj problem.
U slucaju kad model koji najbolje aproksimira ciljnu funkciju na raspolozivim
najbolje aproksimira ciljnu funkciju na svim mogucim ininstancama, takode
stancama, kaze se da algoritam za ucenje dobro generalizuje iz prikazanih primera.
Kod stabala odlucivanja, moguca su dva pristupa resavanju problema preter
anog prilagodavanja
trening podacima, a to su: zaustavljanje rasta stabla u
toku njegove izgradnje i naknadno odsecanje. Obicno se preferira druga mogucnost.

Odsecanje stabla u odredenom


c voru predstavlja zamenu celog podstabla c iji
je to koren tim c vorom, s tim s to mu se dodeljuje oznaka klase u koju se podaci u tom podstablu najcesc e klasifikuju. Odsecanje se vrsi tako s to se iterativno ponavlja u c vorovima u kojima najvise povecava preciznost klasifikacije
na skupu za testiranje sve dok dalje odsecanje ne pocne da smanjuje preciznost
klasifikacije.

188

11 Klasifikacija

Glava 12

Regresija

Problem regresije predstavlja problem predvidanja


vrednosti neprekidnog atributa
neke instance na osnovu vrednosti njenih drugih atributa. Dakle, regresija se
moze videti kao aproksimacija neprekidne ciljne funkcije. Umesto o atributima, u terminologiji regresije, c esc e se govori o promenljivim. Formalno, regresiona funkcija koja povezuje zavisnu promenljivu Y i nezavisne promenljive
X1 , X2 , . . . , Xn je definisana izrazom
r(x1 , x2 , . . . , xn ) = E(Y |X1 = x1 , X2 = x2 , . . . , Xn = xn )
gde E oznacava matematicko ocekivanje. Promenljiva Y se naziva odzivnom
promenljivom, a promenljive Xi prediktorima. Problem regresije se svodi na
problem aproksimacije regresione funkcije r. Ovo se moze raditi razlicitim
metodama koje uvode razlicite pretpostavke o regresionoj funkciji. Najjednostavnije su metode linearne regresije.
Primene regresije su mnogobrojne vec u najjednostavnijoj, linearnoj, varijanti. One ukljucuju procenu rizika u ulaganjima, procenu uticaja prerade rude
na ekosistem, procenu smrtnosti u zavisnosti od z ivotnih navika i slicno.

12.1

Linearna regresija

Linearna regresija predstavlja problem regresije u kome se pretpostavlja lin odzivne promenljive i prediktora. Formalnije, pretpostavlja
earna veza izmedu
se veza oblika
Y = X +
Pri tome je Y slucajna promenljiva, X je vektor poznatih prediktora, je nepoznati vektor koeficijenata, a je slucajna promenljiva koja predstavlja slucajnu
gresku, odnosno s um. Poreklo s uma moze biti nesavrsenost opreme kojom se
vrsi merenje, slucajna priroda samog fenomena ili to s to izbor linearne zavisnosti predstavlja svesnu odluku da se inace kompleksna zavisnost donekle

pojednostavi radi lakse analize. Zadatak linearne regresije je odredivanje


ko
eficijenata koji u nekom smislu najbolje odgovaraju opazanjima iz iskustva,
odnosno trening podacima. Kako se greska ne modelira, vec se modelira samo
zakonitost za koju se pretpostavlja da postoji u podacima, rezultujuci model bi

190

12 Regresija

trebalo da ima sledeci oblik


y = 0 + 1 x1 + 2 x2 + . . . + n xn

(12.1)

Bitno je naglasiti da se izraz linarna u nazivu linearna regresija odnosi na


a da prediktorske promenljive mogu biti
linearnost relacije po parametrima ,
nelinearno transformisane.
Primer 12.1 Neki primeri linearnih modela su:
y = 0 + 1 x1 + 2 x2
y = 0 + 1 cos(x1 ) + 2 x22 + 3 ex3
y = 0 + 1 x1 + 2 x2 + 3 x1 x2
Sledeci primeri ne predstavljaju linearne modele:
y =

1 x1
2+x2

y =

cos(1 x1 )2 x2

e3 x3

odzivne promenljive i
Pored osnovnog zadatka modeliranja veze izmedu
prediktora radi predikcije odzivne promenljive, linearna regresija je korisna
i za ustanovljavanje jacine uticaja nekog prediktora na odizvnu promenljivu.
Naime, vece apsolutne vrednosti koeficijenata oznacavaju jaci uticaj predik

tora uz koji stoje. Znak koeficijenta odreduje


smer uticaja prediktora. Takode
se moze meriti statisticka znacajnost ovog uticaja, ali se radi jednostavnosti u

nastavku fokusiramo samo na osnovni problem odredivanja


koeficijenata i
proveru kvaliteta naucenog modela.

Najjednostavniji slucaj linearne regresije je predvidanje


odzivne promenljive
Y na osnovu samo jednog prediktora X. Primera radi, mozemo govoriti o

predvidanju
telesne tezine u zavisnosti od visine. Primetna je zakonitost da su
visoki ljudi uglavnom tezi od niskih ljudi. Tu zavisnost je potrebno modelirati.

Medutim,
postoje i odstupanja. Kako su odstupanja od prosecne tezine utoliko
s to su veca, ova odstupanja c emo smatrati s umom i necemo ih modelirati.
redja
Linearni model je u ovom slucaju oblika
y = 0 + 1 x
s to je standardna jednacina linearne funkcije.
Na slici 12.1 je prikazano 100 tacaka pri c emu svaka odgovara jednom ispitaniku. Koordinata x predstavlja visinu, a y telesnu tezinu. Na slici se moze
primetiti opsti trend linearnog povecanja telesne tezine u zavisnosti od visine
primetno je i da mali broj tacaka znacajno
koji je prikazan pravom. Takode,
odstupa. Ovakve tacke nazivamo izuzecima (eng. outliers). Prikazana prava
predstavlja linearni model datih podataka. Metod kojim se do njega dolazi bice
prikazan u nastavku.
U slucaju korisc enja opste jednacine linearnog modela 12.1, moguce je ukljuciti

veci broj prediktora pri predvidanju


odzivne promenljive. Iz primetne varijabilnosti telesne tezine u odnosu na regresioni model, shvata se da visina nije
dovoljna da u potpunosti objasni variranje telesne tezine. Novi prediktori koji

12.1 Linearna regresija

191

120

100

80

60

40

150

160

170

180

190

200

telesna tezina na
Figure 12.1: Primer jednostavne regresije kojom se predvida
osnovu visine.

bi vodili ka poboljsavanju predvidanja


mogu da se odnose na nacin z ivota pojedinaca koliko vremena dnevno provode u sedecem polozaju, koliko se bave
sportom, koliko kalorija unose dnevno i slicno. Umesto prave, u ovakvom

slucaju regresioni model bi odredivao


jednu hiperpovrs.
Osnovni kriterijum izbora koeficijenata linearnog modela je smanjivanje
vrednosti koje model predvida
i vrednosti koje odzivna
odstupanja izmedu
promenljiva ima u podacima. Ovaj problem se najcesc e se formulise kao problem minimizacije (nalazenja minimuma) srednjekvadratne greske
n

E(
y) =

1X
(yi yi )2
n i=1

pri tome je n broj instanci u trening skupu, yi su vrednosti odzivne promenljive


regresioni model. Koeficijenti
kod tih instanci, a yi su vrednosti koje predvida

se izracunavaju iz trening podataka (xi1 , xi2 , . . . , xim , yi ) po formuli


= (X > X)1 X > Y
pri c emu je

X=

1
1
..
.

x11
x21
..
.

x12
x22
..
.

..
.

xn1

xn2

x1m
x2m

xnm

Y =

y1
y2
..
.

yn

Osnovni problem pri odredivanju


koeficijenata je potencijalna losa uslovljenost matrice X. Naime, moguce je da su neki prediktori linearno zavisni ili

192

12 Regresija

da su jako korelirani. U tom slucaju matrica X, pa i X > X je neinvertibilna


ili lose uslovljena (za male promene elemenata polazne matrice, moguce su
ogromne promene elemenata inverzne matrice), odnosno, koeficijenti se ne
mogu izracunati ili su previse nestabilni. U takvom slucaju se pribegava takozvanom postupku regularizacije. Matrici X > X se dodaje dijagonalna komponenta
= (X > X + I)1 X > Y
gde je I jedinicna matrica. Ova modifikacija resava problem invertibilnosti, ali
predstavlja namerno unosenje greske i time narusava tacnost postupka. Zbog
toga je potrebno da konstanta bude mala, na primer, 0.01 ili 0.001, tako da
je korist od regularizacije veca nego s teta zbog unesene greske. Ovakva modifikacija regresije se na engleskom naziva ridge regression i c esto se koristi.

12.2

Pretpostavke linearne regresije

Postoje dve osnovne pretpostavke linearne regresije. Prva je da je broj trening


podataka veci od broja prediktora. Nju je u praksi uglavnom lako zadovoljiti.
Nisu retki domeni u kojima je tesko doci do novih podataka, ali ni broj prediktora obicno nije preveliki. Druga pretpostavka je da je slucajna promenljiva
koja c ini s um normalno raspodeljene sa raspodelom
N (0, 2 )
gde je standardna devijacija konstantna. Neformalno, ovo znaci da se pretpostavlja da se greske ponistavaju, odnosno da se prebacivanja i podbacivanja javljaju jednako c esto, da su pri tom velike greske vrlo malo verovatne,
kao i da velicina greske ne zavisi od stvarne velicine promenljive Y . Vise o
ispitivanju ovih poretpostavki bice receno u nastavku.

12.3

Ispitivanje kvaliteta linearne regresije

Ispitivanje kvaliteta linearne regresije ukljucuje skup thenika i mera kvaliteta


kojima se proverava zadovoljenost uslova primenljivosti tehnike linearne regresije, kao i kvalitet samog naucenog modela. Ovaj postupak se c esto naziva
i dijagnostikom modela.
Ispitivanje zadovoljenosti uslova za primenu linearne regresije bi formalno

trebalo raditi korisc enjem statistickih testova. Medutim


kako je sama tehnika
dosta robusna, odnosno c esto daje zadovoljavajuce rezultate i kad su te pretpostavke donekle narusene, ove provere se c esto vrse neformalno inspekci
jom podataka pomocu dijagrama. Normalnost raspodele s uma se potvrduje
inspekcijom histograma gresaka ri = yi yi koje nazivamo rezidualima. Pretpostavka da velicina greske ne zavisi od stvarne velicine promenljive Y se

obicno potvrduje
inspekcijom grafika koji prikazuje reziduale ri u zavisnosti

od predvidenih
vrednosti yi . Ukoliko se na ovom grafiku ne uocava zavis te dve velicine, smatra se da je pretpostavka ispunjena. S druge
nost izmedu
strane, ukoliko se moze uociti zavisnost, smatra se da pretpostavka nije ispunjena i da se model moze popraviti dodavanjem novih prediktora ili primenom
drugacijih metoda.

12.3 Ispitivanje kvaliteta linearne regresije

193

Osnovna mera kvaliteta linearne regresije je srednjekvadratna greska, koja

meri odstupanje predvidenih


vrednosti od stvarnih i racuna se po formuli
n

E(
y) =

1X
(yi yi )2
n i=1

Pozeljno je da srednjekvadratna greska bude s to manja, medutim


ukoliko ne
mamo konkretan zahtev za postizanjem odredene
srednjekvadratne grevske,
tesko je reci da li je ucenje uspesno ili ne. Zbog toga se c esto koriste i druge

mere. Cesta
je upotreba Pirsonovog koeficijenta korelacije.
dva uzorka xi i yi , koji odgovaraju
Pirsonov koeficijent korelacije izmedu
nekim promenljivim X i Y , se racuna po formuli
Pn
1
i=1 (xi x)(yi y)
n
q P
r(X, Y ) = q P
n
n
1
1
2
2
(x

x)
i
i=1
i=1 (yi y)
n
n
gde nadvucena linija oznacava prosek uzorka. Izrazi pod korenom se nazivaju
uzorackim varijansama za X i Y . Vrednosti koeficijenta korelacije r(X, Y ) =
promenljivih X i Y pri c emu pozitivan
1 oznacavaju linearnu vezu izmedu
znak znaci da Y raste kako X raste, a negativan znaci da Y opada kako X
raste. Neformalno, ova mera se moze shvatiti kao mera linearne zavisnosti
promenljivih X i Y pri c emu vrednost 0 znaci potpuno odsustvo linizmedu
earne korelacije. Jos vaznije, ova mera se moze povezati sa srednjekvadratnom

greskom. Cesto
se kaze da r2 (X, Y ) predstavlja udeo varijanse promenljive

Y koji promenljiva X objasnjava. Smisao ovog tvrdenja


je sledeci. Ukoliko se

odreknemo korisc enja bilo kakvih metoda predikcije pri predvidanju


vrednosti
promenljive Y , najmanju srednjekvadratnu gresku ocekujemo ukoliko uvek

predvidamo
vrednost y. Odnosno, ako kao predikcioni model za Y koristimo
prosek opazenih vrednosti Y . Pri tome je srednjekvadratna greska
n

E(y) =

1X
(yi y)2
n i=1

odnosno uzoracka varijansa za Y . Rastojanja koja ulaze u ovu gresku su prikazana


na slici 12.2. U slucaju korisc enja linearnog regresionog modela, srednjekvadratna greska je
n
1X
E(
y) =
(yi yi )2
n i=1
Rastojanja koja ulaze u ovu gresku su prikazana na slici 12.3. Ova, preostala,
greska se ne moze objasniti zavisnosc u od prediktora X, odnosno tu preostalu
gresku mozemo smatrati neobjasnjenom. Ispostavlja se da se polazna srednjekvadratna greska moze razloziti po formuli
n

E(y) =
odnosno da vazi

1X
1X
1X
(yi y)2 =
(yi yi )2 +
(
yi y)2
n i=1
n i=1
n i=1
n

1X
(
yi y)2 = E(y) E(
y)
n i=1

194

12 Regresija

Figure 12.2: Grafik reziduala u zavisnosti od predvidenih


vrednosti telesne
tezine.

Figure 12.3: Grafik reziduala u zavisnosti od predvidenih


vrednosti telesne
tezine.

195

10

15

20

12.3 Ispitivanje kvaliteta linearne regresije

30

20

10

10

20

30

Figure 12.4: Histogram reziduala u predvidanju


telesne tezine.
polazne i neobjasnjene
Dakle, izraz sa leve strane predstavlja razliku izmedu
greske, odnosno varijanse, iliti objasnjeni deo varijanse. Ispostavlja se da za
koeficijent korelacije vazi relacija
Pn
(
yi y)2
r2 (X, Y ) = Pni=1
2
i=1 (yi y)
s to objasnjava znacenje tvrdnje da njegov kvadrat predstavlja udeo varijanse
promenljive Y koji promenljiva X objasnjava. Pomocu ove mere se moze oceniti koliko je linearni model zaista koristan u odnosu na jednostavno poznavanje
proseka neke velicine.
U slucaju da se radi o opstem slucaju regresije, postoji veci broj prediktora,
pa se koeficijent korelacije ne moze racunati po istoj formuli. U tom slucaju,
on se racuna kao r(Y , Y ). U slucaju jednog prediktora ova vrednost je jednaka
r(X, Y ) posto su velicine X i Y linearno povezane.
I u slucaju regresije, moguce je koristiti unakrsnu validaciju na isti nacin
kao kod klasifikacije, osim s to je mera kvaliteta koja se racuna promenjena.
Primer 12.2 U slucaju primera sa predikcijom telesne tezine u zavisnosti od visine na
slici 12.4 prikazan je histogram reziduala. Prikazana raspodela je bliska normalnoj (sto

je potvrdeno
i statistickim testom). Na slici 12.5 prikazan je grafik zavisnosti rezidu
reziduala i
ala od predivdenih
vrednosti. Kako raspodela ne odaje zavisnost izmedu

potvrdeno

predvidenih
vrednosti (sto je takode
i statistickim testom), zaklucuje se da
su u tom problemu pretpostavke linearne regresije ispunjene.
Koeficijent korelacije iznosi 0.715 sto znaci da promenljiva X objasnjava preko pola
varijanse promenljive Y , ali i da postoji prostor da se predikcija dalje popravi dodavanjem novih prediktora.

196

12 Regresija

20

10

10

20

50

60

70

80

90

100

Figure 12.5: Grafik reziduala u zavisnosti od predvidenih


vrednosti telesne
tezine.

12.4

Preterano prilagodavanje
modela podacima za

trening

Fenomen preteranog prilagodavanja


podacima za trening koji je objasnjen u
kontekstu klasifikacije, moguc je i u problemu regresije (ne nuzno linearne).
Zbog toga c emo iskoristiti priliku da ga jos jednom prokomentarisemo u drugacijem

okviru masinskog ucenja. Osnovni smisao preteranog prilagodavanja


trening
podacima je i dalje isti da se model koji ima dobre mere kvaliteta na trening

podacima, lose ponasa na drugim podacima. Medutim,


novi primeri dopri bogatstva skupa dopustivih modela i kvaliteta
nose razumevanju veze izmedu
ucenja.
Na slici 12.6 prikazan je jedan skup od 20 instanci za trening koje se sastoje od jednog prediktora i odzivne promenljive. Linearni model je naucen
linearnom regresijom. Moze se primetiti da on ne prolazi direktno kroz trening podatke, odnosno za svaki trening podatak postoji manja ili veca greska

kada se vrsi predvidanje


odzivne promenljive na osnovu datog prediktora.
Drugacije receno, linearni model se ne moze potpuno prilagoditi podacima
za trening. Linearne modele mozemo smatrati jednostavnim i nefleksibilnim.
S druge strane, ocigledno je da on dobro opisuje opsti linearni trend koji se u
podacima vidi. Slika 12.7 prikazuje aproksimaciju datih podataka korisc enjem
modela iz skupa svih polinoma proizvoljnog stepena. Izabrani polinom prolazi
kroz sve tacke koje predstavljaju trening podatke i stoga je greska tog modela

na trening podacima jednaka nuli. Medutim,


posmatrajuci globalni izgled izabranog modela, vidi se da on ne opisuje nikakvu zakonitost u podacima. Os-

12.4 Preterano prilagodavanje


modela podacima za trening

197

20

tacaka c ine njegovo korisc enje u predikciji potpuno


cilacije koje pravi izmedu
nepouzdanim. Problem je upravo u tome s to proizvoljni polinomi c ine previse
bogat skup mogucih modela. Za svaki trening skup moze se naci model koji

ga savrseno opisuje. Medutim,


prilagodavaju
ci se trening podacima do krajnosti, gubi se svaka moc generalizacije. Slicni zakljucci vaze i za druge previse
bogate skupove dopustivih modela, a ne samo za polinome.

15

10

10

15

20

Figure 12.6: Linearni model sa najmanjom srednjekvadratnom greskom na instancama za trening.

12 Regresija

20

198

15

10

10

15

20

Figure 12.7: Polinomijalni model sa najmanjom srednjekvadratnom greskom


na instancama za trening

Glava 13

Klasterovanje

200

13 Klasterovanje

Deo IV

Resenja zadataka

Glava 14

Resenja zadataka
1. Pretpostavimo suprotno pretpostavimo da formula (D A) B nije
tautologija, tj. pretpostavimo da postoji valuacija v takva da je Iv ((D A)
B) = 0. Iz Iv ((D A) B) = 0 sledi Iv (D A) = 1 i Iv (B) = 0, a odatle
Iv (D) = 1, Iv (A) = 1 i Iv (B) = 1. Formula (AC) D je tautologija, pa vazi
Iv ((AC) D) = 1. Kako je Iv (D) = 0, mora da vazi Iv (AC) = 0, odakle
sledi da je Iv (C) = 0 (jer je Iv (A) = 1). S druge strane, formula A (B C)
je tautologija, pa vazi Iv (A (B C)) = 1. Kako je Iv (A) = 1, mora da
vazi Iv (B C) = 1. Vazi Iv (B) = 1, pa mora da vazi i Iv (C) = 1, s to je
u kontradikciji sa Iv (C) = 0. Dakle, polazna pretpostavka je bila pogresna,
odakle sledi da je formula (D A) B tautologija.
10. Dokazimo najpre, metodom istinitosnih tablica, da je formula
(A (B C)) (((A C) D) ((D A) B))
tautologija:
(A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1

(B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

1
1
1
1
0
0
1
1
1
1
1
1
0
0
1
1

C))
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

(((A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1

C)
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
0

1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0

D)
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1

((D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
1

A)
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0

1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0

B))
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

Formula (A (B C)) (((A C) D) ((D A) B)) je, dakle,


tautologija i, na osnovu pretpostavke, formula A (B C) je tautologija, pa,
na osnovu teoreme 2.1, sledi da je i formula ((AC) D) ((DA) B)
tautologija. Formula ((A C) D) ((D A) B) je tautologija i, na
osnovu pretpostavke, formula (A C) D je tautologija, pa na osnovu
teoreme 2.1, sledi da je i formula (D A) B tautologija.
11. Ako je v(p) = 0 i v(q) = 0, onda je Iv (A q) = 0 i Iv ((A q) p) = 1.
Slicno, ako je v(p) = 1 i v(q) = 1, onda je Iv (A q) = Iv (A) i Iv (p) = 0, pa je

204

14 Resenja zadataka

Iv ((A q) p) = 1 Iv (A). Analogno odredujemo


istinitosnu vrednost date
formule za svaku kombinaciju vrednosti v(p) i v(q). Te vrednosti prikazane su
u narednoj tablici:
((A

0
Iv (A)
0
Iv (A)

q)
0
1
0
1

1
1
1
1 Iv (A)

1
1
0
0

p)
0
0
1
1

Iv (A)
Iv (A)
Iv (A)
1

((p
0
0
1
1

1
1
1
0

1
0
1
0

q)
0
1
0
1

Iv (A)
Iv (A)
Iv (A)
1

A)

Dakle, da bi data formula bila tautologija mora da vazi Iv (A) = 1 u slucajevima v(p) = v(q) = 0, v(p) = 0, v(q) = 1, v(p) = 1, v(q) = 0, dok u slucaju
v(p) = v(q) = 1, formula A moze da ima proizvoljnu vrednost. Dakle, formula
A za koju u svakoj valuaciji vazi Iv (A) = 1 ispunjava uslov zadatka, pa A moze
biti formula >.
13 Pretpostavimo da vazi A1 , A2 , . . . , An |= B. Pretpostavimo da formula (A1
A2 . . . An ) B nije tautologija. Tada postoji valuacija u kojoj je formula
B netacna, a formula (A1 A2 . . . An ) tacna. Ako je u toj valuaciji formula
(A1 A2 . . . An ) tacna, onda je tacna i svaka od formula A1 , A2 , . . ., An . S
druge strane, kako vazi A1 , A2 , . . . , An |= B, sledi da je u toj valuaciji tacna i
formula B, s to protivreci prethodnom zakljucku da formula B nije tacna u toj
valuaciji. Dakle, pogresna je pretpostavka da (A1 A2 . . . An ) B nije
tautologija, tj. vazi |= (A1 A2 . . . An ) B.
Pretpostavimo da vazi |= (A1 A2 . . . An ) B. Pretpostavimo da
ne vazi A1 , A2 , . . . , An |= B. To znaci da postoji valuacija u kojoj je svaka od
formula A1 , A2 , . . ., An tacna, a formula B nije. U toj valuaciji je tacna i formula
(A1 A2 . . . An ), a netacna je formula (A1 A2 . . . An ) B. Odatle
sledi da formula (A1 A2 . . . An ) B nije tautologija, s to je suprotno
pretpostavci. Dakle, mora da vazi A1 , A2 , . . . , An |= B, s to je i trebalo dokazati.

14 Pretpostavimo da vazi , A |= B i dokazimo |= A B. Pretpostavimo


da su sve formule iz skupa tacne u nekoj valuaciji v i dokazimo da je u toj
valuaciji tacna i formula A B. Pretpostavimo suprotno, da vazi Iv (A
B) = 0. Odatle sledi Iv (A) = 1 i Iv (B) = 0. Dakle, valuacija v je model za skup
formula {A}, pa iz , A |= B sledi da je valuacija v model i za formulu B,
s to je u suprotnosti sa Iv (B) = 0. Dakle, pretpostavka je bila pogresna, pa sledi
Iv (A B) = 1, tj. |= A B, s to je i trebalo dokazati.
Pretpostavimo da vazi |= A B i dokazimo , A |= B. Pretpostavimo
da su sve formule iz skupa {A} tacne u nekoj valuaciji v i dokazimo da je
u toj valuaciji tacna i formula B. U valuaciji v su tacne sve formule iz skupa
, pa iz |= A B sledi Iv (A B) = 1. Iz Iv (A) = 1 i Iv (A B) = 1
sledi Iv (B) = 1 (ako bi vazilo Iv (B) = 0, iz Iv (A) = 1 i Iv (B) = 0 bi sledilo
Iv (A B) = 0). Dakle, valuacija v je model za formulu B, tj. , A |= B, s to je i
trebalo dokazati.
15 Neka je v proizvoljna valuacija. Tada je Iv (A1 ) = Iv (A2 ) i Iv (B1 ) = Iv (B2 ).

Resenja zadataka

205

(a)
Iv (A1 )

1, Iv (A1 ) = 0
0, inace

1, Iv (A2 ) = 0
0, inace

=
=
=

Iv (A2 ) .

(b)
Iv (A1 B1 )

1, Iv (A1 ) = 1 i Iv (B1 ) = 1
0, inace

1, Iv (A2 ) = 1 i Iv (B2 ) = 1
0, inace

=
=

= Iv (A2 B2 ) .
(c)
Iv (A1 B1 )

1, Iv (A1 ) = 1 ili Iv (B1 ) = 1


0, inace

1, Iv (A2 ) = 1 ili Iv (B2 ) = 1


0, inace

=
=

= Iv (A2 B2 ) .
(d)
Iv (A1 B1 )

0, Iv (A1 ) = 1 i Iv (B1 ) = 0
1, inace

0, Iv (A2 ) = 1 i Iv (B2 ) = 0
1, inace

=
=

= Iv (A2 B2 ) .
(e)
Iv (A1 B1 )

1, Iv (A1 ) = Iv (B1 )
0, inace

1, Iv (A2 ) = Iv (B2 )
0, inace

=
=

= Iv (A2 B2 ) .
16 Pretpostavimo da je A tautologija. Neka je v proizvoljna valuacija. Neka je
w valuacija u kojoj su iskaznim slovima p1 , p2 , . . ., pn dodeljene redom vrednosti Iv (A1 ), Iv (A2 ), . . ., Iv (An ) i u kojoj je svakom iskaznom slovu p koje se
pojavljuje u A, a razlicito je od p1 , p2 , . . ., pn dodeljuje vrednost Iv (p). Indukcijom nad skupom iskaznih formula moze se dokazati da vazi Iv (B) = Iw (A).
Iskazna formula A je tautologija, pa je ona tacna u svakoj valuaciji. Dakle,
Iw (A) = 1, odakle je Iv (B) = 1. Kako je v proizvoljna valuacija, sledi da je

206

14 Resenja zadataka

formula B tacna u svakoj valuaciji, tj. sledi da je formula B tautologija, s to je i


trebalo dokazati.

20. Neka p oznacava tvrdenje


,,R uvek govori istinu i neka q oznacava tvrdenje
,,Levi put vodi u glavni grad. Mestaninu R treba postaviti pitanje ,,Da li je
tacno P ? (gde je P iskaz izrazen u funkciji p i q). Oznacimo sa R(A) odgovor
mestanina na pitanje ,,Da li je tacno A? 0 ako je njegov odgovor ne i 1 ako
je njegov odgovor da. Postavljeno pitanje treba da bude takvo da je R(P ) u

svakom slucaju jednak vrednosti iskaza q. Odredimo tvrdenje


P.
Ako je u nekoj valuaciji Iv (p) = 0 (tj. R uvek govori laz) i ako je R(A)
jednako 0, onda u toj valuaciji mora da vazi Iv (A) = 1. Ako je u nekoj valuaciji
Iv (p) = 0 (tj. R uvek govori laz) i ako je R(A) jednako 1, onda u toj valuaciji
mora da vazi Iv (A) = 0. Ako je u nekoj valuaciji Iv (p) = 1 (tj. R uvek govori
istinu) i ako je R(A) jednako 0, onda u toj valuaciji mora da vazi Iv (A) = 0. Ako
je u nekoj valuaciji Iv (p) = 1 (tj. R uvek govori istinu) i ako je R(A) jednako
1, onda u toj valuaciji mora da vazi Iv (A) = 1. Dobijeni zakljucci mogu biti
prikazani u vidu sledece istinitosne tablice:
p
0
0
1
1

R(A)
0
1
0
1

A
1
0
0
1

Iskaz P moze da ima formu R(B) i onda je potrebno da je u svakoj valuaciji

vrednost R(R(B)) jednaka q. Odredimo tvrdenje


B. Vrednosti za iskaze R(B)
i B dobijaju se na osnovu prethodne istinitosne tablice. Te vrednosti prikazane
su u sledecoj istinitosnoj tablici:
p
0
0
1
1

q
0
1
0
1

R(R(B))
0
1
0
1

R(B)
1
0
0
1

B
0
1
0
1

Ocigledno, u svakoj valuaciji je Iv (B) = Iv (q), pa zakljucujemo da trazeno


pitanje moze da bude ,,Da li je tacno R(q)? ili ,,Da li je tacno da bi mi ti odgovorio potvrdno ako bih te pitao da li levi put vodi u glavni grad?.
25.
(a) Formula A nije kontradikcija, pa postoji valuacija v1 takva da je Iv1 (A) =
1. Formula B nije tautologija, pa postoji valuacija v2 takva da je Iv2 (B) =
0. Pretpostavimo da formule A i B nemaju zajednicko nijedno iskazno
slovo. Tada mozemo da definisemo valuaciju v na sledeci nacin:

v1 (p), ako se p pojavljuje u A
v(p) =
v2 (p), inace
Tada vazi Iv (A) = Iv1 (A) = 1 i Iv (B) = Iv2 (B) = 0, pa A B nije tautologija, s to je suprotno zadatim uslovima. Dakle, polazna pretpostavka
je pogresna, pa zakljucujemo da formule A i B moraju da imaju bar jedno
zajednicko iskazno slovo.

Resenja zadataka

207

(b) Neka je kanonska disjunktivna normalna forma formule A jednaka A1


A2 . . . Am i neka je kanonska konjunktivna normalna forma formule
B jednaka B1 B2 . . . Bn . Formula A B je tautologija, pa na
osnovu logicke ekvivalencije (P Q) R (P R) (Q R) i
jednostavnog induktivnog argumenta zakljucujemo da je svaka od formula Ai B (i = 1, 2, . . . , m) tautologija. Analogno, kako je formula
Ai B (i = 1, 2, . . . , m) tautologija, na osnovu logicke ekvivalencije
P (Q R) (P Q) (P R) i jednostavnog induktivnog argumenta zakljucujemo da je svaka od formula Ai Bj (i = 1, 2, . . . , m,
j = 1, 2, . . . , n) tautologija. To je moguce samo ako za svaki par Ai , Bj
postoji literal lij koji se u Ai pojavljuje kao konjunkt, a u Bj kao disjunkt.
Neka je formula C jednaka
m ^
n
_
lij
i=1 j=1

Vn
Kako je skup literala j=1 lij podskup skupa literala formule Ai sledi
Vn
da je Ai j=1 lij tautologija (jer je formula P Q P tautologija).
Dodatno, korisc enjem tautologije ((P Q) (R S)) (P R
Q S) moze se matematickom indukcijom dokazati da je formula
A1 A2 . . . Am

m ^
n
_

lij

i=1 j=1

tautologija, tj. da je formula A C tautologija.


Kako je literal lij (i = 1, 2, . . . , m, j = 1, 2, . . . , n) disjunkt formule Bj ,
sledi da je lij Bj tautologija (jer je formula P P Q tautologija).
Dodatno, korisc enjem tautologije ((P Q) (R S)) (P
Q
VR
n
S) moze se matematickom indukcijom dokazati da je formula j=1 lij
B1 B2 . . . Bn tautologija. Kako to vazi za svako i (i = 1, 2, . . . , m), na
osnovu logicke ekvivalencije (P R) (Q R) (P Q) R sledi
da je i
n
m ^
_
lij B1 B2 . . . Bn
i=1 j=1

tautologija, tj. da je formula C B tautologija.


29. Neka je L = (, , ar), gde je = {f }, = {p} i ar(f ) = 1 i ar(p) = 1.
Odredimo L-strukturu D = (D, I L ) takvu da je ona model date formule, pri
c emu je I L (f ) = fI i I L (p) = pI .
Neka je D = N, fI (n) = n + 2 (gde je n N) i pI (n) = 1 ako i samo ako
je n paran broj. Dokazimo da je D = (D, I L ) model formule A = (x)(p(x)
p(f (x)).
Dokazimo da je Iv (A) = 1 za svaku valuaciju v. Pretpostavimo suprotno
pretpostavimo da postoji valuacija v takva da je Iv (A) = 0. Na osnovu
definicije 3.10, iz Iv (A) = 0 sledi da postoji valuacija w takva da je v x w i
Iw (p(x) p(f (x))) = 0. Na osnovu iste definicije, odatle sledi da je Iw (p(x)) =
1 i Iw (p(f (x))) = 0. Neka je w(x) = n, gde je n element skupa N. Tada je
1 = Iw (p(x)) = pI (n) i 0 = Iw (p(f (x))) = pI (fI (n)) = pI (n + 2), odakle sledi

208

14 Resenja zadataka

da je n paran broj, a n + 2 neparan, s to je netacno za svaki prirodan broj n.


Dakle, Iv (A) = 1 za svaku valuaciju v, tj. L-struktura D = (N, I L ) je model
date formule A.
30. Neka je v proizvoljna valuacija. L-struktura D je model date formule ako
je Iv ((x)(p(x, f (x)) p(f (x), x)) = 1, tj. ako za svaku valuaciju w takvu da je
v x w vazi Iw (p(x, f (x)) p(f (x), x)) = 1.
Dovoljno je razmatrati mogucnosti w(x) = a, w(x) = b i w(x) = c. Vrednosti
Iw (p(x, f (x)) p(f (x), x)) = 1 mogu tada biti prikazane i u vidu tablice:
w(x)
a
b
c

fI (w(x))
b
a
a

pI (w(x), fI (w(x)))
1
1
0

pI (fI (w(x)), w(x))


1
1
0

Iw (p(x, f (x)) p(f (x), x))


1
1
1

Dakle, za proizvoljnu valuaciju v je Iv (x)(p(x, f (x)) p(f (x), x)) = 1, pa


je D model formule (x)(p(x, f (x)) p(f (x), x)).
31. Neka je L = (, , ar), = {}, = {p} i ar(p) = 2, D = {a, b} i neka je
I L (p) = pI . Da bi D = (D, I L ) bio model formule A treba da za proizvoljnu
valuaciju v vazi Iv ((x)(y)(p(x, y) p(y, x))) = 1, tj. za svaku valuaciju
w takvu da je v x w vazi Iw ((y)(p(x, y) p(y, x))) = 1. Postoje dve
mogucnosti: w(x) = a i w(x) = b i za obe treba da vazi Iw ((y)(p(x, y)
p(y, x))) = 1. Vazi Iw ((y)(p(x, y) p(y, x))) = 1 ako postoji valuacija w0
takva da je w y w0 i Iw0 (p(x, y) p(y, x)) = 1. Za svaku valuaciju w postoje
dve takve valuacije w jedna, za koju vazi w0 (y) = a i druga, za koju vazi
w0 (y) = b (pri tome vazi i w0 (x) = w(x)). Vazi Iw0 (p(x, y) p(y, x)) = 1 ako je
Iw0 (p(x, y)) = 0 ili Iw0 (p(y, x)) = 1, tj. ako je Iw0 (p(x, y)) = 0 ili Iw0 (p(y, x)) =
0. Dakle, vazi:
(w(x) = a i Iw ((y)(p(x, y) p(y, x))) = 1) i (w(x) = b i Iw ((y)(p(x, y)
p(y, x))) = 1)
odakle sledi
(w(x) = a i ((w0 (y) = a i Iw0 (p(x, y) p(y, x)) = 1) ili (w0 (y) = b
i Iw0 (p(x, y) p(y, x)) = 1))) i (w(x) = b i ((w0 (y) = a i Iw0 (p(x, y)
p(y, x)) = 1) ili (w0 (y) = b i Iw0 (p(x, y) p(y, x)) = 1)))
odakle sledi
((w(x) = a i w0 (y) = a i Iw0 (p(x, y) p(y, x)) = 1) ili (w(x) = a i
0
w (y) = b i Iw0 (p(x, y) p(y, x)) = 1)) i ((w(x) = b i w0 (y) = a i Iw0 (p(x, y)
p(y, x)) = 1) ili (w(x) = b i w0 (y) = b i Iw0 (p(x, y) p(y, x)) = 1))
odakle sledi
((w0 (x) = a i w0 (y) = a i Iw0 (p(x, y) p(y, x)) = 1) ili (w0 (x) = a i
0
w (y) = b i Iw0 (p(x, y) p(y, x)) = 1)) i ((w0 (x) = b i w0 (y) = a i Iw0 (p(x, y)
p(y, x)) = 1) ili (w0 (x) = b i w0 (y) = b i Iw0 (p(x, y) p(y, x)) = 1))
odakle sledi
((w0 (x) = a i w0 (y) = a i (Iw0 (p(x, y)) = 0 ili Iw0 (p(y, x)) = 0)) ili (w0 (x) = a
0
i w (y) = b i (Iw0 (p(x, y)) = 0 ili Iw0 (p(y, x)) = 0))) i ((w0 (x) = b i w0 (y) = a i
(Iw0 (p(x, y)) = 0 ili Iw0 (p(y, x)) = 0)) ili (w0 (x) = b i w0 (y) = b i (Iw0 (p(x, y)) = 0
ili Iw0 (p(y, x)) = 0)))
odakle sledi
((pI (a, a)) = 0 ili pI (a, a)) = 0) ili (pI (a, b) = 0 ili pI (b, a) = 0)) i ((pI (b, a)) =
0 ili pI (a, b) = 0) ili (pI (b, b) = 0 ili pI (b, b) = 0))

Resenja zadataka

209

odakle sledi
(pI (a, a)) = 0 ili pI (a, b) = 0 ili pI (b, a) = 0) i (pI (b, a)) = 0 ili pI (a, b) = 0 ili
pI (b, b) = 0)
Da bi L-struktura D bila model za datu formulu mora da vazi (pI (a, a)) = 0
ili pI (a, b) = 0 ili pI (b, a) = 0) i (pI (b, a)) = 0 ili pI (a, b) = 0 ili pI (b, b) = 0).
Neposredno se moze proveriti da ima 13 (od ukupno 16) funkcija pI : D2 7
{0, 1} koje zadovoljavaju taj uslov. Svakoj od tih funkcija odgovara po jedan
trazeni model (do na izomorfizam).
32. Neka je L = (, , ar), pri c emu je = {f, a}, = {p}, ar(f ) = 2, ar(a) = 0
i ar(p) = 2.
Neka je D = Z, I L (f ) = fI , I L (a) = aI i I L (p) = pI , pri c emu je fI (z1 , z2 ) =
z1 + z2 (z1 , z2 Z), aI = 0 i pI (z1 , z2 ) = 1 ako i samo ako je z1 = z2 (z1 , z2 Z).
Dokazimo da je D = (D, I L ) model date formule. Dokazimo da za proizvoljnu
valuaciju v vazi Iv ((x)(y)p(f (x, y), a)) = 1. Pretpostavimo suprotno pretpostavimo da postoji valuacija v za koju vazi Iv ((x)(y)p(f (x, y), a)) = 0.
Tada, na osnovu definicije 3.10, sledi da postoji valuacija w takva da je w x v
i Iw ((y)p(f (x, y), a)) = 0 (neka je u toj valuaciji w(x) = z, z Z). To dalje
znaci da za svaku valuaciju w0 takvu da je w0 y w (dakle, vazi w0 (x) = z)

i vazi Iw0 (p(f (x, y), a)) = 0. Medutim,


u valuaciji u kojoj je w0 (y) = z vazi
Iw0 (p(f (x, y), a)) = pI (fI (z, z), 0) = pI (z + (z), 0) = pI (0, 0) = 1, s to je
u kontradikciji sa Iw0 (p(f (x, y), a)) = 0. Dakle, polazna pretpostavka je bila
pogresna, te sledi da za proizvoljnu valuaciju v vazi Iv ((x)(y)p(f (x, y), a)) =
1, tj. L-struktura D je model date formule.
Neka je D = N, I L (f ) = fI , I L (a) = aI i I L (p) = pI , pri c emu je fI (n1 , n2 ) =
n1 + n2 (n1 , n2 N), aI = 0 i pI (n1 , n2 ) = 1 ako i samo ako je n1 = n2 (n1 , n2
N). Dokazimo da je D = (D, I L ) kontramodel date formule. Dokazimo da
postoji valuacija v za koju vazi Iv ((x)(y)p(f (x, y), a)) = 0. Pretpostavimo
suprotno da za proizvoljnu valuaciju v vazi Iv ((x)(y)p(f (x, y), a)) = 1.
Tada, na osnovu definicije 3.10, sledi da za svaku valuaciju w takvu da je
w x v vazi Iw ((y)p(f (x, y), a)) = 1. Neka je w proizvoljna valuacija i neka je
w(x) = n, gde je n N i n > 0. Iz Iw ((y)p(f (x, y), a)) = 1 sledi da postoji valuacija w0 takva da je w0 y w (dakle, vazi w0 (x) = n) i vazi Iw0 (p(f (x, y), a)) =
1. Pretpostavimo da je w0 (y) = m, m N. Tada vazi Iw0 (p(f (x, y), a)) =

pI (fI (n, m), 0) = pI (n + m, 0). Medutim,


pI (n + m, 0) je jednako 1 samo ako je
n + m = 0, s to nije tacno ni za koju vrednost m, m N (jer je n > 0). Dakle, polazna pretpostavka je bila pogresna, te sledi da postoji valuacija v za koju vazi
Iv ((x)(y)p(f (x, y), a)) = 0, tj. L-struktura D je kontramodel date formule.
33. Neka je L = (, , ar), pri c emu je = {f }, = {p}, ar(f ) = 1, ar(p) = 2.
(a) Neka je D = (N, I L ) i I L (f ) = fI , I L (p) = pI , pri c emu je fI (n) =
n + 1 i pI (n1 , n2 ) = 1 ako i samo ako je n1 < n2 . Dokazimo da je Lstruktura D model date formule A, tj. dokazimo da za svaku valuaciju
v vazi Iv (A) = 1. Pretpostavimo suprotno pretpostavimo da postoji
valuacija v takva da je Iv (A) = 0. Na osnovu definicije 3.10, sledi da
Iv ((x)(p(x, f (x)) p(x, x))) = 0 ili Iv ((x)(y)(z)(p(x, y) p(y, z)
p(x, z))) = 0.
Pretpostavimo da je Iv (x)(p(x, f (x)) p(x, x)) = 0. Odatle sledi

210

14 Resenja zadataka
da postoji valuacija w takva da je w x v takva da je Iw ((p(x, f (x))
p(x, x))) = 0. Pretpostavimo da je u toj valuaciji w(x) = n, gde je
n N. Iz Iw ((p(x, f (x)) p(x, x))) = 0 sledi da je Iw (p(x, f (x))) =
0 ili Iw (p(x, x)) = 0, tj. da je pI (w(x), fI (w(x))) = 0 ili pI (w(x), w(x))
= 1, tj. da nije n < n + 1 ili da je n < n, s to nije ispunjeno ni za jedan
broj n, n N.
Pretpostavimo da je Iv ((x)(y)(z)(p(x, y)p(y, z) p(x, z))) = 0.
Odatle sledi da postoji valuacija w takva da je w x v takva da je
Iw ((y)(z)(p(x, y) p(y, z) p(x, z))) = 0. Neka je w(x) = n1 . Iz
Iw ((y)(z)(p(x, y) p(y, z) p(x, z))) = 0 sledi da postoji valuacija w0 takva da je w0 y w (dakle, vazi w0 (x) = w(x) = n1 ) takva
da je Iw0 ((z)(p(x, y) p(y, z) p(x, z))) = 0. Neka je w0 (y) =
n2 . Iz Iw0 ((z)(p(x, y) p(y, z) p(x, z))) = 0 sledi da postoji
valuacija w00 takva da je w00 z w0 (dakle, vazi w00 (x) = w0 (x) =
w(x) = n1 i w00 (y) = w0 (y) = n2 ) takva da je Iw00 ((p(x, y) p(y, z)
p(x, z))) = 0. Neka je w00 (z) = n3 . Iz Iw00 ((p(x, y) p(y, z)
p(x, z))) = 0 sledi da je Iw00 (p(x, y) p(y, z)) = 1 i Iw00 (p(x, z)) =
0 i, dalje, Iw00 (p(x, y)) = 1, Iw00 (p(y, z)) = 1 i Iw00 (p(x, z)) = 0,
tj. pI (w00 (x), w00 (y)) = 1, pI (w00 (y), w00 (z)) = 1 i pI (w00 (x), w00 (z)) =
0. Odatle sledi pI (n1 , n2 ) = 1, pI (n2 , n3 ) = 1 i pI (n1 , n3 ) = 0 i, dalje,

sledi da je tacno n1 < n2 , n2 < n3 i da nije tacno n1 < n3 . Medutim,


to nije ispunjeno ni za koja tri prirodna broja n1 , n2 , n3 .
Dakle, pretpostavka je bila pogresna, te sledi da za svaku valuaciju v vazi
Iv (A) = 1, tj. L-struktura D je model formule A.

(b) Neka je D = ({a}, I L ) i I L (f ) = fI , I L (p) = pI , pri c emu je fI (a) = a


i pI (a, a) = 1. Dokazimo da je D kontramodel za formulu A. Pretpostavimo suprotno pretpostavimo da za proizvoljnu valuaciju v vazi
da je Iv (A) = 1. Tada je, na osnovu definicije 3.10, Iv ((x)(p(x, f (x))
p(x, x))) = 1 i Iv ((x)(y)(z)(p(x, y) p(y, z) p(x, z))) = 1. Iz
Iv ((x)(p(x, f (x)) p(x, x))) = 1 sledi da za proizvoljnu valuaciju w
takvu da je w x v vazi Iw ((p(x, f (x)) p(x, x))) = 1. Mora da je
w(x) = a (jer je D = {a}), pa je Iw (p(x, f (x))) = 1 i Iw (p(x, x)) = 1. Iz
Iw (p(x, x)) = 1 sledi Iw (p(x, x)) = 0, tj. pI (w(x), w(x)) = 0, tj. pI (a, a) =
0, s to je netacno, pa sledi da je pretpostavka bila pogresna, odakle dalje
sledi da postoji valuacija v takva da je Iv (A) = 0, tj. sledi da je D kontramodel za datu formulu A.
(c) Pretpostavimo da je L-struktura D = (D, I L ) model date formule A i
pretpostavimo da je skup D konacan, tj. pretpostavimo da je D = {d1 , d2 ,
. . . , dm }.
na sledeci nacin:
Neka je I L (f ) = fI i I L (p) = pI . Neka je d0i odreden
neka je d00 proizvoljan element skupa D;
neka je d0i+1 = fI (d0i ) za i 0.
Skup D je konacan, pa u nizu d0i , i = 0, 1, 2, . . ., mora da postoji bar jedan
element koji se ponavlja, tj. postoje vrednosti j i k (j < k) takve da je
d0j = d0k .

Resenja zadataka

211

Na osnovu pretpostavke, D je model za formulu A, pa za proizvoljnu


valuaciju v vazi Iv (A) = 1. Odatle, na osnovu definicije 3.10, sledi da vazi
Iv ((x)(p(x, f (x)) p(x, x))) = 1 i Iv ((x)(y)(z)(p(x, y) p(y, z)
p(x, z))) = 1.
Iz Iv ((x)(p(x, f (x)) p(x, x))) = 1 sledi da za proizvoljnu valuaciju w
takvu da je w x v vazi Iw (p(x, f (x)) p(x, x)) = 1. Odatle dalje sledi
pI (w(x), fI (w(x))) = 1 i pI (w(x), w(x)) = 0. Valuacija w je proizvoljna,
pa je mozemo odabrati tako da vazi w(x) = d0i . Tada vazi pI (d0i , fI (d0i )) =
1 i pI (d0i , d0i ) = 0, tj. za svako i (i = 0, 1, 2, . . .) vazi pI (d0i , d0i+1 ) = 1 i
pI (d0i , d0i ) = 0.
S druge strane, iz Iv ((x)(y)(z)(p(x, y)p(y, z) p(x, z))) = 1 sledi da
za proizvoljnu valuaciju w takvu da je w x v vazi Iw ((y)(z)(p(x, y)
p(y, z) p(x, z))) = 1. Kako je w proizvoljna valuacija, mozemo je
odabrati tako da vazi w(x) = d0 . Iz Iw ((y)(z)(p(x, y)p(y, z) p(x, z)))
= 1 sledi da za proizvoljnu valuaciju w0 takvu da je w0 y w (dakle, vazi
w0 (x) = w(x) = d0 ) vazi Iw0 ((z)(p(x, y) p(y, z) p(x, z))) = 1. Kako je
w0 proizvoljna valuacija za koju vazi w0 y w, mozemo je odabrati tako
da vazi w0 (y) = d00 . Iz Iw0 ((z)(p(x, y) p(y, z) p(x, z))) = 1 sledi da
za proizvoljnu valuaciju w00 takvu da je w00 z w0 (dakle, vazi w00 (x) =
w0 (x) = w(x) = d0 i w00 (y) = w0 (y) = d00 ) vazi Iw00 (p(x, y) p(y, z)
p(x, z)) = 1. Kako je w00 proizvoljna valuacija za koju vazi w00 z w0 ,
mozemo je odabrati tako da vazi w00 (z) = d000 . Iz Iw00 (p(x, y) p(y, z)
p(x, z)) = 1 sledi da je Iw00 (p(x, y) p(y, z)) = 0 ili Iw00 (p(x, z)) = 1, tj. da
vazi Iw00 (p(x, y)) = 0 ili Iw00 (p(y, z)) = 0 ili Iw00 (p(x, z)) = 1, tj. da vazi
pI (w00 (x), w00 (y)) = 0 ili pI (w00 (y), w00 (z)) = 0 ili pI (w00 (x), w00 (z)) = 1.
Dakle, za svaka tri elementa d0 , d00 , d000 skupa D vazi pI (d0 , d00 ) = 0 ili
pI (d00 , d000 ) = 0 ili pI (d0 , d000 ) = 1. Vec smo dokazali da za svako i (i =
0, 1, 2, . . .) vazi pI (d0i , d0i+1 ) = 1, odakle sledi da za d0 = d0i , d00 = di+1 ,
d000 = di+2 (za proizvoljno i, i = 0, 1, 2, . . .) mora da vazi pI (d0 , d000 ) = 1,
tj. pI (d0i , d0i+2 ) = 1. Analogno, jednostavno se pokazuje matematickom
indukcijom da vazi pI (d0i , d0i+l ) = 1 za proizvoljno i, i = 0, 1, 2, . . . i
proizvoljno l, l = 1, 2, . . .. Dakle, vazice i pI (d0j , d0k ) = 1, tj. pI (d0j , d0j ) = 1

(jer je d0j = d0k ). Medutim,


vec smo pokazali da za svako i (i = 0, 1, 2, . . .)
vazi pI (d0i , d0i ) = 0, s to je u kontradikciji sa pI (d0j , d0j ) = 1. Dakle, polazna pretpostavka je bila pogresna, odakle sledi da za datu formulu A
ne postoji model koji ima konacan domen.

34. Neka je D proizvoljna L-struktura, pri c emu za signaturu L = (, , ar)


vazi p i ar(p) = 1 i neka je V proizvoljan skup promenljivih takav da je
x, y, z V . Neka je I L (p) = pI (gde je pI funkcija iz D u skup {0, 1}) i neka
je v proizvoljna valuacija. Dokazimo da vazi Iv ((x)(y)(z)(p(x) p(y)
p(z))) = 1. Pretpostavimo suprotno da vazi Iv ((x)(y)(z)(p(x) p(y)
p(z))) = 0. To znaci da postoji valuacija vx takva da je vx x v (neka je
vx (x) = dx ) i Ivx ((y)(z)(p(x) p(y) p(z))) = 0. To znaci da postoji valuacija vy takva da je vy y vx (vazi vy (x) = vx (x) = dx ; neka je vy (y) = dy ) i
Ivy ((z)(p(x) p(y) p(z))) = 0. To znaci da za svaku valuaciju vz takvu da
je vz z vy vazi Ivz (p(x) p(y) p(z)) = 0. Odaberimo valuaciju vz takvu da
je vz z vy (vazi vz (x) = vy (x) = dx i vz (y) = vy (y) = dy ) na sledeci nacin:

212

14 Resenja zadataka

(a) ako je pI (dx ) = 1 i pI (dy ) = 1, neka je vz (z) = dx ;


(b) ako je pI (dx ) = 0, neka je vz (z) = dx ;
(c) ako je pI (dy ) = 0, neka je vz (z) = dy .
U slucaju (a), vazi Ivz (p(x)) = 1, Ivz (p(y)) = 1, Ivz (p(z)) = 1, odakle sledi
Ivz (p(x) p(y)) = 1 i Ivz (p(x) p(y) p(z)) = 1, s to je u suprotnosti sa
Ivz (p(x) p(y) p(z)) = 0. U slucaju (b), vazi Ivz (p(x)) = 0, Ivz (p(z)) = 0,
odakle sledi Ivz (p(x) p(y)) = 0 i Ivz (p(x) p(y) p(z)) = 1, s to je nemoguce.
U slucaju (c), vazi Ivz (p(y)) = 0 i Ivz (p(z)) = 0, odakle sledi Ivz (p(x)p(y)) = 0
i Ivz (p(x) p(y) p(z)) = 1, s to je nemoguce. Dakle, u svakom slucaju dolazimo do kontradikcije, s to znaci da polazna pretpostavka nije bila ispravna.
Dakle, mora da vazi Iv ((x)(y)(z)(p(x) p(y) p(z))) = 1. Kako je Iv
proizvoljna valuacija, sledi da je data formula valjana.
39. Na primer, (x)A (x)A.
40. Vazi (x)(A B) (x)(AB) (x)(A)(x)B (x)A(x)B
(x)A (x)B. Iz (x)(A B) (x)A (x)B, na osnovu teoreme 3.10
sledi da je data formula valjana.

48. Tvrdenje
je moguce dokazati indukcijom po slozenosti izraza ili na sledeci
nacin: pretpostavimo da za date izraze e1 i e2 postoje dva najopstija unifikatora
1 i 2 . Tada postoje supstitucije 1 i 2 takve da vazi 1 = 2 2 i 2 = 1 1
odakle sledi 2 = (2 2 )1 i 2 = 2 (2 1 ). Dakle, 2 1 je trivijalna supstitucija
[ ], pa, na osnovu definicije kompozicije supstitucija sledi da 1 i 2 mogu da
sadrze samo zamene oblika v 0 7 v 00 (gde su v 0 i v 00 simboli promenljivih), pa
su unifikatori 1 i 2 jednaki do na preimenovanje promenljivih.
58. Dati uslovi mogu se reprezentovati na sledeci nacin:
C1: vlasnikpsa(Janko)
C2: x(vlasnikpsa(x) volizivotinje(x))
C3: x(volizivotinje(x) (y(zivotinja(y) udario(x, y))))
C4: udario(Janko, T una) udario(M arko, T una)
C5: macka(T una)
C6: x(macka(x) zivotinja(x))
Metodom rezolucije moze se dokazati da iz navedenih formula sledi formula udario(M arko, T una).
61.
A
AB

[A]1
E
ef q
B
B

[B]2

E, 1, 2

Resenja zadataka

62.

213

[A]2

[A B]3
E
[B]1
B
E
I, 2
A
I, 1
B A
I, 3
(A B) (B A)

63.
[B C]3
[B C]3
E
E
[A]
[A]
B
C
I
I
I
I
AB
AC
AB
AC
I
I
[A (B C)]1 (A B) (A C)
(A B) (A C)
E, 2, 3
(A B) (A C)
I, 1
(A (B C)) ((A B) (A C))
2

64

[A]2 [B]1
I
[(A B)]
AB
E
I, 1
[A]3
B
I
I
A B
A B E, 2, 3
A B
I, 4
(A B) (A B)
4

A A

65.
vlasnikpsa(janko).
macka(tuna).
mozda_udario(janko,tuna).
mozda_udario(marko,tuna).
volizivotinje(X):-vlasnikpsa(X).
zivotinja(X):-macka(X).
ne_bi_udario(X,Y):-volizivotinje(X), zivotinja(Y).
udario(X,Y):-mozda_udario(X,Y), not ne_bi_udario(X,Y).
66.
suma(N,S):-N>0, N1 is N-1, suma(N1,S1), S is S1+N.
suma(0,0).
67.
sumacifara(N,S):-N>=10, N1 is (N // 10), sumacifara(N1,S1), S is S1 + (N mod 10).
sumacifara(N,N):-N<10.
68.

214

14 Resenja zadataka

stepen(M,N,S):-N>0, N1 is N-1, stepen(M,N1,S1), S is S1*M.


stepen(M,0,1).
69.
obrni(M,N):-obrni(M,0,N).
obrni(M,I,N):-M>0, M1 is M//10, I1 is 10*I+(M mod 10), obrni(M1,I1,N).
obrni(0,I,I).
70.
nzd(M,N,R):-N>0, T is M mod N, nzd(N,T,R).
nzd(M,0,M).
71.
prost(N):-T is N//2, nedeljivsvim(N,T).
nedeljivsvim(N,T):-T>1, T1 is T-1, N mod T=\=0, nedeljivsvim(N,T1).
nedeljivsvim(N,1).
72.
suma([],0).
suma([X|R],M):-suma(R,M1), M is M1+X.
73.
obrni(X,Y):-obrni(X,[],Y).
obrni([X|R],L,T):-obrni(R,[X|L],T).
obrni([],X,X).
74.
dodajnakraj([H|R],X,[H|R1]):-dodajnakraj(R,X,R1).
dodajnakraj([],X,[X]).
75.
uzastopni(X,Y,Z,[X,Y,Z|R]):-!.
uzastopni(X,Y,Z,[_|R]):-uzastopni(X,Y,Z,R).
76.
prvih_n(L,N,_):-broj_elemenata(L,B),B<N,!,fail.
prvih_n(L,0,[]):-!.
prvih_n([G|R],N,[G|R1]):-N1 is N-1, prvih_n(R,N1,R1).

Resenja zadataka

77.
dvadela([],[],[]).
dvadela([G|R],[G|R1],R2):-G>=0, dvadela(R,R1,R2),!.
dvadela([G|R],R1,[G|R2]):-dvadela(R,R1,R2).
78.
podeli([],[],[]).
podeli([G|R],[G|R1],R2):-podeli(R,R1,R2).
podeli([G|R],R1,[G|R2]):-podeli(R,R1,R2).
79.
podliste(L,P):-podeli(L,P,_).
80.
razliciti([],[]).
razliciti([X|R],[X|R1]):-not(sadrzi(R,X)),razliciti(R,R1),!.
razliciti([X|R],R1):-razliciti(R,R1).
81.
unija(X,Y,U):-append(X,Y,W),razliciti(W,U).
82.
presek([],L,[]).
presek([G|R],L,[G|P]):-sadrzi(L,G),presek(R,L,P),!.
presek([G|R],L,P):-presek(R,L,P).
83.
razlika([],L,[]).
razlika([G|R],L,R1):-sadrzi(L,G),razlika(R,L,R1),!.
razlika([G|R],L,[G|R1]):-razlika(R,L,R1).
84.
sim_razlika(X,Y,Z):-unija(X,Y,T),presek(X,Y,P),razlika(T,P,Z).

215

You might also like