我目前正在爲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)。
每個節點最多可連接四個其他節點,每個基數一個,每個鏈路都存儲在兩側。我不需要節點以任何特定的順序進來。
我想我可以使用通用的循環檢測算法並遞歸搜索子循環,直到找到的循環沒有內部連接,但這會非常耗費資源。必須有一些屬性可以用來檢測沒有內部連接的循環,而無需迭代圖表多次,但我一直無法找到它。
你有什麼建議嗎?
應該補充說,這需要圖連接。否則,歐拉特徵將改變。 –