Algorithm 胡会';s算法适用于一般单位长度的边DAG';s

Algorithm 胡会';s算法适用于一般单位长度的边DAG';s,algorithm,graph-theory,scheduler,Algorithm,Graph Theory,Scheduler,根据,当图形是树时,Hu的算法是最优的。一般单位长度边缘DAG是否会失败?在这种情况下,它不是最佳的原因是什么?有这样失败的例子吗?我花了一段时间,但我想出了几个反例。关键是让浅任务块包含大量任务,这在in树中是不允许的 假设最多可以并行执行k=10个任务。您有40个任务,标记为1到40 任务1~10阻塞任务11,任务11阻塞任务12。(这是一棵树上的树,到目前为止还不错。) 现在任务13阻塞任务14~40。(13有多个父母,违反规定) 在贪婪算法中,任务1~10已经在第一步完成,剩下13个仍然

根据,当图形是树时,Hu的算法是最优的。一般单位长度边缘DAG是否会失败?在这种情况下,它不是最佳的原因是什么?有这样失败的例子吗?

我花了一段时间,但我想出了几个反例。关键是让浅任务块包含大量任务,这在in树中是不允许的

假设最多可以并行执行k=10个任务。您有40个任务,标记为1到40

任务1~10阻塞任务11,任务11阻塞任务12。(这是一棵树上的树,到目前为止还不错。) 现在任务13阻塞任务14~40。(13有多个父母,违反规定)

在贪婪算法中,任务1~10已经在第一步完成,剩下13个仍然阻塞14~40个。步骤2只能处理11和13。现在,该算法不能在4个步骤中完成,这是您所能做的最好的


最佳的时间表是做13次,比如说1~9次,解锁14~40次,然后分4步完成,而不让任何工人空转。

我想出了一个边界线反例。假设你最多可以并行完成10项任务。有30项任务。必须在11点之前完成1~10点。12必须在13~30之前完成。如果你和胡一起走,运气不好,你可以先打1~10,然后打11和12,然后再打2轮。一共4轮。最好的方法是先做12次解锁13~30,所以第一轮你做12次,1~9次,第二轮10次,13~21次,然后第三轮11次,22~30次。这是3轮,没有浪费。不过我想看看更好的例子。