邊雙?

來源:互聯網
上載者:User

標籤:方法   之間   解釋   因此   方案   改版   log   box   公用祖先   

有一個問題:給出一張連通的無向圖,加上最少的邊使得它成為邊雙連通圖

網上有一個結論,就是只要求出邊雙的縮點樹,然後找出其中只與一條邊相連的點個數k,答案就是(k/2)(上取整)

網上有一些解釋

摘自https://www.byvoid.com/zhs/blog/biconnect

統計出樹中度為1的節點的個數,即為分葉節點的個數,記為leaf。則至少在樹上添加(leaf+1)/2條邊,就能使樹達到邊二連通,所以至少添加的邊數就是(leaf+1)/2。具體方法為,首先把兩個最近公用祖先最遠的兩個分葉節點之間串連一條邊,這樣可以把這兩個點到祖先的路徑上所有點收縮到一起,因為一個形成的環一定是雙連通的。然後再找兩個最近公用祖先最遠的兩個分葉節點,這樣一對一對找完,恰好是(leaf+1)/2次,把所有點收縮到了一起。

摘自評論

想請問對於樹1--2; 1--3; 1--4; 2--5; 2--6; 3--7; 3--8; 4--9; 4--10. 來說, 依照上述構造雙連通圖的方法, 第一步可以選擇把葉子(5,10) 連起來, 而LCA(5,10) 是1 (Root), 為最遠的. 接著同理, 串連葉子(6,9). 則最後只剩下葉子(7,8) 可選, 此時便出現無解的情況了, 若遇到這種情況是不是會發生問題呢? 似乎採用編號法可以解決這個問題.

好像有一點小問題?怎麼證明/構造?

試著再給一個證明(有錯的,只是先記一下)

首先,k個點中每一個點都必須加一條邊,否則不可能使得圖邊雙連通,因此答案的一個下界為將它們兩兩串連的代價:(k/2)(上取整)

然後給一種構造方法,是以上方法的改版:

每一次找到樹中某兩個點,然後在這兩個點之間連一條邊,那麼這兩個點路徑上所有點都可以被縮成一個點

將這些點縮起來,之後仍然為一棵樹,且其餘只與一條邊相連的點不受影響(畢竟絕對不可能被縮排去的),也不會產生新的只與一條邊相連的點(除了最後的幾次縮點操作之外)(這個真的能夠保證嗎?給出一種嘗試:產生新的只與一條邊相連的點,若且唯若兩點間的路徑上(除兩點外)只有最多一個點與路徑外的點有最多一條邊相連;設法證明每一次都可以避開這樣的選擇方案(怎麼證?))

顯然任意一次操作中都能找到這樣的兩個點,直到只剩1或0個只與一條邊的點;只剩1個點時隨便找一個點連起來即可

這樣每次一定能少掉2個(最後一次可能為1個)只與一條邊相連的節點,總代價為(k/2)(上取整)

 

邊雙?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.