拓扑序列(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的顶点,

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

被折叠的 条评论
为什么被折叠?



