русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Правило унификации в логике предикатов.


Дата добавления: 2013-12-23; просмотров: 4785; Нарушение авторских прав


Правило резолюций предполагает нахождение в дизъюнкте литерала, контрарного литералу в другом дизъюнкте. Для дизъюнктов логики высказываний это очень просто. Для дизъюнктов логики предикатов процесс усложняется, так как дизъюнкты могут содержать функции, переменные и константы.

Пример 12. Рассмотрим дизъюнкты:

C1: P(y)Ъ Q(y),

C2: ШP(f(x))Ъ R(x).

Не существует никакого литерала в C1, контрарного какому-либо литералу в C2. Однако, если подставить f(a) вместо y в C1 и a вместо x в C2, то исходные дизъюнкты примут вид:

C1: P(f(a))Ъ Q(f(a)),

C2: ШP(f(a))Ъ R(a).

Так как P(f(a)) контрарен ШP(f(a)), то можно получить резольвенту

C3: Q(f(a))Ъ R(a).

В общем случае, подставив f(x) вместо y в C1, получим

C1’’: P(f(x))Ъ Q(f(x)).

Литерал P(f(x)) в C1’’ контрарен литералу ШP(f(x)) в C2. Следовательно, можно получить резольвенту

C3: Q(f(x))Ъ R(x).

Таким образом, если подставлять подходящие термы вместо переменных в исходные дизъюнкты, можно порождать новые дизъюнкты. Отметим, что дизъюнкт C3 из примера 13 является наиболее общим дизъюнктом в том смысле, что все другие дизъюнкты, порожденные правилом резолюции будут частным случаем данного дизъюнкта.

Определение 29: Подстановка q– это конечное множество вида {t1/v1,…,tn/vn}, где каждая vi – переменная, каждый ti – терм, отличный от vi, все vi различны.

Определение 30: Подстановка q называется унификатором для множества {E1,…, Ek} тогда и только тогда, когда E1q=E2q=… Ekq. Множество {E1,…, Ek} унифицируемо, если для него существует унификатор.

Прежде чем применить правило резолюции в исчислении предикатов переменные в литералах необходимо унифицировать.

Унификация производится при следующих условиях:

1. Если термы константы, то они унифицируемы тогда и только тогда, когда они совпадают.

2. Если в первом дизъюнкте терм переменная, а во втором константа, то они унифицируемы, при этом вместо переменной подставляется константа.



3. Если терм в первом дизъюнкте переменная и во втором дизъюнкте терм тоже переменная, то они унифицируемы.

4. Если в первом дизъюнкте терм переменная, а во втором - употребление функции, то они унифицируемы, при этом вместо переменной подставляется употребление функции.

5. Унифицируются между собой термы, стоящие на одинаковых местах в одинаковых предикатах.

Пример 13. Рассмотрим дизъюнкты:

1. Q(a, b, c) и Q(a, d, l). Дизъюнкты не унифицируемы.

2. Q(a, b, c) и Q(x, y, z). Дизъюнкты унифицируемы. Унификатор - Q(a, b, c).

Определение 31: Унификатор s для множества {E1,…, Ek} будет наиболее общим унификатором тогда и только тогда, когда для каждого унификатора q для этого множества существует такая подстановка l, что q=s ° l, то есть q является композицией подстановок s и l.

Определение 32: Композицией подстановок s и l есть функция s ° l, определяемая следующим образом (s ° l) [t]=s[ l[t]], где t – терм, s и l - подстановки, а l[t] – терм, который получается из t путем применения к нему подстановки l.

Определение 33: Множество рассогласований непустого множества дизъюнктов {E1,…, Ek} получается путем выявления первой (слева) позиции, на которой не для всех дизъюнктов из E стоит один и тот же символ, и выписывания из каждого дизъюнкта терма, который начинается с символа, занимающего данную позицию. Множество термов и есть множество рассогласований в E.

Пример 14. Рассмотрим дизъюнкты:

{P(x, f(y, z)), P(x, a), P(x, g(h(k(x))))}.

Множество рассогласований состоит из термов, которые начинаются с пятой позиции и представляет собой множество {f(x, y), a, g(h(k(x)))}.

Алгоритм унификации для нахождения наиболее общего унификатора.

Пусть E – множество дизъюнктов, D – множество рассогласований, k – номер итерации, sk наиболее общий унификатор на k-ой итерации.

Шаг 1. Присвоим k=0, sk=e (пустой унификатор), Ek=E.

Шаг 2. Если для Ek не существует множества рассогласований Dk, то остановка: sk – наиболее общий унификатор для E. Иначе найдем множество рассогласований Dk.

Шаг 3. Если существуют такие элементы vk и tk в Dk, что vk переменная, не входящая в терм tk, то перейдем к шагу 4. В противном случае остановка: E не унифицируемо.

Шаг 4. Пусть sk+1=sk { tk / vk}, заменим во всех дизъюнктах Ek tk на vk.

Шаг5. K=k+1. Перейти к шагу 2.

Пример 16. Рассмотрим дизъюнкты:

E={P(f(a), g(x)), P(y, y)}.

1. E0=E, k=0, s0=e.

2. D0={f(a),y}, v0=y, t0=f(a).

3. s1=={f(a)/y}, E1={P(f(a), g(x)), P(f(a), f(a))}.

4. D1={g(x),f(a)}.

5. Нет переменной в множестве рассогласований D1.

Следовательно, алгоритм унификации завершается, множество E – не унифицируемо.



<== предыдущая лекция | следующая лекция ==>
Метод резолюций в исчислении высказываний. | Метод резолюций в исчислении предикатов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.