- •8.Стратегии неинформированного поиска с ограничением глубины и итеративным углублением. Двунаправленный поиск.
- •Поиск с ограничением глубины
- •Поиск в глубину с итеративным углублением
- •Двунаправленный поиск
- •18. Представление знаний. Категории и объекты.
- •28. Деревья принятия решений.
- •Выразительность деревьев решений
- •Индуктивный вывод деревьев решений на основе примеров
Поиск в глубину с итеративным углублением
Поиск с итеративным углублением представляет собой общую стратегию, часто применяемую в сочетании с поиском в глубину, которая позволяет найти наилучший предел глубины. Это достигается путем постепенного увеличения предела (который вначале становится равным 0, затем 1, затем 2 и т.д.) до тех пор, пока не будет найдена цель. Такое событие происходит после того, как предел глубины достигает значения d, глубины самого поверхностного целевого узла. В поиске с итеративным углублением сочетаются преимущества поиска в глубину и поиска в ширину. Как и поиск в глубину, он характеризуется очень скромными требованиями к памяти, а именно, значением O(bd). Как и поиск в ширину, он является полным, если коэффициент ветвления конечен, и оптимальным, если стоимость пути представляет собой неубывающую функцию глубины узла
function Iterative-Deepening-Search{problem) returns решение result или индикатор неудачи failure inputs: problem, задача
for depth (- 0 to “ do
result <r- Depth-Limited-Search{problem, depth) if result Ф cutoff then return решение result
Он завершает свою работу после того, как обнаруживается решение, или процедура поиска с ограничением глубины возвращает значение failure, а это означает, что решение не существует
Поиск с итеративным углублением не является расточительным ,т.к. повторные операции не являются слишком дорогостоящими. Причина этого состоит в том, что в дереве поиска с одним и тем же (или почти одним и тем же) коэффициентом ветвления на каждом уровне большинство узлов находится на нижнем уровне, поэтому не имеет большого значения то, что узлы на верхних уровнях формируются многократно. В поиске с итеративным углублением узлы на нижнем уровне (с глубиной d) формируются один раз, те узлы, которые находятся на уровне, предшествующем нижнему, формируются дважды, и т.д., вплоть до дочерних узлов корневого узла, которые формируются d раз. Поэтому общее количество формируемых узлов выражается следующей формулой:
N{ IDS) = {d)b + (d-l)b2 + ... + (l)bd
которая соответствует временной сложности порядка 0(bd). Это количество можно сравнить с количеством узлов, формируемых при поиске в ширину:
N( BFS) = Ь + Ь2 + ... + bd + {bd+1-b)
Рис.1 3 ИТЕРАЦИИ ПОИСКА С ИТЕРАТИВНЫМ УГЛУБЛЕНИЕМ В БИНАРНОМ ДЕРЕВЕ
Следует отметить, что при поиске в ширину некоторые узлы формируются на глубине d+1, а при итеративном углублении этого не происходит. Результатом является то, что поиск с итеративным углублением фактически осуществляется быстрее, чем поиск в ширину, несмотря на повторное формирование состояний. Итеративное углубление — это предпочтительный метод неинформированного поиска при тех условиях, когда имеется большое пространство поиска, а глубина решения неизвестна.
Поиск с итеративным углублением аналогичен поиску в ширину в том отношении, что в нем при каждой итерации перед переходом на следующий уровень исследуется полный уровень новых узлов. Поиск с итеративным удлинением характеризуется более существенными издержками, чем поиск по критерию стоимости.
