Path finding Pacman的寻路算法

Path finding Pacman的寻路算法,path-finding,pacman,Path Finding,Pacman,我想实现“吃豆人”游戏。对于人工智能,我想使用A*算法,在很多论坛上都看到了。然而,我对一些简单的寻路(从a点到b点,中间有一些障碍物)实施了广度优先搜索,发现它总是给出最佳路径。我想这可能是因为在像《吃豆人》这样使用简单寻路的游戏中,图表中没有成本的概念。因此,如果我在Pacman中使用BFS而不是*进行寻路,可以吗?如果不使用边权重,BFS将始终提供最短路径。如果您不需要边权重,我会使用它。你以后可以随时切换。这要看情况,你真的想让幽灵像吃豆人一样工作吗 (它们各自的工作方式不同)。请务必阅

我想实现“吃豆人”游戏。对于人工智能,我想使用A*算法,在很多论坛上都看到了。然而,我对一些简单的寻路(从a点到b点,中间有一些障碍物)实施了广度优先搜索,发现它总是给出最佳路径。我想这可能是因为在像《吃豆人》这样使用简单寻路的游戏中,图表中没有成本的概念。因此,如果我在Pacman中使用BFS而不是*进行寻路,可以吗?

如果不使用边权重,BFS将始终提供最短路径。如果您不需要边权重,我会使用它。你以后可以随时切换。

这要看情况,你真的想让幽灵像吃豆人一样工作吗


(它们各自的工作方式不同)。请务必阅读上述章节,了解他们实际上是如何达到目标的。该页面对吃豆人进行了非常深入的分析,读起来很有趣。

相关问题,可能回答了您的问题:

视情况而定。BFS既完整又优化(从某种意义上说,它找到了最佳解决方案)

缺点是什么?可能需要很长很长时间才能找到它!此外,根据问题的影响因素,您可能会很快耗尽内存

如果您没有性能问题,则保留BFS,但如果您想在一个巨大的迷宫中尝试,则可能需要一段时间才能找到解决方案


我建议你试试A*,最好的搜索策略。即使你在BFS上没有问题,A*是一个很好的实现算法,你也会学到很多很酷的东西。

你可能想考虑Pacman的原始设计者使用的反对象方法,你可以阅读它和./P> 但是,要回答您的问题,请使用有效的方法!如果你从BFS中获得了很好的结果,就使用它。请记住,要充分抽象寻路,以便在以后找到更好的方法时可以替换它


祝你好运

对于路径查找,请注意以下几点

  • BFS将比a*看到更多的节点,这使得它的速度要慢得多
  • A*将给出与BFS相同的答案
  • A*非常容易实现
    • 作为你的启发-这是非常容易实现,并导致非常有效的搜索
    • 查看了解更多信息(整个系列非常有趣)

如果你在谈论鬼AI,请查看Chad提到的页面:-鬼实际上只是使用欧几里德距离来确定如何到达目标瓷砖,这使得他们在某些情况下很难找到吃豆人。

谢谢!我有一种预感,这可能是因为casebfs的速度太慢了,但对于一个简单的吃豆人游戏来说,这不太重要。谢谢Chad。我以前没有读过那篇文章。不幸的是,吃豆人的拆卸已经被移除。正如你所说,A*在一般情况下不是最优的。只有在给定一个可接受且一致的启发式条件下,才能保证找到最优解。@bj如果你在一般情况下是正确的;我说的是使用网格上的曼哈顿距离(即吃豆人迷宫)。在这种情况下,启发式既可接受又一致,A*将给出与BFS相同的答案。