首页 > 其他分享 >二分图(菜鸟笔记)

二分图(菜鸟笔记)

时间:2023-08-03 23:44:29浏览次数:48  
标签:二分 匹配 覆盖 奇数 菜鸟 路径 最小 笔记

1.二分图的有关性质

    首先二分图必定不具有奇数环。而不具有奇数环的图必定可以被染成相邻两个点都不是同个颜色的图(只用黑白两色)。
    首先证明不具有奇数环的图是图在染色不存在矛盾的充分必要条件
    证明充分性,用反证法。图中无奇数环,但是染色存在矛盾,则有白黑白黑...白这样的染色,但是存在这样的染色则一定存在奇数环。
    证明必要性,用反证法。图中染色不存在矛盾,但有奇数环,那么一定有白黑白黑...白的染色发生,矛盾。
    再证明二分图必定不具有奇数环。我们知道二分图的点必定可以被划分到两个集合中,且集合中的点两两都没有边。若二分图中有奇数环,则有白黑白黑...白这样的点的集合划分(黑白分别是两个集合),由于最后两个白在同一个集合且他们之间有边,因此矛盾。

关押罪犯

这题用到了染色法判定二分图。


 

2.二分图的最大匹配

    接下来是二分图中用匈牙利算法二分图的最大匹配
    首先匹配是指匹配好的一对点,最大匹配是指匹配的最大数量,匹配点是匹配中的点。
    增广路径是从左边的未匹配点出发,经过非匹配边、匹配边、非匹配边、匹配边......,最后到达未匹配点的路径,我们可以把未匹配边转变为匹配边,把匹配边转变为未匹配边,这样匹配边数量就加一了。
    有个结论是二分图中若匹配是最大匹配,那么必定不存在增广路径不存在增广路径,必定是最大匹配

棋盘覆盖

这题用到了匈牙利算法求二分图的最大匹配。


 

3.二分图的相关结论

(1)二分图的最小点覆盖等于二分图的最大匹配
(2)二分图的最大独立集等于二分图的总点数 - 最小点覆盖
    解释一下:
        首先最大独立集是一个图的点的集合,且这个集合中的点两两之间没有边且这个集合的点的数量最大。
        那么最大独立集(最大独立集是基于无向图的)的意思就是让我们在所有点中去掉最少的点,使得这个集合成为最大独立集。
        在二分图中去掉的这些点其实就是最小点覆盖的点,那么就有最大独立集等于二分图的总点数 - 最小点覆盖
(3)二分图的最小路径点覆盖等于总点数 - 最大匹配,二分图的最小路径重复点覆盖等于原二分图做传递闭包后的最小路径点覆盖
    解释一下:
        最小路径点覆盖是用最少的路径覆盖所有的点,且这些路径都不相交最小路径重复点覆盖是也是用最少的路径覆盖所有的点,但是点可以重复经过即路径可以相交
        最小路径点覆盖最小路径重复点覆盖都是基于有向无环图的,但是我们可以使用拆点来将有向无环图变成无向图。即若有n个点,那么我们左边构造1-n个点,叫出点,右边构造1'-n'个点,叫入点,例如当有3连向5时,那么我们就拆成3连向5'。那么对于每条边我们就有一个匹配了,而终点无法连向其他点,所以在左边他是个孤立点

机器任务

用到了最小点覆盖


骑士放置

用到了最大独立集


捉迷藏

用到了最小路径重复点覆盖和最小路径点覆盖


标签:二分,匹配,覆盖,奇数,菜鸟,路径,最小,笔记
From: https://www.cnblogs.com/dkdklcx/p/17602957.html

相关文章

  • 算法工程师学习运筹学 笔记一 P,NP,NPC问题
    算法的时间复杂度我之前理解的时间复杂度,是指的解决一个问题所需要的时间。但其实并不准确,时间复杂度应该是 当问题规模扩大后,程序需要的时间长度增长得有多快。时间复杂度有两种类型:一种是O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;......
  • k8s 学习笔记之 Pod——Pod 的调度
    Pod的调度在默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的。但是在实际使用中,这并不满足的需求,因为很多情况下,我们想控制某些Pod到达某些节点上,那么应该怎么做呢?这就要求了解kubernetes对Pod的调度规则......
  • 两个有序数组的中位数(第k大的数)——使用二分答案的思路写起来更直观
    问题:两个已经排好序的数组,找出两个数组合并后的中位数(如果两个数组的元素数目是偶数,返回上中位数)。 感觉这种题目挺难的,尤其是将算法完全写对。因为当初自己微软面试的时候遇到了,但是没有想出来思路。看网上写了一堆解法,但是将思路说得非常清楚的少之又少。有两种思路,一个是算法导......
  • 二分查找模板
    二分法模板链接:•循环条件到底哪一个? •start<=end •start<end •start+1<end•指针变换到底哪一个 •start=mid •start=mid+1 •start=mid-1弄不好就死循环,弄不好边界就失误例:nums=[1,1],target=1使用start<end会出现死循环......
  • java基础下(笔记)
    面向对象编程 本质:以类的方式组织代码,以对象来组织(封装)数据面向对象:分类的思维模式,首先思考解决问题需要哪些分类,然后对这些分类进行单独思考。面向过程:步骤清晰简单,每一步都清清楚楚。类和对象从认识论角度思考是先有对象后有类,对象是具体事物,类是对具体事物的抽......
  • [论文阅读笔记] AnoShift - A Distribution Shift Benchmark for U
    AnoShift:ADistributionShiftBenchmarkforUnsupervisedAnomalyDetection主要贡献点:用t-SNE,OptimalTransportDatasetDistance分析了网络流量中用于无监督异常检测任务的大型常用数据集(Kyoto-2006+),并证明其受到分布偏移的影响。我们提出了基于时间顺序的基准测试,重......
  • 《深入理解Java虚拟机》读书笔记:Java内存区域
    Java内存区域包含程序计数器、虚拟机栈、本地方法栈、Java堆、方法区五个区域。运行时数据区分类 Java内存区域 一、程序计数器程序计数器(ProgramCounterRegister)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的信号指示器。字节码解释器工作时就是通过......
  • openGauss学习笔记-29 openGauss 高级数据管理-UNION子句
    openGauss学习笔记-29openGauss高级数据管理-UNION子句UNION计算多个SELECT语句返回行集合的并集。UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。29.1语法格式UNION:结果中如果出现相同的值,仅保留一个。......
  • C# MVC 自学笔记—10 在 ASP.NET MVC 中使用页面检查器
    VisualStudio2012年页督察是与集成的浏览器的web开发工具。中集成浏览器中,选择任意元素,页面检查器立即突出显示该元素的源代码和CSS。可以浏览任何MVC视图、快速查找呈现标记的来源和使用右内的VisualStudio环境浏览器工具。观看视频本教程演示如何启用检查模式,然后快......
  • jQuery 自学笔记—10 常见特效 (终章)
    隐藏、显示、切换,滑动,淡入淡出,以及动画效果演示点击这里,隐藏/显示面板一寸光阴一寸金,因此,我们为您提供快捷易懂的学习内容。在这里,您可以通过一种易懂的便利的模式获得您需要的任何知识。实例jQueryhide()演示一个简单的jQueryhide()方法。jQueryhid......