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




Пример программы: родственные отношения - часть 4


        Y  =  энн;

        X  =  боб
        Y  =  пат

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

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

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

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

Ответ:

        X  =  боб

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

  • На Прологе легко определить отношение, подобное отношению родитель, указав n-ку объектов, для которых это отношение выполняется.
  • Пользователь может легко задавать пролог-системе вопросы, касающиеся отношений, определенных в программе.
  • Пролог-программа состоит из предложений. Каждое предложение заканчивается точкой.
  • Аргументы отношения могут быть (среди прочего): конкретными объектами, или константами (такими, как том и энн), или абстрактными объектами, такими, как X и Y. Объекты первого типа называются атомами. Объекты второго типа - переменными.
  • Вопросы к системе состоят из одного или более целевых утверждений (или кратко целей). Последовательность целей, такая как

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

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

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

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



Содержание  Назад  Вперед