30
GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligen

GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

Embed Size (px)

Citation preview

Page 1: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

PROLOG__

Eine Sprache der Künstlichen Intelligenz

Page 2: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Prolog

Programmieren in Logik

1. Einführung

Page 3: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Inhalt - Einführung

• Historisches

• Charakterisierung

• Einordnung

• Das PROLOG-System

• Wichtige Interpreter-Befehle

• PROLOG-Quellcode

Page 4: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Historisches

• 1972: ALAIN COLMERAUER (Marseille) und ROBERT KOWALSKI (London) entwickeln PROLOG

• Mitte 70er: DAVID D.H. WARREN baut den ersten lauffähigen Compiler, wonach sich der heutige DEC-10 Standard richtet (Edinburgh-Standard)

• 80er Jahre: Eine ganze Reihe kommerzieller PROLOG-Systeme etablieren sich

Page 5: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Charakterisierung

• ein Problem wird formal beschrieben (spezifiziert)

• der Lösungsweg wird nicht durch Anweisungen einzeln festgelegt

• das Prolog-System sucht eine vorgelegte Frage selbständig zu beantworten

Prolog ist eine deskriptive (beschreibende) Sprache:

Page 6: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einordnung

Beziehung zwischen PROLOG und anderen Programmiersprachen aus objektorientierter Sicht:

Page 7: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einordnung

Für Theoretiker:

PROLOG kann als spezielle Schreibweise der Prädikatenlogik erster Ordnung aufgefasst werden.

Für Praktiker:

PROLOG ist eine sehr intelligente relationale Datenbasis, die durch Fakten zur Wissensbasis wird.

Page 8: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Das PROLOG-System

Benötigt werden:• ein Texteditor zum Schreiben der PROLOG-

Programme

z.B.: Notepad• ein PROLOG-Interpreter zum Beantworten der

Anfragen

z.B.: SWI-PROLOG

Page 9: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Der SWI-PROLOG-Editor

Page 10: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Wichtige Interpreter-Befehle

• chdir ('D:\\Verz1\\Verz2').– wechselt das aktuelle Verzeichnis

• consult (Dateiname).– lädt das Programm in den Speicher

• mit den Tasten und kann man durch die letzten

Eingaben scrollen

Eingaben sind stets mit einem Punkt abzuschließen;kommen Sonderzeichen vor, Hochkommas verwenden!

Page 11: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

PROLOG-Quellcode

Der PROLOG-Quellcode wird mit einem ASCII-Editor

geschrieben und als PROLOG-File mit der Endung '.pl'

gespeichert.

Ein PROLOG-Programm kann in verschiedene Dateien

zerlegt werden (Module -> Wiederverwendbarkeit); im

"Hauptprogramm" werden die einzelnen Module wie folgt

geladen:

?- ensure_loaded(Dateiname1).

?- ensure_loaded(Dateiname2).

usw.

Page 12: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Prolog

Programmieren in Logik

2. Programmstruktur

Page 13: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Inhalt - Programmstruktur

• Einführung

• Fakten

• Datenbasis

• Fragen an die Datenbasis

• Aufgaben

Page 14: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einführung

Um einen Gegenstandsbereich zu beschreiben, benutzen wir Aussagen - und zwar von zweierlei Art:

Page 15: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einführung

(1) Aussagen, die Eigenschaften von Objekten oder

Beziehungen zwischen Objekten zum Ausdruck bringen:

• Eisen ist ein Metall

• Sokrates lebte von 469 bis 399 v. Chr.

Fakten (wahre Sachverhalte, Tatsachen)

Page 16: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einführung

(2) Aussagen, die allgemeine Gesetze, d.h. Beziehungen zwischen Fakten ausdrücken:

• Metalle leiten elektrischen Strom

oder besser

• Wenn X ein Metall ist, dann leitet X elektrischen Strom

Regeln

Page 17: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einführung

Ist das Wissen über den betrachteten Gegenstandsbereich als Sammlung von Fakten und Regeln dargestellt, so können wir Fragen stellen – in der Erwartung, dass sich diese aufgrund des in Fakten und Regeln ausgedrückten Wissens beantworten lassen.

Page 18: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einführung

Ein PROLOG-Programm sieht also so aus:

• Fakten

• Regeln

• Fragen

} }

Datenbasis (Wissen)

Auswertungsprogramm

Fakten, Regeln und Fragen sind die wesentlichen Elemente des Programmierens in PROLOG.

Page 19: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Der SWI-PROLOG-Editor

Datenbasis (Wissen)

Auswertungsprogramm

Page 20: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Fakten

Ein Faktum ist eine Aussage, die eine Eigenschaft eines Objektes oder eine Beziehung zwischen Objekten ausdrückt:

Jupiter ist ein Planet?- planet(jupiter).

Objekte werden klein geschrieben !

Paris ist die Hauptstadt von Frankreich?- hauptstadt(paris,frankreich).

Page 21: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Datenbasis

Eine endliche Menge von Fakten bildet bereits ein PROLOG-Programm. Wir werden eine solche Menge im folgenden auch Datenbasis nennen.

Page 22: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 1

Eine PROLOG-Datenbasis soll erstellt werden, die Verwandtschaftsbeziehungen griechischer Götter ausdrückt.Zunächst werden die Götter nach ihrem Geschlecht klassifiziert:

?- maennlich(apollon).

?- weiblich(hera).

Dies sind sog. einstellige Prädikatsymbole.

Page 23: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 1

Dann führen wir die Beziehung „Elternteil“ ein:

?- elternteil(zeus,apollon).

?- elternteil(metis,athene).

Dies sind sog. zweistellige Prädikatsymbole.

Page 24: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 1

Damit sieht die Datenbasis so aus (beispiel1.pl):

maennlich(zeus).maennlich(apollon).maennlich(ares).weiblich(hera).weiblich(leto).weiblich(metis).weiblich(athene).

elternteil(zeus,ares).elternteil(hera,ares).elternteil(zeus,apollon).elternteil(leto,apollon).elternteil(zeus,athene).elternteil(metis,athene).

Page 25: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 1 im SWI-PROLOG-Editor

1. Eingabe der Fakten im oberen Teil des SWI-PROLOG-Editors.

2. consulten Die Datenbasis (das Wissen) wird an das Auswertungsprogramm übergeben.

3. Frage formulieren im unteren Teil des SWI-PROLOG-Editors.

Page 26: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Fragen

Wir können nun Fragen an das System stellen und damit das in der Datenbasis gespeicherte Wissen abrufen.

Zuvor muss die Datenbasis in einem Editor erstellt, gespeichert und dann in den PROLOG-Interpreter geladen

werden.

Page 27: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Entscheidungsfragen

Frage: Ist Zeus männlich?

?- maennlich(zeus).

Antwort: Yes.

Page 28: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Ergänzungsfragen

Frage: Wie heißen die Eltern von Athene?

?- elternteil(E,athene).

Variablen werden groß geschrieben!

Antwort: E = zeus ;

E = metis ;

No

Durch das Drücken des Semikolons „;“ bzw. der ENTER-Taste ““ erhält man die weiteren Antworten.

Page 29: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

AUFGABE 1:

Übersetzen Sie die folgenden Sätze in eine PROLOG-Datenbasis:

Peter liebt Susi. Hans liebt Susi und Sabine. Sabine liebt Peter und hasst Hans. Susi liebt Peter und Felix. Susi hasst Sabine. Peter hasst Felix. Felix liebt sich selbst.

Stellen Sie folgende Anfragen:

Wen liebt Sabine? Wer liebt Sabine? Wer liebt wen? Wer liebt jemanden, der ihn auch liebt? Wessen Liebe wird mit Hass vergolten?

Page 30: GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz PROLOG __ Eine Sprache der Künstlichen Intelligenz

GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

AUFGABE 2:

In einem Restaurant gibt es ein Menü bestehend aus Vorspeise, Hauptgericht und Nachspeise:

Vorspeisen: Tomatensuppe, Lauchsuppe, Fleischbrühe

Hauptgerichte: Sauerbraten mit Spätzle, Leberkäse mit

Kartoffeln, Hackbraten mit Reis

Nachspeisen: Eis, Obstsalat, Bienenstich.

Schreiben Sie ein PROLOG-Programm, das ein zweistelliges Prädikat menue enthält. Dieses Prädikat soll Menüvorschläge überprüfen und erzeugen können.