《二分图77701》-课件设计(公开).pptVIP

  • 0
  • 0
  • 约4.48千字
  • 约 33页
  • 2019-01-09 发布于广西
  • 举报
KM算法 i在交错树,j不在交错树中,边(i,j)有可能加入到相等子图中 为了使a[i]+b[j]=w(i,j)始终成立,且至少有一条边加入到相等子图中,d=min{a[i]+b[j]-w(i,j)},i在交错树中,j不在交错树中 假设有3个人,我们弄个简化版的.每个人与家的距离如下图 第一个人到家1,2,3的距离为3,5,4,第二个人只能到家1,2距离为2,4,第三个人只能到家3,距离为7; 3 4 5 2 4 7 man home 1 2 3 3 2 1 3 4 5 2 4 7 man home 1 2 3 3 2 1 改变a,b后 3 4 5 2 4 7 man home 1 2 3 3 2 1 a b 4 3 7 0 1 0 重新匹配左节点2找到增广路 b 0 1 0 3 4 5 2 4 7 man home 1 2 3 3 2 1 a 4 3 7 对左节点3进行匹配 3 4 5 2 4 7 man home 1 2 3 3 2 1 a b 4 3 7 0 1 0 3 4 5 2 4 7 man home 1 2 3 3 2 1 a b 3 3 6 0 1 1 找到最优匹配 3 4 5 2 4 7 man home 1 2 3 3 2 1 改变a,b a b 3 3 6 0 1 1 重新匹配左节点3,找到增广路 回到例题:PKU2195 题目是说有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要求所有人回去的距离最短. 那么求的就是最小权匹配了,那么 如果我们把所有边的权值取反,如图所示,求其最大匹配,那么结果就是我们要的了.问题解决. 3 4 5 2 4 7 man home 1 2 3 3 2 1 -3 -4 -5 -2 -4 -7 man home 1 2 3 3 2 1 练习题 Pku2239,2536 Pku3041,1325,2226 pku1466 Pku1422,2594 pku2195 THE END 二分图匹配 Bi-partite graph 二分图的定义: 二分图是这样的一个图,它的顶点可以分为两个集合X和Y。所有的边关联的两个顶点中,恰好一个属于集合X,一个属于集合Y。 1 2 3 4 5 6 二分图的匹配: 给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 二分图的最大匹配 定义: 图中包含边数最多的匹配称为图的最大匹配。 如右图所示:蓝色部分 就构成一个最大匹配, 同时它也是一个完美匹 配 完美匹配: 如果所有点都在匹配边上,称这个最大 匹配是完美匹配。 二分图的最大匹配 匈牙利算法(时间复杂度O(nm)) 其思想是用宽度优先搜索来找增广路径(和floodfill算法类似 转化为单位容量简单网络的最大流问题 在二分图的基础上,加入源点s和汇点t,让s与每个X结点连一条边,每个Y结点和t连一条边,所有弧的容量为1。这样,饱和弧就对应着匹配边。 二分图的最大匹配 匈牙利算法: 寻找增广路: 初始时最大匹配为空 for 二分图左半边的每个点i ??? do 从点i出发寻找增广路径 如果找到,则把它取反 (即增加了总了匹配数)。 看一道例题:PKU 1469 PKU 1469 一共有N个学生跟P门课程,一个学生可以任意选一门或多门课,问是否达成: 1.每个学生代表的都是不同的课(如果一个学生选修的那门课,那么他就可以代表这门课) 2.每门课都有一个代表 PKU1469 输入为: P N(课程数跟学生数) 接着有P行,格式为Count studenti studenti+1 ……studentcount (Count表示对课程1感兴趣的学生数,接着有Count个学生) 如第一行2 1 2表示学生1跟学生2对课程1感兴趣 输出为: 若每门课都能找到一位代表则输出”YES”,否则为”NO” PKU1469 假如有三个学生跟三门课程,学生1,2,3.为了跟学生区分,假设3个课程为4,5,6 左边节点是学生,右边节点是课程,下图表示,学生1对课程4,5感兴趣,学生2对课程5,6感兴趣,学生3对课程6感兴趣 1 2 3 4 5 6 于是问题就变为在二分图中寻找最大匹配,只要这个最大匹配大于或等于课程数P,那么就达到要求了

文档评论(0)

1亿VIP精品文档

相关文档