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.

64 1. Pretraživanje<br />

Pre svake ekspanzije čvora ispisuje se tekući sadržaj liste parcijalnih putanja queue. Lako je<br />

ustanoviti da je pretraga opisana stablom sa slike 63. I pored toga što uz čvorove nisu<br />

navedene vrednosti heurističke funkcije, ove vrednosti se mogu kvalitativno oceniti gledajući<br />

datu putnu mrežu.<br />

B<br />

C<br />

1<br />

A<br />

D<br />

C F H<br />

Slika 63<br />

Zadatak 27: Algoritam ‘prvo najbolji’ na Lisp-u<br />

a) Napisati Lisp proceduru za pretraživanje metodom ‘prvo najbolji’ (engl. best-first).<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 <strong>iz</strong> zadatka 26, pri čemu heuristička funkcija predstavlja vazdušno rastojanje tekućeg i<br />

ciljnog č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 />

Rešenje<br />

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

(define (best start finish)<br />

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

(define (best1 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 (best1 (sort (append (expand (car queue))<br />

(cdr queue))<br />

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

finish))))<br />

(define (closerp a b with-respect-to)<br />

4<br />

5<br />

2<br />

E<br />

B<br />

3

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

Saved successfully!

Ooh no, something went wrong!