背景:带边权的二分图最大权值完美匹配。
顶标概念:顶点权值 $L_x, L_y$。
可行顶标:所有边 $e(x→y)$ ,都满足 $L_x+L_y\ge W_e$。
注:此时还没有开始匹配,是对原图所有边的限制。
相等子图:包含所有顶点;仅包含 $W_{x→y}=L_x+L_y$ 的边。
问题即转化为求相等子图的完美匹配,此时边权和达到上限 $\sum L_x+ \sum L_y$。
初始化:$L_y=0, L_x=\max_{j\in Y}{W_{x→j}}$ 使得初始方案为可行顶标。
交替路:与匈牙利算法类似,在相等子图中搜索增广路时,如果找不到时我们称此时得到一条交替路。
如果将交替路中 $X$ 集合的顶标都 $-d, d>0$,$Y$ 集合的顶标都 $+d$,有以下结论:
如果 $x→y$ 在相等子图中,$L_x+L_y$ 无变化,即该边仍在相等子图中。
如果 $x→y$ 不在相等子图中,当 $x$ 在交替路而 $y$ 不在交替路时,$L_x+L_y$ 将减少 $d$,意味着该边有可能加入相等子图中。注意 $d$ 不能过大,否则会破坏可行顶标这个前提,因此
注:相等子图中顶标之和 $\sum L_x + \sum L_y$ 越来越小,以此来加入更多的边使得边权和更大。
1 | // find a perfect matching with maximum total cost |