Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
А_ЛЕКЦИИ 8-9.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
924.16 Кб
Скачать

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). Но фактически затраты на повторное формирование узлов верхних уровней по сравнению с поиском в ширину весьма малы. В этом смысле итеративное углубление сочетает в себе наилучшие свойства поиска в ширину (гарантированное достижение оптимального решения) и поиска в глубину (экономия пространства) и поэтому на практике часто является наиболее предпочтительным среди всех основных методов поиска.

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