【发布时间】:2014-01-05 13:12:58
【问题描述】:
在我正在编写的一个简单的精英式游戏中,我无法为 AI 编写寻路程序。
这个游戏中的世界是由“虫洞”连接的少数“系统”,一艘船每回合可以从它所在的系统跳到它所连接的任何系统。人工智能仅限于知道它应该知道的事情;它不知道哪些链接来自它没有去过的系统(尽管它可以从它所见过的系统中解决它,因为链接是双向的)。 AI 的其他部分会根据其库存中的货物以及它在所经过的系统上记住的物品的价值来决定船舶需要到达哪个系统。
问题是,我不知道如何解决寻找目标系统路径的问题。我不能使用 A*;没有路径就无法确定到另一个系统的“距离”。我还需要这个算法高效,因为每次玩家轮到他时它都需要运行大约 100 次。
有人知道合适的算法吗?
【问题讨论】:
-
如果人工智能从未到过系统,因此不知道哪里有虫洞进入系统,那么人工智能就无法知道通往它的路径,也就没有算法。你的问题有点自相矛盾。
-
根据您的描述,这听起来更像是一个最大流量问题。查找 Edmonds Karps 算法。
-
@AnttiHuima 它永远不会尝试访问它没有去过的系统。如果它去过一个与未访问系统有链接的系统,它也知道虫洞从哪里进入系统;它只是不会知道所有这些链接。
-
@Martol1ni 这似乎更多是关于寻找流体向下流动的路径,这不是我在这里要做的。我试图找到一条从 A 点到 B 点的路径,其中两个点都是链接节点网络中的节点,而无法估计从一个节点到另一个节点所需的跳转次数。
-
你可以让每艘船都保存一张它已经访问过的系统的图表吗?然后当它想返回之前访问过的系统时,可以对图进行广度优先搜索,找到路径。
标签: algorithm artificial-intelligence path-finding