具有对角线移动的加权城市街区距离算法

问题描述:

测量网格中允许对角线移动的两个节点之间的距离的正确算法是什么?具有对角线移动的加权城市街区距离算法

我想过使用欧几里德距离,但被告知它是错的。我搜索了解决方案,并且此代码出现了,但我不确定它是否正确:

D * (dx + dy) + (D2 - 2 * D) * min(dx, dy) 

其中D2是对角线移动的代价。如果这个方程是正确的,我怎样才能把重量纳入它?

+0

所有相同的运动都具有相同的权重吗?那么我的意思是说,每一个对角线运动都具有与其他对角线运动相同的重量吗?并且X和Y是相同重量的运动吗? – Jeff

如果你还没有图表,你可能会想要一个。一旦你建立了一个图表,以便每个节点知道它连接的其他节点以及移动到这些节点的权重(为此创建一个边缘类),你应该能够使用Dijkstra的算法或者A *算法来找到最短的路径。 现在,您拥有最短的路径,计算与路径相称的重量/距离并不困难。

如果你不清楚图表(互联节点)让我知道,我会进一步解释。

有很多教程可以在线制作图形和加权图形。就像Dijkstra算法的智慧一样(我发现它比较容易理解,但通常运行速度稍慢)