20.03.2014 Aufrufe

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

Einführung in die Methoden der Künstlichen Intelligenz - Goethe ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5 Logisches Programmieren<br />

Im Prolog-Interpreter gibt man e<strong>in</strong>fach B 1 , . . . , B n . e<strong>in</strong>, <strong>der</strong> Prompt selbst repräsentiert das<br />

⇐ (<strong>der</strong> üblicherweise als ?- dargestellt wird).<br />

• E<strong>in</strong>e Unit-Klausel (o<strong>der</strong> Fakt) ist e<strong>in</strong>e def<strong>in</strong>ite Klausel mit leerem Rumpf. Notation <strong>in</strong> <strong>der</strong><br />

logischen Programmierung ist A ⇐. In Prolog wird <strong>der</strong> ⇐ weggelassen, d.h. man schreibt<br />

e<strong>in</strong>fach A.<br />

• E<strong>in</strong> def<strong>in</strong>ites Programm ist e<strong>in</strong>e Menge von def<strong>in</strong>iten Klauseln.<br />

• Die Menge aller Klauseln, <strong>der</strong>en Kopfliteral das Prädikat Q hat, nennen wir Def<strong>in</strong>ition von<br />

Q.<br />

E<strong>in</strong> def<strong>in</strong>ites Programm entspricht e<strong>in</strong>er Und-Verknüpfung aller def<strong>in</strong>iten Klauseln. Beachte,<br />

dass jede Hornklausel entwe<strong>der</strong> e<strong>in</strong>e def<strong>in</strong>ite Klausel o<strong>der</strong> e<strong>in</strong> def<strong>in</strong>ites Ziel ist.<br />

Wir geben <strong>die</strong> Elternbeziehungen vom Anfang als Prolog-Programm an:<br />

vater(peter,maria).<br />

vater(peter,monika).<br />

vater(karl, peter).<br />

vater(karl, pia).<br />

vater(karl, paul).<br />

mutter(susanne,monika).<br />

mutter(susanne,maria).<br />

mutter(elisabeth, peter).<br />

mutter(elisabeth, pia).<br />

mutter(elisabeth, paul).<br />

eltern(X,Y) :-<br />

eltern(X,Y) :-<br />

vater(X,Y).<br />

mutter(X,Y).<br />

Wenn man <strong>die</strong>ses Prolog-Programm <strong>in</strong> den Interpreter lädt 1 , kann man Anfragen<br />

durchführen. Beachte: Nachdem Ausdrucken <strong>der</strong> ersten möglichen Antwort, kann man<br />

e<strong>in</strong> Semikolon e<strong>in</strong>geben, um nach weiteren Antworten zu suchen. Wir führen <strong>die</strong>s mit<br />

e<strong>in</strong>igen Beispielen vor:<br />

?- eltern(karl,X).<br />

X = peter ;<br />

X = pia ;<br />

X = paul ;<br />

false.<br />

?- eltern(karl,x).<br />

false.<br />

?- eltern(peter,X).<br />

1 Wir verwenden SWI-Prolog (http://www.swi-prolog.org/), das Laden wird über consult(’filename’).<br />

ausgeführt werden, wenn filename.pl das Programm enthält.<br />

Stand: 7. Januar 2013 156 M. Schmidt-Schauß & D. Sabel, Skript KI, WS 2012/13

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!