Professional Documents
Culture Documents
Vještačka Inteligencija
Vještačka Inteligencija
Vještačka Inteligencija
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
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 . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
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
Pohlepna pretraga
6.1 Penjanje uzbrdo u slucaju diferencijabilne funkcije cilja . . . . .
109
110
Odredivanje
puteva u grafu
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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 . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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 . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12 Regresija
12.1 Linearna regresija . . . . . . . . . . . . . . . . . . . . . .
12.2 Pretpostavke linearne regresije . . . . . . . . . . . . . .
12.3 Ispitivanje kvaliteta linearne regresije . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
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
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
11
1.1
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
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
2.1
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;
19
2.2
2.2.1
20
2 Iskazna logika
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.
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.
21
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
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
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
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
Primer 2.6 Neke od logickih ekvivalencija (ili, preciznije, neke od shema logickih ekvi-
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
>
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
Zadaci
Zadatak 13
Zadatak 14
Zadatak 15
(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
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 .
27
Primer 2.8
x1
1
0
1
0
x2
1
1
0
0
f (x1 , x2 )
0
1
1
1
B
0
1
0
1
AB
1
0
0
0
AB
1
1
1
0
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
(A)
(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)).
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)
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
32
2 Iskazna logika
33
34
2 Iskazna logika
Glava 3
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.1
37
38
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;
39
Cesto
c emo pokazivati da formula A ima slobodne promenljive x1 , x2 , . . .,
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
3.2.1
40
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
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).
42
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
fI
b
a
a
pI
a
b
c
a b
1 1
1 0
0 0
c
0
1
1
43
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
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
(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)
45
(y)(A[x 7 y])
(x)A
(y)(A[x 7 y])
46
47
Zadaci
Zadatak 39
Zadatak 40
48
3.2.3
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
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
51
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
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
53
54
55
56
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.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
59
60
61
62
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
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]
64
65
66
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) .
67
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
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
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
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
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
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
70
..
.
..
..
A
..
..
B
C
D
..
..
D
..
.
AB
E
B
BC
E
C
I, 1
AC
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:
71
[(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)
x(A B)
E
AB
E
B
I
xB
72
Zadaci
Zadatak 61
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
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
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
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
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).
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
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
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
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
81
r(X),s(Y)
C5(X=a)
s(Y)
C5(X=b)
s(Y)
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)
82
4 PROLOG
No
r(X),s(Y),!
C5(X=a)
s(Y)
C5(X=b)
s(Y)
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.
83
4.7
84
4 PROLOG
4.8 Liste
85
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=[]
4.8 Liste
87
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:
89
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.
91
92
4 PROLOG
xfx, fx
fx
xfy
xfy
fy
xfx
yfx, fx
yfx
xfy
4.10
Kao prvi veci primer PROLOG programa koji ilustruje razne koncepte jezika,
navodimo implementaciju KNF algorima. Kasnije c emo na to nadovezati im-
93
94
4 PROLOG
4.11
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([]):-!.
% Brisanje literala f
dpll(X):-formula_sadrzi_literal(X,f),!,brisi_f(X,Y),dpll(Y).
% 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 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
97
Pretraga grafa
5).
7).
1).
7).
1).
6).
3).
5).
8).
4).
5).
5).
6).
7).
4.13
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
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
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).
99
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
ukljucuje odredene
odluke o pravcu u kome c e se postupak sprovoditi. Drugim
104
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
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.
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.
5.1
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.2
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
107
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
108
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
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
f
f f
,
,...,
x1 x2
xn
111
112
6 Pohlepna pretraga
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)
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
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
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
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*
116
7 Odredivanje
puteva u grafu
7.3 A*
117
3
A
2
B
5
6
4
D
2
1
E
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
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
c vor(roditelj) dodaje
se u zatvorenu listu
A(-)
D(A)
G(A)
F(D)
B(F)
H(D)
E(B)
4
3
5
4
7.3.2
1
3
A
D
G
H
B
F
E
tekuci
c vor
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
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
7.3.3
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
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
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
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
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*
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.
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.
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
8.1
128
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).
129
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
8.2
Cvor
x stabla igre je neposredni predak c vora y ako se iz pozicije/cvora x nekim
130
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
. ....... .
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
131
8.3
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
prilagodava
je specificnim znanjima o igri koje primenjuje u daljem toku partije.
132
8.4
Sredisnjica
8.4.1
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
8.4.2
8.4.3
Algoritam minimaks
134
max
5
min
5
2 1
max
5
2 1
8.4.4
Algoritam alfa-beta
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
wn+1 < wk
2 < 5
max
wk
wn
wn+1
wj0
odsecanje
7>5
odsecanje
min
1
2 1
odsecanje
max
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
138
odreduje
sledeci legalan potez.
8.4.6
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,
8.4 Sredisnjica
139
8.4.7
Stabilno pretrazivanje
8.4.8
140
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
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
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
n
1n
R =
n
(0.925)n0.747 n3/4 .
1 n
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
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
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.5.1
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:
143
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
144
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
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
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
9.1
i ostavljaju potomstvo koje je, najcesc e isto tako ili bolje prilagodeno
okolini.
Svaka c elija svakog z ivog organizma sadrzi hromozome. Svaki hromozom
148
9 Genetski algoritmi
9.2
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
149
9.3
Reprezentacija jedinki
9.3.1
Binarna reprezentacija
150
9 Genetski algoritmi
000
. . . 1} broju b. Broju x sa binarnom reprezentacijom izmedu
. . . 0} i 111
. . . 1}
|111{z
| {z
| {z
n
x
(x a)
2n 1
A (0000000000)
0
1000
100
D (1010000000)
C (0100001110)
1320
2000
400
3000 3128
500
B (1111111111)
4000
800
5000
900
1000
9.4
Funkcija prilagodenosti
Funkcija prilagodenosti
daje ocenu kvaliteta jedinke. Ukoliko je zadatak odred
iti maksimum neke funkcije, onda je prirodna funkcija prilagodenosti
sama
151
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),
9.5
Inicijalizacija i zaustavljanje
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
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,
152
9 Genetski algoritmi
9.6.1
Ruletska selekcija
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
153
9.6.2
Turnirska selekcija
9.7
9.7.1
Ukrstanje
154
9 Genetski algoritmi
roditelj 1
roditelj 2
tacke prekida
dete 1
dete 2
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
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
resava izvodenjem
velikog broja eksperimenata. Za izbor pogodnih parametara c esto se koriste sami genetski algoritmi. Parametri genetskog algoritma
9.10
156
9 Genetski algoritmi
primer, kretanje robota), funkcija koju treba optimizovati nije zadata eksplicitno vec implicitno, kroz veci broj kriterijuma.
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.
9.11
157
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
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
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
primer da li odredeno
elektronsko pismo predstavlja nezeljenu postu (eng. spam)
ili ne. Regresija je zadatak ucenja u kome objektima odgovaraju vrednosti iz
10.1
Generalizacija i apstrakcija
163
10.2
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
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
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
uvek pozitivni ili jednaki 0 i da stoga znak korekcije zavisi od razlike izmedu
166
10 Uvod
10.3
10.4
10.5 Podaci
167
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
10.5
Podaci
10.5.1
Reprezentacija podataka
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
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
169
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,
11.1
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 (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
173
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
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,
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.
177
11.2
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
179
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
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
2
3
0 0 = 0.971
5
5
Opasna
Da
Ne
Ne
Ne
Da
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
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
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
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
183
OTROVNOST
neotrovna
otrovna
VELICINA
mala
NE
DA
velika
ISHRANA
biljke
NE
meso
DA
11.3
184
11 Klasifikacija
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
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
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,
takode
podacima.
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-
187
188
11 Klasifikacija
Glava 12
Regresija
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
190
12 Regresija
(12.1)
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
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
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.
E(
y) =
1X
(yi yi )2
n i=1
X=
1
1
..
.
x11
x21
..
.
x12
x22
..
.
..
.
xn1
xn2
x1m
x2m
xnm
Y =
y1
y2
..
.
yn
192
12 Regresija
12.2
12.3
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.
193
E(
y) =
1X
(yi yi )2
n i=1
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
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
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
195
10
15
20
30
20
10
10
20
30
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
12.4
Preterano prilagodavanje
modela podacima za
trening
197
20
15
10
10
15
20
12 Regresija
20
198
15
10
10
15
20
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
204
14 Resenja zadataka
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.
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 )
=
=
= 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
R(A)
0
1
0
1
A
1
0
0
1
q
0
1
0
1
R(R(B))
0
1
0
1
R(B)
1
0
0
1
B
0
1
0
1
Resenja zadataka
207
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
208
14 Resenja zadataka
fI (w(x))
b
a
a
pI (w(x), fI (w(x)))
1
1
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)
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,
Resenja zadataka
211
212
14 Resenja zadataka
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
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