Simbolično reševanje problemov
Iz E-študij, proste zakladnice študentskega znanja
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
(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