数据结构期末复习-----拓扑排序

1.什么是拓扑排序:

把AOV网络中的各顶点按照它们相互之间的优先关系排列成一个线性序列的过程就做拓扑排序。(看这里是不是有点懵,因为你可能不知道什么是AOV网络)。
AOV网络: 用顶点表示活动,用弧表示活动之间的优先关系的称为顶点表示活动的网(Acitivety On Vertex network)简称AOV网。(注意: AOV为有向图,且不允许有回路)


上面可能就不是人话,用我自己的话来说就是,一个有向图中的弧的起点是弧终点的先决条件,按照这些先决条件来把各节点进行排序的过程就是拓扑排序。
在这里插入图片描述
就像上图中的这些节点,C1是C2,C4等节点的先决条件,我们按照这些先决条件把各节点线性排序的过程就是拓扑排序。

2.拓扑排序的实现过程:
  • 我们从图中选择没有先驱节点的节点将其输出
  • 然后从图中删除该结点并删除以该结点为起点的弧
  • 不断重复上面的过程,知道图中所有节点都输出,或不存在无先驱节点的节点为止。
    在这里插入图片描述
    (图中在进行输出节点1,和删除以节点1为起点的弧的过程)


    上面是我们的大致思路,但实际的操作过程不可能是我们用橡皮檫一个一个节点,一个一个弧的删除。
    算法实现:
  • 以邻接表作为储存结构
  • 把邻接表中的所有入读为零的系欸但入栈,
  • 栈非空时,输出栈顶元素 V,并退栈,在邻接表中查找结点 V 的直接后继 V1 ,并将V1的入度数减一,若 V1 的入度为0,则将 V1 入度
  • 重复上述步骤直至栈空为止,若栈空时输出的顶点个数不为 N,则说明该有向图有环,若输出顶点数为N,则说明拓扑排序结束。
    在这里插入图片描述
    就像上图中显示的这样,初始我们将入度为0的系欸但1和6入栈,后面就会取出结点6,然后遍历6连接的链表,将5和4的入度数减一,判断结点的入度数是否为0,为0则入栈,不为零则会从栈中接着取。就是这样不断重复两个步骤。
3.关键路径:

上面引入了AOV网的概念,这里与之相关的还有一个关键路劲的概念。
关键路径: AOV网络中路径长度最长的路径。(可能有多条)
在这里插入图片描述
图中加黑的路径即为该图的关键路径。
关键路径的长度就是我们如果要完成所有结点代表的任务,所需要的时间。(任务可以多线同时进行)
关键活动: 和关键路径相关的定义有一个关键活动。有两个等价定义。
①稍微增加即会导致整个项目完工时间增加的活动
②包含于某天关键路径上的活动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值