你如何找到用递归回溯生成迷宫的开始和结束? 它似乎很难弄清楚,因为迷宫从来没有ends
。这是你首先开始回溯的点吗?起点可能是你开始的地方,但有时候会有更好的地方。你如何找到递归回溯迷宫的开始和结束?
回答
当你产生这样的递归回溯一个迷宫:
http://weblog.jamisbuck.org/2010/12/27/maze-generation-recursive-backtracking
那么所有的电池连接,并有完全不追溯你的步骤中的任何两个单元之间的旅行方式之一。
你可以选择你喜欢的任何开始和结束点!
请注意,像迷宫细胞那样连接的图形,即从任何顶点到任何其他顶点都只有一条路径是无向树。如果你想找到距离最远的两个点,以便你可以使用它们作为起点和终点,那么你需要找到这棵树的直径。
有很多方法可以做到这一点,但最简单的就是:
1)随机选择一个顶点开始的,并使用BFS查找/顶点是从它最远。那将是你的起点。
2)使用BFS查找离开始顶点最远的顶点。这是你的终点。
起点和终点将尽可能地分开。
回答这个问题解释了为什么总是工作:Proof of correctness: Algorithm for diameter of a tree in graph theory
注意,是相隔最远的点不一定在边缘上。我发现,当你需要这些边缘时,随机点的选取工作正常:https://mtimmerm.github.io/webStuff/maze.html
我想找到距离最远的地方,因此变得最难。 – lol
@lol,好吧,我为此添加了内容 –
- 1. 递归回溯迷宫发生器(开始/结束)
- 2. 递归回溯生成迷宫
- 3. 回溯和递归解决迷宫问题
- 4. 使用非递归回溯算法生成迷宫的问题
- 5. 用回溯解决迷宫
- 6. Python迷宫递归
- 7. Java递归迷宫
- 8. 递归迷宫代
- 9. 递归回溯迷宫生成算法堆栈循环
- 10. Java中的递归迷宫
- 11. 迷宫的递归划分
- 12. 递归与迷宫求解
- 13. 递归求解迷宫
- 14. 陷入递归迷宫
- 15. 递归早在迷宫
- 16. 递归迷宫求解?
- 17. 递归逃脱迷宫
- 18. Java递归问题迷宫
- 19. C中的回溯迷宫求解器
- 20. 行和列迷宫递归误差
- 21. 问题解决与回溯迷宫
- 22. 如何在迷宫中追溯...?
- 23. 递归迷宫算法(在迷宫中旋转件)
- 24. 使用回溯递归算法生成迷宫时出现错误
- 25. 我无法编写代码来递归地解决迷宫问题(回溯)
- 26. 我无法显示我的迷宫从开始到结束拍摄的路径
- 27. 使用递归的python迷宫
- 28. Java解决递归问题的迷宫
- 29. 二维迷宫的递归算法?
- 30. 递归函数(迷宫求解器) - 找不到bug;(((
你可以定义最大步数,并在找到每个组合后增加这个数。 –