如何解决为什么图论中的最大流算法适用于最大二分匹配
我读过很多文章,说明可以使用最大流算法找到二部图的最大匹配。但是有可能我们从最大流中得到的匹配不是最大的或者匹配没有最大边。
摘自 Anti Laaksonen 的 Competitive Programming Handbook 的示例:
那么随着最大流量算法的进展,匹配将是 1----5,2----7
因为 1 只是擦除了到接收器的路径,但如果它会消失在边缘 1----6 那么匹配可能是
1----6, 3----5,4----7
解决方法
直到现在我都和你在一起:
那么随着最大流量算法的进行,匹配将是 1----5,2----7
您在此处描述的实际上并不是图中的最大流量。我们可以通过从 1 到 6 发送一个流量单位,从 2 到 7 发送一个流量单位,以及从 3 到 5 发送一个流量单位来推动更多的流量。
阅读您的问题后,我认为您最终得到(非最大)流量而不是最大流量的原因是因为以下声明:
因为 1 只是擦除了接收器的路径
根据您在此处的描述,我假设您正在使用 Ford-Fulkerson 算法之类的方法来计算最大流量:找到从源到汇的增广路径,然后将流量推过它。但是 Ford-Fulkerson 在这里还有第二步:在推动流越过边之后,我们在推动流的相反方向上引入残余边。这让我们有机会在找到更好的路径时“撤销”我们所做的决定。
因此,在我们将一个单位的流量从 1 - 5 推送之后,我们将剩余的边从 5 添加回 1,并带有单个容量单位。这意味着图表现在看起来像这样:
这里,青色的边从 s 流向 t,紫色的边从 t 流回 s。
请注意,我们可以按如下方式“撤消”分配 1 到 5 的决定。在路径上推一个单位流
s → 3 → 5 → 1 → 6 → t
给这个流网络:
现在,在路径上再推一个单位流量
s → 2 → 7 → t
给出整体匹配 1 -- 6,2 -- 7,3 -- 5,这是一个最大匹配。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。