Асимметрия

Отношение, не обладающее симметрией, называется асимметричным. Например, отношение между отцом и сыном является асимметричным. Некоторые отношения, скажем, отношение любви одного лица к другому, не являются обязательно симметричными или обязательно несимметричными. По умолчанию интерпретатор считает, что все отношения асимметричны, как это, к примеру, имело место для приведенного ранее отношения "брат_или_сестра ".

Рефлексивность и нерефлексивность

Отношение, которое соблюдается, когда оба аргумента одинаковы, называется рефлексивным. Отношения "равно" и "больше или равно" являются примерами рефлексивных отношений. Отношение, которое нарушается, когда оба аргумента одинаковы, называется нерефлексивным. "Выше" служит примером нерефлексивного отношения. По умолчанию интерпретатор считает, что предикаты рефлексивны. Рассмотрим правило "конкурент", определенное ранее:

конкурент (K1, K2): -

путешествие (K1, ГородА, ГородБ, -).

путешествие (K2, ГородА, ГородБ, _).

Здесь отсутствует условие, указывающее, что K1 должно отличаться от K2, поэтому по умолчанию принимается, что правило "конкурент" рефлексивно. Тем самым при помощи правила "конкурент" можно доказать, что некоторая транспортная компания является конкурентом сама себе:

|? - конкурент (амтрак, амтрак).

да

Этот результат явно не имеет смысла, поэтому целесообразно переписать правило "конкурент" так, чтобы оно стало нерефлексивным (см. разд. 4. 1).

Таблица 1.1

Общеупотребительные отношения

бинарное отношение

Свойства

Ограничение, обеспечивающее целостность

симметрия

рефлексивность

транзитивность

меньше

асимметрично

нерефлексивно

транзитивно

многие-к-многим

равно

симметрично

рефлексивно

транзитивно

многие-к-многим

можно позвонить

симметрично

?

?

многие-к-многим

брат или сестра

симметрично

нерефлексивно

транзитивно

многие-к-многим

отец

асимметрично

нерефлексивно

нетранзитивно

один-к-многим

предок

асимметрично

нерефлексивно

транзитивно

многие-к-многим

жена

асимметрично

нерефлексивно

нетранзитивно

один-к-одному

учитель

?

нерефлексивно

нетранзитивно

многие-к-многим

мает

симметрично

нерефлексивно

нетранзитивно

многие-к-многим

Транзитивность

Отношение между аргументами называется транзитивным, если оно сохраняется при переходе от прямого отношения к косвенному. 'Равно" служит примером транзитивного отношения: если А равно В, а В равно С, то и А должно быть равно С. "Выше" - еще один пример транзитивного отношения. В языке Пролог транзитивные отношения обычно реализуются рекурсивными процедурами, примерами которых могут служить процедуры "предок" и "можно_путешествовать4".

Анализ общеупотребительных отношений

В табл. 1.1 представлены свойства и ограничения для некоторых общеупотребительных отношений.

Библиографические заметки

К настоящему времени создано много синтаксических вариаций языка Пролог. Помимо семейства версий Пролога, в которых авторы придерживаются синтаксиса версии этого языка для ЭВМ DEC-10, существуют также LM-Пролог [48], Ватерлоо Пролог [90], Пролог/KR [77], IC-Пролог [19], микро-Пролог [20], IBM Пролог и т. д. Каждая версия языка имеет свой вариант синтаксиса. В настоящее время, однако, широко используются только два варианта синтаксиса языка Пролог: DEC-10 Пролог и микро-Пролог. Большинство пользователей работает с версиями Пролога, в которых употребляется DEC-10-синтаксис. Решение об использовании в данной книге синтаксиса DEC-10 Пролога основывалось именно на этом чисто практическом соображении.

После освоения основных концепций языка Пролог не представит большого труда перевести программу с одной версии синтаксиса Пролога на другую. Можно даже составить Пролог-программу, которая будет выполнять такой перевод автоматически. Пример такой программы, выполняющей преобразование синтаксиса DEC-10-версии в синтаксис микро-Пролога, приведен в гл. 5.

Те читатели, которые ознакомились с разд. 0. 6, могут посчитать, что при обсуждении квантификации переменных в запросах языка Пролог (см. разд. 1. 3) была допущена ошибка, В разд. 1. 3 утверждается, что переменная Кто в запросе

|? - знает (мэри, Кто).

квантифицируется экзистенциально. В разд. 0. 6 же было сказано, что все переменные во фразах Хорна неявным образом квантифицируются универсально. Запрос Пролога, подобный приведенному выше, можно рассматривать как фразу Хорна, состоящую из одного условия без заключения. Вспомните, что, в соответствии с материалом разд. 0. 6 условиями во фразах Хорна служат негативные атомарные формулы. В примере резолюции нисходящим методом (см. разд. 0. 6) фраза (14) (Т (а)) также является условием без заключения. Тогда запрос Пролога, приведенный выше, можно записать во фразовой форме следующим образом:

~знает (мэри, X)

или, делая квантификацию Х явной,

X ~знает (мэри, Х) (1)

Это означает: для любого Х Мэри не знает Х или Мэри никого не знает. При отрицании квантификация переменной всегда изменяется на противоположную, поэтому формула (1) логически эквивалентна формуле

~ (ЭХ знает (мэри, X)) (2)

Смысл этой формулы: не является истиной то, что существует такой человек X, которого знает Мэри, или Мэри никого не знает. Обе приведенные формулы отражают логический смысл запроса Пролога. Запрос лучше воспринимается в виде формулы (2), в которой переменная квантифицирована экзистенциально.

Типы отношений и ограничения, обеспечивающие целостность отношений, подробно рассматриваются в работе [88, с. 112-124].

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие