图论:二部图

14 篇文章 0 订阅
订阅专栏

二部(分)图

定义: 二部图是一种特殊的图,可以将图的节点分为2个几个,且每个集合中,节点之间没有关联。大概长这个样子:
请添加图片描述
理论判断

  • 图 G 中至少存在两个点,且图中所有回路的长度均为偶数。
  • 任何无回路的的图均是二分图。

判断图为二部图的方法:染色法

定义:对每一个顶点dfs,对本身染色为1,对其邻点染色成2,若存在其本身与其相邻的节点的颜色相同,则不是二分图,否则是二分图。
例题: AcWing 860. 染色法判定二分图
代码如下

#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e5+11;
vector<int>e[N];
int color[N];
bool dfs(int x,int c)
{
	color[x]=c;
	for(int i=0;i<e[x].size();i++)
	{
		int j=e[x][i];
	    if(!color[j])
		{
			if(!dfs(j,3-c))
			  return 0;
		}
		if(color[x]==color[j])
		  return 0;
	}
	return 1;
}
int main()
{
	cin>>n>>m;
	int x,y;
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y;
		e[x].push_back(y);
		e[y].push_back(x);
	}
	
	for(int i=1;i<=n;i++)
	{
		if(!color[i])
		{
			if(!dfs(i,1))
			{
				cout<<"No";
				return 0;
			}
		}
	}
	cout<<"Yes";
	return 0;
}

Something derived

  1. 最大匹配:给定二分图 G 中的所有匹配,所含匹配边数最多的匹配,称为这个图的最大匹配。如图:选择最大匹配的问题即为图的最大匹配问题
    如图,红边就是一个最大匹配
    请添加图片描述

  2. 完全匹配:一个匹配中,图中每个顶点都与图中某条边相关联,则称此匹配为完全匹配,即一个图的某个匹配中,所有的顶点都是匹配点,就是一个完全匹配。
    显然,由于完全匹配的任何一个点都已经匹配,添加一条新的匹配边一定会与已有的匹配边冲突,因此完全匹配一定是最大匹配。

  3. 完美匹配:对于一个二分图,左点集与右点集的点数相同,若存在一个匹配,包含左点集、右点集的所有顶点,则称为完美匹配

  4. 最优匹配:带权二分图的权值最大的完全匹配称为最佳匹配。


匈牙利算法:

匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。
首先说明2个概念交替路增广路

  • 交替路:交替路从一个未匹配点出发,依次经过 非匹配边、匹配边、非匹配边… 形成的路径
  • 增广路:如果交替路经过除出发点外的另一个未匹配点,则这条交替路称为增广路)
    如图: 8-4-7-1-5为一交替路; 8-4-7-1-5-2为一增广路
    请添加图片描述
    增广路的结论:
  • P的路径长度一定为奇数
  • 对增广路径编号,所有奇数的边都不在M中,偶数边在M中
  • P经过取反操作可以得到一个更大的匹配图,比原来匹配多一个
  • 当且仅当不存在关于图M的增广路径,则图M为最大匹配

所以匈牙利算法的思路就是:不停找增广路,并增加匹配的个数

放个例题: 二分图的最大匹配
代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+11;
int first[N];
struct node
{
	int u,v,nxt;
}e[N];
int n1,n2,m;
int ans=0;
int vis[N];
int cp[N];
bool dfs(int x,int tag)
{
	if(vis[x]==tag)
	  return 0;
 	vis[x]=tag;
	for(int i=first[x];i!=-1;i=e[i].nxt)
	{
		int j=e[i].v;
		if(!cp[j] || dfs(cp[j],tag))
		{
			cp[j]=x;
			return 1;
		}
	}
	return 0;
}
int main()
{
	cin>>n1>>n2>>m;
	int u,v;
	memset(first,-1,sizeof(first));
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v;
		e[i].u=u;
		e[i].v=v;
		e[i].nxt=first[u];
		first[u]=i;
	}
	for(int i=1;i<=n1;i++)
	{
		 if(dfs(i,i))
		   ans++;
	}
	cout<<ans;
	return 0; 
	
 }

mood:雷神4挺好看的
图论算法-二部图匹配
10-30
图论算法-二部图匹配图论算法-二部图匹配图论算法-二部图匹配
图论 王树禾 pdf 第二版
04-30
图论(第2版)》系统阐述图论算法图论的基本概念、理论、算法及其应用,建立图的重要矩阵与线性空间,论述计算复杂度理论中的NP完全性理论和著名的一些NPC问题等。《图论(第2版)》概念明确,立论严谨,语言...
二部图(二分图)总结
热门推荐
哆啦A瑶的博客
05-20 10万+
1 二部图 二部图又叫二分图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划分为两个不相交子集,使得...
图论 | 无向图 —— 二部图/二分图
也许有一天我们再相逢 睁开眼睛看清楚 我才是英雄!
04-10 1万+
123
第六章 特殊的图 6.1 二部图
Deam_swan_goose的博客
12-30 4930
6.1 二部图 本节大多都是概念的引入,我就用我自己的话去记录了。 二部图(偶图):我们将图里的点分为两个集合V1V_1V1​,V2V_2V2​后,每一条边的端点分别属于V1V_1V1​,V2V_2V2​。我们将二部图记做GGG = <V1V_1V1​,V2V_2V2​,EEE>。其中V1V_1V1​,V2V_2V2​称为互补顶点子集。 当二部图中V1V_1V1​的每一个顶点到V2V...
二部图(二分图)总结,一个图意味着从任何一个顶点开始能访问到所有的结点
~ 飞 扬 的 天 空 ~
11-01 1632
描述 二 部图又叫二分图,我们不是求它的二分图最大匹配,也不是完美匹配,也不是多重匹配,而是证明一个图是不是二部图。证明二部图可以用着色来解决,即我们可以 用两种颜色去涂一个图,使的任意相连的两个顶点颜色不相同,切任意两个结点之间最多一条边。为了简化问题,我们每次都从0节点开始涂色 输入 输入: 多组数据 第一行一个整数 n(n<=200) 表示 n个节点 第二行一个整数m 表示 条边 随后 m行 两个整数 u , v 表示 一条边 输出 如果是二部图输出 BICOLORABLE.否则输出
二部图的判断
weixin_43878652的博客
08-31 5745
1 二部图基础 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 二部图 2 染色法判断二部图 先找到一个没被染色的节点u,把它染上一种颜色 之后遍历所有与它相连的节点v,如果节点v已被染色并且颜色和节点u一样,那么就失败了(即该图不是二部图) 如果这个节点v没有被染色,先...
cPP.zip_二部图
09-24
二部图图论中的一个重要分支,它是指图中所有顶点可以被分为两个不相交的集合,使得每条边都连接这两个集合中的一个顶点。在二部图中,不存在两个顶点属于同一集合并由边相连的情况。二部图在解决实际问题时有着...
图论二部图图形解析.doc
09-30
图论二部图图形解析.doc
pipei.rar_YY6V_statementu1h_subgraph_图论二部图;最大匹配问题
07-15
求二分图最大匹配可以用最大流或者匈牙利算法。 最大匹配 给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配. 选择这样的边数最大的子集称为图的最大匹配问题 如果一...
一种基于邻接矩阵的二部图判定算法 (2011年)
06-13
二部图定义的基础上,给出一种基于邻接矩阵的新判定算法,通过在每对结点间逐步插入中间结点进行路径长度检测,并进行了实验测试。结果表明,新算法能较好解决二部图的判定问题。
二分图/二部图(bipartite graph)
weixin_41361950的博客
08-10 4549
二分图定义: 对于一个无向图G(V,E),V为顶点集合,E为边集合,存在两个集合,V1,V2∈V,且V1,V2互不相交 ,且E的两个端点分别属于V1,V2,那么顶点集合V与边集合E构成一个二分图,也叫二部图。 匹配: 在图论中,一个匹配(matching)是一个边的集合,其中任意两条边都没有公共结点。 如下图(u1-v1,1; u2-v1,2;u4-v2,2; )构成一个匹配 匹配点: 构成匹配的顶点,如上图中(u1,u2,u4,v1,1,v1,2,v2,2) 匹配边: 构成匹配的边..
二分图的定义和判定
知行合一
08-08 3万+
  写在之前:更多二分图知识,请关注---&gt;二分图知识导航篇   定义   二分图也称二部图,是图论里的一种特殊模型,也是一种特殊的网络流。其最大的特点在于,可以将图里的顶点分为两个集合,且集合内的点没有直接关联,如下图所示。 图1 理论判断 如果某个图为二分图,那么它至少有两个顶点,且其所有回路的长度均为偶数,任何无回路的的图均是二分图。 图2     见图2所示,其存...
二部图问题
m0_63024355的博客
11-15 348
二部图是一种特殊的图,其中所有的节点可以被分成两个不相交的集合,使得图中的每条边连接的两个节点分属于不同的集合。换句话说,二部图可以被划分为两个独立的顶点集合,且所有边的两个节点分别属于这两个集合。二部图可以用来描述许多现实世界中的问题,例如婚姻稳定性问题、任务分配等。因此,判定一个图是否是二部图的问题具有重要的意义。如果使用染色算法判定二部图,则时间复杂度为 O(V+E),其中 V 是节点的数量,E 是边的数量。这是因为每个点和每条边仅会进出一次。
二部图
嘻哈吼嘿呵的博客
09-17 1837
许多网站都喜欢让用户点击“喜欢/不喜欢”,“顶/反对”,也正是这种很简单的信息也可以利用起来对用户进行推荐!这里介绍一种基于网络结构的推荐系统! 由于推荐系统深深植根于互联网,用户与用户之间,商品与商品之间,用户与商品之间都存在某种联系,把用户和商品都看作节点,他(它)们之间的联系看作是边,那么就很自然地构建出一个网络图,所以很多研究者利用这个网络图进行个性化推荐,取得了不错的效果! 2.二部...
干货 ||(小白入门+进阶)最全二分图总结(最大匹配、最大权匹配、点覆盖、独立集、路径覆盖,带证明和例题)
Here_SDUT的博客
05-27 5469
刚学完二分图感觉总结一下比较好,图论确实让人头秃,差不多一个多星期大概理解了二分图的内容,但还是挺生涩,还是多打点题吧 由于第一次学可能有些地方有出错欢迎大家指正! 大纲 概念汇总 一、二分图的定义 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。简而言之,就是顶点集V可分割为两个互不相交的子集,并且图.
图论——二部图及其算法
最新发布
m0_69087301的博客
11-24 627
这个不是二部图
二部图的详解
每日提升一点点
10-19 1072
二部图的详解
我对KM算法的理解
茅屋
12-26 2338
一般对KM算法的描述,基本上可以概括成以下几个步骤: (1) 初始化可行标杆 (2) 用匈牙利算法寻找完备匹配 (3) 若未找到完备匹配则修改可行标杆 (4) 重复(2)(3)直到找到相等子图的完备匹配 关于该算法的流程及实施,网上有很多介绍,基本上都是围绕可行标杆如何修改而进行的讨论,至于原理并没有给出深入的探讨。 KM算法是用于寻找带权二分图最佳匹配的算法。 二分图是...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 基于pytorch的CNN猫狗图分 7571
  • 图论:二部图 4928
  • Opencv速成笔记--GUI功能 1976
  • 粒子群算法(PSO):优化问题的智能搜索算法 987
  • 【Intel校企实践】猫狗大战 989

分类专栏

  • 并行 2篇
  • 算法 14篇
  • 优化算法 3篇
  • ai 2篇
  • 软件 1篇
  • 视觉研究 3篇

最新评论

  • 基于pytorch的CNN猫狗图分

    dai _ tu: epoch 次数,网络的深和宽度,学习率;激活函数用prelu好一些

  • 基于pytorch的CNN猫狗图分

    菜鸟变凤凰2023: 博主写得很好,文件名完全按照帖子中的来. 看了7,8篇贴子,只有这个敲完能运行起来.

  • 基于pytorch的CNN猫狗图分

    菜鸟变凤凰2023: epoch 1次,正好相反; 10次大部分都是狗表情包 大概改哪几个参数能提高准确率?

  • 基于pytorch的CNN猫狗图分

    菜鸟变凤凰2023: 我用的25000条的那个官方的数据集,训练了10次,然后检测的时候也是大部分是狗, 只有3成的正确率

  • 基于pytorch的CNN猫狗图分

    dai _ tu: 将epoch调大,神经网络里面的超参也改一下,提高准确率就行了

大家在看

  • 昇思25天学习打卡营第21天|GAN图像生成
  • 你清楚这两个高中经典的复合函数吗?
  • 【C++进阶学习】第七弹——AVL树——树形结构存储数据的经典模块 2391
  • 移动互联 实训DAY09
  • 第四十五天 第九章 动态规划part12 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离

最新文章

  • 【Intel校企】淡水检测
  • 【Intel校企实践】猫狗大战
  • Pthreads 入门
2024年2篇
2023年8篇
2022年19篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dai _ tu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码坂田百姓网标王东莞百搜标王布吉seo排名东莞关键词排名包年推广光明网站seo优化平湖关键词按天计费坪地标王双龙优化沙井百度竞价包年推广福田关键词排名双龙百姓网标王推广大运seo网站推广木棉湾阿里店铺托管塘坑至尊标王东莞网站搜索优化南联关键词按天扣费大鹏网站关键词优化横岗网站推广方案大运网站制作设计大鹏网站优化布吉网站排名优化双龙网站优化软件大鹏建站坪山百搜标王东莞seo网站推广横岗网站优化软件坪地英文网站建设石岩营销网站平湖SEO按天收费广州百姓网标王推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化