数据结构——拓扑排序

                                拓扑排序

       在有向图中,有一种特殊的图,叫作有向无环图,也就是从图中的任意一个节点出发,都不可能回到出发点。有向无环图这种模型也有一定的适用场景,比如说在工程领域,可以把工程的每个小过程建模成图中的节点,由于工程进行时是有方向的,因此要用有向图,工程的进行不能有死循环,否则工程可能会陷入这个死循环中永远也完不成。判断一个工程是否完成可以通过判断工程的如有向图是否是有向无环图来判断,如何来判断一个有向图是否是有向无环图呢?而工程中有最短完成时间,可以通过求关键路径来求出这个最短时间。
       抽象来看,根据有向无环图的特性,可以把有向图中是否有有向环的问题转换成是否可以生成拓扑序列的问题。拓扑序列是指对于图中的任意相连的两个节点<u,v>,由u指向v,那么在图的所有节点构造成的节点链中,u排列在v的前面。如果有向图中存在有向环a->b->c->a,那么{(1)a应该排在b的前面},{(2)a应该排在c的后面},{(3)b应该排在c的前面},由条件(2)和条件(3)可知a应该排在b的后面,这和条件(1)矛盾,因此有向图中如果存在有向环,那么不可能生成一个拓扑序列。这是证明存在有向环的有向图不可能生成拓扑序列,那么如何用算法来证明呢?
       在有向图中,如果一个节点不被其他节点所指,也就是这个节点的入度为0,那么这个节点一定不可能是有向环的一个节点,因此把这个节点从有向图中删去不会对图是否存在有向环产生影响。也就是说如果一个有向图中存在有向环,那么删去入度为0的节点不会破坏图中的有向环。那么就删除图中的所有入度为
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值