D * -Lite算法

时间:2011-08-12 08:49:16

标签: algorithm path-finding d-star

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

我猜它发生在Move to sstart的{​​{1}}步骤中,但是第一次调用Main会毫无意义吗?并且ComputeShortestPath集应该与Succ同时插入吗?那么PredPred可以实现为双链表吗?

我已经在下面插入了算法的伪代码。 SuccPred集分别是前辈和后继者。 Succghrhs的费用和权重不同。 c是要访问的顶点的优先级队列。

U

2 个答案:

答案 0 :(得分:8)

事实证明我没有对基本思想和理论有正确的把握......我误解了“继任者”和“前任”的含义,因为我认为它的意思是“在路径顺序中“以便在路径v0->v1->v2中,v0将是v1的前身,v2是后继者。

然而,这意味着只是邻居。前一个集合是所有顶点的集合,对于给定的顶点具有“边缘”,并且后继者具有“外边缘”。

答案 1 :(得分:0)

阅读LPA *论文,你会知道它们是什么。 基本上,在LPA *中,搜索从开始位置开始。因此,后继者将是u.Pop节点周围的节点。这意味着,它们是您将从当前节点转到的节点。而Pred,它只是一个母节点。这意味着接班人的Pred是u.Pop。

在D Lite中,一切都相反。搜索从目标位置开始。 所以,对你来说有点困惑。 D Lite的后继者是LPA *中的Pred。所以,继承者= U.pop。 D Lite的Pred是LPA的继承者。因此,Pred是您将从后继者那里获得的节点。

希望你能理解我的英语不好。