Лабораторная работа №3

«Стратегии слепого поиска. Рекурсивный поиск». (4 часа).

 

Цель работы:Определить уровень подготовки студентов в соответствии с материалом, изученным в предыдущих курсах, являющихся базовыми для получения знаний из области искусственного интеллекта.

 

Теоретические сведения:

Большая часть исследований в области поиска посвящена разработке стратегий поиска.

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

Рассмотрим несколько основных стратегий, часто называемых стратегиямислепого поиска (blind search).Стратегии слепого поиска, в отличие от стратегий эвристического поиска, (heuristic search)не отдают предпочтение отдельным узлам. Особенностью этих стратегий явля­ется "равноправность" всех узлов по отношению к выбору, а отличие одной стратегии от другой определяется порядком выбора узлов, подвергающихся расширению.

Поиск "сначала в ширину" (breadth-first search)

При стратегии поиска "сначала в ширину" расширение начинается с корне­вого узла, затем расширяются все узлы полученные из корневого узла и т.д. Об­щее правило поиска таково: все узлы, глубиной d должны быть расширены прежде, чем будут расширяться узлы, глубиной d + 1. Алгоритм поиска "сначала в ширину" может быть реализован так:

 

Поиск "сначала в глубину" (depth-first search)

 

При стратегии поиска "сначала в глубину" всегда расширяется узел, на­ходящийся на наиболее глубоком уровне дерева поиска. В том случае, если поиск обнаруживает тупиковый узел (не целевой и не расширяемый узел), алгоритм возвращается на один уровень вверх. при работе алгоритма поиска "сначала в глубину" необходимо хранить в па­мяти только единственный путь от корня к текущему листу вместе с остав­шимися нерасширенными дочерними узлами. Для дерева поиска с фактором ветвленияb и максимальной глубиной m, поиск "сначала в глубину" требует хранить в памяти только bm узлов в отличие от bm узлов, которые необходимо хранить для реализации алгоритма "сначала в ширину".

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


Алгоритм поиска "сначала в глубину" может быть реализован так: