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.

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

finish))))<br />

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

(< (distance (car a) with-respect-to)<br />

(distance (car b) with-respect-to)))<br />

(define (sort l f)<br />

(sort1 () l f))<br />

(define (sort1 s l f)<br />

(if (null? l) s<br />

(sort1 (insert s (car l) f) (cdr l) f)))<br />

(define (insert l e f)<br />

(cond ((null? l) (list e))<br />

((f e (car l)) (cons e l))<br />

(else (cons (car l) (insert (cdr l) e f))))<br />

Funkcija hill, čijim pozivom započinje pretraga, ima za parametre startni i ciljni čvor. Ova<br />

funkcija služi samo za inicijal<strong>iz</strong>aciju parametara rekurzivne funkcije hill1 koja vrši<br />

pretraživanje.<br />

Red queue, prvi parametar funkcije hill1 predstavljen je listom parcijalnih putanja od<br />

korena do otkrivenih a neobiđenih čvorova stabla pretrage. Svaka parcijalna putanja je lista<br />

čvorova od lista stabla pretrage prema korenu. Vođenje evidencije o obrađenim parcijalnim<br />

putanjama potrebno je radi <strong>iz</strong>begavanja zatvorenih puteva u grafu pretrage. Inicijalno se red<br />

sastoji samo od jedne putanje koja se opet sastoji samo od korenog čvora.<br />

U okviru funkcije hill1, na početku se ispisuje tekuća vrednost promenljive queue da bi se<br />

mogao pratiti tok pretrage. Prva grana u cond strukturi odnosi se na slučaj neupešne pretrage,<br />

kada se red isprazni a da nije pronađena putanja do ciljnog čvora. Tada se ispisuje<br />

odgovarajuća poruka i okončava pretraga.<br />

Druga grana cond strukture odnosi se na slučaj kada se prva putanja u redu završava u<br />

ciljnom čvoru. Tada se kao rezultat pretrage vraća ova putanja. Funkcijom reverse postiže<br />

se da u listi čvorova koji sačinjavaju rešenje prvi čvor bude startni.<br />

Podrazumevana (else) grana cond strukture odnosi se na slučaj kada pretragu treba nastaviti<br />

produžavanjem parcijalne putanje sa početka reda. Funkcija expand koja kao argument<br />

uzima tekuću parcijalnu putanju, vraća kao rezultat n<strong>iz</strong> novih parcijalnih putanja nastalih<br />

produžavanjem tekuće putanje, to jest, ekspanzijom tekućeg čvora stabla pretrage. Ovu<br />

funkciju potrebno je napisati za svaki konkretan problem pretrage posebno u zavisnosti od<br />

načina predstavljanja stanja problema.<br />

U skladu sa definicijom algoritma planinarenja, nove parcijalne putanje koje su rezultat<br />

funkcije expand sortiraju se (funkcija sort) i dodaju (primitiva append) na početak reda.

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

Saved successfully!

Ooh no, something went wrong!