300 likes | 432 Views
PROLOG. __ Eine Sprache der Künstlichen Intelligenz. Pro log. Pro grammieren in Log ik 1. Einführung. Inhalt - Einführung. Historisches Charakterisierung Einordnung Das PROLOG-System Wichtige Interpreter-Befehle PROLOG-Quellcode. Historisches.
E N D
PROLOG __ Eine Sprache der Künstlichen Intelligenz PROLOG – Eine Sprache der Künstlichen Intelligenz
Prolog • Programmieren in Logik • 1. Einführung PROLOG – Eine Sprache der Künstlichen Intelligenz
Inhalt - Einführung • Historisches • Charakterisierung • Einordnung • Das PROLOG-System • Wichtige Interpreter-Befehle • PROLOG-Quellcode 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 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 Prologist eine deskriptive (beschreibende) Sprache: PROLOG – Eine Sprache der Künstlichen Intelligenz
Einordnung • Beziehung zwischen PROLOG und anderen Programmiersprachen aus objektorientierter Sicht: 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. 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 PROLOG – Eine Sprache der Künstlichen Intelligenz
Der SWI-PROLOG-Editor 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! 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. PROLOG – Eine Sprache der Künstlichen Intelligenz
Prolog • Programmieren in Logik • 2.Programmstruktur PROLOG – Eine Sprache der Künstlichen Intelligenz
Inhalt - Programmstruktur • Einführung • Fakten • Datenbasis • Fragen an die Datenbasis • Aufgaben PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung • Um einen Gegenstandsbereich zu beschreiben, benutzen wir Aussagen - und zwar von zweierlei Art: PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung • 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) PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung • 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 PROLOG – Eine Sprache der Künstlichen Intelligenz
Einführung • Ist das Wissen über den betrachteten Gegenstandsbereich als Sammlung von Faktenund Regelndargestellt, so können wir Fragenstellen – in der Erwartung, dass sich diese aufgrund des in Fakten und Regeln ausgedrückten Wissens beantworten lassen. 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. PROLOG – Eine Sprache der Künstlichen Intelligenz
Der SWI-PROLOG-Editor Datenbasis (Wissen) Auswertungsprogramm PROLOG – Eine Sprache der Künstlichen Intelligenz
Fakten • Ein Faktumist 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). 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 Datenbasisnennen. 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. 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. 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). 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. 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. PROLOG – Eine Sprache der Künstlichen Intelligenz
Entscheidungsfragen • Frage: Ist Zeus männlich? • ?- maennlich(zeus). • Antwort: Yes. 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. 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? 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. PROLOG – Eine Sprache der Künstlichen Intelligenz