最小路徑覆蓋和最小邊覆蓋及相關性質


【最小路徑覆蓋】

首先給出公式:DAG的最小路徑覆蓋數=DAG圖中的節點數-相應二分圖中的最大匹配數.

一個PXP的有向圖中,路徑覆蓋就是在圖中找一些路徑,使之覆蓋了圖中的所有頂點,且任何一個頂點有且只有一條路徑與之關聯;(如果把這些路徑中的每條路徑從它的起始點走到它的終點,那么恰好可以經過圖中的每個頂點一次且僅一次);如果不考慮圖中存在回路,那么每條路徑就是一個弱連通子集。

由上面可以得出:
1.一個單獨的頂點是一條路徑;
2.如果存在一路徑p1,p2,......pk,其中p1 為起點,pk為終點,那么在覆蓋圖中,頂點p1,p2,......pk不再與其它的頂點之間存在有向邊.
對於一個路徑覆蓋,有如下性質:
1、每個頂點屬於且只屬於一個路徑。
2、路徑上除終點外,從每個頂點出發只有一條邊指向路徑上的另一頂點。
 
那么對應一個DAG,如何構造相應的二分圖?對於DAG中的一個頂點p,二分圖中有兩個頂點p和p',對應DAG中的一條有向邊p->q,二分圖中有p-q'的一條無向邊.二分圖中p屬於S集合,p'屬於T集合.
 


上圖中,對應左邊的DAG建立構造右邊的二分圖,可以找到二分圖的一個最大匹配M:1-3',3-4',那么M中的這兩條匹配邊怎樣對應DAG中的路徑的邊?
使二分圖中一條邊對應DAG中的一條有向邊,1-3'對應DAG圖中的有向邊1->3,這樣DAG中1就會有一個后繼頂點(3會是1的唯一后繼,因為二分圖中一個頂點至多關聯一條邊!),所以1不會成為DAG中一條路徑中的結尾頂點,同樣,3-4'對應DAG中3->4,3也不會成為結尾頂點,那么原圖中總共4個頂點,減去2個有后繼的頂點,就剩下沒有后繼的頂點,即DAG路徑的結尾頂點,而每個結尾頂點正好對應DAG中的一條路徑,二分圖中尋找最大匹配M,就是找到了對應DAG中的非路徑結尾頂點的最大數目,那么DAG中頂點數-|M|就是DAG中結尾頂點的最小數目,即DAG的最小路徑覆蓋數.即上圖中找到的最小路徑覆蓋集合為2, 1->3->4。
 
【最小邊覆蓋】

邊覆蓋集:通俗地講,所謂邊覆蓋集,就是G中所有的頂點都是E*中某條邊的鄰接頂點(邊覆蓋頂點),一條邊只能覆蓋2個頂點。

注意:在無向圖中存在用盡量少的邊去“覆蓋”住所有的頂點,所以邊覆蓋集有極小與最小的區別。

極小邊覆蓋:若邊覆蓋E*中的任何真子集都不是邊覆蓋集,則稱E*是極小邊覆蓋集。

最小邊覆蓋:邊數最小的邊覆蓋稱為最小邊覆蓋,通俗地講,就是極小邊覆蓋中的最小的一個集合。

最小邊覆蓋在二分圖中的應用:最小邊覆蓋 = 最大獨立集 = n - 最大匹配,這個是二分圖上的一個性質。

【二分圖相關性質】

二分圖中,點覆蓋數是匹配數。

(1) 二分圖的最大匹配數等於最小覆蓋數,即求最少的點使得每條邊都至少和其中的一個點相關聯,很顯然直接取最大匹配的一段節點即可。

(2) 二分圖的獨立數等於頂點數減去最大匹配數,很顯然的把最大匹配兩端的點都從頂點集中去掉這個時候剩余的點是獨立集,這是|V|-2*|M|,同時必然可以從每條匹配邊的兩端

取一個點加入獨立集並且保持其獨立集性質。

(3) DAG的最小路徑覆蓋,將每個點拆點后作最大匹配,結果為n-m,求具體路徑的時候順着匹配邊走就可以,匹配邊i→j',j→k',k→l'....構成一條有向路徑。

(4) 最大匹配數=左邊匹配點+右邊未匹配點。因為在最大匹配集中的任意一條邊,如果他的左邊沒標記,右邊被標記了,那么我們就可找到一條新的增廣路,所以每一條邊都至少

被一個點覆蓋。

(5) 最小邊覆蓋=圖中點的個數-最大匹配數=最大獨立集。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM