【问题标题】:How do you find the start and end of a recursive backtracking maze?如何找到递归回溯迷宫的起点和终点?
【发布时间】:2017-01-30 19:43:51
【问题描述】:

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

【问题讨论】:

  • 您可以定义最大步数,并在找到每个组合后增加此数字。

标签: maze recursive-backtracking


【解决方案1】:

当你像这样使用递归回溯生成迷宫时:

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

【讨论】:

  • 我想找到距离最远的地方,因此最难。
猜你喜欢
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
相关资源
最近更新 更多