Privacy Policy Cookie Policy Terms and Conditions Unifikation (Logik) - Wikipedia

Unifikation (Logik)

aus Wikipedia, der freien Enzyklopädie

Unifikation ist eine Methode zur Vereinheitlichung prädikatenlogischer Ausdrücke. Diese hat insbesondere in der Computerlogik und Computerlinguistik eine größere Bedeutung erlangt. So nutzt etwa die Inferenzmaschine des PROLOG-Interpreters Unifikation. In der Computerlinguistik gibt es sogenannte Unifikationsgrammatiken, die sich auf dieses Konzept stützen. Auch beim Theorembeweisen spielt Unifikation eine große Rolle.

Als Basisoperation liegt der Unifikation die Substitution (Logik) zu Grunde. Im Rahmen der Prädikatenlogik bedeutet eine Substitution σ innerhalb eines gegebenen Ausdrucks die Ersetzung einer Variablen durch einen Term, in dem diese Variable nicht vorkommen darf. Die Variable wird gewissermaßen durch den Term "instanziiert".

Wird eine Menge von Ausdrücken {A1,A2,...,An} durch eine Substitution σ zu einem äquivalenten Ausdruck substituiert, d.h. \sigma(A_1) \equiv  \sigma(A_2) \equiv ... \equiv  \sigma(A_n), so bezeichnet man σ als Unifikator dieser Ausdrucksmenge. Die Anwendung eines Unifikators auf diese Menge bezeichnet man als Unifikation.

Nicht alle Ausdrücke können unifiziert werden!

Inhaltsverzeichnis

[Bearbeiten] Beispiel

Gegeben seien die Ausdrücke A1 = (X,Y,f(b)) und A2 = (a,b,Z)

Ersetzt man in A1 nun X durch a, Y durch b und in A2 Z durch f(b), so sind sie gleich oder unifiziert.

[Bearbeiten] Kleinster gemeinsamer Unifikator

Zu einer Menge von Ausdrücken existieren gewöhnlich mehrere Unifikatoren. Man nennt einen Unifikator μ kleinster gemeinsamer Unifikator oder allgemeinster Unifikator, wenn es für jeden anderen Unifikator σ eine Substitution τ gibt mit \sigma = \tau \circ \mu

Mittels des Algorithmus von Robinson nach John Alan Robinson kann man zu unifizierbaren Ausdrücken einen kleinsten gemeinsamen Unifikator finden.

[Bearbeiten] Unifikationsalgorithmus

Eingabe: Menge von Ausdrücken A
Ausgabe: allgemeinster Unifikator sub
sub := \empty
while |sub(A)| > 1 do begin
  Durchsuche die Ausdrücke sub(A) von links nach rechts,
  bis die erste Position gefunden ist, wo sich zwei Ausdrücke
  in einem Zeichen unterscheiden.
  if keines der beiden Zeichen ist eine Variable then
    Gib "nicht unifizierbar" aus. STOP
  else begin
    Sei x die Variable und t der im anderen Ausdruck beginnende Term
    (kann auch Variable sein)
    if x kommt in t vor then
      Gib "nicht unifizierbar" aus. STOP
    else sub := sub \cup [x/t]
  end
end
Gib sub aus.

[Bearbeiten] Literatur

  • J. A. Robinson. A Machine-Oriented Logic Based on the Resolution Principle. Journal of the ACM. 1965 ACM Press
Andere Sprachen

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -