What a schedule can achieve #
The one semantic fact about job sequencing that a reduction into it needs: when every job carries the same deadline and its penalty equals its execution time, a schedule is nothing but a choice of the jobs that meet the deadline. Two halves:
DescriptiveComplexity.finsum_onTime_le– the jobs a schedule leaves on time weigh at most the deadline. They are exactly the jobs at or before the last of them, so their total execution time is that job's completion time, and that job is on time;DescriptiveComplexity.exists_schedule_onTime– conversely, any set of jobs weighing at most the deadline can be put first, by ordering the universe through the key “not chosen, then the ambient order” (DescriptiveComplexity.isLinOrd_of_key), and then all of it is on time.
Together they give DescriptiveComplexity.hasGoodSchedule_iff_exists_subset and, when
the jobs weigh twice the deadline and the bound is the deadline,
DescriptiveComplexity.hasGoodSchedule_iff_exists_half: the instance is a
yes-instance exactly when some set of jobs weighs exactly the deadline.
That last form is Partition's condition, which is why a reduction into job
sequencing can be built out of a balanced-split gadget – provided it also
writes the deadline, its double and the bound, which is what constrains the
gadget.
Sums over sets of jobs #
Completion times along a schedule #
Completion times grow along the schedule.
Dependency graph
With a common deadline, being on time is inherited backwards along the schedule: the on-time jobs form a prefix.
Dependency graph
The jobs a schedule leaves on time weigh at most the deadline: they are the jobs at or before the last of them, so their total execution time is that job's completion time.
Dependency graph
Putting a set of jobs first #
Any set of jobs weighing at most the deadline can be scheduled first, by ordering the universe through the key “not chosen, then the ambient order”. Everything chosen is then on time.
Dependency graph
The characterization #
A schedule is a choice of the jobs that meet the deadline: when all deadlines agree and each penalty is its job's execution time, the instance is a yes-instance exactly when some set of jobs fits in the deadline while the jobs it leaves out fit in the bound.
Dependency graph
The balanced form: when the jobs weigh twice the deadline and the bound is the deadline, a good schedule is a set of jobs weighing exactly the deadline. This is Partition's condition, and it is what a reduction into job sequencing has to produce – together with the deadline, its double and the bound, all three written in binary.