我目前正在为Unity开发基于节点的房屋建造者。该系统的工作流程非常简单:用户可以创建简单的立方体节点,并将它们相互连接以创建墙壁。网格处理已经完成,它工作得很好,平稳。在无向图中寻找独特的循环
我现在要做的是检测已创建了多少封闭房间以及每个房间中包含了哪些顶点。可能的输入可以看出,在以下图象:
在第一张照片,环将是
(1,5,3,4),(1, (6,9,12,11,10,8),(8,10,14,13)和(10,11,17,16,15,14)。
在第二个他们会
(1,2,5,6,8,7),(2,3,4,14,13,6,5), (6,13,12,11,10)和(8,6,10,9)。
每个节点最多可连接四个其他节点,每个基数一个,每个链路都存储在两侧。我不需要节点以任何特定的顺序进来。
我想我可以使用通用的循环检测算法并递归搜索子循环,直到找到的循环没有内部连接,但这会非常耗费资源。必须有一些属性可以用来检测没有内部连接的循环,而无需迭代图表多次,但我一直无法找到它。
你有什么建议吗?
应该补充说,这需要图连接。否则,欧拉特征将改变。 –