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 />

tion liefert hierfür zunächst ke<strong>in</strong> echtes Ergebnis (außer dem Beweis <strong>der</strong> Unerfüllbarkeit<br />

<strong>der</strong> E<strong>in</strong>gabeformel). Es fehlt daher <strong>die</strong> Erzeugung e<strong>in</strong>er Antwort bzw. Ausgabe des Programms.<br />

Hierfür kann man <strong>die</strong> errechneten Substitutionen verwenden. Beachte: Wir haben<br />

oben schon l<strong>in</strong>eare Resolution verwendet, und <strong>die</strong> Zentralklausel war gerade <strong>die</strong> Anfrage<br />

{¬eltern(karl, Y )}. Wendet man alle <strong>in</strong> <strong>der</strong> Herleitung entstanden Substitutionen<br />

nache<strong>in</strong>an<strong>der</strong> auf <strong>die</strong>se Klausel an, so erhält man gerade {¬eltern(karl, peter)}. Weil wir<br />

<strong>die</strong> leere Klausel hergeleitet haben, können wir daher nicht nur schließen, dass Karl e<strong>in</strong><br />

K<strong>in</strong>d hat, son<strong>der</strong>n dass Peter e<strong>in</strong> K<strong>in</strong>d von Karl ist. Es gibt noch zwei weitere K<strong>in</strong><strong>der</strong> von<br />

Karl (nämlich Pia und Paul), <strong>die</strong>se können durch Verwendung an<strong>der</strong>er E<strong>in</strong>gabeklauseln<br />

bei <strong>der</strong> Resolution ebenfalls hergeleitet werden:<br />

{¬eltern(karl, Y )} {eltern(X 1 , Y 1 ), ¬vater(X 1 , Y 1 )}<br />

X 1 ↦→ karl,<br />

Y 1 ↦→ Y<br />

{¬vater(karl, Y 1 )}<br />

Y ↦→ paul<br />

{vater(karl, paul)}<br />

{¬eltern(karl, Y )} {eltern(X 1 , Y 1 ), ¬vater(X 1 , Y 1 )}<br />

X 1 ↦→ karl,<br />

Y 1 ↦→ Y<br />

{¬vater(karl, Y 1 )}<br />

Y ↦→ pia<br />

{vater(karl, pia)}<br />

□<br />

. . .<br />

und<br />

□<br />

. . .<br />

Dies s<strong>in</strong>d gerade alle Möglichkeiten durch l<strong>in</strong>eare Resolution <strong>die</strong> leere Klausel herzuleiten.<br />

Zunächst stellt sich <strong>die</strong> Frage: Funktioniert das Erzeugen e<strong>in</strong>er Antwort mit <strong>die</strong>ser Methode<br />

stets?<br />

Wir erweitern das Beispiel, um <strong>die</strong> Aussage: „Der Vater von Fritz ist Horst o<strong>der</strong> Hans“,<br />

d.h. wir fügen <strong>die</strong> Klausel {vater(horst, fritz), vater(hans, fritz)} h<strong>in</strong>zu. Zusätzlich fügen<br />

wir noch <strong>die</strong> Mutter von Fritz h<strong>in</strong>zu: {mutter(anna, fritz)}. Die Anfrage, ob Fritz<br />

Eltern hat (und welche), entspricht <strong>der</strong> Formel ∃X : eltern(X, fritz), d.h. wir starten <strong>die</strong><br />

Resolution mit <strong>der</strong> Zielklausel {¬eltern(X, fritz)}:<br />

{¬eltern(X, fritz)} {eltern(X 1 , Y 1 ), ¬vater(X 1 , Y 1 )}<br />

X 1 ↦→ X,<br />

Y 1 ↦→ fritz<br />

{¬vater(X, fritz)}<br />

{vater(horst, fritz), vater(hans, fritz)}<br />

X ↦→ horst<br />

{vater(hans, fritz)}<br />

. . .<br />

□<br />

X ↦→ hans<br />

D.h. wir können zwar <strong>die</strong> leere Klausel herleiten, aber <strong>die</strong> Substitution legt ke<strong>in</strong> e<strong>in</strong>deutiges<br />

Ergebnis fest: X wird e<strong>in</strong>mal auf hans und e<strong>in</strong>mal auf horst abgebildet. Die Antwort<br />

Stand: 7. Januar 2013 154 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!