让
G(A,B,V)
,一个二分图,|A|=|B|=n
。M
的匹配E
子集|M| = n-2013
。描述一种有效的算法来确定是否存在最大匹配。
基本上,给定的解决方案是从图表构建流网络,方法是添加s,t
个顶点,将s
连接到v
中的每个顶点A
和每个顶点{在v
到B
中{1}}。所有容量均为t
。
现在,我们为所有边1
(以及连接到M
边缘的所有边,从M
到s
)提供一个开始流程
现在我们只需要运行Fold-Falkerson(或Edmond-Karp)算法并检查我们是否能够改进t
路径(即为某些路径添加更多流量)。更确切地说,我们最多需要运行BFS,2013
次来决定
我的问题是:
它为什么有效?在我看来,2013
只是一个随意的匹配。我们假设M
是最大匹配的一部分。
我很高兴澄清一下!
由于
答案 0 :(得分:2)
IIUC,算法是:
创建流网络 s→A→B→t
在此网络上,计算 M 引起的流量。
现在创建residual flow graph,然后从这里继续Edmonds-Karp。
为什么这样做? Ford-Fulkerson method保证,给定任何有效流量(特别是在这种情况下由 M 给出的流量,而最大流量尚未达到,那里在这里,每次增加都会使流量(以及匹配)增加1.因此,如果最大流量是 q ,那么 q - | M | 迭代,它将实现。
似乎让您感到困惑的一点是,似乎最佳匹配必然包括 M 。不是这种情况。沿着剩余网络的扩充实际上可以取消原始网络中的流。因此,增强实际上可以反转" M 的一些匹配。