On one machine, makespan minimisation has no real choice. The problem
asks for the shortest time to finish all jobs on one machine. If every job must be processed and there are no release times or precedence constraints, then any schedule without idle time is optimal. The makespan is just the total work:
With two identical machines, the question changes. The problem
must decide how to split the jobs between the two machines. Minimising makespan asks for the split whose larger side is as small as possible.
This hides 2-partition. Given a multiset
For each integer
Then there is a schedule on two identical machines with makespan at most
The direction from partition to schedule is direct: put the jobs from one subset on the first machine and the jobs from the other subset on the second machine. Both machines have load
The reverse direction is the important part. The total processing time is
So
For more machines, the same idea becomes
is strongly NP-hard by reductions from 3-partition.