Jump to content

Cut (логическое программирование)

разрез В Прологе это цель , записанная как !, который всегда завершается успешно, но не может быть возвращен. Сокращения могут предотвратить нежелательный возврат , который может добавить к запросу нежелательные решения и/или дополнительные затраты пространства/времени.

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

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

Зеленый срез

[ редактировать ]

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

 gamble(X) :- gotmoney(X),!.
 gamble(X) :- gotcredit(X), \+ gotmoney(X).

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

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

[ редактировать ]

Отрезок, не являющийся зеленым отрубом, называется красный разрез , например:

 gamble(X) :- gotmoney(X),!.
 gamble(X) :- gotcredit(X).

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

Вредный порез

[ редактировать ]

Урезание, которое влияет на корректность программы, является вредным сокращением. Например:

min(X,Y,X) :- !, X =< Y. % the ! Is harmful because if Y<X 
min(X,Y,Y) :- Y < X.  % it will not let to continue to the second rule and will fail
  1. ^ Дайкхофф, Рой (20 мая 1994 г.). Расширения логического программирования: 4-й международный семинар, ELP '93, Сент-Эндрюс, Великобритания, 29 марта - 1 апреля 1993 г. Труды . Springer Science & Business Media. ISBN  978-3-540-58025-6 .
  2. ^ Основы логического программирования , Springer (2012).
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5b1386f9d92d08f9549a798ba71a977f__1721972400
URL1:https://arc.ask3.ru/arc/aa/5b/7f/5b1386f9d92d08f9549a798ba71a977f.html
Заголовок, (Title) документа по адресу, URL1:
Cut (logic programming) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)