24.12.2012 Views

Zbirka zadataka iz Ekspertskih sistema

Zbirka zadataka iz Ekspertskih sistema

Zbirka zadataka iz Ekspertskih sistema

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

62 1. Pretraživanje<br />

Funkcije sort, koristi pomoćne funkcije sort1 i insert za sortiranje algoritmom insertion<br />

sort. Prvi argument funkcije sort je lista parcijalnih putanja za sortiranje, dok drugi<br />

argument služi za ustanovljavanje kriterijuma za sortiranje, odnosno za poređenje dve<br />

parcijalne putanje.<br />

U svrhu poređenja parcijalnih putanja koristi se funkcija (closerp X Y finish) koja<br />

vraća #T (tačno) ili #F (netačno) u zavisnosti da li je list parcijalne putanje X bliži čvoru<br />

finish od lista parcijalne putanje Y ili važi suprotno. Udaljenost listova parcijalnih putanja X<br />

i Y od čvora finish, odnosno vrednosti njihovih heurističkih funkcija određuje funkcija<br />

distance. Funkciju distance potrebno je napisati za svaki konkretan problem pretrage<br />

posebno u skladu sa definicijom heurističke funkcije.<br />

Nastavak pretrage ostvaruje se rekurzivnim pozivom procedure hill1 sa ažuriranim redom<br />

kao parametrom. Funkcija hill1, kao i funkcija sort1, poseduje takozvanu završnu (repnu)<br />

rekurziju koju Lisp prevodilac pretvara u eksplicitnu iteraciju čime se dobija na efikasnosti<br />

pri <strong>iz</strong>vršavanju.<br />

b) Zadatu mrežu puteva, koja predstavlja graf pretrage predstavićemo u Lispu na sledeći<br />

način:<br />

(define A ‘( (x 2) (y 0) (children (B C D E) ) ))<br />

(define B ‘( (x 0) (y 2) (children (A E) ) ))<br />

(define C ‘( (x 4) (y 1) (children (A D G F) ) ))<br />

(define D ‘( (x 3) (y 3) (children (A C F H) ) ))<br />

(define E ‘( (x 1) (y 4) (children (A B) ) ))<br />

(define F ‘( (x 4) (y 5) (children (C D G) ) ))<br />

(define G ‘( (x 3) (y 5) (children (C F H) ) ))<br />

(define H ‘( (x 1) (y 6) (children (D G) ) ))<br />

Za svaki čvor grafa pretrage uveden je istoimeni simbol. Svakom simbolu dodeljena je<br />

takozvana asocijativna lista vrednosti. Radi se o listi uređenih parova (ime, vrednost) gde<br />

prva komponenta ime predstavlja simbolički naziv određene osobine, druga komponenta<br />

vrednost daje vrednost te osobine. Čvor poseduje osobine x, y i children koje se<br />

respektivno odnose na x i y koordinate čvora i oznake drugih čvorova sa kojima je dati čvor<br />

povezan putevima.<br />

Procedurama <strong>iz</strong> tačke a) rešenja zadatka potrebno je dodati sledeće procedure:<br />

(define (get l p)<br />

(cadr (assoc p (eval l))))<br />

(define (distance n1 n2)<br />

(sqrt (+ (square (- (get n1 ‘x) (get n2 ‘x)))<br />

(square (- (get n1 ‘y) (get n2 ‘y))))))<br />

(define (square x)<br />

(* x x))

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

Saved successfully!

Ooh no, something went wrong!