Zbirka zadataka iz Ekspertskih sistema
Zbirka zadataka iz Ekspertskih sistema
Zbirka zadataka iz Ekspertskih sistema
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
1.3. Primeri na Prolog-u i LISP-u 77<br />
dohvati,<br />
stanje(sredina,na_sanduku,sredina,ima)).<br />
promeni_stanje(stanje(P,na_podu,P,B),<br />
popni_se,<br />
stanje(P,na_sanduku,P,B)).<br />
promeni_stanje(stanje(P1,na_podu,P1,B),<br />
gurni(P1,P2),<br />
stanje(P2,na_podu,P2,B)) :- pozicija(P2), P1P2.<br />
promeni_stanje(stanje(P1,na_podu,P3,B),<br />
setaj(P1,P2),<br />
stanje(P2,na_podu,P3,B)) :- pozicija(P2), P1P2.<br />
pripada_listi(H,[H|_]).<br />
pripada_listi(E,[_|T]):-pripada_listi(E,T).<br />
goal<br />
resenje(stanje(uz_vrata,na_podu,uz_prozor,nema),X),<br />
write(„X=„,X,“\n“),fail.<br />
Diskusija<br />
Pretraga se inicira upitom navedenim <strong>iz</strong>a klauzule goal. Predikat resenje je zadovoljen<br />
kada se nađe jedno rešenje. Tada se ugrađenim predikatom write ispisuje lista operatora X<br />
koja predstavlja rešenje. Ugrađeni predikat fail <strong>iz</strong>aziva vraćanje (backtracking) tako da<br />
program nalazi sva moguća različita rešenja pre nego što obustavi rad:<br />
X=[setaj(„uz_vrata“,“sredina“),setaj(„sredina“,“uz_prozor“),<br />
gurni(„uz_prozor“,“sredina“),popni_se,dohvati]<br />
X=[setaj(„uz_vrata“,“sredina“),setaj(„sredina“,“uz_prozor“),<br />
gurni(„uz_prozor“,“uz_vrata“),gurni(„uz_vrata“,“sredina“),<br />
popni_se,dohvati]<br />
X=[setaj(„uz_vrata“,“uz_prozor“),gurni(„uz_prozor“,“sredina“),<br />
popni_se,dohvati]<br />
X=[setaj(„uz_vrata“,“uz_prozor“),gurni(„uz_prozor“,“uz_vrata“),<br />
gurni(„uz_vrata“,“sredina“),popni_se,dohvati]<br />
Čitaocu se preporučuje da odredi stablo pretrage za prvo rešenje i odredi koliko puta pri<br />
pretrazi se vršilo vraćanje. Čime je određen redosled <strong>iz</strong>bora naslednika pri ekspanziji čvora?