二分圖
二分圖又稱作二部圖,是圖論中的一種特殊模型。 設G=(V,E)是一個無向圖,如果頂點V可分割爲兩個互不相交的子集(A,B),並且圖中的每條邊(i,j)所關聯的兩個頂點i和j分別屬於這兩個不同的頂點集(i in A,j in B),則稱圖G爲一個二分圖。
簡而言之,就是頂點集V可分割爲兩個互不相交的子集,並且圖中每條邊依附的兩個頂點都分屬於這兩個互不相交的子集,兩個子集內的頂點不相鄰。
無向圖G爲二分圖的充分必要條件是,G至少有兩個頂點,且其所有迴路的長度均爲偶數。
給定一個二分圖G,在G的一個子圖M中,M的邊集中的任意兩條邊都不依附於同一個頂點,則稱M是一個匹配。
選擇這樣的邊數最大的子集稱爲圖的最大匹配問題。
如果一個匹配中,圖中的每個頂點都和圖中某條邊相關聯,則稱此匹配爲完全匹配,也稱作完備匹配。
首先二分圖是無向圖,所以連接其置換點之間關係必須是無方向的,例如繼承和抽象這樣的兩個相反方向共同形成的關係就不是無方向的,所以我們選擇結構對象的耦合相關性關係(此爲廣泛的關係,只要存在調用、引用、繼承等都說明其具有這樣的關係)作爲二分圖研究的對象是恰當的。另外耦合相關性關係所形成的圖中,如果不能形成二分圖,其實這種耦合關係圖在實際運行中可能存在循環依賴關係而存在問題。
此時,可能我們需要通過對二分圖尋找其最大匹配,最好能夠找到其完備匹配,這樣我們就可以將達到一種最好的耦合關係,同時其滿足了所有對象的必然耦合關係,同時可以通過調整,斷開那些不是匹配的耦合關係,由此優化系統到最佳耦合情況,然後再通過最大匹配後的情況再重構當前的設計。如圖2-13中,我們針對這樣的耦合相關關係進行合理的調整。
圖2-13