拓扑排序
来源:互联网 发布:log4j.xml 输出sql 编辑:程序博客网 时间:2024/06/07 01:41
本总结是是个人为防止遗忘而作,不得转载和商用。
什么是拓扑排序
对一个有向无环图(DirectedAcyclic Graph,DAG)G进行拓扑排序,是将G中所有顶点排
成线性序列,使得图中任意一对顶点u、v,若u和v之间存在边,则在线性序列中u出现在v之前。
PS:u只要在v之前就好,不一定要相邻。
如对于下图来说
一种可能的拓扑排序结果就是:
2 → 8 → 0 → 3 → 7 → 1 → 5 → 6 → 9 → 4 → 11 → 10 → 12
拓扑排序的方法
1,计算每个节点的“入度”(指向它的节点数量)
2,输出入度=0的节点,并将指向该节点的节点的入度-1
3,重复第二步,直到所有节点的入度=0(即:所有节点都排序好了)
PS:当没有节点的入度为0时说明存在环,而这里的前提是无环图,所以这种情况不存在。
一些补充
1,拓扑排序的本质是不断输出入度为0的点,该算法可用于判断图中是否存在环;
2,可以用队列(或者栈)保存入度为0的点,避免每次遍历所有点。这只需要每次更新连接点的入度即可。
3,拓扑排序其实是给定了结点的一组偏序关系。
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- #git 使用笔记
- angular工作原理
- copy constructor, assignment, global
- 【JAVA】static 修饰的静态成员变量,静态成员函数及静态代码块
- c风格字符串的赋值方式
- 拓扑排序
- shader几种变量
- Junit学习笔记之一:junit的安装和测试原则
- Hierarchy Viewer使用详解
- sizeOf计算空间大小的总结
- HDU 1711 Number Sequence(KMP)
- NOJ 1323 穷举n位二进制数
- 指针的知识点
- 文章标题