当前位置: 首页 > news >正文

二分图的概念汇总

二分图概念汇总--


二分图:是这样一个图,其顶点可分为两集合X和Y,所有的边关联的两顶点中,恰一个属于X,另一个属于Y。同一集合的结点不相邻。

匹配:图的一个匹配是一些边的集合,任意两条边没有公共点。

最大匹配:包含边数最多的匹配。 (匈牙利算法)

完美匹配:所有点都在匹配边上的匹配。

完备匹配:在二分图中,X集合中的所有点都有对应的匹配或者是Y集合中的所有点都有对应的匹配。

最佳匹配:如果G为加权二分图,则权值和最大(最小)的完备匹配称为最佳匹配。 (KM算法)

带权匹配:二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值之和最大或最小。

最小点覆盖:用最少的点(X集合或Y集合的)让每条边都至少和其中一个点关联。即覆盖边。最少点数(即覆盖数)= 最大匹配数

最小路径覆盖:用尽量少的不相互交叉简单路径覆盖有向无环图G的所有结点(不交叉指的是原图,而非后来构造的二分图)。即覆盖点。建立一个二分图模型,把所有顶点i拆成两个:X集中的i和Y集中的i',如果有边i->j,则在二分图中引入边i->j',结果就是最小路径覆盖 = N - 最大匹配数。(N为原图中结点数)

最大独立集:在N个点的图中选出m个点,使这m个点两两之间没有边.求m最大值.如果是二分图,则.最大独立集 = N - 最大匹配数。

完全子图:任意两点都相连的顶点的集合

最大完全数:最大完全子图中顶点的个数   最大完全数=原图的补图的最大独立数(补图中的独立集不正是相互都没有连边么,反过来说,它们在原图中不正是两两都有连边么)


最佳匹配和带权匹配的区分:二分图的带权匹配是不考虑是不是完备匹配,只要求最大或最小权匹配。而二分图的最佳匹配一定为完备匹配,在此基础上,才要求匹配的边权值之和最大或最小,即最佳匹配必须在完备匹配的基础上找最大或最小权匹配。


KM算法的拓展:

KM算法是求最大权完备匹配,如果要求最小权完备匹配怎么办?方法很简单,只需将所有的边权值取其相反数,然后进行求最大权完备匹配,匹配的值再取相反数即可。

KM算法的运行要求是必须存在一个完备匹配,如果想要求一个最大带权匹配(不一定完备)该如何办?依然很简单,把不存在的边权值赋为0,再进行求最大权完备匹配即可。

KM算法求得的最大权匹配是边权值和最大,如果我想要边权之积最大,又怎样转化?还是不难办到,每条边权取自然对数,然后再求最大权和匹配,求得的结果ans再算出e^ans就是最大积匹配(在C++中e可以通过cmath头文件中的exp(1)来表示出来,同样此处的结果就是exp(ans))。但至于精度问题则没有更好的办法了。

kuangbin博客最后还提到:"KM算法用来解决最大权匹配问题:在一个二分图内,左顶点集合为X,右顶点集合为Y,现对于每组左右连接X(i)Y(j)有权W(i,j),求一种匹配使得所有W(i,j)的和最大。
也就是最大权匹配一定是完备匹配。如果两边的点数相等则是完美匹配。
如果点数不相等,其实可以虚拟一些点,使得点数相等,也成为了完美匹配。"

点数不相等的话可以虚拟一些点,使之成为完美匹配,还没遇到过。有待学习。



参考博文:

http://www.cnblogs.com/Dario67/archive/2011/04/19/2020621.html

http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646535.html

相关文章:

  • HDU 1429(状压+bfs)
  • 树莓派系统安装初级教程
  • POJ 2528(线段树+离散化)
  • hadoop问题与解决办法
  • HDU 4725(最短路之建图难点)
  • QDU首届易途杯大赛-kk与cillyb的荣誉之战
  • Visual Studio 有哪些好用的插件?
  • QDU首届易途杯大赛-ycb老师与一道简单的物理题
  • SqlTest(2013-07-10)
  • 蓝桥杯-K倍区间(前缀和) 分巧克力(二分)
  • Linux下MySQL5.6源码安装
  • HDU-1024 Max Sum Plus Plus(DP)
  • C#开发微信门户及应用(27)-公众号模板消息管理
  • CodeForces 628D(数位DP)
  • 多重背包--二进制优化
  • docker容器内的网络抓包
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaWeb(学习笔记二)
  • MySQL主从复制读写分离及奇怪的问题
  • spring boot 整合mybatis 无法输出sql的问题
  • Zepto.js源码学习之二
  • 从零开始在ubuntu上搭建node开发环境
  • 分享一份非常强势的Android面试题
  • 解析带emoji和链接的聊天系统消息
  • 目录与文件属性:编写ls
  • 你不可错过的前端面试题(一)
  • 前端_面试
  • 线性表及其算法(java实现)
  • 怎样选择前端框架
  • 翻译 | The Principles of OOD 面向对象设计原则
  • # 安徽锐锋科技IDMS系统简介
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)STL算法之遍历容器
  • (7)STL算法之交换赋值
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (二)hibernate配置管理
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (算法)Game
  • (一)kafka实战——kafka源码编译启动
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .htaccess配置重写url引擎
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net 受管制代码
  • .Net 知识杂记
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • /dev下添加设备节点的方法步骤(通过device_create)
  • [ 数据结构 - C++] AVL树原理及实现
  • [AIGC] SQL中的数据添加和操作:数据类型介绍