拓扑最短路径研究报告.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.5.1 拓扑排序 AOV-网(Activity On Vertex) 所有的工程或者某种流程可以分为若干个小的工程或阶段,这些小的工程或阶段就称为活动。若以图中的顶点来表示活动,有向边表示活动之间的优先关系,则这样活动在顶点上的有向图称为AOV网。;C12;拓扑排序 若集合X中的二元关系R是自反的、非对称的和传递的,则R是X上的部分序关系。若R是集合X上的一个部分序关系,如果对每个x、y∈X必有xRy或yRx ,则R是X上的全序关系。 全序指集合中全体成员之间均可比较。 AOV网所代表的一项工程中活动的集合显然是一个部分序集合。为了保证该项工程得以顺利完成,必须保证AOV网中不出现回路;否则,意味着某项活动应以自身作为能否开展的先决条件。 测试AOV网是否具有回路(即是否是一个有向无环图)的方法,就是在AOV网的部分序集合下构造一个线性序列,该线性序列具有以下性质:; 在AOV网中,若顶点i 优先于顶点j ,则在线性序列中顶点i仍然优先于顶点j; 对于网中原来没有优先关系的顶点与顶点 ,如上图中的C1与C9,在线性序列中也建立一个先后关系,或者顶点i优先于顶点j ,或者顶点j 优先于i。 满足这样性质的线性序列称为拓扑有序序列。构造拓扑序列的过程称为拓扑排序。也可以说拓扑排序就是由某个集合上的一个偏序得到该集合上的一个全序的操作。 上例的拓扑排序序列之一: C1,C2,C3,C4,C5,C7,C9,C10,C11,C6,C12,C8 可以得到不止一个拓扑序列。对于任何一项工程中各个活动的安排,必须按拓扑有序序列中的顺序进行才是可行的。;对AOV网进行拓扑排序的方法和步骤是: ①从AOV网中选择一个没有前驱的顶点(该顶点的入度为0)并且输出它; ②从网中删去该顶点,并且删去从该顶点发出的全部弧; ③重复上述两步,直到剩余的网中不再存在没有前驱的顶点为止。 这样操作的结果有两种:一种是网中全部顶点都被输出,这说明网中不存在有向回路;另一种就是网中顶点未被全部输出,剩余的顶点均有前驱顶点,这说明网中存在有向回路。 ;C1;C3;设计数据结构;(a) 一个AOV网 (b) AOV网的邻接表存储 ;拓扑排序;拓扑排序;拓扑排序;拓扑排序;拓扑排序;??扑排序;; Status TopologicalSort(ALGraph G) 算法7.12 { // 有向图G采用邻接表存储结构。若G无回路,则输出G的顶点的一个拓扑序列并返回OK,否则返回ERROR。 FindInDegree(G,indegree);//对各顶点求入度 indegree[0..vernum-1] InitStack(S); // 初始化栈 for(i=0;iG.vexnum;++i) // 建零入度顶点栈S if(!indegree[i]) Push(S,i); // 入度为0者进栈 count=0; // 对输出顶点计数 while(!StackEmpty(S)) { // 栈不空 Pop(S,i); printf(i,G.vertices[i].data);//输出i号顶点并计数 ++count;; for(p=G.vertices[i].firstarc;p;p=p-nextarc) { // 对i号顶点的每个邻接点的入度减1 k=p-adjvex; if(!(--indegree[k])) // 若入度减为0,则入栈 Push(S,k); }//for }//while if(countG.vexnum) return ERROR;//此图有回路 else return OK; } 对一个具有n个顶点、e条边的网来说,整个算法的时间复杂度 为O(e+n)。 ;;7.5.2 关键路径AOE-网(Activity On Edge);AOE-网是带权的有向无环网 顶点--事件或状态 弧--活动及发生的依次关系 权--活动持续的时间 源点--入度为0的顶点(只有一个) 汇点--出度为0的顶点(只有一个);AOE-网要研究的问题;若活动ai由弧j,k表示,其持续的时间记为dut(j,k), 则 e(i) = ve(j) l(i) = vl(k) - dut(j,k);求ve(j)和vl(j)分两步进行: (1) 从ve(0)=0开始向前递推: ve(j) = max{ve(i) + dut(i,j)}

文档评论(0)

yuzongxu123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档