浅看拓扑序列
AOE:
有向无环图中的顶点表示活动或事件,有向边(弧)表示了事件发生的先后关系
注:(A---->B 这个为弧,A为弧尾,B为弧头)
拓扑序列:
给定一个包含一个有向图所有顶点的序列,如果图中任意两个顶点Vi到Vj有一条路径,且在该序列中vi排在vj的前面
注:该序列不唯一
应用:
判断图是否存在环(用一个计数器记录每次出栈或出队次数,小于顶点数则存在环)
求关键路径
算法步骤
1、对于每一个点用一个数组d[i]记录i号顶点的入度
2、一遍循环找到入度为0 的顶点入栈(队列)
3、循环:如果栈(队列)非空
{
取出栈顶(队首)t,输出(记录)
将领接表中以t为起点的边的终点的入度-1(相当于删除该顶点即它的所有出边)
如果该终点的入度为0 则入栈(入队)
}
注:手写数组队列时,整个过程结束后,队列从0到队尾所保存的就是拓扑序列
模板: