Изменения

Перейти к: навигация, поиск

Алгоритм D*

48 байт добавлено, 23:04, 4 января 2014
м
Нет описания правки
\begin{cases}
0,& \text{if } s = s_{start} \\
min_\min\limits_{s' \in Pred(s)}(g(s') + c(s', s),& \text{otherwise}
\end{cases}
</tex>
{
if (<tex>u \ne s_{start}</tex>)
<tex>rhs(u) = min_\min\limits_{s' \in Pred(u)}(g(s') + c(s',u));</tex>
if (<tex>u \in U</tex>)
U.Remove(u);
'''UpdateVertex'''(u):
if (<tex>u \ne s_{goal}</tex>)
rhs(u) = <tex>min_\min\limits_{s' \in Succ(u)}(c(u,s')+g(s'));</tex>
if (<tex>u \in U</tex>)
U.Remove(u);
while (<tex>s_{start} \ne s_{goal}</tex>)
// if (<tex>g(s_{start}) = \infty</tex>) тогда путь на данной итерации не найден.
<tex>s_{start}</tex> = такая вершина s', что <tex>min_\min\limits_{s' \in Succ(s_{start})}(c(s_{start}, s') + g(s'))</tex>
Передвинулись вдоль найденного пути и изменили вершину <tex>s_{start}</tex>;
Сканируем роботом какие-либо изменения в графе или убеждаемся, что граф остается прежним.
'''UpdateVertex'''(u):
if (<tex>u \ne s_{goal}</tex>)
rhs(u) = <tex>min_\min\limits_{s' \in Succ(u)}(c(u,s')+g(s'));</tex>
if (<tex>u \in U</tex>)
U.Remove(u);
while (<tex>s_{start} \ne s_{goal}</tex>)
// if (<tex>g(s_{start}) = \infty</tex>) тогда путь на данной итерации не найден.
<tex>s_{start}</tex> = такая вершина s', что <tex>min_\min\limits_{s' \in Succ(s_{start})}(c(s_{start}, s') + g(s'))</tex>
Передвинулись вдоль найденного пути и изменили вершину <tex>s_{start}</tex>;
Сканируем роботом какие-либо изменения в графе или убеждаемся, что граф остается прежним.
418
правок

Навигация