最佳完美匹配即权值和最大的完美匹配,这里运用到KM算法。 引进两个概念: 1、可行顶标,为一个节点函数l,使任意边(u,v)均满足l(u)+l(v)>=w(u,v); 2、相等子图,为原图的一个生成子图,包含所有点以及满足l(u)+l(v)=w(u,v)的边。 定理:如相等子图G’有完美匹配,则该匹配即为所求。 证明:G’的权值和为所有顶点的顶标和Sum,而此时原图G任意一个完美匹配的权值和均<=Sum。 算法流程: 1.构造一个可行顶标(一般可令lx(u)为与u相连的边的最大权值,ly(v)=0); 2.搜索寻找增广路,如找到换下一个节点,否则转3; 3.设X为搜索中左边已访问的点,Y为右边已访问的点,令路M(搜索失败)上所有边,在X中的顶标减去d,在Y中的顶标加上d, d为min{l(x)+l(y)-w(x,y)},x属于X,y不属于Y。下面说明一下为什么这样选取d: 如果比d小不能保证有新边加入,而大于d会顶标变得不可行,破坏性质。
4.调整后l继续执行2;
时间O(n^4)如果加一个小优化,在计算d时用一个数组slack[v](v不属于Y)来维护与v相连的边min{lx(u)+ly(v)-w(u,v)}可降下一个n。 来道板子POJ3565
为什么上面的A了,下面的WA?(窝调了一天QAQ)
新闻热点
疑难解答