最小路徑覆蓋

轉載

首先,最小路徑覆蓋=總節點數-最大匹配數。

所謂最小路徑覆蓋,是指在一個有向圖中,找出最少的幾條路徑,用它們來覆蓋全圖

這裏說的值得注意的地方,如果有向圖的邊有相交的情況,那麼就不能簡單的對原圖求二分匹配了

舉個例子,假設有圖:1->2     2->5     2->3      4->2,事實上,這其實就是兩條邊:1->5  4->3 ,節點2只是他們的一個交點

如果只是簡單的在原圖的基礎上求二分匹配,那麼得到的匹配答案是2,最小路徑覆蓋答案便是5-2=3。

可是隨便一看都能看看出端倪,這個圖中,只需要兩個點便可以探索完整個地圖,這裏最小路徑覆蓋數明顯是2。

問題究竟出在哪裏呢?其實就和這個交點2有關。既然邊有相交,那麼他們的連通性也應該連通下去。

解決的辦法是對原圖進行一次閉包傳遞(也就是flody),於是便增加了四條邊:1->3   1->5   4->3  4->5

這時再求最大匹配數,匹配答案便是3,最小路徑覆蓋值爲2,這是正確答案!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章