我试图随机生成一个有向图,目的是制作一个类似于口袋妖怪冰滑动拼图的益智游戏。
这基本上是我想要随机生成的:http://bulbanews.bulbagarden.net/wiki/Crunching_the_numbers:_Graph_theory
我需要能够在x和y维度上限制图形的大小。在链接的示例中,它将被限制为8x4网格。
我正在运行的问题不是随机生成图形,而是随机生成一个图形,我可以在2d空间中正确映射,因为我需要在节点的另一侧有某些东西(如岩石)来制作它当你停止滑动时视觉上有意义。这个问题有时候岩石最终会在另外两个节点之间的路径上或者可能在另一个节点本身之间,这会导致整个图形被破坏。
在与我认识的一些人讨论问题之后,我们得出了一些可能导致解决方案的结论。在构建时将网格中的障碍作为图形的一部分包括在内。从一个完全填充的网格开始,只绘制一个随机路径并删除将使该路径工作的块,但问题就是弄清楚要删除哪些,这样你就不会意外地引入一条额外的,更短的路径。我们也在考虑动态编程算法可能是有益的,尽管我们都不熟悉从无到有创建动态编程算法。关于这个问题被正式调用的任何想法或参考(如果它是官方图形问题)将是最有帮助的。
我不会将其视为图形问题,因为正如您所说,表示不完整。要生成一个谜题,我会直接在网格上工作,然后向后工作;首先修复目标点,然后以某种方式放置岩石以从一个或多个点到达它,并迭代地添加石块以到达那些其他点,其约束条件是您永远不会添加石头,从而打破到目的地的所有路径。
您可能希望生成planar graph,这意味着图形的边缘在二维空间中不会彼此重叠。平面图的另一个定义是每个平面图不具有K_3,3类型的完整子图(具有六个节点的完全双部分)或K_5(具有五个节点的完整图)。
在快速生成的平面图上有一个paper。