Программирование на языке Пролог для искусственного интеллекта

       

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



Рисунок 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  -  родитель Пат.

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



Содержание раздела