Программирование на языке Пролог для искусственного интеллекта | страница 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, пат).