我有一个非常简单的寻路任务 - 在8x8网格上玩的棋盘游戏,每个方格都可以通过。我正在寻找的是一种算法,它会给我最好的n条路径从一个方形A到方形B(假设有任何方法)。
我一直在关注A *,但就我所知,没有明确的方法可以扩展它以找到多条路径。
所以,重要的是它提供的路径实际上是最短的n路径,它不会错过任何路径。效率也很重要。任何人都可以建议一个合适的算法,或者指出我正确的方向吗?
答案 0 :(得分:3)
答案 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,这是一个包含一些参考资料的开源实现。