在处理器

时间:2017-06-29 16:45:47

标签: algorithm job-scheduling np-complete

根据iehrlich的评论(谢谢顺便说一句),术语"日程安排"可能会产生误导,这可能是一个更恰当的描述:给定一个矩阵N * N,找到一个行排列,它将产生最大的对角线和。

我有一组N个作业和N个处理器。所有处理器可以彼此不同。对于每个(作业,处理器)对,我在该处理器上运行该作业的性能。性能以IPC(每周期指令)测量。

我试图找到一个最大化IPC总和的时间表(1对1分配)。我可以通过查看所有可能的时间表来完成,使用O(N!),这是不可行的。

然后我尝试使用"稳定匹配"算法O(N ^ 2),使用IPC对工作负载进行排序'和处理器'喜好。它运行速度非常快,并且返回了一个不错的时间表,但不是最佳的。

我的问题是:

1)我真的希望稳定匹配算法能够返回最佳分配。有人能解释为什么会失败吗?到目前为止,我最好的猜测是不同(工作,处理器)对之间存在联系。我也尝试了与冷漠的稳定匹配"没有运气的算法。 我应该提一下,算法并没有因为我的实现而失败。我正在寻找一个更理论的答案,为什么算法本身无法解决这个问题。

2)你知道我可以使用的算法吗?甚至还存在吗?

1 个答案:

答案 0 :(得分:2)

稳定匹配是错误的算法的原因是你可以找到匹配的地方,其中一对处理器每个人都喜欢彼此的工作,但其中一个工作更喜欢它所在的处理器。切换会让人变得更糟,所以这种匹配是稳定的。

然而,在您的问题中,我们关心的是全球最优。如果一项工作的改进超过了另一项工作的改善程度,那么您需要切换。对于全局最优,稳定匹配是必要的,但还不够。

匈牙利算法实际上是找到全局最优解的正确算法。