Помощь в написании студенческих работ
Антистрессовый сервис

Красное и зеленое отсечения

РефератПомощь в написанииУзнать стоимостьмоей работы

Использование отсечений позволяет существенно сокращать как время работы программы на Прологе, так и объем требуемой оперативной памяти. Кроме того, вдумчивая расстановка отсечений сокращает отладку программ, поскольку устраняет коллизии, подобные той, что приведена в следующем примере. Таким образом, будет происходить бесконечное углубление в рекурсию. Совершенно очевидно, что, найдя одну жену… Читать ещё >

Красное и зеленое отсечения (реферат, курсовая, диплом, контрольная)

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

Если отсечение влияет на логику программы (без него программа работает иначе), такое отсечение называется красным.

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

Использование отсечений позволяет существенно сокращать как время работы программы на Прологе, так и объем требуемой оперативной памяти. Кроме того, вдумчивая расстановка отсечений сокращает отладку программ, поскольку устраняет коллизии, подобные той, что приведена в следующем примере.

Пусть человек считается уважаемым в обществе, если он / она состоит в браке и имеет свой дом. Правило для этого выглядит следующим образом:

respectable (X): — spouse (X, _), has_home (X).

Пусть в базе знаний имеются следующие факты и правила:

spouse (alia, filipp).

spouse (X, Y): — spouse (Y, X).

has_home (alia).

Зададим следующую цель: respectable (filipp).

Для резолюции данной цели Пролог войдет в тело правила respectable и поставит себе подцель: spouse (filipp,).

Поскольку такого факта в базе нет, Пролог выполнит откат на правило.

spouse (X, Y): — spouse (Y, X).

из которого создаст себе подцель: spouse (_, filipp).

В ходе резолюции данной подцели будет получено успешное решение, поскольку такой факт в базе есть. Далее Пролог ставит себе следующую подцель из правила respectable: has home (filipp).

Такого факта в базе нет, и, поскольку, предыдущий предикат правила respectable, то есть spouse является неоднозначным, то выполняется откат на следующий экземпляр этого предиката, а именно:

spouse (X, Y): — spouse (Y, X).

Смысл отката заключается в поиске другой жены для Филиппа. Будет поставлена следующая подцель:

spouse (filipp, _).

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

respectable (X): — spouse (X, _), !, has_home (X). spouse (alia, filipp): -!. spouse (X, Y): — spouse (Y, X). has_home (alia).

Показать весь текст
Заполнить форму текущей работой