Simbolično reševanje problemov

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

S simboličnim reševanjem problemov rešujemo v Prologu algebraične probleme kot so simbolično reševanje enačb, simbolično odvajanje in simbolično integriranje.

Simbolično odvajanje

odvod(-X,-DX) :-
  odvod(X,DX).
odvod(U+V,DU+DV):-
  odvod(U,DU),
  odvod(V,DV).
odvod(U-V,DU-DV):-
  odvod(U,DU),
  odvod(V,DV).
odvod(U*V,V*DU+U*DV):-
  odvod(U,DU),
  odvod(V,DV).
odvod(U/V,(V*DU-U*DV)/(V*V)):-
  odvod(U,DU),
  odvod(V,DV).
odvod(x,1). % x je neznanka
odvod(C,0) :- number(C). %C je konstanta

odvod(sin(X),cos(x)*DX):-
  odvod(X,DX).
?- odvod(2*x-7/(3*x),DX).
DX = x*0 + 2*1 - (3*x*0 - 7*(x*0 + 3*1))/((3*x)*(3*x))

Simulator končnih avtomatov

shema delovanja determinističnega končnega avtomata
(q0, b) -> q0
(q1, b) -> ql
(q0, a) -> ql
(q1, b) -> ql

Predstavimo ga lahko kot graf:

zac(q0). %zacetno stanje
kon(q1). %koncno stanje

%prehod(Trenutno stanje, Vhodni znak, Novo stanje)
prehod(q0,a,ql).
prehod(q0,b,q0).
prehod(q1,a,q0).
prehod(q1,b,ql).
avtomat(Beseda) :-
 zac(Q),
 avtomat(Q,Beseda).

avtomat(Q,[]) :- % konec besede
  kon(Q). % stanje mora biti ciljno
avtomat(Q,[Znak|Beseda]) :-
  prehod(Q,Znak, Ql),
  avtomat(Q1,Beseda).


Delovanje:

prehod(q0,a,q0).

?- avtomat([a,a,b,a,a]).
yes
?- avtomat([b,b,b]).
no
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja