gpt4 book ai didi

algorithm - D*-Lite 算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:33:04 27 4
gpt4 key购买 nike

我正在尝试实现 D*-Lite 寻路算法,如 2002 article 中所述由 Koenig 和 Likhachev 为 Boost::Graph 编写。我想我已经很好地掌握了它背后的基本思想和理论,但是当 PredSucc 集更新时,我在理解上遇到了问题。

我猜它发生在 Main 中的 Move to sstart 步骤中,但是随后对 ComputeShortestPath 的第一次调用将毫无意义? Succ 集是否应该仅与 Pred 同时插入?那么PredSucc可以实现为双向链表吗?

我在下面插入了算法的伪代码。 PredSucc 集分别是前驱和后继。 ghrhsc是不同的代价和权重。 U 是要访问的顶点的优先级队列。

procedure CalculateKey(s)
{01’} return [min(g(s), rhs(s)) + h(sstart, s) + km; min(g(s), rhs(s))];

procedure Initialize()
{02’} U = ∅;
{03’} km = 0;
{04’} for all s ∈ S rhs(s) = g(s) = ∞;
{05’} rhs(sgoal) = 0;
{06’} U.Insert(sgoal, CalculateKey(sgoal));

procedure UpdateVertex(u)
{07’} if (u ≠ sgoal) rhs(u) = min s'∈Succ(u)(c(u, s') + g(s'));
{08’} if (u ∈ U) U.Remove(u);
{09’} if (g(u) ≠ rhs(u)) U.Insert(u, CalculateKey(u));

procedure ComputeShortestPath()
{10’} while (U.TopKey() < CalculateKey(sstart) OR rhs(sstart) ≠ g(sstart))
{11’} kold = U.TopKey();
{12’} u = U.Pop();
{13’} if (kold ˙<CalculateKey(u))
{14’} U.Insert(u, CalculateKey(u));
{15’} else if (g(u) > rhs(u))
{16’} g(u) = rhs(u);
{17’} for all s ∈ Pred(u) UpdateVertex(s);
{18’} else
{19’} g(u) = ∞;
{20’} for all s ∈ Pred(u) ∪ {u} UpdateVertex(s);

procedure Main()
{21’} slast = sstart;
{22’} Initialize();
{23’} ComputeShortestPath();
{24’} while (sstart ≠ sgoal)
{25’} /* if (g(sstart) = ∞) then there is no known path */
{26’} sstart = argmin s'∈Succ(sstart)(c(sstart, s') + g(s'));
{27’} Move to sstart;
{28’} Scan graph for changed edge costs;
{29’} if any edge costs changed
{30’} km = km + h(slast, sstart);
{31’} slast = sstart;
{32’} for all directed edges (u, v) with changed edge costs
{33’} Update the edge cost c(u, v);
{34’} UpdateVertex(u);
{35’} ComputeShortestPath();

最佳答案

事实证明,我没有对基本思想和理论有很好的掌握......我误解了“继任者”和“前任”的意思,因为我认为它的意思是“按路径顺序”,这样在路径 v0->v1->v2 中,v0 将成为 v1 的前身,而 v2 的后继者。

然而,这里指的仅仅是邻居。前导集是给定顶点具有“入边”的所有顶点的集合,后继集具有“出边”。

关于algorithm - D*-Lite 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com