24.12.2012 Views

Zbirka zadataka iz Ekspertskih sistema

Zbirka zadataka iz Ekspertskih sistema

Zbirka zadataka iz Ekspertskih sistema

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1.3. Primeri na Prolog-u i LISP-u 75<br />

Zadatak 30: Problem majmuna i banane<br />

Majmun stoji kod vrata sobe, na čijoj sredini visi banana okačena o plafon. Uz prozor stoji<br />

sanduk. Majmun ne može sam da dohvati bananu, ali može ako stoji na sanduku. Takođe,<br />

majmun može da se šeta po sobi, da odgura sanduk ili da se popne na njega. Sastaviti program<br />

na Prolog-u kojim se utvrđuje da li majmun može i na koji način da dođe do banane.<br />

Anal<strong>iz</strong>a problema<br />

Polazi se od koncepta stanja <strong>sistema</strong>, koje se u ovom slučaju opisuje položajima objekata.<br />

Početno stanje bilo bi:<br />

1) majmun je kod vrata<br />

2) majmun stoji na podu<br />

3) sanduk je kod prozora<br />

4) majmun nema bananu.<br />

U Prolog-u se početno stanje opisuje predikatom:<br />

stanje(uz_vrata, na_podu, uz_prozor, nema)<br />

gde se prvi argument odnosi poziciju majmuna po hor<strong>iz</strong>ontali, drugi na poziciju majmuna po<br />

vertikali, treći na poziciju sanduka i četvrti na status posedovanja banane. Ciljno stanje<br />

opisuje se sa stanje(_,_,_, ima). Sa _ je označena neimenovanja promenljiva; u ciljnom<br />

stanju ne interesuju nas pozicije majmuna i sanduka već isključivo to da majmun poseduje<br />

bananu.<br />

Potezi koji dovode do promene stanja su, to jest, operatori promene stanja su:<br />

a) dohvati bananu<br />

b) popni se na sanduk<br />

c) gurni sanduk<br />

d) šetaj okolo<br />

Naravno, nisu svi potezi dozvoljeni u svakom od stanja. Ograničenja se mogu opisati<br />

predikatom:<br />

promeni_stanje(Stanje1, Operacija, Stanje2)<br />

gde Operacija prouzrokuje prelaz <strong>iz</strong> Stanja1 u Stanje2, na primer:<br />

promeni_stanje( stanje(sredina, na_sanduku, sredina, nema),<br />

dohvati,<br />

stanje(sredina, na_sanduku, sredina, ima)).<br />

Zadatak - može li majmun da dođe do banane - mogao bi se dakle predstaviti predikatom<br />

moze_li(S)<br />

gde je S početno stanje. Ukoliko u stanju S majmun ima bananu, problem je rešen; ako je<br />

nema, potrebno je promeniti stanje, tako da u novom stanju (posle jedne ili više operacija)<br />

majmun ima bananu. Principijelna real<strong>iz</strong>acija pretraživanja po dubini data je pravilima:<br />

moze_li(stanje(_,_,_,ima)).<br />

moze_li(S1) :-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!