- •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 свидетельствует о том, что на заданном пределе глубины решения нет.