Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf [email protected].

24
Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf [email protected]

Transcript of Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf [email protected].

Page 1: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

Semantik von Prolog&

Unifikation

Prolog Grundkurs WS 99/00

Christof Rumpf

[email protected]

Page 2: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 2

Syntax & Semantik

Die Syntax einer Sprache beschreibt die Menge der wohlgeformten Ausdrücke, die zu dieser Sprache gehören.

Die Semantik einer Sprache beschreibt, wie die Ausdrücke der Sprache interpretiert werden sollen.

Page 3: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 3

Semantik von Prolog

Die Semantik eines Prolog-Programms wird beschrieben durch die Menge aller beweisbaren Anfragen, die nicht zusammengesetzt sind, d.h. aus einem einfachen Beweisziel bestehen und keine Variablen enthalten (ground goals).

Page 4: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 4

Intention und Realität

M sei die Menge aller Abfragen, die ein Programmentwickler gerne abgeleitet hätte.

P sei ein Prolog-Programm.

M(P) sei die Menge aller Abfragen, die auf

Basis von Programm P ableitbar sind.

Page 5: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 5

Korrektheit und Vollständigkeit

P ist korrekt: M(P) M

P ist vollständig: M M(P)

P ist vollständig und korrekt: M = M(P)

Page 6: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 6

Programmentwicklung

Programmieren in Prolog ist ein kreativer Prozeß mit dem Ziel M(P) = M.

Leider lassen sich Korrektheit und Vollständigkeit von Programmen i.d.R. nur annähernd durch Testen überprüfen.

Page 7: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 7

Berechenbarkeit

Ein Problem ist entweder berechenbar oder nicht berechenbar.

Ein Problem gilt als berechenbar, wenn es mit einem Berechnungsverfahren (Algorithmus) gelingt, das Problem in endlich vielen Schritten zu lösen.

Page 8: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 8

Churchsche Hypothese

Die Klasse der intuitiv berechenbaren Funktionen stimmt genau mit der Klasse der Funktionen überein, die durch eine Turing-Maschine berechnet werden können.

(sinngemäß nach Alonzo Church, 30er Jahre)

Page 9: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 9

Turing-Maschine

Schreib- unendliches Band Lesekopf

... x y z # 0 1 1 0 ...

endliche Kontrolleinheit

Page 10: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 10

Halteproblem, Entscheidbarkeit

Es gibt kein allgemeines Verfahren, das für eine gegebene Turing-Maschine entscheidet, ob sie bei der Berechnung des Problems hält.

Prolog ist äquivalent zur Turing-Maschine.

Page 11: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 11

Komplexität

Die berechenbaren Probleme lassen sich abhängig vom verwendeten Algorithmus in verschiedene Komplexitätsklassen einteilen.

Das Maß für die Komplexität ist die Anzahl benötigter Berechnungsschritte abhängig von der Eingabegröße (Anzahl der involvierten Objekte).

Page 12: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 12

Komplexitätsklassen

Problem: Sortieren einer Liste mit n Elementen.

Komplexität (Wachstum):

n linear geht nicht

n log n logarithmisch sehr gut

n2 quadratisch gut

2n exponentiell schlecht

Page 13: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 13

Effizienz

Die Klasse P der Verfahren, deren Komplexität durch ein Polynom beschränkt ist, gelten als effizient. Die ineffizienten Verfahren liegen in der Klasse NP.

Polynom:

aknk + ak-1nk-1 + ... + a1n + a0, ai, n, k N

Page 14: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 14

Effizienz in der Praxis

Von manchen (enscheidbaren) Problemen sagt man, daß es keine effizienten Verfahren zu ihrer Lösung gibt (z.B. SAT, TSP). Andererseits kann man Probleme, für die es effiziente Verfahren gibt, auch ineffizient lösen. Solche Verfahren nennt man naive Verfahren (z.B. Permutationssortieren).

Page 15: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 15

Unifikation

Die (Term-)Unifikation ist eine Operation auf Termen.

: T T T T

Entweder gelingt die Unifikation mit dem Ergebnis, daß die beiden Terme dann gleich sind, oder sie scheitert.

Page 16: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 16

Unifikationsoperator

Anfragen

?- p(a,X) = p(Y,b). X = b Y = a yes

?- p(a,X) = p(b,Y). no

Prolog hat ein eingebautes Prädikat =/2, das dann beweisbar ist, wenn die Unifikation der Terme gelingt.

Variablen werden substituiert (instantiiert).

Page 17: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 17

Substitution

Eine Substitution ist eine endliche Menge von Paaren xi = tj, wobei gilt:

– xi sind Variablen

– ti sind Terme

– xi xj für alle i j (eindeutige Belegung)

– xi kommt nicht in tj vor, für jedes i und j

(zyklische Terme, Occur-check)

Page 18: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 18

Unifikator

Ein Unifikator zweier Terme ist eine Substitution, die die beiden Terme identisch macht.

Der allgemeinste Unifikator (MGU) enthält nur die Paare in der Substitution, deren Elemente aus den beiden Termen kommen.

Page 19: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 19

Instanz

Ein Term A ist eine Instanz von Term B, wenn es eine Substitution gibt, so daß

A = B z.B. A = vater(abraham, isaac) B = vater(X , Y ) = {X=abraham, Y=isaac}

Page 20: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 20

Unifikation von Variablen

Prolog-Variablen sind mit beliebigen Termen unifizierbar, also mit– Variablen– Atomen– Zahlen– Strukturen

Page 21: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 21

Atome und Zahlen

Atome und Zahlen sind jeweils nur mit syntaktisch identischen Atomen und Zahlen (sowie mit Variablen) unifizierbar.

a = ayes

isaac = isaac yes

isaac = isaaac no

1 = 1no

2.4 = 2.4 yes

1 = 1.0 no

Page 22: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 22

Strukturen

Strukturen sind unter den folgenden Bedingungen miteinander unifizierbar:– Die Namen der Funktoren sind identisch.– Die Argumentanzahl ist identisch.– Das i-te Argument der einen Struktur ist mit

dem i-ten Argument der anderen Struktur unifizierbar.

Page 23: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 23

Beispiele I

• _ = X• X = Y• a(X,Y,Z) = a(Q,U)• a(X,Y,Z) = a(W,P,t)• a(b(C)) = b(a(C))• f1(f2(f3,f4),f5(f6,X,Y),g)= f1(A,f5(B,f7,f8),H)

Page 24: Semantik von Prolog & Unifikation Prolog Grundkurs WS 99/00 Christof Rumpf rumpf@uni-duesseldorf.de.

08.11.99 GK Prolog - Semantik, Unifikation 24

Beispiele II

X = X X = f(X) X = f(Y), X = Y X = a, X = b X = a; X = b