拓扑排序
来源:互联网 发布:公司logo设计软件 编辑:程序博客网 时间:2024/05/20 11:24
1. 引言
有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环。常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度。拓扑排序是对DAG的顶点进行排序,使得对每一条有向边(u, v),均有u(在排序记录中)比v先出现。亦可理解为对某点v而言,只有当v的所有源点均出现了,v才能出现。
下图给出有向无环图的拓扑排序:
下图给出的顶点排序不是拓扑排序,因为顶点D
的邻接点E
比其先出现:
2. 算法原理与实现
拓扑排序的实现算法有两种:入度表、DFS,其时间复杂度均为
入度表
对于DAG的拓扑排序,显而易见的办法:
- 找出图中0入度的顶点;
- 依次在图中删除这些顶点,删除后再找出0入度的顶点;
- 然后再删除……再找出……
- 直至删除所有顶点,即完成拓扑排序
为了保存0入度的顶点,我们采用数据结构栈
(亦可用队列);算法的可视化可参看这里。
图用邻接表(adjacency list)表示,用数组inDegreeArray[]
记录结点的入度变化情况。C实现:
阅读全文
0 0
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 【拓扑排序】
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 拓扑排序
- 求大家别秀智商了:请给我的头像一顶圣诞帽@微信官方
- linux快捷操作
- 均数间的多重比较的方法的选择【转载】
- Yii2 实例管理
- Android asmack使用介绍
- 拓扑排序
- AI从业者需要应用的10种深度学习方法
- 用C语言开发一个BT下载软件(一) ------ BitTorrent协议 -1
- CentOS7 Shell脚本基础及补充
- [LeetCode] 199. Binary Tree Right Side View
- 在openwrt里面增加开机自启动程序
- Eclipse通过EGit插件提交多个项目到同一个仓库
- 清澄A1042. 矩形面积交
- Centos搭建持续集成(五)----安装JSvnAdmin管理平台