Consider the following job scheduling problem. There are
m machines, all identical. There are
n jobs, and job
j has size
pj. Each job must be assigned to exactly one machine. The
load of a machine is the sum of the sizes of the jobs that get assigned to it. The
makespan of an assignment of jobs is the maximum load of a machine; this is the quantity that we want to minimize. For example, suppose there are two machines and 4 jobs with sizes 7,8,5,6. Assigning the first two jobs to the first machine and the last two jobs to the second machine yields machine loads 15 and 11, for a makespan of 15. A better assignment puts the first and last jobs on the first machine and the second and third jobs on the second machine, for a makespan of 13.
Consider the following greedy algorithm. Iterate through the jobs j=1,2,3,…,n one-by-one. When considering job j, assign it to the machine that currently has the smallest load (breaking ties arbitrarily). For example, in the four-job instance above, this algorithm would assign the first job to the first machine, the second job to the second machine, the third job to the first machine, and the fourth job to the second machine (for a suboptimal makespan of 14).
Consider the following statement: for every such job scheduling instance, this greedy algorithm computes a job assignment with makespan at most c times that of an optimal (minimum-makespan) job assignment. Which of the following is the smallest choice of the constant c that makes this statement true?
[Hint: let A and B denote the average and maximum job sizes (A=(∑jpj)/m and B=maxjpj). Try to relate both the optimal solution and the output of the greedy algorithm to A,B.]