List scheduling
From Wikipedia, the free encyclopedia
List scheduling is a greedy algorithm for Identical-machines scheduling. The input to this algorithm is a list of jobs that should be executed on a set of m machines. The list is ordered in a fixed order, which can be determined e.g. by the priority of executing the jobs, or by their order of arrival. The algorithm repeatedly executes the following steps until a valid schedule is obtained:
- Take the first job in the list (the one with the highest priority).
- Find a machine that is available for executing this job.
- If a machine is found, schedule this job on that machine.
- Otherwise (no suitable machine is available), select the next job in the list.
Suppose there are five jobs with processing-times {4,5,6,7,8}, and m=2 processors. Then, the resulting schedule is {4,6,8}, {5,7}, and the makespan is max(18,12)=18; if m=3, then the resulting schedule is {4,7}, {5,8}, {6}, and the makespan is max(11,13,6)=13.
Performance guarantee
The algorithm runs in time , where n is the number of jobs. The algorithm always returns a partition of the jobs whose makespan is at most times the optimal makespan.[1] This is due to the fact that both the length of the longest job and the average length of all jobs are lower bounds for the optimal makespan. The algorithm can be used as an online algorithm, when the order in which the items arrive cannot be controlled.