- •Лекции 8-9(Тема 5)
- •5.2. Понятие пространства состояний задачи. Примеры
- •5.3.Стратегии поиска в пространствах состояний
- •5.3.1. Поиск с возвратами
- •5.3.2. Поиск в глубину и итеративное углубление
- •5.3. 3. Поиск в ширину
- •5.4. Эвристический поиск по заданному критерию: основные понятия; алгоритм а*.
- •5.5.Сведение задач к подзадачам
- •5.5.1. Представление задач в виде графов and/or
- •5.5.2. Примеры представлений в виде графа and/or
- •13.2. Поиск в ширину;
5.3. 3. Поиск в ширину
В стратегии поиска в ширину исследуются в первую очередь те вершины, которые являются ближайшими к начальной вершине, см. рис. 5.11.
т
Рис.5.11. Схема поиска в ширину
Программа поиска в ширину в случае, когда пространство состояний является корневым деревом, представлена ниже.
Пример 5.3.5.
/*Программа: поиск в ширину */
domains
s=symbol
l= s*
predicates
ap (l, l, l)
eq (l, l)
udob (l, l, l)
preemn (s, l)
gs(s)
solve (l, l, l) /*Первый аргумент- список отк, второй- зак */
sol
clauses
sol:-solve ([s], [], P), write (“sol =”,P),nl.
solve ([X|L1], M, P):- gs(X), P= [X|M].
solve ([X|N], M, P):- M1= [X|M], preemn (X, L), udob (L1, L, L2),
udob (M1, L2, L3), ap(L1, L3,L4), solve (L4,M1, P1), P=P1.
solve ([],M ,P):- P= resh.net, write(P),nl.
goal
sol
Она отличается от программы поиска в глубину переменой местами двух первых аргументов предиката ap(L1, L3,L4), что соответствует записи новых вершин в конец списка отк.
Стратегия поиска в ширину гарантирует первоочередную выработку кратчайших решений. Но и поиск в глубину с итеративным углублением с постепенно увеличивающимися пределами глубины, также в первую очередь обнаруживаются кратчайшие решения. Таким образом, при итеративном углублении происходит своего рода моделирование поиска в ширину.
Если в качестве критерия оптимизации рассматривается минимальная стоимость пути решения (а не его длина), поиск в ширину не может обеспечить выбор оптимального пути решения.
Типичной проблемой, связанной с поиском, является комбинаторная сложность. При наличии нетривиальных проблемных областей количество вариантов, подлежащих рассмотрению, становится столь значительным, что наибольшее значение приобретает существенное увеличение затрат ресурсов на исследование данных вариантов.
Сравним затраты ресурсов на осуществление основных алгоритмов поиска. Потребность в ресурсах времени обычно определяется в зависимости от количества узлов, формируемых алгоритмом поиска, а затраты ресурсов пространства обычно определяются в зависимости от максимального количества узлов, которые должны храниться в памяти во время поиска. Общее количество узлов, вплоть до глубины решения d, составляет 0(bd) (см.1), поэтому затраты ресурсов времени при поиске в ширину измеряются значением О(bd ). Кроме того, при поиске в ширину информация обо всех возможных путях хранится в памяти, поэтому затраты ресурсов пространства также измеряются значением О(bd ).
Преимущество поиска в глубину по сравнению с поиском в ширину состоит в том, что он требует намного меньших затрат ресурсов пространства, а его недостатком является то, что он не гарантирует получение оптимального решения.
При итеративном углублении выполняется поиск в глубину (d + 1) со все возрастающей глубиной: 0, 1, ..., d. Поэтому затраты ресурсов пространства при этом поиске измеряются значением O(d). Посещение начального узла происходит (d + 1) раз, дочерних узлов начального узла — d раз и т.д. В худшем случае количество формируемых узлов измеряется следующим выражением: (d+l)*l + d*b + (d-l)*b2 + ... + l*bd
Это выражение также измеряется значением О(bd). Но фактически затраты на повторное формирование узлов верхних уровней по сравнению с поиском в ширину весьма малы. В этом смысле итеративное углубление сочетает в себе наилучшие свойства поиска в ширину (гарантированное достижение оптимального решения) и поиска в глубину (экономия пространства) и поэтому на практике часто является наиболее предпочтительным среди всех основных методов поиска.
Рассмотренные простые стратегии поиска не имеют средств, позволяющих преодолеть комбинаторный взрыв и поэтому как правило неприменимы для решения крупномасштабных задач. При решении подобных задач необходимо использовать информацию, относящуюся к конкретной проблеме, для обеспечения целенаправленного поиска. Такого рода информация называется эвристикой. Алгоритмы, в которых применяются эвристики, обеспечивают выполнение эвристического поиска. Методы поиска с применением эвристик представлены в следующем пункте.
