【问题标题】:Why do these maze generation algorithms produce mazes with different properties?为什么这些迷宫生成算法会产生具有不同属性的迷宫?
【发布时间】:2011-04-05 01:32:54
【问题描述】:

我在浏览the Wikipedia entry on maze generation algorithms 时发现该文章强烈暗示不同的迷宫生成算法(随机深度优先搜索、随机 Kruskal 算法等)会产生具有不同特征的迷宫。这似乎表明算法会在所有单解迷宫(在矩形网格上生成树)上生成具有不同概率分布的随机迷宫。

我的问题是:

  1. 这是正确的吗?也就是说,我是否正确地阅读了这篇文章,这篇文章是否正确?
  2. 如果是,为什么?我看不出不同算法会产生不同分布的直观原因。

【问题讨论】:

  • +1 - 有趣的问题。乍一看似乎很明显,但当您将其表述为可能迷宫空间上的概率分布问题时,它变得相当有趣且不明显。
  • 你的直觉如何让你相信不同的算法会产生相同的分布?

标签: algorithm random


【解决方案1】:

嗯,我认为很明显不同的算法会产生不同的迷宫。让我们只谈谈网格的生成树。假设您有一个网格 G,并且您有两种算法来生成网格的生成树:

算法A:

  1. 选择网格的任意边缘,99% 的概率选择水平边缘,否则选择垂直边缘
  2. 将边缘添加到迷宫中,除非添加它会创建一个循环
  3. 当每个顶点都连接到每个其他顶点时停止(生成树完成)

算法 B:

  1. 同算法 A,但将概率设置为 1% 而不是 99%

“显然”算法 A 产生具有大量水平通道的迷宫,而算法 B 产生具有大量垂直通道的迷宫。也就是说,迷宫中水平通道的数量与算法A产生的迷宫之间存在统计相关性。

当然,维基百科算法之间的差异更复杂,但原理是一样的。这些算法以非均匀的结构化方式对给定网格的可能迷宫空间进行采样。

LOL 我记得在一次科学会议上,一位研究人员展示了她关于她的算法的结果,该算法为“图表”做了一些事情。结果是统计的,并以“随机图”的形式呈现。有人问观众“你是从哪个分布的随机图上画的?”答案是:“呃……它们是由我们的图形生成程序生成的”。呵呵!

【讨论】:

    【解决方案2】:

    有趣的问题。这是我的随机 2c。

    将 Prim 与 DFS 进行比较,后者似乎倾向于生成更深的树,这仅仅是因为第一次“运行”有更多空间来创建具有更少分支的深度树。另一方面,Prim 的算法似乎创建了具有更多分支的树,因为在每次迭代中都可以选择任何开放的分支。

    提出这个问题的一种方法是查看每种算法产生深度 > N 的树的概率是多少。我有一种预感,它们会有所不同。证明这一点的更正式的方法可能是为树的每个部分分配一些权重,并显示它更有可能被采用或尝试以其他方式表征空间,但我会挥手并猜测它是正确的: )。我对导致您认为不会的原因很感兴趣,因为我的直觉正好相反。不,Wiki 文章没有给出令人信服的论点。

    编辑

    一种简单的方式来看待这一点,即考虑一棵初始树,该树有两个孩子,总共有 k 个节点 例如,

    *---* ... *
     \--* ... *
    

    选择一个随机节点作为开始和结束。 DFS 将产生两个迷宫之一,要么是整个树,要么是具有从头到尾的直接路径的部分。 Prim 的算法将生成具有从头到尾的直接路径的“迷宫”,辅助路径的长度为 1 ... k。

    【讨论】:

      【解决方案3】:

      在您要求每个算法产生它可以产生的每个解决方案之前,它不是统计数据。

      您所认为的统计偏差只是对首选的第一个解决方案的偏差。

      这种偏差可能不是算法(集合理论方面),而是依赖于实现(如快速排序中枢轴选择的偏差)。

      【讨论】:

      • 我不明白你在说什么。你能详细说明一下吗?链接中描述的所有算法都是经典非随机算法的随机版本。
      • 我的意思是,除非你让每个算法生成它可以生成的所有迷宫,否则没有足够的信息来限定每个算法的随机性/偏差。我没有研究过算法,所以我不知道他们是否可以产生所有可能的迷宫。
      • 实际上,如果你能证明其中一些算法不能生成所有可能的迷宫,我很确定你马上就会知道它们有不同的分布。
      【解决方案4】:

      是的,没错。您可以通过以不同方式启动该过程来制作不同的迷宫。一些算法从完全封闭的网格开始并移除墙壁以生成穿过迷宫的路径,而有些算法从空网格开始并添加墙壁并留下路径。仅此一项就可以产生不同的结果。

      【讨论】:

      • 算法可以产生不同结果的事实并没有说明这些结果的分布...例如,我可以通过拆除墙壁来创建相同的迷宫,就像将它们重新添加进去一样.
      猜你喜欢
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多