根据iehrlich的评论(感谢btw),术语“调度”可能是误导,这可能是一个更合适的描述:给定一个矩阵N * N,找到一个行排列,将产生最大的对角线总和。算法在处理器上调度作业
我有一组N个就业机会和N处理器。所有处理器可以彼此不同。对于每个(作业,处理器)对,我都具有在该处理器上运行该作业的性能。性能是在IPC(指令每周期)中测量的。
我试图发现最大化IPC的整体和时间表(1对1的分配)。我可以通过检查所有可能的时间表,用O(N!),这是不可行的。
我然后试图使用“稳定的匹配”算法O(N^2),使用所述的IPC到负载和处理器的偏好进行排序。它运行速度非常快,并返回一个体面的时间表,但不是最佳的时间表。
我的问题是:
1)我真的很期待稳定的匹配算法能够回到最佳分配。有人可以解释为什么它失败了吗?迄今为止,我最好的猜测是不同(工作,处理器)对之间存在关系。我也尝试了“无差别稳定匹配”算法,但没有运气。 我应该提到,算法不会因为我的实现而失败。我正在寻找更为理论上的答案,为什么算法本身无法解决这个问题。
2)你知道的算法,我可以使用这个的?有人甚至存在吗?
有一个完整的计算机科学分支。其实它最初来自生产管理。考虑阅读https://en.wikipedia.org/wiki/Scheduling_(计算)初学者 – iehrlich
谢谢,它看起来很有帮助。但是,在快速浏览它之后,它看起来像提供的所有算法都是启发式的,并且不能保证返回最佳时间表。 – prodromou
我说“对于初学者”是有原因的:)另外,你如何检查时间表是否最优? – iehrlich