当没有节点坐标可用时的*启发式算法

时间:2014-03-21 20:03:22

标签: algorithm search a-star

情景:

  

假设我有一个带有边权重的大伪随机图,但没有任何与节点相关的坐标信息。此外,       有N个航点均匀分布在图表周围,包含       从每个航路点到每个其他节点的预先计算的最短路径信息。

目标:

  

找到随机源节点和目标节点之间的最短路径。

根据我之前使用A *解决的问题以及我在该主题上阅读的论文,启发式算法似乎依赖于欧几里德度量来计算良好的距离近似,例如:一条直线。

我的问题是:是否有任何可以帮助我解决上述情况的好的启发式,或者我被迫依赖纯粹的Dijkstra算法(与预先计算的航路点节点相结合)?

非常感谢任何想法或评论。

修改

感谢所有帮助过的人,利用三角不等式就可以了。最近的航点计算非常昂贵,因此与纯Dijkstra相比,平均运行时间要高得多,但此时此时并不重要。

这里概述了已探索节点的数量(每种图表类型的随机源/目标): number of explored nodes vs. graph type

第一个图表类型(1) 200个节点 250个边组成,而最后一个图类型(40个) ) 8000个节点 10000个边组成(更高的类型意味着更大的图形)。

2 个答案:

答案 0 :(得分:4)

我们希望从A到B的最短路径长度采用乐观的启发式方法。

找到距离A最近的航点。称之为W。

然后max {d(W,B) - d(W,A),0}是从A到B的最短路径长度的下限。

  

<强>证明:

     

通过三角不等式,我们得到d(W,B)≤d(W,A)+ d(A,B)。

     

因此d(A,B)≥d(W,B)-d(W,A)。

你可以对称地应用这个想法,以获得更好的界限。也就是说,找到最近的航路点WA到A和最近的航点WB到B然后你的下界是

max {d(WA,B) - d(WA,A),d(WB,A) - d(WB,B),0}

这种启发式的好处在于它随着航点密度的增加而明显改善。

答案 1 :(得分:-1)

你的启发式可以是:

shortest path distance between source and closest waypoint +
shortest path distance from that waypoint to your target node

修改

正如尼克拉斯指出的那样,这种启发式方法是不可接受的。因此,它不能用于A *。请不要理会。