◆ ◆ ◆ 语 READ 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 上一篇文章中梳理了匈牙利算法,匈牙利算法是求解二分图中的最大基数匹配算法,这一节我们学习二分图中的最大权重匹配算法——KM算法。 其基本过程如下: (1)初始化可行标杆 (2)用匈牙利算法寻找完备匹配 (3)若未找到完备匹配则修改可行标杆 (4)重复2,3直到找到相等子图的完备匹配
(1)给二分图顶点初始化可行标杆:l(xi)=max(wij),l(yj)=0,则l(a1)=5,l(b1)=2,l(c1)=4,l(d1)=1,l(e1)=3,l(a2)=l(b2)=l(c2)=l(d2)=l(e2)=0。 (2)求最大权重的邻接点集:A(xi)={yj|yj∈Y,l(xi)+l(yj)=wij},则A(a1)={b2,c2},A(b1)={a2,b2,d2,e2},A(c1)={b2,c2},A(d1)={b2,c2},A(e1)={d2,e2}。该邻接点集即为最初的二分子图(是具有最大权重的),即 则M={a1c2,b1a2,c1b2,e1d2}(利用匈牙利算法的DFS算法)。 (3)若M已经渗透X中所有点,则M为最大权重匹配,停止;否则,取X中的非M渗透点u,对u进行增广路径的寻找,若成功寻找,则继续匹配,否则,列出集合S和T,(寻找增广路径失败的DFS的交错树中,并且叶子顶点为X中顶点),S即为该交错路中的X中顶点的集合,T即为该交错路中Y中顶点的集合。 ◆ ◆ 消 息 由清北学堂信息学金牌教研团队策划的 |
|