
- •8.Стратегии неинформированного поиска с ограничением глубины и итеративным углублением. Двунаправленный поиск.
- •Поиск с ограничением глубины
- •Поиск в глубину с итеративным углублением
- •Двунаправленный поиск
- •18. Представление знаний. Категории и объекты.
- •28. Деревья принятия решений.
- •Выразительность деревьев решений
- •Индуктивный вывод деревьев решений на основе примеров
8.Стратегии неинформированного поиска с ограничением глубины и итеративным углублением. Двунаправленный поиск.
Недостатком поиска в глубину является то, что в нем может быть сделан неправильный выбор и переход в тупиковую ситуацию, связанную с прохождением вниз по очень длинному (или даже бесконечному) пути.
Поиск с ограничением глубины
Проблему
неограниченных деревьев можно решить,
предусматривая применение во время
поиска в глубину заранее определенного
предела глубины l.
Это означает, что узлы на глубине l
рассматриваются таким образом, как если
бы они не имели преемников. Такой подход
называется поиском
с ограничением глубины.
Применение предела глубины позволяет
решить проблему бесконечного пути. К
сожалению, в этом подходе также
вводится дополнительный источник
неполноты, если будет выбрано значение
l<d-
самая поверхностная цель выходит за
пределы глубины. (Такая ситуация вполне
вероятна, если значение d
неизвестно.)
Кроме того, поиск с ограничением глубины
будет неоптимальным при выборе значения
l>d.
Его временная сложность равна O(bl),
а
пространственная сложность — О(bl).
Поиск
в глубину может рассматриваться как
частный случай поиска с ограничением
глубины, при котором l=
Иногда выбор пределов глубины может быть основан на лучшем понимании задачи.
Н-р: На карте имеется 20 городов. Поэтому известно, что если решение существует, то должно иметь длину не больше 19; это означает, что одним из возможных вариантов является l=19. Но в действительности при внимательном изучении этой карты можно обнаружить, что любой город может быть достигнут из любого другого города не больше чем за 9 этапов. Это число, известное как диаметр пространства состояний, предоставляет нам лучший предел глубины, который ведет к более эффективному поиску с ограничением глубины. Но в большинстве задач приемлемый предел глубины остается неизвестным до тех пор, пока не будет решена сама задача.
Поиск с ограничением глубины может быть реализован как простая модификация общего алгоритма поиска в дереве или рекурсивного алгоритма поиска в глубину.
function Depth-Limited-Search(problem, limit) returns решение result или индикатор неудачи failure/cutoff return Recursive-DLS(Make-Node(Initial-State[problem]),
problem,limit)
function Recursive-DLS{node, problem, limit) returns решение result или индикатор неудачи failure/cutoff cutoff_occurred? ложное значение
if Goal-Test[problem] (State[node]) then return Solution{node) else if Depth[node] = limit then return индикатор неудачи cutoff else for each преемник successor in Expand{node, problem) do result <r- Recursive-DLS {successor, problem, limit) if result = cutoff then cutoff_occurred? истинное значение else if result Ф failure then return решение result if cutoff_occurred?
then return индикатор неудачи cutoff else return индикатор неудачи failure
Поиск с ограничением глубины может приводить к неудачным завершениям двух типов: стандартное значение failure указывает на отсутствие решения, а значение cutoff свидетельствует о том, что на заданном пределе глубины решения нет.