2D x,y网格上的A *和对角线移动成本

时间:2019-04-06 20:54:13

标签: algorithm search

我刚刚为2D xy网格编写了A *算法,并且效果很好。但是,目前,我将对角线移动与水平或垂直移动相同,实际上,如果以欧几里得或毕达哥拉斯的角度来看,对角线移动大约要多40%,因此,如果做到这一点,对角移动的难度将增加约40%我想以这种方式查看我的模型。

但是,仅此而已。您将前进40%,但执行起来也困难40%。因此,如果我决定在计算中进行此调整,似乎所有内容都应该“被淘汰”,无论如何我应该获得基本相同的结果。我的意思是,似乎什么也没做就可以了,而不是对角线运动增加“ 40%的难度再增加40%”的因素。

我正确地考虑了吗?

1 个答案:

答案 0 :(得分:0)

如果你绘制一个粗略的 4x4 节点网格。尝试测试起始节点和目标节点之间的各种路由。你会看到你在很大程度上是正确的。但是请尝试开始在左上角而目标在右上角的情况。它的 3 个水平动作才能到达那里,太棒了。如果对角线的权重相同……您可以创建一个船形形状(垂直向下、垂直向下、垂直向上),这也是 3 个动作。你知道对角线确实走得更远,所以你知道算法中需要有一些东西来说明水平路线是最好的。邻居 r 考虑的顺序可能会使这个额外的成本无关紧要。如果对角线和水平线的 f 值相同……它仍然必须在 1 或另一个之间进行选择。所以这取决于你在比较 f 值时如何从你的开放/前沿表中的池中选择你的“当前节点”。这真的取决于你如何设置你的算法以及它的用途是什么,你可能根本不需要做任何事情。