Upload
harman-leese
View
115
Download
3
Embed Size (px)
Citation preview
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.
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).
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.
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)
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.
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.
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)
08.11.99 GK Prolog - Semantik, Unifikation 9
Turing-Maschine
Schreib- unendliches Band Lesekopf
... x y z # 0 1 1 0 ...
endliche Kontrolleinheit
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.
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).
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
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
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).
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.
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).
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)
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.
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}
08.11.99 GK Prolog - Semantik, Unifikation 20
Unifikation von Variablen
Prolog-Variablen sind mit beliebigen Termen unifizierbar, also mit– Variablen– Atomen– Zahlen– Strukturen
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
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.
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)
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