Izvajanje

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

Izvajanje programov v prologu.


Izvajanje-prolog.png

Vsebina

Cilji

  • Cilje izpolnjuje povrsti od leve proti desni.
  • Cilj izpolni tako, da
  • Poišče prvi stavek v programu, katerega glava se lahko prilagodi cilju. Stavke v programu pregleduje od zgoraj navzdol. Če takega stavka ni, potem cilj ne uspe.
  • Iz stavka naredi varianto stavka tako, da vse spremenljivke v stavku preimenuje. Nato prilagodi cilj glavi variante stavka, ter telo tako odpredeljene variante stavka postavi na začetek seznama ciljev, ki jih je treba izpolniti.
  • Če cilj ne uspe, potem se prolog avtomatsko vrača do prejšnjega cilja, ki ga je prilagodil,m in ga poskuša ponovno prilagoditi po točki 2, le da preiskuje program naprej od stavka, katerega glavi se je cilj prej prilagodil.
  • Če pri 2. točki ne uspe prvi cilj iz vprašanja, potem izpolnitev seznama ciljev iz vprašanja ni uspela. Če pa seznam ciljev postane prazen potem je izpolnitev uspela.

Preiskovanje

  • Najprej preiskuje v globino.
  • Vračanje je avtomatsko ob neuspehu.
  • Nedeterministično.

Neskončna zanka

lepo :- lepo.

Če ga vprašamo "ali je lepo" bo šel pogledat kako se dokaže če je lepo, to dokažemo s tem da dokažemo da je lepo, zato gre pogledat kako se dokaže če je lepo...


Brez dejstev se seznam ciljev ne more krajšati: mama kliče otrok, otrok kliče mama preko roditelj:

otrok(X,Y) :- roditelj(Y,X).

roditelj(X,Y) :-
 mama(X,Y);
 oce(X,Y).

mama(X,Y) :-
 zenska(X),
 otrok(Y,X).

Primer

p(1) :- p(2), p(3).
p(2) :- p(4).
p(4).

?- p(X), X>2
X=4

Sled:

p(X), X>2
X=1
p(2),p(3),1>2
p(4),p(3),1>2
p(3),1>2
no
 (backtrack do začetka)
X=2
p(4),2>2
2>2
no
 (backtrack do začetka)
X=4
4>2
yes
Vzpostavljeno iz »http://www.e-studij.si/Izvajanje«
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja