第九章 二分图平面图和树王元元
什么是二分图
(4)当(2),(3)步骤中断于情况(I),则将增广 路中非匹配边改为匹配边,原匹配边改为 非匹配边(从而得到一个比原匹配多一条边 的新匹配),回到步骤(1),同时消除一切 现有标记。 (5)对一切可能,(2)和(3)步骤均中断于情况 (II),或步骤(1)无可标记结点,算法终止(算法 找不到交替链).
A
B
什么是二分图?
二分图的一个等价定义:不含有(含奇数条边
的环)的图。图1是一个二分图。为了清晰,我们都 把它画成图2的形式。 无向图G为二分图的充分必要条件是,G至少有 两个顶点,且其所有回路的长度均为偶数
匹配
在图论中一个匹配是一个边的集合,其中任意 两条边都没有公共顶点。例如,图3中红色的边。
二分图及其应用
(Bipartite Graph & Applications)
主要内容:
什么是二分图? 二分图的各种匹配的定义?
如何利用匈牙利算法求最大匹配?
二分图的最小顶点覆盖 DAG图的最小路径覆盖 二分图的最大独立集
什么是二分图?
二分图又称作二部图,是图论中的一种特殊模型。 设 G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的 子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i 和j分别属于这两个不同的顶点集(i in A,j in B),则称图G 为一个二分图。
样例1二分图
样例2二分图
n1 n2 n3
p1 p2 p3
n1
p1 p2 p3
n2
n3
画图详细ห้องสมุดไป่ตู้详解过程
实现代码
#include<stdio.h> #include<string.h> int m,n; int G[110][310],link[310]; bool vis[310];
二分图——精选推荐
⼆分图⼆分图⿊⽩染⾊,邻点异⾊⼆分图⼀定⽆奇环(奇环——边数点数都是奇数)完全⼆分图⽤kn,m表⽰(完全图⽤kn表⽰)染⾊判断⼆分图 ⾸先任意取出⼀个顶点进⾏染⾊,和该节点相邻的点有三种情况: 1.未染⾊那么继续染⾊此节点(染⾊为另⼀种颜⾊) 2.已染⾊但和当前节点颜⾊不同跳过该点 3.已染⾊并且和当前节点颜⾊相同返回失败(该图不是⼆分图)0表⽰还未访问,1表⽰在集合A中,2表⽰在集合B中。
col(color)储存颜⾊,初始化为0.vector <int> v[N];void dfs(int x,int y) {col[x]=y;for (int i=0;i<v[x].size();i++) {if (!col[v[x][i]]) dfs(v[x][i],3-y);if (col[v[x][i]]==col[x]) FLAG=true;}}for (i=1; i<=n; i++) col[i]=0;for (i=1; i<=n; i++) if (!col[i]) dfs(i,1);if (FLAG) cout<<"NO"<<endl;else cout<<"YES"<<endl;判断奇环(flag==1奇环)注意,在每个连通块⾥都要取最⼩值#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;#define N 200050vector< int >g[N];int n,m,ans1,ans2,ans;int col[N],dep[N];//1 white 2 blackbool flag,vis[N];void dfs(int x,int c){col[x]=c;if(c==1)ans1++;else ans2++;for(int i=0;i<g[x].size();i++){int y=g[x][i];if(!col[y])dfs(y,3-c);else if(col[y]==col[x]) flag=1;}}void check(int x){for(int i=0;i<g[x].size();i++){int y=g[x][i];if(!vis[y])vis[y]=1,dep[y]=dep[x]+1,check(y);else if((dep[x]-dep[y])%2==0)flag=1;}}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){vis[i]=1;col[i]=100;}for(int i=1,x,y;i<=m;i++){scanf("%d%d",&x,&y);g[x].push_back(y);g[y].push_back(x);vis[x]=vis[y]=0;col[x]=col[y]=0;}flag=0;for(int i=1;i<=n;i++)if(!vis[i])vis[i]=1,check(i);for(int i=1;i<=n;i++){ans1=ans2=0;if(!col[i])dfs(i,1);ans+=min(ans1,ans2);}if(flag)puts("Impossible");else printf("%d\n",ans) ;return 0;}这道题有⼀种扩展域并查集的解法,题意抽象出来的模型就是:给定⼀张⽆向图,边有边权。
图论专题 二分图
图论专题二分图朝花夕拾2010-12-28 17:56:46 阅读66 评论0 字号:大中小订阅二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。
二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。
最大匹配:图中包含边数最多的匹配称为图的最大匹配。
完美匹配:如果所有点都在匹配边上,则称这个最大匹配是完美匹配。
二分图匹配基本概念:未盖点设VI是G的一个顶点,如果VI不与任意一条属于匹配M的边相关联,就称VI是一个未盖点。
交错轨设P是图G的一条轨,如果P的任意两条相邻的边一定是一条属于M而另一条不属于M,就称P是交错轨。
可增广轨(增广路)两个端点都是未盖点的交错轨称为可增广轨。
可增广轨的性质:1:P的路径长度必定为奇数,第一条边和最后一条边都不属于M。
2:P经过取反操作可以得到一个更大的匹配M’。
3:M为G的最大匹配当且仅当不存在相对于M的增广路径。
二分图最大匹配匈牙利算法:算法的思路是不停的找增广轨,并增加匹配的个数,增广轨顾名思义是指一条可以使匹配数变多的路径,在匹配问题中,增广轨的表现形式是一条"交错轨",也就是说这条由图的边组成的路径,它的第一条边是目前还没有参与匹配的,第二条边参与了匹配,第三条边没有..最后一条边没有参与匹配,并且始点和终点还没有被选择过.这样交错进行,显然他有奇数条边.那么对于这样一条路径,我们可以将第一条边改为已匹配,第二条边改为未匹配...以此类推.也就是将所有的边进行"取反",容易发现这样修改以后,匹配仍然是合法的,但是匹配数增加了一对.另外,单独的一条连接两个未匹配点的边显然也是交错轨.可以证明,当不能再找到增广轨时,就得到了一个最大匹配.这也就是匈牙利算法的思路。
代码://匈牙利算法复杂度o(nm)#include<iostream>using namespace std;const int MAXN = 1001,MAXM = 1001;int n1,n2,m,ans;//n1,n2分别为二分图两边节点的个数,两边的节点分别用1..n1,1..n2编号,m为边数bool g[MAXN][MAXM];//图G邻接矩阵g[x][y]bool y[MAXM];//Y集合中点i访问标记int link[MAXM];//link[y]表示当前与y节点相邻的x节点void init(){int x,y;memset(g,0,sizeof(g));memset(link,-1,sizeof(link));ans = 0;scanf("%d%d%d",&n1,&n2,&m);for (int i = 1;i <= m;i++){scanf("%d%d",&x,&y);g[x][y] = true;}}bool find(int x)//是否存在X集合中节点x开始的增广路{for (int i = 1;i <= n2;i++)if (g[x][i] && !y[i])//如果节点i与x相邻并且未访问过{y[i] = true;if (link[i] == -1 || find(link[i]))//如果找到一个未盖点i中或从与i相邻的节点出发有增广路{link[i] = x;return true;}}return false;}int main(){init();/*for (int j = 1;j <= n2;j++)for (int i = 1;i <= n1;i++)if (g[i][j] && !link[j])link[j] = i;//贪心初始解优化*/for (int i = 1;i <= n1;i++){memset(y,0,sizeof(y));if (find(i))ans++;}printf("%d\n",ans);return0;}真正求二分图的最大匹配的题目很少,往往做一些简单的变化:变种1:二分图的最小顶点覆盖最小顶点覆盖要求用最少的点(X或Y中都行),让每条边都至少和其中一个点关联。
二分图匹配及其应用-PPT精品
例题4. Unstable Systems(SGU218)
• 求一个完备匹配,使得匹配边中权值最大 的边权值最小。
分析
• 算法一
– 二分选择flow,并且进行最大匹配
• 算法二
– 从权值最低的边开始,每次增加一条边。维护 交错树森林,最多只可能增加一个交错轨。
– 因为找到N条交错轨即可,而维护交错树森林 的平摊复杂度为O(1),所以总时间复杂度依然 为O(N3)
– 时间复杂度 O ( n m )
• 基于DFS的算法: 每次选一个未盖点u进行DFS. 如果找不到 增广路则换一个未盖点, 且以后再也不从u出发找增广路.
Hopcroft算法
• 可以证明:如果每次找到的最短增广路集是极大 的,则只需要增广O ( n ) 次
• 关键:用O(m)时间找一个极大最短增广路集 • 步骤1:用距离标号扩展匈牙利树,找到第一个
• 实际上不需要单独建立二分图,直接在图 上操作即可。 点和边都是O(N2)个, 因此时 间复杂度为O(N3)
例题3. Speleology(POI9906)
• 一个山上有一个很大的洞,其中有n个室, 编号为1~n,室与室之间有通道。编号越大 的室在越下方。有一批洞穴学者要从编号 为1的室走到编号为n的室中,途中他们只 能从编号小的地方走到编号大的地方。每 条和1或n相连的通道只允许一个人通过。 问:最多可以有多少名洞穴学者?
分析
• 可以用二分图的最佳匹配 • 因为这个图有特殊性,男孩子一边任一个
点连出的所有边的权值都是相同的,所以 只要将男孩子按照国王的喜欢程度从大到 小排序,先对国王更喜欢的孩子扩展增广 路径,就可以得到最优解。这是为什么呢?
分析
• 由增广路的性质可以知道一条增广路的应 用只可能在匹配的男孩子中加入一个人, 而不可能删去任意一个人。
离散数学课件_9 树与平面图
1.概念:有向树,根树,树叶,内点,分支
点,层数,树高,祖先,后代,父亲,儿子,
兄弟,有序树,m叉树,完全m叉树,根子树,
左子树,右子树,带权二叉树,最优二叉
树,前缀,前缀码,二元前缀码,二叉树遍
历等;
4
返回本章首页
2019/12/4
第三节 有向树与根树(2)
2.定理: 设T是一棵根树,r是T的树根,则 对于T的任一顶点v,存在唯一的有向路 从r到v;
3.算法:最优二叉树的Huffman算法;
4.前缀码问题:前缀码与二叉树的对应关 系;
5.二叉树的遍历:三种遍历方法,即先根遍 历,中根遍历,后根遍历法.
返回本章首页
5 2019/12/4
第四节 平面图
平面图是很多实际问题的模型. 例如在 集成电路的布线设计中就遇到了平面图 的问题.
1.基本概念:平面图,平面嵌入,面,无限 面(外部面),内部面,边界,次数等;
第九章 树与平面图
树是一类结构较为简单的图,是用途极 为广泛的离散数学模型,特别是二叉树, 它在计算机科学中用得最多.因此在学习 时应很好地掌握好诸如树的充要条件、 生成树、最优生成树、根树、树的各种 算法、及二叉树的访问次序等内容.平面 图是实际背景很强的一类图,能用本章 介绍的方法判断一个图是否为平面图.
2.基本非平面图:K3,3与K5; 3.平面图的欧拉公式; 4.平面图的判定:库拉图斯基定理.
返回本章首页
6 2019/12ቤተ መጻሕፍቲ ባይዱ4
本章小结
本章我们介绍树与平面图,但以介绍树 为主.给出树的定义及树的充要条件, 生成树、最优生成树及最优生成树的克 鲁斯卡尔算法,特别是二叉树,我们讨 论 了 二 叉 树 的 Huffman 算 法 、 前 缀 码 、 二叉树的遍历等问题.最后介绍了一类 实际背景很强的一类图——平面图.
二部图欧拉图哈密尔顿图平面图教学课件
网络设计:用于设计网络拓扑结构,如路由器、交换机等设备的连接
电路设计:用于设计电路板布局,如PCB板、集成电路等
地图绘制:用于绘制地图,如城市地图、交通地图等
建筑设计:用于设计建筑布局,如房屋、办公楼等
物流规划:用于规划物流网络,如仓库、配送中心等
城市规划:用于规划城市布局,如道路、公园等
汇报人:
哈密尔顿图是平面图的一种特殊情况,即每个顶点的度数都是2
哈密尔顿图定义:每个顶点的度数等于图中的边数
哈密尔顿图的性质:哈密尔顿图是欧拉图
哈密尔顿图的判定方法:通过计算每个顶点的度数来判断
哈密尔顿图的应用:在图论、计算机科学等领域有广泛应用
PART FIVE
平面图是一种特殊的图,其顶点和边都在同一个平面上
哈密尔顿图是一种特殊的图,其每个顶点的度数都是2或0。
哈密尔顿图是一种特殊的欧拉图,其每个顶点的度数都是2。
哈密尔顿图是一种特殊的平面图,其顶点和边都可以在平面上表示出来。
哈密尔顿图是一种特殊的图,其每个顶点的度,即每个顶点的度数都是2
哈密尔顿图是二部图的一种特殊情况,即每个顶点的度数都是2
在数学中,哈密尔顿图可以用于研究图的性质,如图的连通性、图的色数等。
哈密尔顿图在图论中具有重要的应用价值,特别是在网络流、电路设计等领域。
在计算机科学中,哈密尔顿图可以用于解决一些NP-hard问题,如旅行商问题、背包问题等。
在物理学中,哈密尔顿图可以用于描述量子系统的状态空间,从而进行量子计算和量子信息处理。
汇报人:
,
CONTENTS
PART ONE
PART TWO
二部图是一种特殊的图,由两个部分组成,每个部分包含一组节点每个节点只能与另一部分的节点相连,不能与同一部分的节点相连二部图的节点可以分为两个集合,每个集合中的节点只能与另一个集合中的节点相连二部图的边可以分为两种类型,一种是连接两个不同集合的边,另一种是连接同一集合中的边二部图的性质包括:每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边数,每个节点度数之和等于边
二分图的讲解
例 3个图的匹配数 依次为3, 3, 4.
4
匹配 (续)
设M为G中一个匹配 vi与vj被M匹配: (vi,vj)M v为M饱和点: M中有边与v关联 v为M非饱和点: M中没有边与v关联 M为完美匹配: G的每个顶点都是M饱和点
例 关于M1, a,b,e,d是饱和点 f,c是非饱和点
M1不是完美匹配
(1)
(2)
(3)
6
Hall定理
定理(Hall定理) 设二分图G=<V1,V2,E>中,|V1||V2|. G中存 在从V1到V2的完备匹配当且仅当V1中任意k 个顶点至少与V2 中的k个顶点相邻(k=1,2,…,|V1|). 由Hall定理不难证明, 上一页图(2)没有完备匹配.
定理 设二部图G=<V1,V2,E>中, 如果存在t1, 使得V1中每个 顶点至少关联 t 条边, 而V2中每个顶点至多关联t条边,则G 中存在V1到V2的完备匹配.
注意: n 阶零图为二分图.
2
二分图的判别法
定理 非平凡无向图G=<V,E>是二分图当且仅当G中 无奇数长度的回路
例 下述各图都是二分图
3
匹配
设G=<V,E>, 匹配(边独立集): 任2条边均不相邻的边子集 极大匹配: 添加任一条边后都不再是匹配的匹配 最大匹配: 边数最多的匹配
匹配数: 最大匹配中的边数, 记为1
M2是完美匹配
M1
M2
5
二分图中的匹配
定义 设G=<V1,V2,E>为二部图, |V1||V2|, M是G中最 大匹配, 若V1中顶点全是M饱和点, 则称M为G中V1 到V2的完全匹配. 当|V1|=|V2|时, 完备匹配变成完美 匹配.
lecture_09_2二分图及其应用
匈牙利算法是基于Hall定理中充分性证
明的思想,其基本步骤为:
1.任给初始匹配M; 2.若X已饱和则结束,否则进行第3步; 3.在X中找到一个非饱和顶点x0,
作V1 ← {x0}, V2 ← Φ; 4.若T(V1) = V2则因为无法匹配而停止,否
则任选一点y ∈T(V1)\V2; 5.若y已饱和则转6,否则做一条从x0 →y的
男1 男2 返回
女1
女2
女3
13 2020/11/23
图示(2):
女1 男1
女2 男2
女3 返回
X0=男2 V1={男2} V2 = Φ T(V1)={女1} Y=女1 V1={男2,男1} V2 ={女1} Y=女2
M←M⊕E(P) ( 其中,P是从x0 →y 的可增广道路 )
14 2020/11/23
可增广道路P,M←M⊕E(P),转2; 6.由于y已饱和,所以M中有一条边(y,z),作
V1 ← V1 ∪{z}, V2 ← V2 ∪ {y}, 转4;
15 2020/11/23
图示(3):
女1 男1
男2
女2
返回
X0=男2 V1={男2} V2 = Φ T(V1)={女1} T(V1) != V2
8 2020/11/23
如何求二分 图的最大匹 配呢?
9 2020/11/23
经典算法:
匈牙利算法
10 2020/11/23
/*hdoj_1150匈牙利算法 月下版 */ #include<iostream> #include<string> #include<vector> using namespace std; bool mark1[100],mark2[100]; int list[100]; int n,m,edge,num; vector<vector<int> > v; bool dfs(int to) { register int i,point,s = list[to]; for(i=0;i<v[s].size();i++) { point = v[s][i]; if(!mark2[point]) continue; mark2[point] = false; if(list[point]==-1 || dfs(point)){ list[point] = s; return true; } } return false; } void Solve() { int i,j,point; bool flog = false; memset(mark1,true,sizeof(mar k1)); memset(list,-1,sizeof(list)); num=0; for(i=0;i<n;i++) { for(j=0;j<v[i].size();j++) if(list[v[i][j]] == -1) { mark1[i] = false; list[v[i][j]] = i; num++; if(i==0) flog = true; break; } }
离散第23讲 平面图的着色与树
n = 1时显然T无回路,因这时m=n–1=0。
设顶点数为n–1 的满足题设的图无回路,顶点数为n的图T至少有 两个悬挂点。去掉一悬挂点构成T’。显然T’仍连通,且m’=m– 1=n–2 = n’–1 ,因此由归纳假设T’无回路。在T’上加回所删去的 悬挂点得T,故T亦无回路。
第23讲 平面图的着色与树
-5-
对偶图例
第23讲 平面图的着色与树
-6-
对偶图例
同构图的对偶图可能不同构 左边的对偶图有5度顶点, 右边的对偶图却没有 平面图的对偶图仍为平面图
第23讲 平面图的着色与树
-7-
可k着色
定义: 无环图G称为可k-着色的,如果可用k种颜色 给G的所有顶点着色,使每个顶点着一种颜色,而同 一边的两个端点着不同颜色。
v5 v4
v1 v2
v0
v3
第23讲 平面图的着色与树
-10-
5色定理
为叙述简明,令RY表示G-v0中所有着红、黄顶点的集合,BW表 示G - v0中所有着黑、白顶点的集合。考虑RY生成的G的子图 G(RY)。
若v1,v3分属于G(RY)的两个不同的连通分支,那么只要将v 1所在分支的红、黄顶点的着色作一对换(从而v1着黄色), 便可给v0着红色以完成对G的5-着色。
若任意平面图可k-着色,则任意平面图的面可用k种 颜色之一着色,使得相邻的面着不同颜色
第23讲 平面图的着色与树
-8-
5色定理
定理: 任何平面图都是可5-着色的。 证:
连通分支、环和平行边与着色问题无关,因此 可只讨论平 面连通简单图。 设G为任一平面连通简单图,顶点个数为n 。对n归纳。 当n≤5时命题显然成立。 设n-1个顶点的平面图都是可5-着色的。考虑n个顶点的图G。
离散数学(第二版)第9章树
e10, 则分别产生初级回路e1e3e4, e1e4e5e2, e6e8e9,
•
•
•
e7e6e9e10。
•
第九章 树
这些初级回路有一个共同特点: 它们中均只含一条弦,
其余的边均是树枝, 我们称这样的回路为基本回路。 对于
G的每棵生成树T, m-n+1条弦对应着m-n+1个基本回路,
这些基本回路构成的集合称为对应T的基本回路系统。 显
例如图9.1.3中, T1和T2是图G的两棵生成树, 1 和2 是 分别对应于它们的余树。
第九章 树
图9.1.3 图的生成树和余树
第九章 树
由图9.1.3可见, G与T1、 T2的区别是G中有回路, 而 它的生成树中无回路, 因此要在一个连通图G中找到一棵 生成树, 只要不断地从G的回路上删去一条边, 最后所得 无回路的子图就是G的一棵生成树。 于是有如下定理。
这个问题的数学模型为: 在已知的带权图上求权最小 的生成树。
定义9.1.4 设无向连通带权图G=〈V, E, ω〉, G中带 权最小的生成树称为G的最小生成树(最优树)。
定理9.1.4 设连通图G的各边的权均不相同, 则回路 中权最大的边必不在G的最小生成树中。
证明略。
第九章 树
定理的结论是显然的, 由此寻找带权图G的最小生成 树, 可以采用破圈法, 即在图G中不断去掉回路中权最大 的边。
(5) 1, 1, 1, 1, 1, 2, 5
(6) 1, 1, 1, 1, 1, 3, 4
(7) 1, 1, 1, 1, 1, 1, 6
第九章 树
注意到, 不同构的度数列对应不同的树, 但对应同一 度数列的非同构的树不一定唯一, 所以对应(1)有T1, 对应 (2)有T2、 T3和T4, 对应(3)有T5和T6, 对应(4)有T7和T8, 对应(5)有T9, 对应(6)有T10, 对应(7)有T11(见图9.1.2)。
经典算法之二分图
二分图的最大匹配
• • • • • • • 增广路的性质: (1)有奇数条边; (2)起点在左边,终点在右边; (3)路径上的点一定是一个在左边,一个在右边,未匹配边,匹配边, 未匹配边交替出现,最后一条是为匹配边; (4)路径上的点只有终点和起点不是匹配点,其余都是匹配点; (5)第奇数个边是未匹配边,第偶数个边是匹配边; 研究增广路的意义:只要将增广路 的边做一个异或操作(将未匹配边 变成匹配边,将匹配边变成未匹配 边),匹配边的数量就能加一,反 复寻找这个增广路的话,就能将匹 配数不断增加,一直到找不到这个 增广路,就说明当前找到的匹配是 最大匹配。 从上述的图Fig3做异或操作即可得 到Fig4
谢谢观看~~
•
二分图的最大匹配
• 匈牙利算法轮廓: • ⑴置匹配子图M为空; • ⑵找出一条增广路径P,通过异或(取反)操作获 得更大的匹配子图M’代替M; • ⑶重复⑵操作直到找不出增广路径为止。 • 以上过程用DFS和BFS实现均可。
• 复杂度分析: • 因为每个点都要找一次增广路,这条路取最极端的 长度就是边的数量,所以时间复杂度是 O(V⋅E) ; • 代码见附件
• 如果是一般图的最大匹配呢?? • 一般图匹配用带花树算法来求解。
附件
• • • • • Hopcroft Karp算法: /11980011/ KM算法: O(n ^ 4): /11979990/
• O(n ^ 3): • /11979986/
二分图最小点覆盖
• 最小点覆盖指的是在二分图中求最少的点,让每边都 至少和其中的一个点关联。 • König定理:二分图中的最大匹配数等于这个图中的 最小点覆盖数(具体证明可以参考Matrix67的博文: /blog/archives/116) • 回到刚才那道题:为什么是最小点覆盖?? • 可以把横坐标(1……n)看做左边的集合,纵坐标 (1……m)看做右边的集合,然后根据题设,射出激 光就意味着取一个点,因为如果取出的点是左边的集 合,那就横坐标被覆盖,取出的点是右边的点就纵坐 标被覆盖,不难得出答案最大是min(n,m);
高等数学-离散数学及其应用-课件-第九章图的基本概念
例2 无向完全图Kn(n3)中有几种非同构 解 的圈? 长度相同的圈都是同构的. 易知Kn(n3)中含长度3,4,…,n
的圈,共有n2种非同构的圈.
长度相同的圈都是同构的, 因此在同构意义下给定长度的圈 只有一个. 在标定图中, 圈表示成顶点和边的标记序列. 如果 只要两个圈的标记序列不同, 称这两个圈在定义意义下不同.
23
最短路问题: 给定带权图G=<V,E,W>及顶点u 和v, 其中每一条 边e的权W(e)为非负实数, 求从u到v的最短路 径.
Dijkstra标号法 (求从s到其余各点的最短路径 和距离) 1. 令l(s)(s,0), l(v)(s,+) (vV-{s}), i1, l(s)是永久标号, 其余标号均为临时标号, us
15
定义9.8 k-正则图——==k 的无向简单图 简单性质:m=kn/2, 当k是奇数时, n必为偶数. 例 Kn是 (n1)-正则图 彼得松图是3-正则图
K5 4阶竞赛图
3阶有向完全图
定义9.9 设两个图G=<V,E>, G =<V,E >(同为无向图或 同为有向图), 若VV且EE,则称G是G的子图,G为 G 母图,记作G G. 又若VV或EE,则称G 为G的真 子图. 若G G且V=V,则称G 为G的生成子图. 设V1V且V1, 称以V1为顶点集, 以G中两个端点都在 V1中的边组成边集的图为G中V1的导出子图, 记作G[V1]. 设 E1E且E1, 称以E1为边集, 以E1中边关联的顶点为顶点 集的图为G中E1的导出子图, 记作G[E1].
例3 无向完全图K3的顶点依次标定为a,b,c.在定义意义下K3 中有多少个不同的长度为3的圈? 解 在定义意义下, 不同起点(终点)的圈是不同的, 顶点间排 列顺序不同的圈也是不同的, 因而K3中有3!=6个不同的长为3 的圈:abca,acba,bacb,bcab,cabc,cbac.
二分图及二分图匹配及并查集
二分图及其二分图的匹配如果可以以某一种方式将题目中的对象分成两个互补的集合,而需要求得他们之间满足某种条件的“一一对应”关系时,往往可以抽象出对象以及对象之间的关系,构造二分图,然后利用匹配算法来解决。
这类题目通常需要考察选手构建二分图模型、设计匹配算法、并对其算法进行适当优化等方面的能力。
通过DFS判别二分图二分图分成两个顶点子集X和Y。
若顶点i属于集合X,则相邻点j必属于集合Y。
proc dfs(d,集合标志); /*从d置入某集合的初始状态出发,判别二分图*/定义d的相邻点u的数据类型;{ if 非二分图标志then exit;if d已属于本集合then exit;if d属于另一集合then 失败退出;设d的本集合标志;取d的第1个相邻点u;while u存在do{ dfs(u,另一集合标志);u←d的下一个相邻点};};/* dfs */依次搜索每个无集合标志的顶点i,执行dfs(i,X集合标志)。
最后未失败退出的情况,则说明图为二分图。
*例题:双栈排序【问题描述】Tom最近在研究一个由趣的排序问题。
如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。
操作a:如果输入序列不为空,将第一个元素压入栈S1操作b:如果栈S1不为空,将S1栈顶元素弹出至输出序列操作c:如果输入序列不为空,将第一个元素压入栈S2操作d:如果栈S2不为空,将S2栈顶元素弹出至输出序列如果一个1~n的排列P可以通过一系列操作使得输出序列为1,2,…,(n-1),n,Tom 就称为P是一个“可双栈排序序列”。
例如(1,3,2,4)就是一个“可双栈排序序列”,而(2,3,4,1)不是。
下图描述了一个将(1,3,2,4)排序的操作序列:<a,c,c,b,a,d,d,b>。
当然,这样的操作序列有可能有几个,对于上例(1,3,2,4),<a,c,b,c,a,d,d,b>是另外一个可行的操作序列。
树与平面图PPT教学课件
模糊矩阵的转置
定义 设A = (aij)m×n, 称AT = (aijT )n×m为A的转 置矩阵,其中aijT = aji. 转置运算的性质:
性质1:( AT )T = A; 性质2:( A∪B )T = AT∪BT,
( A∩B )T = AT∩BT; 性质3:( A ° B )T = BT ° AT;( An )T = ( AT )n ; 性质4:( Ac )T = ( AT )c ; 性质5:A≤B AT ≤BT .
0.3 0.4
00..73
合成(° )运算的性质:
性质1:(A ° B) ° C = A ° (B ° C);
性质2:Ak ° Al = Ak + l,(Am)n = Amn;
性质3:A ° ( B∪C ) = ( A ° B )∪( A ° C );
( B∪C ) ° A = ( B ° A )∪( C ° A );
矩阵的合成.
设X = {x1, x2, …, xm}, Y = { y1 , y2 , … , ys}, Z= {z1, z2, … , zn},且X 到Y 的模糊关系R1 = (aik)m×s, Y 到Z 的模糊关系R2 = (bkj)s×n,则X 到Z 的模糊关 系可表示为模糊矩阵的合成:
(R1∪R2 )(x, y) = R1(x, y)∨R2(x, y); 交: R1∩R2 的隶属函数为
(R1∩R2 )(x, y) = R1(x, y)∧R2(x, y); 余:Rc 的隶属函数为Rc (x, y) = 1- R(x, y).
(R1∪R2 )(x, y)表示(x, y)对模糊关系“R1或者 R2”的相关程度, (R1∩R2 )(x, y)表示(x, y)对模糊 关系“R1且R2”的相关程度,Rc (x, y)表示(x, y)对 模糊关系“非R”的相关程度. 模糊关系的矩阵表示
二分图与平面图
13.3 二分图二分图及判定定理定义13.4无向图G=<V,E>中的结点集合V如果可以划分成两个不相交的子集X和Y,使得G中的每一条边的一个端点在X中而另一个端点在Y中,则称G为二部图或二分图,记为G=<X,E,Y>。
定义13.5定理13.6设G=<X,E,Y>是一个二分图,若G是一个简单图,并且X中的每个结点与Y中的每个结点均邻接,则称G为完全二分图。
如果|X|=m,|Y|=n,在同构的意义下,这样的完全二分图只有一个,记为。
设G是无向图,G是二分图当且仅当G中所有回路的长度均为偶数。
13.5 平面图平面图的概念定义13.7如果能将无向图G画在平面上使得除顶点外无边相交,则称G是可平面图,简称平面图。
画出的无边相交的图称为G的平面嵌入。
无平面嵌入的图称为非平面图。
(a),(b)显然是平面图。
同样地,图(c),(d)也是平面图。
如果将图(c),(d)分别表示为图(e),(f),则很容易看出这个事实。
无论怎样画,总有边相交,图(c)是其中一种情况。
图(b)和图(a)的情况相同。
(1) K5, K3,3都不是平面图(2) 设G'⊆G,若G为平面图,则G'也是平面图(3) 设G'⊆G,若G'为非平面图,则G也是非平面图,由此可知,K n(n≥6),K3,n(n≥4)都是非平面图.(4) 平行边与环不影响平面性.主要结论:本章小结特殊图欧拉图 树可平面图二分图哈密顿图充要条件欧拉回路哈密顿回路充分必要所有回路长度为偶数生成树根树二叉树定义性质最小生成树有序树完全二叉树kruskals 算法破圈法Prim 算法最优树前序后序中序编码构造算法分类排序除顶点处外无边相交。
离散数学-树PPT课件
(b)
2
9.1.1 树及其基本性质
定理9.1 在(n,m)树中必有m=n-1。
连通
不包含回路
树
定理9.3 图G是树的充分必要条件是图G的每对 结点间只有一条通路。
在T中不相邻接的任意两结点间添加一条边后形 成的图有且仅有一个圈
.
3
9.1.1 树及其基本性质
定理9.2 具有两个结点以上的树必至少 有两片叶。
.
52
两步图
v1
v2
v3
v4
4
v5
v6
v7
定理9.7 图G是一个两步图的充分条件是
G的所有回路的长度为偶数。
.
53
两步图-练习
P160 9.5 已知关于人员a,b,c,d,e,f的下述事实: a 说汉语、法语和日语; b 说德语、日语和俄语; c 说英语和法语; d 说汉语和西班牙语 ; e 说英语和德语; f 说俄语和西班牙语, 是否能将6人分成两组,使同组中没有两人能相互交谈?
当且仅当一个图的每个 连通分支都是平面图时, 这个图是平面图。
(c)
.
35
9.2.1 平面图的基本概念
K5
(b) (a)
(c)
K 3,3
(d)
.
(e)
36
9.2.1 平面图的基本概念
无回路的图是平面图。
一种判别平面图的直观方法:
(1)对于有回路的图找出一个长度尽可能大的且 (2) 边不相交的基本回路。 (2) 将图中那些相交于非结点的边,适当放置在已选定
51
两步图
v1
v2
v3
v 4 V { v 1 ,v 2 ,v 3 ,v 4 ,v 5 ,v 6 ,v 7 }
二分图及KM算法
二分图的概念二分图又称作二部图,是图论中的一种特殊模型。
设G=(V, E)是一个无向图。
如果顶点集V可分割为两个互不相交的子集X和Y,并且图中每条边连接的两个顶点一个在X中,另一个在Y中,则称图G为二分图。
二分图的性质定理:当且仅当无向图G的每一个回路的次数均是偶数时,G才是一个二分图。
如果无回路,相当于任一回路的次数为0,故也视为二分图。
二分图的判定如果一个图是连通的,可以用如下的方法判定是否是二分图:在图中任选一顶点v,定义其距离标号为0,然后把它的邻接点的距离标号均设为1,接着把所有标号为1的邻接点均标号为2(如果该点未标号的话),如图所示,以此类推。
标号过程可以用一次BFS实现。
标号后,所有标号为奇数的点归为X部,标号为偶数的点归为Y部。
接下来,二分图的判定就是依次检查每条边,看两个端点是否是一个在X部,一个在Y部。
如果一个图不连通,则在每个连通块中作判定。
二分图匹配给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。
图中加粗的边是数量为2的匹配。
最大匹配选择边数最大的子图称为图的最大匹配问题(maximal matching problem)如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配。
图中所示为一个最大匹配,但不是完全匹配。
增广路径增广路径的定义:设M为二分图G已匹配边的集合,若P是图G中一条连通两个未匹配顶点的路径(P的起点在X部,终点在Y部,反之亦可),并且属M的边和不属M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。
增广路径是一条“交错轨”。
也就是说, 它的第一条边是目前还没有参与匹配的,第二条边参与了匹配,第三条边没有..最后一条边没有参与匹配,并且起点和终点还没有被选择过,这样交错进行,显然P有奇数条边(为什么?)红边为三条已经匹配的边。
从X部一个未匹配的顶点x4开始,找一条路径:x4,y3,x2,y1,x1,y2x4,y3,x2,y1,x1,y2因为y2是Y部中未匹配的顶点,故所找路径是增广路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
13
匹配的应用
安排工作:现有6个工人{x1,x2,…,x6}, 有6项工作{y1,y2,…,y6}。假设在同 一时间内,每人只能干一项工作,每项工 作只需一个人干,每个工人能干的工作用 边来表示。 安排工作就是求二分图的一个匹配问题。求 最大匹配就是一个工作最佳的安排问题, 使尽可能多的人有工作干,尽可能多的工 作被人干。
45
应当指出,欧拉公式及其上述推论, 都只是平面连通图或平面连通简单图的必 要条件,而不是它们的充分条件,因此只 能用它们判别非平面图,不能用它们来识 别平面图。
46
(1)切割操作
(1)对边e的切割操作。设G中有边e = {u,v},对边e作切割操作是指: 1) 取消边e。
2) 增加顶点w,以及 边e1 = {u,w}, 边e2 = {w,v}。
10
例9-2 图9-2中各图的红线表示匹配中 的边(简称匹配边)。
(a)
(b)
G (c)
11
9.1.2
匹配
注意:
最大匹配总是存在但未必唯一;
X(Y)-完全匹配及G的完全匹配必定是最 大的,但反之则不然;
X(Y)-完全匹配未必存在,存在不唯一。
12
有四名教师张征、王兴、李忠和赵华,分别 派他们教四门课程:数学、物理、电工和计 算机导论。张征懂物理和电工;王兴懂数学 和计算机导论;李忠懂数学、物理和电工; 赵华只懂电工。问应该如何分派,才不会使 任何人去讲他不懂的课程而又不存在有的课 程无人教?
y1
y2
y3
y4
y5
y6
y7
22
例9-3 用匈牙利算法求图9.3的一个最大匹配。
x1 x2 x3 x4 x5 x6
y1
y2
y3
y4
y5
y6
y7
23
例9-3 用匈牙利算法求图9.3的一个最大匹 配。
x1 x2 x3 x4 x5 x6
y1
y2
y3
y4
y5
y6
y7
24
完全匹配的存在条件
定义图G = <V,E>的顶点子集SV的相 邻顶点集N(S)(所有与S中顶点相邻的顶点 组成的集合):
N(S) = {v vV∧ue(uS∧eE∧ e= {u, v})} 或 N(S) = {v ue(uS∧e = {u, v})}
25
完全匹配的存在条件
定理9-2 设图G = <X,E,Y>。G有X-完 全匹配的充分必要条件是: 对每一SX有N(S)≥ S
霍尔婚姻定理
26
例
x1
x2
x3
y1
y2
y3
y4
27
应用
有六位未婚女子,L1 , L2 , L3 , L4 , L5 , L6 和六位未婚 男子,G1 , G2 , G3 , G4 , G5 , G6 中 六位女子分别对下列集合的男子中意: L1 :{G1 , G2 , G4 }, L2 :{G3, G5}, L3 :{G1 , G2 , G4 }, L4 :{G2 , G5 , G6 }, L5:{G3 , G6}, L6 :{G2 , G5 , G6 } 六位男子分别对下列集合的女子中意: G1 :{L1 , L3 , L6 }, G2 :{L2 , L4 , L6 }, G3 :{L2 , L5}, G4 :{L1 , L3}, G5:{L2 , L6}, G6 :{L3 , L4 , L5 }
匈牙利算法
求最大匹配的一种显而易见的算法是: 先找出全部匹配,然后保留匹配数最多的。 但是这个算法的复杂度为边数的指数级函 数。因此,需要寻求一种更加高效的算法。
18
匈牙利算法
用交替链求最大匹配(称作匈牙利算法,匈牙利 数学家Edmonds于1965年提出) 算法轮廓: (1)置M为空 (2)找出一条交错链P,通过取反操作获得更 大的匹配M′代替M (3)重复(2)操作直到找不出交错链为止
43
推论
定理9-9 顶点数n不少于4的平面连通简 单图G,至少有一个顶点的度数不大于5。
44
证明:定理9-9的结论可加强为“至少有 3个顶点的度数不大于5”。
证 用反证法。假设度数不大于5的顶点数 可以少于3个,但由于n不小于4且为连通 图,所以每个顶点的度数最小为1。因此 6(n – 2) + 2≤2m。 由于m≤3n – 6,故 6(n – 2) + 2≤2m≤6n – 12, 即 6n – 10≤6n – 12 矛盾。 因而度数不大于5的顶点数至少有3个。
3
例9-1
简单无向图G是二分图,当且仅当G可二着色。
4
判断二分图的定理
定理9-1 无向图G为二分图的充分必要条件 是,G至少有两个顶点,且其所有回路的长度 均为偶数。
推论 任何无回路的图均是二分图。
5
例:
6
练习
六名间谍a,b,c,d,e,f被我捕获,他们分别懂得的语言是 a:汉语,法语,日语; b:德语,日语,俄语; c:英语,法语; d:汉语,西班牙语; e:英语,德语; f:俄语,西班牙语。 问至少用几个房间监禁他们,才能使同一房间的人不能 互相直接对话。
47
例9-9
v e
(a)
(b) 边e切割
48
(2) 贯通操作
(2)对顶点v的贯通操作。设G中有二度 顶点v,它是e1= {u,v},e2= {v,w}的共同端点。对顶点v作贯通操 作是指: 1)取顶点v以及边e1,e2。 2)增加边e = {u,w} 。 切割与贯通是互逆的,两者常被称为 同胚运算。
53
例9-13
( a)
(b)
( c)
54
性质
定理9-12 树和森林都是可2-着色的,从 而都是二分图。 定理9-13 树和森林都是平面图,其面数 为 1。
55
性质
定理9-14 设图T为一树,其顶点数、边 数分别是n, m, 那么 n–m=1 或 m=n–1
56
性质
定理9-15 任何非平凡数树都至少有两片叶。
57
树等价定义形式
(1) T无回路且m = n – 1 。 (2) T连通且m = n – 1 。 (3) T无回路,但任意添加边时,T中 产生唯一的一条回路。 (4) T连通,但删去任一边时便不再连 通(T的每一边均为割边)。 (5) 任意两个不同顶点之间有且仅有一 条通路。
58
树等价定义形式
2
9.1 二分图
9.1.1 二分图的基本概念 定义9-1 无向图G = <V,E>称为二分图(bipartite graph),如果有非空集合X,Y使X∪Y = V, X∩Y = ,且对每一eE,都有 e = {x, y},xX,yY。此时常用<X,E,Y>表 示二分图G。 若对X中任一x及Y中任一y恰有一边eE, 使e = {x, y}, 则称G为完全二分图(complete bipartite graph)。 当X = m,Y = n时,完全二分图G记为Km,n。
33
例9-6
v5 r5
v6 r4
v7
v4
r3
v3
r2
v2
v1
r1
v8
34
平面简单图的所有有界面的 度均不小于3。
35
9.2
平面图
定义9-6 称平面简单图G是极大平面图 (maximal planar graph),如果在 G中添加任一边(它不是环,也不是其他边 的平行边)后所得的图均非平面图。
14
术语介绍
定义9-3 设G = <X,E,Y>, M为G的一个匹配。 (1) M中边的端点称为M-顶点, 其它顶点称为非M-顶点。
15
术语介绍
定义9-3 (2)G中vk到vl的通路P称为交替链,如果P 的起点vk和终点vl为非M-顶点,而其边的序 列中非匹配边与匹配边交替出现 (从而首尾两边必为非匹配边,除顶点vk, vl以外各顶点均为M-顶点)。
特别地,当一边{v, v'}两端点均为非M顶点,通路{v, v'}亦称为交替链。
16
由交替链的定义可以推出下述三个结论: 1) P的路径长度必定为奇数,第一条边和 最后一条边都不属于M。 2) P经过取反操作可以得到一个更大的匹 配M′。
3) M为G的最大匹配当且仅当不存在相对 于M的交替链。
17
30
例
B
A
31
K3,3与K5称为库拉托夫斯基(Kuratowski)图 共同点: (1)它们都是正则图。 (2)去掉一条边时它们都是平面图。 (3)K3,3是边数最少的非平面简单图, K5是顶点数最少的非平面简单图,因而它们 都是最基本的非平面图。
32
9.2
面的概念
定义9-5 平面连通图中各边所界定的区域 (不包含任何边和结点)称为平面图的面 (regions)。 有界的区域称为有界面, 无界的区域称为无界面。 界定各面的闭的拟路径称为面的边界 (boundary), 它的长度称为面的度(degree)。
49
例9-9
v e
(a)
(c) 顶点v贯通
50
3 库拉托夫斯基定理
定理9-10 图G是平面图,当且仅当对G 或G的子图作任何同胚操作后所得图均不 以K5及K3,3为子图。
51
例
( a)
(b)
( c)
52
9.3
树
9.3.1 树的基本概念 定义9-9 连通无回路的无向图称为无向树, 简称为树(tree)。 树中的悬挂点又称为树叶(leave), 其它结点称为分支点(branched node)。 单一孤立结点称为空树(null tree)。 诸连通分支均为树的图称为森林(forest), 树也是森林。
7
判断二分图的定理