A.o.Univ.Prof. Dr. Franz Hörmann1 PROgramming in LOGic Von Alain Colmerauer in Marseille entwickelt (70er Jahre) Standardwerk Programming in Prolog (Clocksin/Mellish)

Slides:



Advertisements
Ähnliche Präsentationen
Zwischen Kontrolle & Freiheit Felix Stalder HGKZ.
Advertisements

Programmieren in Logik
A. K. Dewdney‘s Core War (CW, „Krieg der Kerne“)
Perceptrons and the perceptron learning rule
Einführung in Prolog Copyright © 1999 by Michael Neumann
6. Regelbasierte Systeme
Information Portal Suite (IPS)
Prof. Dr. W. Conen (auf Bitte von M. Schwerthoff)
FH-Kurs Wissensmanagement
FH-Kurs Wissensmanagement
Alternative Rechnungslegungstheorien
FH-Kurs Wissensmanagement
Vorgehensweise Website Besprechung am 11. Februar 2008 Gründung und Partnerunternehmen der Wirtschaftsuniversität Wien.
Künstlichen Intelligenz
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Ich habe nie gelernt, Aufgaben zu lösen
Listen [mia, vincent, jules, yolanda] [mia, robber(honey_bunny), X, 2, mia] [] [mia, [vincent, jules], [butch, girlfriend(butch)]] [[], dead(zed), [2,
Parallel Prolog SS Seminar Programmiersprachenkonzepte Vortrag von Zehra Öztürk am 17. Juni 2004.
Expertensysteme.
Listen & Beweisstrategie
Rekursive Listenverarbeitung
Cut, Negation, Manipulation der Datenbasis
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Grundlagen der Sprache
Logische Programmierung: Prolog
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Semantik von Prolog & Unifikation
Syntax von Prolog & Familiendatenbasis
Fakten, Regeln und Anfragen
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Datenbanksystementwicklung – Praktikum & Vorlesung – WS 2004/2005
Günter Kniesel Advanced Prolog. 2 Bisher: Grundlagen Klauseln –Regeln –Fakten Terme –Die einzige Datenstruktur in Prolog –Listen als Sonderfall mit eigener.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
SoSe 2004 Spree Entwicklung einer Wissensbasis Aufgaben und Techniken.
Linguistik Stellen Sie Fragen zum Text (schauen Sie auf Ihre Unterlagen)! Versuchen Sie die gestellten Fragen zu beantworten!
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
Wie man eine einfache Präsentation erstellt...
„Einführung ins Internet für Unkundige“
O.Univ.-Prof. Dr. Dimitris Karagiannis Datenbanken administrieren mit phpMyAdmin Martin Marinschek
Wissensbasierte Systeme JESS Java Expert System Shell.
Einführung in die Programmierung
Entwicklung der Programmiersprachen
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Reasoner Semantische Interoperabilität
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
FORTRAN 77.
Einführung in die Programmiersprache C 4
Freitag LZ: Asking Questions about who people are and what they do. Describe others using haben und sein 1.Hausaufgabenkontrolle 2.Play wer ist das 3.LZ:
CGI (Common Gateway Interface)
Knowledge-Based system
Erfindervon Fuzzy Logic
Wie man eine einfache Präsentation erstellt...
Datenreihen erzeugen –
Engineering tools for the NEO engineer
Einführung in Datenbankmodellierung und SQL
Einführung in PROLOG StD G. Noll f ( x ) f ( ) g ( ) g ( x ) barbara
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Integritätserhaltung und -Überprüfung in deduktiven Datenbanken
11. Wissenbasis und Regelsysteme Sebastian Linek.
You need to use your mouse to see this presentation © Heidi Behrens.
Einführung in die logische Programmierung mit PROLOG
Deutsch Eins
ULG Library and Information Studies 2010/11, I2 Johanna Dusek.
Lexit.at Michael Hausenblas Semantische Darstellung und Abfrage von Rechtsnormen – IRIS 2004 Semantische Darstellung und Abfrage von Rechtsnormen am Beispiel.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Lukas Kerecz - Edits1 Edits Lukas Kerecz. Lukas Kerecz - Edits2 Gliederung  Einführung  Edits – warum und wofür?  Edits – Definiton  einleitende Beispiele.
 Präsentation transkript:

a.o.Univ.Prof. Dr. Franz Hörmann1 PROgramming in LOGic Von Alain Colmerauer in Marseille entwickelt (70er Jahre) Standardwerk Programming in Prolog (Clocksin/Mellish) Deklarative Sprache (Problem wird beschrieben, Interpreter sucht selbst nach Lösung) Keine Schleifen sondern Rekursion (Datentyp: Liste) ISO-Standard Viele unterschiedliche Implementationen Problem oftmals: Integration grafischer Oberflächen (dazu zumeist objektorientierte Spracherweiterungen)

a.o.Univ.Prof. Dr. Franz Hörmann2 PROgramming in LOGic Verwendete Version: SWI-Prolog ( prolog.org/) prolog.org/ Programme bestehen aus Fakten und Regeln, die zur Laufzeit geändert werden können (auch Regeln können geladen, verändert oder gelöscht werden – selbstmodifizierende Programme AI) Lösungssuche durch Interpreter: Backtracking FRAGE: Können Programme jemals intelligent sein? Was wären die Kriterien?

a.o.Univ.Prof. Dr. Franz Hörmann3 PROgramming in LOGic EXPERTENSYSTEME: –Programme, die selbst Probleme lösen (wie menschliche Experten) –Programme, die menschliche Experten unterstützen Expert System Shell: –Benutzeroberfläche –Leere Fakten- und Regelbank –Schlußfolgerungsmechanismus (Inference Engine) – Knowledge Engineer

a.o.Univ.Prof. Dr. Franz Hörmann4 PROgramming in LOGic Beispiele erfolgreicher Expertensysteme: –PROSPECTOR (fand ein Molybdänvorkommen im Wert von über US-$ 100 Mio) –R1 (konfigurierte VAX-Computersysteme) –DENDRAL (chemische Strukturanalysen) –CADUCEUS (Expertenwissen über interne Medizin) –PUFF (Expertensystem zur Diagnose von Lungenkrankheiten)

a.o.Univ.Prof. Dr. Franz Hörmann5 PROgramming in LOGic Facts: –fact(a, b, c). Rules: –rule(A, B, C) :- rule1(A, B, C), rule2(A, B, C). Queries (Goal): –?-rule(A, B, C). Variablen beginnen mit Großbuchstaben oder _

a.o.Univ.Prof. Dr. Franz Hörmann6 PROgramming in LOGic SWI-Prolog: –File/Consult Program1.pl –likes/2: Prädikat (predicate) von der Stelligkeit 2 (arity 2) –Wer liebt Erdbeeren? –?- likes(X,strawberry). –X wird nach Suche in der Faktenbank gebunden (instantiated)

a.o.Univ.Prof. Dr. Franz Hörmann7 PROgramming in LOGic Program2.pl –Ausgabe der Lösung mittels write Program2a.pl (verbesserte Ausgabe) Program2b.pl (wer liebt was? Durch fail wird die Suche wiederholt = Backtracking ausgelöst) Program2c.pl (fehlerhafte Programmänderung Variable X kann nicht gebunden werden!

a.o.Univ.Prof. Dr. Franz Hörmann8 PROgramming in LOGic Program3a.pl (kommt man von Raum a2 nach Raum a5?) –trace,r(a2,a5). –Goal ändern: r(a1, a5). –Funktioniert ebenfalls

a.o.Univ.Prof. Dr. Franz Hörmann9 PROgramming in LOGic Program3a.pl (Endlosschleife!) –Goal r(a5,a1) testen –trace, r(a5,a1) –Mittels Taste a abbrechen! (jedem) Prolog fehlt (noch) Loop-Check Function! Program3b.pl (Fakten wurden in c(a1, a2) umbenannt!) –r(a5,a1). –No funktioniert problemlos!

a.o.Univ.Prof. Dr. Franz Hörmann10 PROgramming in LOGic Datenstrukturen: Terme Ein Term besteht aus einem Funktor und einem oder mehreren Argumenten –functor(arg1, arg2,...). Auch Regeln (rules) sind Terme (terms)! Program4.pl (arithmetische Prädikate) Program4a.pl (allgemeingültige Version unter Verwendung des Ungleich-Prädikats)

a.o.Univ.Prof. Dr. Franz Hörmann11 PROgramming in LOGic Program5.pl (Verwendung von Listen: r(X,Y) geht X in der Liste Y voran?)

a.o.Univ.Prof. Dr. Franz Hörmann12 PROgramming in LOGic Program6.pl (Modifikation der Datenbank zur Laufzeit: assert, retract) –?- add_between(b1, a2, a3) funktioniert! –Danach: –?- remove_between(b1, a2, a3) funktioniert NICHT (Datenbank wird zu Beginn wieder mit den URSPRÜNGLICHEN Fakten geladen, d.h. ohne b1!!) Program6.pl (ein Element am Anfang einfügen: add_first)

a.o.Univ.Prof. Dr. Franz Hörmann13 PROgramming in LOGic Program7.pl (Einsatz des Prädikats not) –Fragen wie ?-tier(hund) sind möglich, aber auch Generatoren wie –?-tier(X),write(X),write(" ist ein Tier"),nl. Program7a.pl –Fragen wie ?-tier(hund) funktionieren, aber –?-tier(X),write(X),write(" ist ein Tier"),nl. sind nun NICHT MÖGLICH (im Prädikat not können keine Variablen gebunden werden!!) Program7b.pl –Andere Möglichkeiten not darzustellen, Generatoren nicht darstellbar!

a.o.Univ.Prof. Dr. Franz Hörmann14 PROgramming in LOGic Program8.pl (einfache Arten der Wissensrepräsentation) –?- X(lassie), write(X), nl. in SWI-Prolog leider nicht möglich! Program9.pl (Mitarbeiterdatenbank) Program10.pl (Kundendatenbank) –Es wird nur ein relevanter Kunde gefunden Program10a.pl –Nun werden alle relevanten Kunden gefunden! Program10b.pro –Wie Program10a.pro, aber ohne No am Ende

a.o.Univ.Prof. Dr. Franz Hörmann15 PROgramming in LOGic Program11.pl (Prädikate zur Listenverarbeitung) –?- member(c,[a,b,c,d]). –?- member(X,[a,b,c,d]),write(X),nl,fail. –?- append([1,2,3],[4,5],X),write_list(X). –?- append([1,2,3],X,[1,2,3,4,5]),write_list(X). Program11.pl (vollständige Zerlegung einer Liste in zwei Teil-Listen mittels append)

a.o.Univ.Prof. Dr. Franz Hörmann16 PROgramming in LOGic Program12.pl (verschachtelte Listen) Program13.pl (Anwendung verschachtelter Listen: Einkaufsbummel) Program14.pl (Arithmetische Listen- und andere Prädikate)

a.o.Univ.Prof. Dr. Franz Hörmann17 PROgramming in LOGic Program15.pl (Darstellung eines semantischen Netzwerks zum Liebesleben) –?-likes(mary,john). –?-likes(mary,X), write(X), nl. –?-likes(X,Y), dislikes(Y,X), write(Poor ), write(X), nl. –?-likes(X,Y), dislikes(Y,X), write(Poor ), write(X), nl, fail. –FRAGE: Wer wird von Anne nicht gemocht und beneidet jemanden, den Anne mag?

a.o.Univ.Prof. Dr. Franz Hörmann18 PROgramming in LOGic Program15a.pl –Allgemeingültige Formulierung von envies/2. Program15b.pl (Strukturiertes Wissen mit verschachtelten Termen) –?-knows(john,X),write(X),nl. –?-knows(john,likes(anne,X)),write(X),nl. –?-is_a(john,person). –?-is_a(john,man).

a.o.Univ.Prof. Dr. Franz Hörmann19 PROgramming in LOGic Program16.pl (Klassifizierte Fähigkeiten) –?-can(dolphin,swim). –Modifizieren, damit das stimmt (auch alle anderen Fakten ergänzen!) –FRAGE: Ein neues Säugetier wurde entdeckt – das Quirn. Was wissen wir alles über das Quirn? Woher wissen wir es? Wie sieht eine Prolog-Datenbank dazu aus?

a.o.Univ.Prof. Dr. Franz Hörmann20 PROgramming in LOGic Program16a.pl selbst erstellen nach folgenden Regeln: –If a patient is sweating and has high temperature then the patient has a fever. –If the patient has a fever and a cough then the patient has the flu. –If the patient has a rash and a fever then the patient has chicken-pox. –If the patient has the flu then go to bed and take aspirin. –If the patient has chicken-pox then keep away from other people and go to bed.

a.o.Univ.Prof. Dr. Franz Hörmann21 PROgramming in LOGic Anwendung dieser Regeln von links nach rechts forward chaining (aus Indizien werden Schlüsse gezogen) Zweite Möglichkeit: die Regeln von rechts nach links anwenden Vermutungen werden (durch Fakten) bewiesen = backward chaining Die meisten Expertensysteme wenden beide Techniken an.

a.o.Univ.Prof. Dr. Franz Hörmann22 PROgramming in LOGic Program17.pl (Infektionsgefahr!) –?-infect(john,X). –?-infect(X,Y). –?-infect(mary,X). –Im Trace-Modus beobachten! Program18.pl (Expertensystem zur Tiererkennung) –Wird mittels ?-recognize(animal). gestartet Program18.pl (Erweiterte Version – erklärt die Schlußfolgerung) –Wo muß der Term explain(List) eingebaut werden?

a.o.Univ.Prof. Dr. Franz Hörmann23 PROgramming in LOGic Prolog-Versionen im Internet –SWI-Prolog: –Strawberry Prolog: –Trinc-Prolog: –BinProlog: –Visual Prolog: –Amzi Prolog: –Arity Prolog: –LPA Prolog: Ausführlichere Liste: –Logic Programming Archive: