Edmonds 开花算法

input:

图G,匹配M,未饱和点u

idea:

查找从 u 開始的 M-交错路径。对每一个顶点记录父亲节点。

发现花朵。则收缩。

维护 S 和 T。S 表示沿着已经饱和的边抵达的顶点构成的集合。收缩过程中的新顶点也属于 S。

T表示当前图中沿着未饱和的边抵达的顶点构成的集合 ,一旦遇到还有一个未饱和的顶点。则得到增广路。

init:

S = { u }, T = ∅

iterate:

若 S 中无未饱和的点,则不存在从 u 開始的增广路。算法停止。

否则,取出一个未饱和的顶点 v ∈ S,依次考虑 y ∉ T 的随意顶点 y ∈ N( v )。

若 y 未被 M 饱和,则从 y 開始回溯。若有必要,则开花,输出增广路。

若 y ∈ S。则找到花朵。收缩花朵,用产生的新的顶点替代 S 和 T 中的相应的顶点。

从产生的新图这样的新点開始搜索。

否则。y 被 M 匹配到某个顶点 w。将 y 记录由 v 可达并放入 T 中,将 w 标记为由 y 到达并放入 S  中。

处理完 v 全部相邻点后,标记 v。继续迭代。

Edmonds 开花算法的更多相关文章

  1. URAL1099. Work Scheduling(一般图匹配带花树开花算法)

    1099. Work Scheduling Time limit: 0.5 second Memory limit: 64 MB There is certain amount of night gu ...

  2. 最大流算法之Ford-Fulkerson算法与Edmonds–Karp算法

    引子 曾经很多次看过最大流的模板,基础概念什么的也看了很多遍.也曾经用过强者同学的板子,然而却一直不会网络流.虽然曾经尝试过写,然而即使最简单的一种算法也没有写成功过,然后对着强者大神的代码一点一点的 ...

  3. 网络流(一)——Edmonds Karp算法

    首先是一些关于网络流的术语: 源点:即图的起点. 汇点:即图的终点. 容量:有向边(u,v)允许通过的最大流量. 增广路:一条合法的从源点流向汇点的路径. 网络流问题是在图上进行解决的,我们通常可以将 ...

  4. [转]带花树,Edmonds's matching algorithm,一般图最大匹配

    看了两篇博客,觉得写得不错,便收藏之.. 首先是第一篇,转自某Final牛 带花树……其实这个算法很容易理解,但是实现起来非常奇葩(至少对我而言). 除了wiki和amber的程序我找到的资料看着都不 ...

  5. poj 1273 Drainage Ditches(最大流,E-K算法)

    一.Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clove ...

  6. HDU 4687 Boke and Tsukkomi 一般图匹配,带花树,思路,输出注意空行 难度:4

    http://acm.hdu.edu.cn/showproblem.php?pid=4687 此题求哪些边在任何一般图极大匹配中都无用,对于任意一条边i,设i的两个端点分别为si,ti, 则任意一个极 ...

  7. kuangbin带你飞 匹配问题 二分匹配 + 二分图多重匹配 + 二分图最大权匹配 + 一般图匹配带花树

    二分匹配:二分图的一些性质 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j ...

  8. 收集一些关于OI/ACM的奇怪的东西……

    一.代码: 1.求逆元(原理貌似就是拓展欧几里得,要求MOD是素数): int inv(int a) { if(a == 1) return 1; return ((MOD - MOD / a) * ...

  9. hdu1532 最大流板子题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目给出源点和漏点,还有一些边,要求源与漏之间的最大流,我采用了Edmonds Karp算法,该 ...

随机推荐

  1. Java练习demo 20190402 优惠券扣减

    实体类: package org.jimmy.autosearch2019.pojo; import java.math.BigDecimal; public class TestEntity2019 ...

  2. TWaver可视化编辑器的前世今生(二)3D编辑器

    接着昨天的继续说哈. 作为一款高效.轻量.自带编辑功能小组件,TWaver Java在电信网管界一炮而红,在各大运营商的OSS,BSS,NMS系统中随处可见. 采用了TWaver图形组件的上海世博会监 ...

  3. Dubbo 源代码分析八:再说 Provider 线程池被 EXHAUSTED

    转自:http://manzhizhen.iteye.com/blog/2391177 在上回<Dubbo源代码实现六>中我们已经了解到,对于Dubbo集群中的Provider角色,有IO ...

  4. 定位 absolute和relative比较

    absolute:脱离原来位置定位.是相对于最近的有定位的父级进行定位;如果没有有定位的父级元素,就相对文档进行定位 relative:保留原来位置进行定位,相对于自己原来的位置进行定位 下面举两个例 ...

  5. qemu-img————QEMU的磁盘管理工具

    qemu-img command [command options] Command: check [-f fmt] filename                       # 对磁盘镜像文件进 ...

  6. HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素

    ---恢复内容开始--- header header元素是一种具有引导和导航作用的结构元素,通常用来放置整个页面或页面内的一个内容区块的标题,但是也可以包含其他内容,例如数据表格.搜索表单或相关的lo ...

  7. 转载 js弹出框、对话框、提示框、弹窗总结

    转载:https://blog.csdn.net/huileiforever/article/details/9464659 一.JS的三种最常见的对话框   //================== ...

  8. DOS使用笔记

    DOS下cd命令: cd .. 上一级目录: g: 指定当期目录到G盘,而cd g:是没有效果的: 如图: 在安装Windows服务的过程中,如果installutil为64位版本,那么编译生成项目的 ...

  9. Android开发——获取微信聊天记录(后台秘密发邮件)

    1. 首先先展示一下效果图: 2. Accessibility机制 Accessibility机制之前已经介绍过了,具体可以查看Accessibility机制实现模拟点击,需要简单的配置(如设置被监听 ...

  10. Vue如何在webpack设置代理解决跨域问题

            在开发过程中我们请求数据有时候调用的是第三方接口,此时便会遇到一个问题:跨域限制.对于跨域问题的解释就不详细叙述了,要了解的请自行百度.一般跨域问题控制台会报这个错:         ...