版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、拓扑排序拓扑排序复习小结和作业复习图的深度优先搜索:简单路径图的广度优先搜索:最短路径图的遍历方法v1v3v2v5v6v7v4拓扑排序问题的引入拓扑排序的定义拓扑排序方法1拓扑排序方法2练习拓扑排序-问题引入某学校的部分课程结构java语言数据结构数据库原理算法分析与设计操作系统软件工程软件测试如何制定教学计划?拓扑排序-定义按照有向图给出的次序关系,将图中顶点排成一个线性序列,对于有向图中没有限定次序关系的顶点,则可以人为加上任意的次序关系。由此所得顶点的线性序列称之为拓扑有序序列。拓扑排序是对有向无圈图的顶点的一种排序,使得如果存在一条从vi到vj的路径,那么在排序中vj就出现在vi的后面
2、。 显然,如果图中含有圈,那么拓扑排序是不可能的,因为对于圈上的两个顶点v和w,v优先于w同时w又优先于v。拓扑排序-定义BDAC不能求得它的拓扑有序序列。因为图中存在一个回路 B, C, D拓扑排序-举例BDAC可求得拓扑有序序列: A B C D 或 A C B D拓扑排序-举例 拓扑序列不是唯一的。v1v3v2v5v6v7v4可能的拓扑序列为:v1,v2,v5,v4,v3,v7,v6v1,v2,v5,v4,v7,v3,v6拓扑排序-举例 拓扑排序-方法11、从有向图中选取一个没有前驱的顶点,并输出;2、从有向图中删去此顶点以及所有以它为尾的弧;3、重复上述两步,直至图空,或者图不空但找不
3、到无前驱的顶点为止。acgbdhfebhacdgfe拓扑序列: 拓扑排序-方法1 拓扑排序-方法11、从有向图中选取一个没有前驱的顶点,并输出;2、从有向图中删去此顶点以及所有以它为尾的弧;3、重复上述两步,直至图空,或者图不空但找不到无前驱的顶点为止。入度为0的顶点弧头顶点的入度减1void topsort( ) for(int counter=0;counterNUM_VERTICES;counter+) Vertex v=findNewVertexOfIndegreeZero( ); /寻找一个尚未被分配拓扑编号的入度为0的顶点if(v=null) /图中有圈 throw new Cyc
4、leFoundException(); v.topNum=counter; /顶点v的拓扑编号for each Vertex w adjacent to v w.indegree-; /弧头顶点的入度减1 拓扑排序-方法1v1v3v2v5v6v7v4出队前的入度顶点 1 2 3 4 5 6 7 v1 v2 v3 v4 v5 v6 v7入队出队0123132v1012132v210321v50131v4200v3,v7v3v7100v6v1v2v5v4p274, 9.2队列和栈是否都能实现拓扑排序? 拓扑排序-方法1void topsort( ) throws CycleFoundExcepti
5、on Queue q=new Queue( ); int counter=0; /对输出顶点计数 for each Vertex v if(v.indegree=0) /顶点的入度为0,则入队 q.enqueue(v); while (!q.isEmpty( ) /如果队列非空 if (counter!=NUM_VERTICES) /有圈 throw new CycleFoundException( ); 拓扑排序-方法1void topsort( ) throws CycleFoundException . while (!q.isEmpty( ) /如果队列非空 .Vertex v=q.d
6、equeue( );v.topNum=+counter;for each Vertex w adjacent to vif(-w.indegree=0)q.enqueue(w); 拓扑排序-方法1总的时间复杂度:O(n+e)算法分析: 拓扑排序-方法1acgbdhfebhacdgfe拓扑序列: 拓扑排序-方法2对有向无环图利用深度优先搜索进行拓扑排序。acgbdhfebhacdgfe 此图的一个拓扑序列为:acgbdhfe退出DFS函数顺序:efgdcahb 拓扑排序-方法2最先退出DFS函数的顶点是出度为零的顶点,为拓扑排序序列中最后一个顶点。因此,按退出DFS函数的先后记录下来的顶点序列即为逆向的拓扑排序序列。结论: 拓扑排序-方法2void DFS-ToplogicalSort () int v; for (v=0; vvexNum; +v) vertexsv.visited = false; / 访问标志初始化 Stack S; /存放顶点,按照出DFS的次序 for (v=0; v=0; w=NextAdjVex(v,w) if (!vertexsw.visited) DFS-T(w); / 对v的尚未访问的邻接顶点w递归调用DFS-T S.push(v); /顶点v的DFS函数执行完毕 / DFS-T 拓扑排序-方法2acgbdhfe写出下图的所有的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年制作沙锤教案
- 抗生素酶裂解工安全操作竞赛考核试卷含答案
- 金属热处理工岗前核心技能考核试卷含答案
- 第三课 禁毒法律 教案高一上学期禁毒教育主题班会
- 福建省福清市海口镇高中数学 第一章 三角函数 1.5 函数y=Asin(ωx+φ)的图象(1)教案 新人教A版必修4
- 司法审计考试题库及答案
- 成都市共享人才协议书
- 青理工液压传动教学大纲
- 废弃矿山施工安全管理方案
- 玻璃装饰品生产项目人员培训提升方案
- 2026年重庆市北碚区社区工作者招聘考试试卷(含答案解析)
- 2026中国社会科学院生态文明研究所非事业编制管理岗位招聘2人笔试备考试题及答案解析
- 2026年2026年新版七年级下册道德与法治期末复习核心考点提纲详细版新版
- 危险废弃物焚烧项目经济效益和社会效益分析报告
- 2026上半年生态环境部卫星环境应用中心招聘15人笔试参考题库及答案解析
- 2026版科技核心期刊目录
- 2026年山东济南市中考历史试卷含答案
- 芬顿污水处理操作规程
- 2026年链工宝全国网络知识竞赛答考试题库附完整答案详解【全优】
- 2026中国哈蜜瓜行业市场发展分析及竞争格局与投资前景研究报告
- 2026《药品管理法实施条例》解读课件
评论
0/150
提交评论