【问题标题】:Pathfinding algorithm寻路算法
【发布时间】:2013-04-03 13:32:24
【问题描述】:

我正在做一个项目,其目标是找到将 X 蚂蚁从 A 点发送到 B 点的成本更低的方式,同时限制每次只有一只蚂蚁可以站在“中间平台”上- 不知道用英语怎么说 - 除了 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* 建议的最佳选择。

【问题讨论】:

  • 我投票决定关闭它,因为问题是您正在“购买”解决方案。如果您发布 A* 示例并解释它的问题所在,那么这就提出了一个更具体、更有效的问题。建议你也加上a-star标签。
  • 好吧,我只是愿意扩大我在寻路方面的知识

标签: path-finding a-star


【解决方案1】:

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

【讨论】:

  • 是的,我之前想过,但我有一个例子,A* 会出错。我要发了。
【解决方案2】:

您可以使用 Floodfill。 Floodfill 所做的是它跟踪每条可能的路径并确定最佳解决方案,但您可以定义“最佳”。例如,您可以创建一个通过递归跟踪时间的总时间变量。可以做一个递归方法,只在到达B时返回时间变量,然后选择最短的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-05
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2017-03-02
    相关资源
    最近更新 更多