我有一个基于瓷砖的迷宫。在开始时,我知道我的坐标,目标图块的坐标,并且在每个点我可以分辨出我可以移动到的四个相邻图块中的哪一个。这意味着我必须探索迷宫,因为我试图解决它以了解更多信息。
考虑到迷宫必须要探索的扭曲,解决这个图的合适算法是什么?
答案 0 :(得分:0)
我建议研究A *算法,Dijkstra算法,D *算法,深度优先搜索和广度优先搜索。跳转点搜索。
这里有一个很好的演示:
http://qiao.github.io/PathFinding.js/visual/
如果你需要任何实施方面的帮助,请问我主要做C ++,还有Java,c#和python。
在寻路前你不需要了解'迷宫/网格',因为你只会检查直接邻居。
B C C
B A C
C C B
这里A = Agent,B = Blocked,C = Clear ..
如果你使用A *实现,你将有两个列表:
打开:添加您遇到的可移动的所有节点(在我的示例中,C是可移动节点)。
已关闭:您决定进行下一次移动,将该节点添加到已关闭列表。
成本由F(G + H)评估
G =实际成本(添加每次移动时累积),例如垂直/水平移动+10,对角线+15。
H =是你的启发式,通常你会使用类似曼哈顿距离的东西,它是从代理A到目的地D的距离,仅考虑水平和垂直运动。
所以你可以看到..你不需要知道地图的细节。