二分图最大匹配的König定理及其证明

出处:http://www.matrix67.com/blog/archives/116

二分图最大匹配的König定理及其证明

    如果你看不清楚第二个字母,下面有一个大号字体版本:

二分图最大匹配的König定理及其证明

    本文将是这一系列里最短的一篇,因为我只打算把König定理证了,其它的废话一概没有。
    以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上去找找答案:
    1. 什么是二分图;
    2. 什么是二分图的匹配;
    3. 什么是匈牙利算法;(http://www.matrix67.com/blog/article.asp?id=41)
    4. König定理证到了有什么用;
    5. 为什么o上面有两个点。

    König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数。如果你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边。比如,下面这个图中的最大匹配和最小点覆盖已分别用蓝色和红色标注。它们都等于3。这个定理相信大多数人都知道,但是网络上给出的证明并不多见。有一些网上常见的“证明”明显是错误的。因此,我在这里写一下这个定理的证明,希望对大家有所帮助。





    假如我们已经通过匈牙利算法求出了最大匹配(假设它等于M),下面给出的方法可以告诉我们,选哪M个点可以覆盖所有的边。
    匈牙利算法需要我们从右边的某个没有匹配的点,走出一条使得“一条没被匹配、一条已经匹配过,再下一条又没匹配这样交替地出现”的路(交错轨,增广路)。但是,现在我们已经找到了最大匹配,已经不存在这样的路了。换句话说,我们能寻找到很多可能的增广路,但最后都以找不到“终点是还没有匹配过的点”而失败。我们给所有这样的点打上记号:从右边的所有没有匹配过的点出发,按照增广路的“交替出现”的要求可以走到的所有点(最后走出的路径是很多条不完整的增广路)。那么这些点组成了最小覆盖点集:右边所有没有打上记号的点,加上左边已经有记号的点。看图,右图中展示了两条这样的路径,标记了一共6个点(用 “√”表示)。那么,用红色圈起来的三个点就是我们的最小覆盖点集。
    首先,为什么这样得到的点集点的个数恰好有M个呢?答案很简单,因为每个点都是某个匹配边的其中一个端点。如果右边的哪个点是没有匹配过的,那么它早就当成起点被标记了;如果左边的哪个点是没有匹配过的,那就走不到它那里去(否则就找到了一条完整的增广路)。而一个匹配边又不可能左端点是标记了的,同时右端点是没标记的(不然的话右边的点就可以经过这条边到达了)。因此,最后我们圈起来的点与匹配边一一对应。
    其次,为什么这样得到的点集可以覆盖所有的边呢?答案同样简单。不可能存在某一条边,它的左端点是没有标记的,而右端点是有标记的。原因如下:如果这条边不属于我们的匹配边,那么左端点就可以通过这条边到达(从而得到标记);如果这条边属于我们的匹配边,那么右端点不可能是一条路径的起点,于是它的标记只能是从这条边的左端点过来的(想想匹配的定义),左端点就应该有标记。
    最后,为什么这是最小的点覆盖集呢?这当然是最小的,不可能有比M还小的点覆盖集了,因为要覆盖这M条匹配边至少就需要M个点(再次回到匹配的定义)。
    证完了。
  
Matrix67原创
做人要厚到 转贴请注明出处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425521.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【插件介绍】Lombok

Lombok ​ Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。 使用步骤&…

图像增强概述

问题背景(Background) 曝光不足或过度的照片-需要增强处理 图像Fourier频谱看不清-需要增强处理 图像有雾-需要 增强处理 车牌识别系统 车牌识别预处理-车牌图像需要增强处理 人脸识别预处理-人脸图像需要增强处理 指纹识别预处理-指纹图像需要增强处理…

并查集入门

quick-find 时间复杂度 quick-union quick-find时间复杂度### quick-union  按SIZE合并 按秩合并 路径压缩 面试了解基本思想 做蓝色 写路径隔代压缩 转载链:https://liweiwei1419.gitee.io/leetcode-algo/

Java学习笔记10-2——MyBatis

文章目录MyBatis详细执行流程使用注解开发面向接口开发使用注解开发复杂查询多对一问题测试环境搭建按照查询嵌套处理(子查询、嵌套查询)按照结果查询(联表查询、联合查询)一对多问题环境搭建按照结果查询(联表查询、联…

基于直方图处理的图像增强

灰度图像的直方图 •灰度级直方图是图像的一种统计表达,它反映了该图中 不同灰度级出现的统计概率。 •设图像具有L个灰度级,图像中像素点的个数为n,它 的第k个灰度级出现的次数为(k0,1,2,…,L-1) 通过直方图可以看出图像整体的性质 直方图…

[Leedcode][JAVA][第1014题][最佳观光组合][数组][暴力优化]

【问题描述】[中等] 给定正整数数组 A&#xff0c;A[i] 表示第 i 个观光景点的评分&#xff0c;并且两个景点 i 和 j 之间的距离为 j - i。一对景点&#xff08;i < j&#xff09;组成的观光组合的得分为&#xff08;A[i] A[j] i - j&#xff09;&#xff1a;景点的评分之…

NLayerAppV3--.net Core2实现的DDD分层架构

虽然每天的工作都是CURD、还是使用着传统的三层架构、使用着.net Framework&#xff0c;但是这并不能影响我学习DDD和.net core。 总是希望软件在应对复杂多变的场景时能够游刃有余&#xff0c;在解决问题时能够多一种选择。 很早就有关注大神dax.net的NLayerApp系列博文https:…

Java学习笔记11-1——Spring5

文章目录1.简介组成拓展2.控制反转&#xff08;IoC&#xff09;IoC例子IoC本质3.Hello&#xff0c;Springdemo1修改user例子的代码思考4.IoC创建对象的方式通过无参构造的方式通过有参构造的方式5.Spring配置alias 设置别名Bean的配置import6.依赖注入&#xff08;DI&#xff0…

空间滤波增强

基本概念 空间域滤波增强采用模板处理方法对图像进行 滤波&#xff0c;去除图像噪声或增强图像的细节 空间域平滑滤波器 分析&#xff1a;任何一幅原始图像&#xff0c;在其获取和传输等过程中&#xff0c; 会受到各种噪声的干扰&#xff0c;使图像模糊&#xff0c;对图像分析…

[剑指offer][JAVA]面试题第[27]题[二叉树的镜像][递归][栈]

【问题描述】[中等] 请完成一个函数&#xff0c;输入一个二叉树&#xff0c;该函数输出它的镜像。例如输入&#xff1a;4/ \2 7/ \ / \ 1 3 6 9 镜像输出&#xff1a;4/ \7 2/ \ / \ 9 6 3 1示例 1&#xff1a;输入&#xff1a;root [4,2,7,1,3,6,9]…

瓶颈分析

Top指令&#xff1a; CPU/内存情况 top # top指令可以显示总体CPU占用率、内存使用率和交换情况&#xff0c;以及所有进程对应的CPU、内存占用情况 终端下使用该指令示例结果&#xff1a; 上图对一些重要的参数进行了简单标识&#xff0c;笔者这里使用的是XShell对远程Linux服务…

Java学习笔记11-2——Spring5

文章目录7.Bean的自动装配自动装配说明测试环境搭建byName&#xff08;按名称自动装配&#xff09;测试byName运行机制小结&#xff1a;byType&#xff08;按类型自动装配&#xff09;测试使用注解进行自动装配AutowiredQualifierResourceAutowired与Resource异同8.使用注解开发…

频率域平滑滤波器

频率域滤波增强方法 理想低通滤波器 理想低通滤波器(Ideal Lowpass Filters-ILPF) 尽管理想低通滤波器在数学上定义清楚&#xff0c;在计算机模拟中也可 实现&#xff0c;但在截止频率处直上直下的理想低通滤波器是不能用实际的 电子器件实现的。 理想滤波器有陡峭频率的截止…

[leetcode][JAVA]面试题第[1028]题[迭代]

【问题描述】[困难] 我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处&#xff0c;我们输出 D 条短划线&#xff08;其中 D 是该节点的深度&#xff09;&#xff0c;然后输出该节点的值。&#xff08;如果节点的深度为 D&#xff0c;则其直接子节点的…

频率域锐化滤波器

频率域锐化滤波器 &#xff08;Frequency Sharpening Filters &#xff09; 图像的边缘、细节主要位于高频部分&#xff0c;而图 像的模糊是由于高频成分比较弱产生的。 频率域锐化就是为了消除模糊&#xff0c;突出边缘。 采用高通滤波器让高频成分通过&#xff0c;使低频成 …

6用NetBeans进行JSP开发

用NetBeans进行JSP开发 NetBeans

Java学习笔记12——JVM入门

文章目录JVM简介和体系结构JVM的位置JVM的体系结构类加载器双亲委派机制沙箱安全机制&#xff08;了解即可&#xff09;NativePC寄存器方法区栈三种JVM堆新生区永久区堆内存调优Jprofiler的使用GC&#xff08;垃圾回收&#xff09;引用计数法复制算法标记清除法标记压缩法GC算法…

[Leedcode][JAVA][第125题][验证回文串][双指针][String]

【问题描述】[简单] 给定一个字符串&#xff0c;验证它是否是回文串&#xff0c;只考虑字母和数字字符&#xff0c;可以忽略字母的大小写。说明&#xff1a;本题中&#xff0c;我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama" 输…

面向对象之:继承

一&#xff1a;什么面向对象的继承&#xff1f; 比较官方的说法就是&#xff1a; 继承&#xff08;英语&#xff1a;inheritance&#xff09;是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B&#xff0c;就把这个A称为“B的子类别”&#xff0c;而…

7用Eclipse进行JSP开发

用Eclipse进行JSP开发 Eclipse简介和下载 Eclipse的发展 什么是Eclipse Eclipse下载 用Eclipse进行JSP开发 软件环境配置 安装JDK&#xff0c;配置Java运行环境 安装Tomcat服务器&#xff08;服务器能够正常启动和关闭&#xff09; 安装Eclipse JSP开发