Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Математическая логика / 2008-03-21-01-48-Елена- лк.Мат.лог., 03.doc
Скачиваний:
201
Добавлен:
01.05.2014
Размер:
989.18 Кб
Скачать

Унификация и резолюция в логике предикатов

Когда предложение  представлено в виде множества дизъюнктов, приходится работать с переменными и сколемовскими функциями. С помощью семантических деревьев можно определить, выполнима ли данная формула на соответствующем эрбрановском универсуме. Процедура эта требует значительных затрат времени. Более того, ее нельзя представить в виде хорошо структурированного алгоритма, который можно было бы реализовать на компьютере. Процедура унификации предлагает метод определения противоречивости множества дизъюнктов.

Унификация: неформальное описание

Пусть даны следующие дизъюнкты:

C1: {P(f(x),y), Q(a,b,x)} и C2: {P(f(g(c)),g(d))}.

Мы хотим применить резолюция к С1 и С2, выполнив подстановку: (x/g(c), y/g(d)). Для этого необходимо

  1. проверить, можно ли применить резолюцию к С1 и С2 и

  2. найти подходящую подстановку, допускающую резолюцию.

Такую проверку и вычисление подстановки выполняет алгоритм унификации. Посмотрим, как этот алгоритм унифицирует С1 и С2.

Шаг 1. Начинаем сравнивать соответствующие термы дизъюнктов слева направо, пока не встретим первые термы с одинаковыми функциональными символами, которые различаются переменными или константами. Множество этих термов образует множество рассогласования. Для С1 и С2 первым множеством рассогласования будет {x, g(c)}.

Шаг 2. Для каждой переменной множества рассогласования проверяем, встречается ли она в каком-нибудь другом терме этого же множества.

Шаг 3. Если на предыдущем шаге получен положительный ответ, то дизъюнкты не унифицируемы, и применение алгоритма заканчивается неудачей. Если ответ отрицательный, производим подстановку вместо переменной из множества рассогласования терма из того же множества. Для С1 и С2 применяем подстановку ={x/g(c)}. В результате С1 и С2 принимают вид:

Шаг 4. Продолжаем двигаться вправо, выполняя пункты 1-3. Новым множеством рассогласования будет {y, g(d)}. Применяем подстановку {y/g(d)} и получаем

Очевидно, к дизъюнктам иможно применить резолюцию

Алгоритм заканчивает работу, выдавая в качестве ответа множество подстановок, позволяющих унифицировать ии затем применить к ним правило резолюции дляPL. Это множество подстановок называется общим унификатором (ОУ) дизъюнктов. Для С1 и С2 общим унификатором является множество ={x/g(c), y/g(d)}. Если дизъюнкты не могут быть унифицируемы, алгоритм останавливается на шаге 2.

Унификация: формальное описание

Унификация состоит в последовательном просмотре всех атомов пары дизъюнктов Ci и Cj с целью обнаружения атома, входящего в один из дизъюнктов с отрицанием, в другой – без. Если такие атомы найдены, то сравниваются попарно термы, которые являются аргументами этих атомов и находятся в одних и тех же позициях. Первая пара несовпадающих термов образует множество рассогласования DS. Затем производится проверка вхождений (ПВ), которая выясняет для каждой переменной, входящей в первый терм DS, есть ли вхождение этой переменной в другой терм. Если ДА, то ПВ дает ответ ДА. Это означает, что DS не унифицируемо. Такой же ответ, если в DS нет переменных. Если ПВ дает ответ НЕТ, то унификация возможна, и выполняется подстановка.

Множество рассогласования. Пусть S={C1, C2, …, Cn} – множество дизъюнктов. Множество DS(S)={t1, t2, …, tn | t1, t2, …, tn – первые слева термы, стоящие на соответствующих местах в дизъюнктах C1,…, Cn, среди которых есть по крайней мере два различных} называется множеством рассогласования S.

Множество рассогласования не определяется однозначно, оно зависит от порядка следования атомов в дизъюнктах. В рассмотренном выше примере S={C1, C2} = {{P(f(x),y), Q(a,b,x)}, {P(f(g(c)), g(d))}}. Первыми слева различными термами в атомах P(f(x)y) и P(f(g(c)), g(d)) являются x и g(с), таким образом, первым множеством рассогласования будет множество DS1={x, g(c)}. После применения подстановки ={x/g(c)} возникает несоответствие между термами y и g(d), и следующим множеством рассогласования будет DS2={y, g(d)}.

Пусть X={1, 2, …, n} множество атомов или термов. Подстановка  называется унификатором для Х, если 1=2=…=n.

Унификатор  называется наиболее общим унификатором (НОУ), если для любого другого унификатора  существует подстановка  такая, что .

Для множества термов или атомов S НОУ определяется единственным образом.

Пример 1.рассмотрим множество атомов S={Q(g(x),w), Q(y, b)}, где b – константа. Унификатором для S является подстановка ={y/g(b), x/b, w/b}. Если подстановку  применить к множеству S, получатся следующие основные примеры:

Q(g(x), w)=Q(g(b), b); Q(y,b) = Q(g(b),b).

Если мы теперь положим ={x/b} и {y/g(x), w/b}, можем легко показать, что .

Кроме того, подстановка  унифицирует рассматриваемые атомы, т.е. является НОУ.

Алгоритм унификации Пусть T={P1, P2,…, Pn}- множество атомных формул.

Шаг 0. 0=Е (тождественная подстановка).

Шаг k. Уже построены подстановки 0, 1, …, k.

Шаг k+1. (рекурсия).

  1. Если P112 …k= P212 …k=…=Pn , алгоритм заканчивает работу, выдавая =12 …k в качестве НОУ.

  2. Если Pi12 …k  Pj12 …k для некоторых I, j, тогда

  1. строим множество рассогласования DS(Pi12 …k,…, Pn 12 …k) = DS(T 12 …k) = DSk;

  2. производим проверку вхождений (ПВ) переменных, т.е. проверяем для каждой переменной vDSk, содержится ли она в каком-нибудь другом элементе DSk.

Если ПВ дает положительный ответ, останавливаемся и делаем заключение, что множество Т не унифицируемо. Если множество DSk вообще не содержит переменных, ПВ также дает положительный ответ. Если DSk содержит переменную v и терм t, и ПВ дает отрицательный ответ, полагаем, что k+1 ={v/t}, избавляясь, таким образом, от несоответствия между P1,…,Pn в термах v, t.

Шаг k+2. Повторяем шаги k+1, k+2 для k=k+1.