Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Programmieren in Logik
Prolog Programmieren in Logik 3. Rekursion GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
2
Inhalt - Programmstruktur
• Einführung • Beispiel 1 • Beispiel 2 • Zusammenfassung GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
3
Einführung GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
4
Beispiel 3 Es soll der Begriff "Vorfahr" definiert werden. Schon einem kleinen Kind kann dieser Begriff schnell erklärt werden: Vorfahren sind die Eltern, Großeltern, Urgroßeltern, Ururgroßeltern, Urururgroßeltern usw. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
5
Beispiel 3 In PROLOG: grosseltern(X,V):- eltern(X,E), eltern(E,V).
urgrosseltern(X,V):- eltern(X,E), grosseltern(E,V). ururgrosseltern(X,V) :- eltern(X,E), urgrosseltern(E,V. Schwierig ist die Verallgemeinerung - PROLOG kann mit "usw." nichts anfangen. Aber das Schema wird klar. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
6
Beispiel 3 In PROLOG werden solche Prädikate rekursiv definiert; also etwa so: Vorfahren von X sind die Eltern von X und die Vorfahren der Eltern von X. vorfahr(X,V) :- eltern(X,V). vorfahr(X,V) :- eltern(X,E), vorfahr(E,V). Das Prädikat wird also teilweise durch sich selbst erklärt. Die erste Klausel ist nicht-rekursiv und sorgt für die Terminierung, die zweite Klausel enthält den rekursiven Aufruf. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
7
Beispiel 3 Wie arbeit Prolog bei einem rekursiven Prädikat?
GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
8
Aufgaben Lösen Sie die Aufgaben 9 und 10. GK Info 13 (Hö)
PROLOG – Eine Sprache der Künstlichen Intelligenz
9
Beispiel 4 Gegeben ist folgende Hierarchie von Weisungsbefugten
in einer Firma: In der Firma gilt die Regel: der Weisungsbefugte eines Weisungsbefugten ist weisungsbefugt. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
10
Beispiel 4 Ein PROLOG-Programm könnte so aussehen:
weisungsbefugt(blau,argmann). weisungsbefugt(banaus,argmann). weisungsbefugt(clar,blau). weisungsbefugt(clon,blau). weisungsbefugt(clauer,blau). weisungsbefugt(calauer,banaus). weisungsbefugt(dorkel,clar). weisungsbefugt(dorkel,clon). weisungsbefugt(darb,calauer). weisungsbefugt(dreggler,calauer). weisungsbefugt(X,Y):- weisungsbefugt(X,Z), weisungsbefugt(Z,Y). GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
11
Beispiel 4 Folgende Fragen werden gestellt:
?- weisungsbefugt(banaus,argmann). ?- weisungsbefugt(darb,banaus). ?- weisungsbefugt(argmann,Y). Warum antwortet das PROLOG-System bei der dritten Frage nicht? (-> trace) GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
12
Beispiel 4 zunächst werden die Fakten probiert; dies misslingt
dann wird die Regel probiert; dabei wird versucht, die Teilziele auf der rechten Seite zu erfüllen dies gelingt mit dem ersten Teilziel; dies ist aber nichts anderes als die ursprüngliche Anfrage das Spiel beginnt von vorne => Endlosschleife GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
13
Beispiel 4a Lösungsidee: zwischen direkten Weisungsbefugten und
Weisungsbefugten unterscheiden. dir_weisungsbefugter(blau,argmann). . . . dir_weisungsbefugter(dreggler,calauer). weisungsbefugter(X,Y) : dir_weisungsbefugter(X,Y). weisungsbefugter(X,Y) : dir_weisungsbefugter(X,Z), weisungsbefugter(Z,Y). GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
14
Beispiel 4a Bei der letzten Regel kommt es auf die Reihenfolge der
Teilziele auf der rechten Seite an. Die Regel: weisungsbefugter(X,Y): weisungsbefugter(Z,Y), dir_weisungsbefugter(X,Z). ist zwar logisch gleichwertig aber prozedural falsch. Sie kann zu Endlosschleifen führen. Warum? GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
15
Zusammenfassung Ein Problem rekursiv lösen heißt, es auf eine einfachere Version seiner selbst zurückzuführen. Dieses Zurückführen geschieht solange, bis ein unmittelbar lösbarer Anfang, der Rekursionsanfang, erreicht ist. Eine Regel heißt rekursiv, wenn das Prädikat des Regelkopfes auch im Regelkörper vorkommt. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
16
Aufgaben Lösen Sie die Aufgaben 8 bis 10 im Arbeitsbuch Prolog Seite 24. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.