1. 程式人生 > 其它 >無向圖轉邊雙連通分量最少加邊數

無向圖轉邊雙連通分量最少加邊數

無向圖轉邊雙連通分量最少加邊數Tarjan解法

問題描述

性質和結論

性質

一個無向圖如果滿足任意兩點間存在至少2條不同的路徑,則該圖屬於邊的雙連通分量
注:兩條路徑不同是指兩條路徑中不存在任何一條公共邊
證明:

  1. 充分性:一個圖如果滿足任意兩點間都至少存在2條不同的路徑,則該圖一定為邊的雙連通分量
    採用反證法,假設一個圖滿足任意兩點間都至少存在2條不同的路徑,且該圖不是邊的雙連通分量。
    因為該圖不是邊的雙連通分量,則圖中至少存在一個橋,該橋連線兩個邊的雙連通分量,將橋去掉後,在剩下兩個連通分量中各取一點,這兩點之間的路徑一定需要經過橋,所以不滿足假設條件中的“任意兩點間都至少存在2條不同的路徑”的要求,因此假設不成立,充分性得證。
  2. 必要性:如果一個圖為邊的雙連通分量,則一定滿足圖上任意2點間至少存在2條不同的路徑

    反證法,假設一個圖是邊的雙連通分量,但圖中存在兩點,該兩點之間的路徑僅存在1條或不存在,顯然該路徑上的邊均為橋,由於存在橋,則此圖不再為邊的雙連通分量,假設不成立,必要性得證

結論

按照類似有向圖強連通分量縮點的思想,使用Tarjan將圖中邊雙連通分量進行縮點,設縮點後葉子節點數量為\(cnt\)(注:葉子節點是指度數為1的點)
\(最少加邊數 = \lceil \frac{cnt}{2} \rceil = \lfloor \frac{cnt + 1}{2} \rfloor\)
證明:該結論的證明還暫時沒有掌握,感性的理解是如果\(cnt\)為偶數,那麼葉子節點兩兩連邊從而與根節點形成環路保證其稱為邊雙連通分量;如果\(cnt\)

為奇數,那麼前偶數個葉子節點實行之前的操作,最後一個節點直接連向根節點

演算法流程

  1. 將邊雙連通分量進行縮點
  2. 統計各邊雙連通分量度數
  3. 計算葉子節點個數並計算出答案