我有,例如,P线程和N> P任务使用前面提到的。我有一个与每个任务相关的正整数值,表示特定任务所暗示的工作量。
我想在P个线程中划分N个任务,这样如果我们考虑每个线程的“工作整数”的总和,它们将大致相同。
进行此类“调度”的一种天真但精确的方法必须考虑S(N,P)任务分区,其中S(N,P)是第二类的斯特林数(在实际中应该是不切实际的大) - 世界计算)。
问:有没有任何优质高效的近似算法来计算这种“负载均衡”的任务分区?答案 0 :(得分:0)
如果您只有2个处理器,则将任务划分为两个相同任务的问题称为partition problem。众所周知,它是NP难的。所以这可能表明找到最佳解决方案可能是一个难题。我只想要一个近似值,我会选择某种贪婪的算法:系统地将最大的剩余任务分配给工作量较少的线程。这将为您提供一种易于实现的算法,其时间复杂度为O(任务数*线程数)。