《算法设计与分析》课件 第9章 匹配与指派.pptx

《算法设计与分析》课件 第9章 匹配与指派.pptx

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

算法设计与分析匹配与指派

主要内容基本概念基于图的匈牙利算法基于矩阵的匈牙利算法

基本概念:匹配

基本概念:匹配例子

基本概念:匹配例子

基本概念:指派

基本概念:指派例子矩阵模型图模型

主要内容基本概念基于图的匈牙利算法基于矩阵的匈牙利算法

基于图的匈牙利算法:匹配

基于图的匈牙利算法:例子

基于图的匈牙利算法:例子进行逐个匹配,选择匹配对(b1,w1),(b2,w2)选取b3的匹配白点

基于图的匈牙利算法:例子

基于图的匈牙利算法:匹配增广路径具有以下特点

基于图的匈牙利算法:例子匹配黑点b4在匹配黑点b5时,找不到未匹配的白点,试图再次用增广路径来进行重新匹配,图中已经无法找到一条增广路径,所以最优匹配是4个匹配,分别是(b1,w2),(b2,w3),(b3,w1),(b4,w4),

基于图的匈牙利算法:匹配算法首先遍历二分图左边部分的节点,在遍历顶点i时,调用增广路径函数,试图找到一条增广路径

基于图的匈牙利算法语句4-6对B部分所有顶点的visited属性设置为0(表示未访问),这样,每次寻找增广路径时,如果顶点的visited属性为1,表示此顶点已经在增广路径上,不能再访问注意:增广路径函数augmentedPath参数一定是A部分的顶点找增广路径的本质实际上就是深度优先搜索因为深度优先搜索的复杂度为O(n2)(二分图),所以该算法的复杂度为O(n3)

基于图的匈牙利算法:指派

基于图的匈牙利算法:二分图添加权重为0的边,完全二分图

基于图的匈牙利算法为了解决指派问题,需要给每个节点标注,用l(a)表给某一顶点a标注,我们定义一个合法的标注应该满足以下不等式

基于图的匈牙利算法:二分图合法标注平等图

基于图的匈牙利算法:KM定理

基于图的匈牙利算法:KM定理

基于图的匈牙利算法有权二分图上的匈牙利算法流程

基于图的匈牙利算法可以让A中的所有顶点的标注都为0(l(a)=0,?a∈A),B中顶点的标注以所连边的最大权重即可标注完后,对B中的每个顶点,选择与之相连的最大边(如果有多条,全部选取),从而和所有的顶点形成了一个平等图。

基于图的匈牙利算法按照贪心算法选取即可,即对所有的边按照从大到小进行排序,之后依次选取可匹配边即可,选出的边形成了一个初始匹配如果这个初始匹配是个完美匹配,根据KM定理,最大匹配找到,算法结束,否则,就需要继续寻找完美匹配

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法

基于图的匈牙利算法按照KM定理,这个匹配是最大权重匹配

基于图的匈牙利算法

基于图的匈牙利算法

主要内容基本概念基于图的匈牙利算法基于矩阵的匈牙利算法

指派的数学模型

指派的数学模型

克尼格定理

克尼格定理

匈牙利算法流程找出每行的最小值,每行都减去相应的最小值;对矩阵的每一行,找到一个0,如果这个0所有在的行和列没有0*,则给这个0打星号0*;对矩阵的每一列,如果包含0*,则划线;如果刚好有n条划线,则找到最优解,否则,执行步骤4;寻找未被划线覆盖的0,如果有,则直接执行步骤5;如果没有,则找到所有没有被划线覆盖的元素中最小元素,将最小元素加到所有划了线的行中,并将所有未划线的列减去此元素;将一个未被划线覆盖的0转换为0′相同行不存在一个0?:找0?所在行的0′(必然有),再找0′所在列的0?,重复此步骤直到0′所在列再也没有0?,对所有找到的0?去掉?,并将所有0′转变为0?,回到步骤3;相同行存在一个0?:对这一行划线,并取消0?所在列的划线,重复此步骤,直到找不出未被划分覆盖的0,回到步骤4

匈牙利算法流程

匈牙利算法流程步骤1步骤2步骤3步骤4(a)(b)(c)(d)(e)步骤5(f)

匈牙利算法流程步骤5.2步骤5步骤5.1步骤3(g)(i)(j)(k)(l)步骤4(h)最优匹配

简化匈牙利算法流程匈牙利算法的流程简化为

简化匈牙利算法流程

简化匈牙利算法流程将所有还没有被划线覆盖的元素(这些元素肯定大于0)减去最小值。此例中减去1

简化匈牙利算法流程

寻找最少的划线找到独立的0对没有独立0的行打钩

寻找最少的划线对已打√的行中所含0元素的列打√号再对所有打√的列中包含独立0元素的行打√号重复以上步骤,直到无法在打√为止

寻找最少的划线对没有打√号的行画一横线,有打√号的列画一纵线,这就得到覆盖所有0元素的最

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档