Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теорема дедукции.doc
Скачиваний:
10
Добавлен:
16.09.2019
Размер:
215.55 Кб
Скачать

Унификация

Процесс унификации является основным в формальных преобразованиях, выполняемых при нахождении резольвент (для метода резолюций).

Пусть задано множество дизъюнктов. Каждый дизъюнкт составлен из литералов.

Пример. Пусть имеем следующее множество дизъюнктов:

дизъюнкт дизъюнкт

_____.А.___________ А

S = (P(x, f(y), b) P(x, f(a), b), P(c, f(a), b)}

литерал литерал литерал

Термы литерала могут быть переменными, постоянными или выражениями, состоящим из функциональных букв и термов. Например, для литерала Р(х, f(y), b) имеем, что х - переменная, f(y) - сложный терм, b -постоянная.

Подстановочный частный случай литерала получается при подстановке в литералы термов вместо переменных. Пусть имеем литерал P(x, f(y), b). Его частными случаями будут:

P1= P(z,f(w), b),

P2 = P(x, f(a), b),

P3 = P(g(z), f(a), b),

Р4 = Р(с, f(а), b) - константный частный случай литерала или атом, т.к. нет переменных.

Подстановки, примененные в рассматриваемом примере, можно обозначить следующим образом:

1 = {z/x, w/y}, здесь z подставляется вместо х, а w вместо у;

2 = {а/у};

з = {g(z)/x, а/у};

4 = {с/х, а/у}. Применение подстановки в к литералу Р обозначаем Р. Тогда имеем

P1=Pj, Рз3,

р22, р44

Если - подстановка и она применяется к каждому из литералов Li то полученные частные случаи обозначаются через {Li}.

Последовательное применение двух подстановок 1 и 2 дает новую подстановку 3, которую обозначаем 3 = 1 ° 2.

Множество {Li} литералов называется унифицируемым, если существует такая подстановка в, что (L1) = (L2) = ... = (Ln)

В этом случае подстановку в называют унификатором для {Li}.

Пусть имеем множество литералов {Р(х, f(y), b), Р(х, f(b), b)}, где L1 = Р(х, f(y), b), L2 = P(x, f(b), b). Подстановка = {a/x, b/y} является, очевидно, унификатором для этого множества литералов.

Унификатор для множества выражений {E1,E2,...,Ek} называется наиболее общим унификатором тогда и только тогда, когда для каждого унификатора для этого множества существует такая подстановка , что =.

Существует алгоритм, называемый алгоритмом унификации, который приводит к наиболее общему унификатору для унифицируемого множества литералов {Li} и сообщает о неудаче, если это множество не унифицируемо.

Алгоритм унификации: Алгоритм начинает работу с пустой подстановки и шаг за шагом строит наиболее общий унификатор, если таковой существует. Предположим, что на k-ом шаге получена подстановка k. Если все литералы из {Li} в результате становятся идентичными, то = к и есть наиболее общий унификатор. В противном случае каждый из литералов в {Li}k рассматривается как цепочка символов и выделяется

позиция первого символа, в которой не все из литералов имеют одинаковый символ. Рассмотрим пример двух литералов. Стрелками пометим позиции, где появились различные символы (при просмотре слева направо).

{P(a, f(a, g(z)), h(x)), P(a, f(a, u), g(w))}

_______________

Затем конструируется множество рассогласования, содержащее правильно построенные выражения из каждого литерала, который начинается с этой позиции (правильно построенное выражение представляет собой либо терм, либо литерал). Так для рассмотренного примера множеством рассогласования будет

{g(z), u}.

Далее модифицируем (если можно) подстановку θk, чтобы сделать равным два элемента из множества рассогласования. Это можно сделать только тогда, когда множество рассогласования содержит переменную, которую можно положить равной одному из его термов. Если множество рассогласования не содержит переменных, то множество {Li} унифицировать нельзя.