Отсечение

Процессом возврата можно управлять. Для этого предназначен системный предикат отсечение cut, который позволяет сокращать пространство поиска решений при возврате. Синтаксически использование отсечения в правиле выглядит как вхождение целевого утверждения с предикатом cut, не имеющим аргументов.Допускается вместо предиката cut использовать восклицательный знак: ”!” Как целевое утверждение этот предикат ”!” всегда согласуется с базой знаний и не может быть вновь согласован.

При прямом ходе доказательства некоторой цели отсечение выступает как истинное условие в теле правила и не оказывает никакого воздействия на процесс выполнения. Его назначение реализуется только при инициировании процесса возврата вследствие ложности одного из предикатов, расположенных после (справа или ниже) отсечения в теле правила. В этом случае, т.е. при прохождении отсечения в обратном направлении (слева направо), оно как бы объявляет, что цель, вызвавшая выполнение отсечения (родительская цель), не имеет других вариантов согласования, а потому процесс возврата осуществляется к предшествующей (расположенной левее от родительской) цели.

Действие отсечения сводится к следующим моментам:

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

-отсечение отбрасывает все альтернативные решения конъюнкции целей, стоящих перед отсечением, приводит не более чем к одному решению;

-отсечение не влияет на цели, расположенные правее его. В случае возврата они могут порождать более одного решения.

Отсечение при возврате сокращает пространство поиска вариантов доказательства.

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

Пример. Вычисление факториала с устранением бесконечных циклов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: