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.

1.3. Primeri na Prolog-u i LISP-u 69<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 />

Funkcijama <strong>iz</strong> tačke a) potrebno je dodati definicije sledećih funkcija:<br />

(define (path-length cities)<br />

(cond ((null? (cdr cities)) 0)<br />

(else (+ (distance (car cities) (cadr cities))<br />

(path-length (cdr cities))))))<br />

(define (distance n1 n2)<br />

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

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

(define (get l p)<br />

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

(define (square x)<br />

(* x x))<br />

(define (expand path)<br />

(delq! () (mapcar (lambda (child)<br />

(if (member child (cdr path))<br />

()<br />

(cons child path)))<br />

(get (car path) ‘children))))<br />

Funkcija path-length računa dužinu parcijalne putanje kao zbir dužina svih puteva na<br />

određenoj putanji. Dužina puteva <strong>iz</strong>među dva grada računa se funkcijom distance čija je<br />

definicija ista kao u zadatku 26 s obzirom da su putevi pravolinijski.<br />

Funkcija expand koja real<strong>iz</strong>uje ekspanziju čvora i pomoćne funkcije get i square imaju<br />

iste definicije kao u zadatku 26.<br />

Diskusija<br />

Pretraga za problem definisan u tački b) inicira se pozivom (branch-and-bound ‘A ‘H).<br />

Program pri <strong>iz</strong>vršavanju ispisuje:<br />

RED ((A))<br />

RED ((C A) (B A) (D A) (E A))<br />

RED ((B A) (D A) (E A) (D C A) (F C A) (G C A))<br />

RED ((D A) (E A) (D C A) (E B A) (F C A) (G C A))<br />

RED ((E A) (D C A) (E B A) (C D A) (F D A) (F C A) (G C A)<br />

(H D A))

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

Saved successfully!

Ooh no, something went wrong!