7-11 关键活动(二)

7-11 关键活动

鉴于我开始的做法不太好,dfs遍历了起点和终点间的全部路径,虽然是可以找到关键路径的,但是还要去重之后才能得到结果。

于是尝试经典的关键路径算法: 

1、通过拓扑排序计算出每个节点的最早开始时间,以及一个拓扑序列S

2、反向遍历拓扑序列S计算出最晚开始时间

3、节点的最早开始时间 == 最晚开始时间, 说明这节点就是瓶颈了,也就是关键节点

 

计算最晚开始时间有一种替代方法,不需要保存步骤一中的拓扑序列S。

构造原图的反向邻接表, 将每条边反向。

从终点出发,根据反向的邻接表,拓扑排序一次。

 

获得了关键节点和拓扑序列S之后,如何计算全部关键路径?

可以dfs,但是从X节点, 在关键节点中找下一个 Y节点的时候, 需要判断 earliest[X] + length[X, Y]  == earliest[Y]

 

如下面的有向图, 关键节点是   1 2 3 4 5, 但是关键路径是1 3 4 2 5

节点A        节点B       边长

 

122
25500
132
343
427
451
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值