公司最佳调度问题题

问题描述:假设有n个任务由k个并荇工作的机器来完成完成任务i需要的时间为Ti。试设计一个算法找出完成这n个任务的最佳调度使得完成全部任务的时间最早。算法设计:对任意给定的整... 问题描述:假设有n个任务由k个并行工作的机器来完成完成任务i需要的时间为Ti。试设计一个算法找出完成这n个任务的最佳调度使得完成全部任务的时间最早。
算法设计:对任意给定的整数n和k以及完成任务i需要的时间为Ti,i=12,3……n计算完成这n个任务的朂佳调度。

如果各机器运行速度相等换句话就是任务无论在哪台机器上运行完成时间都相等,则问题较简单

1 . 先将任务由大到小排序

2 . 计算n個任务需要的总时间和平均到k个机器上的时间

3 . 将大于平均时间的任务各分配一个机器找到最大完成时间

4 . 将其他任务顺序安排在一台机器仩,如果时间超出最大时间则把该任务交给下一个机器,下一个任务继续在这台机器上试安排直到所有任务都不能在小于最大完成时間的情况下安排

5 . 安排下一台机器直道所有任务安排完,

6 . 或有可能安排某(些)任务找不到小于最大完成时间 那么重新扫描各台机器使再加上该任务后时间最小按此方法安排万所有任物

数据结构采用链表比较合适,

K个机器k个链n个任务按大小顺序插入一个链表,安排后从任务链表中移动到机器链表中知道链表为空

这个问题的算法是贪心算法,具体证明我就没写出来了。

我写的代码复杂度是n^2,有一个排序是nlogn,喝一個2重for循环.

但是2重for循环可以简化为for+最小堆的维护所以最好的复杂度是NlogN,

但是懒得写最小堆了...

}

内容提示:最佳最佳调度问题题_汾支限界

文档格式:TXT| 浏览次数:485| 上传日期: 20:55:55| 文档星级:?????

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

}

我要回帖

更多关于 最佳调度问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信