Составители:
Рубрика:
33
color(apples,red).
Еще раз все утверждения для color проверяются по очереди для со-
поставления с новой подцелью. Сопоставление найдено в последнем ут-
верждении color(apples, red). Теперь все три подцели правила доказаны. Пе-
ременная X имеет значение apples. Следовательно, сейчас голова правила
имеет вид: likes(beth, apples). Эта голова
правила сопоставима с утверждени-
ем цели
likes(beth, X).
так что цель успешна, и Турбо-Пролог выдает сообщение X=apples. Посколь-
ку внешняя цель была использована с программой, являющейся "черным
ящиком" для Турбо-Пролога, то он продолжает поиск других решений для
цели. Цель была успешной, так что переменная X освобождена
и может быть
снова означена подпрограммами внутренней унификации.
Поиск решений снова начинается с указателя отката, который теперь
является последним. Это указатель точки 1. Указатель точки 2 был удален,
так как в конце пути было найдено решение.
Теперь внутренние унификационные подпрограммы начинают поиск с
правила
likes(beth, X) :-
likes(mary, X),
X=popcorn.
Снова первая подцель есть likes(mary, X), и внутренние унификаци-
онные подпрограммы осуществляют поиск утверждений likes для сопос-
тавления. Утверждение
likes(mary, pears).
сопоставимо с подцелью, так что X получает значение pears. Указатель для
отката устанавливается на следующее утверждение likes(mary, popcorn).
Вычислив текущую подцель и означив
X объектом pears, Турбо-
Пролог пытается вычислить оставшуюся подцель, которая есть
X=popcorn.
Как было объяснено ранее в этой главе, оператор = работает как опера-
тор сравнения, поскольку значения обоих термов известны: переменная X
имеет значение pears, а popcorn есть константа. Операция сравнения будет
неуспешной:
pears=popcorn.
Термы не сопоставимы, поэтому
подцель неуспешна, и X снова осво-
бождена.
Теперь внутренние унификационные подпрограммы выполняют от-
кат к последнему указателю, с тем, чтобы попробовать альтернативный путь
решения. Последний указатель отката установлен на утверждение
likes(mary, popcorn).
Ранее X была освобождена, поэтому сейчас она получает значение
popcorn. Установив указатель отката на следующее утверждение
likes(mary,apples), внутренние унификационные подпрограммы снова пыта-
ются вычислить подцель X=popcorn. Внутренние значения подтермов есть
color(apples,red).
Еще раз все утверждения для color проверяются по очереди для со-
поставления с новой подцелью. Сопоставление найдено в последнем ут-
верждении color(apples, red). Теперь все три подцели правила доказаны. Пе-
ременная X имеет значение apples. Следовательно, сейчас голова правила
имеет вид: likes(beth, apples). Эта голова правила сопоставима с утверждени-
ем цели
likes(beth, X).
так что цель успешна, и Турбо-Пролог выдает сообщение X=apples. Посколь-
ку внешняя цель была использована с программой, являющейся "черным
ящиком" для Турбо-Пролога, то он продолжает поиск других решений для
цели. Цель была успешной, так что переменная X освобождена и может быть
снова означена подпрограммами внутренней унификации.
Поиск решений снова начинается с указателя отката, который теперь
является последним. Это указатель точки 1. Указатель точки 2 был удален,
так как в конце пути было найдено решение.
Теперь внутренние унификационные подпрограммы начинают поиск с
правила
likes(beth, X) :-
likes(mary, X),
X=popcorn.
Снова первая подцель есть likes(mary, X), и внутренние унификаци-
онные подпрограммы осуществляют поиск утверждений likes для сопос-
тавления. Утверждение
likes(mary, pears).
сопоставимо с подцелью, так что X получает значение pears. Указатель для
отката устанавливается на следующее утверждение likes(mary, popcorn).
Вычислив текущую подцель и означив X объектом pears, Турбо-
Пролог пытается вычислить оставшуюся подцель, которая есть
X=popcorn.
Как было объяснено ранее в этой главе, оператор = работает как опера-
тор сравнения, поскольку значения обоих термов известны: переменная X
имеет значение pears, а popcorn есть константа. Операция сравнения будет
неуспешной:
pears=popcorn.
Термы не сопоставимы, поэтому подцель неуспешна, и X снова осво-
бождена.
Теперь внутренние унификационные подпрограммы выполняют от-
кат к последнему указателю, с тем, чтобы попробовать альтернативный путь
решения. Последний указатель отката установлен на утверждение
likes(mary, popcorn).
Ранее X была освобождена, поэтому сейчас она получает значение
popcorn. Установив указатель отката на следующее утверждение
likes(mary,apples), внутренние унификационные подпрограммы снова пыта-
ются вычислить подцель X=popcorn. Внутренние значения подтермов есть
33
Страницы
- « первая
- ‹ предыдущая
- …
- 31
- 32
- 33
- 34
- 35
- …
- следующая ›
- последняя »
