繁体   English   中英

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

[英]A* and diagonal movement cost on 2D x,y grid

我刚刚为 2D xy 网格编写了一个 A* 算法,它工作正常。 然而,目前我把对角移动和水平或垂直移动一样对待,实际上如果我们用欧几里得或毕达哥拉斯的术语来看待它,对角移动大约是进一步的 40%,所以它应该更难做大约 40%,如果我想以这种方式查看我的模型。

然而,仅此而已。 你前进了 40%,但要做到这一点的难度也增加了 40%。 因此,如果我决定在我的计算中进行这种调整,似乎一切都应该“消失”,无论如何我应该得到基本相同的结果。 我的意思是,似乎什么都不做应该没问题,而不是在对角线运动中添加“进一步移动 40%,难度增加 40%”的因素。

我是否正确地考虑了这一点?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM