Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Prof. Dr. Herbert Göttler, Dr. Peter Dauscher Johannes Gutenberg-Universität, Mainz Einführung in die Funktionsweise von.

Ähnliche Präsentationen


Präsentation zum Thema: "Prof. Dr. Herbert Göttler, Dr. Peter Dauscher Johannes Gutenberg-Universität, Mainz Einführung in die Funktionsweise von."—  Präsentation transkript:

1 Prof. Dr. Herbert Göttler, Dr. Peter Dauscher Johannes Gutenberg-Universität, Mainz Einführung in die Funktionsweise von Prolog

2 Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Abfrage: ?- p(A,B).

3 Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Abfrage: ?- p(A,B). Wann ist das wahr?

4 Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├..., B├...) Abfrage: ?- p(A,B).

5 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(a,a). p(A├..., B├...) Abfrage: ?- p(A,B).

6 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(a,a). p(A├..., B├...) p(a,a) Abfrage: ?- p(A,B).

7 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(a,a). p(A├..., B├...) p(a,a) Abfrage: ?- p(A,B).

8 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(a,a). p(A├ a, B├ a) p(a,a) Abfrage: ?- p(A,B).

9 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(a,a). p(A├ a, B├ a) p(a,a) Abfrage: ?- p(A,B). A=a B=a

10 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(a,a). p(A├ a, B├ a) p(a,a) Abfrage: ?- p(A,B). A=a B=a ;

11 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) p(a,a) Abfrage: ?- p(A,B). p(a,a). ; q(X1├..., Z1├...) r(Z1├..., Y1├...), p(X,Y) :- q(X,Z), r(Z,Y).

12 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) q(X1├..., Z1├...) r(Z1├..., Y1├...), q(a,b). p(a,a) Abfrage: ?- p(A,B). A=a B=a ;

13 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) q(X1├..., Z1├...) r(Z1├..., Y1├...), q(a,b). q(a,b)p(a,a) Abfrage: ?- p(A,B). A=a B=a ;

14 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) q(X1├ a, Z1├ b) r(Z1├..., Y1├...), q(a,b). q(a,b)p(a,a) Abfrage: ?- p(A,B). A=a B=a ;

15 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) q(X1├ a, Z1├ b) r(Z1├ b, Y1├...), r(a,b). q(a,b)p(a,a)r(a,b) Abfrage: ?- p(A,B). A=a B=a ;

16 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) q(X1├ a, Z1├ b) r(Z1├ b, Y1├...), q(a,b)p(a,a)r (a,b) r(a,b). Abfrage: ?- p(A,B). A=a B=a ;

17 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) q(X1├ a, Z1├ b) r(Z1├ b, Y1├...), q(a,b)p(a,a)r (b, d) r(b,d). Abfrage: ?- p(A,B). A=a B=a ;

18 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ X1, B├ Y1) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d), q(a,b)p(a,a)r (b, d) r(b,d). Abfrage: ?- p(A,B). A=a B=a ;

19 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ a, B├ d) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d), q(a,b)p(a,a)r (b, d) r(b,d). Abfrage: ?- p(A,B). A=a B=a ;

20 r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Ein abstraktes Prolog-Programm p(A├ a, B├ d) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d), q(a,b)p(a,a)r (b, d) r(b,d). Abfrage: ?- p(A,B). A=a B=a ; A=a B=d

21 Ähnlich f(X,2,Z) = f(1,Y,3). führt zur Systemantwort X=1 Z=3 Y=2

22 Ähnlich f(X,2,Z) = f(1,Y,p(X)). führt zur Systemantwort X=1 Z=p(1) Y=2

23 Matching und Unifikation Man kann beim Mustervergleich (Matching) zwei Muster S und T nur unter folgenden Bedingungen zur Übereinstimmung bringen (Unifikation): –Wenn S und T Konstante sind, dann müssen sie gleich sein –Ist S irgendeine Variable und T irgendein Term, dann passen sie immer und S wird zu T „instanziiert“.

24 Matching und Unifikation –Wenn S und T strukturierte Objekte, dann passen sie nur dann, wenn sie im sog. ersten Funktor übereinstimmen (hier das f ) und der Rest wie vorangehend beschrieben korrespondiert Die resultierende Instanziierung wird durch den Mustervergleich der Komponenten festgelegt, (im Beispiel u.a. das X)

25 Arithmetische Operatoren +Addition -Subtraktion *Multiplikation /Division **Potenz //ganzzahlige Division mod modulo (Rest)

26 Vergleichsoperatoren X>Ynumerisch: X größer Y X=Ynumerisch: X größer oder gleich Y X=

27 Wertzuweisung VORSICHT: ?- X=1+2. resultiert in Systemantwort: X=1+2 Echtes Rechnen ?- X is 1+2. resultiert in Systemantwort X=3

28 Beispiel: Addiere 42 addfortytwo(X,Y):- Y is X+42.

29 Beispiel: Maximum maximum(X,Y,Max):- X>=Y, Max is X. maximum(X,Y,Max):- X

30 Beispiel: Fakultät fakultaet(0,1). fakultaet(N,Fak) :- N1 is N-1, fakultaet(N1,Fak1), Fak is N*Fak1.

31 Listen Listen sind die grundlegende Datenstruktur der nichtnumerischen Programmierung. Beispiel: [a,b,c,d(f), f,1,2,anna,[e,f],berta]

32 Listen als Baum Listen werden in Prolog (wie alle strukturierten Objekte) als Baum aufgefasst.

33 Zerlegen von Listen Eine Liste kann immer zerlegt werden in das erste Listenelement (Kopf) und den Rest. [ K | R] Spezialfall: Leere Liste []

34 Suche nach dem Vorhandensein von Listenelementen enthalten(Element, [Element|R]). enthalten(Element, [Y|R]):- enthalten(Element,R).

35 Hinzufügen eines Elements am Kopf hinzu(X,L, [X|L]).

36 Konkatenieren (verschmelzen) von Listen konkat([],L,L). konkat([X|L1], L2, [X|L3]):- konkat(L1,L2,L3).


Herunterladen ppt "Prof. Dr. Herbert Göttler, Dr. Peter Dauscher Johannes Gutenberg-Universität, Mainz Einführung in die Funktionsweise von."

Ähnliche Präsentationen


Google-Anzeigen