1、图论中的几个典型问题(下),四. 匹配与覆盖问题,六.建模竞赛中的实例,五. 最大流问题,工作安排问题之一,给n个工作人员x1, x2, , xn安排n项工作y1, y2, , yn. n个工作人员中每个人能胜任一项或几项工作, 但并不是所有工作人员都能从事任何一项工作. 比如x1能做y1, y2工作, x2能做y2, y3, y4工作等. 这样便提出一个问题, 对所有的工作人员能不能都分配一件他所能胜任的工作?,我们构造一个二部图G = ( X, Y, E ), 这里X = x1, x2, , xn,Y = y1, y2, , yn, 并且当且仅当工作人员xi胜任工作yj时, xi与yj才相
2、邻. 于是, 问题转化为求二部图的一个完美匹配. 因为 |X|=|Y|, 所以完美匹配即为最大匹配.,匹配:ME, M中任意两边无公共端点,则M为G的一个匹配。M中一条边之两个顶叫在M之下相配。M中每个顶称为被M许配。若G中所有顶均被M许配,则称M为完美匹配。含边最多的匹配为最大匹配。,m个人,n项工作,每人适合一项或几项工作,问能否每人分配一项合适工作?最多几人有合适的工作?(求最大匹配,匈牙利算法),上述分工问题种,每个人可干各项工作,但效益不同,求效益最大的分工方案。加权二分图的最佳匹配。,定义:M是图G一个匹配,G中有一条路,其边交替地出现在E-M与M中,则此路称为图G中M的交错路.若
3、M的交错路的起止顶点皆未被M许配,则称此路为可增广路.,定理1 M是图G的最大匹配G中无M的可增广路.,求二部图G = ( X, Y, E )的最大匹配算法(匈牙利算法)迭代步骤:,从G的任意匹配M开始. 将X中M的所有非饱和点都给以标号0和标记*, 转向. M的非饱和点即非M的某条边的顶点. 若X中所有有标号的点都已去掉了标记*, 则M是G的最大匹配. 否则任取X中一个既有标号又有标记*的点xi , 去掉xi的标记*, 转向. 找出在G中所有与xi邻接的点yj , 若所有这样的yj都已有标号, 则转向, 否则转向., 对与xi邻接且尚未给标号的yj都给定标号i.,若所有的 yj 都是M的饱和
4、点,则转向,否则逆向返回. 即由其中M的任一个非饱和点 yj 的标号i 找到xi ,再由 xi 的标号k 找到 yk ,最后由 yt 的标号s找到标号为0的xs时结束,获得M-增广路xs yt xi yj , 记P =xs yt , , xi yj ,重新记M为MP,转向. 不必理会M-增广路的定义. MP = MP MP, 是对称差. 将yj在M中与之邻接的点xk ,给以标号 j 和标记*, 转向.,例 求下图所示二部图G的最大匹配.,解 取初始匹配M0 =x2 y2 , x3 y3 , x5 y5 (上图粗线所示). 给X中M0的两个非饱和点x1,x4都给以标号0和标记* (如下图所示).
5、, 给X中M0的两个非饱和点x1,x4都给以标号0和标记* (如下图所示)., 去掉x1的标记*, 将与x1邻接的两个点y2, y3都给以标号1. 因为y2, y3都是M0的两个饱和点,所以将它们在M0中邻接的两个点x2, x3都给以相应的标号和标记* (如下图所示)., 去掉x1的标记*, 将与x1邻接的两个点y2, y3都给以标号1. 因为y2, y3都是M0的两个饱和点,所以将它们在M0中邻接的两个点x2, x3都给以相应的标号和标记* (如下图所示)., 去掉x2的标记*, 将与x2邻接且尚未给标号的三个点y1, y4, y5都给以标号2 (如下图所示)., 去掉x2的标记*, 将与x
6、2邻接且尚未给标号的三个点y1, y4, y5都给以标号2 (如下图所示)., 因为y1是M0的非饱和点, 所以顺着标号逆向返回依次得到x2, y2, 直到x1为0为止.于是得到M0的增广路x1 y2x2 y1, 记P = x1 y2 , y2x2 , x2 y1. 取M1 = M0P = x1 y2 , x2 y1 , x3 y3 , x5 y5, 则M1是比M多一边的匹配(如下图所示)., 因为y1是M0的非饱和点, 所以顺着标号逆向返回依次得到x2, y2, 直到x1为0为止.于是得到M0的增广路x1 y2x2 y1, 记P = x1 y2 , y2x2 , x2 y1. 取M1 = M
7、0P = x1 y2 , x2 y1 , x3 y3 , x5 y5, 则M1是比M多一边的匹配(如下图所示)., 再给X中M1的非饱和点x4给以标号0和标记*, 然后去掉x4的标记*, 将与x4邻接的两个点y2, y3都给以标号4.,因为y2, y3都是M1的两个饱和点, 所以将它们在M1中邻接的两个点x1, x3都给以相应的标号和标记* (如下图所示)., 去掉x1的标记*, 因为与x1邻接的两个点y2, y3都有标号4, 所以去掉x3的标记*.,而与x3邻接的两个点y2, y3也都有标号4, 此时X中所有有标号的点都已去掉了标记*(如下图所示), 因此M1是G的最大匹配.,G不存在饱和X
8、的每个点的匹配, 当然也不存在完美匹配.,工作安排问题之二,给n个工作人员x1, x2, , xn安排n项工作y1, y2, , yn. 如果每个工作人员工作效率不同, 要求工作分配的同时考虑总效率最高.,我们构造一个二部赋权图G = ( X, Y, E , F ), 这里X = x1, x2, , xn,Y = y1, y2, , yn, F(xi yj )为工作人员xi胜任工作yj时的工作效率. 则问题转化为:求二部赋权图G的最佳匹配. 在求G 的最佳匹配时, 总可以假设G为完备二部赋权图.若xi与yj不相邻, 可令F(xi yj )=0. 同样地, 还可虚设点x或y,使|X|=|Y|.如
9、此就将G 转化为完备二部赋权图,而且不会影响结果.,例:求赋权邻接矩阵M表示的赋权完备二元图的最佳匹配。,定义 设G =(X, Y, E, F)为完备的二部赋权图, 若L:X Y R + 满足:xX, yY, L(x) + L(y)F(xy),则称L为G的一个可行点标记,记相应的生成子图为GL =(X, Y, EL , F),这里EL =xyE|L(x) + L (y) = F (xy).,求完备二部赋权图G = (X, Y, E, F )的最佳匹配算法迭代步骤(P152): 设G =(X, Y, E, F)为完备的二部赋权图,L是其一个初始可行点标记,通常取 L(x) = max F (x
10、y) | yY, xX, L(y) = 0, yY.,M是GL的一个匹配., 若X的每个点都是饱和的,则M是最佳匹配.否则取M的非饱和点uX,令S =u,T =,转向. 记NL(S)=v|uS,uvGL. 若NL(S)= T, 则GL没有完美匹配, 转向. 否则转向. 调整标记, 计算aL=minL(x) + L (y) - F (xy)|xS, yYT.由此得新的可行点标记,令L = H, GL = GH , 重新给出GL的一个匹配M, 转向., 取yNL (S)T , 若y是M的饱和点, 转向. 否则, 转向., 设x yM, 则令S = S x , T = T y , 转向., 在GL中
11、的u - y路是M- 增广路, 设为P, 并令 M = MP, 转向.,锁具装箱,1.问题重述:,锁具:钥匙有5个槽,高度为:1,2,3,4,5,6个数中之一。,锁具合格:至少3槽高度不同.相邻两槽高度差小于5。,互开条件:4个槽对应相等,另一个相差1。,装箱:60个锁一箱。,问题:1.每批锁多少个,装多少箱?,2.试提供一个装箱方案(60个一箱),加以标志,使团体顾客减少抱怨。,3.最多买多少箱顾客无抱怨?,4.如何定量分析顾客抱怨程度?对买1, 2箱具体分析。,2.假设,(1).锁厂在生产过程中准确知道锁的每个槽高度。,(2).同一批锁中,两锁互开 5个槽中4个槽对应相等,另一个差1。,3
12、.模型建立及求解:,(1).一批锁的总数:5880个,5880/6090箱。,(2).锁具装箱销售方案:,1o.锁具互开的特征:,设:xij为第i把锁第 j 个槽高度。,称为第 i 把锁的特征数。,xi =(xi1, xi2, xi3, xi4, xi5),J(k) =xi | xi=k,中元素个数,性质:锁具互开 |xi xj | 1,推论:a., xi xi 全 为奇数或全为偶数,不能互开,b. 8 xi 27,c. xi合格,xi*=(7, 7, 7, 7, 7),且xi与xi*奇偶相异。,(xi1, xi2, xi3, xi4, xi5)合格。,2o.锁具装箱:,锁具分类:,a. N1
13、 =xi | xi 为奇,N2 = xi | xi 为偶,b.按特征值xi=k分类,k 8;27 10;25 12;23 14;21 16;19 18;17 20;15 22;13 24;11 26;9 合计,J(k) 20 120 251 405 539 563 508 322 162 50 2940,箱号 1 2 3 46 7 813 14 1522 23,标号 0810 1010 1012 1212 1214 1414 1416 1616 1618,箱号 2431 32 3340 41 4245 46 4748 49,标号 1818 1820 2020 2022 2222 2224 24
14、24 2426,装箱:特征值为偶的从大到小装箱. 标号:xi xj,特征值为奇的从大到小装箱. 标号:xi xj,3o.销售原则:,a. 对团体顾客买多箱者,尽可能出售奇偶标号相同者。当顾客购量49箱按以下原则:,b. 必须买奇偶不同若干箱时,尽可能出售特征值不相邻者。,c.以上a、c都不能满足时,尽可能选低或高特征值的锁具搭配。,4o.证明以上装箱销售方案最优,独立集:SV,任意vi, vjS, 则vi, vj不相邻,称S为独立集.,最大独立集:包含顶最少的独立集。,覆盖:K V,若eiE, 则ei至少1顶K,称K为覆盖。,最小覆盖:包含顶最少的覆盖。,a. 图论简介:图G(V, E),最大
15、独立集中所含顶数为图G的独立数,匹配:ME,若ei , ejM, 则ei, ej不相邻,称M为匹配。,最大匹配:包含边最多的匹配。,定理1:对于任意图G(V,E),独立数覆盖数顶数,最小覆盖中所含顶数为图G的覆盖数.,定理2:在二分图中:最大匹配中的边数覆盖数,b.定义锁具图G(V, E):V为一批锁的全部锁。 E:当且仅当两锁互开时连边。,则:图G中顶点数5880,且为二分图。图G中的独立数(G)为保证不出现互开锁具的最大量。,定理3 锁具图中存在边数为2940的匹配。,证明:(定理3的可通过计算机数出),(1).写出邻接矩阵A(aij),Aij=,1 pi与qj连边,0 pi与qj不连边,
16、其中:piP,qjQ;P、QV,分别为特征值为奇、偶的锁。,b. 最大匹配就是A中不同行不同列1的个数。,作法:从A中划去行和最小的非零行,及该行中列和最小的非零列,则找到最大匹配的一条边。这样作需85分钟,改良作法:,c.抱怨指标:,(1).度量互开程度的指标:,(a).平均互开数(随机装箱1、2箱内互开锁的平均对数):,计算机枚举:,开锁 数 4 5 6 7 8 9 10 合计,锁具数 90 210 592 1398 1802 1488 300 5880,(b).能互开数:,(490521010300)/2=22778(对),一箱平均互开对数,平均互开率=2.312/60=0.077,2箱
17、平均互开对数,平均互开率=9.282/120=0.1547,(2)抱怨指标u(x,y)(应满足以下3条):,(a).购买箱数x一定时,u随互开数y增加而增加。,(b).随购买箱数x增加,抱怨指标u增加速度减慢。,(c).u有极限,研究生录取中的最佳匹配问题 褚瑞 晏小波 张雄明(国防科技大学),某学校系计划招收10名考生,初试上线的前15名考生参加复试,8位专家组成专家组。复试中,每位专家对每个复试考生个方面各给一个等级评分,从高到低共分A,B,C,D四个等级,并将其填入面试表内。 该系四个研究方向的10名导师拟招收考生。导师的研究方向、专业学术水平(发表论文数、论文检索数、编(译)著作数、科
18、研项目数),以及对考生的期望要求见表(9)。导师和考生的基本情况都公开。要解决的问题是:,具体作法:,(a).Logstic 曲线,(b).对数曲线(参看经济学上的抱怨指数),(c).实际调查(问卷调查),(1) 首先,综合考虑考生初试、复试成绩等因素,帮助确定10名考生的录取名单。然后,被录取的考生与导师双向选择,即考生报个志愿,根据导师基本情况和导师对考生的期望要求选择导师;导师根据考生志愿、专家组对考生评价和自己对考生的期望要求等选择考生。给出10名考生和导师间的最佳双向选择方案(不要求一名导师只带一名考生),使师生双方满意度最大。 (2) 根据已录取10名考生的志愿,每一位导师只带一名
19、考生,给出师生双向选择的最佳方案,使得师生双方尽量都满意。,(4) 学校充分考虑考生的志愿。要求根据10名导师和15名考生综合情况选择5名导师招收考生,再让5名导师在15名考生中择优录取10名考生。给出导师和考生的选择方案,以及每名导师带名考生的双向选择最佳策略。 (5) 请设计一种更能体现“双向选择”的考生录取方案,提供给主管部门参考,并说明方案的优越性。,(3) 若由十位导师根据初试成绩及专家组评价和他们自己对考生要求录取10名考生的录取方案是什么?为简化问题,假设无申报专业志愿,给出10名考生各申报一名导师的策略和导师各选择一名考生的策略。相互选中即确定;对剩下的导师和考生,再按上述办法
20、进行双向选择,直至定出每名导师带一考生的方案,使师生都尽量满意。,1.考生和导师都按策略选定录取方案时不会撒谎。 2.考生填报的志愿要尽量满足,专业不对口将大大降低考生和导师的满意度。,1. 将考生录取转化为二分图的匹配问题 建立导师和考生之间匹配关系(即:考生被某导师录取),使师生双方总满意度最大。把导师集T和考生集S看成二部图顶点集的两个子集,si到tj的边vij表示考生i可以申报导师j, vij上的权表示i考生对j导师的满意度;tj到si的边vji表示j导师可能录取i考生,vji上的权表示j导师对i考生的满意度。,模型的假设,问题的分析,该二部图具有以下特点:, 边是双向的。双向的边成对
21、出现,即:对每个考生,如果存在他对某个导师的申报可能,就必然存在该导师对此考生的录取可能;反之亦然。 边是带权的。 本文的目标是在某特定约束下,构造考生到导师的匹配,使得考生和导师双方的总体满意度最大。,这样就将本文的所有问题映射到了图论中特定约束条件下双向二部图的最大权匹配问题。,图1 双向带权二部图实例,表1:左二部图上双向边上正反两向的权值,现实中类似的双向带权二部图的实例还有婚姻匹配问题1, 3, 4, 6,任务分配问题2, 5等,总体满意度可表示为考生总体满意度和导师总体满意度的线性组合,因此可将二部图中双向边转化为单向边,将边上的权修正为正向权值与反向权值的线性组合,则双向二部图的
22、总体满意度最大问题就转化为对应无向二部图的最大权匹配问题.,2不稳定匹配方案的概念与满意度的关系正如婚姻匹配中可能存在不稳定匹配一样,由上述方法解出的匹配方案也可能存在不稳定匹配。对婚姻匹配而言,一个不稳定的匹配对(x, y)是指一对男x女y,他们没有结合,但x喜欢y的程度胜过他喜欢目前配偶,并且y喜欢x的程度也胜过她目前配偶;匹配方案中,若存在这么一对男女,这个系统就称为不稳定。,同样,对于强调“双向选择”的匹配系统,不稳定匹配对的出现可能会造成匹配方案的崩溃。对考生录取问题而言,一个不稳定匹配对的例子如图2:,模型的建立,建模前,先处理已有数据,从中构造出下列信息:,1各考生的复试成绩指标
23、及复试成绩归一化值。,2考生对导师的满意度矩阵W(ij), 导师对考生满意度的矩阵W= (ij) 。,考生信息包含3个方面:初试成绩、复试成绩(与5项指标相关)及填报专业(包括第一志愿和第二志愿)。,考生i的复试成绩Ai(Ai1, Ai2, Ai3, Ai4, Ai5)与考生复试的5项指标有关,对于某指标i,考生i的分数取所有专家打分的平均,则他的复试成绩。,导师信息包含3个方面:所属专业、学术水平状况(与4项指标相关)以及对考生的期望标准。,考生i对导师j的满意度与以下因素有关:,(1) 专业匹配度:,考生i与导师j的专业匹配度用aij表示.,h(0,1) (其具体值将在问题求解部分定义)。
24、,(2)导师的学术水平,其中ki1用以衡量导师学术水平的第i个指标在考生心目中的重要性。,导师j的学术水平有4个指标,其归一化值分别为jl 。则导师j的学术水平可表述为:,(3) 专长期望匹配度(考生i与导师j对考生专长期望要求的匹配度)。,考生i与导师j对考生专长期望要求匹配越好,对导师j越满意。复试有5个指标,用归一化值i,jl (l=1,2,5)描述导师j对考生i的满意度,也表现为考生i对导师j的满意度。以i,jl为例,它具有以下特性:, 考生i在指标l上的值xi达到门限gi,j时满意度为Q0。 当考生i在指标l上的值xi= 0时满意度也为0。,一种满足上述条件的函数形式为:, i,jl
25、的值恒小于1。,如图所示。,考生i与导师j总体专长期望要求的匹配度可表示为:,ki2是复试中第i个指标在考生和导师心目中的重要性因子,按假设(1)考生i和导师j专业不对口,aij0,ij0,不考察考生i志愿情况下,考生i对导师j的满意度应该为0.5bj+0.5ci,j,即 aij1时, ij0.5bj+0.5ci,j,因此取:,导师j对考生i的满意度ij,与以下因素有关:,(1)专业匹配度(考生i是否报导师j的专业),此比例系数跟考生是一样的,仍为 aij,(2)考生i的综合成绩,考生i复试成绩 初试成绩归一化值为i,,则考生i的综合成绩为0.5(i+Bi)。,(3)专长期望匹配度,(可认为此
26、因素也跟考生一样 ),归纳起来得:,构造出满意度矩阵W和W之后,就可以建模了。,问题一:,(假设初试,面试一样重要,导师和考生的满意度同等重要 ),假设,目标函数:,其中:M10,N10;(问题一可看成一个01整型规划问题),实际求解中,因每个考生只能报一个导师,因此只需要对每个考生i搜索j,使得j满足:,令xij1,xil0(lj),则考生i与导师j构成的匹配对使得由考生i发出的边正好使双方总满意度最大。这样得到的X可以使目标函数在约束条件下达到最大。,问题二:目标函数不变,但增加每个导师只招一名考生的约束和稳定匹配约束。,故问题二可化为如下规划问题:,目标函数:,其中:MN10,用Kuhn
27、-Munkras算法(若带稳定约束条件,用改进的Kuhn-Munkras算法)求解,算法的计算复杂度为O(Nlog2N)。,问题三:先按问题一选10个考生的初始成绩、复试成绩和导师对考生的要求,求出导师对每个考生i的总满意度 (因不考虑填报志愿因素,因此 aij=1) :,然后取前10个考生进入系统,进行录取方案求解。,因考生无申报专业,故,充分考虑导师和考生双方的公平性,设计最大平衡策略如下:,(1)导师j的策略:每次选择一个考生i满足下式:,(2)考生i的策略:每次选择一个导师j满足下式:,(3)对于每一个互相选中的i1, j1,则:,(4)如果T=或S= 则退出,否则转(1)。,定理1:
28、每轮循环中上述步骤(3)中至少有一对考生、导师二元组(i1,j1)可以互相选中。,证明:考虑(i1, j1),则按(1)、(2)两步,导师j1必然选i1考生,i1必然选j1导师。故至少i1 、j1互相选中。故上述策略必定会终止。,问题四:在筛选老师和考生过程中,除了看各导师及考生的水平等因素,还要权衡各专业方向招生人数,否则可能出现某方向导师全部不招生的恶劣情况。,第一步:从10个导师中选5个导师,方法如下:,(1)循环处理每个考生的志愿,将其第一志愿所在专业的报考数目加1,第二志愿所在专业报考数目增加h, h(0,1)。得各类专业总报考量Ci(i1, 2, 3, 4)。,(2)用Hamilt
29、on议席分配策略7,按各专业报考量Ci将5个导师名额分配到各个专业。专业i的报考比例为,将floor(qpi)位导师名额派到专业i (其中q为可用导师总名额);若指派完成后还有未分配导师名额,将各专业按qpi小数部分升序排序,依次将剩余名额分配给各专业。,(3)具体某专业中,则按照所有考生对该导师的总体满意度排序,选取前名Dl导师,容许他们招生。,本策略充分考虑了各专业的招生平衡。,第二步:5名导师从15名考生中选10名考生的策略:,(1)令已录取考生的集合为Set=,(2)对每一专业l,构造该专业可选考生集合setl所有申报了该专业的考生,(3)循环处理每一专业,Setl=Setl-Set,
30、按已选导师对该考生的总满意度排序,选取前2Dl个考生,并将这2Dl个考生加入集合Set。,(4)最后所得集合即为录取考生集合。,此选择策略认为,专业匹配对于考生而言是最重要指标,若不能满足,会大大降低考生的满意度,第三步:找5个导师对10个考生的最佳加权匹配。因每个导师必须带两个考生,故将每个导师产生一个虚拟节点(如:导师0和导师5是同一导师,导师1和导师6是同一导师,依次类推,导师4和导师9是同个导师),他们与考生之间的满意度从原来5个导师到考生的加权连线中复制得到。这样就将问题四第三步转化为问题二,可以运用问题二的模型对5个导师到10个考生之间的最大加权匹配求解。,问题五:为更好地体现“双
31、向选择”观点,在设计录取方案时,考虑下列原则:,1.考虑“双向选择”的稳定匹配。双向选择方案最好是稳定匹配,这样不至于出现不稳定匹配对,使制订的配对方案遭到破坏。,2.录取问题中,考生的满意度及导师的满意度重要性可能不同,有些学校看重导师满意度,也有的学校看重考生满意度,故问题二的模型中考生满意度及导师满意度的比例因子可以根据实际情况设置,如认为导师满意度占总体满意度的70%,考生满意度占总体满意度的30%。,3.为更好地体现 “双向选择”, 直接让导师与考生配对,这样整个录取、配对工作在一个整体步骤完成,不需将录取作为一单独步骤。该做法等同于导师直接参与录取,导师选择面更宽,灵活性更大。 在
32、问题三中有可能出现:对某考生,有导师最想招他,他也最想报该导师,然而在筛选过程中因他评分太低,过早退出系统,使后续匹配不是最佳。,目标函数修正为:,问题二导师和考生数目相等;考虑一般情况,即当NM时,问题的处理。,当NM时,可以增加位虚拟位导师(虚拟结点),虚拟导师对所有考生的满意度均为0,反之亦然;在匹配方案中,当考生对应的导师为虚拟导师时,该考生即落榜;,当NM, 增加位虚拟考生,任意虚拟考生对导师的满意度为0,反之亦然;这样,很多问题可通过构造虚拟节点方式转化为问题二求解。,模型的求解与结果分析,数据的预处理,第一类:面试成绩,及导师对考生专长期望要求,定义:A、B、C、D分别为:0.9
33、分、0.8分、0.7分、0.6分,把8名专家给考生面试评分进行平均处理,第二类:笔试成绩,及导师学术水平指标(包括发表论文数、科研项目数等),这类数据实际含义不同不具备可比性.,对同类数据 di 令 :,常数 aij的确定:,其中x=1,2,3,常数 Q0的确定:取Q0=0.9,问题一的求解与结果,问题一求解:先将预处理后的考生初、复试成绩加权相加做综合成绩,选取综合成绩较高的10名考生予以录取;然后对每名已录取考生,在全部导师中搜索,使得双方总满意度取最大值。为方便起见,暂令式中所有权值都相等。,算法复杂度为,问题一求解结果如下表(总体满意度12.795),因导师可指导多名考生,故与每名考生
34、相匹配的导师,基本都是该考生第一志愿导师中,学术水平最高者。导师3、4、6、9分别是四个专业中学术水平最高者,被录考生都在这四位导师中选与其第一志愿相符者。,问题二的求解与结果,每位导师仅指导一名考生。共有10名被录取考生和10名导师,每名考生仅一名导师,故考生到导师之间构成双射,问题二可转化为图论中的二分图最佳匹配问题。,常见算法包括由Ford-Fulkerson算法演变来的最小费用最大流算法,以及由Hungarian算法演变来的Kuhn-Munkras算法,其中后者的空间和时间开销更优。,算法步骤略,问题二求解结果如下表(总体满意度11.581),注意:上述结果虽总体满意度最大,但却存在1
35、4、33、153三组不稳定对。如考生1与导师4匹配师生均能够获得比目前更大的满意度。,为消除不稳定对,采用经典稳定婚姻匹配算法D. Gale and L. S. Shapley算法对问题二求解。算法中采取考生一方主动策略,其结果如下图表所示:,问题二修正求解结果如下表(总体满意度11.576),稳定婚姻匹配算法能保证不出现不稳定对,但却只能保证全体考生满意度之和达到最大值,总满意度 (全体考生与导师满意度之和)不一定最大。这里总体满意度11.576 ,与Kuhn-Munkras算法相比略有不足。,在保证不出不稳定对前提下,为尽量提高总体满意度。我们设计了改进的Kuhn-Munkras算法。,流
36、程略,问题三的求解与结果,先由导师组选考生,由公式,算出导师组对每个考生的满意度之和(不考虑专业因素),然后选择前10名考生;再按照每一轮相互选中即为确定的方案,导师和考生都采取最大平衡策略,定理1已经证明,至多经10轮循环,算法即可结束。,问题三求解结果如下表(总体满意度11.575),与前面结果相比,由于问题的限制,此方案的总体满意度更差一些,但是具有收敛速度快的优势。,问题四的求解与结果,第一步,主要权衡各专业招生人数,兼顾导师及考生水平策略。采用Hamilton议席分配策略,首先确定各专业具有“招生资格”导师名额,再以考生对导师满意度(体现出了导师水平等因素)为指标,在各个专业方向选择
37、最优导师。,第二步,主要考虑4个专业方向考生人数与具有招生资格导师人数成比例,按照导师对考生的满意程度,录取分布在4个专业方向上的10名考生。,第三步,对5名具有招生资格的导师各创建一个虚拟节点,从而将5名导师和10名考生的匹配问题转化成为10名导师和10名考生的最佳加权匹配问题。至此,完全可以采用问题二中的求解方式进行求解。,问题四Kuhn-Munkras算法求解结果:(总体满意度12.822),考生12和导师6构成一对不稳定对。如果采用改进Kuhn-Munkras算法进行计算,问题四改进 Kuhn-Munkras算法求解结果:(总体满意度12.819),比最优解略有不足,但却有效消除了最优
38、解中的不稳定对,使得结果更容易为导师和考生所接受,问题五的求解与结果,用问题二题设,但暂不确定录取10名考生,而由全部导师和5个空结点与15名考生做最佳匹配,最后淘汰映射到空结点的5名考生,从而一次性得到全局最优的10名考生录取方案,及10名考生与10名导师的最佳匹配。,问题五 Kuhn-Munkras算法求解结果:(总体满意度12.478),出现两个不稳定对。用改进Kuhn-Munkras算法进行计算,可得到消除不稳定对的较优结果,问题五 改进Kuhn-Munkras算法求解结果:(总体满意度12.478),若用问题四题设,先定5名导师,然后对这5名导师各生成一个虚拟结点,最后在导师集合中添
39、加5个空结点。用这15个结点的导师集合,以及包含15名考生的集合去做最佳匹配,淘汰映射到空结点上的5个考生,从而得到一个全局最优的10名考生录取方案及与5个导师的对应关系。其结果与问题四的结果完全相同,说明用问题五中的方案,并非所有情况都能够产生比原方案更优结果。,稳定性分析,在模型建立过程中,将很多系数设为可调整的,如初试成绩在考生综合成绩中所占比重、某考生复试成绩中某指标对复试成绩的影响系数、导师水平中某项指标所占权重,等等。在模型求解过程中,将这些可调系数均设为比较均衡的,而本节对以下三个重要参数进行调整,并观察其对结果的影响。,1.其他参数不变,调整综合满意度中,考生一方的满意度所占的
40、权重k,按问题二中的方法求得匹配结果和综合满意度如下:,k=0.1,0.2,0.5,0.9,发现调整导师和考生的满意度权重,对导师和考生的匹配结果影响不大。而综合满意度在k值比较居中的时候比较大,2.其他参数不变,调整初试成绩在综合成绩中所占比重k。按问题二的方法求得匹配结果和综合满意度,取k =0.1, 0.2, 0.5, 0.9发现随初试成绩在综合成绩中所占比重的调整,考生录取情况产生较大变化。即使同为已录取考生,其排名先后也随着初试成绩所占比重有较大变化。而初试成绩所占比重对考生和导师综合满意度影响并不明显。,3.其他参数不变,考察当导师的专业方向是考生第二志愿时,对考生满意度的影响因子
41、h。值得注意的是随着h的增加,综合满意度必然会增加,因此这里只比较导师和考生的匹配结果。,h =0.2689 ,0.5, 0.8, 0.9发现当h取值较大时,对导师和考生的匹配结果产生了一定的影响,模型的评价 (略),系统监控模型(覆盖问题),系统监控问题之一,假设v1, v2, , v7是7个哨所,监视着11条路段(如下图所示),为节省人力,问至少需要在几个哨所派人站岗,就可以监视全部路段? 这就是要求最小点覆盖问题.,系统监控问题之二,假设下图代表一指挥系统,顶点v1, v2, , v7表示被指挥的单位,边表示可以直接下达命令的通信线路. 欲在某些单位建立指挥站,以便可以通过指挥站直接给各
42、单位下达命令,问至少需要建立几个指挥站? 这就是要求最小控制集问题.,定义1 设图G = (V, E), KV如果图G的每条边都至少有一个顶点在K中,则称K是G的一个点覆盖. 若G的一个点覆盖中任意去掉一个点后不再是点覆盖, 则称此点覆盖是G的一个极小点覆盖. 顶点数最少的点覆盖, 称为G的最小点覆盖.,例如, 右图中,v0, v2, v3, v5, v6等都是极小点覆盖. v0, v1, v3, v5,v0, v2, v4, v6都是最小点覆盖.,系统监控问题之一,假设v1, v2, , v7是7个哨所,监视着11条路段(如下图所示),为节省人力,问至少需要在几个哨所派人站岗,就可以监视全部
43、路段? 这就是要求最小点覆盖问题.,v1, v3, v5, v6和v1, v3, v5, v7都是最小点覆盖, 所以至少需要在4个哨所派人站岗来监视全部路段.,到目前为止,还没有找到求最小点覆盖的有效算法,即多项式时间算法(算法步数不超过nc,n为G的顶点数,c为常数).一种启发式近似算法见P169.,最大独立点集,定义2 设图G = (V, E ),I V如果I中任意两个顶点在G中都不相邻, 则称I是G的一个独立点集. 若G的一个独立点集中,任意添加一个点后不再是独立点集,则称此独立点集是G的一个极大独立点集. 顶点数最多的独立点集,称为G的最大独立点集.,例如, 右图中,v1, v4等都是
44、极大独立点集. v1, v3, v5,v2, v2, v6是最大独立点集.,最小控制集,定义3 设图G = (V, E ), D V如果vV, 要么vD, 要么v与D的某个点相邻, 则称D是G的一个控制集. 若G 的一个控制集中任意去掉一个点后不再是控制集,则称此控制集是G的一个极小控制集. 顶点数最少的控制集,称为G的最小控制集.,例如, 右图中,v1, v3, v5是极小控制集,v0是最小控制集.,系统监控问题之二,假设下图代表一指挥系统,顶点v1, v2, , v7表示被指挥的单位,边表示可以直接下达命令的通信线路. 欲在某些单位建立指挥站,以便可以通过指挥站直接给各单位下达命令,问至少
45、需要建立几个指挥站? 这就是要求最小控制集问题.,v1, v3,v3, v5等都是最小控制集,所以至少需要在2个单位建立指挥站.,到目前为止, 还没有找到求最小控制集的有效算法.一种启发式近似算法见P169.,最小点覆盖、最大独立点集和最小控制集的关系,定理1 设无向图G = (V, E )中无孤立点(不与任何边关联的点),若D是G中极大独立点集,则D是G中极小控制集. 定理2 设无向图G = (V, E )中无孤立点,KV,则K是G的点覆盖当且仅当Kc =VK是G的独立点集. 推论 设无向图G = (V, E )中无孤立点,KV,则K是G的最小(极小)点覆盖当且仅当Kc =VK是G的最大(极
46、大)独立点集.,问题归结为求最小覆盖,(1)建立关联矩阵,(3)划去v对应的行及1所在列,(2)寻含1最多的顶v归于K(例v3K),(4).在剩余矩阵内重复以上过程直至矩阵空,K=v2 v3 v4,支配集:DV(G), 若图G中任意顶vD,则v必与D内一顶相邻,则D为G的一个支配集。若D是G的覆盖集,若D的任意子集不是支配集。则D是G的极小支配集。含顶最少的支配集为最小支配集。最小支配集中所含顶数为图G的支配数。,例2:如图6个城镇v1 v2v6建立通信系统,从中选几座城镇建中心台站,要求它们与各城镇相邻,为减少造价使中心台站数目最少.请提供建立方案.若在造价最低的条件下,建两套通信中心,以备
47、出故障时启用另一套请提供建立方案.,归为求最小支配,(1)写出邻接矩阵A,将主对角线元素全改为1.即A+E.,(3)划去A+E中v对应的行及1所在列,(2)寻含1最多的顶v归于D (例v4D),(4).在剩余矩阵内重复以上过程直至矩阵空,若建两套通信中心,可在A+E划去v4对应的行,在剩余矩阵(A+E)2中重复以上过程,D=v1 v5,独立集:IV(G), I中任意两顶不相邻,则I为G的一个独立集。若I是G的独立集,对与任意uV(G), Iu不是独立集。则I是G的极大独立集。含顶最多的独立集为最大独立集。最大独立集中所含顶数为图G的独立数。,定理:K为极小覆盖VK为极大独立集。,极大独立集必为极小支配集,反之不成立.,例3.公司生产a,b,c,d,e,f,g 7种化学品,其中(a,b) (a,d) (b,c) (b,e) (b,g) (c,d) (c,e) (c,f) (d,e) (d,g) (e,f) (f,g)不能放在一起,公司必须把仓库分成若干个区,以便把不相容的制品分开,问至少分几个区,怎样存放才能保证安全.,