KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大.pptxVIP

  • 1
  • 0
  • 约1.24千字
  • 约 66页
  • 2021-10-19 发布于重庆
  • 举报

KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大.pptx

KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B?[i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]=w[i,j]始终?成立。KM算法的正确性基于以下定理: ?  若由二分图中所有满足A[i]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等子图)有完备匹配,那么这个完备匹配就是二分图的最大权匹配。 ?  初始时为了使A[i]+B[j]=w[i,j]恒成立,令A[i]为所有与顶点Xi关联的边的最大权,B[j]=0。如果当前的相等子图没有完备匹配,就按下面的方法修改顶标以使扩大相等子图,直到相等子图具有完备匹配为止。 ?  我们求当前相等子图的完备匹配失败了,是因为对于某个X顶点,我们找不到一条从它出发的交错路。这时我们获得了一棵交错树,它的叶子结点全部是X顶点。现在我们把交错树中X顶点的顶标全都减小某个值d,Y顶点的顶标全都增加同一个值d. d = min{ A[i]+B[j]-w[i,j] | Xi在交错树中,Yi不在交错树中 } ;状态空间搜索;状态空间搜索;状态空间搜索;状态空间搜索;盲目搜索方法;盲目搜索算法;深度优先搜索(Depth-first Search);深度优先搜索;非递归的实现框架;栈的应用迷宫老鼠;解决方案;在某一位置(i, j)进行试探:;算法设计;求解迷宫中一条路径的方法: 从入口开始,对每个当前位置沿(E,S,W,N)四个方向逐一进行试探,当选定一个可通行的方向后,把当前所在位置及所选的方向记录下来,然后从下一个位置开始继续探索;若在当前位置探索不到可通行的方向,则沿原路一步一步退回来,每后退一步,接着在该点试尚未试过的一个方向。如此重复直到到达出口。 用一个栈记录走过的位置,栈中每个元素包括三项,分别记录当前位置的行坐标、列坐标以及在该位置上所选的方向(即directon数组的下标值)。 ;;;;;广度优先搜索(Breadth-first Search);广度优先搜索;广度优先搜索的实现框架;农夫、狼、羊、菜过河;可以转化为迷宫问题?;;;广度优先搜索;队列的特点;队列的基本概念: 队列也称作先进先出表(First In First Out,FIFO表)。支持队尾插入,队头删除操作。;???列ADT;基于环形存储结构的队列实现;基于环形存储结构的队列实现;;顺序结构队列的类型定义;顺序结构队列的操作定义(ADT);Bitwise XOR Illustration;;;;深度与广度优先搜索比较;状态表示及状态变换(生成);广度优先搜索的变形;双向广度优先搜索;完全二叉树、堆、优先队列;;;;A*算法:F = G + H ;搜索与博弈;概念与研究领域;研究领域;博弈树;;博弈树;极大极小过程;;;负极大值算法;;α-β剪枝;α-β剪枝;;;;

文档评论(0)

1亿VIP精品文档

相关文档