01.10.2013 Aufrufe

Karl Heinz Wagner

Karl Heinz Wagner

Karl Heinz Wagner

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.

Logikgrammatik 141<br />

1. Sind φ und ψ gleiche Konstanten oder gleiche Variable, so sind sie mit der<br />

leeren Substitution { } unifizierbar. Sind sie verschiedene Konstante schlägt<br />

die Unifikation fehl.<br />

2. Ist φ eine Variable, die nicht in ψ vorkommt, so sind φ und ψ mit der Substitution<br />

{φ/ψ} unifizierbar. Kommt φ in ψ vor, so schlägt die Unifikation<br />

fehl.<br />

3. Sind φ und ψ Funktionen mit gleichem Funktor und gleicher Stelligkeit (Argumentzahl)<br />

(f(s1, . . . , sn) bzw. f(t1, . . . , tn)) so sind sie unifizierbar, wenn<br />

jedes Argumentpaar ti, si, i = 1 . . . n unifizierbar ist. Andernfalls schlägt die<br />

Unifikation fehl.<br />

Für eine präzisere Formulierung muß zunächst ein weiterer Begriff definiert werden:<br />

Definition 4.19. Unterschiedsmenge<br />

Sei A eine endliche Menge von einfachen Ausdrücken. Die Unterschiedsmenge<br />

(engl. disagreement set) von A ist wie folgt definiert. Ermittle die<br />

am weitesten links stehende Symbolposition an der nicht alle Ausdrücke in<br />

A das gleiche Symbol haben und extrahiere aus jedem Ausdruck in A den<br />

Teilausdruck, der an dieser Symbolposition beginnt. Die Menge all dieser<br />

Teilausdrücke ist die Unterschiedsmenge.<br />

Beispiel: Sei A = {p(f(x), h(y), a), p(f(x), z, a), p(f(x), h(y), b)}. Dann ist die<br />

Unterschiedsmenge {h(y), z}.<br />

Ein Unifikationsalgorithmus kann auf dieser Grundlage präziser und einfacher<br />

wie folgt angegeben werden (A sei eine endliche Menge von einfachen Ausdrücken):<br />

Unifikationsalgorithmus<br />

1. Setze k = 0 und θ0 = ɛ<br />

2. Wenn Aθk (d.h. die Anwendung von θk auf A) eine Einermenge ist (nur aus<br />

einem Element besteht), dann halt; θk ist der allgemeinste Unifikator von A.<br />

Andernfalls ermittle die Unterschiedsmenge Dk von Aθk.<br />

3. Gibt es ein v und ein t in Dk, so daß v eine Variable ist, die in t nicht<br />

vorkommt, dann setze θk+1 = θk{v/t}, erhöhe k um 1 und gehe zu 2. Andernfalls<br />

halt; A ist nicht unifizierbar.<br />

Beispiel: Sei A = {p(a, x, h(g(z))), p(z, h(y), h(y))}<br />

(a) θ0 = ɛ<br />

(b) D0 = {a, z}, θ1 = {z/a}, und Aθ1 = {p(a, x, h(g(a))), p(a, h(y), h(y))}.<br />

(c) D1 = {x, h(y)}, θ2 = {z/a, x/h(y)} und Aθ2 = {p(a, h(y), h(g(a))), p(a, h(y), h(y))}.<br />

(d) D2 = {g(a), y}, θ3 = {z/a, x/h(g(a)), y/g(a)} und Aθ3 = {p(a, h(g(a)), h(g(a)))}.<br />

Also ist A unifizierbar und θ3 ist ein allgemeinster Unifikator.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!