关于关键活动问题的一些理解,建议读一下

关键路径和关键活动问题最开始学的时候不是很容易,理解上可能有些晦涩,笔者想在这里帮助各位初学者深入理解

笔者想说一下自己对于事件与活动的定义的理解,可以这样想:如果有一个工程P,为了完成P,我们需要完成一系列的活动a1,…an,活动ai之间可能有着一定的相互依赖关系,即一些活动的发生依赖于另外一些活动的发生,但依赖不一定处处存在,可以有两个没关系的活动,那么他们可以同时进行,实际上也应该同时进行,我们不打算让故意拖延存在(也就是说两个可以同时进行的活动,人为的让一个活动就是不发生,如果这样做了,那工程可以无限拖延,这样的数据结构并不是一个恰当的场景),这样一来,笔者认为,工程粗略的看就是一些活动的集合,细致的看就是活动的集合上定义了序关系,事件不是孤立于活动的新概念,而是标志着一些活动已经完成,工程的一个阶段结束了的标志,所以笔者想再粗略的下一个定义,事件显然也是活动的集合,如果一些活动完成,那我们就说一个事件发生了,比如写代码这个事件,它由开启IDE,写内容,保存,关掉IDE这些活动组成。这里的定义其实数学意义是充足的,读者可以参考概率论里事件的定义

我想给出几个在王道书中截出来的图然后适当解释:

在这里插入图片描述

在这里插入图片描述
首先,关键路径是长度最长(权值之和最大)的路径,很多关键活动的考研题,用这句话,基本上可以很快解决,这句话也反映了很多的现实意义。当然笔者建议大题列表计算,然后用这句话验证,这样万无一失。

我们思考一个问题,我们准备出门,现在要化妆同时洗衣机里在洗外套,化妆要10分钟,洗衣服要35分钟,只有两件事都完成,才可以出门,那么,10分钟的时候可以出门吗,20分钟可以吗,显然35分钟外套洗好了,你才可以穿上外套出门,所以在我们同时做某些事情的时候,以最长时间作为事件的最终完成时间。这里有些东西值得思考,这里的工程是一个理想化的场景,那么我们要问,这些活动一定从同时刻开始并行执行吗?我可以一个活动一个活动单线程来做吗?即活动启动时间的柔性有多大,前者的答案是不一定,后者则是不可以。

比如我们有a1,a2,a3三个活动,我们让a1花的时间最长,设为T,在可以并行的前提下,我只用一个时间段T,就可以让a1,a2,a3都执行完,a1是刚好执行完,即a1从0时刻执行,T时刻完成,其他两个活动则体现了这个场景的柔性,a2,a3都可以在0时刻开始执行,但是最晚必须在T时刻结束,如果超出了T时刻,那这种任意安排活动的行为会把工程的完成时间任意推迟,场景也不再有意义。这里并不是有什么数学逻辑,而是现实要求,最长活动时间是T,其他活动能一开始完成最好,但是如果需要容错时间的话,只要保证T时刻随着最长活动完成,其他活动也完成就可以了。这就是最简易的全局布局上的性能优化,不管内部的活动我们可以采用什么办法加速,最外层的这种优化是既模式固定,而又理所应当。

这样一来,关于活动的最早开始时间和最迟开始时间应该自然就推出来了,之前说过,事件并不特殊,它是工程进行的一个阶段点,特别的,第一个事件是工程开始,最后一个事件是工程结束。那么事件的最早开始时间是指向事件的那些活动的完成时间的最大值,即那些活动都完成了,事件也就完成了。事件一旦完成,事件点引出的活动也就开始执行,所以这个时间也是活动的最早开始时间。

我们之前讨论过容错时间,这是个相对概念,容错时间是并行的几个活动中耗时最长的活动,给予其他活动的修整时间,比如我们可以对其他活动说,"最耗时间的活动的活动时间作为你们的尺度,你们尽管修整,但它一完成,你们也必须完成。"这样一来被容错的活动相对耗时最长的活动而言也就不是那么关键了,这就是笔者想说的关键活动,其他的成为普通活动。普通活动可以推迟一定的时间是因为大框架内有关键活动存在,我们去关注关键活动的时候,普通活动就可以修整一下,因为我们总是想着,关键活动完成了的话,其他普通活动也就完成了,工程的一个阶段也就完成了,事实确实如此,毕竟关键活动耗时最长。这样普通活动依据关键活动才可以推迟,进而有最早最迟的分别,那关键活动依靠不了别的东西,所以对于关键活动没有最早最迟的说法,换句话说,关键活动的最早开始时间等于最迟开始时间

那么很自然的,活动是链式进行的,关键活动在工程内处处存在(因为是根据时间大小判断关键活动,活动皆有其耗时),所以我们的关键活动可以成为一个链,贯穿工程始终,又因为每一个关键活动的耗时在自己的组内最长,所以这个链在工程中是耗时最长的分支,显然不一定唯一。

这样最迟开始时间这个问题就很好理解了,简单讨论一下,工程的完成时间被关键活动决定(这里也给出结论,关键路径权值之和就是工程耗时)没有最迟最早一说,
在这里插入图片描述
根据图片,普通活动最迟和关键活动同时完成,注意我们要的耗时是由0时刻累加,所以用工程总时间减普通活动时间就是普通活动的最迟开始时间(逆向计算)

其他概念读者可以根据理解自行推理,完全不再抽象。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值