logo
TurboProlog / Документация / TOM_1

Детальный обзор поиска с возвратом.

Овладев знаниями на предыдущем простом примере, вы можете теперь

взглянуть более подробно на то, как работает механизм поиска с возвратом

в Турбо Прологе. Начнем с того, что рассмотрим программу CH05EX04.PRO в

свете следующего целевого утверждения, состоящего из двух подцелей:

likes(X, wine) , likes(X, books)

При исследовании целевого утверждения Турбо Пролог замечает, какие

подцели согласовались, а какие нет. Процесс поиска может быть представлен

целевым деревом:

/\

/ \

/ \

/ \

likes(X,wine) likes(X,books)

Перед началом исследования целевого утверждения целевое дерево сос-

тоит из двух несогласованных подцелей. На последующих изображениях целе-

вого дерева согласованная подцель в целевом дереве будет отмечаться под-

черкиванием, а соответствующее предложение - записываться под этой под-

целью.

/* Program CH05EX04.PRO */

domains

name, thing = symbol

predicates

likes(name, thing)

reads(name)

is_inquisitive(name)

clauses

likes(john, wine)

likes(lance, skiing)

likes(Z, books) :-

reads(Z), is_inqusitive(Z).

likes(lance, books).

likes(lance, films).

reads(john).

is_inqusitive(john).