关于网络时间传播的求解思路(工作流程时间计算)

本文详细介绍了如何在已知逻辑关系和工作时长的作业流程图中,通过面向对象的方法确定合理的结点开始时间表。包括确认流程图无逻辑问题、使用传播机制调整时间表直至稳定,以及考虑人为约束以解决资源冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一个已知逻辑关系(包括先后关系、同时开始、同时结束)的作业流程图中,并且知道每一个结点的工作时长。如果求出一张合理的结点开始时间表?

首先,确认流程图不存在逻辑问题。1,不存在逻辑回路,否则会导致作业陷入循环无法跳出。2,不存在分离图,即不存在不连通的情况,否则时间无法保证只有一个开始点。

在此前提下,我们利用面向对象的思想,去思考开始时间的确定。对于一个工作A来说,A的开始时间受到其前置工作和同等关系(同时开始、同时结束),三种关系的工作影响。这种思路是从A的入口处进行思考。另外一个角度,就是从出口处去思考,即A的开始时间改动之后,会影响与其相关的工作,如后置工作、同时开始工作和同时结束工作。

因此,用后面的思维,则当前只用考虑当前的工作队后面工作的影响,而不是去考虑当前的工作被谁影响。

构造算法的思路就是传播的机制,只要当前点的时间有变动,则必然影响与其相关的点的时间的变动。当所有的震动都停止,那么就可以得出合理的时间。

为什么能够保证此种震荡能够停止,而不是死循环?

因为,我们已经保证了图中不存在回路,因此不会有一种传播途径是走不到头的。

在此基础上,如果再加上一个特殊约束,即人为的对某一个工作的开始时间进行强制设置。则该人为时间移动是要在该工作最早开始时间之后,即可能因为某种资源约束,将工作时间进行强制后延。

在上述情况中,我们只需要在每一个工作中设置一个“最早开始时间”属性即可。因为所有工作都是可以通过无限延长开始时间来解决资源冲突的问题的。只有在整个工程的完工时间受到限制,,或者某一个工作有完工时间限制的情况下,才需要添加最晚结束时间属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值