Praktische Informatik 2

Transcrição

Praktische Informatik 2
Praktische Informatik 2
Themen
Praktische Informatik 2
Alternative Programmiermethoden:
Deklaratives (logisches Programmieren): Prolog
Sommer-Semester 2007
Auf den Poolrechnerrn:
/usr/local/praktikum/SWIprolog/bin/pl
Prof. Dr. sc. Hans-Dieter Burkhard
www.ki.informatik.hu-berlin.de
Abstrakte Datenstrukturen
(Listen, Graphen, Bäume ...)
PI2
Repräsentation von „Wissen“
Sommer-Semester 2007
Hans-Dieter Burkhard
Hans-Dieter Burkhard
Über allen
Wipfeln
ist Ruh‘
'GGGGPNKI]WJE
ZUFWKGV
KM]XLRSVHF[
UØRS[FKMGG
Zeichen/Symbole + Interpretation
Syntax + Semantik
001101111010101100010111010001001001000110101101010101
1+1=0
42
3
Explizites vs. Implizites Wissen
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Uranos
....
....
Kronos
Unterschiedliche Formen für
• Menschlicher Nutzer
• Maschinelle Auswertung
Hades
Poseidon
Rheia
Zeus
Apollo
Artemis
Semele
PI2
Hera
Athene
Leto
5
Demeter
Persephone
Hermes
Hans-Dieter Burkhard
Hestia
„Fakt“:
parent(zeus,athena).
Maja
Inferenz: Verfahren zur Herleitung von implizitem
Wissen aus explizitem Wissen
(z.B. Beweisverfahren)
Sommer-Semester 2007
4
Griechische GötterGaja
explizit: z.B. Axiome, Schluss-Regeln
Implizit:
Folgerungen
PI2
2
Zeichen, Symbole, Signale, ...
Lexikon
Datenbank
Briefmarkensammlung
Programme
Landkarten
Bilder
Darstellung und Interpretation
Gesetze
• Menschlicher Nutzer
Regeln
• Maschinelle Auswertung
...
PI2
Sommer-Semester 2007
Dionysos
Sommer-Semester
2007
Ares
.... ....
Hans-Dieter BurkhardHarmonia
Hephaistos
Hebe
Aphrodite
6
•1
Griechische Götter: Fakten
parent(uranus, cronus).
parent(uranus,
cronus). Uranos Gaja
parent(gaea,
cronus).
...
...
parent(gaea,
female(gaea).
parent(gaea,
rhea). uranus).
.
.
Kronos
Rheia
parent(rhea,
zeus). cronus).
parent(gaea,
female(rhea).
parent(cronus,
zeus).
Hades
Hestia
Poseidon
Zeus
Demeter
male(uranus).
parent(gaea,
rhea).
female(hera).
parent(rhea,
hera).
Maja
male(cronus).
parent(rhea,
female(hestia).
parent(cronus,
hera). zeus).
Persephone
Hermes
male(zeus).
Athene
parent(cronus,
hades). zeus).
parent(cronus,
Leto
female(demeter).
parent(rhea,
hades).
male(hades).
Ares
Hephaistos
Apollo
Artemis
parent(rhea,
hera).
female(athena).
parent(cronus, hestia).
male(hermes).
parent(cronus,
female(metis).
parent(zeus,
... ... apollo). Aphrodite
parent(rhea,
hestia). hera).
Semele
. .
male(apollo).
Dionysos
Harmonia
parent(leto,
apollo).
parent(zeus,
hermes). hades).
parent(cronus,
female(maia).
parent(zeus,
artemis).
parent(maia,
hermes).
male(dionysius).
...
female(persephone).
parent(leto,
artemis).
parent(zeus,
athena).
male(hephaestus).
female(aphrodite).
parent(semele, dionysius).
parent(zeus,
ares).
male(poseidon).
parent(aphrodite, harmonia).
parent(hera,
ares).
female(artemis).
harmonia).
parent(zeus,
hephaestus). parent(ares,
parent(harmonia, semele).
parent(hera,
hephaestus).female(leto).
parent(demeter, persephone).
...
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Fakten in Prolog
Ein Fakt hat die Form
funktor ist der Name einer n-stelligen Relation (Prädikat).
n ist die Anzahl der Argumente.
Hera
7
Hans-Dieter Burkhard
9
CWA: Closed World Assumption (1a)
funktor ist der Name einer n-stelligen Relation (Prädikat).
?- male(zeus).
yes.
?- parent(zeus,athena).
yes.
?-parent(hera,athena).
no.
PI2
Sommer-Semester 2007
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
parent(rhea,
parent(cronus,
parent(rhea,
parent(zeus,
parent(maia,
...
female(gaea).
cronus). female(rhea).
cronus). female(hera).
rhea).
female(hestia).
zeus).
female(demeter).
zeus).
female(athena).
hera).
female(metis).
hera).
female(maia).
hades).
female(persephone).
hades).
female(aphrodite).
hestia).male(uranus).
female(artemis).
hestia).male(cronus).
female(leto).
hermes).male(zeus).
hermes).male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
Hans-Dieter Burkhard
10
parent(uranus, cronus).
parent(gaea,
cronus).
female(gaea).
female(rhea).
female(hera).
parent(gaea,
rhea).
female(hestia).
?-parent(hera,athena).
parent(rhea,
zeus).
female(demeter).
parent(cronus, zeus).
female(athena).
no.
parent(rhea,
hera).
female(metis).
parent(cronus, hera).
?-parent(zeus,hera,ares).parent(cronus, hades). female(maia).
female(persephone).
parent(rhea,
hades).
female(aphrodite).
no.
parent(cronus, hestia).male(uranus).
female(artemis).
parent(rhea,
hestia).male(cronus).
female(leto).
?-kleiner(3,7).
parent(zeus,
hermes).male(zeus).
parent(maia,
hermes).male(hades).
no.
...
male(hermes).
?-vater(zeus,athena).
„Optimistische“ Variante: yes.
„Pessimistische“ Variante: no.
Hans-Dieter Burkhard
8
(Vorläufige) Bedeutung der Antwort „no“:
Der Fakt ist in der Datenbank nicht enthalten.
Oder:
Welche Antwort gibt Prolog
für nicht gespeicherte Fakten?
Sommer-Semester 2007
Hans-Dieter Burkhard
CWA: Closed World Assumption (1a)
Bedeutung der Antwort „no“?
PI2
Sommer-Semester 2007
Eine Anfrage hat die Form ?-funktor(argumente).
female(gaea).
cronus).
female(rhea).
cronus).
female(hera).
Hinzufügen:
rhea).
female(hestia).
zeus).
female(demeter).
asserta(male(caesar)).
zeus).
female(athena).
male(uranus).
hera).
female(metis).
assertz(male(augustus)).
male(cronus).
hera).
female(maia).
male(zeus).
hades).
female(persephone).
Löschen:male(hades).
hades).
female(aphrodite).
hestia). male(hermes).
female(artemis).
retract(male(zeus)).
hestia). male(apollo).
female(leto).
hermes). male(dionysius).
hermes). male(hephaestus).
male(poseidon).
Sommer-Semester 2007
PI2
Anfragen
Aufzählung: Die Beziehungen werden explizit aufgezählt
(Faktenmenge, Datenbank)
PI2
male/1
parent/2
parent/3
plus/3
true/0
fail/0
male(zeus).
parent(zeus,athena).
parent(zeus,hera,ares).
plus(3,4,7).
kleiner(6,9).
Hebe
Definition einer Relation durch Aufzählung
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
parent(rhea,
parent(cronus,
parent(rhea,
parent(zeus,
parent(maia,
...
funktor(argumente).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
11
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
12
•2
Anfragen nach Existenz
Anfrage enthält Variable
CWA: Closed World Assumption (1b)
?-funktor(argumente).
Bedeutung der Antwort „no“ ?
Variablen-Bezeichner beginnen mit Großbuchstaben
?- parent(zeus,X).
X=hermes?
;
X=athena?
;
X=ares?
;
no.
female(gaea).
?parent(zeus,X).
parent(uranus,
cronus). female(rhea).
parent(gaea,
cronus). female(hera).
X=hermes?
parent(gaea,
rhea).
female(hestia).
parent(rhea,
zeus).
;parent(cronus, zeus). female(demeter).
female(athena).
parent(rhea,
hera).
female(metis).
X=athena?
parent(cronus, hera).
female(maia).
parent(cronus, hades).
.parent(rhea, hades). female(persephone).
female(aphrodite).
parent(cronus, hestia).male(uranus).
female(artemis).
yes.
parent(rhea,
hestia).male(cronus).
female(leto).
parent(zeus,
parent(maia,
...
hermes).male(zeus).
hermes).male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
„ ; “ erwartet weitere Antworten. „ .“ schließt Anfrage ab.
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
13
Relationen definieren durch Regeln
Eine Regel hat die Form
(Vorläufige) Bedeutung der Antwort „no“: female(gaea).
parent(uranus, cronus). female(rhea).
Es gibt keinen passenden Fakt
in dercronus).
Datenbank.
parent(gaea,
female(hera).
?-father(X,Y).
no.
?-kleiner(M,N).
no.
?-parent(X,gaea).
no.
PI2
Sommer-Semester 2007
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
parent(rhea,
parent(cronus,
parent(rhea,
parent(zeus,
parent(maia,
...
rhea).
female(hestia).
zeus).
female(demeter).
zeus).
female(athena).
hera).
female(metis).
hera).
female(maia).
hades).
female(persephone).
hades).
female(aphrodite).
hestia).male(uranus).
female(artemis).
hestia).male(cronus).
female(leto).
hermes).male(zeus).
hermes).male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
Hans-Dieter Burkhard
14
Relationen definieren durch Regeln
Definition der Relation „Vater-Kind“:
kopf:-körper.
father(Vater,Kind)
:-parent(Vater,Kind), male(Vater).
goal:-subgoals.
father(X,Y):-parent(X,Y),male(X).
mother(X,Y):-parent(X,Y),female(X).
Mit der intuitiven Bedeutung:
parent(X,Y,Z) :-father(X,Z),mother(Y,Z).
„goal“ gilt (ist beweisbar),
falls alle „subgoals“ gelten (beweisbar sind).
son(Sohn,Elternteil):parent(Elternteil,Sohn),male(Sohn).
grandfather(X,Z):-father(X,Y),parent(Y,Z).
grandmother(X,Z):-mother(X,Y),parent(Y,Z).
grandchild(X,Y):-grandfather(Y,X).
grandchild(X,Y):-grandmother(Y,Z).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
15
Regel als logische Formel
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
16
Regel als logische Formel
Die Variablen in Regeln sind universell quantifiziert.
Die Relationen der rechten Seite sind konjunktiv verknüpft.
goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn).
Hornklausel:
Wird aufgefasst als
∀X1...∀Xn
Alternative mit maximal
[ subgoal1(X1,...,Xn) ∧...∧ subgoalm(X1,...,Xn) → goal(X1,...,Xn) ]
oder
∀X1...∀Xn
[¬subgoal1(X1,..,Xn) ∨...∨ ¬subgoalm(X1,..,Xn) ∨ goal(X1,..,Xn) ]
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
17
einem nicht-negierten Literal
∀X1...∀Xn
[¬subgoal1(X1,..,Xn) ∨...∨ ¬subgoalm(X1,..,Xn) ∨ goal(X1,..,Xn) ]
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
18
•3
Regel als logische Formel
Regel als logische Formel
Variable, die nur im Regelkörper auftreten, können als
existentiell quantifizierte Variable innerhalb des
Regelkörpers (!) betrachtet werden:
Intuitive Bedeutung:
∀X1...∀Xn∀Y1...∀Yk [
subgoal1(X1,...,Xn,Y1,...,Yk ) ∧ ... ∧ subgoalm(X1,...,Xn,Y1,...,Yk )
→ goal(X1,...,Xn) ]
ist logisch äquivalent zu
∀X1...∀Xn [
∃Y1..∃Yk[subgoal1(X1,..,Xn,Y1,..,Yk)∧...∧subgoalm(X1,..,Xn,Y1,..,Yk)]
→ goal(X1,...,Xn) ]
Sommer-Semester 2007
Hans-Dieter Burkhard
19
H1 → H2 , H 1
H2
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
20
Anfrage/Beweis
Unbenannte/anonyme Variable
Unbenannte/anonyme Variable:
entspricht anschaulich der Abtrennungsregel
(modus ponens)
goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn).
grandfather(X,Z):-father(X,Y),father(Y,Z).
PI2
„goal“ gilt (ist beweisbar)
falls alle „subgoals“ gelten (beweisbar sind).
Gaja
?- mother_in_law(gaea,gaea).
_ für „beliebig“
Zu beweisen:
mother_in_law(X,Y):mother(X,Z),parent(Y,Z,_).
Uranos
mother_in_law(gaea,gaea).
Kronos
Rheia
verfügbare Klausel:
mother_in_law(X,Y):mother(X,Z),parent(Z,Y,_).
mother_in_law(X,Y):mother(X,Z),parent(Z,Y,_).
Klausel mit Bindung X=gaea, Y=gaea, Z=Z[1]
mother_in_law(gaea,gaea):mother(gaea,Z[1]),parent(Z[1],gaea,_).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
21
Anfrage/Beweis
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Anfrage/Beweis
Gaja
Gaja
Uranos
zu beweisen:
Kronos
22
Uranos
zu beweisen:
1) mother(gaea,Z[1]).
Rheia
mother_in_law(gaea,gaea):mother(gaea,Z[1]),parent(Z[1],gaea,_).
Kronos
Rheia
Verfügbare Klausel:
mother(X,Y):-parent(X,Y),female(X).
dafür zu beweisen
1)
mother(gaea,Z[1]).
2)
parent(Z[1],gaea,_).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Klausel mit Bindung X=gaea, Y=Z[1] :
mother(gaea,Z[1]):-parent(gaea,Z[1]),female(gaea).
23
PI2
zu beweisen 1.1)
parent(gaea, Z[1] ).
zu beweisen 1.2)
female(gaea).
Sommer-Semester 2007
Hans-Dieter Burkhard
24
•4
Anfrage/Beweis
Anfrage/Beweis
Gaja
Gaja
Uranos
zu beweisen:
Uranos
Kronos
zu beweisen
Kronos
unter Beachtung der Bindung Z[1]=uranus :
Rheia
1.1) parent(gaea, Z[1] ).
Rheia
2) parent(uranus,gaea,_).
verfügbarer Fakt ermöglicht Bindung Z[1] =uranus :
parent(gaea,uranus).
Verfügbare Klausel:
parent(X,Y,Z) :-father(X,Z),mother(Y,Z).
1.2) female(gaea).
Klausel mit Bindungen :
verfügbarer Fakt:
parent(uranus,gaea,Z[2]) :father(uranus,Z[2]),mother(gaea,Z[2]).
female(gaea).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
25
Anfrage/Beweis
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Anfrage/Beweis
Gaja
Gaja
Uranos
zu beweisen
Uranos
Kronos
zu beweisen:
2.1) father(uranus,Z[2]).
Rheia
zu beweisen 2.1)
father(uranus,Z[2]).
zu beweisen 2.2)
mother(gaea,Z[2]).
Sommer-Semester 2007
father(X,Y):-parent(X,Y),male(X).
27
Kronos
PI2
Rheia
male(uranus).
Sommer-Semester 2007
Hans-Dieter Burkhard
Gaja
Uranos
Kronos
Rheia
mother(gaea,cronus):parent(gaea,cronus),female(gaea).
male(uranus).
verfügbarer Fakt:
zu beweisen 2.2.1)
male(uranus).
Hans-Dieter Burkhard
28
mother(X,Y):-parent(X,Y),female(X).
Klausel mit Bindung X=gaea, Y=cronus :
parent(uranus,cronus).
Sommer-Semester 2007
zu beweisen 2.1.2)
2.2) mother(gaea,cronus).
Verfügbare Klausel:
verfügbarer Fakt (z.B.), bewirkt Bindung Z[2]=cronus :
PI2
parent(uranus, Z[2]).
zu beweisen
mit erfolgter Bindung Z[2]=cronus
2.1.1) parent(uranus,Z[2]).
2.1.2)
zu beweisen 2.1.1)
Anfrage/Beweis
Gaja
Uranos
zu beweisen:
Rheia
Klausel mit Bindung X=uranus, Y=Z[2] :
father(uranus,Z[2]):parent(uranus,Z[2]),male(uranus).
Hans-Dieter Burkhard
Anfrage/Beweis
Kronos
Verfügbare Klausel:
parent(uranus,gaea,Z[2]) :father(uranus,Z[2]),mother(gaea,Z[2]).
PI2
26
zu beweisen 2.2.2)
29
PI2
Sommer-Semester 2007
parent(gaea,cronus),
female(gaea).
Hans-Dieter Burkhard
30
•5
Anfrage/Beweis
Anfrage/Beweis-Baum
Gaja
Uranos
zu beweisen:
2.2.1)
Kronos
?- mother_in_law(gaea,gaea).
Yes.
Rheia
parent(gaea,cronus).
mother(gaea,uranus)
parent(gaea,cronus).
PI2
Sommer-Semester 2007
parent(uranus,cronus)
parent(gaea,cronus)
male(uranus)
31
PI2
Sommer-Semester 2007
female(gaea)
Hans-Dieter Burkhard
32
Prolog-Programm
Programme bestehen aus Klauseln.
father(X,Y):-parent(X,Y),male(X).
mother(X,Y):-parent(X,Y),female(X).
parent(X,Y,Z) :-father(X,Z),mother(Y,Z).
son(X,Y):-parent(X,Y),male(Y).
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
parent(rhea,
parent(cronus,
parent(rhea,
parent(zeus,
parent(maia,
...
female(gaea).
cronus). female(rhea).
cronus). female(hera).
rhea).
female(hestia).
zeus).
female(demeter).
zeus).
female(athena).
hera).
female(metis).
hera).
female(maia).
hades).
female(persephone).
hades).
female(aphrodite).
hestia).male(uranus).
female(artemis).
hestia).male(cronus).
female(leto).
hermes).male(zeus).
hermes).male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
father(Vater,Kind)
:-parent(Vater,Kind), male(Vater).
Sommer-Semester 2007
mother(gaea,cronus)
Fertig
(existenzielle) Anfragen mit Regeln
PI2
parent(uranus,gaea,cronus)
female(gaea)
Hans-Dieter Burkhard
?- father(zeus,athena).
yes.
?- father(zeus,X).
X=hermes?
;
X=athena?
;
X=ares?
.
yes.
Rheia
father(uranus,cronus)
parent(gaea,uranus)
female(gaea).
verfügbarer Fakt:
female(gaea).
Kronos
mother_in_law(gaea,gaea)
verfügbarer Fakt:
2.2.2)
Gaja
Uranos
Hans-Dieter Burkhard
33
grandfather(X,Z):-father(X,Y),parent(Y,Z).
grandmother(X,Z):-mother(X,Y),parent(Y,Z).
grandchild(X,Y):-grandfather(Y,X).
grandchild(X,Y):-grandmother(Y,Z).
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
parent(rhea,
parent(cronus,
parent(rhea,
parent(zeus,
parent(maia,
...
Klauseln sind Fakten oder Regeln.
Fakt als Regel: fakt:-true
female(gaea).
cronus). female(rhea).
cronus). female(hera).
rhea).
female(hestia).
zeus).
female(demeter).
zeus).
female(athena).
hera).
female(metis).
hera).
female(maia).
hades).
female(persephone).
hades).
female(aphrodite).
hestia).male(uranus).
female(artemis).
hestia).male(cronus).
female(leto).
hermes).male(zeus).
hermes).male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
mit Prädikat true/0
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Prolog-Programm
Prolog-Programm: Prozeduren
Klauseln definieren Relationen (Prädikate)
Klauseln mit gleichem Kopf-Funktor
(Name,Stelligkeit) bilden eine Prozedur
Die Klauseln einer Prozedur bieten Alternativen
für die Prolog-Beweise
father(Vater,Kind)
:-parent(Vater,Kind), male(Vater).
Intuitive Bedeutung:
Linke Seite gilt, wenn alle Prädikate der rechten Seite bei
entsprechender Belegung/Bindung der Variablen gelten.
Es gilt:
father(zeus,athena).
weil gilt:
parent(zeus,athena).
grandfather(X,Z):-father(X,Y),father(Y,Z).
grandfather(X,Z):-father(X,Y),mother(Y,Z).
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
...
male(zeus).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
35
34
PI2
Sommer-Semester 2007
cronus).
cronus).
rhea).
zeus).
Hans-Dieter Burkhard
36
•6
Prolog-Programm: Prozeduren
Prolog-Programm
Klauseln mit gleichem Kopf-Funktor
(Name,Stelligkeit) bilden eine Prozedur
Redundanzen sind logisch unproblemastisch
Anfragen an Programme haben die Form
? - goal(X1,...,Xn).
im Sinne von „gilt ...?“ („ist ... beweisbar?“):
grandfather(X,Z):-father(X,Y),father(Y,Z).
grandfather(X,Z):-father(X,Y),mother(Y,Z).
grandfather(X,Z):-father(X,Y),parent(Y,Z).
grandfather(cronus, ares).
grandfather(cronus, athena).
∃X1..∃Xk [ goal(X1,...,Xn) ]
Oder allgemeiner
? - goal1(X1,...,Xn) ,..., goalm(X1,...,Xn).
Redundanzen bieten zusätzliche Beweisvarianten
PROLOG: evtl. unerwünschte Auswirkungen
Softwaretechnologie: Minimalitätsprinzip
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
im Sinne von „gilt ...?“ („ist ... beweisbar?“):
∃X1..∃Xk [goal1(X1,...,Xn)∧ ... ∧ goalm(X1,...,Xn) ]
37
Prolog-Interpreter
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
38
Prolog-Interpreter
Laufzeit-System für Prolog,
das Antworten auf Anfragen an ein Programm gibt,
d.h. Beweise sucht und ausführt (Theorem-Beweiser).
Fahrplantabelle
Fahrplan-Fakten
s_bahn(alexanderplatz,jannowitzbrücke,6:09,6:11, 103).
s_bahn(jannowitzbrücke,ostbahnhof,
6:11,6:13, 103).
...
Vorstellung:
Man gibt Fakten und Zusammenhänge als Programm ein
(z.B. Fahrplantabelle)
und erhält Antworten bzgl. aller Folgerungen
(z.B. billigste Verbindungen von A nach B) .
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Suchprogramm
erreichbar(Start,Ziel,Zeit)
:- s_bahn(Start,Zwischenziel,Abfahrt,Ankunft,_),
erreichbar(Zwischenziel,Ziel,Zeit1),
berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit).
...
39
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
40
Prolog und Logik
Prolog-Interpreter
Prolog-Programm P
= Axiome
Anfrage Q
= Frage nach Beweisbarkeit von Q aus P
Antwort
= Ergebnis eines Beweises bzw. Fehlschlag
Trace
= Verlauf des Beweisversuchs
Ziel:
Prolog-Interpreter als universelles Verfahren im PK1
Insbesondere
Vollständigkeit:
Interpreter liefert alle Folgerungen aus dem Programm
Korrektheit:
Interpreter liefert nur Folgerungen aus dem Programm
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
41
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
42
•7
Situation im PK1
gdw.
gdw.
Situation im PK1
Q folgt aus Formelmenge {P1,..,Pn}
Q ist aus Formelmenge {P1,..,Pn} syntaktisch ableitbar
P1 ∧ ... ∧ Pn → Q ist allgemeingültig
Allgemeingültigkeit ist axiomatisierbar/aufzählbar:
Falls ein Ausdruck H allgemeingültig ist,
so ist das in endlich vielen Schritten feststellbar.
Genauer: Es gibt dafür ein universelles Verfahren.
gdw.
gdw.
Allgemeingültigkeit ist nicht entscheidbar:
Es gibt kein universelles Verfahren, das für beliebige H
entscheidet, ob H allgemeingültig ist.
Falls ein Ausdruck H nicht allgemeingültig ist,
so ist das eventuell nicht feststellbar
(Verfahren kommt evtl. nicht zum Abbruch).
Genauer: Es gibt dafür kein universelles Verfahren.
Algorithmus/Programm
„Theorembeweiser“
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
43
Situation im PK1
gdw.
gdw.
Q folgt aus Formelmenge {P1,..,Pn}
Q ist aus Formelmenge {P1,..,Pn} syntaktisch ableitbar
P1 ∧ ... ∧ Pn → Q ist allgemeingültig
Hans-Dieter Burkhard
Sommer-Semester 2007
Hans-Dieter Burkhard
44
Kein Entscheidungsprogramm im PK1 möglich.
Spezielle Situation für Prolog-Interpreter:
– eingeschränkt durch Horn-Klauseln
– eingeschränkt durch Beweisstrategie im Interpreter
(Frage nach Vollständigkeit/Korrektheit!)
Entscheidungsverfahren existieren prinzipiell für
Falls ein Ausdruck H nicht allgemeingültig ist,
so ist das nicht allgemein feststellbar.
Genauer: Es gibt dafür kein universelles Verfahren.
Sommer-Semester 2007
PI2
Konsequenzen aus Situation im PK1
Falls ein Ausdruck H allgemeingültig ist,
so ist das in endlich vielen Schritten feststellbar.
Genauer: Es gibt dafür ein universelles Verfahren.
PI2
Q folgt aus Formelmenge {P1,..,Pn}
Q ist aus Formelmenge {P1,..,Pn} syntaktisch ableitbar
P1 ∧ ... ∧ Pn → Q ist allgemeingültig
– aussagenlogische Programme oder
– Programme über endlichen Relationen
45
Nichtdeterministische Suche nach Beweisbaum
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
46
Nichtdeterministische Suche nach Beweisbaum
Ausgangspunkt und Zwischenzustände:
Ziel (Ende des Verfahrens):
Menge von „offenen“ (zu beweisenden) Teilzielen:
subgoals = { subgoal1(...) ,..., subgoalm(...) }
Die Teilziele subgoal1(...) haben die Form funktor(t1,...,tn) .
Dabei bezeichnet funktor ein n-stelliges Prädikat,
dessen Argumente jeweils an Terme ti gebunden sind.
oder:
kein weiterer Beweisversuch möglich, dabei Antwort „no“
Terme (Strukturen) sind Variablen, Konstante oder
komplexere Strukturen, die wiederum Terme enthalten
können.
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
subgoals ={} , d.h. alle Teilziele sind bewiesen
dabei Antwort „yes“ bzw.
Angabe der Terme,
an die die Variablen der Anfrage gebunden wurden.
47
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
48
•8
Nichtdeterministische Suche nach Beweisbaum
Nichtdeterministische Suche nach Beweisbaum
Zwischenschritte:
Die Suche ist erfolgreich, wenn
- in jedem Zwischenschritt eine passende Klausel gewählt
wird, bei der die Unifikation gelingt,
- am Ende subgoals={} gilt.
Wähle ein zu beweisendes Teilziel:
funktor(t1,...,tn) ∈ subgoals
Wähle eine passende Klausel der zugehörigen Prozedur:
funktor(x1,..,xn) :-funktor1(x11,..,x1n1),...,funktorm(xm1,..,xmnm)
Unifikation
des Kopfes funktor(x1,...,xn) mit Teilziel funktor(t1,...,tn)
ergibt eine Variablensubstitution σ
(Ersetzung von Variablen durch Terme)
In jedem Schritt i erfolgen Substitutionen σi von (allen)
Variablen.
Die Substitutionen ergeben in ihrer Gesamtheit die Terme,
an die die Variablen X der Anfrage gebunden wurden:
„Antwort-Substitution“:
σ (X) = σk (σk-1 (... σ1 (X) ...) )
Neuer Zwischenzustand:
subgoals:= σ( ( subgoals – { funktor(t1,...,tn) } )
∪ { funktor1(t11,..,t1n1),...,funktorm(tm1,..,tmnm)} )
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
49
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
50
Interpreter für Standard-Prolog
Interpreter für Standard-Prolog
Idee:
Systematische Suche nach Beweismöglichkeiten
Backtracking:
Alternativen für den Beweis eines Teilziel werden markiert
(„Backtrack-Punkte“).
(Reihenfolge für „wähle Teilziel/Klausel“)
Reihenfolge innerhalb einer Prozedur
(Alternativen für Beweis)
oben vor unten
Beim Fehlschlagen eines Beweisversuchs wird am jüngsten
Backtrack-Punkt ein alternativer Beweis gestartet
(„chronologisches Backtracking“).
Dabei werden zwischenzeitliche Variablenbindungen
zurückgenommen.
Reihenfolge innerhalb einer Klausel
(alle subgoals müssen erfüllt werden)
links vor rechts
Eingabe von „;“ bei Antworten auf existentielle Anfragen wirkt
wie Fehlschlag (löst Backtracking aus) .
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
51
PI2
grandfather(X,Z):-father(X,Y),father(Y,Z).
grandfather(X,Z):-father(X,Y),mother(Y,Z).
Sommer-Semester 2007
Beweisversuch mit 1. Klausel (ggf. neue Variablennamen!)
grandfather(X1,Z):-father(X1,Y),father(Y,Z).
Backtrackpunkt für 2. Klausel:
grandfather(X,Z):-father(X,Y),mother(Y,Z).
father(X,Y):-parent(X,Y),male(X).
Beweisversuch mit Klausel (neue Variablennamen):
father(X2,Y1):-parent(X2,Y1),male(X2).
(Keine Alternativen – kein Backtrackpunkt)
Substitution σ (X2) = X σ (Y1) = Y
Substitution σ (X1) = X σ (Z) = ares
grandfather(X,ares):father(X,Y),father(Y,ares).
zu beweisen:
zu beweisen:
parent(X,Y).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
52
zu beweisen:
father(X,Y).
?-grandfather(X,ares).
father(X,Y).
Hans-Dieter Burkhard
father(X,Y):-parent(X,Y),male(X).
male(X).
father(Y,ares).
father(Y,ares).
53
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
54
•9
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
zu beweisen:
parent(cronus,
parent(X,Y).
parent(rhea,
Beweisversuch mit 1. Fakt
parent(cronus,
parent(uranus, cronus). parent(cronus,
Backtrackpunkt für Alternativen ...
parent(gaea, cronus).
cronus).
cronus).
rhea).
zeus).
zeus).
hera).
hera).
hades).
Beweis mit Fakt
male(uranus).
gelingt:
Keine neuen Substitutionen.
Keine neuen Teilziele.
Zu beweisen:
Ist Fakt, d.h. keine neuen Teilziele.
Zu beweisen:
male(uranus).
father(uranus,ares).
Sommer-Semester 2007
zu beweisen:
male(uranus).
male(uranus).
Substitution σ (X) = uranus σ (Y) = cronus
parent(uranus,cronus).
PI2
male(uranus).
male(cronus).
male(zeus).
male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
Hans-Dieter Burkhard
father(uranus,ares).
55
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
father(X,Y):-parent(X,Y),male(X).
zu beweisen:
father(uranus,ares).
zu beweisen:
parent(uranus,ares).
Beweisversuch mit Klausel (neue Variablennamen)
father(X3,Y2):-parent(X3,Y2),male(X3).
Es gibt keinen solchen Fakt
56
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
...
(Keine Alternativen – kein Backtrackpunkt)
Substitution σ (X3) = uranus σ (Y1) = ares
Beweisversuch fehlgeschlagen.
father(uranus,ares):parent(uranus,ares),male(uranus).
Rückkehr zum jüngsten Backtrack-Punkt
parent(gaea,
zu beweisen:
Sommer-Semester 2007
cronus).
beim Beweis für
parent(uranus,ares).
PI2
cronus).
cronus).
rhea).
zeus).
zeus).
hera).
hera).
hades).
male(uranus).
Hans-Dieter Burkhard
Weitere Fehlschläge folgen
bei Beweisversuchen mit
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
...
parent(X,Y).
57
cronus).
cronus).
rhea).
zeus).
zeus).
hera).
hera).
hades).
PI2
Sommer-Semester 2007
male(X).
father(Y,ares).
Hans-Dieter Burkhard
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
zu beweisen:
parent(cronus,
parent(X,Y).
parent(rhea,
Beweisversuch mit Fakt
parent(cronus,
parent(cronus, zeus).
parent(cronus,
Backtrackpunkt für Alternativen. ...
parent(rhea, hera).
58
cronus).
cronus).
rhea).
zeus).
zeus).
hera).
hera).
hades).
Substitution σ (X) = cronus σ (Y) = zeus
parent(cronus,zeus).
Ist Fakt, d.h. keine neuen Teilziele.
Zu beweisen:
male(cronus).
father(zeus,ares).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
59
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
60
•10
male(uranus).
male(cronus).
male(zeus).
male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
zu beweisen:
male(cronus).
Beweis mit Fakt
male(cronus).
gelingt:
male(cronus).
Keine neuen Substitutionen.
zu beweisen:
father(zeus,ares).
Beweisversuch mit Klausel (neue Variablennamen)
father(X3,Y2):-parent(X3,Y2),male(X3).
(Keine Alternativen – kein Backtrackpunkt)
Substitution σ (X3) = zeus σ (Y1) = ares
father(zeus,ares):parent(zeus,ares),male(zeus).
Keine neuen Teilziele.
zu beweisen:
Zu beweisen:
parent(zeus,ares).
father(zeus,ares).
PI2
father(X,Y):-parent(X,Y),male(X).
Sommer-Semester 2007
Hans-Dieter Burkhard
zu beweisen:
parent(zeus,ares).
Beweis mit Fakt
parent(zeus,ares).
gelingt:
parent(zeus,ares).
61
parent(uranus,
parent(gaea,
parent(gaea,
parent(rhea,
parent(cronus,
parent(rhea,
parent(cronus,
parent(cronus,
...
cronus).
cronus).
rhea).
zeus).
zeus).
hera).
hera).
hades).
PI2
Sommer-Semester 2007
male(zeus).
Hans-Dieter Burkhard
male(uranus).
male(cronus).
male(zeus).
male(hades).
male(hermes).
male(apollo).
male(dionysius).
male(hephaestus).
male(poseidon).
zu beweisen:
male(zeus).
Beweis mit Fakt
male(zeus).
gelingt:
male(zeus).
Keine neuen Substitutionen.
62
Keine neuen Substitutionen.
Keine neuen Teilziele.
Keine neuen Teilziele.
Zu beweisen:
Beweisversuch gelungen mit Substition: σ (X) = cronus
male(zeus).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
63
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
64
?-grandfather(X,ares).
?-grandfather(X,ares).
Antwort
X = cronus?
;
X = cronus?
Kronos
grandfather(X,Z):-father(X,Y),mother(Y,Z).
X = cronus?
Rheia
Zeus
Kronos
Hera
Beweisbaum:
Zweiter Beweisbaum:
grandfather(cronus,ares).
Ares
Rheia
Zeus
Hera
grandfather(cronus,ares).
Ares
father(cronus,zeus).
father(zeus,ares).
father(cronus,hera).
male(cronus).
parent(cronus,zeus).
male(cronus).
male(zeus).
parent(cronus,zeus).
parent(zeus,ares).
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
mother(hera,ares).
female(hera).
parent(hera,ares).
65
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
66
•11
Redundanzen ...
Unifikation (matching, instantiation)
... führen wegen der systematischen
Durchmusterung aller Beweisversuche zu
Wiederholungen von Resultaten
Terme unifizieren:
Durch geeigneten Unifikator (Variablen-Substitution σ) als
Zeichenkette identisch machen.
?-grandfather(X,ares).
parent(X,ares).
grandfather(X,Z):-father(X,Y),father(Y,Z).
σ (X) = zeus
X = cronus?
;
grandfather(X,Z):-father(X,Y),mother(Y,Z).
X = cronus?
Kronos
Rheia
Zeus
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
σ (Y) = ares
parent(zeus,ares).
„Instantiation“:
Resultierender Term bei Substitution
Hera
Ares
parent(zeus,Y).
67
Unifikation (matching, instantiation)
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
68
Unifikation (matching, instantiation)
in Prolog: Beweisen eines Teilziels erfordert
„Matchen“ von Teilziel und Klauselkopf
father(zeus,ares).
father(X3,Y2):-parent(X3,Y2),male(X3).
father(zeus,ares):parent(zeus,ares),male(zeus).
father(zeus,ares).
father(X3,Y2):-parent(X3,Y2),male(X3).
father(zeus,ares):parent(zeus,ares),male(zeus).
Analogie: „Prozedur-Aufruf“
Parameterübergabe durch Instantiierung:
σ(X)=zeus
Bindung von Variablen für gesamte Klausel
σ(Y)=ares
Variable „gehören“ den Klauseln:
Lebensdauer bis zum Backtracking Kein Überschreiben
Sichtbarkeit innerhalb der Klausel von Werten
Analogie: „Prozedur-Aufruf“
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
69
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Unifikationsregeln
Unifikationsregeln
Terme t1 und t2 sind unifizierbar, falls
• t1 und t2 sind identische Konstanten
oder
• t1 (bzw. t2) ist eine Variable:
t1 (bzw. t2) wird an t2 (bzw. t1) gebunden oder
• t1= funktor(t11,...,t1n) und t2 =funktor(t21,...,t2n)
sind Strukturen mit identischem funktor (Name, Stelligkeit)
und die Argumente t1i t2i sind paarweise unifizierbar.
dreieck(P,punkt(X,Y),punkt(1,X)).
dreieck(punkt(2,3),punkt(1,X),punkt(Y,Z)).
Variablenseparierung:
Rekursive Definition,
die Substitution σ ergibt sich schrittweise.
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
71
70
dreieck( P,
punkt(X,Y), punkt(1,X)).
dreieck(punkt(2,3),punkt(1,C), punkt(A,B)).
σ(P)= punkt(2,3)
σ
σ(X)=1
σ(Y)=C
σ(A) =1
dreieck(punkt(2,3),punkt(1,C), punkt(1,1)).
σ(B) =1
σ(C)=C
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
72
•12
Prolog-Operatoren „=“ und „==“
Prolog-Operatoren „=“ und „==“
Das Ziel term1 = term2 ist erfüllt,
falls term1 und term2 unifizierbar sind.
– Variable in term1 und term2 werden ggf. instantiiert.
?- dreieck(P,punkt(X,Y),punkt(1,X))
= dreieck(punkt(2,3),punkt(1,X),punkt(Y,Z)).
P = punkt(2, 3)
X = 1
Y = 1
Z = 1
Das Ziel term1 \= term2 ist erfüllt,
falls term1 und term2 nicht unifizierbar sind.
Das Ziel term1 == term2 ist erfüllt,
falls term1 und term2 identisch sind.
?- dreieck(P,punkt(X,Y),punkt(1,X))
== dreieck(punkt(2,3),punkt(1,X),punkt(Y,Z)).
No
– nicht unifizierte Variable sind nicht identisch
Das Ziel term1 \== term2 ist erfüllt,
falls term1 und term2 nicht identisch sind.
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
73
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Occur-Check, σ(X) = funktor(..., X, ....)
Problemzerlegung
Beispiel: Programm-Klausel
Zerlege ein Problem P in einzelne Probleme P1,...,Pn
Unterschiedliche
Reaktionen von
Prolog-Systemen
auf Anfragen
p(X,f (X))
Löse jedes Problem Pi
? - p(Y,Y).
?- p(Y,Y), write(Y).
Füge die Lösungen zusammen zu P
?- p(Y,Y), p(Z,Z),Y=Z.
Beispiele:
Ungarischer Würfel
Kurvendiskussion
Integralrechnung
aufwendiger Test.
Ignorieren?
PI2
Sommer-Semester 2007
74
Hans-Dieter Burkhard
75
Problemzerlegung
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
76
Problemzerlegung
Klausel als Problemzerlegung
goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn).
goal(X1,...,Xn) :- subgoal1(X1,...,Xn) ,..., subgoalm(X1,...,Xn).
um „goal“ zu beweisen,
beweise alle „subgoals“
„goal“ gilt (ist beweisbar)
falls alle „subgoals“ gelten (beweisbar sind).
Problemzerlegung
um „goal“ zu beweisen,
beweise alle „subgoals“
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
erreichbar(Start,Ziel,Zeit)
:- s_bahn(Start,Zwischenziel,Abfahrt,Ankunft,_),
erreichbar(Zwischenziel,Ziel,Zeit1),
berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit).
77
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
78
•13
Problemzerlegung
Unterschied zu prozeduralem Denken
berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit).
Beabsichtigte Bedeutung:
Zeit = Zeit1 + (Ankunft - Abfahrt)
berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit)
:- addiereZeit(Zeit1,Differenz,Zeit),
subtrahiereZeit(Ankunft,Abfahrt,Differenz).
(Spezielle Notationen für Zeitangaben beachten)
Logische Sicht:
Berechnung von „Differenz“ kann später erfolgen
(Bindung statt Wertzuweisung).
Problemzerlegung:
berechneZeit(Zeit1,Ankunft,Abfahrt,Zeit)
:- addiereZeit(Zeit1,Differenz,Zeit),
subtrahiereZeit(Ankunft,Abfahrt,Differenz).
Mit geeignet definierten Prädikaten
addiereZeit/3, subtrahiereZeit/3
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
79
Problemzerlegung
Die in Standard-Prolog eingebaute Arithmetik
erfordert aus Effizienzgründen allerdings
gebundene Eingangsparameter.
PI2
Sommer-Semester 2007
80
Alternativen für Problemzerlegung
Zerlegung des Problems P in Probleme P1,...,Pn
Graphische Darstellung
oder in Probleme P´1,...,P´n´
oder ...
berechneZeit(U,V,W,X)
addiereZeit(U,Y,X)
Hans-Dieter Burkhard
subtrahiereZeit(V,W,Y).
Klauseln einer Prolog-Prozedur bieten Alternativen
grandfather(X,Z):-father(X,Y),father(Y,Z).
grandfather(X,Z):-father(X,Y),mother(Y,Z).
brother(B,X)
Graphische Darstellung
grandfather(X,Z)
male(B)
PI2
parent(V,M,B)
Sommer-Semester 2007
parent(V,M,X)
Hans-Dieter Burkhard
Klausel1
81
Alternativen für Problemzerlegung
PI2
Sommer-Semester 2007
Klausel2
Hans-Dieter Burkhard
Kombinierte Verzweigungen
verreisen
oder-Verzweigung
grandfather(X,Z)
oder-Verzweigung
Klausel1
82
fliegen
autofahren
bahnfahren
wandern
Klausel2
und-Verzweigungen
father(X,Y)
father(Y,Z)
father(X,Y)
und-Verzweigung
Zum Bahnhof
fahren
Sommer-Semester 2007
Hans-Dieter Burkhard
...
oder-Verzweigungen
mother(Y,Z)
Tram
PI2
Fahrkarte
kaufen
83
PI2
Taxi
Bus
und-Verzweigungen
Sommer-Semester 2007
Hans-Dieter Burkhard
Automat
Schalter
84
•14
Und-Oder-Baum
Und-Oder-Baum
Anfrage
Startknoten („Wurzel“) modelliert Ausgangsproblem
Ein und-oder-Baum besteht (abwechselnd) aus
– Knoten mit oder-Verzweigungen und
– Knoten mit und-Verzweigungen
Knoten ohne Nachfolger („Blätter“) sind unterteilt in
- terminale Knoten („primitive Probleme“)
Fakt
modellieren unmittelbar lösbare Probleme
- nichtterminale Knoten
Unerfüllbares
modellieren nicht zu lösende Probleme
Subgoal
Modell für Problemzerlegungen:
– oder-Verzweigungen für alternative Möglichkeiten zur
Problemzerlegung
– und-Verzweigungen für Teilprobleme
(keine unifizierende Klausel)
Modell für Prolog-Programm:
– oder-Verzweigungen für alternative Klauseln einer
Prozedur
– und-Verzweigungen für subgoals einer Klausel
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
Innere Knoten sind unterteilt in
- Knoten mit und-Verzweigung
- Knoten mit oder-Verzeigung
85
Und-Oder-Baum
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
86
a :a :b :b :c.
e.
f :f :h.
Und-Oder-Baum
?-a
a :a :b :b :c.
e.
f :f :h.
PI2
b,c.
e,f.
g,h.
e,h.
g.
e
Sommer-Semester 2007
%
%
%
%
%
%
%
%
%
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
Hans-Dieter Burkhard
(1)
b
(3)
g
87
Lösbare/unlösbare Knoten
PI2
(4)
h
e
h
(9)
(6)
(9)
Sommer-Semester 2007
(2)
c
e
(5)
(6)
Sommer-Semester 2007
(8)
g
e
Hans-Dieter Burkhard
(1)
b
Für endliche Bäume ergibt sich bei Festlegung für die Blätter
eine eindeutige Zerlegung in lösbare/unlösbare Knoten
(Bedingungen sind jeweils komplementär)
PI2
(7)
88
a :a :b :b :c.
e.
f :f :h.
?-a
1. nichtterminale Knoten,
2. Knoten mit Und-Verzweigung: falls mindest. ein Nachfolger unlösbar,
3. Knoten mit Oder-Verzweigung: falls alle Nachfolger unlösbar sind
Hans-Dieter Burkhard
89
(3)
g
PI2
(4)
h
e
h
(9)
(6)
(9)
Sommer-Semester 2007
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(9)
Lösbare Knoten:
Unlösbare Knoten:
g.
e
%
%
%
%
%
%
%
%
%
f
Lösbare/unlösbare Knoten
1. terminale Knoten,
2. Knoten mit Und-Verzweigung:
falls alle Nachfolger lösbar sind
3. Knoten mit Oder-Verzweigung:
falls mindestens ein Nachfolger lösbar ist
b,c.
e,f.
g,h.
e,h.
(2)
c
e
(5)
(6)
b,c.
e,f.
g,h.
e,h.
g.
e
%
%
%
%
%
%
%
%
%
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
f
(7)
(8)
g
e
(6)
Hans-Dieter Burkhard
90
•15
Bottom-up-Konstruktionsalgorithmus
Anfang:
Bottom-up-Konstruktionsalgorithmus
MLÖSBAR := terminale Knoten
MUNLÖSBAR := nichtterminale Knoten
Zyklus:
Solange nicht alle Knoten untersucht wurden:
Wähle einen Knoten k, dessen Nachfolger alle untersucht wurden.
Falls bei k und-Verzweigung und alle Nachfolger von k in MLÖSBAR oder
falls bei k oder-Verzweigung und ein Nachfolger von k in MLÖSBAR :
MLÖSBAR := MLÖSBAR ∪ {k} ,
andernfalls:
MUNLÖSBAR := MUNLÖSBAR ∪ {k} .
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
91
Ergebnis für endliche Und-oder-Bäume:
Zerlegung der Knoten in
lösbare Knoten (MLÖSBAR)
und
unlösbare Knoten (MUNLÖSBAR)
Das Ausgangsproblem
kann genau dann durch Problemzerlegung gelöst werden,
wenn der Startknoten in MLÖSBAR ist.
Falls das Ausgangsproblem lösbar ist, kann ein Lösungsbaum
konstruiert werden.
PI2
Sommer-Semester 2007
Hans-Dieter Burkhard
92
•16