- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图及其基本算法.ppt
练习7:Floyd算法练习 【问题描述】从文件中读入带权图的信息,按Dijkstra算法根据给定源点求出从源点到该图中其余顶点的最短路径。 【输入文件】第一行:一个整数L:L=0表示无向图,L=1表示有向图;第二行三个整数m、n,分别表示图的结点数和图中的边数。以下n行表示n条边:每一行三个数x、y和z,z表示x与y之间边的权值。第n+2行:整数R,以下R行每行一个整数表示顶点标号作为源点。 【输出文件】共R行,每一行的数据表示源点到其余顶点的距离,按顶点编号由小大输出,如果没有路径,输出-1。 【示例】输入:1 输出:-1 10 50 30 60 6 8 -1 –1 –1 20 30 1 3 10 1 5 30 1 6 100 2 3 5 3 4 50 4 6 10 5 4 20 5 6 60 2 1 5 拓扑排序 在实际工作中,经常用一个有向图来表示施工的流程图,或产品生产的流程图。一个工作往往可以分为若干个子工程,把子工程称为“活动”。在有向图种若以顶点表示“活动”的网(Activity On Vertex network), 简称为AOV网。 对于一个AOV网,构造其所有顶点的线性序列,使此序列不仅保持网中各顶点间原有的先后关系,而且使原来没有先后关系的顶点之间也建立起人为的先后关系。这样的线性序列称为拓扑有序序列。构造AOV网的拓扑有序序列的运算称为拓扑排序。 某个AOV网,如果它的拓扑有序序列被构造成功,则该网中不存在有向回路,其各个子工程可按拓扑有序序列的次序进行安排。显然,一个AOV网的拓扑有序序列并不是唯一的。 对AOV网进行拓扑排序的方法和步骤是: 在网中选择一个没有前趋的顶点且输出之; 从网中删去该顶点,并且删去从该顶点发出的全部有向边; 重复上述两步,直至网中不存在没有前趋的顶点为止。 图中v1和v6没有前驱,则任选一个。假设为v6,输出v6;在删除v6及v6,v4和v6,v5之后,只有v1没有前驱;输出v1及删除v1,v2,v1,v3,v1,v4;之后v3,v4都没有前驱,以此类推。可得到拓扑排序结果: v6-v1-v4-v3-v2-v5 1 2 3 4 5 6 拓扑排序算法 type arcptr=^arctp; arctp=record adjvex:integer; nextarc:arcptr; end; vexnode=record vexdata:integer; indegree:integer; firstarc:arcptr; end; function topsort:boolean; begin crt_adjlist(dig); init(top); for i:=1 to n do if dig[i].indegree=0 then push(top,i); m:=0; while not empty(top) do begin j:=pop(top);write(dig[j].data);m:=m+1; q:=dig[j].firtarc; while qnil do begin k:=q^.adjvex; dig[k].indegree:=dig[k].indegree-1; if dig[k].indegree=0 then push(top,k); q:=q^.nextarc; end; end; if m
文档评论(0)