Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по СИИ.doc
Скачиваний:
104
Добавлен:
02.05.2014
Размер:
3.54 Mб
Скачать

3.4. Модели эвристического поиска решений

Модели эвристического поиска решений основаны на представле­нии задачи в пространстве состояний. Некоторая начальная вершина этого пространства соответствует начальному состоянию. Вершины, не­посредственно следующие за данной, получаются в результате при­менения операторов (правил, продукций, алгоритмов), которые приме­нимы в состоянии, ассоциированном с данной вершиной. Определение всех непосредственно следующих вершин для вершины хназывается раскрытием вершиных. Обозначимоперацию раскрытия вершины какГ(х).ПодГ(х)будем понимать множество вершин, непосредственно следующих за вершинойх; коротко назовем вершинууГ(х)потомком вершиных.

Выделим некоторую целевую вершину, соответствующую конечно­му состоянию.

В приведенных терминах задача формулируется следующим обра­зом:

Заданы начальное S0и конечноеSeсостояние задачи, а также мно­жество операторов.

Найти цепочку операторов , осуществляющую переход. Иначе говоря, требуется найти последовательность вершинS0, S1, ..., Se, порождаемых соответствующими операторами, такую чтоSi Г(Si-1).

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

3.4.1 Стратегия поиска в глубину

Определим глубину вершины в дереве поиска следующим образом:

Глубина корня дерева равна 0.

Глубина вершины х, не являющейся корнем, равна глубине верши­ныу, такой, чтоx Г(y), сложенной с единицей.

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

  1. Поместить начальную вершину в список, называемый ОТ­КРЫТ.

  2. Если список ОТКРЫТ пуст, то неудача всего алгоритма, иначе следующий шаг.

  3. Всписке ОТКРЫТ взять вершину с максимальным значением глубины и пронести ее в список ЗАКРЫТ.

  4. Если глубина равна граничной глубине, то перейти к п. (2), иначе - следующий шаг.

  5. Раскрыть вершину . Поместить каждую вершину Г() в список ОТКРЫТ, если не принадлежит ни списку ОТКРЫТ, ни списку ЗАКРЫТ.

  6. Если в Г() есть целевая вершина, то конец, иначе перейти к п. (2).

Для иллюстрации стратегии поиска в глубину обратимся к задаче отыскания маршрута, связывающего произвольные две вершины в графе. Рассмотрим граф, показанный на рис. 3.7. Пусть требуется найти маршрут, ведущий из вершины 1 в вершину 7. Начальная вершина 1 образует исходный список ОТКРЫТ = {1}.

Далее находим:

В скобках рядом с номером вершины помечено значение глубины вершины в графе. Полагаем ОТКРЫТ = , ЗАКРЫТ =.

Выбираем для раскрытия вершину 2:

Г(2) = {3,4,6}.

Поскольку вершина 4 уже фигурирует в списке ЗАКРЫТ, то уста­навливаем:

ОТКРЫТ = {4(1), 3(2), 6(2)}; ЗАКРЫТ = {1(0), 2(1)}.

Выбираем в списке ОТКРЫТ вершину с максимальной глубиной, например, 3, и находим

Г(3) = {4}.

Вершина 4 не включается в список ОТКРЫТ, т.к. она там присут­ствует. Устанавливаем

ОТКРЫТ = {4(1), 6(2)}; ЗАКРЫТ = {1(0), 2(1), 3(2)}.

Выбираем для раскрытия вершину 6:

Г(6) = {1, 5}

Полагаем

ОТКРЫТ = {1(1), 5(3)}; ЗАКРЫТ = {1(0), 2(1), 3(2), 6(2)}.

Далее аналогично находим

Г(5) = {3, 8};

ОТКРЫТ = {4(1), 8(4)};

ЗАКРЫТ = {1(0), 2(1), 3(2), 5(3), 6(2)}.

Г(8) = {6, 9}

ОТКРЫТ = {4(1), 9(5)};

ЗАКРЫТ = {1(0), 2(1), 3(2), 5(3), 6(2), 8(4)}.

Наконец,Г(9)= {7}: Конечная вершина достигнута. Искомый маршрут определяется в обратном порядке через множестваГ(). Так, конечная вершина 7 принадлежитГ(9). Следовательно, вершина 9 долж­на быть предпоследней вершиной маршрута. Устанавливаем, что 9Г(8). Таким образом, вершина 8 должна предшествовать вершине 9 и т.д. Окончательный список вершин, образующий маршрут из вершины 1 в вершину 7 таков: <1, 2, 6, 5, 8, 9, 7> (рис.3.8).

Рассмотренный алгоритм не использует каких-либо дополнительных предположений относительно свойств вершин - состояний. В частности, например, знание некоторых свойств, которыми должна обладать конечная вершина - состояние, позволило бы не раскрывать те вершины, которые в силу этих свойств не могут принадлежать результирующему маршруту (см. раздел 2.2). Это свойство используется различными стратегия­ми перебора с отсечениями.