1 / 24

 基本步骤

6. 5. 1. 5. 5. 6. 4. 3. V2. V0. V3. V1. V5. V4. 2. 6. 克鲁斯卡尔算法.  基本步骤 设 G= ( V , E )为一个具有 n 个顶点的带权的连通网络,最小生成树的初始状态为有 n 个顶点但无边的非连通图 T= ( V ,  )。将 E 中的边按权值的递增顺序排序,选择权值最小的边,若与其相关的顶点落在 T 中不同的连通分量上,则将其加入 T 中,否则,将其弃舍。循环至所有顶点在同一的连通分量上。. 如何识别一条边所相关的顶点是否落 在同一个连通分量上?可将一个连通

Download Presentation

 基本步骤

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 6 5 1 5 5 6 4 3 V2 V0 V3 V1 V5 V4 2 6 • 克鲁斯卡尔算法 •  基本步骤 • 设G=(V,E)为一个具有n个顶点的带权的连通网络,最小生成树的初始状态为有n 个顶点但无边的非连通图 T=(V,  )。将E 中的边按权值的递增顺序排序,选择权值最小的边,若与其相关的顶点落在T 中不同的连通分量上,则将其加入T 中,否则,将其弃舍。循环至所有顶点在同一的连通分量上。 如何识别一条边所相关的顶点是否落 在同一个连通分量上?可将一个连通 分量的所有顶点看成一个集合,当从 E中取出一条边( xi, xj )时,若xi, xj 在同一集合u 中,则将该边弃舍; 否则,则将该边加入到T 中,并将xj 所在的集合v 并入集合u 中。

  2. 45 50 10 V3 V4 V1 V2 V5 V0 35 10 20 20 30 15 5 问题的提出 交通咨询系统、通讯网、计算机网络常要寻找两结点间最短路径 交通咨询系统:A 到B 最短路径 计算机网发送Email节省费用A到B沿最短路径传送 路径长度:路径上边数 路径上边的权值之和 最短路径:两结点间权值之和最小的路径 例:求V0到V4最短路径 V0到V4 路径:V0 V4 45 V0 V1 V4 60 V0 V2 V3 V4 60 V0 V2 V3 V1 V4 55

  3. 从某源点到其余各点的最短路径 带权值的有向图的单源最短路径问题 如何求从某源点 到其余各点的最短路径? ?

  4. 迪杰斯特拉算法(Dijkstra) • Dijkstra算法的基本思想 • 按路径长度递增顺序求最短路径算法 。与求最小生成树的普里姆算法类似 • Dijkstra 算法的基本步骤 • 设V0是起始源点,U = 已求得最短路径终点集合。V-U = 未确定最短路径的顶点的集合 • 初始时 U ={V0} • 1)下一条长度最短的路径: • ① Vi  V - U ,先求出V0 到Vi 中间只经 U 中结点的最短路径; • ② 上述最短路径中长度最小者即为下一条长度最短的路径; • ③ 将所求最短路径的终点加入U 中; • 2)重复1)直到求出所有的最短路径

  5. V5 100 60 30 10 20 10 V4 V0 V1 V2 V3 50 5 始点 终点 最短路径 路径长度 V0 V1 无 V2 (V0,V2) 10 V3 (V0,V4,V3) 50 V4 (V0,V4) 30 V5 (V0,V4,V3,V5) 60

  6. AOV网 V5 V3 V2 V0 V1 V4 V6 有向无环图:没有回路的有向图 应用: 工程流程、生产过程中各道工序的流程、程序流程、课程的流程 AOV网( activity on vertex net ) 用顶点表示活动,边表示活动的顺序关系的有向图称为AOV网 例 某工程可分为7个子工程,若用顶点表示子工程(也称活动), 用弧表示子工程间的顺序关系。工程流程可用如下AOV网表示

  7. V5 V3 V2 V0 V1 V4 V6 AOV网与拓扑排序 对工程问题,人们至少关心如下两类问题: 1)工程能否顺序进行,即工程流程是否“合理”2)完成整项工程至少需要多少时间,哪些子工程是影响工程进度的关键子工程 为求解工程流程是否“合理”,通常用AOV网的有向图表示工程流程 例1 某工程可分为V0、V1、V2、V3、V4、V5、V6 7个子工程, 工程流程可用如下AOV网表示。其中顶点:表示子工程(也称活动), 弧:表示子工程间的顺序关系。

  8. 例 课程流程图 某校计算机专业课程流程可AOV网表示。其中顶点:表示课程(也称活动), 弧:表示课程间的先修关系; 课程编号 课程名称 先决条件 c4 c5 程序设计 离散数学 数据结构 汇编语言 算法分析 计算机体系 编译方法 操作系统 高等数学 线性代数 电子电路 数值分析 无 c1 c1,c2 c1 c3,c4 c11 c5,c3 c3,c6 无 c9 c9 c9,c10,c1 c1 c2 c3 c4 c5 c6 c7 C8 c9 c10 c11 c12 c2 c1 c3 c7 c12 c9 c10 c6 c3 c11 如何安排施工计划? 如何安排教学计划? ?

  9. c4 c5 c2 c1 c3 c7 c12 V2 V5 V3 V4 V1 V0 V6 c9 c10 c6 c3 c11 一个可行的施工计划为:V0,V1,V2, V4,V3,V5,V6, 一个可行的学习计划为:C1,C9,C4,C2,C10,C11,C12,C3,C6,C5,C7,C8 可行的计划的特点:若在流程图中顶点v是顶点u 的前趋,则在计划序列中顶点v 也是u的前趋。

  10. V5 V3 V2 V0 V1 V4 V6 拓扑序列:有向图D的一个顶点序列称作一个拓扑序列,如果该序列中任两顶点v 、u ,若在D中v是u前趋,则在序列中v也是u前趋。拓扑排序: 就是将有向图中顶点排成拓扑序列。拓扑排序的应用  安排施工计划(如上) 判断工程流程的是否合理 如何判断AOV网(有向图) 是否存在有向回路? AOV网(有向图) 不存在有向回路 当且仅当能对AOV网 进行拓扑排序 ?

  11. 如何在计算机上实现 对有向图的拓扑排序? V5 V3 V2 V0 V1 V4 V6 ? 拓扑排序方法:1)在有向图选一无前趋的顶点v,输出;2)从有向图中删除v及以v为尾的孤;3)重复1、2、直接全部输出全部顶点或有向图中不存在无前趋顶点;例:V0,V1,V2,V3,V4,V5,V6

  12. 拓扑排序算法 1)拓扑排序方法的另一种描述(等价描述) (1) 选择一入度为 0 顶点 v,输出;(2) 将 v 邻接到的顶点的入度减1;(3)重复1、2 直到输出全部顶点或有向图没有入度为0的顶点; 2)拓扑排序涉及的数据和操作: 数据:有向图,顶点的入度; 操作: (1) 选择一入度为 0 顶点v,输出; (2) 将 v 邻接到的顶点 u 的入度减1;

  13. V4 V1 V6 V5 V3 V2 a4=3 a1=3 a8=1 a3=2 a7=2 a5=4 a2=2 a6=3 ak Vj Vi AOE网与关键路径 对工程人们关心两类问题: 1)工程能否顺序进行,即工程流程是否“合理”2)完成整项工程至少需要多少时间,哪些子工程是影响工程进度的关键子工程? 顶点表示事件 AOE网 边表示活动 事件Vj发生表示 akj已结束 事件Vi发生表示 ak可以开始

  14. AOE网与关键路径 • 如果在无有向环的带权有向图中 • 用有向边表示一个工程中的活动(Activity) • 用边上权值表示活动持续时间(Duration) • 用顶点表示事件 (Event) • 则这样的有向图叫做用边表示活动的网络,简称 AOE (Activity On Edges) 网络。 • AOE网络在某些工程估算方面非常有用。例如,可以使人们了解: (1) 完成整个工程至少需要多少时间(假设网络中没有环)?

  15. 在AOE网络中, 有些活动顺序进行,有些活动并行进行。 • 从源点到各个顶点,以至从源点到汇点的有向路径可能不止一条。这些路径的长度也可能不同。完成不同路径的活动所需的时间虽然不同,但只有各条路径上所有活动都完成了,整个工程才算完成。 • 因此,完成整个工程所需的时间取决于从源点到汇点的最长路径长度,即在这条路径上所有活动的持续时间之和。这条路径长度最长的路径就叫做关键路径(Critical Path)。

  16. V4 V1 V6 V5 V3 V2 a4=3 a1=3 a8=1 a3=2 a7=2 a5=4 a2=2 a6=3 ak Vj Vi 要找出关键路径,必须找出关键活动,即不按期完成就会影响整个工程完成的活动。 关键路径上的所有活动都是关键活动。因此,只要找到了关键活动,就可以找到关键路径. 例如,下图就是一个AOE网。 顶点表示事件 AOE网 边表示活动 事件Vj发生表示 akj已结束 事件Vi发生表示 ak可以开始

  17. a3=3 a8=4 v1 v3 v5 a13=14 a0=8 a9=19 a4=10 v0 v2 a10=8 v6 v9 a1=6 a5=9 a14=10 a11=2 v8 a2=7 a6=9 a12=6 v4 v7 a7=13 关键路径求解方法: • 在AOE网中从源点v0到事件vi的最长路径长度是事件vi的最早发生时间。这个时间决定了所有以vi为尾的弧表示的活动的最早开始时间。

  18. 定义以下几个量: • e(i):表示活动ai的最早开始时间。 • l(i):表示活动最迟开始时间的向量。 关键活动特征:e(i)=l(i) l(j)-e(j)的值表示完成活动aj的时间余量,提前完成非关键活动并不能提高整个工程的进度。 • 事件可能的最早开始时间ve(i):对于某一事件vi,它可能的最早发生时间ve(i)是从源点到顶点vi的最大路径长度。

  19. ve(0)=0; ve(i)= vi 集合p(i) • 事件允许的最晚发生时间vl(i):对于某一事件vi,它允许的最晚发生时间是在保证按时完成整个工程的前提下,该事件最晚必须发生的时间

  20. 对于图8.25所示的AOE网络,可按其中的一个拓扑序列(v0、v1、v2、v4、v3、v6、v7、v5、v8、v9)求解每个事件的最早开始时间:对于图8.25所示的AOE网络,可按其中的一个拓扑序列(v0、v1、v2、v4、v3、v6、v7、v5、v8、v9)求解每个事件的最早开始时间: ve(0)=0 ve(1)= 8,ve(2)=6,ve(4)=7; ve(3)=max{ve(1)+len(a3),ve(2)+len(a4)}=16; ve(6)=max{ve(2)+len(a5),ve(4)+len(a6)}=16; ve(7)=max{ve(6)+len(a11),ve(4)+len(a7)}=20; ve(5)= ve(3)+len(a8)=20; ve(8)=max{ve(3)+len(a9),ve(6)+len(a10),ve(7)+len(a12)}=35; ve(9)=max{ve(5)+len(a13),ve(8)+len(a14)}=45;

  21. vi vl(n-1)=ve(n-1); vl(i)= 集合s(i) e(k)=ve(i); l(k)=vl(j)-len(<vi,vj>); 求每一个顶点i的最晚允许发生时间vl(i)可以沿图中的汇点开始,按图中的逆拓扑序逐个递推出每个顶点的vl(i)。

  22. 对于图8.25所示的AOE网,按照(8-7)式求得的各个事件允许的最晚发生时间如下:对于图8.25所示的AOE网,按照(8-7)式求得的各个事件允许的最晚发生时间如下: vl(9)=ve(9)=45 vl(8)=vl(9)-len(<v8,v9>)=45-10=35 vl(5)=vl(9)-len(<v5,v9>)=45-14=31 vl(7)=vl(8)-len(<v7,v8>)=35-6=29 vl(6)=min{vl(7)-len(<v6,v7>),vl(8)-len(<v6,v8>)}=min{27,27}=27 vl(3)=min{vl(5)-len(<v3,v5>),vl(8)-len(<v3,v8>)}=min{27,16}=16 vl(4)=min{vl(6)-len(<v4,v6>),vl(7)-len(<v4,v7>)}=min{18,16}=16

  23. vl(2)=min{vl(3)-len(<v2,v3>),vl(6)-len(<v2,v6>)}=min{6,18}=6vl(2)=min{vl(3)-len(<v2,v3>),vl(6)-len(<v2,v6>)}=min{6,18}=6 vl(1)=vl(3)-len(<v1,v3>)=13 vl(0)=min{vl(1)-8,vl(2)-6,vl(4)-7}=min{5,0,9}=0

  24. 顶点 ve vl 活动 e l l-e 关键 活动 v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 0 8 6 16 7 20 16 20 35 45 0 13 6 16 16 31 27 29 35 45 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 0 0 0 8 6 6 7 7 16 16 16 16 20 20 35 5 0 9 13 6 18 18 16 27 16 27 27 29 31 35 5 0 9 5 0 12 11 9 11 0 11 11 9 11 0 √ √ √ √

More Related