18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS...
-
Upload
heinrich-ahles -
Category
Documents
-
view
115 -
download
3
Transcript of 18.10.99GK Prolog - Fakten, Regeln und Anfragen 1 Fakten, Regeln und Anfragen Prolog Grundkurs WS...
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
1
Fakten, Regeln und Anfragen
Prolog Grundkurs WS 99/00
Christof Rumpf
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
2
Programmieren = Problemlösen
Prolog ist eine deklarative Programmiersprache. Problemlösen in Prolog heißt Probleme beschreiben, indem Objekte mit ihren Eigenschaften und Beziehungen dargestellt werden.– Was ist das Problem?– Welche Objekte sind beteiligt?– Welche Eigenschaften und Beziehungen?
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
3
„Natürliches“ Schließen
Sokrates ist ein Mensch. Alle Menschen sind sterblich.
Sokrates ist sterblich.
– Sprache: natürliche Sprache, Deutsch.– Schlußregel: natürliches, intuitives
Schließen.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
4
Modus Ponens
mensch(sokrates) A x mensch(x) sterblich(x) A B
sterblich(sokrates) B
– Sprache: formale Sprache, PL1– Schlußregel:Modus Ponens
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
5
Resolution
mensch(sokrates). sterblich(X):- mensch(X). X
?- sterblich(X). X X = sokrates yes
– Sprache: formale Sprache, Prolog
– Schlußregel:Resolution
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
6
Namen sind Schall und Rauch
banane(sokrates). kann_fliegen(X):- banane(X).
?- kann_fliegen(X). X = sokrates yes
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
7
Analyse des Sokrates-Beispiels
– 1 Objekt sokrates.– 1 Menge von Objekten X.– 1 Eigenschaft mensch von Objekt sokrates.– 1 bedingte Eigenschaft sterblich einer Menge
von Objekten X.– 1 Beziehung zwischen Mengen von Objekten:
sterblich(X):- mensch(X).Die Mengen sind identisch.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
8
Prolog Entwicklungsumgebung
Entwicklungsumgebung (IDE)
Editor
Interpreter(Inferenzmaschine)
Benutzerschnittstelle(Anfragen)
Wissensbasis(Prolog-Programm = Regeln + Fakten)
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
9
Fakten, Regeln und Anfragen
mensch(sokrates).
sterblich(X):- mensch(X).
?- mensch(sokrates).
yes
?- mensch(aristoteles).
no
?- sterblich(sokrates).
yes
Fakt
Regel
Anfrage
Die Inferenzmaschine versucht die Anfragen durch Zugriff auf die Wissensbasis zu beweisen.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
10
Fakten
Fakten sind Aussagen über Eigenschaften und Beziehungen von Objekten, die als wahr angenommen werden. Z.B.
„Fritz liebt Anna.“ ist eine Aussage über eine Beziehung zwischen
zwei Objekten. In Prolog können wir folgenden Fakt formulieren:
liebt(fritz, anna).
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
11
Schreibweise für Fakten
In Prolog verwenden wir eine standardisierte Form, um Fakten zu repräsentieren.
• Die Bezeichner aller Objekte, Eigenschaften und Beziehungen beginnen mit Kleinbuchstaben.
• Die Bezeichner für Mengen von Objekten (Variablen) beginnen mit Großbuchstaben.
• Die Bezeichner für Eigenschaften und Beziehungen werden zuerst geschrieben und die Objekte durch Kommata getrennt in runden Klammern.
• Am Ende eines Fakts kommt ein Punkt.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
12
Prädikate und Argumente
– Eigenschaften und Beziehungen werden Prädikate genannt.
– Bezeichner von Eigenschaften und Beziehungen werden Funktoren genannt.
– Die Objekte werden Argumente genannt.– Ein Prädikat mit n Argumenten hat
Stelligkeit/Valenz/Arity n.
funktor(Arg1,..., Argn)
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
13
Argumentreihenfolge
Die Reihenfolge der Argumente von Beziehungen spielt eine Rolle.
liebt(anna,fritz). liebt(fritz,anna).
verheiratet(X,Y). verheiratet(Y,X).
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
14
Argumentposition
Wir können selbst bestimmen, welche Interpretation die Argumentpositionen bekommen.
„Anna ist die Mutter von Maria.“ mutter(anna,maria). oder mutter(maria,anna).
mutter(Mutter,Kind). oder mutter(Kind,Mutter).
Einmal getroffene Konvention beibehalten.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
15
Einige Beispiel-Fakten
wertvoll(gold).
fem(anna).
besitzt(fritz,gold).
vater(fritz,anna).
gibt(fritz,anna,buch).
Gold ist wertvoll.
Anna ist weiblich.
Fritz besitzt Gold.
Fritz ist der Vater von Anna.
Fritz gibt Anna das/ein Buch.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
16
Universelle Fakten
Fakten, die Variablen als Argumente haben, werden universelle Fakten genannt.
objekt(X). beziehung(X,Y). weg(X,rom).
Die Variablen stehen für beliebige Objekte.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
17
Atomare Fakten
Fakten können auch aus 0-stelligen Prädikaten bestehen. Von Bedeutung sind inbesondere zwei atomare Fakten, deren Verwendung standardisiert ist:
true. Ist immer definiert. fail. Ist niemals definiert.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
18
Von Fakten zu Regeln
„Fritz liebt alle Menschen.“
Faktenrepräsentation:
liebt(fritz,anna). liebt(fritz,paul). liebt(fritz,sokrates). ...
Regelrepräsentation:
liebt(fritz,X):- mensch(X). mensch(anna). mensch(paul). mensch(sokrates). ...
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
19
Fakten und Regeln
Fakten bezeichnen Eigenschaften und Beziehungen von Objekten und werden unbedingt als wahr angesehen.
Regeln führen Bedingungen für die Wahrheit von Eigenschaften und Beziehungen ein.
Fakten lassen sich auch als Regeln umformulieren:
liebt(fritz,anna). liebt(fritz,anna):- true.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
20
Aufbau von Regeln
Regeln bestehen aus Kopf und Rumpf.
Head :- Body.
Der Kopf ist ein Prädikat und der Rumpf ein Prädikat oder eine Konjunktion und/oder Disjunktion von Prädikaten.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
21
Konjunktion
„Fritz liebt jeden, der Wein und Essen liebt.“
liebt(fritz,X):- liebt(X,wein), liebt(X,essen).
Allgemein:
A:- B1, ..., Bn | A, B Prädikate
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
22
Disjunktion
„Fritz liebt jeden, der Wein oder Essen liebt.“
liebt(fritz,X):- liebt(X,wein);liebt(X,essen).
Alternativ:
liebt(fritz,X):- liebt(X,wein). liebt(fritz,X):- liebt(X,essen).
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
23
Negation
„Fritz liebt alle Menschen außer sich selbst.“
liebt(fritz,X):- mensch(X), not X = fritz.
Alternativ:
liebt(fritz,X):- mensch(X), X \= fritz.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
24
Klauseln und Prädikate
Fakten und Regeln werden unter dem Oberbegriff Klauseln zusammengefasst.
Prolog-Programme bestehen aus Klauseln.
Alle Klauseln mit dem gleichen Prädikat im Kopf bilden eine Prädikatsdefinition, bzw definieren ein Prädikat.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
25
Anfragen
Anfagen werden am Prompt des Interpreters gestellt.
Interpretation von Anfragen: ?- sterblich(sokrates).
Hat das Objekt sokrates die Eigenschaft sterblich? ?- sterblich(X).
Gibt es ein Objekt X mit der Eigenschaft sterblich?
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
26
Backtracking
Wenn es mehrere Lösungen zu einer Anfrage gibt, werden die Elemente der Lösungsmenge aufgezählt. Der Interpreter muß sich dabei merken, welche Lösungen er schon gefunden hat.
Das Verfahren, mehrere Verzweigungen in einem Lösungsraum verwalten zu können, nennt man Backtracking. Prolog-Interpreter haben dieses Verfahren eingebaut.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
27
Mehrere Lösungen
Datenbasis
liebt(fritz,blumen). liebt(fritz,anna). liebt(paul,anna).
Anfragen
?- liebt(X,anna). X = fritz ->; X = paul ->; no
Durch Eingabe eines Semikolons nach einer Antwort auf eine Anfrage bringen wir den Interpreter zum Backtracking.
18.10.99 GK Prolog - Fakten, Regeln und Anfragen
28
Variablen
Variablen gelten im Kontext von Anfagen als implizit existensquantifiziert.
?- mensch(X).
Gibt es ein Objekt X mit Eigenschaft mensch?
Variablen gelten im Kontext von Fakten und Regeln als implizit allquantifiziert.
sterblich(X):- mensch(X).
Alle Objekte X mit Eigenschaft mensch haben auch Eigenschaft
sterblich.