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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

5.2 Semantik von Hornklauselprogrammen<br />

X = maria ;<br />

X = monika ;<br />

false.<br />

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

X = karl ;<br />

X = elisabeth.<br />

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

X = peter,<br />

Y = maria ;<br />

X = peter,<br />

Y = monika ;<br />

X = karl,<br />

Y = peter ;<br />

X = karl,<br />

Y = pia ;<br />

X = karl,<br />

Y = paul ;<br />

X = susanne,<br />

Y = monika ;<br />

...<br />

Beachte: Variablen werden <strong>in</strong> Prolog beg<strong>in</strong>nend mit Großbuchstaben o<strong>der</strong> _ geschrieben.<br />

Prädikate und Funktionssymbole beg<strong>in</strong>nen mit e<strong>in</strong>em Kle<strong>in</strong>buchstaben. Daher liefert <strong>die</strong><br />

Anfrage ?- eltern(karl,x). ke<strong>in</strong> Ergebnis (x wird als Konstante <strong>in</strong>terpretiert!).<br />

5.2 Semantik von Hornklauselprogrammen<br />

Wir werden zunächst allgeme<strong>in</strong> <strong>die</strong> Semantik von Hornklauselprogrammen erörtern.<br />

Prolog-Programme und -Interpreter basieren im Grunde auf <strong>die</strong>ser Semantik, nehmen<br />

jedoch praktische Anpassungen vor, <strong>die</strong> auch <strong>die</strong> Semantik verän<strong>der</strong>n. Daher werden wir<br />

erst im Anschluss auf <strong>die</strong> Prolog-Semantik e<strong>in</strong>gehen und <strong>die</strong> Unterschiede herausstellen.<br />

Wir betrachten zunächst <strong>die</strong> SLD-Resolution für Hornklauselprogramme erneut, und<br />

bauen den Antwortmechanismus mit e<strong>in</strong>. Bei <strong>der</strong> Resolution s<strong>in</strong>d <strong>die</strong> Elternklauseln<br />

stets mit unterschiedlichen Variablennamen frisch umzubenennen (da <strong>die</strong> Variablen e<strong>in</strong>er<br />

Klausel impliziert allquantifiziert s<strong>in</strong>d). Verwendet man SLD-Resolution für Hornklauselprogramme<br />

mit e<strong>in</strong>em def<strong>in</strong>iten Ziel als Zentralklausel, so haben wir bereits gesehen,<br />

dass jede Resolution <strong>die</strong> letzte Resolvente (bzw. am Anfang <strong>die</strong> Zentralklausel) und<br />

e<strong>in</strong>e Seitenklausel als Elternklauseln verwendet. Zur richtigen Umbenennung vor je<strong>der</strong><br />

Resolution genügt es, nur <strong>die</strong> Variablen e<strong>in</strong>er <strong>der</strong> beiden Elternklauseln umzubenennen.<br />

Hierfür können wir stets <strong>die</strong> Seitenklausel wählen. Wir bezeichnen <strong>die</strong>ses Vorgehen als<br />

standardisierte SLD-Resolution.<br />

Wir def<strong>in</strong>ieren e<strong>in</strong>en solchen Resolutionsschritt formal:<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!