求解任务集最小调度时长:任务调度时长计算技术求助
搞懂这个任务总时长的计算逻辑
嘿,我来帮你把这个问题掰明白~
首先先看你给出的Prolog定义代码:
duration(a,5). duration(b,7). duration(c,3). prereqs(a,[]). prereqs(b,[]). prereqs(c,[b]).
这段代码其实是在定义两个核心规则:
duration(任务, 时长):每个任务的单独耗时——a要5单位时间,b要7,c要3。prereqs(任务, 前置任务列表):任务的启动条件——a和b没有前置任务,一上来就能启动;但c必须等b做完才能开始。
接下来看你执行的查询?- len([a,b,c],Time).得到Time=10,这背后的逻辑是这样的:
题目里明确说了所有任务同时启动,但c因为有依赖限制,没法真的和a、b一起启动,得等b完成才行。我们来捋一遍时间线:
- 时间0:a和b同时启动,c因依赖b暂未启动。
- 时间5:a完成,b仍在执行(它还需要2单位时间)。
- 时间7:b完成,c随即启动。
- 时间10:c完成(7+3=10),此时所有任务都结束了。
任务集的总时长,看的是最后一个完成的任务的结束时间,这里最晚结束的是c,在10单位时间点完成,所以总时长就是10啦。
内容的提问来源于stack exchange,提问作者Ben Cham
相关产品推荐
相关产品推荐

