Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭС_Л7_ИППП.doc
Скачиваний:
45
Добавлен:
22.09.2019
Размер:
685.06 Кб
Скачать

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

Если в логике высказываний нахождение контрарных пар не вызывает трудностей, то для логики предикатов это не так. Действительно, если мы имеем дизъюнкты типа

С1: Р(х) R(х),

С2: Р(g(х)) Q(y),

то резольвента может быть получена только после применения к С1 подстановки g(х) вместо х.

Имеем

С1: Р(g(х)) R(g(х)),

С2: Р(g(х)) Q(y),

С: R (g(х)) Q(y).

Однако для случая

С1: Р(f(х)) R(х),

С2: Р(g(х)) Q(y),

очевидно, никакая подстановка неприменима и никакая резольвента не образуется. Отсюда следует определение того, что является подстановкой.

Подстановкой будем называть конечное множество вида {t1/x1, t2/x2, …, tn/xn}, где любой ti – терм, а любая хiпеременная (1 i n), отличная от ti.

Подстановка называется фундаментальной, если все ti (1 i n) являются фундаментальными термами. Подстановка, не имеющая элементов, называется пустой подстановкой и обозначается через ε. Пусть Θ = {t1/x1, t2/x2, …, tn/xn} – подстановка и W – выражение. Тогда WΘ будем называть примером выражения W, полученного заменой всех вхождений в W переменной хi, (1 i n) на вхождение терма ti. WΘ будет называться фундаментальным примером выражения W, если Θ – фундаментальная подстановка.

Например, применив к W ={ Р (х, f( у) ) Q (z)} фундаментальную подстановку Θ = {а/х, g(b)/у, f(а)/z}, получим фундаментальный пример WΘ ={Р(a, f(g(b))) Q (f(a))}. Пусть Θ = {t1/x1, t2/x2, …, tn/xn} и  = {u1/y1, u2/y2, …, um/ym} – две подстановки. Тогда композицией Θ двух подстановок Θ и  называется подстановка, состоящая из множества

{t1/x1, t2/x2, …, tn/xn, u1/y1, u2/y2, …, um/ym},

в котором вычеркиваются ti/xi у в случае ti=xi и ui/yi если yi находится среди x1, x2, …, xn.

Пример. Θ = {g(x,y)!х, z/у} и  = {a/x, b/y, c/w, y/z}, Θ= {g(a,b)!х, у/у, а/х, b/у, с/w, у/z} {g(a,b)!х, с/w, у/z}. Можно показать, что­­­­­ композиция подстановок ассоциативна, т. е. (Θ)= Θ().­­­­

Подстановку Θ будем называть унификатором для множества выражений {W1, W2, …, Wk }, если W1Θ= W2Θ= …= WkΘ. Будем говорить, что множество выражений {W1, W2, …, Wk } унифицируемо, если для него имеется унификатор. Унификатор  для множества выражений {W1, W2,, Wk } называется наиболее общим унификатором (Н0У) тогда и только тогда, когда для каждого унификатора Θ для этого множества выражений найдется подстановка  такая, что Θ =  .

Опишем теперь алгоритм унификации, который находит НОУ, если множество выражений W унифицируемо, и сообщает о неудаче, если это не так.

  1. Установить k = 0, Wk = W и k = . Перейти к пункту 2.

  2. Если Wk не является одноэлементным множеством, то перейти к пункту 3. В противном случае положить  = k и окончить работу.

  3. Каждая из литер в Wk рассматривается как цепочка символов и выделяются первые подвыражения литер, не являющихся одинаковыми у всех элементов Wk, т. е. образуется так называемое множество рассогласований типа (xk, tk). Если в этом множестве xk – переменная, а tk – терм, отличный от xk, то перейти к пункту 4. В противном случае окончить работу: W неунифицируемо.

  4. Пусть k +1 = k{ tk / xk } и Wk+1 = Wk{ tk / xk }.

  5. Установить k=k+ 1 и перейти к пункту 2.

Пример. Найти НОУ для W = { P(y, g(z), f(x)), P(a, x, f(g(y)))}.

1) 0 = и W0 = W.

2) так как W0 не является одноэлементным множеством, то перейти к пункту 3.

3) {у, а}, т. е. {а/у}.

4) 1 =0 {а/у} = {а/у} = {а/у}.

W1 = W0 {а/у} = { P(a, g(z), f(x)), P(a, x, f(g(a)))}.

5) так как W1 опять неодноэлементно, то множество рассогласований будет {g(z),x}, т. е. {g(z)/x}.

6) 2 =1 {g(z)/x} = {а/у, g(z)/x},

W2 = W1 { g(z)/x } = { P(a, g(z), f(g(z))), P(a, g(z), f(g(a)))}.

7) имеем {z, a},{z/ a}.

8) 3 =2 {z, a} = {а/у, g(z)/x, z,a},

W3 = W2 { z, a } = { P(a, g(a), f(g(a))), P(a, g(a), f(g(a)))}= { P(a, g(a), f(g(a)))},

3 =2 {z, a} = {а/у, g(z)/x, z,a} есть НОУ для W .

Если две или более одинаковые литеры (одного и того же знака) дизъюнкта С имеют НОУ, то С называется фактором дизъюнкта С.

Пусть С1 и С2 – два дизъюнкта, не имеющих общих переменных (это всегда можно получить переименованием переменных). И пусть L1 и L2 = L1– литеры в дизъюнктах С1 и С2 соответственно, имеющие НОУ. Тогда бинарной резольвентой для С1 и С2 является дизъюнкт вида С=( С1 – L1) (С2 – L2 ). Бинарная резольвента может быть получена одним из четырех способов:

1) резольвента для С1 и С2;

2) резольвента для С1 и фактора дизъюнкта С2;

3) резольвента для фактора дизъюнкта С1 и С2;

4) резольвента для фактора дизъюнкта С1 и фактора дизъюнкта С2.

Пример. Пусть

С1 = Р(f(g(а))) R(b),

С2 = P(x) P(f(y)) Q(y).

Тогда С2 = С`2 = P(f(y)) Q(y) и резольвентой для С1 и С`2 будет С = R(b) Q(y).

Принцип резолюции обладает важным свойством – полнотой, которое устанавливается следующей теоремой (Дж. Робинсон): Множество дизъюнктов S невыполнимо тогда и только тогда, когда существует вывод из S пустого дизъюнкта.

Однако в силу неразрешимости логики предикатов первого порядка для выполнимого множества дизъюнктов S процедура, основанная на принципе резолюции, будет работать бесконечно долго.

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

Пример. Существуют студенты, которые любят всех преподавателей. Ни один из студентов не любит невежд. Следовательно, ни один из преподавателей не является невеждой.

Запишем эти утверждения на языке логики предикатов и приведем их к стандартному виду:

x (С(х) & y (P(y) L(х, y))),

x (С(х) y (H(y) L(х, y))),

y(P(y) H(y)).

1. С(a).

2. P(y) L(a, y).

3. С(х) H(y) L(х, y).

y( P(y) H(y))= y(P(y) &H(y)).

4. P(b).

5. H(b).

6. L(a, b) (2, 4). = {b/y}.

7. H(y) L(a, y) (1, 3). = {b/x}.

8. L(a, b) (6, 7). = {b/y}.

9. (6,8).

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

Задачи

Выяснить логическую правильность следующих рассуждений:

  1. Если запись числа X заканчивается двумя нулями, то оно делится на 4. Число X делится на 4. Следовательно, его запись заканчивается двумя нулями.

  2. Если курс ценных бумаг растет или процентная ставка снижается, то либо падает курс акций, либо налоги не повышаются. Курс акций понижается тогда и только тогда, когда растет курс ценных бумаг и растут налоги. Если процентная ставка снижается, то либо курс акций не понижается, либо курс ценных бумаг не растет. Тогда либо повышаются налоги, либо курс акций понижается и снижается процентная ставка.

  3. Если не было дождей или были заморозки, то урожай плохой. Известно, что уражай хороший, а заморозков не было. Значит, дожди были.

  4. Известно, что либо налоги падают и цены растут, либо уровень безработицы остается постоянным. Если налоги падают, то инфляция растет. Инфляция не растет. Значит, уровень безработицы остается постоянным.

  5. Если лес дешевый или транспорт в дефиците, то либо растут рубки, либо уменьшаются посадки. Если растут рубки и уменьшаются посадки, то транспорт в дефиците. Известно, что лес дешев и транспорт не в дефиците. Следовательно, рубки растут тогда и только тогда, когда посадки не уменьшаются.

  6. Число обладает либо свойствами А и В одновременно, либо свойством С. Если число обладает свойством С, то оно обладает и свойством D. Если выполняется свойство D, то свойство В не выполняется. Известно, что свойство В выполняется. Тогда выполняется и свойство А.

  7. Каждое число из множества U обладает свойством C, а также свойством A или свойством В. Из выполнения свойства С следует выполнение свойства D. Свойство D несовместимо со свойством В. Следовательно, каждое число из U удовлетворяет свойству A.