棋盘游戏寻路 - 寻找多条最佳路径

时间:2011-06-05 03:35:40

标签: path-finding

我有一个非常简单的寻路任务 - 在8x8网格上玩的棋盘游戏,每个方格都可以通过。我正在寻找的是一种算法,它会给我最好的n条路径从一个方形A到方形B(假设有任何方法)。

我一直在关注A *,但就我所知,没有明确的方法可以扩展它以找到多条路径。

所以,重要的是它提供的路径实际上是最短的n路径,它不会错过任何路径。效率也很重要。任何人都可以建议一个合适的算法,或者指出我正确的方向吗?

4 个答案:

答案 0 :(得分:3)

对于像这样的大多数情况,Dijkstra是一个很好的算法,但是由于你是8x8网格,我将假设每个单元格之间的所有距离都是相等和静态的。在这种情况下,BFS(广度优先搜索)应该适合您。

答案 1 :(得分:1)

鉴于电路板尺寸较小,广度优先的详尽搜索是您应该考虑的事情。 8 x 8表示仅64个方格,x8移动(如果不允许对角线,则为4个),总搜索量非常小。

答案 2 :(得分:1)

Dijkstra很适合找到最短路径。要找到第二个,第三个......第n个最短路径,您需要使用Dijksta算法的扩展。一旦找到来自N1,N2,N3 ... Nx的最短路径,克隆该路径上的所有中间节点以创建节点N2'到Nx-1'。克隆最短路径上的所有进入边缘,除了(N1,N2')和去除边缘(Nx-1,Nx)。将所有边缘放宽到克隆路径上的节点,这些节点现在代表了从上一次迭代到达最短路径上节点的第二快方式。

答案 3 :(得分:0)

查看k-shortest paths,这是一个包含一些参考资料的开源实现。