知识大全 图 - 拓扑排序 (二)

Posted

篇首语:农村四月闲人少,勤学苦攻把名扬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 图 - 拓扑排序 (二)相关的知识,希望对你有一定的参考价值。

  无后继的顶点优先拓扑排序方法

   思想方法

  该方法的每一步均是输出当前无后继(即出度为 )的顶点 对于一个DAG 按此方法输出的序列是 逆拓扑次序 因此设置一个

  栈(或向量)T来保存输出的顶点序列 即可得到拓扑序列 若T是栈 则每当输出顶点时 只需做人栈操作 排序完成时将栈中顶点依

  次出栈即可得拓扑序列 若T是向量 则将输出的顶点从T[n ]开始依次从后往前存放 即可保证T中存储的顶点是拓扑序列

   抽象算法描述

  算法的抽象描述为

  NonSuccFirstTopSort(G)//优先输出无后继的顶点

  while(G中有出度为 的顶点)do

  从G中选一出度为 的顶点v且输出v;

  从G中删去v及v的所有人边

  

  if(输出的顶点数目<|V(G)|)

  Error( G中存在有向环 排序失败! );

  

   算法求精

  在对该算法求精时 可用逆邻接表作为G的存储结构 设置一个向量outdegree[ n ]或在逆邻接表的顶点表结点中增加 个出

  度域来保存各顶点当前的出度;设置一个栈或队列来暂存所有出度为零的顶点 除了增加一个栈或向量T来保存输出的顶点序列外

  该算法完全类似于NonPreFirstTopSort 具体算法【参见练习】

  利用深度优先遍历对DAG拓扑排序

  当从某顶点v出发的DFS搜索完成时 v的所有后继必定均已被访问过(想像它们均已被删除) 此时的v相当于是无后继的顶点 因

  此在DFS算法返回之前输出顶点v即可得到 DAG的逆拓扑序列

  其中第一个输出的顶点必是无后继(出度为 )的顶点 它应是拓扑序列的最后一个顶点 若希望得到的不是逆拓扑序列 同样可增

  加T来保存输出的顶点 若假设T是栈 并在DFSTraverse算法的开始处将T初始化

  利用DFS求拓扑序列的抽象算法可描述为

  void DFSTopSort(G i T)

  //在DisTraverse中调用此算法 i是搜索的出发点 T是栈

  int j;

  visited[i]=TRUE; //访问i

  for(所有i的邻接点j)//即 ∈E(G)

  if(!visited[j])

  DFSTopSort(G j T);

  //以上语句完全类似于DFS算法

  Push(&T i); //从i出发的搜索已完成 输出i

  

  只要将深度优先遍历算法DFSTraverse中对DFS的调用改为对DFSTopSort的调用 即可求得拓扑序列T 其具体算法不难从上述抽

  象算法求精后得到

cha138/Article/program/sjjg/201311/23812

相关参考

知识大全 数据结构之拓扑排序

概念  有向无环图(DirectedAcyclicGraph):一个无环的有向图简称DAG图  拓扑排序(TopologicalSort)将一个有向无环图G中所有顶点排成一个线性序列使得对图中任意一对

知识大全 数据结构 7.12 AOV网的拓扑排序的过程(二)

数据结构7.12AOV网的拓扑排序的过程(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  希

知识大全 数据结构考研分类复习真题 第七章 图[14]

  .拓扑排序的有向图中最多存在一条环路(   )【大连海事大学一(分)】  .任何有向图的结点都可以排成拓扑排序而且拓扑序列不唯一(   

知识大全 贪婪算法之——拓扑排序

  一个复杂的工程通常可以分解成一组小任务的集合完成这些小任务意味着整个工程的完成例如汽车装配工程可分解为以下任务将底盘放上装配线装轴将座位装在底盘上上漆装刹车装门等等任务之间具有先后关系例如在装轴之

知识大全 第四部分 图[9]

   拓扑排序算法——伪代码  栈S初始化累加器count初始化  扫描顶点表将没有前驱的顶点压栈  当栈S非空时循环   vj=退出栈顶元素输出vj累加器加 

知识大全 数据结构 7.11 AOV网的拓扑排序的过程(一)

数据结构7.11AOV网的拓扑排序的过程(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  希

知识大全 数据结构考研分类复习真题 第七章 图[47]

  .().对于有向无环图叙述求拓扑有序序列的步骤  ().对于以下的图写出它的四个不同的拓扑有序序列【南开大学二 (分)】 cha138/Article/program

知识大全 数据结构考研分类复习真题 第七章 图[26]

  .如下为拓扑排序的C程序  ().列出对图执行该程序后的输出结果  ().在程序空白处填上适当语句  voidtopsort(hdnodesgraph[]intn)  intijktop;node

知识大全 数据结构考研分类复习真题 第七章 图[46]

  .已知一图如下图所示  ().写出该图的邻接矩阵  ().写出全部拓扑排序  ().以v为源点以v为终点给出所有事件允许发生的最早时间和最晚时间并给出关键路径  ().求V结点到各点的最短距离【北

知识大全 数据结构考研分类复习真题 第七章 图[6]

  .下面哪一方法可以判断出一个有向图是否有环(回路)【东北大学(分)】  A.深度优先遍历  B拓扑排序  C求最短路径 D求关键路径  在图采用邻