- •127994, Москва, ул. Образцова, 15
- •2.Теоретические основы логическоого программирования
- •2.1.Логика высказываний и логика предикатов.
- •2.1.1.Формулы. Синтаксис и семантика формул.
- •2.1.2.Интерпретация формул в логике высказываний.
- •2.1.3.Интерпретация в логике предикатов первого порядка
- •2.1.4.Равносильность формул логики высказываний
- •2.1.5.Тождественная истинность формул логики высказываний
- •2.1.6.Равносильность формул логики первого порядка
- •2.1.7.Тождественная истинность, общезначимость, выполнимость, противоречивость формул логики предикатов
- •2.1.8.Рассуждения в логике высказываний (предикатов)
- •2.2.Метод резолюций
- •2.2.1.Метод резолюций в логике высказываний
- •2.2.2.Подстановка и унификация
- •2.2.3.Метод резолюций для логики первого порядка
- •2.2.4.Стратегии метода резолюций
- •2.3.Отношения и предикаты
- •3.Пролог- язык РекуРсивно-логического программирования
- •3.1.Пролог-история возникновения
- •3.2.Синтаксис языка пролог
- •3.3.Семантика языка пролог
- •3.4.Язык пролог и метод резолюций. Логическая интерпретация языка Пролог.
- •3.5.Работа в пролог-системе
- •3.6.Описание инфиксных операций
- •3.7.Списки в языке пролог
- •3.8.Арифметика в языке пролог
- •3.9.Отсечение и отрицание в языке пролог
- •3.10.Встроенные предикаты языка пролог
- •3.11.Работа с базой данных в языке пролог
- •3.12.Предикаты поиска
- •3.13.Решение головоломки на языке пролог(задача Эйнштейна)
- •4.Лабораторные работы по РекуРсивно-логическому программированию
- •4.1.Задание n1 Отношения между объектами. (на Прологе и Паскале)
- •4.1.1.Методические указания
- •4.1.2.Варианты
- •4.2.Задание n2. Работа со списками
- •4.2.1.Методические указания
- •4.2.2.Варианты
- •4.3.Задание n3. Разные задачи
- •4.3.1.Методические указания
- •4.3.2.Варианты
- •4.4.Содержание отчета
2.2.4.Стратегии метода резолюций
До сих пор для доказательства противоречивости формулы мы приводили соответствующий вывод пустого дизъюнкта. Однако, основная и наиболее сложная проблема метода резолюций – найти этот вывод. В множестве дизъюнктов существует, как правило, не одна пара дизъюнктов и не одна пара контрарных литер, к которым можно применить правило резолюций. Способ выбора дизъюнктов и литер в них, для применения правил резолюции (и склейки), называется стратегией метода.
Алгоритм 4. Стратегия насыщения уровней (перебор вширь, полный перебор).
Вход: S – исходное упорядоченное множество дизъюнктов.
S0=S, n=0.
для n>0, если получены последовательности дизъюнктов S0, S1,…,Sn-1, последовательность Sn будет состоять из всевозможных резольвент дизъюнктов D1 и D2, где в качестве D2 берутся по порядку дизъюнкты из Sn-1, а в качестве D1 – дизъюнкты из S0,S1,…,Sn-1, предшествующие D2.
Пример 2.2.14.
S={XvY, ¬Xv¬Y, XvZ, ¬XvZ, ¬Z}:
S0: |
1 |
XvY, |
|
|
2 |
¬Xv¬Y, |
|
|
|
3 |
XvZ, |
|
|
|
4 |
¬XvZ, |
|
|
|
5 |
¬Z, |
|
|
|
S1: |
6 |
Yv¬Y, |
из (1) и (2), |
т. истин. |
7 |
Xv¬X, |
из (1) и (2), |
т. истин. |
|
8 |
¬YvZ, |
из (2) и (3), |
|
|
9 |
YvZ, |
из (1) и (4), |
|
|
10 |
Z, |
из (3) и (4), |
|
|
11 |
X, |
из (3) и (5), |
|
|
12 |
¬X, |
из (4) и (5) |
|
|
S2: |
13 |
XvY, |
из (1) и (6), |
уже был |
14 |
¬Xv¬Y, |
из (2) и (6), |
уже был |
|
15 |
XvY, |
из (1) и (7), |
уже был |
|
16 |
¬Xv¬Y, |
из (2) и (7), |
уже был |
|
17 |
XvZ, |
из (3) и (7), |
уже был |
|
18 |
¬XvZ, |
из (4) и (7), |
уже был |
|
19 |
XvZ, |
из (1) и (8), |
уже был |
|
20 |
¬YvZ, |
из (6) и (8), |
уже был |
|
21 |
¬XvZ, |
из (2) и (9), |
уже был |
|
22 |
YvZ, |
из (6) и (9), |
уже был |
|
23 |
Z, |
из (8) и (9), |
уже был |
|
24 |
□. |
из (5) и (10). |
|
Мы видим, что порождено много лишних дизъюнктов. Удаление тождественно истинного дизъюнкта не влияет на выполнимость множества дизъюнктов. Некоторые дизъюнкты порождаются неоднократно. Их также можно удалить. В общем случае можно вычеркивать из вывода дизъюнкты, являющиеся расширениями уже имеющихся в выводе дизъюнктов.
Определение 2.2.13. Дизъюнкт D называется расширением дизъюнкта C, если существует подстановка σ такая, что σ(C)vQ =D.
Для логики высказываний это означает, что D=CvQ. Для логики предикатов приведем пример.
Пример 2.2.15.
D=Q(a)vP(b,y)vR(u) есть расширение дизъюнкта C=P(x,y)vQ(z)vQ(v).
Подстановка σ={x=b, z=a, v=a)}.
Пример 2.2.16.
Стратегия насыщения уровней с удалением лишних дизъюнктов дает более короткий вывод для примера. 2.2.14.
S0: |
1 |
XvY, |
|
2 |
¬Xv¬Y, |
|
|
3 |
XvZ, |
|
|
4 |
¬XvZ, |
|
|
5 |
¬Z, |
|
|
S1: |
6 |
¬YvZ, |
из (2) и (3), |
7 |
YvZ, |
из (1) и (4), |
|
8 |
Z, |
из (3) и (4), |
|
9 |
X, |
из (3) и (5), |
|
10 |
¬X, |
из (4) и (5) |
|
S2: |
11 |
□. |
из (5) и (8). |
Рассмотренные стратегии являются полными в том смысле, что если множество дизъюнктов S невыполнимо, то из S пользуясь стратегией можно вывести пустой дизъюнкт.
Упражнение 2.2.6.
Доказать полноту стратегии полного перебора.
Упражнение 2.2.7.
Доказать полноту стратегии вычеркивания.
Указание: если D–расширение C, то DvCC. Воспользоваться результатом упражнения 2.2.6
Определение 2.2.14. Револьвентой дизъюнктов D1 и D2 называется одна из следующих бинарных револьвент:
бинарная револьвента дизъюнктов D1 и D2,
бинарная револьвента склейки D1 и дизъюнкта D2,
бинарная револьвента дизъюнкта D1 и склейки D2,
бинарная револьвента склейки D1 и склейки D2.
Определение 2.2.15. (Другое определение револьвенты):
пусть D1и D2 -дизъюнкты - множества литер и d1D1и d2D2 -подмножества литер,
пусть σ - наиболее общий унификатор множества d1¬d2 (¬d2 - множество литер, полученное из d2 –путем добавления отрицания к каждой литере, если она положительная, или снятия отрицания, если она отрицательная)
тогда револьвентой дизъюнктов D1 и D2 называется дизъюнкт - множества литер σ((D1\d1)(D2\d2)).
Пример 2.2.17.
Исходные дизъюнкты: ¬Q(a,f(x))v¬Q(a,f(y))vR(x), Q(u,z)v¬P(z). Т.е. D1={¬Q(a,f(x)), ¬Q(a,f(y)), R(x)}, D2={Q(u,z),¬P(z)}
Выводим револьвенты:
¬Q(a,f(y))vR(x)v¬P(f(x)) (d1={¬Q(a,f(x)) }, d2={Q(u,z) }, НОУ σ={u=a, z=f(x)}
¬Q(a,f(x))vR(x)v¬P(f(y)) (d1={¬Q(a,f(y)) }, d2={Q(u,z) }, НОУ σ={u=a, z=f(y)}
R(x)v¬P(f(x)) (d1={¬Q(a,f(x)), ¬Q(a,f(y)) }, d2={Q(u,z) }, НОУ σ={u=a, z=f(x), y=x}
Упражнение 2.2.8.
Исходные дизъюнкты: ¬Q(a,f(x))v ¬Q(a,f(y))v R(x), Q(u,f(x))vQ(u,z)v¬P(z). Сколько револьвент можно вывести? Найдите эти револьвенты.
Упражнение 2.2.9.
Доказать, что определения резольвенты 2.2.14 и 2.2.15 эквивалентны.
Алгоритм 5. Стратегия перебора в глубину.
Вход: S – исходное упорядоченное множество дизъюнктов, в каждом дизъюнкте литеры также упорядочены. Если из двух дизъюнктов выводимы несколько резольвент, то эти резольвенты также упорядочены.
в качестве D1 берется последний дизъюнкт из S.
в качестве D2 берется первый дизъюнкт из S.
пока нет резольвент D1 и D2 и множество S не исчерпано выбирать в качестве D2 следующий по порядку дизъюнкт из S.
если множество S исчерпано, то ВЫХОД(неудача)
если есть резольвенты D1 и D2, то взять первую по порядку
если взятая резольвента – пустой дизъюнкт, то КОНЕЦ РАБОТЫ(успех).
если взятая резольвента – не пустой дизъюнкт и ее еще не было, то поместить ее в конец множества S, получить множество S1.
применить описываемый алгоритм рекурсивно к множеству S1.
если есть еще резольвенты D1 и D2, то взять следующую по порядку резольвенту D1 и D2, перейти к п. 6).
если нет больше резольвент D1 и D2, то перейти к п. 3).
Пример 2.2.17.
Стратегия перебора в глубину дает следующий вывод для примера. 2.2.14.
1 |
XvY, |
|
|
|
2 |
¬Xv¬Y, |
|
|
|
3 |
XvZ, |
|
|
|
4 |
¬XvZ, |
|
|
|
5 |
¬Z, |
|
|
|
6 |
X, |
из (5) и (3), |
|
рекурсивный вызов |
7 |
¬Y, |
из (6) и (2), |
|
рекурсивный вызов |
8 |
X, |
из (7) и (1), |
уже был |
возврат к шагу 7 |
7 |
¬Y, |
возврат, |
резольвент нет |
возврат к шагу 6 |
6 |
X, |
возврат, |
|
|
7 |
Z, |
из (6) и (4), |
|
рекурсивный вызов |
8 |
□. |
из (7) и (5) |
|
КОНЕЦ РАБОТЫ (успех) |
