我正在尝试为清晰地图的pacman游戏提供一个良好而快速的启发式方法。
我的启发式试图计算出pacman需要前往地图上每个食物点的最小距离。我当前的算法基本上是Prim的MST,它让我获得了一个O(n logn)的运行时间,但是没有考虑pacman需要跟随边吃的情况,以及返回到前一个顶点......
有什么更好的吗?
以另一种方式说:在不抬起笔的情况下连接多个点的最低成本是多少?
由于
答案 0 :(得分:4)
在运行全对最短路径算法并用食物识别顶点之后,这变为traveling salesman problem。你不能有效地解决它,但你可以在多项式时间内构造任意好的近似解。您可能希望使用近似值,除非您可以预先计算所有内容。如果你可以预先计算东西(或者保证你有足够的时间找到一个确切的解决方案),那么一旦你得到了所有对最短路径,你就可以找到所有可能的最小总步行长度。你吃食物的顺序的排列。通过观察两个食品之间的最短路径何时穿过另一个食品,可以稍微改善这种强力方法。