首页 > 其他分享 >二分图学习笔记

二分图学习笔记

时间:2023-04-12 21:35:50浏览次数:42  
标签:二分 --- 匹配 覆盖 路径 最小 笔记 学习 ######

定义

> \(1.\) 点数量 \(\ge\) 2
> \(2.\) 没有奇环

二分图染色

> 深搜,0和1两种,相邻染不一样颜色,如果最后有冲突就不是二分图。

二分图匹配

> ###### 定义
>
> 没有 \(2\) 条边公用 \(1\) 个点
>
> ---
>
> ###### 极大匹配
>
> 无法通过加边的方式增加匹配的数量
>
> ---
>
> ###### 最大匹配
>
> 边数最多的极大匹配
>
> ---
>
> ###### 完全匹配
>
> 没有孤立点的匹配

匈牙利算法

> 枚举每一个左部点 \(u\) ,然后枚举该左部点连出的边,对于一个出点 \(v\),如果它没有被先前的左部点匹配,那么直接将 \(u\) 匹配 \(v\) ,否则尝试让 \(v\) 的“原配”左部点去匹配其他右部点,如果“原配”匹配到了其他点,那么将 \(u\) 匹配 \(v\),否则 \(u\) 失配。
>
> 时间复杂度 \(O(n\times e+m)\)

增广路

> 找一个匹配,匹配中的点是匹配点,其余为非匹配点。
>
> 从左半部分的一个非匹配点开始走,沿非匹配边->匹配边->非匹配边->匹配边……走下去。
>
> 一个图的最大匹配等价于不存在增广路径。

最小点覆盖

> 从图中选出最少的点,覆盖图中所有的边。使每条边的两个端点至少有一个在最小点覆盖的集合中。
>
> Kőnig 定理:最小点覆盖 = 最大匹配数
>
> 找增广路径,最小点覆盖的点集就是左半部分里经过的点和右半部分里未经过的点

最大独立集

> ###### 最大独立集
>
> 从一个图中选出最多的点,使选出的点之间没有边。
>
> ---
>
> ###### 最大团
>
> 从一个图里面选最多的点,使选出的点之间都有两两有边。
>
> ---
>
> ###### 性质
>
> \(1.\)设一个图为 G ,其补图为 G' ,那么 G 的最大独立集就是 G' 的最大团
>
> \(2.\)对于一个图而言,最大独立集+最小点覆盖集构成原图的点集

最小路径点覆盖

> 在一个DAG中,用最少条互不相交的路径(没有重复点的路径)覆盖所有点。
>
> 最小路径点覆盖=总点数-最大匹配数

结论

> 最大匹配数=最小点覆盖=总点数-最大独立集=总点数-最小路径点覆盖

标签:二分,---,匹配,覆盖,路径,最小,笔记,学习,######
From: https://www.cnblogs.com/Mr-KaYa/p/17311347.html

相关文章

  • Go微服务框架go-kratos实战学习08:负载均衡基本使用
    微服务框架go-kratos中负载均衡使用一、介绍在前面这篇文章负载均衡和它的算法介绍,讲了什么是负载均衡以及作用、算法介绍。go-kratos的负载均衡主要接口是Selector,它是一个可插拔的设计。因为它设计的都是接口,只要实现了接口就实现了负载均衡。go-kratos在目录下提供了......
  • Python程序笔记20230304
    抛硬币实验random模块importrandomrandom.randint(a,b)返回一个随机整数N,范围是:a<=N<=brandom.choice("ilovefishc")从"ilovefishc"这个字符串中随机选出一个字符。编写一个双色球的开奖模拟程序importrandomred=random.sample(range(1,34),6)blue=r......
  • 一份bat脚本的学习视频
    我想你会惊讶的发现?软件开发人员仅仅掌握编写代码的能力是远远不够的,你还必须掌握脚本编写的能力。我有一份windowsbat脚本教学视频,可以提供给大家。我相信掌握了这份bat视频的技能,你将会超越大部分开发人员,你离晋升之路有近了一步,因而你的工作和生活也会越来越好,对吧?如果你的答......
  • javaweb-学习创建servlet
    Servlet创建、声明、映射,利⽤ServletContext统计⼀个⽹站的访问总量。1)、创建一个servelet选择要用到的方法2)、编辑serveletpackagecom.cont;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletContext;importjavax.servlet.Ser......
  • 2023.4.12学习随笔:学贪心学到数组循环
    代码随想录(programmercarl.com)在做这个题时候发现数组循环%没看懂,就开始琢磨这一点,查了很多资料都没有讲,可能是这个知识比较基础(嘿嘿我基础太差了)慢慢来吧~ 编程的时候,很多时候都会要求一个数在某一个范围内进行反复循环,0~100循环,0~5循环等等。一般的方法是使用if语句,当判断......
  • FastReport 使用笔记
    FastReport使用笔记1.在脚本中使用变量在Script脚本方法中中定义变量和Delphi一样,不做说明,这里主要说一下在报表中定义的变量如何在脚本中读写:(1)定义变量类型vars在vars类别下增加变量v1在Memo1上使用memo1.text:=[v1]在Script中读取get('v1')或者在Script......
  • CS231N assignment 2 _ 全连接神经网络 学习笔记 & 解析
    本章内容较多预警Intro我们写过一个两层的神经网络,但是梯度是在loss内计算的,因此对网络的架构相关的修改难免比较困难.为此,我们需要规范化网络设计,设计一系列函数.,后面我们还会封装一个类,这也是最希望的方式了.环境搭建又到了工科生最上头(bushi的搭环境环节.......
  • 深度学习笔记
    从零训练一个神经网络2023-04-121.读取训练数据#读取数据#这一步类似预处理,将图片裁剪成64*64大小data_dir="./data"#字典语法dict={a:b}#Scale已经被删除,用Resize代替data_transform={x:transforms.Compose([transforms.Resize([64,64]),......
  • NRF24L01 自学笔记
    版权声明:本文为CSDN博主「椿湫致简」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/zyc18700766982/article/details/126899279①、引脚说明   VCC、GNDCE:模式控制线。在CSN为低的情况下,CE协同CONFIG寄存器共同......
  • Java开发笔记(不定时更新)
    1.IDEA在引入外部库时编译出现找不着库的问题:在resources目录中,新建一个lib目录,将外部库拷贝进去,这样打包时就不会出现找不见的情况。 2.对象列表按属性排序时空指针错误处理问题:List.sort(Comparator.comparing(X::a)在对列表按属性排序时,如果属性为空会报nullpoint的空指......