【问题标题】:Javascript - Randomized Prim's algorithm problemRandomized Prim's algorithmJavascript - Randomized Prim's algorithm问题​​Randomized Prim's algorithm
【发布时间】:2012-02-29 22:06:36
【问题描述】:

我正在尝试在 javascript 中创建一个随机迷宫生成器。

可能已经有工作示例,但我正在尝试自己解决这个问题(嗯,尽可能多)

我遇到的问题是我的脚本只运行了几个块然后停止。

我认为问题在于我对我所遵循的解释的理解(来自此维基百科页面http://en.wikipedia.org/wiki/Maze_generation_algorithm

此算法是 Prim 算法的随机版本。

  1. 从一个充满墙壁的网格开始。

  2. 选择一个单元格,将其标记为迷宫的一部分。将单元格的墙壁添加到墙壁列表中。

  3. 虽然列表中有墙:

    1. 从列表中随机选择一堵墙。如果对面的牢房还没有进入迷宫:

      1. 将墙壁设为通道,并将对面的单元格标记为迷宫的一部分。

      2. 将单元格的相邻墙添加到墙列表中。

    2. 如果对面的牢房已经在迷宫中,请从列表中删除墙。

正如我所强调的那样,我的问题在于其相反的一面。这是否意味着我们墙列表中的任何相邻单元格?还是有别的意思?

我已经用相邻的单元格尝试过,它最终只是把自己挡在了里面。

任何想法都将不胜感激。

如果我可以让它工作,我会在完成后发布代码。正如我所说,在获得完整解决方案的帮助之前,我想自己走得更远。

【问题讨论】:

  • 如果这是家庭作业,请标记它。
  • 哈哈哈根本没有!我一直在玩一个 a* 寻路算法,我想为它做一个迷宫!

标签: javascript maze prims-algorithm


【解决方案1】:

一堵墙代表了两个不同细胞之间的连接。当您将一堵墙添加到您的墙列表中时,这是因为您正在访问一个将成为迷宫一部分的单元,因此当它指的是对面的单元时,它意味着该单元“在”该墙“后面”,如果那堵墙不在那里。

【讨论】:

  • 啊,我知道这可能是我跌倒的地方。我的墙只是另一个街区。我还能应用这个算法吗?
  • 好吧,算法没有指定任何实现细节,所以只要你与你表示单元格和墙壁的方式以及你对待它们的方式一致,那么你应该没有任何问题
  • 嗯我可能看错了。我看到的是因为我有一个 10 x 10 的正方形。我在那个正方形中选择一个块并将其设置为我的起始块。我将其周围的 4 个块添加到我的墙壁列表中.. 并应用算法.. 虽然从我所看到的每个示例以及我猜你的说法来看.. 这是错误的吗?
  • 如果你想让每个块都代表一个单元格是错误的,因为你会将它们用作墙。我之前刚刚说过的是,如果您确实希望它是那样的,那并没有错,因此是该选择的结果。确实,这不是自然的方法,因此您很可能不希望它是那样的。在这种情况下,您将有 2 种不同的数据结构,一种用于表示单元格(假设是一个 * m 矩阵),另一种用于表示墙壁(一对坐标列表,每个坐标代表一个单元格的位置,每对代表连接的两堵墙)
  • 我和你在一起。我一直缺少的是任何方向计算。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2019-09-17
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2018-09-14
  • 2021-08-18
相关资源
最近更新 更多