如何找到通过递归回溯生成的迷宫的开始和结束?
似乎很难弄清楚,因为迷宫永远不会ends
。这是你第一次开始回溯的地步吗?起点可能是你开始的地方,但有时会有一个更好的地方。
答案 0 :(得分:0)
当您使用这样的递归回溯生成迷宫时:
http://weblog.jamisbuck.org/2010/12/27/maze-generation-recursive-backtracking
然后所有细胞都连接在一起,只有一种方法可以在任何两个细胞之间移动而不需要回溯你的步骤。
您可以选择自己喜欢的任何起点和终点!
注意,像迷宫单元一样连接的图形,即,从任何顶点到任何其他顶点只有一条路径,是一个无向树。如果你想找到相距最远的两个点,以便你可以将它们用作起点和终点,那么你需要找到这棵树的直径。
有很多方法可以做到这一点,但最简单的是:
1)选择一个随机顶点开始,并使用BFS找到距离它最远的顶点。这将是你的起点。
2)使用BFS查找距起始顶点最远的/ a顶点。这是你的终点。
起点和终点尽可能远。
这个问题的答案解释了为什么总是有效:Proof of correctness: Algorithm for diameter of a tree in graph theory
请注意,相距最远的点不一定在边缘。我发现当你需要的时候,在边缘上挑选随机点就可以了。https://mtimmerm.github.io/webStuff/maze.html