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


         

Y еще не приписано никакого



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

               предок( Y, Z).

Как и раньше, переменным X и Z приписываются значения:

       X  =  том,   Z   =  пат

В этот момент переменной Y еще не приписано никакого значения. Верхняя цель предок( том, пат) заменяется двумя целями:

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

        предок( Y, пат)


Этот шаг вычислений показан на рис. 1.10, который представляет развитие ситуации, изображенной на рис. 1.9.



Рис. 1. 10.  Продолжение процесса вычислений, показанного на рис. 1.9.

Имея теперь перед собой две

цели, система пытается достичь их в том порядке, каком они записаны. Достичь первой из них легко, поскольку она соответствует факту из программы. Процесс установления соответствия - сопоставление (унификация) вызывает приписывание переменной Y значения боб. Тем самым достигается первая цель, а оставшаяся превращается в

       предок( боб, пат)

Для достижения этой цели вновь применяется правило пр1. Заметим, - что это (второе) применение правила никак не связано с его первым применением. Поэтому система использует новое множество переменных правила всякий раз, как оно применяется. Чтобы указать это, мы переименуем переменные правила пр1 для нового его применения следующим образом:

       предок( X ', Z ') :-

               родитель( X ', Z ').


Голова этого правила должна соответствовать нашей текущей цели предок( боб, пат). Поэтому

       X '  =  боб,   Z '   =  пат

Текущая цель заменяется на

       родитель( боб, пат)

Такая цель немедленно достигается, поскольку встречается в программе в качестве факта.

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