学习笔记——拓扑排序(Topological Sort)

拓扑排序是对有向无环图(AOV-网)进行排序的一种方法,其结果是顶点的线性序列,满足在序列中任意两个顶点Vi、Vj,如果在图中有一条从Vi到Vj的路径,则在序列中Vi必须排在Vj之前。基本思想包括选择无前驱的顶点输出并删除相关弧,重复该过程直至所有顶点都被输出,若输出顶点数少于图中顶点数则存在回路。拓扑排序算法可通过邻接矩阵或邻接表实现,其中邻接矩阵方法涉及找到值全为0的列,邻接表方法则关注入度为0的顶点。
摘要由CSDN通过智能技术生成

拓扑序列(Topological Sort):

  • AOV-网
  • AOV-网的特性
  • 拓扑序列
  • 拓扑排序的基本思想
  • 拓扑排序算法
AOV-网:

用顶点表示活动,用弧表示活动间的优先关系的有向无环图,称为顶点表示活动的图,简称为AOV-图。

AOV-网的特性:

1、先行关系具有可传递性
2、拓扑序列不是唯一的

拓扑序列:

在有向图G=(V,{E})中,V中顶点的线性序列称为拓扑序列。此序列必须满足:对序列中任意两个顶点Vi、Vj,在G中有一条从Vi到Vj的路径,则在序列中Vi必须排在Vj之前。

拓扑排序的基本思想:

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

拓扑序列算法:

1、基于邻接矩阵表示的存储结构:
A为有向图G的邻接矩阵,则有:
- 找G中无前驱的顶点——在A中找到值全为0的列
- 删除以 i 为起点的所有弧——将矩阵中i对应的行全部置为0
算法步骤:
(1)取1作为第一序号;
(2)找到一个未新编号的、值全为0的列 j,若找到则转(3);否则,若所有的列全部都编过号,拓扑排序结束;若所有的列未曾被编号,则该图中有回路;
(3)输出列号对应的顶点 j,新序号赋给所找到的列;
(4)将矩阵中 j 对应行全部置为0;
(5)新序号加1,转(2)
2、基于邻接表的存储结构:
入度为0的顶点即无前驱的顶点,因此我们可以附设一个存放各顶点入度的数组indegree[ ],于是有:
-找G中无前驱的顶点——查找indegree[i]为0的顶点Vi;
-删除以 i 为起点的所有弧——对链在顶点 i 后面的所有邻接顶点 k ,将对应的indegree[k]减1
(为了避免重复检测入度为0的顶点,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值