来自:http://topic.csdn.net/u/20090504/21/1992403a-69b0-4a97-ada5-4ef8153f2078.html?seed=1381913772
--
假设有一台机器,以及在此机器上处理的n个作业a1,a2,...,an的集合。处理作业aj所需的时间为tj,作业aj的完成带来的收益为pj,作业 aj完成的最后期限为dj。机器在一个时刻只能处理一个作业,而且如果某作业被处理,那么一定要在连续的时间内进行处理。如果某作业aj在最后期限dj之 前完成,则获得收益pj,若在最后期限之前没有完成,则没有收益。请给出一个算法,来寻找能获得最大收益的调度,假设所有作业所需的处理时间都为整数。
解:
假设数据如下:
a1 | a2 | a3 |
a4 |
a5 |
a6 |
a7 |
|
---|---|---|---|---|---|---|---|
t | 10 | 8 |
5 |
7 |
4 |
2 |
7 |
p | 5 | 4 |
9 |
4 |
5 |
1 |
3 |
d | 10 | 39 |
50 |
47 |
36 |
11 |
23 |
法一(近似算法):
思路:每次对剩余作业重新计算优先级,选取优先级最高者投入处理。直至所有作业处理完毕。
优先级公式为prio=p/(d-currentTim