【图论】二分图

结论

  • 1.最大匹配数=最小点覆盖=总点数-最大独立集=总点数-最小路径覆盖
  • 2.一个图是二分图=图中不存在奇数环=染色法没有矛盾
  • 3.匹配:任意两条边都没有公共点
  • 4.匹配点:在匹配中的点
  • 5.最大匹配=不存在增广路径

二分图的判定

  • 定义:看一个图中的点能不能分成满足下面条件的两部分,同一个集合内部的点之间没有直接边相连,图中的边只存在与相邻的两个集合中
  • 方法:染色法,就是 d f s 或 b f s dfs或bfs dfsbfs,其实复杂度是一样的

最小点覆盖(二分图)

  • 定义:选出最少的点使每条边的两个端点中至少一个点被选出来
  • 定理:最小点覆盖=最大匹配数
  • 建图:在左边点的集合与右边点的集合之间建立无向边(有向也可以)
  • 方法:用匈牙利算法,每次枚举一个左边的点,看有没有增广路径,且每次只能增广一条,求出最大匹配

最大独立集(二分图)

  • 定理:选出最多的点,使其内部没有没有直接的边相连,也就是任意一条边,至多有一个端点在这个点集中
  • 定理:最大独立集=去除最少的点将每条边都破坏=总点数-最小点覆盖=总点数-最大匹配
  • 建图:在左边点的集合与右边点的集合之间建立无向边(有向也可以)
  • 方法:最大匹配(匈牙利算法)

最小路径覆盖(DAG)

  • 定义:选出最少的边数,使得这些边中没有重复的点和边,将所有点覆盖
  • 定理:最小路径覆盖=总点数-最大匹配
  • 建图:把一个点拆成入点和出点,出点放在左侧,入点放右侧,中间建立原图中的边
  • 方法:用总点数-最大匹配(匈牙利算法)

最小路径重复点覆盖(DAG)

  • 定义:选出最少的边数,使得这些边中可以有重复的点和边,将所有点覆盖
  • 定理:最小路径重复点覆盖=总点数-最大匹配
  • 建图:先进行传递闭包,把中间的重复点和重复边过滤掉,然后把一个点拆成入点和出点,出点放在左侧,入点放右侧,中间建立原图中的边
  • 方法:传递闭包建图(一般使用邻接表),把问题转化成最小路径覆盖问题,答案就是 n − 最 大 匹 配 n-最大匹配 n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值