从A到B的棋盘上最便宜的路径。转弯和移动成本不同

时间:2012-03-03 16:03:58

标签: 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个移动成本。

我调查了Dijkstra Algorithm,但我认为这与我的问题无关。

最简单的解决办法是什么?

2 个答案:

答案 0 :(得分:1)

最小移动次数总是 | X B -X A | + | Y B - ÿ<子> A |我们只需转一圈即可始终

示例:从(1,2)移动到(4,6):

3 moves right: 1500
1 turn:         100
4 moves down:  2000
               ----
               3600

我们不能用较少的动作来做,只有更多的转弯。

答案 1 :(得分:0)

您应该使用A *算法

要计算G成本,您可以使用您的值,但我建议1用于移动北,东,南和西。移动Norht-East,东南,西南和西北的sqrt(1 * 1 + 1 * 1)= sqrt(2)= 1.14。

好啧啧(试过我自己):

http://www.policyalmanac.org/games/aStarTutorial.htm

当你想要的不仅仅是一条道路时,另一个好的啧啧: (路径优化,通常这个tut中描述的方法会使路径更快,只有当你的角色可以在8个以上的方向移动时,这个tut才有效。)

http://www.gamasutra.com/view/feature/131505/toward_more_realistic_pathfinding.php