A *启发式:在多个点中传递一次的最短路径

时间:2009-05-28 01:18:15

标签: algorithm shortest-path pacman

我正在尝试为清晰地图的pacman游戏提供一个良好而快速的启发式方法。

我的启发式试图计算出pacman需要前往地图上每个食物点的最小距离。我当前的算法基本上是Prim的MST,它让我获得了一个O(n logn)的运行时间,但是没有考虑pacman需要跟随边吃的情况,以及返回到前一个顶点......

有什么更好的吗?

以另一种方式说:在不抬起笔的情况下连接多个点的最低成本是多少?

由于

1 个答案:

答案 0 :(得分:4)

在运行全对最短路径算法并用食物识别顶点之后,这变为traveling salesman problem。你不能有效地解决它,但你可以在多项式时间内构造任意好的近似解。您可能希望使用近似值,除非您可以预先计算所有内容。如果你可以预先计算东西(或者保证你有足够的时间找到一个确切的解决方案),那么一旦你得到了所有对最短路径,你就可以找到所有可能的最小总步行长度。你吃食物的顺序的排列。通过观察两个食品之间的最短路径何时穿过另一个食品,可以稍微改善这种强力方法。