Механизм отката
Если текущая попытка вычислить цель была неудачной, то для нахождения дополнительных фактов и правил, необходимых при вычислении цели, используется механизм отката.
Этот механизм похож на поиск дома, находящегося через дорогу от входа в парк на улице с перекрестками.
При сопоставлении слева направо Прологу требуется способ «запоминания точек», с которых он может продолжить альтернативные попытки найти решение. Прежде чем попробовать один из возможных путей решения подцели, Пролог помещает в программу указатель, в которой может быть выполнен откат при неудаче попытки (откат влево до ближайшего указателя).
Пример:
likes(mary, pears). – база данных
likes(mary, popcorn). – Мери любит кукурузные хлопья
likes(mary, аpples). – мерилюбитяблоки
likes(beth, X):– likes(mary, Х), fruit(X), Color(X, red).
Бет любит нечто – если Мери любит это нечто, если это нечто – фрукт, и если цвет этого нечто – красный
likes(beth, X):– likes(mary, Х), Х=popcorn.
Любит Бет то же что и Мэри, и если это кукурузные хлопья
fruit(pears ). – персики-фрукт
fruit(аpples). – яблоки-фрукт
color(pears, yellow). – цвет персиков желтый
color(oranges, orange). – апельсин оранжевый
color(аpples, red). – цвет яблок красный
color(аpples, yellow). – цвет яблок желтый
Цель: что любит Бет?
Likes(beth, X) Х=аpples, Х=popcorn
Совпадет, тогда проверяем следующую цель likes (mary, Х)
Х=pears (персик)
fruit(pears)
color(pears, red) – нарушениеит.д.