Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мат лог. (Л-6).doc
Скачиваний:
35
Добавлен:
23.11.2019
Размер:
1.09 Mб
Скачать

61

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

Для получения вывода из аксиом, представленных в логике предикатов, можно пользоваться прямым или обратным вывода, методом резолюций. Чаще всего используется метод резолюций.

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

Множество подстановок при унификации дизъюнктов нужно выполнять последовательно, просматривая каждый раз только одну предметную переменную.

Например, если даны два дизъюнкта и , то для получения контрарной пары атомов необходима подстановка:

В результате соединения дизъюнктов логической связкой « » может быть получена резольвента:

.

Если пара дизъюнктов имеет вид и , то никакая подстановка не позволит вычислить контрарные атомы.

Алгоритм унификации состоит в выделении рассогласований в предикатах, и если при этом рассогласовании один из аргументов является переменной, а второй – константой, другой переменной или функцией, то, исходя из того, что переменная квантирована квантором общности, то есть может принимать любые значения, ей приписывается значение этой константы или функции. Для формулировки алгоритма унификации понадобятся следующие определения.

Подстановка это множество вида , где для всех , ‑ переменная, а ‑ терм, причем (отображение переменных в термы). При этом все переменные, входящие в подстановку, различны (для любого , ).

Символом будем обозначать пустую подстановку.

Простое выражение ‑ это терм или атомная формула.

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

Композиция двух подстановок и обозначается как и получается следующим образом:

1) применяем к термам , выписываем множество , из которого удаляем пары , если ;

2) к полученному множеству добавляем такие пары из , которые содержат переменные, не встречающиеся среди переменных , т.е. добавляем пару , если при .

Пример 1. Пусть , . Построим . Для этого применением к термам , получим множество . Выбросим из этого множества , потому что заменяемая переменная совпадает с термом, имеем . Теперь добавим те пары из , которые содержат переменные, не встречающиеся среди переменных , получим ответ: .

Некоторые свойства подстановок:

1. ;

2. ;

3. в общем случае.

Множество унифицируемо, если существует подстановка такая, что . В этом случае называется унификатором для простых выражений .

Пример 2. Множество унифицируемо. Можно взять в качестве унификатора простых выражений множества подстановку или подстановку . Тогда соответственно получим: , .

Вообще говоря, унифицируемое множество может иметь бесконечно много унификаторов.

Наиболее общий унификатор (НОУ) обладает тем свойством, что, если ‑ любой унификатор для , то существует некоторая подстановка такая, что , т.е. .

В рассмотренном выше примере 2 наиболее общим унификатором является подстановка .

Пусть ‑ конечное множество простых выражений. Определим множество d(S) разногласий (рассогласований). Зафиксируем самую левую позицию, на которой не во всех выражениях из стоит один и тот же символ. Занесем в подвыражения выражений из , начинающиеся с этой позиции.

Пример. Пусть . Множество рассогласований будет .

Дадим алгоритм поиска наиболее общего унификатора для конечного множества простых выражений . В том случае, если это множество не унифицируемо, алгоритм должен обнаруживать эту ситуацию.

Шаг 1. Полагаем , .

Шаг 2. Если ‑ одноэлементное множество, останавливаем алгоритм, ‑ наиболее общий унификатор для S. В противном случае строим множество рассогласований и переходим к третьему шагу.

Шаг 3. Если в существуют переменная и терм , такие, что не входит в , то полагаем , и переходим к шагу 2. Иначе останавливаем алгоритм, множество не унифицируемо.

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

Пример 3.

Найти наиболее общий унификатор для .

1. Шаг 1. , , . Переходим к шагу 2.

2. Шаг 2. ‑ не одноэлементное множество.

Строим множество рассогласований .

Переходим к шагу 3.

3. Шаг 3. Множество рассогласований содержит пару , в которой – переменная, а терм « » эту переменную не содержит. Полагаем:

;

.

Переходим к шагу 2.

4. Шаг 2. ‑ не одноэлементное множество.

Строим множество рассогласований .

Переходим к шагу 3.

5. Шаг 3. Множество рассогласований содержит пару , в которой – переменная, а терм « » эту переменную не содержит.

Полагаем:

;

.

Переходим к шагу 2.

6. Шаг 2. ‑ не одноэлементное множество.

Строим множество рассогласований .

Переходим к шагу 3.

7. Шаг 3. Множество рассогласований содержит пару , в которой – переменная, а терм « » эту переменную не содержит.

Полагаем:

;

.

Переходим к шагу 2.

8. Шаг 2. ‑ одноэлементное множество. Завершение алгоритма.

Наиболее общий унификатор для – это подстановка .