Java 棋盘上从a到B的最便宜路径。转弯和移动成本不同
我们有一个x和y坐标为正的棋盘Java 棋盘上从a到B的最便宜路径。转弯和移动成本不同,java,algorithm,Java,Algorithm,我们有一个x和y坐标为正的棋盘 0,0 1,0 2,0 ... 0,1 1,1 2,1 ... 0,2 1,2 2,2 ... ... ... ... ... 我们必须找到从A到B的最便宜的路线,因为每一步的转弯成本为100能源,移动成本为500 我已经调查过了,但我认为这与我的问题无关 最简单的解决方法是什么?最少的移动次数总是| XB-XA |+| YB-YA |,而且我们总是只需一圈就可以做到 示例:从(1,2)移动到(4,6): 我们不能少走几步,只能多转几圈。你应该使
0,0 1,0 2,0 ...
0,1 1,1 2,1 ...
0,2 1,2 2,2 ...
... ... ... ...
我们必须找到从A到B的最便宜的路线,因为每一步的转弯成本为100能源,移动成本为500
我已经调查过了,但我认为这与我的问题无关
最简单的解决方法是什么?最少的移动次数总是| XB-XA |+| YB-YA |,而且我们总是只需一圈就可以做到 示例:从(1,2)移动到(4,6):
我们不能少走几步,只能多转几圈。你应该使用A*算法 为了计算G成本,你可以使用你的值,但我建议1用于北移、东移、南移和西移。sqrt(1*1+1*1)=sqrt(2)=1.14,用于向东北、东南、西南和西北移动 好图坦卡蒙(试过自己): 当您想要的不仅仅是一条路径时,另一个很好的提示: (路径优化,通常本图坦卡蒙中描述的方法会使路径更快,本图坦卡蒙仅在角色可以向8个以上方向移动时才有效)
读一下迈克的故事,我会读的,谢谢!这个问题要么微不足道,要么没有很好地说明。无障碍矩形场地上最便宜的路径是水平,然后垂直(反之亦然);不考虑初始方向,只需转一圈,然后
dx+dy
移动。是的,但这始终是最便宜的路线吗?考虑到转动的成本比移动一步要低。除非棋子可以“摆动”到目标(比如,3.5圈将使一个棋子前进相当于一步),是的,它总是最便宜的。拿出你的棋盘,自己数数。如果球场上有障碍,那就完全不同了@Andreas_D的回答告诉你同样的事情。对于A*你通常使用hueristic,这是一种对距离目标的理想估计,它总是低估(或准确)。在没有障碍物的棋盘上,启发式是距离目标的距离。所以A*太过分了。我应该说它没有障碍,对不起。尽管如此,还是要感谢你,以后可能会添加障碍物。初始定向可能会起作用,并且需要不止一个回合。在这种情况下,你只需要转弯,或者如果你面对的是一个最终需要走的方向,那么先走那条路。如果A、B和初始方向是随机的,你需要0圈的几率很小,略高于50%的几率需要1圈,略低于50%的几率需要2圈。
3 moves right: 1500
1 turn: 100
4 moves down: 2000
----
3600