Cut (логическое программирование) - Википедия - Cut (logic programming)

В резать, в Пролог, это Цель, записывается как!, что всегда успешно, но не может быть отменено. Лучше всего использовать для предотвращения нежелательных возврат, в том числе поиск дополнительных решений с помощью Prolog и избежание ненужных вычислений.

Разрез следует использовать экономно. В то время как сокращения могут быть вставлены в коды, содержащие ошибки, если в тесте нет необходимости, потому что сокращение гарантирует его истинность, рекомендуется указать это в комментарии в соответствующем месте.[1]

Некоторые программисты называют разрез спорным средством управления. [2] потому что он был добавлен только из соображений эффективности и не Оговорка о роге.

Типы

Зеленый срез

Использование стрижки, которая только повышает эффективность, называется зеленой стрижкой. Зеленые сокращения используются для повышения эффективности программ без изменения вывода программы. Например:

 азартная игра(Икс) :- получить деньги(Икс),!. азартная игра(Икс) :- gotcredit(Икс), \+ получить деньги(Икс).

Это называется зеленый оператор резки. ! говорит переводчику, чтобы он прекратил искать альтернативы; однако, если gotmoney (X) при неудаче он проверит второе правило. Хотя проверка на gotmoney (X) во втором правиле может показаться избыточным, поскольку внешний вид Пролога зависит от gotmoney (X) не удалось раньше, иначе второе правило не было бы оценено в первую очередь. Добавление + gotmoney (X) гарантирует, что второе правило будет работать всегда, даже если первое правило было случайно удалено, изменено или перемещено после второго.

Красный разрез

Разрез, который не зеленый разрез называется красный резать, Например:

 азартная игра(Икс) :- получить деньги(Икс),!. азартная игра(Икс) :- gotcredit(Икс).

Правильное размещение оператора резки и порядок правил необходимы для определения их логического значения. Если по какой-либо причине первое правило удалено (например, вырезать и вставить авария) или перемещен после второго, второе правило будет нарушено, т.е. не будет гарантировать выполнение правила + gotmoney (X).

Рекомендации

  1. ^ Дайкхофф, Рой (1994-05-20). Расширения логического программирования: 4-й международный семинар, ELP '93, Сент-Эндрюс, Великобритания, 29 марта - 1 апреля 1993 г. Протоколы. Springer Science & Business Media. ISBN  978-3-540-58025-6.
  2. ^ Основы логического программирования, Спрингер (2012).