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

3.4.2.2. Стратегии поиска на основе эвристической функции оценки

Оценочная функция позволяет упорядочить вершины в списке ОТКРЫТ таким образом, чтобы первые позиции в нем занимали вершины с минимальной величиной оценки. Обозначим черезf(n) значение оценочной функции на вершинеn. Функцияf(n) определяет оценку стои­мости наилучшего (т.е. имеющего минимальную суммарную стоимость) пути, соединяющего вершинуnс начальной вершиной и целевой верши­ной.

Теперь алгоритм поиска решения - как маршрута в графе состоя­ний задачи, связывающего начальную и целевую вершины, на основе функции f(n)принимает следующий вид:

  1. Занести начальную вершину s в список ОТКРЫТ и вычислить f(s).

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

  3. В списке ОТКРЫТ выбирается вершина х с минимальным значением f(s).

  4. Если х - целевая вершина - то конец; иначе построить мно­жество Г(x). Для каждой вершины y Г(x) найти f(y). Если вершина у отсутствует в списке ОТКРЫТ, то поместить ее туда с найденным значением f(у). Если у уже входит в список ОТ­КРЫТ, то установить для у то из значений f(у), которое мини­мально.

  5. Перейти к п. (2).

Приведенный алгоритм известен в литературе как алгоритмА*. Нетрудно догадаться, что выбор оценочной функции является решаю­щим для эффективности алгоритма поиска. Определим оценочную фун­кциюf(n)в виде суммы

f(n) = g(n) + h(n), (3.12)

гдеg(n)- стоимость наилучшего пути, найденного для вершиныn, ко­торый связывает ее с начальной вершиной;h(n) - стоимость оптимального пути от вершиныnдо целевой вершины.

Кроме того, пусть- оценка дляg(n), - оценка дляh(n) и - оценка дляf(n), т.е.

(3.13)

Из определения g(n) имеем, чтоg(n).

Отметим, что определение g(n) в общем случае не вызывает затруд­нений. Для функции дело обстоит иначе. Однако еслипредстав­ляет нижнюю границу дляh, то алгоритмА*находит маршрут с мини­мальной общей стоимостью. Теореме, устанавливающей это свойство алгоритмаА*, предпочтем следующую лемму.

Лемма. Если для всехnвыполняется условие, то в любой момент времени до того, как алгоритмА*закончит свою работу, на лю­бом оптимальном путиРот начальной вершиныsк цели существует от­крытая вершинаn', для которойf(n') f(s).

Доказательство.По определению.

Так как n'лежит на оптимальном пути, то и, следова­тельно,, ибо мы приняли, что.

Далее имеем, что для любых двух вершинх1их2, лежащих на оп­тимальном путиf(x1) = f(x2) = f(s). В самом деле, пустьх1расположена дох2в оптимальном пути. Тогда

f(x1) = g(x1) + j(x1, x2), (2.14)

где j(x1, x2) - стоимость оптимального пути от х1 к х2.

но, очевидно, j(x1, x2) + h(x2) = h(x1) и g(x1) + j(x1, x2) = g(x2).

Отсюда следует, что .

Теорема 2.1. Если для всех вершинnвыполняется условие и если стоимости всех дуг превосходят некоторое малое положительное число, то алгоритмА*оканчивает свою работу построе­нием оптимального пути к цели.

Доказательство.Возможны три различных исхода.

Исход 1: Работа алгоритма заканчивается, но целевая вершина не найдена. Это значит, что список ОТКРЫТ пуст, но цель не достигнута. Такая ситуация возможна, если и только если не существует пути, свя­зывающего начальную и целевую вершины.

Исход 2: Алгоритм не оканчивает работу. Эта ситуация невозможна если множество всех состояний задачи конечно. Допустим против­ное: граф конечен, но алгоритм не завершает работу. Это значит, что список ОТКРЫТ никогда не опустеет, т.е. в него будут попадать одни и те же вершины, для которых значениеf(х)все время уменьшается. Каж­дый такой случай соответствует обнаружению нового, более лучшего пути изsвх. Но число всех таких путей в конечном графе ограничено, из чего следует противоречие.

Исход 3: Алгоритм завершает работу на целевой вершине, но найденный маршрут не оптимален. Допустим, что работа алгоритмаА*оканчивается на некоторой вершинеtс. Однако по лемме выше как раз перед окончанием работы на оптимальном пути существует такая вершинаn', чтоf(n') f(), поэтому была бы выбрана для раскрытия не вершинаt, а вершинаn'.

Говорят, что эвристическая функция hудовлетворяет монотонному ограничению, если для любых вершин х и у, таких чтоу Г(х)имеет местоh(x) h(y) + c(x, y), гдес(x, у)- стоимость дуги, связывающей вершиныхиу.

Теорема 2.2. Если функцияhудовлетворяет монотонному ограниче­нию, тоА*оптимален.

Доказательство.Найдем

. (3.15)

Тогда примем для каждой вершины х . (3.16)

Ясно, что для всехх. В силу теоремы 2А*оптимален.

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

Алгоритм Апридерживается стратегии поиска в глубину, раскры­вая вершины, принадлежащие одному и тому же пути, пока это возмож­но. Считается, что вершинаnдопустима, еслиf(n) не превосходит величины(1 + )max {f(n')}, гдеn'принадлежит множеству вершин, бывших первыми в списке ОТКРЫТ.

Другое отличие между А*иАзаключается в том, что если для рас­крываемой вершиныn Г(n) не содержит допустимой вершины, тоАпытается раскрыть вершины изГ(n), затем вершины изГ(Г(n)) и т.д. несколько раз, предполагая, что в силу монотонностиhс увеличениемf(n') некоторые вершины перейдут из разряда недопустимых в разряд допустимых.

Алгоритм А:

  1. Список ОТКРЫТ = {s}.

Список ЗАКРЫТ = 

g(s) = 0; f(s) = h(s)

верхняя граница = (1 + ) f(s)

РАСКРЫТЬ (s)

АХ = {x Г(s x допустима}

x допустима, если x  ОТКРЫТ и f(x)  верхняя_граница

2. Если АХ  , то n = выбрать (АХ) иначе n = выбрать (ОТКРЫТ)

3. РАСКРЫТЬ (n).

4. Если Г(n) не содержит допустимых вершин, то строить Г(Г(n)), Г(Г(Г(n)))... и т.д. до тех пор, пока не будет получена вершина t, являющаяся допустимой или список ОТКРЫТ не станет пустым; или число последовательных применений операции раскрытия Г...Г не станет больше некоторого порогового значения N

РАСКРЫТЬ (t)

5. АХ = {x Г(n x допустима}

6. Если целевая вершина найдена и допустима, то конец.

Если ОТКРЫТ = , то общая неудача,

иначе

вычислить_новую_верхнюю_границу и повторить с п. 2.

Процедура выбрать (АХ) выбирает в множестве АХ вершину хс минимальным значениемf(х);

Процедура выбрать (Открыть)более сложная, поскольку она должна определить допустимую вершинуnв списке ОТКРЫТ, которая не лежит на пути, связывающем последнюю раскрытую вершину с целе­вой вершиной.

При этом такой выбор должен минимизировать функцию

1 f(x) + 2 h(x) (3.17)

Выбор 1и2определяется из следующих соображений. Миними­зацияh(х)"ориентирована" на скорейшее приближение к целевой вер­шине, однако увеличивает риск возврата с выбранного пути к верши­нам на более высоком уровне в графе решения. Минимизацияf(х) максимально увеличивает верхнюю границу(1 + ) f(x), т.е. увеличивает пе­ребор. Практически рекомендовано устанавливать значение1>2. Следующие результаты получены для задачи о коммивояжере дляN = 9городов (табл. 3.1).

Из табл. 2.1 видно, что при = Орезультирующий путь имеет мини­мальную стоимость (100), но и максимальное число раскрытых вершин (100). С увеличением происходит сокращение числа раскрытых вершин. При = 0.25было раскрыто всего 23 вершины и сделано 3 возврата, что практически на порядок меньше, чем при = О. При этом относительная потеря точности результата составляет 3%.

Таблица 3. 1

0

0,01

0,05

0,1

0,15

0,25

Стоимость результирующего пути

100

100.1

100.4

101.1

101.9

103.0

107.0

число раскрытых вершин

100

92

77

54

42

23

15

число возвратов

100

83

48

21

13

3

0

3.4.2.3. (-)-процедура

Рассмотрим граф состояний, в котором все множество состояний делится на два непересекающихся классаUиU. Будем считать, что в каждом состоянииаизUигроквыбирает допустимый переход в не­которое состояние изU, причемГ(а)U; наоборот, в каждом состоя­нииbизUигроквыбирает некоторый допустимый переход в одно из состоянийГ(b)U. Считается, что выигрывает тот игрок, который своим последним ходом исключает возможность сделать очередной ход противнику, т.е. у противника отсутствует допустимый ход в заключи­тельном состоянии.

Стратегия называется выигрышной для игрока, если независимо от ответного хода противника игра заканчивается в ситуации, выиг­рышной для.

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

Будем полагать, что игроки иоценивают ситуации таким образом, что для любой ситуациихоценка(х) = 1 - (х), (х) + (х) = 1.

Из этого допущения следует, что стремление каждого игрока до­биться лучшей для себя ситуации означает адекватное ухудшение соот­ветствующей оценки противника. Очевидно, разумная тактика у игрока заключается в стремлении получить гарантированный минимальный выигрыш на каждом шаге, т.е. строить игру, исходя из допущения, что игрокпридерживается каждый раз своей наилучшей стратегии.

Пустьх- текущая ситуация, в которой ход делает игрок. Тогда он может выбрать любую вершину из множестваГ(х). Допустим, он вы­брал вершинуу*Г(х). Теперь, в свою очередь, игрокможет выбрать любую вершину изГ(у*). Очевидно, игроквыберет изГ(у*)ту вершинуz*, которая доставляет максимальное значение величине(z*). Следовательно, игрокдолжен выбором вершиныу*гарантировать

(3.18)

С другой стороны, игрок а стремится максимизировать минималь­ный выигрыш независимо от выбора игрока, т.е.

(3.19)

Убеждаемся, что (2.19) вытекает из (2.18) в силу того, что (х) min(x). Теперь ясно, что оптимальная стратегия игрокадолжна га­рантировать соблюдение для каждого состоянияхусловия

W(x) U(x) (3.20)

Стратегия со свойством (2.20) называется оптимальной для игрока. Оценка (2.20) позволяет отсечь те направления, для которых с учетом возвращаемого игрокомзначенияU(х), соотношение (2.20) не выполняется.

Первоначальный граф представлен на рис. 3.5.

Удалим дуги x6 x5, x3 x5, согласно операции О2 (рис. 3.6,а).

Согласно операции О3 удаляем вершину x8 вместе с инцидентными ей дугами. (рис. 3.6,б).

Согласно операции О6 удаляем альтернативную вершину x2 вместе с инцидентными ей дугами.

По О5 пометка 4 снимается со всех дуг, входящих вx6 и x4 и пометка 5. Следовательно, удаляются дугиx5 x6, x5 x4 и x7 x4 (рис. 3.6,в).

Согласно операции О6 удаляем альтернативную вершину x4 вместе с инцидентными ей дугами.

По О5 пометка 6 снимается со всех дуг, входящих вx6. Следовательно, из дуг x1 x6 и x3 x6 (рис. 3.6,г).