04.11.2014 Aufrufe

Grundlagen der Logik und Logikprogrammierung

Grundlagen der Logik und Logikprogrammierung

Grundlagen der Logik und Logikprogrammierung

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.

Notation<br />

Zur vereinfachung <strong>der</strong> Schreibweise definieren wir folgende abkürzenden Schreibweisen:<br />

ra 1 , a 2 , . . . , a n s “ ra 1 |ra 2 | . . . a n |rss . . . s<br />

ra 1 , a 2 , . . . , a n |ls “ ra 1 |ra 2 | . . . a n |lss<br />

Beispiel: Auswertung von logischen Ausdrücken durch Prolog<br />

Q 1 : Ð appendpr0, 1s, r1, 0s, Xq<br />

Antwort: X ÞÑ r0, 1, 1, 0s<br />

Q 2 : Ð appendpr0, 1s, X, r0, 1, 1sq<br />

Ð appendpr1s, X, r1, 1sq<br />

Ð appendprs, X, r1sq<br />

Antwort: X ÞÑ r1s<br />

Hierbei wurde in Schritt 1 <strong>und</strong> 2 gegen die zweite Regel gematcht.<br />

Ist die Ableitung nicht mehr eindeutig, o<strong>der</strong> werden beim Befolgen <strong>der</strong> Regeln tote Enden angetroffen,<br />

so arbeitet das System mit Backtracking, z.B.<br />

Q :Ð appendpX, Y, r0, 1sq<br />

a) Ð appendprs, r0, 1s, r0, 1sqX ÞÑ rs, Y ÞÑ r0, 1s;<br />

b) appendpr0|X 1 s, Y, r0, 1sqX ÞÑ r0|X 1 s<br />

appendpX 1 , Y, r1sq<br />

b.i) X 1 ÞÑ rs, Y ÞÑ r1s ù X ÞÑ r0s<br />

b.ii) X 1 ÞÑ r1|X 2 s<br />

Ð appendpX 2 , Y, rsqX 2 ÞÑ rs, Y ÞÑ rs ù X ÞÑ r0, 1s<br />

2.4. Unifikation<br />

Die Unifikation sagt uns, wie – <strong>und</strong> ob überhaupt – zwei Terme strukturell gleich gemacht, sprich<br />

Unifiziert werden können.<br />

Beispiel:<br />

Die Anfrage<br />

Ð appendpX, r0|Y s, r1 0 1|Zsq<br />

soll mit <strong>der</strong> folgenden Regel gematcht werden<br />

appendprX 1 |Y 1 s, Z 1 , rX 1 |W 1 sq Ð appendpY 1 , Z 1 , W 1 q<br />

Wir suchen also für die ersten beiden Argumente eine Substitution σ mit rX 1 |Y 1 sσ “ σprX 1 |Y 1 sq ! “<br />

X. Damit werden wir scheitern, denn rX 1 |Y 1 s ist ein zusammengesetzter Term, also nicht mit einer<br />

einzelnen Variable unifizierbar.<br />

Der funktionierende Weg ist, ein σ zu finden, das rX 1 |Y 1 sσ “ Xσ erfüllt, also sowohl auf die Liste<br />

als auch auf X angewendet zwei gleiche Terme produziert.<br />

18

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!