寻路算法

时间:2013-04-03 13:32:25

标签: path-finding a-star

我正在做一个项目,其目标是找到从A点到B点发送X蚂蚁的转弯成本较低的方式,限制条件是一次只有一只蚂蚁可以站在“中间平台” - 不知道如何用英语说 - 除了A点和B点。

我已经研究过像A *或Dijkstra这样的算法,但是他们只关注从A点到B点的最短路径,在某些情况下,这不是最好的,因为你宁愿采取2个较长的路径,并在一个回合中发送更多的蚂蚁。

这就是我需要你的地方。你们知道这样的算法吗?

希望我对我的问题很清楚,并期待得到答案。 感谢。

编辑:以下是A *不起作用的示例:

-L-M-N-O-P-S-T-U-V-W-X-Y-Z--|    Going from one letter
|                  |        |    to another costs 1 turn
H-----I-----J------K        |
|                  |        |
START--A-B-C-D-E-F-G-------END

如果我有17只蚂蚁,最好的选择是在方向上一次发送2只蚂蚁:

  • START-H-I-J-K-W-X-Y-Z-END
  • START-A-B-C-d-E-F-G-END
而不是全部在START-H-I-J-K-G-END中,因为A *会建议作为最佳选择。

2 个答案:

答案 0 :(得分:0)

您可以使用A *来解决您的问题,您只需动态调整地图以考虑蚂蚁的位置

答案 1 :(得分:0)

你可以使用floodfill。洪水填充的作用是追踪每条可能的路径并确定最佳解决方案,但您可以定义最好的"。例如,您可以创建一个跟踪递归时间的总时间变量。您可以创建一个递归方法,只在到达B时返回时间变量,然后选择最短的值。