Вход/Регистрация
Prolog
вернуться

Неизвестно

Шрифт:

(1) Кто родитель Джима? Предположим, что это некоторый Y.

(2) Кто родитель Y? Предположим, что это некоторый X.

Такой составной вопрос на Прологе записывается в виде последовательности двух простых вопросов:

?- родитель( Y, джим), родитель( X, Y).

Ответ будет:

X = боб

Y = пат

Рис. 1. 2. Отношение родительродителя, выраженное через композицию двух отношений родитель.

Наш составной вопрос можно интерпретировать и так: "Найти X и Y, удовлетворяющие следующим двум требованиям":

родитель ( Y, джим) и родитель( X, У)

Если мы поменяем порядок этих двух требований, то логический смысл останется прежним:

родитель ( X, Y) и родитель ( Y, джим)

Этот вопрос можно задать нашей пролог-системе и в такой форме:

?- родитель( X, Y), родитель( Y, джим).

При этом результат будет тем же. Таким же образом можно спросить: "Кто внуки Тома?"

?- родитель( том, X), родитель( X, Y).

Система ответит так:

X = боб

Y = энн;

X = боб

Y = пат

Следующим вопросом мог бы быть такой: "Есть ли у Энн и Пат общий родитель?" Его тоже можно выразить в два этапа:

(1) Какой X является родителем Энн?

(2) Является ли (тот же) X родителем Пат?

Соответствующий запрос к пролог-системе будет тогда выглядеть так:

?- родитель( X, энн), родитель( X, пат).

Ответ:

X = боб

Наша программа-пример помогла проиллюстрировать некоторые важные моменты:

На Прологе легко определить отношение, подобное отношению родитель, указав n– ку объектов, для которых это отношение выполняется.

Пользователь может легко задавать пролог-системе вопросы, касающиеся отношений, определенных в программе.

Пролог-программа состоит из предложений. Каждое предложение заканчивается точкой.

Аргументы отношения могут быть (среди прочего): конкретными объектами, или константами (такими, как том и энн), или

абстрактными объектами, такими, как

X

и

Y

. Объекты первого типа называются

атомами

. Объекты второго типа -

переменными

.

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

родитель( X, энн), родитель( X, пат)

означает конъюнкцию этих целевых утверждений:

X - родитель Энн и

X - родитель Пат.

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

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

Если на вопрос существует несколько ответов, пролог-система найдет столько из них, сколько пожелает пользователь.

Упражнения

1. 1. Считая, что отношение родитель определено так же, как и раньше в данном разделе (см. рис. 1.1), найдите, какими будут ответы пролог-системы на следующие вопросы:

(a) ? - родитель ( джим, X).

(b) ? - родитель( X, джим).

  • Читать дальше
  • 1
  • ...
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: