Программирование на языке Турбо-Пролог 2.0. Николаев В.Г - 13 стр.

UptoLike

- 13 -
2. Программа может занимать меньше места в памяти ЭВМ, т. к.
отсутствие необходимости запоминать точки возврата для следующего
анализа позволяет более экономично использовать память.
+----------------------------------------+
¦ Добавляя отсечение вы повышаете ¦
¦ эффективность своих Пролог-программ. ¦
+----------------------------------------+
Отсечение позволяет пользователю указать системе - какие из
сделанных ранее выборов не следует пересматривать при бектрекин-
ге. Например, пусть дано правило в обобщенной форме:
Р :- р1, р2, р3, !, р4, р5, р6.
Турбо-Пролог будет пытаться согласовывать подцели р1,р2,р3,
пока истинность р3 не вызовет переход вправо от '!' (для анализа
подцели р4). В этот момент значения всех маркеров-указателей, ко-
торые использовала система при согласовании р1,р2,р3 "заморажива-
ются" и более изменены быть не могут. Теперь при согласовании
следующих подцелей Турбо-Пролог может осуществлять бектрекинг
только среди р4,р5,р6. Любая попытка перехода влево от '!' вызо-
вет прекращение процесса согласования всего правила и значение
конъюнкции Р объявляется ложным.
Замечание: Пусть Р - правило в котором встречается предикат
отсечения. Нужно помнить, что как только правило Р было выбрано в
качестве целевого утверждения, выбор Р и всех решений принятых
после него становится фиксированным. Это значит ельно сокращает
перебор при поиске решений.
Отсечение используют, как правило, в трех основных случаях.
а). Подтверждение правильности выбора правила.
Этот случай связан с ситуацией, когда программист хочет со-
общить системе, что нужное правило для данного целевого
утверждения найдено и его не следует менять. По сути - это прев-
ращение предиката в детерминированное логическое выражение.
Пример: G:-G1,G2,G3.
G1.
G2:-!.
Если предикат G3 не согласуется, то при выполнении бектре-
кинга, будет пересогласовываться с базой данных только подцель
G1, т.к. подцель G2-детерминирована.
Недетерминироваными являются предикаты, которые могут вызы-
ваться на пересогласование с базой данных при бектрекинге (возв-