Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Prolog Programmieren in Logik 3. Rekursion.

Ähnliche Präsentationen


Präsentation zum Thema: "GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Prolog Programmieren in Logik 3. Rekursion."—  Präsentation transkript:

1 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Prolog Programmieren in Logik 3. Rekursion

2 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Inhalt - Programmstruktur Einführung Beispiel 1 Beispiel 2 Zusammenfassung

3 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Einführung

4 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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.

5 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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.

6 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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.

7 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Beispiel 3 Wie arbeit Prolog bei einem rekursiven Prädikat?

8 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Aufgaben Lösen Sie die Aufgaben 9 und 10.

9 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Beispiel 4 Gegeben ist folgende Hierarchie von Weisungsbefugten in einer Firma: In der Firma gilt die Regel: der Weisungsbefugte eines Weisungsbefugten ist weisungsbefugt.

10 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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).

11 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Beispiel 4 ?- weisungsbefugt(banaus,argmann). ?- weisungsbefugt(darb,banaus). ?- weisungsbefugt(argmann,Y). Folgende Fragen werden gestellt: Warum antwortet das PROLOG-System bei der dritten Frage nicht? (-> trace)

12 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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

13 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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).

14 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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?

15 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz 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.

16 GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Aufgaben Lösen Sie die Aufgaben 8 bis 10 im Arbeitsbuch Prolog Seite 24.


Herunterladen ppt "GK Info 13 (Hö)PROLOG – Eine Sprache der Künstlichen Intelligenz Prolog Programmieren in Logik 3. Rekursion."

Ähnliche Präsentationen


Google-Anzeigen