【发布时间】:2019-04-06 20:54:12
【问题描述】:
我刚刚为 2D xy 网格编写了一个 A* 算法,它运行良好。但是,目前我将对角线移动与水平或垂直移动相同,实际上,如果我们用欧几里得或毕达哥拉斯术语来看,对角线移动大约要远 40%,所以如果我想为我的模型以这种方式查看它。
不过,仅此而已。你正在进一步移动 40%,但它的难度也增加了 40%。因此,如果我决定在计算中进行这种调整,似乎一切都应该“洗掉”,无论如何我应该得到基本相同的结果。我的意思是,似乎什么都不做应该没问题,而不是在对角线运动中加入“进一步移动 40%,难度增加 40%”的因素。
我的想法正确吗?
【问题讨论】:
-
A* 用于查找最短路径。我不明白“困难”与它有什么关系。如果您想识别“up, up”比“up-left, up-right”短,那么您必须认识到对角线移动更长。
-
@MattTimmermans,称之为“难度”,称之为“成本”,随便你怎么称呼。 A* 使用这种启发式方法来确定“最短”(无论定义如何)路径是什么。在我的例子中,网格上的每个图块都有一个“困难”穿过该图块,无论这意味着它是几乎没有困难的铺砌道路,还是非常困难的山脉/森林。另外,是的,正如我已经说过的,我知道对角线移动更长。问题是这是否可以忽略,因为同样的比例也更难。