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



ПРОГРАММА

>большой( медведь).     % Предложение 1

>большой( слон).        % Предложение 2

>маленький( кот).       % Предложение 3

>коричневый ( медведь). % Предложение 4

>черный ( кот).         % Предложение 5

>серый( слон).          % Предложение 6


>темный( Z) :-          % Предложение 7:

> черный( Z).           % любой черный

>                       % объект является темным

>темный( Z) :-          % Предложение 8:

> коричневый( Z).       % Любой коричневый

>                       % объект является темным

ВОПРОС

>?- темный( X), большой( X) % Кто одновременно темный

>                           % и большой?

ШАГИ  ВЫЧИСЛЕНИЯ

(1) Исходный список целевых утверждений:

>темный( X),  большой( X).

(2) Просмотр всей программы от начала к концу и поиск предложения, у которого голова сопоставима с первым целевым утверждением

>темный( X).

Найдена формула 7:

>темный( Z) :- черный( Z).

Замена первого целевого утверждения конкретизированным телом предложения 7 — порождение нового списка целевых утверждений.

>черный( X),  большой( X)

(3) Просмотр программы для нахождения предложения, сопоставимого с >черный( X). Найдено предложение 5: >черный ( кот). У этого предложения нет тела, поэтому список целей при соответствующей конкретизации сокращается до

>большой( кот)

(4) Просмотр программы в поисках цели >большой( кот). Ни одно предложение не найдено. Поэтому происходит возврат к шагу (3) и отмена конкретизации >X = кот. Список целей теперь снова

>черный( X),  большой( X)

Продолжение просмотра программы ниже предложения 5. Ни одно предложение не найдено. Поэтому возврат к шагу (2) и продолжение просмотра ниже предложения 7. Найдено предложение (8):

>темный( Z) :- коричневый( Z).

Замена первой цели в списке на >коричневый( X), что дает

>коричневый( X), большой( X)

(5) Просмотр программы для обнаружения предложения, сопоставимого >коричневый( X). Найдено предложение >коричневый( медведь). У этого предложения нет тела, поэтому список целей уменьшается до

>большой( медведь)

(6) Просмотр программы и обнаружение предложения >большой( медведь). У него нет тела, поэтому список целей становится пустым. Это указывает на успешное завершение, а соответствующая конкретизация переменных такова:

Рис. 2.10.  Пример, иллюстрирующий процедурную семантику Пролога: шаги вычислений, выполняемых процедурой >вычислить.


В главе 1 в разд. "Как пролог-система отвечает на вопросы" мы уже фактически рассмотрели, что делает процедура >вычислить. В оставшейся части данного раздела приводится несколько более формальное и систематическое описание этого процесса, которое можно пропустить без серьезного ущерба для понимания остального материала книги.