热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

二分图匹配相关性质(知识点整理)

思路来源http:www.matrix67.comblogarchives116https:blog.csdn.netACMer_ZParticledetails7857092

思路来源

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

https://blog.csdn.net/ACMer_ZP/article/details/78570926

https://blog.csdn.net/huangshuai147/article/details/51087275

https://www.cnblogs.com/icode-girl/p/5418461.html

心得

有些东西真是学了又学学了又忘忘了又学

依稀记得自己去年就在学这个

最小点覆盖 最小边覆盖 最大匹配 最小路径覆盖 最大独立集

以下除最小路径覆盖指DAG外,其余皆为二分图

结论

1.最小点覆盖=最大匹配 

2.最大独立集=总点数-最大匹配

3.最小边覆盖=总点数-最大匹配

4.DAG不相交最小路径覆盖=DAG顶点数-对应二分图最大匹配

5.无向图最大匹配=最大匹配/2

输出最小点覆盖方案:https://blog.csdn.net/Code92007/article/details/83688492

输出最大独立集方案:https://blog.csdn.net/Code92007/article/details/98205680

证明

1.最小点覆盖

用最少的点,覆盖所有的边,全为孤立顶点(没边)输出0

证明:Konig定理

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

 

2.最大独立集

选中最多的点,使得两两之间都没有边,

联合结论1,即证最大独立集=总点数-最小点覆盖

设最小点覆盖点集为S,S的大小为n,全集为U,

记没有在S中的点构成的集合为T(即U-S)

①若T内存在两点之间有边E,则E没有被S内的点覆盖,矛盾,故T内两两之间没有边

①说明,T是一个合法解,所以答案不小于T,ans>=|T|

②若T还可扩充,则必至少选一点v,v属于S,且v与T内所有点之间都没有边

这说明,与v相连的所有边,另一端的顶点都是集合S-v里的点,

同样表明,与v相连的所有边,被S-v的点覆盖了,因此,在最小点覆盖中,v多余,

这说明,S-v构成一个新的最小点覆盖,与S是最小点覆盖,矛盾

②说明&#xff0c;T不可扩充&#xff0c;所以答案不大于T&#xff0c;ans<&#61;|T|

①②表明&#xff0c;ans&#61;|T|

 

3.最小边覆盖

用最少的边&#xff0c;覆盖所有的点&#xff0c;有孤立顶点时不存在

证明&#xff1a;

由于最大匹配边能覆盖两个点&#xff0c;而非匹配边只能覆盖一个点&#xff0c;所以优先用最大匹配里的边

设点数为n&#xff0c;最大匹配为m&#xff0c;则m条边覆盖2*m个点&#xff0c;

其余n-2*m个点只能由n-2*m条非匹配边覆盖&#xff0c;

故共计n-m条边&#xff0c;为点数-最大匹配

 

4.DAG不相交最小路径覆盖

用若干条不相交(不共点不共边)的路径&#xff0c;覆盖所有的点

图片来源&#xff1a;https://www.cnblogs.com/icode-girl/p/5418461.html

左边DAG图&#xff0c;一个点拆成出点和入点两个点&#xff0c;二分图左侧为出点&#xff0c;右侧为入点

原图中1到3的连边&#xff0c;对应二分图中出点1到入点3的连边&#xff0c;

设DAG中顶点数为n&#xff0c;最大匹配数为m&#xff0c;且认为最大匹配的边有方向&#xff0c;从左指向右&#xff0c;

那么最大匹配上左边的点&#xff0c;因为有后继&#xff0c;所以不可能成为一条路径中的终点&#xff0c;

而其他的点&#xff0c;因为没有后继&#xff0c;所以只能成为出度为0的点&#xff0c;即终点&#xff0c;

终点的个数&#xff0c;即为路径的条数&#xff0c;所以&#xff0c;左侧剩下了n-m个点&#xff0c;也就对应了n-m条路径

 

5.无向图最大匹配&#61;最大匹配数/2

无向图因为左侧连向右侧有边&#xff0c;右侧连向左侧也有边

所以不论左侧右侧&#xff0c;统统求一遍最大匹配&#xff0c;

最大匹配边&#xff0c;左边被计一次右边被计一次&#xff0c;故除以2

 


推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • HTTP 请求与响应详解
    本文深入探讨了HTTP请求和响应的结构,详细解释了每个部分的作用,并提供了相关示例。通过本文,读者可以全面理解HTTP协议中请求和响应的工作原理。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 在即将迎来26岁生日之际,作者的人生陷入了低谷。经过近三年的硕士学习后,最终决定退学,并且面临没有工作经验的困境。尽管如此,作者依然坚定地选择为自己的人生负责。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
author-avatar
肥姐PK老赖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有