我正在浏览维基百科关于迷宫生成算法的词条,发现这篇文章强烈暗示不同的迷宫生成算法(随机深度优先搜索、随机克鲁斯卡尔等)会产生具有不同特征的迷宫。这似乎表明,这些算法会在所有单解迷宫(矩形网格上的生成树)的集合上产生具有不同概率分布的���机迷宫。
- 这是正确的吗?也就是说,我是否正确地阅读了这篇文章,而且这篇文章是否正确?
- 如果是,为什么呢?我没有看到不同算法产生不同分布的直观原因。
我正在浏览维基百科关于迷宫生成算法的词条,发现这篇文章强烈暗示不同的迷宫生成算法(随机深度优先搜索、随机克鲁斯卡尔等)会产生具有不同特征的迷宫。这似乎表明,这些算法会在所有单解迷宫(矩形网格上的生成树)的集合上产生具有不同概率分布的���机迷宫。
有趣的问题。这里是我的随机想法。
比较Prim算法和DFS算法,后者似乎更倾向于生成深度更深的树,仅仅是因为第一次“运行”有更多的空间可以用较少的分支创建深度更深的树。另一方面,Prim算法似乎会创建具有更多分支的树,因为每次迭代都可以选择任何开放的分支。
一个问法是看看每个算法产生深度> N的树的概率是多少。我有一种预感它们会不同。更正式的方法是给树的每个部分分配一些权重,并显示更可能被采取或尝试以某种其他方式表征空间,但我会手摆手并猜测它是正确的 :)。 我对于你认为它不会的原因很感兴趣,因为我的直觉是相反的。不,维基百科的文章没有给出令人信服的论据。
编辑
一个简单的方法是考虑一个初始树,它有两个孩子,总共有k个节点,例如:
*---* ... *
\--* ... *
选择一个随机节点作为起点和终点。深度优先搜索算法将生成两种迷宫之一,即整个树或者从起点到终点的直接路径部分。Prim算法将生成从起点到终点的“迷宫”,其中包括长度为1...k的次要路径。
只有在您要求每个算法生成其可能的所有解决方案时,它才是统计学的。
您所感知到的统计偏差只是对首选第一解决方案的偏见。
这种偏见可能不是算法性质(集合论上),而是实现相关的(例如快速排序中枢选择的偏见)。
是的,这是正确的。您可以通过以不同的方式开始过程来生成不同的迷宫。一些算法从完全关闭的网格开始,通过移除墙壁来生成迷宫中的路径,而另一些算法则是从空网格开始,通过添加墙壁来留下一条路径。这本身就可以产生不同的结果。