你如何找到递归回溯迷宫的开始和结束?

时间:2017-01-30 19:43:52

标签: maze recursive-backtracking

如何找到通过递归回溯生成的迷宫的开始和结束? 似乎很难弄清楚,因为迷宫永远不会ends。这是你第一次开始回溯的地步吗?起点可能是你开始的地方,但有时会有一个更好的地方。

1 个答案:

答案 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