3
减少图的边数,使其保持连接状态
我正在设计一个带有随机生成的地牢的游戏。我想将其视为一个连接的,无向的图,其中节点是房间,边缘是门或走廊。然后,我选择一个“侧面”节点作为地牢入口,计算该入口与所有其他节点之间的距离,并确定最远的节点之一是地牢的“目标”(宝藏,上司,公主等)。 我看到了两种生成最终地牢地形的方法: 首先生成一个随机图,然后在考虑边缘连接的情况下尝试用随机位置的房间填充2d世界。我认为这有时会很困难,因为可能会将房间生成器“锁定”以尝试将其放置在不可能的地方。 生成第一个房间,将它们随机放置在合适的位置,然后将结果映射到节点和边缘。我决定尝试一下。 我的想法包括: 首先生成一个包含整个地下城的大房间。 在大房间内的任意位置放置一堵墙,将大房间分成2个不同面积的小房间。 然后,我继续将每个房间划分为2个,直到它们变得太小或房间总数达到最大值(或其他任何条件)为止。每个新房间都是一个节点。 完成后,我检查每个房间并找到所有其他相邻的房间,将2个节点标记为通过边连接。 这样,我确保所有房间在2D世界中都有可能的位置,并通过连接的图形正确映射。 我的问题是连接房间的门和走廊太多。 因此,我想使用一种算法来减少连接的无向图的边数,但最后保持连接状态(所有节点保持可达)。