[高等教育]图论方法建模
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018/11/24
四、匹配问题 例 指派问题
图的匹配
一家公司经理准备安排 N 名员工去完成 N 项任务,每人一项。由于各员工的特点不同, 不同的员工去完成同一项任务时所获得的回 报是不同的。怎样分配才能尽量的工作有人 做,更多的人有工作?
2018/11/24
x1 , x2 ,, xn
四、匹配问题 这个问题可以用图的语言描述。其中 x1 , x2 ,, xn 表示 工人, y1 , y2 ,, yn 表示工作,边 ( xi , y j ) 表示第i个人能 胜任第j项工作,这样就得到了一个二部图G,用点集 X表示{ x1 , x2 ,, xn },点集Y表示{ y1 , y2 ,, yn } ,二部 图G=(X,Y,E)。上述的工作分配问题就是要在图G中找 一个边集E的子集,使得集中任何两条边没有公共端 点,最好的方案就是要使此边集的边数尽可能多,这 就是匹配问题。
2018/11/24
三、最小生成树问题 例15 用Kruskal算法求右图的最小生成树。
<<a1=[1 2 50;1 3 60]; a2=[2 4 65;2 5 40]; a3=[3 4 52;3 7 45]; a4=[4 5 50;4 6 30;4 7 42]; a5=[5 6 70]; map=[a1;a2;a3;a4;a5] [out,len]=kruskal(map)
最大匹配
• 给定一个二分图G,在G的一个子图M中, M的边集{E}中的任意两条边都不依附于 同一个顶点,则称M是一个匹配。 • 选择这样的边数最大的子集称为图的最 大匹配问题。 • 如果一个匹配中,图中的每个顶点都和 图中某条边相关联,则称此匹配为完全 匹配,也称作完备匹配。
2018/11/24
四、匹配问题
命令形式: [a,b]=mintreek (n,w) 功能:w是权矩阵,该矩阵中的主对角全部是inf; n是顶点数; a返回最小生成树的权的总长度,b是返回其具体 的节点。并最终返回最小生成树的图形。
2018/11/24
三、最小生成树问题 例13 用Kruskal算法求右图的最小生成树。
<<M=Inf;a1=[M,50,60,M,M,M,M]; a2=[50,M,M,65,40,M,M]; a3=[60,M,M,52,M,M,45]; a4=[M,65,52,M,50,30,42]; a5=[M,40,M,50,M,70,M]; a6=[M,M,M,30,70,M,M]; a7=[M,M,45,42,M,M,M]; w=[a1;a2;a3;a4;a5;a6;a7] <<n=7;[a,b]=mintreek(n,w)
2018/11/24
四、匹配问题
• 结论: • P的路径长度必定为奇数,第一条边和最 后一条边都不属于M。
匈牙利算法
• 求最大匹配的一种显而易见的算法是:先找出 全部匹配,然后保留匹配数最多的。但是这个 算法的复杂度为边数的指数级函数。 • M中任意一条边的端点v称为(关于M的)饱和 点,G中其他定点称为非饱和点。 • 若P是图G中一条连通两个未匹配顶点的路径, 并且属M的边和不属M的边(即已匹配和待匹配的 边)在P上交替出现,则称P为相对于M的一条增 广路径。
1
1 2 i
1 2 i i 1
2018/11/24
三、最小生成树问题
调用leasttree_2.m的m函数文件。
命令形式: leasttree_2(a) 功能:a是权矩阵,该矩阵中的主对角全部是0, 并且不包含重复的权; 返回树的节点和权值。
2018/11/24
三、最小生成树问题 例12 用Kruskal算法求右图的最小生成树。
2018/11/24
三、最小生成树问题 例14 用Kruskal算法求右图的最小生成树。
<<a1=[1 2 50;1 3 60]; a2=[2 4 65;2 5 40]; a3=[3 4 52;3 7 45]; a4=[4 5 50;4 6 30;4 7 42]; a5=[5 6 70]; map=[a1;a2;a3;a4;a5] [out,len]=kruskal(map)
<<a(1,2)=50; a(1,3)=60; a(2,4)=65; a(2,5)=40; a(3,4)=52;a(3,7)=45; a(4,5)=50; a(4,6)=30;a(4,7)=42; a(5,6)=70; <<leasttree_2(a)
2018/11/24
三、最小生成树问题
调用
图与网络建模方法
第十二讲 图与网络建模方法
2018/11/24
主要内容
• 最小生成树问题
• 匹配问题
• 旅行商问题 • 最大流问题 • 最小费用最大流问题
2018/11/24
三、最小生成树问题
Kruskal算法构造最小生成树
Kruskal 算法如下: (i)选 e1 E (G) ,使得 w(e ) min 。 (ii)若 e1 , e2 ,, ei 已选好, 则从 E(G) {e , e ,, e } 中选取 ei 1 ,使得 ① G[{e , e ,, e , e }] 中无圈,且 ② w(ei 1 ) min 。 (iii)直到选得 e 1 为止。
2018/11/24
四、匹配问题
二分图的概念 • 二分图又称作二部图,是图论中的一种特殊 模型。 • 设G=(V,{R})是一个无向图。如顶点集V可 分割为两个互不相交的子集,并且图中每条 边依附的两个顶点都分属两个不同的子集。 1 2 3 4 5 则称图G为二分图。
2018/11/24
1
2
3
4
四、匹配问题
2018/11/24
三、最小生成树问题
调用kruskal.m的m函数文件。
命令形式: [out,len]=kruskal (map) 功能:map是输入矩阵,
map=[起点1 终点1 边长1;起点2 终点2 边长2;............;起点n 终点n 边长n]
out—输出边阵:[起点 终点]; len—输出最小生成树的总长度; 并最终返回最小生成树的图形。