数据结构之图(九)——拓补排序

  • 有向无环图:无环的有向图,简称DAG图(Directed Acycline Graph)。
    在这里插入图片描述
    有向无环图常用来描述一个工程或系统的进行过程。(通常把计划、施工、生产、程序流程等当成是一个工程)
    一个过程可以分为若干个子工程,只要完成了这些子工程,就可以导致整个过程的完成。
  • 两种表示法:
    • AOV网:用一个有向图表示一个工程的各子工程及其相互制约的关系,其中以顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表示活动的网,简称AOV网。——解决拓补排序问题。
    • AOE网:用一个有向网表示一个工程的各子工程及其相互制约的关系,以弧表示活动,以顶点表示活动的开始或结束事件,称这种有向图为边表示活动的网,简称AOE网。——解决关键路径问题。


拓补排序

  • 例子: 排课表问题
    在这里插入图片描述
    上图,用顶点表表示课程,用边表示各课程间的先后关系,以此来构成一张AOV网。

  • 特点:

    • 若从i到j有一条有向路径,则i是j的前驱;j是i的后继。
    • &lt; i , j &gt; &lt;i,j&gt; <i,j>是网中有向边,则i是j的直接前驱,j是i的直接后继。
    • AOV网中不允许有回路,因为如果有回路存在,则表明某项活动以自己为先决条件,显然这是荒谬的。
  • 如何判断AOV网中是否有回路?——拓补排序。

  • 拓补排序定义: 在AOV网没有回路的前提下,我们将全部活动排成一个线性序列,使得若AOV网中有弧 &lt; i , j &gt; &lt;i,j&gt; <i,j>存在,则在这个序列中,i一定排在j的前面,具有这种性质的线性序列称为拓补有序序列相应的拓补有序排序的算法称为拓补排序。

  • 拓补排序的方法:

    • 在有向图中选一个没有前驱的顶点且输出之。
    • 从图中删除该顶点和所有以它为尾的弧。
    • 重复上述两步,直至全部顶点已输出;或者当图中不存在无前驱的顶点为止。
      在这里插入图片描述
      一个AOV网的拓补序列不是唯一的。
  • 检测AOV网中是否存在环的方法:
    对有向图构造其顶点的拓补有序序列,若网中所有顶点都在它的拓补有序序列中,则该AOV网必定不存在环。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值