收藏 分享(赏)

图论法.doc

上传人:j35w19 文档编号:8840753 上传时间:2019-07-14 格式:DOC 页数:7 大小:393.50KB
下载 相关 举报
图论法.doc_第1页
第1页 / 共7页
图论法.doc_第2页
第2页 / 共7页
图论法.doc_第3页
第3页 / 共7页
图论法.doc_第4页
第4页 / 共7页
图论法.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、 图论算法图 论 算 法 在 计 算 机 科 学 种 扮 演 者 很 重 要 的 角 色 , 它 提 供 了 对 很 多 问 题 都 有 效 的 一 种简 单 而 系 统 的 建 模 方 式 。 很 多 问 题 都 可 以 转 化 为 图 论 问 题 , 然 后 用 图 论 的 基 本 算 法 加 以解 决 。 遗 传 算 法 是 解 优 化 问 题 的 有 效 算 法 , 而 并 行 遗 传 算 法 是 遗 传 算 法 研 究 中 的 一 个 重要 方 向 , 受 到 了 研 究 人 员 的 高 度 重 视 。特点:一是它们的目的都是从若干可能的安排或方案中寻求某种意义下的最优安排或方案,数

2、学上把这种问题称为最优化或优化(optimization)问题;二是它们都易于用图形的形式直观地描述和表达,数学上把这种与图相关的结构称为网络(network) 。与图和网络相关的最优化问题就是网络最优化或称网络优化 (netwok optimization)问题。 哥尼斯堡七桥问题就是一个典型的例子。在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来问题是要从这四块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。当然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。欧拉为了解决这个问题,采用了建立数学模型的方法。他将每一块陆地用一个点来代替,将每一座桥用连接相应两点

3、的一条线来代替,从而得到一个有四个“点” ,七条“线”的“图” 。问题成为从任一点出发一笔画出七条线再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则:这个图是连通的,且每个点都与偶数线相关联,将这个判定法则应用于七桥问题,得到了“不可能走通”的结果,不但彻底解决了这个问题,而且开创了图论研究的先河。图与网络的基本概念-数据结构深度优先搜索、广度优先搜索、无向图、有向图、最小生成树、最短路径。求最短路迪克斯特拉(Dijkstra)算法,其基本思想是按距 从近到远为顺序,依次求0u得 到 的各顶点的最短路和距离,直至 (或直至 的所有顶点) ,算法结束。为避免0uG0vG重复

4、并保留每一步的计算信息,采用了标号算法。下面是该算法。(i) 令 ,对 ,令 , , 。0l0uv)(l0uSi(ii) 对每个 ( ) ,用iSiiV)(),(mnvwlviu代替 。计算 ,把达到这个最小值的一个顶点记为 ,令 。)(vl)(minvlS 1iu11iiiuS(iii). 若 ,停止;若 ,用 代替 ,转 (ii)。1|Vi 1|Viii算法结束时,从 到各顶点 的距离由 的最后一次的标号 给出。在 进入 之0uvvliS前的标号 叫 T 标号, 进入 时的标号 叫 P 标号。算法就是不断修改各项点的)(vl iS)(vlT 标号,直至获得 P 标号。若在算法运行过程中,将

5、每一顶点获得 P 标号所由来的边在图上标明,则算法结束时, 至各项点的最短路也在图上标示出来了。0u每对顶点之间的最短路径计算赋权图中各对顶点之间最短路径,显然可以调用 Dijkstra 算法。具体方法是:每次以不同的顶点作为起点,用 Dijkstra 算法求出从该起点到其余顶点的最短路径,反复执行 次这样的操作,就可得到从每一个顶点到其它顶点的最短路径。这种算法的时间复杂n度为 。第二种解决这一问题的方法是由 Floyd R W 提出的算法,称之为 Floyd 算法。)(3O假设图 权的邻接矩阵为 ,G0AnnnaaA 2121120来存放各边长度,其中:;0ii,之间没有边,在程序中以各边

6、都不可能达到的充分大的数代替;ijaj,是 之间边的长度, 。ijijwij nji,21,对于无向图, 是对称矩阵, 。0AjiijaFloyd 算法的基本思想是:递推产生一个矩阵序列 ,其中nkAA,10表示从顶点 到顶点 的路径上所经过的顶点序号不大于 的最短路径长度。),(jiAkivj计算时用迭代公式: ),(),(),(min),( 111 jkiAjijikkk 是迭代次数, 。2最后,当 时, 即是各顶点之间的最短通路值。nknAprim 算法构造最小生成树设置两个集合 和 ,其中 用于存放 的最小生成树中的顶点,集合 存放 的最PQGQG小生成树中的边。令集合 的初值为 (假

7、设构造最小生成树时,从顶点 出发) ,1vP1v集合 的初值为 。prim 算法的思想是,从所有 , 的边中,选取具PpVv有最小权值的边 ,将顶点 加入集合 中,将边 加入集合 中,如此不断重复,直pv Q到 时,最小生成树构造完毕,这时集合 中包含了最小生成树的所有边。VPKruskal 算法构造最小生成树科茹斯克尔(Kruskal)算法是一个好算法。Kruskal 算法如下:(i)选 ,使得 。)(1GEemin)(1ew(ii)若 已选好,则从 中选取 ,使得i,2 ,21ieGE1i 中无圈,且11ie 。n)(iew(iii)直到选得 为止。1人员分派问题:工作人员 去做 件工作

8、,每人适合做其中nx,21 ny,21一件或几件,问能否每人都有一份适合的工作?如果不能,最多几人可以有适合的工作?这个问题的数学模型是: 是二分图,顶点集划分为 ,GYXGV)(, ,当且仅当 适合做工作 时, ,求,1nxX,1nyYixiy)(Exi中的最大对集。G匈牙利算法:(i)从 中任意取定一个初始对集 。M(ii)若 把 中的顶点皆许配,停止, 即完美对集;否则取 中未被 许配MX XM的一顶点 ,记 , 。uST(iii )若 ,停止,无完美对集;否则取 。N)( TSNy)((iv)若 是被 许配的,设 , , ,转(iii) ;否则,yyzzSy取可增广轨 ,令 ,转(ii

9、) 。),(uP)()(MPEM把人员指派问题、匈牙利算法稍加修改就能够用来求二分图的最大对集。Kuhn-Munkres 算法(i)选定初始可行顶点标号 ,确定 ,在 中选取一个对集 。llGl M(ii)若 中顶点皆被 许配,停止, 即 的权最大的完美对集;否则,取XM中未被 许配的顶点 ,令 , 。lGuST(iii)若 ,转(iv) ;若 ,取TSNlG)(NlG)(,)(min, xywlxyxl ,其 它),(,vlTSll, 。llG(iv)选 中一顶点 ,若 已被 许配,且 ,则 ,TSNl)(yMyxzS,转(iii) ;否则,取 中一个 可增广轨 ,令yTl ),(uP,)(

10、)(PEM转(ii) 。其中 是 中 的相邻顶点集。)(SNlGl经过 的每条边的迹叫做 的 Euler 迹;闭的 Euler 迹叫做 Euler 回路或 回路;含EEuler 回路的图叫做 Euler 图。直观地讲,Euler 图就是从一顶点出发每边恰通过一次能回到出发点的那种图,即不重复地行遍所有的边再回到出发点。包含 的每个顶点的轨叫做 Hamilton(哈密顿) 轨;闭的 Hamilton 轨叫做 Hamilton 圈或G圈 ;含 Hamilton 圈的图叫做 Hamilton 图。H直观地讲,Hamilton 图就是从一顶点出发每顶点恰通过一次能回到出发点的那种图,即不重复地行遍所有

11、的顶点再回到出发点。Fleury 算法:1o. ,令 。)(0Vv0vW2o. 假设迹 已经选定,那么按下述方法从 中选取边iie1 ,1ieE:1ie(i) 和 相关联;1iiv(ii)除非没有别的边可选择,否则 不是 的割边(cut edge)。1ie,1ii eG(所谓割边是一条删除后使连通图不再连通的边) 。3o. 当第 2 步不能再执行时,算法停止。对于非 Euler 图,1973 年,Edmonds 和 Johnson 给出下面的解法:设 是连通赋权图。G(i)求 。)2(mod1),(|0vGVv(ii)对每对顶点 ,求 ( 是 与 的距离,可用 Floyd 算法求0u,u,vu

12、得) 。(iii )构造完全赋权图 ,以 为顶点集,以 为边 的权。|0VK),(dv(iv)求 中权之和最小的完美对集 。|0VM(v)求 中边的端点之间的在 中的最短轨。MG(vi)在(v)中求得的每条最短轨上每条边添加一条等权的所谓“倍边” (即共端点共权的边) 。(vii)在(vi)中得的图 上求 Euler 回路即为中国邮递员问题的解。最大流问题-参照运筹学第十一章 p229-p253许多系统包含了流量问题。例如交通系统有车流量,金融系统有现金流,控制系统有信息流等。许多流问题主要是确定这类系统网络所能承受的最大流量以及如何达到这个最大流量。最大流问题的限制条件:一是每条弧上的流量必

13、须是非负的且不能超过该弧的最大通过能力(即该弧的容量) ;二是起点发出的流的总和(称为流量) ,必须等于终点接收的流的总和,且各中间点流入的流量之和必须等于从该点流出的流量之和,即流入的流量之和与流出的流量之和的差为零,也就是说各中间点只起转运作用,它既不产出新的物资,也不得截留过境的物资。因此有下面所谓的可行流的定义。定义 14 对于给定的网络 D=(V,A,C)和给定的流 ,若 满足下列条件:(1) (1) 容量限制条件:对每一条弧 ,有(7.9)(2)平衡条件:对于中间点:流出量=流入量,即对于每一个 i (is,t),有(7.10)对于出发带点 ,有(7.11)对于收点 ,有(7.12

14、)则称 为一个可行流, 称为这个可行流的流量。注意,我们这里所说的出发点 是指只有从 发出去的弧,而没有指向 的弧;收点 是指只有弧指向 ,而没有从它的发出去的弧。寻求最大流的标号法(Ford , Fulkerson)从一个可行流出发 (若网络中没有给定 ,则可以设 是零流) ,经过标号过程与调整过程。1) 1) 标号过程在这个过程中,网络中的点或者是标号点(又分为已检查和未检查两种) ,或者是未标号点,每个标号点的标号包含两部分:第一个标号表明它的标号是从哪一点得到的,以便找出增广链;第二个标号是为确定增广链的调整量 用的。标号过程开始,总先给 vs 标上(0,+) ,这时 vs 是标号而未

15、检查的点,其余都是未标号点,一般地,取一个标号而未检查的点 vi,对一切未标号点 vj:(1) 在弧上 , ,则给 vj 标号 。这里 。这时点 vj 成为标号而未检查的点。(2) 若在弧 上, ,给 vj 标号 。这里 。这时点 vj 成为标号而未检查的点。于是 成为标号而已检查过的点,重复上述步骤,一旦 被标上号,表明得到一条从 到 的增广链 ,转入调整过程。若所有标号都是已检查过,而标号过程进行不下去时,则算法结束,这时的可行流就是最大流。2) 2 调整过程首先按 及其它点的第一个标号,利用“反向追踪”的办法,找出增广链 。例如设 vt 的第一个标号为 (或 ) ,则弧 (或相应地 )是

16、 上的弧。接下来检查 的第一个标号,若为 (或 ) ,则找出 (或相应地 ) 。再检查 的第一个标号,依此下去,直到 为止。这时被找出的弧就构成了增广链 。令调整量 是 ,即 的第二个标号。令 去掉所有的标号,对新的可行流 ,重新进入标号过程。二分匹配二分图的相关性质(1) 二分图的最大匹配数等于最小覆盖数,即求最少的点使得每条边都至少和其中的一个点相关联,很显然直接取最大匹配的一段节点即可。(2) 二分图的独立数等于顶点数减去最大匹配数,很显然的把最大匹配两端的点都从顶点集中去掉这个时候剩余的点是独立集,这是|V|-2*|M| ,同时必然可以从每条匹配边的两端取一个点加入独立集并且保持其独立

17、集性质。(3) DAG 的最小路径覆盖,将每个点拆点后作最大匹配,结果为 n-m,求具体路径的时候顺着匹配边走就可以,匹配边 ij,jk,kl 构成一条有向路径。最大匹配: 图中包含边数最多的匹配称为图的最大匹配。 完美匹配: 如果所有点都在匹配边上,称这个最大匹配是完美匹配。最小覆盖: 最小覆盖要求用最少的点(集合或集合的都行)让每条边都至少和其中一个点关联。可以证明:最少的点(即覆盖数)最大匹配数最小路径覆盖:用尽量少的不相交简单路径覆盖有向无环图的所有结点。解决此类问题可以建立一个二分图模型。把所有顶点 i 拆成两个:结点集中的 i 和 Y 结点集中的 i,如果有边 i-j,则在二分图中

18、引入边 i-j,设二分图最大匹配为 m,则结果就是 n-m。最大独立集问题: 在个点的图 G 中选出 m 个点,使这 m 个点两两之间没有边求 m最大值 如果图满足二分图条件,则可以用二分图匹配来做最大独立集点数 = N - 最大匹配数注意要点:(一)每个 X 节点都最多做一次增广路的起点;(二)如果一个 Y 节点已经匹配了,那么增广路到这儿的时候唯一的路径是走到 Y节点的匹配点(可以回忆最大流算法中的后向边,这个时候后向边是可以增流的) 。求 二 分 图 最 大 匹 配 可 以 用 最 大 流 (Maximal Flow)或 者 匈 牙 利 算 法 (Hungarian Algorithm)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报