Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
М_Н_СТЕРСТВО ОСВ_ТИ _ НАУКИ УКРАЇНИ.docx
Скачиваний:
1
Добавлен:
27.08.2019
Размер:
242.25 Кб
Скачать

1.4 Метод резолюцій

Розглянемо напівконструктивний метод доказу істинності логічних клауз, в якому використовується так званий принцип резолюцій. Цей принцип грає роль аксіоми порядку і разом з тим породжує дуже ефективну конструктивну процедуру. Суть його зводиться до того, що два посилочних дизъюнкта з протилежними термами завжди можна склеїти в один дизъюнкт, в якому вже не буде протилежних термів:

X \/ A, Y \/ A => X \/ Y, (1.8)

де X і Y — довільні терми або цілі дизъюнкты з будь-яким набором термів, включаючи нуль; A і A — довільні терми.

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

Р1, Р1, ... , Рn => 0. (1.9)

Доведемо справедливість правила відділення:

A , А → В => В или 0 \/ А, А \/ В, В \/ 0 => 0. (1.10)

Тут три дизъюнкта. Склеюючи їх послідовно, отримуємо в результаті нуль, який говорить про несумісність висновку і посилок. Це свідчить про справедливість початкової клаузы.

Принцип резолюцій цілком замінює аксіому порядку, оскільки сама ця аксіома може бути доведена в рамках методу резолюцій. Дійсно

А, В => А, А, В, А => 0 , 0, В => 0. (1.11)

Звертаємо увагу на те, що посилка В тут взагалі не використовується. Це необхідно мати на увазі: необов'язково використовувати всі посилки (їх число часто буває надмірним) — головне отримати нуль. Хай дана клауза:

А → В, С \/ А, В → С => А. (1.12)

Доказ її справедливості слід почати з приведення її в нормальну кон'юнктивну форму:

А \/ В, С \/ А, В \/ С, А => 0. (1.13)

Випишемо по порядку всі посилки і далі почнемо їх склеювати (праворуч від дизъюнкта записані номери використовуваних дизъюнктов):

1. А \/ В,

2. С \/ А,

3. В \/ С,

4. А,

5. А \/ С, (1,3)

6. В, (1,4)

7. А \/ В, (2,3)

8. С, (2,4)

9. А, (2,5)

10. С, (3,6)

11. В, (3,8)

12. С, (4,5)

13. В, (4,7)

14. 0. (4,9)

Подібна стратегія пошуку нуля дуже непродуктивна. Якщо до цього ж завдання підійти більш творчо, то нуль виявиться на четвертому кроці від початку пошуку:

5. В (1,4), 6. С (2,4), 7. В (3,6), 8. 0 (5,7).

Метод резолюцій легко піддається алгоритмізації. Це дозволяє використовувати його в логічних мовах програмування і, зокрема, в ПРОЛОЗІ.

2 Опис алгоритму

Алгоритм пошуку спростування методом резолюцій перевіряє виводимість формули G з множини формул S.

Вхід алгоритму: множина пропозицій С, отриманих з множини формул S та формули ¬ G.

Вихід алгоритму: 1 – якщо G є виводимим з S, 0 – в протилежному випадку.

M:=C {М – поточна множина пропозицій}

While {c} M do

Choose(M,c1,c2,p1,p2,σ) {вибір батьківських пропозицій}

if c1,c2 = Ø then

return 0 {нічого резольвувати}

end if

c:=R(c1,c2,p1,p2, σ) {обчислення резольвенти}

M:=M U {c} {поповнення поточної множини}

end while

return 1 {теорема доказана}

Якщо алгоритм закінчує свою роботу, то правильність результату очевидна. Але взагалі кажучи, кінцевість цього алгоритму не гарантована.

В цьому алгоритмі використані дві допоміжні функції. Функція R обчислює резольвенту двох речень с1 та с2, що містять уніфікуємі контрартні літерали р1 та р2, відповідно; при цьому σ – найбільш загальний уніфікатор. Результатом роботи функції є резольвента.

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

В теперішній час запропоновано багато різних стратегій методу резолюцій. Серед них розрізняються повні та неповні стратегії. Повні стратегії – це такі, що гарантують знаходження доведення теореми, якщо воно взагалі існує. Неповні стратегії можуть в деяких випадках не знаходити доказу, проте вони працюють швидше. Слід мати на увазі, що автоматичний доказ теорем методом резолюцій має по суті перебірний характер, і цей перебір настільки великий, що може бути практично нездійсненним за прийнятний час.

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

3 ПРОГРАМНА РЕАЛІЗАЦІЯ АЛГОРИТМУ

3.1 Блок-схема

Рис. 3.1 – Блок-схема алгоритму методу резолюцій

3.2 Мінімальні системні вимоги

Для коректної роботи програми та зручної роботи з нею необхідні наступні мінімальні системні вимоги:

  • операційна система Windows 95 або Linux;

  • розрішення екрану 800х600;

  • процесор 600 МГц;

  • 3 Мб вільної оперативної пам’яті;

  • 1 Мб вільного місця на жорсткому диску;

  • встановлений в системі шрифт Symbol.

3.3 Інтерфейс користувача

Головне вікно програми наведено на рисунку 3.2. Програма призначена для автоматичного доказу теорем за методом резолюцій, тому головним елементом вікна є поле вводу, куди заноситься логічний вираз для доказу. Він може містити основні логічні операції, а також знак слідування і змінні. Всі допустимі оператори знаходяться нижче поля вводу – вони обираються за допомогою відповідних кнопок.

Слід зазначити, що для методу резолюцій логічний вираз повинен мати доволі конкретний вигляд. Він повинен мати ліву частину, що складається з виразів-діз’юнктів, що розділяються комами, знак слідування, та нуль у правій частині.

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

Рис. 3.2 – Головне вікно програми

Після вводу логічного виразу потрібно натиснути на кнопку «Выполнить». В результаті програма проведе розрахунки, і видасть один з двох можливих результатів:

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

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

Для виходу з програми використовується пункт головного меню Файл-Выход.