- •4. Представление знаний с использованием логики предикатов
- •4.1. Логические модели и логическое программирование
- •4.2. Простейшие конструкции языка предикатов
- •4.3. Предикатные формулы
- •(X) [являться (х, птица) имеет (х, крылья), владеет (х, гнездо)]
- •Любит (х, у),
- •4.4. Определение правильно построенной формулы
- •(X) [человек (х) смертен]
- •4.5. Логический вывод
- •4.5.1. Правило резолюции для простых предложений
- •4.5.2. Правило резолюции для сложных предложений
- •4.5.3. Простая резолюция сверху вниз
- •S3: сдает (успешно, сессию, студент)
- •Получает ли студент стипендию?
- •S: получает (студент, стипендию)
- •S: сдает (успешно, сессию, студент)
- •Подтверждают отрицание s: s1: ( получает (студент, стипендию))
- •Получает (студент, стипендию)
- •4.5.4. Общая резолюция сверху вниз
- •4.5.5. Унификаторы и примеры унификации
- •4.5.6. Решение задач и извлечение ответа.
- •D1: факториал (3, z)
4.5.2. Правило резолюции для сложных предложений
Реальные логические модели содержат значительно более сложные предложения. Так отрицание могут содержать несколько предикатов, так же как и правые части импликаций. Поэтому более общим является случай, когда родительские предложения имеют вид:
S1: (A1,... ,Ak, ...,An)
S2: Ak (B1, ...,Bm) (где 1<k<n)
Здесь некоторый предикат Аk из отрицания S1 совпадает с предикатом из левой части S2. В этом случае шаг вывода заменяет Аk в S1 на правую часть S2 и в качестве резольвенты получают отрицание
S: (A1, ..., Ak-1, B1,..., Bm, Ak+1, ..., An)
Данное правило проиллюстрируем содержательным примером.
допуская, что Не (темно и зима и холодно)
и что Зима если Январь
выводим, что НЕ (темно и январь и холодно)
В том случае, если S1 имеет тот же вид, а S2 - факт
S2: Ak
причем Аk является одним из предикатов из S1, шаг вывода только вычеркивает Аk из S1 и получается резольвента
S: (A1, ..., Ak-1, Ak+1, ..., An)
Данный шаг вывода можно иллюстрировать следующим примером
допуская, что НЕ (темно и зима и холодно)
и что Зима
выводим, что: НЕ (темно и холодно)
4.5.3. Простая резолюция сверху вниз
Рассмотренные выше правила применяются на каждом шаге вывода только к двум родительским предложениям. Вместе с тем описание любой области знания содержит множество ППФ.
Рассмотрим процесс логического вывода для примера, когда знания выражаются двумя предложениями.
S2: получает (студент, стипендию) сдает (успешно, сессию, студент)
S3: сдает (успешно, сессию, студент)
Задача, которую надо решить, состоит в том, чтобы ответить на запрос
Получает ли студент стипендию?
Когда используется обычная система логического вывода, то такой вопрос представляется в виде отрицания
S: получает (студент, стипендию)
и система должна отвергнуть это отрицание при помощи других предложений, демонстрируя, что данное допущение ведет к противоречию.
Этот подход часто применяется в математике и называется доказательством от противного.
Теперь представим себе, что исходная логическая модель, составленная из трех предложений S1, S2 ,S3 поступает на вход системы логического вывода ЭВМ.
ШАГ 1
Система на первом шаге применит правило (*) к родительским предложениям S1 и S2 и получит резольвенту:
S: сдает (успешно, сессию, студент)
ШАГ 2
Используя правило (**) к S и S3 система выводит противоречие:
S`:
Таким образом, для доказательства противоречивости S1 S2 S3 оказалось достаточно двух шагов вывода.
Если считать, что S2 и S3 не противоречат друг другу, то они совместно противоречат S1, т. е.
Подтверждают отрицание s: s1: ( получает (студент, стипендию))
или другими словами подтверждают предложение:
Получает (студент, стипендию)
и ответом на исходную задачу является «ДА».
Логический вывод, который порождает последовательность отрицаний, такую как (S1 , S , S`) в рассмотренном примере, называется резолюцией сверху вниз.