Программирование на языке Пролог для искусственного интеллекта | страница 10
>родитель( Y, джим)
и >родитель( X, Y)
Если мы поменяем порядок этих двух требований, то логический смысл останется прежним:
>родитель( 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, джим).
(c) >?- родитель( пам,X), родитель( X, пат).