1. 程式人生 > >二分圖最大匹配的一些證明

二分圖最大匹配的一些證明

無法 borde mil post 二分圖的最大匹配 avi 建立 頂點 不清楚

①最小路徑覆蓋:

給定有向圖G=(V,E)。設P 是G 的一個簡單路(頂點不相交)的集合。如果V 中每個頂點恰好在P 的一條路上,則稱P是G 的一個路徑覆蓋。P 中路徑可以從V 的任何一個頂點開始,長度也是任意的,特別地,可以為0。G 的最小路徑覆蓋是G 的所含路徑條數最少的路徑覆蓋。

路徑覆蓋和二分圖匹配的關系:最小路徑覆蓋=|G|-最大匹配數

上述公式中最大匹配數是這樣來的:

對於G中每一個節點x,建立節點x1,x2。若x- >y存在邊,則x1與y2之間連一條無向邊,求這個二分圖的最大匹配數即可。

證明如下:

首先,若最大匹配數為0,則二分圖中無邊,也就是說有向圖G中不存在邊,那麽

顯然:最小路徑覆蓋=|G|-最大匹配數=|G|-0=|G|。

若此時增加一條匹配邊x1--y2,則在有向圖|G|中,x、y在同一條路徑上,最小路徑覆蓋數減少一個。

繼續增加匹配邊,每增加一條,最小路徑覆蓋數減少一個,則公式:最小路徑覆蓋=|G|-最大匹配數得證。

②最小點覆蓋

二分圖中,選取最少的點數,使這些點和所有的邊都有關聯(把所有的邊的覆蓋),叫做最小點覆蓋。

最小點覆蓋數 = 最大匹配數

證明:轉載自:Matrix67

二分圖最大匹配的König定理及其證明 

如果你看不清楚第二個字母,下面有一個大號字體版本:

二分圖最大匹配的König定理及其證明

本文將是這一系列裏最短的一篇,因為我只打算把König定理證了,其它的廢話一概沒有。
以下五個問題我可能會在以後的文章裏說,如果你現在很想知道的話,網上去找找答案:
1. 什麽是二分圖;
2. 什麽是二分圖的匹配;
3. 什麽是匈牙利算法;(http://www.matrix67.com/blog/article.asp?id=41)
4. König定理證到了有什麽用;
5. 為什麽o上面有兩個點。

König定理是一個二分圖中很重要的定理,它的意思是,一個二分圖中的最大匹配數等於這個圖中的最小點覆蓋數。如果你還不知道什麽是最小點覆蓋,我也在這裏說一下:假如選了一個點就相當於覆蓋了以它為端點的所有邊,你需要選擇最少的點來覆蓋所有的邊。比如,下面這個圖中的最大匹配和最小點覆蓋已分別用藍色和紅色標註。它們都等於3。這個定理相信大多數人都知道,但是網絡上給出的證明並不多見。有一些網上常見的“證明”明顯是錯誤的。因此,我在這裏寫一下這個定理的證明,希望對大家有所幫助。

技術分享圖片

假如我們已經通過匈牙利算法求出了最大匹配(假設它等於M),下面給出的方法可以告訴我們,選哪M個點可以覆蓋所有的邊。
匈牙利算法需要我們從右邊的某個沒有匹配的點,走出一條使得“一條沒被匹配、一條已經匹配過,再下一條又沒匹配這樣交替地出現”的路(交錯軌,增廣路)。但是,現在我們已經找到了最大匹配,已經不存在這樣的路了。換句話說,我們能尋找到很多可能的增廣路,但最後都以找不到“終點是還沒有匹配過的點”而失敗。我們給所有這樣的點打上記號:從右邊的所有沒有匹配過的點出發,按照增廣路的“交替出現”的要求可以走到的所有點(最後走出的路徑是很多條不完整的增廣路)。那麽這些點組成了最小覆蓋點集:右邊所有沒有打上記號的點,加上左邊已經有記號的點。看圖,右圖中展示了兩條這樣的路徑,標記了一共6個點(用 “√”表示)。那麽,用紅色圈起來的三個點就是我們的最小覆蓋點集。
首先,為什麽這樣得到的點集點的個數恰好有M個呢?答案很簡單,因為每個點都是某個匹配邊的其中一個端點。如果右邊的哪個點是沒有匹配過的,那麽它早就當成起點被標記了;如果左邊的哪個點是沒有匹配過的,那就走不到它那裏去(否則就找到了一條完整的增廣路)。而一個匹配邊又不可能左端點是標記了的,同時右端點是沒標記的(不然的話右邊的點就可以經過這條邊到達了)。因此,最後我們圈起來的點與匹配邊一一對應。
其次,為什麽這樣得到的點集可以覆蓋所有的邊呢?答案同樣簡單。不可能存在某一條邊,它的左端點是沒有標記的,而右端點是有標記的。原因如下:如果這條邊不屬於我們的匹配邊,那麽左端點就可以通過這條邊到達(從而得到標記);如果這條邊屬於我們的匹配邊,那麽右端點不可能是一條路徑的起點,於是它的標記只能是從這條邊的左端點過來的(想想匹配的定義),左端點就應該有標記。
最後,為什麽這是最小的點覆蓋集呢?這當然是最小的,不可能有比M還小的點覆蓋集了,因為要覆蓋這M條匹配邊至少就需要M個點(再次回到匹配的定義)。

③最大獨立集=總數-最小覆蓋集證明:

(摘自:http://m.blog.csdn.NET/article/details?id=50011363)

技術分享圖片

  上圖,我們用兩個紅色的點覆蓋了所有邊。我們證明的前提條件是已經達到最小覆蓋。

即條件1.已經覆蓋所有邊,條件2.所用的點數最小

  首先我們來證明藍色點組成的是一個獨立集:如果有兩個藍色點間有邊相連,那麽這條

邊則沒有被覆蓋,則與條件1矛盾。因此是獨立集。

  再來證明這個獨立集最大: 如果我們要再增加這個獨立集中的點,則需要把某個紅點變

成藍點。而由最小覆蓋數=最大匹配數的證明我們知道,每一個紅點是最大匹配中的一

個匹配點,也就是說每個紅點至少連接了一條邊。因此當我們將某個紅點變成藍點

時,我們需要犧牲的藍點的個數是大於等於1的。也就是說,我們最多只能找到數量相等

的其他獨立集,而無法找到數量更大的。因此藍色點集必定為最大獨立集。 藍色點數 =

總點數 - 紅色點數,即最大獨立集=總數-最小覆蓋集。

由上述定理,同理可知:

最大獨立集+最小點權覆蓋=總權值。

又∵最小點權覆蓋=最小割

∴最大獨立集=最小割。

二分圖最大匹配的一些證明