DAG的最小路径覆盖和二分图的最大匹配
生活随笔
收集整理的這篇文章主要介紹了
DAG的最小路径覆盖和二分图的最大匹配
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DAG的最小路徑覆蓋和二分圖的最大匹配 DAG的最小路徑覆蓋是指找最小數目的互相不相交的有向路徑,滿足DAG的所有頂點都被覆蓋.
上圖中,對應左邊的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的最小路徑覆蓋數. posted on 2011-05-12 01:33?Jackiesteed 閱讀(...) 評論(...) 編輯 收藏
首先給出公式:DAG的最小路徑覆蓋數=DAG圖中的節點數-相應二分圖中的最大匹配數.
那么對應一個DAG,如何構造相應的二分圖?對于DAG中的一個頂點p,二分圖中有兩個頂點p和p',對應DAG中的一條有向邊p->q,二分圖中有p-q'的一條無向邊.二分圖中p屬于S集合,p'屬于T集合. 下面我們來解釋上面公式為什么成立,思路參考baihacker神牛:上圖中,對應左邊的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的最小路徑覆蓋數. posted on 2011-05-12 01:33?Jackiesteed 閱讀(...) 評論(...) 編輯 收藏
轉載于:https://www.cnblogs.com/jackiesteed/articles/2043934.html
總結
以上是生活随笔為你收集整理的DAG的最小路径覆盖和二分图的最大匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 用户 对 表空间 配额(q
- 下一篇: Java中的容器类List、Set、Ma