On to a new section! This is the “Sequencing and Scheduling” section of the appendix. The first problem is a bit weird because I think it appears with a differnt name elsewhere in G&J.

**The problem: **Sequencing with Release Times and Deadlines. This is problem SS1 in the appendix.

**Description: **Given a set of tasks, where each task t has a “release time” r(t), a “deadline” d(t), and a length(t), all positive integers, can we create a one-processor feasible schedule for these tasks that meets all deadlines?

The definition of “feasible” is pretty straightforward:

- No task can start before its release time.
- No two tasks can be running at the same time (and there is no preemption, so once a task starts running, it must complete)
- All tasks finish before (or equal to) their deadline.

**Example: **Here’s an example that will relate to the reduction:

Suppose I have 5 tasks: The first 4 tasks are similar: All of them start at time 1, all of them have a deadline at time 11, and the lengths are 1,2,3, and 4. Our fifth task starts at time 5, has a length of 1, and a deadline of 6. (So every feasible schedule must have this task own the processor between times 5 and 6)

A feasible schedule would be: {1,4,5,2,3}. 5 minutes of tasks before the 5th task, then 5 minutes of tasks afterward.

**Reduction: **Like I said above, I think this equivalent to the G&J “Sequencing Within Intervals” problem- at least I can’t see a difference. The reduction for that problem is on page 70 of the G&J book, and it’s pretty elegant.

We reduce from Partition. Let B = the sum of all elements in the Partition instance. Each element in the set will become a task with starting time 1, deadline B+1, and a length equal to the value of the set element. We have one extra task that is released at time B/2, has a length of 1, and a deadline of B/2 + 1 (this is like our 5th task in the example above).

The idea is that the only way to fit all of the tasks feasibly is to have some subset of the tasks start at time 1 and take (collectively) exactly B/2 time, then we have our 1 extra task, then we fill the time from B/2+1 to B+1 with the rest of the tasks (which also take collectively exactly B/2+1 time). This forms a partition of B.

**Difficulty: **3. I think this is a good reduction students can come up with on their own. I like the slickness of the extra element to force the partition. If the problem we’re talking about is actually *different* than the one done in G&J, we’d have to see just where the differences lie.