【发布时间】:2020-01-02 16:11:16
【问题描述】:
我有 NxM 板。我想为其添加 K 个障碍,但在某种程度上,仍然可以从每个空白空间到达每个其他空白空间。我希望它看起来像这样
蓝色方块是障碍物。
换句话说,我有一个图形网格,我想从中随机删除 K 个顶点而不断开它。
我知道我可以通过从一个节点执行 dfs 并删除最远的顶点来做到这一点,但它不会真的是随机的,它看起来不太好,也不是我想要的。
是否有可以做我想做的事情的算法,或者有没有人有一些想法可以测试?
编辑:典型的迷宫生成算法不适用于我的情况,因为据我了解,它们通过从图中删除边来工作,在这里我需要删除整个顶点
【问题讨论】:
-
这能回答你的问题吗? What's a good algorithm to generate a maze?
-
@fafl 不幸的是不是,因为这些算法通过从图中删除边来工作,在我的情况下,我想删除整个顶点。
-
K有什么限制? -
@Raj 无,除了它小于 NM。但是,如果它有助于解决问题,它可能会限制在 NM/2
-
似乎你需要三个规则:1)每个蓝色区域形成一棵树,即没有循环,2)一个蓝色区域的节点不能与另一个蓝色区域相邻,甚至对角线,3)每个蓝色区域只能在棋盘边缘有一个节点。一般来说,这意味着 K 必须远小于 MxN。
标签: algorithm graph-algorithm maze procedural-generation