Главная

ПРОЕКТ "ЧЕЛОВЕК. ЗЕМЛЯ. ВСЕЛЕННАЯ"

Инструменты пользователя

Инструменты сайта


project:prolog:predikaty_v_prologe

Предикаты в Прологе (Prolog)

Программы на Прологе (Prolog) содержат объявления логических взаимосвязей, необходимых для решения задачи.

Рассмотрим предложение:

«Мэри любит яблоки».

То есть имеется факт, утверждающий, что Мэри любит яблоки. Факты и правила являются утверждениями, которые образуют данные программы на Прологе (Prolog).

Предикаты в Прологе (Prolog) определяют отношения между объектами, то есть используются для представления как фактов, так и правил.

Добавим еще одно предложение:

«Бет любит то же самое, что и Мэри».

Используя эти два предложения, можете придти к заключению, что Бет тоже любит яблоки.

Оба утверждения можно записать так:

«Мэри любит яблоки»
«Бет любит нечто, если Мэри любит (это же) нечто».

Логика предикатов рассматривает отношения между утверждениями и объектами.

Отношение, соответствующее первому предложению будет иметь вид:

Объект Отношение Объект
Мэри любит яблоки

Можно поместить имя отношения перед объектами:

Отношение Объект Объект
любит Мэри яблоки

В предложении «Бет любит нечто, если Мэри любит (это же) нечто», и заменим слово «нечто» на местоимение «это»:

«Бет любит это, если Мэри любит это».

Это предложение выражает два отношения «любит». Они соединены условием, выраженным словом «если». То есть это предложение является условной предпосылкой со связкой «если», указывающей на условное отношение. Условие «если» требует проверки предпосылки для вывода нового факта.

Таким образом, имеются следующие отношения:

Отношение Объект Объект Условие
любит Мэри яблоки
любит Бет это если
любит Мэри это

Местоимение «это» может иметь переменное значение, изменяющиеся от предложения к предложению. Если неизвестно, что обозначает слово «это», то нельзя вывести новых фактов. Если значение слова «это» известно, то тогда можно вывести новые факты, связанные условным отношением с другими уже известными фактами.

Поэтому можно использовать предыдущую предпосылку «Мэри любит яблоки». Местоимение «это» имеет определённое значение - «яблоки».

Поэтому предложения могут быть переформулированы следующим образом:

Отношение(предикат) Объект Объект Условие
любит Мэри яблоки
любит Бет это (яблоки) если
любит Мэри это (яблоки)

Теперь может быть получен новый факт:

"Бет любит яблоки".

Отношение «любит» связывает объекты «Мэри» и «яблоки» в конструкцию, обладающую определенным смыслом.

«Любит» является предикатом (термом или символом предиката), а «Мэри» и «яблоки» - объектами предиката. Отношение между Мэри или Бет и яблоками называется отношением связывания. Объектами в этом отношении являются Мэри, Бет и яблоки.

Перечень объектов предиката в Прологе (Prolog) заключается в круглые скобки (), а в качестве разделителя используется запятая.

Терм предиката в Прологе (Prolog) представляет собой строку символов, первым из которых является строчная буква.

Пролог (Prolog) также требует указания типов объектов для каждого предиката программы. Некоторые из этих объектов могут быть, к примеру, числовыми данными, другие же - символьными строками. В разделе predicates, поэтому, Вы должны задать тип объектов каждого из предикатов.

Предикаты в Прологе (Prolog) описываются в разделе predicates. В этом же разделе вы должны задать тип объектов каждого из предикатов.

  predicates
    likes(symbol,symbol)

Это описание означает, что оба объекта предиката likes относятся к одному из базовых типов symbol.

Пример предикатов:

предикат(объект1,объект2).
любит (мэри,яблоки).

Пример программы:

  predicates
   likes(symbol,symbol)
  clauses
   likes(mary, apples).
   likes(beth, X) if likes(mary, X).

Для запуска программы нажмите Alt+R (Turbo Prolog). В ответ на запрос системы Цель, необходимо ввести цель – likes(beth,apples). Система даст ответ «Да».

Пример имён предикатов в Прологе (Prolog):

go – имя цели программы.
do_menu - имя правила, создающего меню.

«Голые предикаты» - предикаты, у которых отсутствуют объекты.

Поиск соответствия предикатов

Программы на Прологе содержат несколько различных утверждений, например:

likes(mary,apples).
runs(john,6.3).
drinks(beth,tea,coke).

Допустим в вопросе содержится утверждение watches(john,cats). Пролог сначала пытается найти соответствие с предикатом watches, все остальные предикаты при этом игнорируются.

Затем ищутся утверждения watches, которые имеют такое же общее число объектов. В утверждении с watches объектов два: john и cats. Количество объектов в предикате вопроса и утверждениях программы должно совпасть, иначе процесс сопоставления прекращается.

Если утверждения с таким же, как в вопросе, предикатом и таким же числом объектов найдены, то Пролог проверяет соответствие типов объектов. В случае с watches(john,cats) как john, так и cats принадлежат типу symbol. Если в типах объектов обнаруживается несоответствие, то попытка сопоставления считается неуспешной.

Предикаты и утверждения разных арностей

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

Термин арность в Прологе (Prolog) обозначает число объектов утверждения. Так утверждение likes(mary,apples) имеет арность 2.

Предикат Утверждения Арность
go_home go_home 0
female(person) female(betty)
female(katty)
1
father(person,person) father(john,kathy)
father(john,tom)
2

В Прологе (Prolog) предикаты без объектов, то есть нулевой арности, называют ещё «голыми».

Предикаты с нулевой арностью в Прологе (Prolog) часто используются для построения правил, как, например:

go_home if (condition(sickness) and transportation(bus))

Предикаты арности 1 в Прологе (Prolog) полезны при сортировке объектов программы по доменам. В приведенном в таблице примере предикат female указывает, что имя betty относится к домену женских имен.

Предикаты арности 2 в Прологе (Prolog) используются для установления отношения между двумя объектами. Например, предикат:

father(person,person)

и соответствующее ему утверждение:

father(john,kathy)

Предикаты арностей выше 2 в Прологе (Prolog) пригодны для установления связи нескольких объектов по какому-либо признаку. В утверждении:

europe(“France”,”Germany”,”Spain”,”Italy”)

все используемые значения: France, Germany, Spain и Italy принадлежат домену country. Общим для них является то, что все они обозначают европейские страны.

Примеры программ на Прологе

  • Демонстрация работы с предикатами нулевой арности:

!!Рекомендуем: Семейная Энциклопедия ЗдоровьяОбучениеКонсультация аналитикаОглавлениеГлавная сайта

Обсуждение

Ваш комментарий:
W D E X​ A
 
project/prolog/predikaty_v_prologe.txt · Последние изменения: 2017/06/01 19:14 (внешнее изменение)

Вы можете оставить свои комментарии в разделе "Обсуждение".
Рекомендуем оформить подписку на новости данного раздела. Для этого нажмите на кнопку "Подписаться", расположенную справа снизу каждой страницы (знак конверта).


www.work-zilla.com

Индекс цитирования