二分图及其应用

合集下载

高中数学选修2-3《2.2二项分布及其应用》测试卷解析版

高中数学选修2-3《2.2二项分布及其应用》测试卷解析版

高中数学选修2-3《2.2二项分布及其应用》测试卷解析版一.选择题(共6小题)1.三个元件T1,T2,T3正常工作的概率分别为且是互相独立的,按图种方式接入电路,电路正常工作的概率是()A.B.C.D.【分析】电路正常工作的条件是T1必须正常工作,T2,T3至少有一个正常工作,由此利用相互独立事件乘法公式和对立事件概率公式能求出电路正常工作的概率.【解答】解:∵三个元件T1,T2,T3正常工作的概率分别为且是互相独立的,图种方式接入电路,∴电路正常工作的条件是T1必须正常工作,T2,T3至少有一个正常工作,∴电路正常工作的概率:P=(1﹣)=.故选:C.【点评】本题考查概率的求法,是基础题,解题时要认真审题,注意相互独立事件乘法公式和对立事件概率计算公式的合理运用.2.抛掷3枚质地均匀的硬币,A={既有正面向上又有反面向上},B={至多有一个反面向上},则A与B关系是()A.互斥事件B.对立事件C.相互独立事件D.不相互独立事件【分析】由于A中的事件发生与否对于B中的事件是否发生不产生影响,故A与B是相互独立的,从而得出结论.【解答】解:由于A中的事件发生与否对于B中的事件是否发生不产生影响,故A与B 是相互独立的,故选:C.【点评】本题主要考查相互独立事件的定义,属于基础题.3.某地区空气质量监测资料表明,一天的空气质量为优良的概率是0.75,连续两天为优良的概率是0.6,已知某天的空气质量为优良,则随后一天的空气质量为优良的概率是()A.0.8B.0.75C.0.6D.0.45【分析】设随后一天的空气质量为优良的概率为p,则由题意可得0.75×p=0.6,由此解得p的值.【解答】解:设随后一天的空气质量为优良的概率为p,则由题意可得0.75×p=0.6,解得p=0.8,故选:A.【点评】本题主要考查相互独立事件的概率乘法公式的应用,属于基础题.4.投篮测试中,每人投3次,至少投中2次才能通过测试.已知某同学每次投篮投中的概率为0.6,且各次投篮是否投中相互独立,则该同学通过测试的概率为()A.0.648B.0.432C.0.36D.0.312【分析】判断该同学投篮投中是独立重复试验,然后求解概率即可.【解答】解:由题意可知:同学3次测试满足X∽B(3,0.6),该同学通过测试的概率为=0.648.故选:A.【点评】本题考查独立重复试验概率的求法,基本知识的考查.5.设某批产品合格率为,不合格率为,现对该产品进行测试,设第ε次首次取到正品,则P(ε=3)等于()A.C32()2×()B.C32()2×()C.()2×()D.()2×()【分析】根据题意,P(ε=3)即第3次首次取到正品的概率,若第3次首次取到正品,即前两次取到的都是次品,第3次取到正品,由相互独立事件的概率计算可得答案.【解答】解:根据题意,P(ε=3)即第3次首次取到正品的概率;若第3次首次取到正品,即前两次取到的都是次品,第3次取到正品,则P(ε=3)=()2×();故选:C.【点评】本题考查相互独立事件的概率计算,解题的关键在于正确理解P(ε=3)的意义.6.已知P(B|A)=,P(A)=,则P(AB)=()A.B.C.D.【分析】根据条件概率的公式,整理出求事件AB同时发生的概率的表示式,代入所给的条件概率和事件A的概率求出结果.【解答】解:∵P(B/A)=,P(A)=,∴P(AB)=P(B/A)•P(A)==,故选:D.【点评】本题考查条件概率与独立事件,本题解题的关键是记住并且会利用条件概率的公式,要正确运算数据,本题是一个基础题.二.填空题(共1小题)7.为了考察某校各班参加课外小组的人数,从全校随机抽取5个班级,把每个班级参加该小组的人数作为样本数据,已知样本平均数为7,样本方差为4,且样本数据互不相同,则样本数据中的最大值为10.【分析】本题可运用平均数公式求出平均数,再运用方差的公式列出方差表达式,再讨论样本数据中的最大值的情况,即可解决问题.【解答】解:设样本数据为:x1,x2,x3,x4,x5,平均数=(x1+x2+x3+x4+x5)÷5=7;方差s2=[(x1﹣7)2+(x2﹣7)2+(x3﹣7)2+(x4﹣7)2+(x5﹣7)2]÷5=4.从而有x1+x2+x3+x4+x5=35,①(x1﹣7)2+(x2﹣7)2+(x3﹣7)2+(x4﹣7)2+(x5﹣7)2=20.②若样本数据中的最大值为11,不妨设x5=11,则②式变为:(x1﹣7)2+(x2﹣7)2+(x3﹣7)2+(x4﹣7)2=4,由于样本数据互不相同,这是不可能成立的;若样本数据为4,6,7,8,10,代入验证知①②式均成立,此时样本数据中的最大值为10.故答案为:10.【点评】本题考查的是平均数和方差的求法.计算方差的步骤是:①计算数据的平均数;②计算偏差,即每个数据与平均数的差;③计算偏差的平方和;④偏差的平方和除以数据个数.三.解答题(共9小题)8.某商场一号电梯从1层出发后可以在2、3、4层停靠.已知该电梯在1层载有4位乘客,假设每位乘客在2、3、4层下电梯是等可能的.(Ⅰ)求这4位乘客中至少有一名乘客在第2层下电梯的概率;(Ⅱ)用X表示4名乘客在第4层下电梯的人数,求X的分布列和数学期望.【分析】(I)根据题意知每位乘客在第2层下电梯的概率都是,至少有一名乘客在第2层下电梯的对立事件是没有人在第二层下电梯,根据对立事件和相互独立事件的概率公式得到结果.(II)由题意知X的可能取值为0,1,2,3,4,由题意可得每个人在第4层下电梯的概率均为,且每个人下电梯互不影响,得到变量符合二项分布,根据二项分布的公式写出分布列和期望.【解答】解:(Ⅰ)设4位乘客中至少有一名乘客在第2层下电梯的事件为A,…(1分)由题意可得每位乘客在第2层下电梯的概率都是,…(3分)则.…(6分)(Ⅱ)X的可能取值为0,1,2,3,4,…(7分)由题意可得每个人在第4层下电梯的概率均为,且每个人下电梯互不影响,所以,.…(9分)X01234P…(11分).…(13分)【点评】本题看出离散型随机变量的分布列和期望,本题解题的关键是看出变量符合二项分布的特点,后面用公式就使得运算更加简单9.为了了解某年段1000名学生的百米成绩情况,随机抽取了若干学生的百米成绩,成绩全部介于13秒与18秒之间,将成绩按如下方式分成五组:第一组[13,14);第二组[14,15);…;第五组[17,18].按上述分组方法得到的频率分布直方图如图所示,已知图中从左到右的前3个组的频率之比为3:8:19,且第二组的频数为8.(Ⅰ)将频率当作概率,请估计该年段学生中百米成绩在[16,17)内的人数;(Ⅱ)求调查中随机抽取了多少个学生的百米成绩;(Ⅲ)若从第一、五组中随机取出两个成绩,求这两个成绩的差的绝对值大于1秒的概率.【分析】(1)根据频率分步直方图中小正方形的面积是这组数据的频率,用长乘以宽得到面积,即为频率.(II)根据所有的频率之和是1,列出关于x的方程,解出x的值做出样本容量的值,即调查中随机抽取了50个学生的百米成绩.(III)本题是一个古典概型,试验发生所包含的事件是从第一、五组中随机取出两个成绩,满足条件的事件是成绩的差的绝对值大于1秒,列举出事件数,根据古典概型概率公式得到结果.【解答】解:(Ⅰ)百米成绩在[16,17)内的频率为0.32×1=0.32,则共有1000×0.32=320人;(Ⅱ)设图中从左到右前3个组的频率分别为3x,8x,19x依题意,得3x+8x+19x+0.32+0.08=1,∴x=0.02设调查中随机抽取了n个学生的百米成绩,∴n=50∴调查中随机抽取了50个学生的百米成绩.(Ⅲ)百米成绩在第一组的学生数有3×0.02×1×50=3,记他们的成绩为a,b,c 百米成绩在第五组的学生数有0.08×1×50=4,记他们的成绩为m,n,p,q.则从第一、五组中随机取出两个成绩包含的基本事件有{a,b},{a,c},{a,m},{a,n},{a,p},{a,q},{b,c},{b,m},{b,n},{b,p},{b,q},{c,m},{c,n},{c,p},{c,q},{m,n},{m,p},{m,q},{n,p},{n,q},{p,q},共21个其中满足成绩的差的绝对值大于1秒所包含的基本事件有{a,m},{a,n},{a,p},{a,q},{b,m},{b,n},{b,p},{b,q},{c,m},{c,n},{c,p},{c,q},共12个,∴P=【点评】本题考查样本估计总体,考查古典概型的概率公式,考查频率分布直方图等知识,考查数据处理能力和分析问题、解决问题的能力.10.某校高二年级某班的数学课外活动小组有6名男生,4名女生,从中选出4人参加数学竞赛考试,用X表示其中男生的人数,(1)请列出X的分布列;(2)根据你所列的分布列求选出的4人中至少有3名男生的概率.【分析】(1)本题是一个超几何分步,用X表示其中男生的人数,X可能取的值为0,1,2,3,4.结合变量对应的事件和超几何分布的概率公式,写出变量的分布列和数学期望.(2)选出的4人中至少有3名男生,表示男生有3个人,或者男生有4人,根据第一问做出的概率值,根据互斥事件的概率公式得到结果.【解答】解:(1)依题意得,随机变量X服从超几何分布,随机变量X表示其中男生的人数,X可能取的值为0,1,2,3,4..∴所以X的分布列为:X01234P(2)由分布列可知至少选3名男生,即P(X≥3)=P(X=3)+P(X=4)=+=.【点评】本小题考查离散型随机变量分布列和数学期望,考查超几何分步,考查互斥事件的概率,考查运用概率知识解决实际问题的能力.11.某批产品共10件,已知从该批产品中任取1件,则取到的是次品的概率为P=0.2.若从该批产品中任意抽取3件,(1)求取出的3件产品中恰好有一件次品的概率;(2)求取出的3件产品中次品的件数X的概率分布列与期望.【分析】设该批产品中次品有x件,由已知,可求次品的件数(1)设取出的3件产品中次品的件数为X,3件产品中恰好有一件次品的概率为;(2)取出的3件产品中次品的件数X可能为0,1,2,求出相应的概率,从而可得概率分布列与期望.【解答】解:设该批产品中次品有x件,由已知,∴x=2…(2分)(1)设取出的3件产品中次品的件数为X,3件产品中恰好有一件次品的概率为…(4分)(2)∵X可能为0,1,2∴…(10分)∴X的分布为:X012P则…(13分)【点评】本题以实际问题为载体,考查等可能事件的概率,考查随机变量的期望与分布列,难度不大.12.某班组织知识竞赛,已知题目共有10道,随机抽取3道让某人回答,规定至少要答对其中2道才能通过初试,他只能答对其中6道,试求:(1)抽到他能答对题目数的分布列;(2)他能通过初试的概率.【分析】(1)设随机抽出的三道题目某人能答对的道数为X,且X=0、1、2、3,X服从超几何分布,根据超几何分步的概率公式写出概率和分布列.(2)要答对其中2道才能通过初试,则可以通过初试包括两种情况,即答对两道和答对三道,这两种情况是互斥的,根据上一问的计算可以得到.【解答】解:(1)设随机抽出的三道题目某人能答对的道数为X,且X=0、1、2、3,X 服从超几何分布,分布列如下:X0123P即X0123P(2)要答对其中2道才能通过初试,则可以通过初试包括两种情况,这两种情况是互斥的,根据上一问的计算可以得到【点评】本题考查超几何分布,本题解题的关键是看出变量符合超几何分布,这样可以利用公式直接写出结果.13.甲有一个箱子,里面放有x个红球,y个白球(x,y≥0,且x+y=4);乙有一个箱子,里面放有2个红球,1个白球,1个黄球.现在甲从箱子任取2个球,乙从箱子里再取1个球,若取出的3个球颜色全不相同,则甲获胜.(1)试问甲如何安排箱子里两种颜色的个数,才能使自己获胜的概率最大?(2)在(1)的条件下,求取出的3个球中红球个数的数学期望.【分析】(1)根据甲从箱子任取2个球,乙从箱子里在取1个球,若取出的3个球颜色全不相同,则甲获胜,可得甲获胜的概率,再利用基本不等式,可得x,y的值;(2)由题意知取出的3个球中红球个数ξ的取值为1,2,3,4,分别求出其发生的概率,进而求出次数ξ的数学期望【解答】解:(1)由题意,;∴,当且仅当x=y=2时“=”成立所以当红球与白球各2个时甲获胜的概率最大(2)取出的3个球中红球个数ξ=0,1,2,3,所以【点评】本题以摸球为素材,考查等可能事件的概率,考查离散型随机变量的期望,考查基本不等式的运用,解题的关键是理解题意,搞清变量的所有取值.14.甲乙两班进行消防安全知识竞赛,每班出3人组成甲乙两支代表队,首轮比赛每人一道必答题,答对则为本队得1分,答错不答都得0分,已知甲队3人每人答对的概率分别为,,,乙队每人答对的概率都是.设每人回答正确与否相互之间没有影响,用ξ表示甲队总得分.(Ⅰ)求随机变量ξ的分布列及其数学期望E(ξ);(Ⅱ)求在甲队和乙队得分之和为4的条件下,甲队比乙队得分高的概率.【分析】(Ⅰ)由题设知ξ的可能取值为0,1,2,3,分别求出P(ξ=0),P(ξ=1),P (ξ=2),P(ξ=3),由此能求出随机变量ξ的分布列和数学期望E(ξ).(Ⅱ)设“甲队和乙队得分之和为4”为事件A,“甲队比乙队得分高”为事件B,分别求出P(A),P(AB),再由P(B/A)=,能求出结果.【解答】解:(Ⅰ)由题设知ξ的可能取值为0,1,2,3,P(ξ=0)=(1﹣)(1﹣)(1﹣)=,P(ξ=1)=(1﹣)(1﹣)+(1﹣)××(1﹣)+(1﹣)(1﹣)×=,P(ξ=2)=++=,P(ξ=3)==,∴随机变量ξ的分布列为:ξ01 2 3P数学期望E(ξ)=0×+1×+2×+3×=.(Ⅱ)设“甲队和乙队得分之和为4”为事件A,“甲队比乙队得分高”为事件B,则P(A)=++=,P(AB)==,P(B|A)===.【点评】本题考查离散型随机变量的期分布列和数学期望,考查条件概率的求法,是历年高考的必考题型之一,解题时要注意排列组合知识的合理运用.15.如图,李先生家住H小区,他工作在C科技园区,从家开车到公司上班路上有L1、L2两条路线,L1路线上有A1、A2、A3三个路口,各路口遇到红灯的概率均为;L2路线上有B1、B2两个路口,各路口遇到红灯的概率依次为,.(1)若走L1路线,求最多遇到1次红灯的概率;(2)若走L2路线,求遇到红灯次数X的数学期望;(3)按照“平均遇到红灯次数最少”的要求,请你帮助李先生从上述两条路线中选择一条最好的上班路线,并说明理由.【分析】(1)利用二项分布即可得出;(2)利用相互独立事件的概率计算公式及离散型随机变量的期望计算公式即可得出;(3)由于走路线L1时服从二项分布即可得出期望,比较走两条路的数学期望的大小即可得出要选择的路线.【解答】解:(1)设“走L1路线最多遇到1次红灯”为事件A,包括没有遇到红灯和只遇到红灯一次两种情况.则,所以走L1路线,最多遇到1次红灯的概率为.(2)依题意,X的可能取值为0,1,2.,,.随机变量X的分布列为:X012P所以.(3)设选择L1路线遇到红灯次数为Y,随机变量Y服从二项分布Y~,所以.因为EX<EY,所以选择L2路线上班最好.【点评】熟练掌握二项分布列、相互独立事件的概率计算公式及离散型随机变量的期望计算公式及其意义是解题的关键.16.某篮球队与其他6支篮球队依次进行6场比赛,每场均决出胜负,设这支篮球队与其他篮球队比赛中获胜的事件是独立的,并且获胜的概率均为.(1)求这支篮球队首次获胜前已经负了两场的概率;(2)求这支篮球队在6场比赛中恰好获胜3场的概率;(3)求这支篮球队在6场比赛中获胜场数的期望.【分析】(1)首次获胜前已经负了两场说明已经比赛三场,前两场输,第三场嬴,用乘法公式即可求得概率;(2)6场比赛中恰好获胜3场的情况有C63,比赛六场胜三场,故用乘法公式即可.(3)由于X服从二项分布,即X~B(6,),由公式即可得出篮球队在6场比赛中获胜场数的期望.【解答】解:(1)这支篮球队首次获胜前已经负了两场的概率为P==(2)6场比赛中恰好获胜3场的情况有C63,故概率为C63×=20××=(3)由于X服从二项分布,即X~B(6,),∴EX=6×=2【点评】本题考查二项分布与n次独立重复试验的模型,考查根据所给的事件类型选择概率模型的方法,以及用概率模型求概率与期望的能力。

算法合集之《浅析二分图匹配在信息学竞赛中的应用》

算法合集之《浅析二分图匹配在信息学竞赛中的应用》

05 二分图匹配的实践案例
最大二分匹配问题的应用案例
最大二分匹配问题
在二分图中寻找最大的匹配数,使得每条边只被匹配一次。
应用案例
社交网络中的好友推荐。通过最大二分匹配算法,可以找到社 交网络中最多共同好友的两个人,从而推荐他们成为好友。
算法实现
使用匈牙利算法或Kuhn-Munkres算法求解最大二分匹配 问题。
剪枝策略
剪枝条件
在匹配过程中,根据一定的条件判断是否可以剪去当前分支 ,以减少不必要的计算量。
剪枝操作
在匹配过程中,根据剪枝条件进行剪枝操作,避免匹配到不 可能的解。
并查集策略
并查集初始化
在处理二分图匹配问题之前,将图中 的节点按照所属类别进行初始化。
并查集合并操作
在匹配过程中,根据并查集的合并操 作快速判断一条边是否存在于图中, 提高匹配效率。
算法实现
使用匈牙利算法、Kuhn-Munkres算法等经典算法,通过寻找 增广路径和增广回溯的方式求解最大二分匹配。
应用场景
在信息学竞赛中,最大二分匹配问题常用于解决诸如排班、分配 等问题,具有广泛的实际应用价值。
二分图的顶点覆盖问题
二分图的顶点覆盖问题
01
在二分图中寻找最小的顶点集合,使得该集合覆盖所
算法合集之《浅析二分图匹 配在信息学竞赛中的应用》
目录
Contents
• 二分图匹配概述 • 二分图匹配的算法 • 二分图匹配在信息学竞赛中的应用 • 二分图匹配的优化策略 • 二分图匹配的实践案例
01 二分图匹配概述
二分图匹配的定义
二分图匹配是指将一个二分图中的顶 点划分为两个不相交的子集,使得每 个子集中的顶点之间没有边相连,而 两个子集之间通过边相连。

二分图匹配(匈牙利算法)

二分图匹配(匈牙利算法)

KM算法
对于任意的G和M,可行顶标都是存在的: l(x) = maxw(x,y) l(y) = 0 欲求完全二分图的最佳匹配,只要用匈牙利算法求 其相等子图的完备匹配;问题是当标号之后的Gl无 完备匹配时怎么办?1957年(居然比匈牙利算法 早???),Kuhn和Munkras给出了一个解决该问 题的有效算法,用逐次修改可行顶标l(v)的办法使对 应的相等子图之最大匹配逐次增广,最后出现完备 匹配.
例题3 打猎 猎人要在n*n的格子里打鸟,他可以在某一行 中打一枪,这样此行中的所有鸟都被打掉, 也可以在某一列中打,这样此列中的所有鸟 都打掉.问至少打几枪,才能打光所有的鸟? 建图:二分图的X部为每一行,Y部为每一列, 如果(i,j)有一只鸟,那么连接X部的i与Y部的j. 该二分图的最大匹配数则是最少要打的枪数.
1 2 3 4 5
1 2 5 3 4
1
2
3
4
由于每条边表示一个空地,有冲 突的空地之间必有公共顶点,所 以问题转化为二部图的最大匹配 问题.
1 2Leabharlann 34例题1 Place the Robots(ZOJ) 小结
比较前面的两个模型:模型一过于简单,没有给问 题的求解带来任何便利;模型二则充分抓住了问题的内 在联系,巧妙地建立了二部图模型.为什么会产生这种 截然不同的结果呢?其一是由于对问题分析的角度不同: 模型一以空地为点,模型二以空地为边;其二是由于对 原型中要素的选取有差异:模型一对要素的选取不充分, 模型二则保留了原型中"棋盘"这个重要的性质.由此 可见,对要素的选取,是图论建模中至关重要的一步.
例题4 最小路径覆盖 一个不含圈的有向图G中,G的一个路径覆盖 是一个其结点不相交的路径集合P,图中的每 一个结点仅包含于P中的某一条路径.路径可 以从任意结点开始和结束,且长度也为任意 值,包括0.请你求任意一个不含圈的有向图 G的最小路径覆盖数. 理清一个关系:最小路径覆盖数=G的定点 数-最小路径覆盖中的边数

二分图的讲解

二分图的讲解
8
例 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|时, 完备匹配变成完美 匹配.

二分图最大匹配及常用建图方法

二分图最大匹配及常用建图方法

算法———艺术二分图匹配剖析很多人说,算法是一种艺术。

但是对于初学者的我,对算法认识不是很深刻,但偶尔也能感受到他强大的魅力与活力。

这让我追求算法的脚步不能停止。

下面我通过分析匈牙利算法以及常用建图方式,与大家一起欣赏算法的美。

匈牙利算法匈牙利算法是用来解决最大二分图匹配问题的,所谓二分图即“一组点集可以分为两部分,且每部分内各点互不相连,两部分的点之间可以有边”。

所谓最大二分图匹配即”对于二分图的所有边,寻找一个子集,这个子集满足两个条件,1:任意两条边都不依赖于同一个点。

2:让这个子集里的边在满足条件一的情况下尽量多。

首先可以想到的是,我们可以通过搜索,找出所有的这样的满足上面条件的边集,然后从所有的边集中选出边数最多的那个集合,但是我们可以感觉到这个算法的时间复杂度是边数的指数级函数,因此我们有必要寻找更加高效的方法。

目前比较有效的方法有匈牙利算法和通过添加汇点和源点的网络流算法,对于点的个数都在200 到300 之间的数据,我们是采取匈牙利算法的,因为匈牙利算法实现起来要比网络流简单些。

下面具体说说匈牙利算法:介绍匈牙利之前,先说说“增广轨”。

定义:若P是图G中一条连通两个未匹配顶点的路径,并且属最大匹配边集M的边和不属M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广轨定义总是抽象的下面通过图来理解它。

图中的线段(2->3, 3->1, 1->4)便是上面所说的p路径,我们假定边(1,3)是以匹配的边,(2,3)(1,4)是未匹配的边,则边(4,1)边(1,3)和边(3,2)在路径p上交替的出现啦,那么p就是相对于M的一条增广轨,这样我们就可以用边1,4 和边2,3来替换边1,3 那么以匹配的边集数量就可以加1,。

匈牙利算法就是同过不断的寻找增广轨实现的。

很明显如果二分图的两部分点分别为n 和m,那么最大匹配的数目应该小于等于MIN(n,m); 因此我们可以枚举任第一部分(的二部分也可以)里的每一个点,我们从每个点出发寻找增广轨,最后吧第一部分的点找完以后,就找到了最大匹配的数目,当然我们也可以通过记录找出这些边。

什么是二分图

什么是二分图
匹配有很多种。
我们定义匹配点、匹配边、未匹配点、未匹配边,它们的含 义非常显然。例如图3中1,4,5,7为匹配点,其他顶点为未匹 点;1-5、4-7为匹配边,其他边为非匹配边。
最大匹配&完美匹配
最大匹配:一个图所有的匹配中,所匹配的边数最多 的匹配,称为这个图的最大匹配。图4是一个最大匹 配。 完美匹配:如果一个图的某个匹配中,所有的顶点都 是匹配点,那么它就是一个完美匹配。图 4 是一个完 美匹配。显然,完美匹配一定是最大匹配(完美匹配 的任何一个点都已经匹配,添加一条新的匹配边一定 会与已有的匹配边冲突)。但并非每个图都存在完美 匹配。
交替路:图的一条简单路径,满足任意相邻的两条边, 一条在匹配内,一条不在匹配内 。
增广路:从一个未匹配点出发,走交替路, 如果途径另一个未匹配点(出发的点不算), 则这条交替路称为增广路(agumenting path)。 例如,图 5 中的一条增广路如图 6 所示 (图中的匹配点均用红色标出)
/*==================================================*\ | 二分图匹配(匈牙利算法BFS 实现) | INIT: g[][]邻接矩阵; | CALL: res = MaxMatch (); Nx, Ny 初始化!!! | 优点:适用于稀疏二分图,边较少,增广路较短。 | 匈牙利算法的理论复杂度是O(VE) \*==================================================*/ const int MAXN = 1000; int g[MAXN][MAXN], Mx[MAXN], My[MAXN], Nx, Ny; int chk[MAXN], Q[MAXN], prev[MAXN]; int MaxMatch(void) { int res = 0; int qs, qe; memset(Mx, -1, sizeof(Mx)); memset(My, -1, sizeof(My)); memset(chk, -1, sizeof(chk)); for (int i = 0; i < Nx; i++) { if (Mx[i] == -1) {//对于x集合中的每个没有匹配的点i进行一次bfs找 交错轨 qs = qe = 0; Q[qe++] = i; prev[i] = -1; bool flag = 0;//判断是否找到

二部图

二部图

34 女1
3
4
2
23 女2
1
3
5 女3 5
男1 0 男2 0 男3 10
04 KM算法
修改期望值之后,继续给女2找对象。此时女2-男1匹配,同时女1-男3也匹配。
3 女1
3
4
2
2 女2
1
3
5 女3 5
男1 0 男2 0 男3 1
04 KM算法
接下来给女3匹配对象,因为女3+男3=6!=5,因此无法给女3找到匹配。所以让女3的权值减1,此时 女3和男3匹配了,但是又和女1冲突了。便去寻找女1,但是对于女1而言可匹配的男1已经和女2 匹配 了,于是再去寻找女2。
2 女1
3
4
2
1 女2
1
3
3 女3 5
男1 1 男2 0 男3 2
04 KM算法
在这个问题中,冲突一共发生了三次,所以一共降低了3次效率值,但是每次降低的效率值都是最小的 ,所以完成的仍是最优匹配。这就是KM算法的整个过程。整体思路就是:每次都帮一个顶点匹配最大权 重边,利用匈牙利算法完成最大匹配,最终完成的就是最优匹配。
3 女1
3
4
2
2 女2
1
3
45 女3 5
男1 0 男2 0 男3 1
04 KM算法
32 女1
3
4
2
21 女2
1
3
43 女3 5
男1 01 男2 0 男3 12
04 KM算法
此时对于女1,2,3而言,男1,2,3均已经满足他们的期望值,也就是说现在已经将带权图转换为了无权图。 因此接下来的男女匹配问题就可以使用匈牙利算法来实现,下图给出了解。

图论及其应用

图论及其应用

一个最小边割集。
连通度
定义:如果0<k≤λ(G),则称G是k-边连通图。
定理:图G是k-边连通图当且仅当对E(G)的任 意一个子集E1,若|E1|≤k-1,则G\E1仍是连通 图。
连通度
定理:对p 简单图G,有
(1) (G) (G),(G) (G); (2) (G) p 1,等号成立当且仅当G Kp; (3)(G) p 1,等号成立当且仅当G Kp; (4)对G的任意一个顶点u, (G) 1 (G u); (5)对G的任意一条边e,(G) 1 (G e) (G).
(v0-vk)路P,且E(P) E(W ) 。
若P是一条路,x与y为顶点,用
表示这条路。
当G为简单图时,W=v0e1v1e2v2···vk-1ekvk,可简写为 W=v0v1v2···vk-1vk。
路和圈
对于图G中两个给定的顶点u和v,若存在(u-v)路,则 必存在长度最短的(u-v)路P0,称P0的长度为u,v的 距离,记为dG(u,v)或d(u,v)。
Байду номын сангаас
连通图
定理:设D是连通的有向图,则D是强连通的当 且仅当D的每一条弧都含在某一有向圈中。
连通度
定义:设连通图G=(V,E)不是完全图,V1是V(G)的一个
非空真子集,若G\V1非连通,则称V1是G的点割集。若点 割集V1含有k个顶点,也称V1是G的k-点割集。
定义:图G是p 阶连通图,令
(G)
表示n个点的回路。
有向图D的有向途径是指交替地出现点和弧的一个有限非空序列
W=v0a1v1a2v2···akvk ,对于i=1,2,···,k,弧ai的起点是vi1,终点是vi,简称W是一条(v0-vk)有向途径。在严格有向图中, 可用v0v1···vk表示有向途径。

课题_二分图最大匹配算法的应用及Matlab实现

课题_二分图最大匹配算法的应用及Matlab实现

一共有RecuCal.m LockMap.m BuildMatrix.m Edmonds.m GUI1.m 这几个文件,我把它们合到一块粘上去了,你再把他们分开保存就可以了.其中前三个文件都是为建立邻接矩阵服务的,Edmonds.m是匈牙利算法的主文件,GUI1.m只是调用Edmonds.m做个界面而已。

调用关系是GUI1.m调用Edmonds.m;Edmonds.m调用BuildMatrix.m和LockMap.m ;LockMap.m调用RecuCal.m最后运行GUI1.m就ok了#LockMap.mfunction [LMA, LMB] = LockMap(n, m)% LOCKMAP - 求解满足条件锁并设置相应的映射% 输入参数:n 表槽数,m 表高度数。

% 输出参数:LMA,LMB 分别为二维矩阵表示自然数到满足条件锁之间的映射。

global jiA ouB ary A B mm NN = n; mm = m;jiA=0; ouB=0;A=[]; B=[];ary = zeros(1, n);RecuCal(n);LMA=A; LMB=B;[lena, n] = size(LMA);[lenb, n] =size(LMB);if lena>lenbtemp = LMA; LMA=LMB;LMB=temp;temp = lena;lena=lenb;lenb=temp;end#RecuCal.mfunction RecuCal(n)% RECUCAL - 递归函数global jiA ouB ary A B mm Nif n ==1for k=1:mm% 调用递归函数时要用到的变量所以% 设为全局ary(1) = k;Max = max(ary); Min = min(ary);num = 0; neighbor = 0;for i=1:Nnum = num + (Max-ary(i))*(ary(i)-Min);if (i~=N)neighbor = max(neighbor, abs(ary(i)-ary(i+1)));endendif (neighbor > mm-1.5)&&(num > 0.5)if mod(sum(ary), 2)% 奇数,属于 A 类jiA = jiA+1;A(jiA,:) = ary;else% 偶数,属于 B 类ouB = ouB+1;B(ouB,:) = ary;endendendelsefor k=1:mmary(n) = k;RecuCal(n-1);endend#BuildMatrix.mfunction AB = BuildMatrix(LMA, LMB)% BUILDMATRIX - 建立邻接矩阵,若 i 与 j 之间可以互开则 AB(i,j)=1,否则为0。

图论及其应用—典型图

图论及其应用—典型图
定理4.3.1:若G是Hamilton图,则对V(G)的每 一个非空真子集S,均有w(G\S)≤|S|(必要条 件)
4.3Hamilton图
定理4.3.2:设G是p(G)≥3的图,如果G中任意 两个不相邻的顶点u和v,均有 dG(u)+dG(v)≥p(G), 则G是若G是Hamilton图。
推论4.3.3:若G是具有p(≥3)个顶点的简单图, 且每个顶点的度至少是p/2,则G是Hamilton图 。
定理5.2.5:对k≥1,2k-正则图G有2-因子。 注:若H是G的k-正则生成子图,则称H是G的 k-因子。
5.3二分图最大对集算法
匈牙利算法。
k
w(C)定 义 为 w(ei)。 i 1
w(C)包 含 两 部 分 权 和 ,
一 部 分 是 w(C),即 每 条 边 的 和 ; eE (G)
另 外 一 部 分 是 重 复 走 的街 道E E(G),即 w(e)。 eE
因 此 , 对 于G的 人 一 个 环 游C, w(C) w(C), eE (G )
图论及其应用—典型图
4.1Euler环游 4.2中国邮路问题 4.3Hamilton图 4.4旅行售货员问题 5.1对集 5.2二分图的对集 5.3二分图最大对集算法
4.1Euler环游
定义4.1.1:经过G的每条边的迹称为G的Euler迹,如
果这条迹是闭的,则称这条迹为G的Euler环游。 一般情况下,我们把不是Euler环游的迹称为G的Euler 通路,而把含有Euler环游的图称为Euler图。
推论4.3.9:设图G的度序列为(d1,d2,…,dp) ,d1≤d2≤…≤dp,p≥3。若对任何k,1≤k<(p-1)/2 ,均有dk>k,若p为奇数,更有d(p+1)/2>(p-1)/2, 则G是Hamilton图。

二分的应用与补集转换思想

二分的应用与补集转换思想


有趣的元素(2011克罗地亚竞赛): 如果一个数列中 2*K 的元素中前 K 个元 素和与后 K 个元素和都不大于 S 那么我们说这些元素是有趣的。 给你一个长度为 N 的数列 A,求各个元素 从本身开始能构成的最长有趣元素的 长度。
一个简单的想法




枚举i,二分最远j使得i~j与j+1~j+j-i+1 为有趣的 i j j+1 j+j-i+1 时间复杂度O(NlogN) 看似没问题的二分算法其实是错误的 如S=100,N个数为 1 1 98 98 1 1 当i=1,二分j=2时不合法,而其实j=3时 合法
Q E[i] * (n 1 E[i])
i 1
n
补集转化
Q求出之后,R=S-T=n*(n-1)*(n-2)/ 6Q/2 时间复杂度: O(m+n) 空间复杂度:O(n)
优秀的算法!
小结
通过补集转化,我们在原来无法联系起来的“边”和“三 角形”之间建立起确定的关系,并以此构造出组合计数的 公式。 单纯的枚举 枚举+组合计数
深入思考
本题中单色三角形的个数可以非常庞大,所以一切 需要枚举每个单色三角形的方法都是不可能高效的。 单纯的枚举不可以,那么组合计数是否可行呢? 从总体上进行组合计数很难想到。我们尝试枚 举每一个点,设法找到一个组合公式来计算以 这个点为顶点的单色三角形的个数。
深入思考
组合公式很难找到!
原因:从一个顶点A出发的两条同色的边AB、AC并不能 确定一个单色三角形ABC,因为BC边有可能不同色。
分析



题目大意 对于一个竞赛图,给定一些边,要求你 通过给剩下的边定向,最大化图中的三 元环。 竞赛图:基础图(将有向边变为无向边)为 完全图的有向图 三元环:三个点组成的环

二组分体系的相图及应用.ppt

二组分体系的相图及应用.ppt
计算出对应的气相的组成, 分别画出p-x(y)和T-x(y)图, 如(b),(c)所示。
在p-x图上有最高点者,在T-x图上就有最低点,这 最低点称为最低恒沸点(minimum azeotropic point)
非理想的完全互溶双液系
最低恒沸混合物
在T-x(y)图上,处在最 低恒沸点时的混合物称为最低 恒沸混合物(Low-boiling azeotrope)。它是混合物而不 是化合物,它的组成在定压下 有定值。改变压力,最低恒沸 点的温度也改变,它的组成也 随之改变。
)
xA
已知
p* A
,pB*
,x气
相组成求出,画在 p-x 图上就得 p-x-y 图。
理想的完全互溶双液系
如果
p* A
p* B
,则 yA xA ,即易挥发的组分在气
相中的成分大于液相中的组分,反之亦然。
在等温条件下,p-x-y 图分为三个区域。在液相 线之上,体系压力高于任一混合物的饱和蒸气压,气 相无法存在,是液相区。
计算出对应的气相组成,分 别画出p-x(y)图和T-x(y)图。如图 (b),(c)所示。
在p-x图上有最低点,在T-x图上就有最高点,这 最高点称为最高恒沸点(maximum azeotropic point)
非理想的完全互溶双液系
最高恒沸点混合物 在T-x(y)图上,处在最
高恒沸点时的混合物称为最 高恒沸混合物(high-boiling azeotrope)。
n(l) (0.5 0.2) n(g) (0.7 0.5)
n(g) 1.5n(l)
又 n(总) n(g) n(l) 10
则 n(l) 4mol (其中含B 0.8mol,含A 3.2mol) n(g) 6mol(其中含B 4.2mol,含A 1.8mol)

图论及其应用ch1-2详解

图论及其应用ch1-2详解
11/19/2018 10:03 PM Li-Li Zhang 6
几个有趣的图论问题
Kö nigsberg七桥背后的故事
Graph Theory
/图论
Kö nigsberg七桥位于前苏联的加里宁格勒,历史上 曾是德国东普鲁士省的省会,霹雷格尔横 穿城堡,河中有两个小岛B与C,并有七座桥连接岛与 河岸及岛与岛(见图)。是否存在一种走发,从四块 陆地中的任意一块开始,通过每一座桥恰好一次再回 到起点。这就是著名的Kö nigsberg七桥问题,即一笔 画问题;也是图论的起源。
Graph Theory
/图论
在一个图G (V (G ), E (G ), G )中, 如果 G (e ) uv , 则说边e 连接 顶点u, v , 称u, v为e的端点 ,称u和v是 相邻的,而称u(或v )与e 关联。 与同一个顶点关联的若 干条边称为相邻的 。 两个端点重合为一个顶 点的边称为环; 关联于同一对顶点的两 条或以上的边称为 多重边 。

实际上,有向图即将无向图中的无序对看成有序对. 其中有向图对应的无向图称为有向图的基础图。 其中V(G)称为顶点集,E(G)称为边集(A(D)又称为 弧集).令p(G)=|V(G)|,q(G)=|E(G)|, 分别称为图的 阶和边数。举例说明。
11/19/2018 10:03 PM Li-Li Zhang 14
11/19/2018 10:03 PM Li-Li Zhang 12
1.2 图的定义
Graph Theory
/图论
生活中,人们常常需要考虑一些对象之间的某种特定 的关系 . 如某区域内,两城市之间有无交通线;一群 人中,两个人之间相识或不相识等等 . 这种关系是对 称的,即如果甲对于乙有某种关系,则乙对于甲也有 这种关系 . 可以用一个图形来描述给定对象之间的某 个关系:我们用平面上的点分别表示这些对象,若 对象甲和乙有关系,就用一条线连接表示甲和乙的 两个点 . 这种由一些点与连接其中某些点对的线所构 成的图形就是图论中所研究的图. 图/Graph:可直观地表示离散对象之间的相互关系, 研究它们的共性和特性,以便解决具体问题。

二分图及匹配算法

二分图及匹配算法

Chapter 3
二分图最佳匹配
-二分图最佳匹配-
定义:图G中权值和最大的完全匹配。
Kuhn-Munkras算法:该算法是通过给每个顶点一个标号(叫做顶标) 来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标 为A[ i ],顶点Yj的顶标为B[ j ],顶点Xi与Yj之间的边权为w[i,j]。在算法 执行过程中的任一时刻,对于任一条边(i,j),A[ i ]+B[j]>=w[i,j]始终成立。 KM算法的正确性基于以下定理: 若由二分图中所有满足A[ i ]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等 子图)有完备匹配,那么这个完备匹配就是二分图的最大权匹配。 KM算法流程: (1)初始化可行顶标的值; (2)用匈牙利算法寻找完备匹配; 这样做是O(n^4)的
-稳定婚姻问题-
Байду номын сангаас
求婚拒绝算法(Gale-Shapley算法/延迟认可算法): 先对所有男生进行单身标记,称其为单身狗男。当存在单身狗男时,进行 以下操作:
①选择一位单身狗男在所有尚未拒绝她的女生中选择一位被他排名最优先 的女神;
②女神将正在追求她的单身狗男与其现任进行比较,选择其中排名优先的 男生作为其男友,即若单身狗男优于现任,则现任被抛弃为前任;否则保 留其男友,拒绝单身狗男。 ③若某男生被其女友抛弃,则重新变成单身狗男,至①重复。
Chapter 5
稳定婚姻问题
-稳定婚姻问题-
你们班上有n位男生和n位女生,每个人对异性都有一个排序,表示对他们 的爱恋程度。现在你的任务是使他们凑成CP,使他们的爱情坚不可摧! 满足一下条件的爱情不是坚不可摧的: 男生u和女生v不是CP,但他们爱恋对方的程度都大于爱恋现任 的程度。 因为这样男生u和女生v会抛下已经是CP的那个她/他,另外组成一对。于 是乎多出了两位前任,这样就会让人再也无法相信爱情了! 怎么能避免悲剧的发生呢?

数学建模-二分图匹配

数学建模-二分图匹配


解题思路:本题是一道典型的二分图最大匹配 题。采用匈牙利算法。本题的构图是这样的, 左右两边的x和y,分别是x学生,y课程。那么 已知哪些学生可以学哪些课,也就是在x的点 和 y的点之间首先连上线。求xy的最大匹配。如果 有P个学生做了课代表,那么就是P门课程都有 课代表了。
例题1 Courses(hdu1006)
X学生
1 2 3
Y课程
1 2 3
样例 3
(1)建图
3 3 1 2 3 2 1 2 1 1
例题1 Courses(hdu1006)
X学生
1 2 3
Y课程
1 2 3
X学生
1 2 3
Y课程
1 2 3 连接 x1-y1 x2-y2 得到此 匹配, 匹配数 为2.
(1)建图
(2)
例题1 Courses(hdu1006)
(5)
(4)
例题1 Courses(hdu1006)
X学生
1
2 3
Y课程
1
2 3 1 2 3 1 2 3
1
2 3
1
2 3
(1)
1 2 1 2 1 2
(2)
1 2
(3)
3
3
3
3
(4)
(5)
#include<iostream> int link[303][303]; int used[303],mathy[303]; using namespace std; int P,N; int find(int x) {//x学生可以匹配到某课程 么 //可以返回1,不可以返回0 … } int MMG() { //计算最大匹配数, 调用了find … } int main( ) {int x,y,i,j; int cases; scanf("%d",&cases);

二分答案法的应用.doc

二分答案法的应用.doc

二分上界(或答案)法的应用前言:在当今的信息学竞赛中,很多题目都令人无从下手,但如果我们先假定出题目的答案,问题就立刻迎刃而解。

下面我们从几道例题谈谈二分答案法的应用。

例题一:草莓(noi2003)题意简述:定义:S"皿表示第/块草莓田中所有草莓重量的和(1< 1< k) Ox = min {sug |1 < j “}你的任务就是要把一片草莓田分割成k块,且分割方案需要满足如下的条件:1•每一块中的草莓必然是通过触须直接或者间接和其他草莓相连接的;2.这种分割方案所对应的x尽可能的大。

最后输出你的分割方案和结果。

算法分析:这是一道结果提交类问题,其中有6个数据都是树,现在我们对树的问题进行讨论。

初一看,这题很难找到有效的模型,关键在于有的时候切出sum很大的一块反而不好,因为题目中需要的是相对平均,因此,纯粹的贪心很难成立。

我们试着稍微改变一下题目,假设题目要求求一种答案不小于x的方法,我们该如何处理呢?很快我们有了头绪,首先通过宽度搜索建树,然后从叶子结点开始向上处理,如果有以某个结点为根的子树的权值和超过了x,我们就将该结点以及它所在的子树作为一个连通块,从图中删去。

这样的做法一定是正确的,因为sum—旦超过了x,如果把更多的结点给这个连通块显然是没有必要的。

一直进行这样的处理,如果割出了k个连通块以上,则问题有解,否则问题无解。

因为只要扫描一遍,因此这个问题的时间复杂度为O(N)o既然我们已经可以在0(N)的时间类解决上述子问题,那么能比较高效地求解原题呢?我们可以枚举每一个x再加以判断,这样复杂度较高。

比较好的方法是采用二分法,假如一个解在某个去间[a, b],首先我们判断(a+b)/2是否可行,如果可行,则枚举[(a+b)/2+l,b],否则枚举[a,(a+b)/2-l]o那么,只需判断logm 次即可(其中m为所有点的权值和)。

如果不知道x,可不可以用上面的方法呢?答案是否定的,因为你不知道剩下部分的情况,所以无法在恰当的时候做出正确的选择。

应用二组分成分变异曲线图判别岩浆作用的一套有效方法

应用二组分成分变异曲线图判别岩浆作用的一套有效方法

D l — D < D ,一 Db
或 D <D , D,< Db
D 一 D.>D 一 Db
D 一
D. 一 D , 一 Db

< 0
< 0 > 0
D 。> D , D y> D b
D 一 D .> D y — D b
或 D <D。,Dy<巩
D 一 D.<D,一 Dh
Dt牛 口 , D, Dh
(二 ) 成 分 变 异 曲 线 囝
(1) (2) (3) (4)
(5)
. 旦D[ 旦 f 、lcD, ~ 一 D。 \C: /
(6)
(筹) 一 ! 一
. 二 旦 :[ != 旦 2二 旦 二 3
d(c )2 (c )
(D 一 D。)
(7) 分析式(6)和(7)可 得表 2。结 合岩石学意义 (即只考 虑 C ≥ 0,c ≥ 0),可得
浆 演 化 方 向 (其 余 符 号 同 表 1)
衰 2 瑞 利结 昌图谱 性 质 与 总分配 系 数的 关 系
一 酐 导 数 dc ,dc 趋 向 十oo
·
> 0
二 阶导 数 d=C ,d(c )


趋 向 十oo
D D., D,牛 Db
> 0
D > D ., D > Dh
(一 )批 式 熔 融 方 程
批 式熔 融 模 型 (Shaw, l 970;Hertogen 等 ,1976,符 号 见 表 1)为 C;/C s一 1/【D + F(1一 D。i)]
对 元 素 比 x/.和 y/b,由式 (11)得 Cg' /c 一 【D。.+ F(1一 D。。)]儿D。 + F(1一 D。 )] C /c 一 【D曲 + F(1一 D曲)】/【D叮+ F(1一 D。 )]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14
求最大匹配举例
①取一个初始匹配M={Bb,Cc,Dd}. ②用标记法从点A开始求得一条增广路:=(AcCe)(左图). ③用调整匹配M:将中属于M的边删去并将其中不属于M的
其它边添加到M中得到比M多一边的新匹配M’(如右图 示). ④因对M’用标记法只能从E或F开始,但都不能求出M’的 任何增广路,故判定M’是一个最大匹配.
13
匈牙利算法:
初始时最大匹配为空 for 二分图左半边的每个点i do 从点i出发寻找增广路径。如果找到,则把它取反
(即增加了总了匹配数)
如果二分图的左半边一共有n个点,那么最多找n 条增广路径。如果图中共有m条边,那么每找一 条增广路径(DFS或BFS)时最多把所有边遍历一 遍,所花时间也就是m。所以总的时间大概就是O (n * m)。
6
例2:工作分配问题
问题 某教研室有4位教师:A,B,C,D. A能教课程5;B能教 1,2;C能教1,4;D能教课程3.能否适当分配他们的任务,使4 位教师担任4门不同课并且不发生安排教师教他不能教的 课的情况?
此问题可归结为二分图的数学模型: G={A,B,C,D},E,{1,2,3,4,5},(X,y)E,如果X能教y.一 个满足要求的工作分配正是一个含有4条边的一个最大匹 配.
for(i=0;i<n;i++) { if(mark1[i]) { if(!v[i].empty()){ memset(mark2,true,sizeof(mark2)); for(j=0;j<v[i].size();j++) { point = v[i][j]; if(!mark2[point]) continue; mark2[point] = false; if(list[point] == -1 || dfs(point)) { list[point] = i; num++; break; } } } mark1[i] = false; } } if(flog || list[0] != -1) cout << num-1 << endl; else cout << num << endl; } int main() { int i,j,s,d; while(cin>>n) { if(n == 0)break; v.clear(); v.resize(n); cin >> m >> edge; for(i=0;i<edge;i++) { cin >> j >> s >> d; v[s].push_back(d); } Solve(); } return 0; }
第13讲 二分图及其应用 (Bipartite Graph &
Applications)
1
主要内容
什么是二分图 二分图的最大匹配 匈牙利算法 二分图的最小顶点覆盖 DAG图的最小路径覆盖 二分图的最大独立集
2
什么是二分图?
如果一个图的顶点可以分为两个集合X和 Y,图的所有边一定是有一个顶点属于集 合X,另一个顶点属于集合Y,则称该图 为“二分图”(Bipartite Graph)
A(*) B C(c) D E F
A(c) B C D(d) E(*) F (*)
M’
a b c(A) d e(C) f
a b c(D)d
ef
(E) 15
/*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(mark1)); 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; } }
10
图示:
男1 男2
女1 女2 女3
11
增广路的定义(也称增广轨或交错轨): 若P是图G中一条连通两个未匹配顶点的路径,并且属M的边 和不属M的边(即已匹配和待匹配的边)在P上交替出现,则 称P为相对于M的一条增广路径。由增广路的定义可以推出 下述三个结论:
1. P的路径长度必定为奇数,第一条边和最后一条边都不属于
M。
2. P经过取反操作可以得到一个更大的匹配M’。 3. M为G的最大匹配当且仅当不存在相对于M的增广路径。
12
图1
图2
图1是给出的二分图中的一个匹配:[1,5]和[2,6]。图2就是在这个 匹配的基础上找到的一条增广路径:3->6->2->5->1->4。
在最初始时,还没有任何匹配时,图1中的两条灰色的边本身也是增广路径。 因此在这张二分图中寻找最大配匹的过程可能如下: (1)找到增广路径1->5,把它取反,则匹配数增加到1。 (2)找到增广路径2->6,把它取反,则匹配数增加到2。 (3)找到增广路径3->6->2->5->1->4,把它取反,则匹配数增加到3。 (4)再也找不到增广路径,结束。
3
二分图举例
4
例1:婚配问题


5
二分图的匹配与最大匹配
定义: 二分图 G=X,E,Y 的边集E的子集M称为G的一个匹配, 如果M的任二边都没有公共端点; G中边数最多的匹配称为最大 匹配(不唯一);含有G的每一点的匹配称为完美匹配(必为最大 匹配仍不唯一).
下面是最大,完美匹配的例子(用粗线表示):
A
B
C
D
1
2
3
45
7
如何求二分图 的最大匹配呢?
8
经典算法:
匈牙利算法
9
匈牙利算法(求二分图最大匹配)
谈匈牙利算法自然避不开Hall定理
Hall定理:对于二分图G,存在一个匹配M, 使得X的所有顶点关于M饱和的充要条件是: 对于X的任意一个子集A,和A邻接的点集为 T(A),恒有: |T(A)|>= |A|
相关文档
最新文档