Greedy #2: Coin Changing
Greedy #3: Fractional Knapsack Problem
Greedy #4: Breakpoint Selection
Greedy #5: Huffman Codes
Greedy #6: Scheduling to Minimize Lateness
Greedy #7: Task-Scheduling
To yield an optimal solution, the problem should exhibit
1. Greedy-Choice Property : making locally optimal (greedy) choices leads to a globally optimal solution
2. Optimal Substructure : an optimal solution to the problem
contains within it optimal solutions to subproblems
Input: a finite set 𝑆 = 𝑎
1, 𝑎
2, … , 𝑎
𝑛of 𝑛 tasks, their processing time 𝑡
1, 𝑡
2, … , 𝑡
𝑛, and integer deadlines 𝑑
1, 𝑑
2, … , 𝑑
𝑛
Output: a schedule that minimizes the maximum lateness
Job 1 2 3 4
Processing Time (𝑡𝑖) 3 5 3 2
Deadline (𝑑𝑖) 4 6 7 8
𝑎4 𝑎1 𝑎3 𝑎2
0 2 5 8 13
Lateness 0 1 1 7
Let a schedule 𝐻 contains 𝑠 𝐻, 𝑗 and 𝑓 𝐻, 𝑗 as the start time and finish time of job 𝑗
𝑓 𝐻, 𝑗 − 𝑠 𝐻, 𝑗 = 𝑡𝑗
Lateness of job 𝑗 in 𝐻 is 𝐿 𝐻, 𝑗 = max 0, 𝑓 𝐻, 𝑗 − 𝑑𝑗
The goal is to minimize max
𝑗
𝐿 𝐻, 𝑗 = max
𝑗
0, 𝑓 𝐻, 𝑗 − 𝑑
𝑗
Idea
Shortest-processing-time-first w/o idle time?
Earliest-deadline-first w/o idle time?
Scheduling to Minimize Lateness Problem
Input: 𝑛 tasks with their processing time 𝑡1, 𝑡2, … , 𝑡𝑛, and deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 Output: the schedule that minimizes the maximum lateness
Practice: prove that any schedule w/ idle is not optimal
Idea
Shortest-processing-time-first w/o idle time?
Job 1 2
Processing Time (𝑡𝑖) 1 2
Deadline (𝑑𝑖) 10 2
𝑎1 𝑎2
0 1 3
Lateness 0 1
𝑎2 𝑎1
0 2 3
Lateness 0 0
Idea
Earliest-deadline-first w/o idle time?
Greedy algorithm
Scheduling to Minimize Lateness Problem
Input: 𝑛 tasks with their processing time 𝑡1, 𝑡2, … , 𝑡𝑛, and deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 Output: the schedule that minimizes the maximum lateness
Min-Lateness(n, t[], d[])
sort tasks by deadlines s.t. d[1]≤d[2]≤ ...≤d[n]
ct = 0 // current time for j = 1 to n
assign job j to interval (ct, ct + t[j]) s[j] = ct
f[j] = s[j] + t[j]
Greedy choice: first select the task with the earliest deadline
Proof via contradiction
Assume that there is no OPT including this greedy choice
If OPT processes 𝑎1 as the 𝑖-th task (𝑎𝑘), we can switch 𝑎𝑘 and 𝑎1 into OPT’
The maximum lateness must be equal or lower, because 𝐿 OPT′ ≤ 𝐿 OPT
Scheduling to Minimize Lateness Problem
Input: 𝑛 tasks with their processing time 𝑡1, 𝑡2, … , 𝑡𝑛, and deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 Output: the schedule that minimizes the maximum lateness
𝑎𝑘 𝑎1 L(OPT, k)
𝑎1 𝑎𝑘 L(OPT’, 1) L(OPT’, k)
L(OPT, 1) OPT
OPT’
If 𝑎𝑘 is not late in OPT’: If 𝑎𝑘 is late in OPT’:
There is an optimal scheduling w/o inversions given 𝑑
1≤ 𝑑
2≤ ⋯ ≤ 𝑑
𝑛 𝑎𝑖 and 𝑎𝑗 are inverted if 𝑑𝑖 < 𝑑𝑗 but 𝑎𝑗 is scheduled before 𝑎𝑖
Proof via contradiction
Assume that OPT has 𝑎𝑖 and 𝑎𝑗 that are inverted
Let OPT’ = OPT but 𝑎𝑖 and 𝑎𝑗 are swapped
OPT’ is equal or better than OPT, because 𝐿 OPT′ ≤ 𝐿 OPT
Scheduling to Minimize Lateness Problem
Input: 𝑛 tasks with their processing time 𝑡1, 𝑡2, … , 𝑡𝑛, and deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 Output: the schedule that minimizes the maximum lateness
𝑎𝑗 𝑎𝑖
L(OPT, j)
𝑎𝑖 𝑎𝑗
L(OPT’, i) L(OPT’, j) L(OPT, i) OPT
OPT’
If 𝑎𝑗 is not late in OPT’: If 𝑎𝑗 is late in OPT’: ……
Optimal ……
Solution
Greedy Choice
Subproblem Solution
= +
Textbook Chapter 16.5 – A task-scheduling problem as a matroid
Input: a finite set 𝑆 = 𝑎
1, 𝑎
2, … , 𝑎
𝑛of 𝑛 unit-time tasks, their corresponding integer deadlines 𝑑
1, 𝑑
2, … , 𝑑
𝑛(1 ≤ 𝑑
𝑖≤ 𝑛), and nonnegative penalties 𝑤
1, 𝑤
2, … , 𝑤
𝑛if 𝑎
𝑖is not finished by time 𝑑
𝑖
Output: a schedule that minimizes the total penalty
Job 1 2 3 4 5 6
Deadline (𝑑𝑖) 1 2 3 4 4 6
Penalty (w𝑖) 30 60 50 20 70 10
𝑎2 𝑎3 𝑎6 𝑎5
0 n
Penalty 30
𝑎7 𝑎1 𝑎4
20
Let a schedule 𝐻 is the OPT
A task 𝑎𝑖 is late in 𝐻 if 𝑓 𝐻, 𝑖 > 𝑑𝑗
A task 𝑎𝑖 is early in 𝐻 if 𝑓 𝐻, 𝑖 ≤ 𝑑𝑗
We can have an early-first schedule 𝐻′ with the same total penalty (OPT)
𝑎2 𝑎3 𝑎6 𝑎5 16
Penalty 20
𝑎7 𝑎4
Task 1 2 3 4 5 6 7
𝑑𝑖 1 2 3 4 4 4 6
w𝑖 30 60 40 20 50 70 10
𝑎1 30 𝑎2 𝑎3 𝑎6 𝑎5
0 n
Penalty 30
𝑎7 𝑎1 𝑎4
20
𝐻′
𝐻
If the late task proceeds the early task, switching them makes the early one earlier and late one still late
Rethink the problem: “maximize the total penalty for the set of early tasks”
Idea
Largest-penalty-first w/o idle time?
Earliest-deadline-first w/o idle time?
Task-Scheduling Problem
Input: 𝑛 tasks with their deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 and penalties 𝑤1, 𝑤2, … , 𝑤𝑛 Output: the schedule that minimizes the total penalty
𝑎2 𝑎3 𝑎6 𝑎5
0 n
Penalty 20
𝑎7 𝑎4 𝑎1 30
Task 1 2 3 4 5 6 7
𝑑𝑖 1 2 3 4 4 4 6
w𝑖 30 60 40 20 50 70 10
60 40 70 50 10
Greedy choice: select the largest-penalty task into the early set if feasible
Proof via contradiction
Assume that there is no OPT including this greedy choice
If OPT processes 𝑎𝑖 after 𝑑𝑖, we can switch 𝑎𝑗 and 𝑎𝑖 into OPT’
The maximum penalty must be equal or lower, because 𝑤𝑖 ≥ 𝑤𝑗
18
𝑎𝑗
0 n
Penalty 𝑤𝑖
𝑎𝑖 𝑑𝑖
𝑎𝑖 Penalty
𝑎𝑗 𝑤𝑗
Greedy algorithm
Task-Scheduling Problem
Input: 𝑛 tasks with their deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 and penalties 𝑤1, 𝑤2, … , 𝑤𝑛 Output: the schedule that minimizes the total penalty
Task-Scheduling(n, d[], w[])
sort tasks by penalties s.t. w[1] ≥ w[2] ≥ … ≥ w[n]
for i = 1 to n
find the latest available index j <= d[i]
if j > 0
A = A ∪ {i}
mark index j unavailable return A // the set of early tasks
Can it be better?
𝑎1 𝑎3
𝑎4 𝑎2
0 1 2 3 4 5 6 7
Total penalty = 30 + 20 = 50
20
𝑎7 𝑎5 𝑎6
30
“Greedy”: always makes the choice that looks best at the moment in the hope that this choice will lead to a globally optimal solution
When to use greedy
Whether the problem has optimal substructure
Whether we can make a greedy choice and remain only one subproblem
Common for optimization problem
Prove for correctness
Optimal substructure
Greedy choice property
Optimal Solution
Greedy Choice
Subproblem Solution
= +
Course Website: http://ada17.csie.org Email: ada-ta@csie.ntu.edu.tw
Important announcement will be sent to @ntu.edu.tw mailbox
& post to the course website