![]() |
1
4
除非你有无限多的代理,这样一个兼容的代理在一个任务的所有前置任务完成后就可以使用,否则这是一个NP难问题。 < 我的书中也有类似的问题” Algorithms For Interviews " </无耻插头> 以下是本书中的问题和解决方案: 我们需要在M个教室安排N个讲座。有些讲座是其他讲座的先决条件。为了尽快完成所有的讲座,你将如何选择何时何地举行讲座? 解决方案: 我们有一套N个单元的课程和M个教室。只要不需要在同一教室同时进行两次讲课,并且满足所有优先约束条件,就可以同时进行讲课。 安排这些讲座以使完成时间最小化的问题被称为NP完全问题。 这个问题自然是用图来建模的。我们将讲座建模为顶点,从顶点u到顶点v有一条边,如果u是v的先决条件,那么图必须是非循环的,才能满足优先约束。 如果只有一个教室,我们可以简单地按拓扑顺序举办讲座,并在N个时间内完成N个讲座(假设每个讲座的持续时间为单位)。 我们可以通过观察以下情况来发展启发式:在任何时候,都有一组讲课的优先级约束得到满足。如果这个集合小于M,我们可以调度所有的集合;否则,我们需要选择要调度的子集。 子集选择可以基于几个度量:
我们也可以使用这些标准的组合来排序当前可调度的讲座。 如果候选集小于M,我们将安排所有的讲座;否则,我们将选择M个最关键的讲座,并安排那些讲座。我们的想法是,由于它们处于较长的依赖链的起点,因此应该提前安排。 该准则是启发式的,可能不会导致最优调度这是预期的,因为问题是NP完全的。也可以使用其他的启发式方法,例如,我们可以使用依赖于L课的讲课次数作为L课的临界性或标准的某种组合。 |
![]() |
2
2
维基百科关于 PERT |
![]() |
drainzerrr · Go锁定结构的一部分 7 年前 |
![]() |
Azim · 使用java 8并行处理图像 7 年前 |
|
user8005765 · Karatsuba-多项式与CUDA相乘 7 年前 |
![]() |
Adi · 并行读取大型XSLT字符串 7 年前 |
![]() |
A.J · 同时运行两个python文件 7 年前 |
![]() |
Kristofer · 当索引设置为私有时,如何确保访问缓冲区是私有的 7 年前 |