Листинг 3.4.Унификация и поиск с возвратом

predicates

likes(symbol, symbol)

tastes(symbol, symbol)

food(symbol)

clauses

likes(bill, X):-

food(X),

tastes(X, good).

tastes(pizza, good).

tastes(Brussels_sprouts, bad).

food(Brussels_sprouts).

food(pizza).

Поставим цель goal:likes(bill, What).

Таблица 3.1. Ручная трассировка программы

Стек активных целей Предложения программы Означивания переменных
? likes(bill,What) likes(bill,X):- food(X), tastes(X,good). likes(bill,What):- food(What), tastes(What,good) X=What X и What становятся одной и той же неконкре-тизированной переменной
? food(What) *food(brussels_sprouts). food(pizza). What= brussels_ sprouts
? tastes(brussel_sprouts,good) tastes(pizza,good). tastes(brus_sp,bad). Отказ. Запускаем механизм возврата и ищем другое ре- шение W –освобождается,
? food(What) food(pizza). What=pizza
? tastes(pizza,good) tastes(pizza,good). Это факт. Согласование получено.Успех What=pizza 1Solution

Рис.3.2.Иллюстрация прохождения процесса унификации и конкретизации переменных


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: