关于路径查找:对D *算法的外行人的详细描述

时间:2008-10-23 01:58:21

标签: algorithm path-finding d-star

我希望处理的大型网络(小世界图形类型)本质上是动态的,经常添加和删除新节点。据推测,在A *上使用D *是检测这种动态环境中路径的更好方法吗?

D *有多坚固?它有任何现实世界的经验吗?像加密算法一样 - 是否通过大量的同行评审和测试来强化?你会用D *来解决这个问题吗?

2 个答案:

答案 0 :(得分:14)

据我所知,第一次运行D *时,它找到与A *相同的路径,运行时几乎相同。但是,当一个节点改变它的边缘值或添加节点时A *重新计算所有路径,而D *只是第二次重新计算不一致的节点而不是整个事物。

Anthony Stentz的D *算法(原始白皮书here)在很大程度上被其作品的衍生物所弃用。 D * Lite和LPA *是最常见的,并且更容易编码/实现。

就现实世界的经验而言,来自美国宇航局喷气推进实验室的Joseph Carsten和Art Rankin在火星车“精神”和“机遇”上使用D * Lite的元素安装了Field D *版本(使用D的漫游者幻灯片* here)。在2007年2月,它被用来自动完全驾驶火星车。

alt text http://asm.arc.nasa.gov/Gallery/images/generic/rover.jpg

显然D *在机器人领域非常有用,因为机器人车载传感器不断重新评估边缘值。这将使我在自己的观点中进行“战斗测试”。

同样,我发现另一个whitepaper提到在移动游戏中使用D * Lite算法。

我将结束这个回答,说明我之前从未实施过D *,只有A *。由于复杂性的显着增加,我会说D *(或D * Lite)仅应用于图中存在显着且频繁变化的情况。你描述了你的情况类似于那样我肯定会说D * Lite。如果美国宇航局使用它,你可以安全地打赌它已被彻底调查过。

答案 1 :(得分:0)

我已经实现了D *和A *算法。所以,我建议你,如果你的地图没有动态障碍,你应该实现A *。否则,实施D *。主要原因是: 在第一次搜索时,D *计算地图中的所有节点,然后显示最短路径,而A *仅计算目标周围的有限区域和地图中的起点。所以,它比D *快得多。 在动态环境中,D *比A *更快,更有效。因为在机器人行进的路上,如果它检测到新的障碍物,它只会更新意外障碍周围的几个节点。而A *会再次计算所有事情。