Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 寻找未知迷宫的路径_Search_Graph_Depth First Search_Path Finding_A Star - Fatal编程技术网

Search 寻找未知迷宫的路径

Search 寻找未知迷宫的路径,search,graph,depth-first-search,path-finding,a-star,Search,Graph,Depth First Search,Path Finding,A Star,我有一个基于瓷砖的迷宫。开始时,我知道我的坐标,目标瓷砖的坐标,在每个点上,我可以告诉我可以移动到四个相邻瓷砖中的哪一个。这意味着我必须探索迷宫,因为我试图解决它,以了解更多关于它 考虑到迷宫需要探索,解决该图的合适算法是什么?我建议研究A*算法、Dijkstra算法、d*算法、深度优先搜索和广度优先搜索。。跳转点搜索 这里有一个很好的演示: 如果你需要任何帮助,只要问一下,我主要是C++,还有java、c++和python。p> 在寻路之前,您不需要了解任何有关“迷宫/网格”的知识,因为您将

我有一个基于瓷砖的迷宫。开始时,我知道我的坐标,目标瓷砖的坐标,在每个点上,我可以告诉我可以移动到四个相邻瓷砖中的哪一个。这意味着我必须探索迷宫,因为我试图解决它,以了解更多关于它


考虑到迷宫需要探索,解决该图的合适算法是什么?

我建议研究A*算法、Dijkstra算法、d*算法、深度优先搜索和广度优先搜索。。跳转点搜索

这里有一个很好的演示:

如果你需要任何帮助,只要问一下,我主要是C++,还有java、c++和python。p> 在寻路之前,您不需要了解任何有关“迷宫/网格”的知识,因为您将只检查近邻

B、C、C

B A C

C C B

其中A=代理,B=阻塞,C=清除

如果您使用的是A*实现,您将有两个列表:

打开:添加您遇到的所有可移动节点(在我的示例C中为可移动节点)

关闭:决定下一步移动的节点,将节点添加到关闭列表中

成本由F(G+H)评估

G=实际成本(每次移动时累计),例如垂直/水平移动+10,对角线移动+15

H=是您的启发式,通常使用类似曼哈顿距离的值,即从代理A到目的地D的距离,仅考虑水平和垂直移动


如你所见。。你不需要知道地图的细节。

有许多不同的迷宫求解算法。突出显示一个少数人,他们一直在努力寻找任何考虑到有待探索的迷宫的资源。请在gamedev.stackexchange上查看关于D*算法的答案。如果这是一个完美的迷宫,您可以使用右手法则。如果您访问了两次(回溯),只需从解决方案中删除您已经看到的任何位置。