- 1、本文档共130页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 图 计算机软件技术基础教程 教学课件
第13章 图 13.2 图的存储方法 13.3 图 的 遍 历 13.4 生成树和最小生成树 13.5 最 短 路 径 13.6 拓 扑 排 序 13.7 关 键 路 径 图13.18 AOV网拓扑排序过程 拓扑排序可在有向图的不同存储结构表示方法上实现。下面针对图13.19(a)所给出的AOV网进行讨论。 在邻接矩阵中,由于某个顶点的入度由这个顶点相对应的列上的1的个数所确定,而它的出度由顶点所对应的行上的1的个数所确定,所以在这种存储结构上实现拓扑排序算法的步骤是: (1) 取1作为第1个新序号。 (2) 找一个没有得到新序号的全零矩阵列,若没有则停止寻找。这时如果矩阵中所有列都得到了新序号,则拓扑排序完成,否则说明该有向图中有环存在。 (3) 把新序号赋给找到的列,并将该列对应的顶点输出。 (4) 将找到的列所对应的行全部置零。 (5) 新序号增1,重复执行步骤(2)~(5)。 根据以上步骤,使用一个长度为n的数组来存放新序号时,可给出以下的具体算法: TOPOSORTA(graph ?g,int n) /*对有n个顶点的有向图,使用邻接矩阵求拓扑排序*/ { int i, j, k, t, v, D[n]=0; v=1; /* 新序号变量置1 */ for?(k=0; kn; k++) {for?(j=0; jn; j++) /*寻找全零列*/ if?(D[j]= =0) { t=1; for?(i=0; in; i++) if?(g-arcs[i][j]= =1) {t=0; break; } /* 若第j列上有1,则跳出循环 */ if?(t= =1) {m=j; break; } /*找到第j列为全0列*/ } if?( j!=n ) { D[m]=v; /* 将新序号赋给找到的列 */ printf?( %d\t , g-vexs[m]); /* 将排序结果输出 */ for?(i=0; in; i++) g-arcs[m][i]=0; /*将找到的列的相应行置全0*/ v++; /*新序号增1*/ } else break; } if( v-1n ) printf?( \n The network has a cycle \n ); } /* TOPOSORTA */ 对图13.19中G1的邻接矩阵应用以上算法得到的拓扑排序序列为:v1,v2, v4, v3, v5, v6, v7。 利用邻接矩阵进行拓扑排序时,程序虽然简单,但效率不高,算法的时间复杂度约为O(n3)。而利用邻接表会使寻找入度为0的顶点的操作简化,从而提高拓扑排序算法的效率。 在邻接表存储结构中,为了便于检查每个顶点的入度,可在顶点表中增加一个入度域(id),这样的邻接表如图13.19(b)所示,这样只需对由n个元素构成的顶点表进行检查就能找出入度为0的顶点。为了避免对每个入度为0的顶点重复访问,可用一个链栈来存储所有入度为0的顶点。在进行拓扑排序前,只要对顶点表进行一次扫描,便可将所有入度为0的顶点都入栈,以后每次从栈顶取出入度为0的顶点,并将其输出。 一旦排序过程中出现新的入度为0的顶点,同样又将其入栈。在入度为0的顶点出栈后,根据顶点的序号找到相应的顶点和以该顶点为起点的出边,再根据出边上的邻接点域的值使相应顶点的入度值减1,便完成了删除所找到的入度为0的顶点的出边的功能。 在邻接表存储结构中实现拓扑排序算法的步骤为: (1) 扫描顶点表,将入度为0的顶点入栈。 (2) 当栈非空时执行以下操作: ?{ 将栈顶顶点vi的序号弹出,并输出之; 检查vi的出边表,将每条出边表邻接点域所对应的顶点的入度域值减1,若该顶点入度为0,则将其入栈; } (3) 若输出的顶点数小于n,则输出“有回路”,否则拓扑排序正常结束。 在具体实现时,链栈无须占用额外空间,只需利用顶点表中入度域值为0的入度域来存放链栈的指针(即指向下一个存放链栈指针的单元的下标),并用一个栈顶指针top指向该链栈的顶部即可。由此给出以下的具体算法: typede
您可能关注的文档
- 第11章 麻醉药 药理学 第2版 教学课件.ppt
- 第11章 音频编辑与特效应用 premiere PPT电子教案.ppt
- 第11章 食品添加剂的测定防腐剂 食品检验与分析 教学课件.ppt
- 第11章 配位化合物 大学一年级 无机化学 课件.ppt
- 第11章-ds区元素.ppt
- 第11章 印花税和契税 税法 教学课件.ppt
- 第11章_发布和导出动画 《Flash 8课件》.ppt
- 第11章_道路景观设计 交通工程学 教学课件 可以做复习提纲用.ppt
- 第11章 超声波焊 压焊方法及设备 教学课件.ppt
- 第11章企业管理法律法规思考题答案 现代企业管理复习思考题答案(第2版).doc
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)