在上一篇文章中,介绍了二分图的最大匹配问题及其算法,但是分配问题和二分图最大匹配似乎关联不大,为什么要详细介绍二分图最大匹配呢? 其实如果给二分图中的边加上权重,那么这个二分图就是分配问题的图形式,如果分配问题的目标是最大值目标,那么对应的图论问题就是求二分图的最大权重匹配,具体来说:
- 给二分图 G G G的边设置权重 w ( i , j ) w(i,j) w(i,j), i i i和 j j j分别表示两个点集中的点,对于一个匹配 M M M,其权重和 w ( M ) = ∑ e ∈ M w ( e ) w(M)=\sum_{e\in M}w(e) w(M)=∑e∈Mw(e),最大权重匹配问题就是找到是权重和最大的匹配;如果设置权重为 c ( i , j ) = W − w ( i , j ) , W ≥ m a x ( w ( i , j ) ) c(i,j)=W-w(i,j),W\geq max(w(i,j)) c(i,j)=W−w(i,j),W≥max(w(i,j)),那么最大权重匹配就转化成了最小权重匹配
因为分配问题大多数情况是要让总的cost最小,所以本文还是以二分图最小完美匹配作为对象进行叙述(分配的结果应该是让所有的对象都有分配值,所以要强调是完美匹配)
二分图最大匹配其实是权重都是1的特殊情况,我们可以使用搜索增广路径的算法来求解二分图最大匹配问题;那么对于更为一般的权重二分图,该方法还可以使用吗? 其实算法的核心还是和增广路径相关,不过需要在原始的权重二分图上扩充一下
转化成最大匹配问题
需要介绍两个非常关键的算法术语:Feasible Labeling(不知道怎么用中文描述,有的资料里会称对偶变量)和Equality Graph
我们用一个例子来帮助理解:假设一个二分图的权重矩阵如下表所示:
y1 | y2 | y3 | |
---|---|---|---|
x1 | 0 | 1 | 0 |
x2 | 2 | 1 | 3 |
x3 | 0 | 1 | 2 |
用图表示:
然后:
- 定义对一个顶点的 l a b e l i n g labeling labeling表示对这个顶点附加一个值映值 l : V → R l:V \rightarrow R l:V→R,意思就是给每个点附加一个变量值
- 对每个顶点都做 l a b e l i n g labeling labeling,我们称这个 l a b e l i n g labeling labeling是 f e a s i b l e feasible feasible的当:
l ( x ) + l ( y ) ≤ w ( x , y ) , ∀ x ∈ X , y ∈ Y \begin{aligned} l(x)+l(y)\leq w(x,y),\ \ \forall x \in X,y\in Y \end{aligned} l(x)+l(y)≤w(x,y), ∀x∈X,y∈Y
例如对于上面的这个二分图,下面的 l a b e l i n g labeling labeling(标红的数字)就是 f e a s i b l e feasible feasible的,因为任意两个顶点的 l a b e l i n g labeling labeling值的和都不大于它们之间的权重值
- 在 f e a s i b l e l a b e l i n g feasible\ labeling feasible labeling的基础上,我们只保留所有满足相等条件的边,构成一个 E q u a l i t y G r a p h Equality\ Graph Equality Graph,用数学语言描述就是, G e = ( V , E l ) G_{e}=(V,E_l) Ge=(V,El),满足:
E l = { ( x , y ) : l ( x ) + l ( y ) = w ( x , y ) } \begin{aligned} E_l=\{(x,y):l(x)+l(y)=w(x,y)\} \end{aligned} El={ (x,y):l(x)+l(y)=w(x,y)}
在上面的例子中,其 E q u a l i t y G r a p h Equality\ Graph Equality Graph如下图所示:
对于一个权重二分图,我们如果设定了 f e a s i b l e l a b e l i n g feasible\ labeling feasible labeling,并得到了相应的 E q u a l i t y G r a p h Equality\ Graph Equality Graph,我们有下面这个定理:
- 如果一个 l l l是 f e a s i b l e feasible feasible的,并且 M M M是 E l E_l El上的一个完美匹配,那么 M M M就是该二分图的最小权重匹配
其证明过程如下:
- 定义任意的边为 e = ( e x , e y ) ∈ E e=(e_x,e_y)\in E e=(ex,ey)∈E, e x e_x ex和 e y e_y ey是它的两个端点,假设 M ′ M' M′是图 G G G上的任意完美匹配(不限定在 G l G_l Gl上),因为是完美匹配,每个顶点 v ∈ V v\in V v∈V都正好被完美匹配上的一条边连接,就有
w ( M ′ ) = ∑ e ∈ M ′ w ( e ) ≥ ∑ e ∈ M ′ ( l ( e x ) + l ( e y ) ) = ∑ v ∈ V l ( v ) \begin{aligned} w(M')=\sum_{e\in M'}w(e)\geq \sum_{e\in M'}(l(e_x)+l(e_y))=\sum_{v\in V}l(v) \end{aligned} w(M′)=e∈M′∑w(e)≥e∈M′∑(l(ex)+l(ey))=v∈V∑l(v)