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

Прерывание поиска с возвратом: отсечение.

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

зуется для прерывания поиска с возвратом; отсечение обозначается воскли-

цательным знаком (!). Действует отсечение просто: через отсечение невоз-

можно совершить поиск с возвратом.

Отсечение помещается в программу таким же образом, как и подцель в

теле правила. Когда процесс проходит через отсечение, немедленно удовлет-

воряется обращение к cut и выполняется обращение к очередной подцели (ес-

ли таковая имеется). Однажды пройдя через отсечение, уже невозможно про-

извести поиск с возвратом в подцелях, расположенным в обрабатываемом

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

предикатам, определяющим обрабатывающей предикат (предикат, содержащий

отсечение).

Существуют два основных случая применения отсечения:

1. Если вы заранее знаете, что определенные посылки никогда не при-

ведут к осмысленным решениям, то поиск решений в этом случае будет

лишней тратой времени и памяти. Если в такой ситуации вы примените

отсечение, то программа станет быстрее и экономичнее. Такой прием

называют "зеленым" отсечением.

2. Когда отсечения требует сама логика программы для исключения из

рассмотрения альтернативных подцелей. Это называют "красным" отсече-

нием.