В. Поиск пути на произвольном графе с использованием
дополнительных знаний (оценки стоимости оставшегося пути до цели)
Алгоритм а·
Раф/112 - 117
Неудобство деревьев – узел, предст-щий одну и ту же ситуацию, может встретиться нес-ко раз, и каждый раз необходимо учитывать обст-ва, при кот-х он встречался ранее.
Алгоритм А· - алг-м поиска путей на произвольном графе.
По графу мы можем прийти к одному и тому же узлу РАЗЛИЧНЫМИ ПУТЯМИ - в дереве толко один путь. Поэтому:
Если мы нашли какой-либо путь к такому узлу, который уже объявлялся ОТКРЫТЫМ (т.е. к такому узлу, к которому мы уже подходили по другому пути), то для дальнейшего анализа должен выбираться только ЛУЧШИЙ из этих путей.
Иногда это означает, что Алг-м не должен формировать дочерние вершины данного узла при данном "подходе" к нему, а перейти к рассмотрению другого узла.
Алгоритм А· находит путь с учетом стоимости g(n) пути ДО данного узла n от начального узла и оценки h(n) стоимости пути ОТ данного узла n до целевого узла. Как и ранее, используется функция f(n) = g(n) + h(n).
Алгоритм А*
1. Все узлы и все значения g(n), h(n), f(n) - неизвестны.
Объявить ОТКРЫТЫМ (выбрать для исследования) начальный узел X и положить для него g(X) = 0.
Вычислить (используя дополнительные знания) ОЦЕНКУ СТОИМОСТИ пути от начального узла X до цели, т.е. величину h(X) и величину
f(X) = g(X) + h(X) = h(X).
2. Если есть некоторое множество ОТКРЫТЫХ УЗЛОВ (т.е. таких, для которых еще не формировались дочерние вершины), то выбрать из них ОТКРЫТЫЙ узел с минимальным значением f и назвать его N.
N - ОТКРЫТЫЙ узел с минимальным значением стоимости f .
3. Если этот узел N - единственный из открытых узлов, то проверить, является ли N целевым узлом.
3.1. Если N - целевой узел, то задача решена и путь, ведущий от начального узла X к узлу N, - решение задачи.
3.2. Если N - НЕ целевой узел, то перейти к п.6.
4. Если два или более открытых узлов имеют одинаково малое значение f , то - проверить, не является ли один из них целевым.
4.1 Если один из таких равноценных узлов- целевой, то
путь, ведущий к такому узлу- решение задачи.
4.2. Если нет, то произвольно выбирать один из этих узлов и назвать его N. Перейти к п. 6.
5. Если нет ни одного открытого узла, то данный граф не имеет пути, предст-щего решение.
6. Расширить узел N - сгенерировать все его дочерние узлы S, объявить их ОТКРЫТЫМИ (узел N при этом становиться закрытым) и для каждого вновь полученного (дочернего) узла S :
- вычислить стоимость пути от начального узла X до S :
g¢ (S) = g (N) + g (N, S),
где g (N, S) - стоимость дуги от N к S.
7. Проверить, объявлялся ли ранее данный узел S открытым.
Если – ДА, т.е. мы уже подходили к этому узлу S по другому пути и для него ранее вычислялось значение стоимости g(S), то
- Проверить, выполняется ли условие
g¢ (S) ³ g(S).
Если ДА, т.е. новое значение стоимости БОЛЬШЕ старого, то данный узел S ИГНОРИРУЕТСЯ и рассматриваются другие узлы S (т.е. открытые дочерние узлы данного узла N ).
8. Если данный узел S
- или еще не объявлялся открытым (т.е. мы еще не подходили к нему по другому пути),
-или НОВОЕ значение стоимости пути ДО него g¢ (S) оказалось меньше прежнего g(S), т.е.
g¢ (S) < g(S),
то объявить данный узел S ОТКРЫТЫМ и положить
g(S) = g¢ (S),
т.е. присвоить ему НОВОЕ (меньшее) значение стоимости пути от нач. узла к данному узлу.
9. Вычислить
f(S) = g(S) + h(S)
10. Перейти к шагу 2,
т.е. выбрать из всех открытых узлов ОТКРЫТЫЙ узел с минимальным значением f и назвать его N.
ДОПОЛНЕНИЯ к Алг-му A* (Рафаэл/116)
1. В выражении f(n) = g(n) + h(n) можно придавать вуличинам g(n) и h(n) различный вес, т.е. записать эту функцию в виде f(n) = w g(n) + (1- w ) h(n)
где w – ВЕС, т.е. произвольное положительное число, меньшее 1.
При w= 0,5 имеем равные веса.
Если w < 0,5 (ближе к 0), то основную роль играет h(n), т.е. предстоящие затраты, а стоимость уже пройденного пути игнорируется.
Если w > 0,5 (ближе к 1), то ведущую роль играет g(n), т.е. стомость пройденного пути, а значит основное внимание уделяется поиску наилучшего решения (пути минимальной стоимости), а не минимизации усилий, требуемых для нахождения какого-нибудь решения.