Logische Programmierung



Ähnliche Dokumente
8. Logische Programmierung. Prolog Sprachkonstrukte: Fakten. Prolog Übersicht

8. Logische Programmierung

Prolog basiert auf Prädikatenlogik

Binäre Suchbäume (binary search trees, kurz: bst)

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Einführung in das Programmieren Prolog Sommersemester Teil 2: Arithmetik. Version 1.0

Auswahl von Klauseln und Atomen in Prolog

Theoretische Grundlagen des Software Engineering

Einführung in PROLOG. Christian Stocker

Grundlagen der Künstlichen Intelligenz

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Kapiteltests zum Leitprogramm Binäre Suchbäume

Semantik von Formeln und Sequenzen

Wissensbasierte Systeme

Theoretische Grundlagen der Informatik

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Programmiersprachen und Übersetzer

Program = Logic + Control

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Prädikate zum Testen und Manipulieren der Struktur der Terme; Mehr meta-logische Prädikate z.b. zum Testen des Zustands der Ableitung;

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Klausur für Studiengänge INF und IST

Logik für Informatiker

C++11 C++14 Kapitel Doppelseite Übungen Musterlösungen Anhang

Wissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren)

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Grundbegriffe der Informatik

Logik-Programme. Eine Tatsachenklausel ist eine einelementige positive Klausel, d.h. sie hat

Was ist Logische Programmierung?

Grammatiken. Einführung

1 Mathematische Grundlagen

WS 2009/10. Diskrete Strukturen

Professionelle Seminare im Bereich MS-Office

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

9. Übung Formale Grundlagen der Informatik

Kontrollstrukturen - Universität Köln

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Zeichen bei Zahlen entschlüsseln

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien


Professionelle Seminare im Bereich MS-Office

SOZIALVORSCHRIFTEN IM STRAßENVERKEHR Verordnung (EG) Nr. 561/2006, Richtlinie 2006/22/EG, Verordnung (EU) Nr. 165/2014

Was meinen die Leute eigentlich mit: Grexit?

Satz. Für jede Herbrand-Struktur A für F und alle t D(F ) gilt offensichtlich

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Programmierkurs Java

Theoretische Informatik I

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

2.11 Kontextfreie Grammatiken und Parsebäume

Beispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Formale Methoden II. Gerhard Jäger. SS 2008 Universität Bielefeld. Teil 8, 11. Juni Formale Methoden II p.1/30

Bachelor Grundlagen der Logik und Logikprogrammierung 12. Februar

Einführung in. Logische Schaltungen

Formale Sprachen und Grammatiken

1 topologisches Sortieren

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Grundbegriffe der Informatik

Informationsblatt Induktionsbeweis

7 Rechnen mit Polynomen

Konzepte der Informatik

Task: Nmap Skripte ausführen

Kapitel 1: Einführung. Was ist Informatik? Begriff und Grundprobleme der Informatik. Abschnitt 1.1 in Küchlin/Weber: Einführung in die Informatik

Grundbegriffe der Informatik

Grundlagen der Theoretischen Informatik, SoSe 2008

ARCHIV- & DOKUMENTEN- MANAGEMENT-SERVER DATEIEN ARCHIVIEREN

Was bisher geschah. Aufgaben: Diagnose, Entscheidungsunterstützung Aufbau Komponenten und Funktion

IT-Unternehmensarchitektur Übung 01: IT-Strategie

Erstellen einer digitalen Signatur für Adobe-Formulare

Lösungshinweise zu Kapitel 4

5 Logische Programmierung

Künstliche Intelligenz Maschinelles Lernen

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel

Erfüllbarkeit und Allgemeingültigkeit

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Wärmebildkamera. Aufgabe 1. Lies ab, wie groß die Temperatur der Lippen (am Punkt P) ist. ca. 24 C ca. 28 C ca. 32 C ca. 34 C

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Kapitel 7 Dr. Jérôme Kunegis. Logische Kalküle. WeST Web Science & Technologies

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

Entwicklung nach der Geburt

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Wärmebildkamera. Arbeitszeit: 15 Minuten

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Elemente der Analysis I Kapitel 2: Einführung II, Gleichungen

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Listen. bersicht. Zweck. Listen allgemein Listen in Prolog. Programmiertechniken mit Listen. Erstellen von Prolog-Programmen mit Listen

Transkript:

Logische Programmierung B-82 Deklaratives Programmieren in Prädikatenlogik: Problem beschreiben statt Algorithmus implementieren (idealisiert). Grundlagen: Relationen bzw. Prädikate (statt Funktionen); Prädikatenlogik eingeschränkt auf Horn-Klauseln; Resolution: Belegung von Variablen finden, die eine Menge von Klauseln erfüllt. Datenmodell: strukturierte Terme mit Variablen (mathematisch, nicht imperativ); Bindung von Termen an Variable durch Unifikation Logische Programme: Ein Programm ist eine Menge von Klauseln (Prädikate, Regeln, eine Anfrage) formuliert über Terme. Ein Interpretierer prüft, ob Werte an die Variablen so gebunden werden können, daß die Anfrage mit den gegebenen Prädikaten und Regeln erfüllbar ist (Resolution). Es wird ein universelles Suchverfahren (Backtracking) angewendet. Wichtigste Sprache: Prolog typische Anwendungen: Prototyping, Expertensysteme... mehr dazu in der Vorlesung Wissensbasierte Systeme Vorlesung Informatik B SS 98 / Folie 82! " # ' ( ) * +, - *, -., / 0 1 $! 2 3 4 5 " # 6 7 8.

Erstes Beispiel in Prolog Prädikate (Relationen) durch Fakten definiert: stern(sonne). umkreist(mars, sonne). stern(sirius). umkreist(mond, erde). umkreist(jupiter, sonne). umkreist(phobos, mars). umkreist(erde, sonne). B-83 Prädikate durch Regeln (Implikationen) definiert: planet(b) :- umkreist(b, sonne). satellit(b) :- umkreist(b, P), planet(p). Prädikat: sonnensystem(sonne). sonnensystem(b) :- planet(b). sonnensystem(b) :- satellit(b). Anfragen: Antwort:?- umkreist(erde, sonne). yes?- umkreist(mond, sonne). no?- umkreist(mond, B). B=erde?- umkreist(b, sonne). B=jupiter; B=erde; B=mars?- umkreist(b, jupiter). no?- satellit(mond). yes?- satellit(s). S=mond; S=phobos Vorlesung Informatik B SS 98 / Folie 83 " 7 9 7 2 : # 6! " # ' ( ) * +, -. ; / 0 1 $! 2 3 4 + < 7 + 7.! ' 7 6 = 2 *> )? + < * < @ ) A

Interpretationsschema Backtracking B-84 Programm mit Fakten, Regeln und Anfrage spannt abstrakten Lösungsbaum auf (B-85): Wurzel: Anfrage Knoten: zu verifizierende Teilziele Kanten: zu untersuchende Alternativen Blätter: Anfrage verifiziert oder widerlegt Bei rekursiven Regeln nicht endlicher Baum. Beispiel (a, b,... stehen für Prädikate): 1 a:- b, c, d. 4 e. 2 a:- e, f. 5 f. 3 b:- f. 6 a:- f.?- a, e Prolog-Interpreter durchsuchen den Lösungsraum mit Backtracking. Freiheitsgrade der Suchreihenfolge: 1. Wahl der Regel. Standard: Reihenfolge im Programm 2. Wahl des Teilziels Standard: von links nach rechts Reihenfolge ist entscheidend für die Terminierung der Suche und die Reihenfolge in der Lösungen gefunden werden! 9 B ) C D : Vorlesung Informatik B SS 98 / Folie 84! 4 6 C D = 2 E F G?! 2 4 7 7 3 H ' ( ) * +, -. ; / 0 1 $! ' " 7 C D * < 4 4 7 * < C D I A! 4 4 6 J < 7 K.

Lösungsbaum Beispiel B-85 1 a:- b, c, d. 4 e. 2 a:- e, f. 5 f. 3 b:- f. 6 a:- f.?- a, e. a e b c d e e f e f e f c d e c d e f e e e success fail (backtrack) success L : K " # ' ( ) * +, -. ; Vorlesung Informatik B SS 98 / Folie 85

Prädikatenlogische Grundlagen B-86 Prolog-Notation: Prädikatenlogik: Prädikat: p (a, X, Y). X, Y: p (a, X, Y) Implikation: q (X, Y) :- r (X), s(y). X, Y: q (X, Y) <= r (X) s (Y) Anfrage:?- r(x), s(y). X, Y: r (X) s (Y) = ( X, Y: (r (X) s (Y))) = ( X, Y: ( r (X) s (Y))) Allgemeine logische Formeln eingeschränkt auf Horn-Klauseln, d. h. höchstens ein nicht negiertes Element: a z y... Implikation: a <= z y... Fakt: a negierte Anfrage (s. o.): z y... Resolution führt einen Widerspruchsbeweis für eine Anfrage. Die Antwort ist gültig für alle zu einem Programm konstruierbaren Terme (Herbrand-Universum). Explizite Negation gibt es nicht: tochter(x, Y):- vater(y, X), not(maennlich (X)). Vorlesung Informatik B SS 98 / Folie 86 M ) # 6 + 3 6 : " # ' ( ) * +, -. ;

Terme, Unifikation B-87 Term: Ausdruck mit Literalen, Variablen, Operatoren, Funktoren; beschreibt eine Struktur; wird nicht ausgewertet. z. B. X + f(2*y) Unifikation: Allgemeines Prinzip in der Termersetzung. Anwendung in Prolog: Anwendbarkeit von Regeln oder Fakten auf ein Teilziel entscheiden und dabei Variablen an Werte binden. gegeben: zwei Terme T1, T2, z. B. X+f(2*Y) und 3+f(2*g(1)) gesucht: ein Unifikator, d. h. eine Menge von Variablenbindungen U = {(X, e) X ist Variable in T1 oder T2; e ist ein Term}, so daß nach Substitution der Variablen X durch e in T1 und T2 die beiden Terme gleich sind. z. B. U = { (X, 3), (Y, g(1)) } Allgemeinster Unifikator Ua ist ein Unifikator, der keine unnötigen Variablenbindungen enthält. Die gebundenen Werte sind möglichst allgemein. D. h. nach Anwenden der Substitution mit Ua bleiben möglichst viele Variable in den Termen T1, T2 erhalten. Z. B. T1 = f (h(a, b), g (Y), V) T2 = f (X, g (h(a,c)), Z) U ={(X, h(a, b)), (Y, h(a, c)), (V, a), (Z, a)} Ua ={(X, h(a, b)), (Y, h(a, c)), (V, Z)} Durch rekursiven Vergleich der Terme T1, T2 und ihrer Komponenten wird der allgemeinste Unifikator gefunden oder festgestellt, daß kein Unifikator existiert. + ) N 7 6 : Vorlesung Informatik B SS 98 / Folie 87! " # : H * 2 : L N 7 6. ' ( ) * +, -. ;. ; / 0 1 $! L 4 5 2 N 7 6 2 O 4 O C.

Notation von Prolog-Programmen B-88 Beliebige Folge von Klauseln: Fakten, Regeln und Anfragen (am Ende). Klauseln mit Prädikaten p(t 1,..., t n ), Terme t i Terme bestehen aus beliebig geschachtelten Literalen: hans 127 "text" 'a' Variablen (untypisiert): X Person _ Listen: [] [a, b, c] [a T] [_ T] Strukturen: kante(a, b) datum(t, M, J) Grundterm: Term ohne Variablen, z. B. datum(11, 7, 1995) Termersetzung: Variable werden an Werte gebunden, die Struktur bleibt erhalten, z. B. heuer(t, M, datum(t, M, 1997)).?-heuer(7, 1, Z). liefert Z=datum(7, 1, 1997) In Klauseln werden Terme als Muster verwendet. Mehrfaches Auftreten einer Variablen in einer Klausel steht für den gleichen Wert (siehe Unifikation). last([x], X). last([_ T], Y):- last(t, Y).?-last([1,2,3], Z). Eine Klausel ist auf ein Teilziel anwendbar, wenn dieterme des Teilziels auf entsprechende Terme des Klauselkopfes passen, d. h. unfizierbar sind. Dabei entstehen Variablenbindungen. " 7 E 6 D " # ' ( ) * +, -. ; Vorlesung Informatik B SS 98 / Folie 88

Beispiel: Symbolische Differentiation B-89 Das folgende Prolog-Programm beschreibt einige einfache Regeln zur Differentiation. Sie werden auf Terme angewandt, die Ausdrücke beschreiben, und liefern die Ableitung in Form eines solchen Terms, z. B.?-diff(2*x,x,D). liefert z. B. D = 2*1+x*0. Mit weiteren Regeln zur Umformung von Ausdrücken kann das Ergebnis noch vereinfacht werden. In Prolog werden Ausdrücke wie 2*x nicht ausgewertet (sofern nicht durch IS explizit gefordert), sondern als Struktur dargestellt, also etwa *(2, x). Prolog-Regeln zur Symbolischen Differentiation: diff(x, X, 1):-!. diff(t, X, 0):- atom(t). diff(t, X, 0):- number(t). diff(u+v, X, DU+DV):- diff(u, X, DU), diff(v, X, DV). diff(u-v, X, DU-DV):- diff(u, X, DU), diff(v, X, DV). diff(u*v, X, (U*DV)+(V*DU)):- diff(u, X, DU), diff(v, X, DV). diff(u/v, X, ((V*DU)-(U*DV))/V*V):- diff(u, X, DU), diff(v, X, DV). Falls die erste Regel anwendbar ist, bewirkt der Cut (!), daß bei beim Backtracking keine Alternative dazu versucht wird, obwohl die nächsten beiden Klauseln auch anwendbar wären. Vorlesung Informatik B SS 98 / Folie 89 " P ) E + < 6! " # 8 Q E R ) ' ( ) * +, -. ;. G S T $ 1 $ T! " # 4 8 L 7 : + 3 6. / 0 1 $! " # 4 9 7 : 7 7 8 = K 6?. 4 + 7 2 ) 7 3.

Paradigmenvergleich B-90 Imperative Programmierung: Variablen mit Zuweisungssemantik, Ablaufstrukturen Objekt-orientierte Programmierung: Klassen, Vererbung, dynamische Methodenbindung; meist in imperativer Sprache Parallele Programmierung: Prozesse, Synchronisation, Kommunikation; in imperativer Sprache Funktionale Programmierung: Funktionen, HOF, Rekursion; nicht-imperativ: Variable unveränderbar an Wert gebunden (parallele Auswertung möglich bei unveränderter Semantik) Logische Programmierung: Relationen, Prädikate, Terme und Unifikation; nicht-imperativ: Variable unveränderbar an Term gebunden (parallele Auswertung möglich - ändert Suchreihenfolge) 3 " 7 " # Vorlesung Informatik B SS 98 / Folie 90

Ziele erreicht... B-91 In der Vorlesung Informatik B sollten Sie das Programmieren von Grund auf gelernt haben, eigene praktische Erfahrungen in der Entwicklung von Java-Programmen erworben haben, grundlegende Konzepte der objektorientierten Programmierung gelernt haben, grundlegende Konzepte von Programmiersprachen im allgemeinen verstanden haben; d. h. neben imperativen und objektorientierten Konzepten auch Grundlagen paralleler, funktionaler und logischer Programmierung.... B 7 7 * U 4 V. Vorlesung Informatik B SS 98 / Folie 91