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.

60 1. Pretraživanje<br />

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

Zadatak 26: Algoritam planinarenja na Lisp-u<br />

a) Napisati Lisp proceduru za pretraživanje metodom planinarenja (engl. hill-climbing).<br />

b) Primeniti proceduru <strong>iz</strong> tačke a) za nalaženje puta <strong>iz</strong>među tačaka A i H na putnoj mreži sa<br />

slike 62, pri čemu heuristička funkcija predstavlja vazdušno rastojanje tekućeg i ciljnog<br />

čvora:<br />

h = ( x− x ) + ( y− y )<br />

2 2<br />

c c<br />

gde su x i y koordinate tekućeg, a x c i y c koordinate ciljnog čvora.<br />

y<br />

6<br />

5<br />

4<br />

3<br />

2 • B<br />

1<br />

0<br />

H<br />

•<br />

E<br />

•<br />

D<br />

G<br />

•<br />

•<br />

• F<br />

1<br />

A<br />

•<br />

2 3<br />

• C<br />

4 x<br />

Slika 62<br />

Rešenje<br />

a) Program napisan na Scheme Lisp-u je zasnovan na algoritmu 3 <strong>iz</strong> dodatka 1:<br />

(define (hill start finish)<br />

(hill1 (list (list start)) finish))<br />

(define (hill1 queue finish)<br />

(print ‘Red)<br />

(write queue)<br />

(cond ((null? queue) (print ‘|Nema resenja|))<br />

((equal? finish (caar queue))<br />

(print ‘Resenje)<br />

(write (reverse (car queue))))<br />

(else (hill1 (append<br />

(sort (expand (car queue))<br />

(lambda (x y) (closerp x y finish)))<br />

(cdr queue))

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

Saved successfully!

Ooh no, something went wrong!