Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8_18_28.doc
Скачиваний:
35
Добавлен:
24.09.2019
Размер:
319 Кб
Скачать

Поиск в глубину с итеративным углублением

Поиск с итеративным углублением представляет собой общую стратегию, часто применяемую в сочетании с поиском в глубину, которая позволяет найти наилучший предел глубины. Это достигается путем постепенного увеличения предела (который вначале становится равным 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, а при итеративном углублении этого не происходит. Результатом явля­ется то, что поиск с итеративным углублением фактически осуществляется быстрее, чем поиск в ширину, несмотря на повторное формирование состояний. Итеративное углубление — это предпочтительный метод неин­формированного поиска при тех условиях, когда имеется большое пространство поиска, а глубина решения неизвестна.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]