簡體   English   中英

合並無向圖中的循環以創建樹

[英]Merging cycles in undirected graph to create a tree

問題:給定具有循環的無向圖,請合並最少數量的節點以消除循環。

例如,下圖的解決方案:

     G      H
    / \    / \
A--B---C--D---E--F
    \ /        \
     I          J

將會

A--BCGI--DEH--F
           \
            J

我對如何解決此問題有一個粗略的想法,方法是進行廣度優先搜索,並在檢測到周期時將節點合並到根節點,但這似乎有些復雜。 我想知道是否有一個著名的算法來解決這個問題。

順便說一句:這不是家庭作業。 :)

  1. 使用BFS或DFS創建生成樹
  2. 對於不在樹中的每個邊緣,將邊緣的兩個節點以及路徑上的所有節點合並到最接近的公共祖先。

這聽起來很像您已經想到的:)。 但是,如果使用聯合查找數據結構來跟蹤合並,而不是在進行過程中實際修改圖形,則要容易得多。 參見http://www.algorithmist.com/index.php/Union_Find

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM