`
endual
  • 浏览: 3506139 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

有向无环图 拓扑排序

 
阅读更多

package endual.tuopupaixu;

/**
 * 拓扑排序
 * 
 * 拓扑排序的思想虽然不寻常,但是还是很简单的
 * 有两个步骤要去考虑
 * 步骤1 
 *   找到一个没有后续的顶点(这是从有向图的角度是做了,而不能用最简单的那种图去考虑问题了)
 *      顶点的后续也是一些顶点,他们是该节点的直接“下游”  也就是说这些节点与他们由一条边相连,并且
 *      边的方向指向它们。如果有一条边从A指向B,那么B是A的后续
 *      
 *  步骤2
 *    从图中删除这个顶点,在列表的前面插入顶点的标记
 *    
 *  重复步骤1和步骤2,直到所有的顶点都从图中删除。这时,列表显示的顶点顺序就是拓扑排序的结构了
 * @author Endual
 *
 *   说明:
 *   删除顶点似乎是一个极端的步骤,但是它是算法的核心,如果第一个顶点不处理,算法就不能计算出要处理的是第二个顶点。
 *   如果需要,也可以在其他地方存储图的数据(顶点列表或者邻接矩阵),然后再排序完成后恢复他们就可以了
 *   
 *      算法能够执行是因为,如果一个顶点没有后续,那么它肯定是拓扑序列的最后一个了。一旦删除它,剩下的顶点中比如有一个
 *      没有后续的,所以它成为下一个拓扑序列的最后的一个了。依次类推。
 *   
 *   
 *   拓扑排序算法可以既可以是连通图,也可以用于非联通图。这可以模拟另外一种两个互不相关的目标的情况。
 *   例如同时获得数学学位和急救资格的证书。
 */

/**
 * 环和树
 * 
 * 环是拓扑排序无法处理的。
 * 图的话=====》》》》 不是环就是树了
 * @author Endual
 *
 *要计算是不是要环也是简单的:
 *   如果N个顶点的图有超过N-1条边,那么就肯定有环的存在了。可以尝试下画一个没有环而有N个顶点的,N条边的图,这样就可以lij
 *   理解了
 *   
 *   拓扑排序必须在无环的有向图中进行的(有向无环图)
 *
 *
 */
public class GrapnSort {

}
 
分享到:
评论

相关推荐

    有向无环图拓扑排序并输出圈

    final为最终代码,其他为测试代码,有向无环图进行拓扑排序若不是DAG则输出圈

    有向无环图的全拓扑排序

    求出有向无环图的所有拓扑排序序列的C语言程序实现

    图的拓扑排序和有向无环图的判断

    采用的方法是图的经典数据结构,若是有向无环图DAG则输出一个拓扑排序。若不是DAG则输出其中的一个环。

    有向图若有环,输出环,否则,拓扑排序

    对于有向图,若发现它是有环的,那么输出它的环,否则,就输出它的拓扑排序

    有向图的拓扑排序判断是否存在环

    AOV网,判断网中是否存在环 否则打印出拓扑序列

    操作系统 拓扑排序算法

    任意给定一个有向图,设计一个算法,对它进行拓扑排序。拓扑排序算法思想:a.在有向图中任选一个没有前趋的顶点输出;b.从图中删除该顶点和所有以它为...或者直到图中没有无前趋的顶点为止,此情形表明有向图中存在环。

    利用拓扑排序算法判别有向环

    拓扑排序算法判别有向图中是否存在有向环。 实验课上写的,绝对可用!!

    数据结构拓扑排序课程设计.docx

    解决拓扑排序的方法如下: (1)在有向图中选一个没有前驱的顶点且输出之。 (2)从图中删除该顶点和所有以它为尾的弧。 重复上述两步,直至全部顶点均已输出,或者当前图中不存在无前驱的顶点为止。后一种情况则...

    c++实现拓扑排序

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑...

    带有环判断的拓扑排序来自西安工业大学课程设计

    带有环判断的拓扑排序资源来自西安工业大学数据结构课程设计

    深度优先搜索与有向无环图的拓扑排序(java实现)

    NULL 博文链接:https://128kj.iteye.com/blog/1675685

    ACM拓扑排序(可输出环)

    假设给我们一个任意的图,它可能是也可能不是DAG(有向无圈图),推广拓扑排序算法,以使得给定有向图G的输入,它的输出是以下两者之一: (a) 一个拓扑排序,于是确定了G为DAG; 或者 (b) G中的一个圈,于是确定了G...

    ACM拓扑排序

    假设给我们一个任意的图,它可能是也可能不是DAG(有向无圈图),推广拓扑排序算法,以使得给定有向图G的输入,它的输出是以下两者之一: (a) 一个拓扑排序,于是确定了G为DAG; 或者 (b) G中的一个圈,于是确定了G...

    数据结构_图的拓扑排序

    题目:图的存储结构及拓扑排序  从键盘或文件读入有向图的顶点信息和弧信息(输入格式自拟);  建立有向图的十字链表存储结构;  利用拓扑排序方法判断该图是否为有向无环图。

    拓扑排序-课程设计(源码、课程设计说明书)

    1)从有向图中选出一个无前驱的顶点输出; 2)将此顶点和以他为起点的弧删除; 3)重复1)2)直到不存在无前驱的顶点; 4)若此时输出的顶点数小于有向图中的顶点数,则说明有向图中存在回路,否则输出的顶点的顺序...

    拓扑排序--课程表

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑...

    拓扑排序(还实现了有向图找环)

    用邻接矩阵实现的拓扑排序,如果不是DAG,会找出有向图中的一个环(NKU算法作业)

    拓扑 排序 C语言 算法

    拓扑 排序 C语言 算法 拓扑 排序 C语言 算法 绝对可以 欢迎下载

    数据结构6.8有向无环图及应用

    本节主要讲述有向无环图的相关拓扑排序方法和实现算法。

    有向图邻接表的建立,深度广度搜索及拓扑排序.zip_45V_bfs_dfs_有向图

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑...

Global site tag (gtag.js) - Google Analytics