圖論:橋(割邊)和割點

定義

對於無向圖,如果刪除了一條邊,**整個圖的聯通分量數量變化,**則這條邊稱爲橋
如圖,紅色標註的線就是該圖的一條橋(頂點3和頂點5的邊).
示例橋

性質

  • 一個圖中可以有多條橋
    如下圖,紅色的邊都是圖中的橋
    一個圖中可以有多條橋

  • 一棵樹的所有邊都是橋
    如下圖,紅色邊都是圖中的橋,一顆樹中任意一條邊的斷開都會導致圖中聯通分量發生變化
    一棵樹的所有邊都是橋

尋找橋

  • 設置兩個數組,Order和Low,並將已訪問過的頂點置爲綠色
    • Order表示當前頂點遍歷的順序
    • Low表示當前頂點能訪問到的頂點的最小值
  • 遞歸遍歷,給0-1-3-2頂點依次標上Order和Low,並且將已訪問過的頂點置爲綠色,如下圖
    在這裏插入圖片描述
  • 在頂點2時 所有連接的頂點都已被訪問,並且可以訪問到的最小頂點爲0,故將Low[2]置爲0,並且將頂點置爲綠色
    在這裏插入圖片描述
  • 回退到頂點3,將Low[3]的值置爲min(Low(2),Low(0))
    在這裏插入圖片描述
  • 訪問頂點3的另一個連接的頂點5,並依次給5-4-6標上Order和Low,並且將已訪問過的頂點置爲綠色,如下圖
    在這裏插入圖片描述
  • 到達頂點6時,其連接的頂點都被遍歷過,此時將Low[6]置爲min(Low(5), Low(4)),並將節點置爲綠色
    在這裏插入圖片描述
  • 回退到頂點4,其連接的頂點都被遍歷過,此時將Low[4]置爲min(Low(5), Low(6))
    在這裏插入圖片描述
  • 回退到頂點5,此時的Low[5]>Order[3],即頂點5無法訪問到頂點3的祖先頂點的,故頂點3-頂點5是一條橋,如下圖
    重新複習下Order和Low的定義
    • Order表示當前頂點遍歷的順序
    • Low表示當前頂點能訪問到的頂點的最小值
      在這裏插入圖片描述
  • 依次回退到頂點3-1,到達頂點1時,其連接的頂點都被遍歷過,此時將Low[1]置爲min(Low(3), Low(0))
    在這裏插入圖片描述
  • 至此,查找完成,在圖中有且存在一條橋(頂點3-頂點5),整個過程的動圖如下
    查找橋(動圖)

查找橋使用了深度優先遍歷(DFS),可否使用廣度優先遍歷(BFS)? -> 不能!

詳情請看BFS遍歷樹和DFS遍歷樹

割點

定義

對於無向圖,如果刪除了一個頂點(頂點鄰邊也刪除),整個圖的聯通分量數量改變,則稱這個頂點爲割點,如下圖,頂點3和頂點5就是該圖的兩個割點
示例

性質

與橋的性質類似

  • 一個圖可以有多個割點
  • 橋兩邊的點不一定是割點,如一棵樹
  • 一棵樹不是每一個點都是割點(一棵樹的每一條邊都是橋)

查找割點

注意:以下描述中,分爲頂點和節點,頂點爲圖中的每一個頂點,節點爲遍歷樹中的每一個節點
同尋找橋一致,給各個頂點標記上Order和Low(詳情請參照文章前部的尋找橋)
在這裏插入圖片描述
遍歷樹中,假設節點v有一個孩子節點w,滿足Low[w]>=Order[v],則v是割點
分析:

  • 如果孩子節點w最小能到達的節點就是它的父節點v,那麼如果斷開節點v,則w無法再訪問到小於v的任何節點,所以該理論成立
  • 根節點
    • 在圖中絕對不包含比根節點小的節點,所以上述的判斷方式不適用於根節點
    • 對於根節點,如果有一個以上的孩子節點,則這個根節點是割點,如下圖
      根節點有多個子節點