Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / ПРОГР НА ПРОЛОГЕ.doc
Скачиваний:
42
Добавлен:
23.03.2015
Размер:
669.7 Кб
Скачать

2.1. Принцип резолюцій

У численні предикатів доводиться, що будь-якій формулі можна за допомогою нескладних перетворень надати так званої дизюнктивної форми, тобто подати у вигляді набору диз'юнктів. При цьому під диз'юнктом розуміється диз'юнкція літералів, кожний із яких є або предикат, або заперечення предиката.

Диз'юнкти можна спростити в такий спосіб: квантори загальності опустити, предикати переписати без дужок, а зв'язки V замінити на імплікацію () або слово "якщо". Наприклад, маємо диз'юнктивну форму:

(x) (поважати(x, Ключевський) V (знати(x, історія)).

Після перетворення одержимо

x поважати Ключевський, якщо x знати історію.

Тобто "кожний, хто знає історію, поважає Ключевського".

Крім того, диз'юнкти, усі літерали яких негативні, звичайно переписуються в еквівалентну форму негативної коньюнкції. Наприклад, формула

(x) ((P(x, c1) V (P(x, c2)).

перепишеться у вигляді

(x)  (P(x,c1) & P(x,c2)).

Якщо у формулі P – це "знати", а c1 і c2 – "фізика" і "історія", то одержимо

(x)  (знати(x, фізика) & знати (x, історія))

Цей вираз у спрощеному вигляді (без кванторів і дужок) можна переписати як

?– x знати фізика & x знати історія

і прочитати як запит "хто знає фізику й історію одночасно".

Таким чином, умови розв'язуваної задачі (факти та правила) і цільові твердження задач (запити) можна виразити в диз'юнктивній формі логіки предикатів першого порядку.

Головна ідея цього правила полягає в перевірці того, чи включає множина диз'юнктів R порожній (неправльний) діз'юнкт λ. Якщо так, то множина R (і відповідна йому формула) нездійсненна (суперечлива). Якщо ні, то виводяться нові диз’юнкти доти, поки не буде отриманий порожній диз'юнкт λ, що завжди буде мати місце для суперечливого R.

У такий спосіб принцип резолюцій можна розглядати як правило виводу, за допомогою якого породжуються нові диз’юнкти з R. У загальному випадку кожен крок резолюції починається з деякої пари диз'юнктів (попередників) таких, що деякий літерал A в одному з диз'юнктів повинен бути зроблений доповнювальним литералу B іншого диз'юнкта пари. (Доповнювальними називаються літерали A і ¬A).

Щоб зробити літерали A і B доповнювальними необхідно їх уніфікувати, тобто зробити ідентичними за допомогою деякої підстановки , що називається уніфікатором:

A = B.

У такому випадку кажуть, що два обраних літерали резольвують. Потім за допомогою правила резолюції виводиться новий диз'юнкт - резольвента в такий спосіб: літерали диз'юнктів-попередників, за винятком тих, які резольвували, поєднуються і до результату застосовується підстановка .

Наприклад.

Перший попередник (диз'юнкт): Петро поважає y

Другий попередник (диз'юнкт): x поважає Івана, якщо батько(Іван) поважає x

Резольвируючі літерали: ті, що підкреслено

Уніфікатор: =(x:=Петро, y:=Іван)

Резольвента: батько(Іван) поважає Петро

Останній вираз (резольвента) читається як "батько Івана поважає Петра?".

Правило резолюції має властивість повноти (за допомогою нього завжди можна знайти порожній диз'юнкт). Однак унаслідок нерозв'язності логіки предикатів першого порядку для виконуваної (несуперечливої) множини диз'юнктів процедура, основана на принципі резолюції, може працювати нескінченно довго.