【问题标题】:Weighted city-block distance algorithm with diagonal movement对角线移动的加权城市街区距离算法
【发布时间】:2015-09-19 22:20:07
【问题描述】:

测量网格中允许对角线移动的两个节点之间的距离的正确算法是什么?

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

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

其中 D2 是对角线移动的成本。如果这个等式是正确的,我怎样才能将重量纳入其中?

【问题讨论】:

  • 所有相同的动作是否具有相同的重量?我的意思是每个对角线运动都与其他对角线运动具有相同的重量吗? X 和 Y 运动的重量是否相同?

标签: distance path-finding diagonal


【解决方案1】:

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

如果您不清楚什么是图表(互连节点),请告诉我,我会进一步解释。

网上有很多制作图表和加权图表的教程。与 Dijkstra 的算法一样明智(我发现它比 A* 更容易理解,但通常运行速度稍慢)

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多