Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren in Logik

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren in Logik"—  Präsentation transkript:

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


Herunterladen ppt "Programmieren in Logik"

Ähnliche Präsentationen


Google-Anzeigen