码迷,mamicode.com
首页 > 其他好文 > 详细

多机调度问题

时间:2017-04-12 20:29:58      阅读:492      评论:0      收藏:0      [点我收藏+]

标签:strong   加工   复杂   好的   作业   独立   策略   顺序   机器   

【问题】

设有n个独立的作业{1,2,3,...,n},由m台相同的机器进行加工处理。作业i所需的处理时间为ti。现约定,任何作业可以在任何一台机器上加工处理,但未完工前不允许中断处理。任何作业不能拆分成更小的子作业。多机调度问题要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。

【算法分析】

这个问题是一个NP完全问题,到目前为止还没有有效的解法。对于这一类问题,用贪心选择策略有时可以设计出较好的近似算法。

采用最长处理时间作业优先的贪心选择策略可以设计出解多机调度问题的较好的近似算法。按此策略,当n≤m时,只要将机器i的[0,ti]时间区间分配给作业i即可。当n>m时,首先将n个作业依其所需的处理时间从大到小排序。然后依此顺序将作业分配给空闲的处理机。

【代码】

【时间复杂度】

当n≤m时,算法Greedy需要O(1)时间。

当n>m时,排序耗时O(nlogn)。初始化堆需要O(m)时间。关于堆的DeleteMin和Insert运算共耗时O(nlogm),因此算法Greedy所需的计算时间为

O(nlogn+nlogm)=O(nlogn)

 

多机调度问题

标签:strong   加工   复杂   好的   作业   独立   策略   顺序   机器   

原文地址:http://www.cnblogs.com/wxgblog/p/duojidiaoduwenti.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!