Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Правило резолюций


Автор: Cheloveck 30.10.2010, 17:08
Пытаюсь разобраться с http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D1%80%D0%B5%D0%B7%D0%BE%D0%BB%D1%8E%D1%86%D0%B8%D0%B9. В принципе, всё понятно, кроме одного. Что делают с кванторами.
Вот стандартный пример:
Цитата

Человек - это живое существо;
Все живые существа смертны;
Сократ - человек.

Доказать: Сократ смертен.

Не трудно записать это в виде формул логики предикатов.
Код

∀x(Человек(x) ⊃ ЖивоеСущество(x)).
∀y(ЖивоеСущество(y) ⊃ Смертно(y)).


И цель
Код

Человек(Сократ). 

доказывает, что Сократ смертен.

Теперь имеем несколько сайтов с подобными задачами (http://www.intuit.ru/department/human/isrob/3/isrob_3.html и http://www.aiportal.ru/articles/knowledge-models/method-resolution.html). (Примеры на обоих внизу страницы). Так вот, вопрос заключается в том, каким образом осуществляется переход к дизъюнктивной форме? На первом сайте видим так
Цитата

2. Человек, читающий книги, - неглуп
Предикат: ∀Y(read(Y) ⊃ smart(Y))
Дизъюнктивная форма: ¬read(Y) ∧ smart(Y)

А на втором:
Цитата

Предикат: ∀x(Человек(x) ⊃ Живое_Существо(x)).
Дизъюнктивная форма: ¬(Человек(x) ∨ Живое_Существо(x))


Может кто-нибудь объяснить, каким волшебным образом получают дизъюнктивную форму из предикатной, и почему в двух примерах они на столько разные? Подскажите хотя бы ресурс, на котором об этом можно почитать. А то, везде есть примеры, а как это сделано - не написано.

Автор: Cheloveck 30.10.2010, 21:05
up

Автор: Cheloveck 30.10.2010, 21:24
Нашёл ещё один вариант, который, как мне кажется, верный
http://books.google.ru/books?id=jaoDX9-e_McC&lpg=PA529&ots=lFjVE3jDhg&dq=%22%D0%BF%D1%80%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BD%D0%B0%D1%8F%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%22%20%22%D0%B4%D0%B8%D0%B7%D1%8A%D1%8E%D0%BD%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F%20%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%22&pg=PA529#v=onepage&q=%22%D0%BF%D1%80%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BD%D0%B0%D1%8F%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%22%20%22%D0%B4%D0%B8%D0%B7%D1%8A%D1%8E%D0%BD%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F%20%20%D1%84%D0%BE%D1%80%D0%BC%D0%B0%22&f=false

Автор: Cheloveck 30.10.2010, 23:56
Всё, я разобрался. В той книге, ссылка на которую я приводил в прошлом посте, написано, что кванторы всеобщности при построении дизъюнктивной формы просто не учитываются (а кванторы существования убираются сколимизацией). Приведу полное решение классической задачи для тех, кто, может быть, столкнётся с подобной проблемой.

Цитата

Атомарные предикаты:
P(x): x является человеком;
Q(x): x является живым существом;
R(x): x смертен.

Общезначимые утверждения (предикатная форма):
∀x(P(x) ⊃ Q(x));
∀y(Q(y) ⊃ R(y));
P(Сократ).

Общезначимые утверждения (дизъюнктивная форма):
¬P(x) ∨ Q(x);
¬Q(y) ∨ R(y);
P(Сократ).

Цель:
R(Сократ).

Конъюнкция всех дизъюнктов и отрицания цели:
(¬P(x) ∨ Q(x)) ∧ (¬Q(y) ∨ R(y)) ∧ P(Сократ) ∧ ¬R(Сократ).

Применение правила резолюций:
+-----------------+-----------------+
| Первый дизъюнкт | Второй дизъюнкт |
+-----------------+-----------------+
| ¬P(x) ∨ Q(x)    | ¬Q(y) ∨ R(y)    |
+-----------------+-----------------+
| Резольвента: ¬P(y) ∨ R(y)         |
+-----------------+-----------------+
| ¬P(y) ∨ R(y)    | P(Сократ)       |
+-----------------+-----------------+
| Резольвента: R(Сократ)            |
+-----------------+-----------------+
| R(Сократ)       | ¬R(Сократ)      |
+-----------------+-----------------+
| Пустая резольвента.               |
+-----------------------------------+

Из чего следует, что отрицание предположения не верно, а значит само предположение истина.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)