Книга: Программирование на языке Пролог для искусственного интеллекта
Резюме
Резюме
• Отсечение подавляет перебор. Его применяют как для повышения эффективности программ, так и для повышения выразительности языка.
• Эффективность повышается путем прямого указания (при помощи отсечения) пролог — системе не проверять альтернативы, про которые нам заранее известно, что они должны потерпеть неудачу.
• Отсечение дает возможность сформулировать взаимно исключающие утверждения при помощи правил вида:
еслиУсловие тоУтверждение1 иначеУтверждение2
• Отсечение дает возможность ввести отрицание как неуспех: not( Цель)
определяется через неуспех цели Цель
.
• Иногда бывают полезными две особые цели true
и fail
. true
— всегда успешна и fail
— всегда терпит неудачу.
• Существуют ограничения в применении отсечения: его появление может нарушить, соответствие между декларативным и процедурным смыслами программы. Поэтому хороший стиль программирования предполагает осторожное применение отсечений и отказ от их применения без достаточных оснований.
• Оператор not
, определенный через неуспех, не полностью соответствует отрицанию в математической логике. Поэтому not
тоже нужно применять с осторожностью.
Литература
Различать "зеленые и "красные" отсечения предложил ван Эмден (1982).
van Emden M. (1982). Red and green cuts. Logic Programming Newsletter: 2.