Greedy Algorithms (2)
Outline
• Greedy Algorithms
• Greedy #1: Activity-Selection / Interval Scheduling
• Greedy #2: Coin Changing
• Greedy #3: Fractional Knapsack Problem
• Greedy #4: Breakpoint Selection
• Greedy #5: Huffman Codes
• Greedy #6: Task-Scheduling
• Greedy #7: Scheduling to Minimize Lateness
Algorithm Design Strategy
• Do not focus on “specific algorithms”
• But “some strategies” to “design” algorithms
• First Skill: Divide-and-Conquer (各個擊破/分治)
• Second Skill: Dynamic Programming (動態規劃)
• Third Skill: Greedy (貪婪法則)
Greedy #6: Task-Scheduling
Textbook Exercise 16.2-2
Task-Scheduling Problem
• 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 7
Deadline (𝑑𝑖) 1 2 3 4 4 4 6
Penalty (w𝑖) 30 60 40 20 50 70 10
𝑎2 𝑎3 𝑎6 𝑎5
Penalty 30
𝑎7 𝑎1 𝑎4
20
Task-Scheduling Problem
• 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)
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 2
𝑎7 𝑎04
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 3
𝑎7 𝑎01 𝑎4
20
𝐻′
𝐻
If the late task proceeds the early task, switching them makes the early one earlier and late one still late
Possible Greedy Choices
• Rethink the problem: “maximize the total penalty for the set of early tasks”
• Greedy idea
• Largest-penalty-first w/o idle time?
• Earliest-deadline-first w/o idle time?
𝑎2 𝑎3 𝑎6 𝑎5
0 n
Penalty 2
𝑎7 𝑎04 𝑎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
Task-Scheduling Problem
Input: 𝑛 tasks with their deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 and penalties 𝑤1, 𝑤2, … , 𝑤𝑛 Output: the schedule that minimizes the total penalty
Prove Correctness
• 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 𝑤
𝑖≥ 𝑤
𝑗𝑎𝑗
0 n
Penalty 𝑤𝑖
𝑎𝑖 𝑑𝑖
𝑎𝑖
0 n
Penalty
𝑎𝑗 𝑑𝑖
𝑤𝑗
𝑤𝑖 ≥ 𝑤𝑘 for all 𝑎𝑘 in the early set Task-Scheduling Problem
Input: 𝑛 tasks with their deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 and penalties 𝑤1, 𝑤2, … , 𝑤𝑛 Output: the schedule that minimizes the total penalty
Prove Correctness
• Greedy algorithm
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?
Task-Scheduling Problem
Input: 𝑛 tasks with their deadlines 𝑑1, 𝑑2, … , 𝑑𝑛 and penalties 𝑤1, 𝑤2, … , 𝑤𝑛 Output: the schedule that minimizes the total penalty
Example Illustration
Job 1 2 3 4 5 6 7
Deadline (𝑑
𝑖) 4 2 4 3 1 4 6
Penalty (w
𝑖) 70 60 50 40 30 20 10
𝑎1 𝑎3
𝑎4 𝑎2
0 1 2 3 4 5 6 7
Total penalty = 30 + 20 = 50
2 𝑎7 𝑎5 𝑎06
30
Practice: how about the greedy algorithm using “earliest-deadline-first”
Greedy #7:
Scheduling to Minimize Lateness
Scheduling to Minimize Lateness
• 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
Scheduling to Minimize Lateness
• 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, 𝑓 𝐻, 𝑗 − 𝑑
𝑗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
Possible Greedy Choices
• Greedy idea
• Shortest-processing-time-first w/o idle time?
• Earliest-deadline-first w/o idle time?
Practice: prove that any schedule w/ idle is not optimal
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
Possible Greedy Choices
• 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
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
Possible Greedy Choices
• Idea
• Earliest-deadline-first w/o idle time?
• Greedy algorithm
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]
ct = ct + t[j]
return s[], f[]
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
Prove Correctness – Greedy-Choice Property
• 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 → 𝐿 OPT′ ≤ 𝐿 OPT exchange argument
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
Prove Correctness – Greedy-Choice Property
•
𝑎𝑘 𝑎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’:
Generalization of this property?
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
Prove Correctness – No Inversions
• 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 → 𝐿 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
Prove Correctness – No Inversions
•
𝑎𝑗 𝑎𝑖
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’:
……
……
The earliest-deadline-first greedy algorithm is optimal
Optimal Solution
Greedy Choice
Subproble m Solution
= +
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
Concluding Remarks
• “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
= +
Important announcement will be sent to
@ntu.edu.tw mailbox & post to the course website
Course Website: http://ada.miulab.tw Email: ada-ta@csie.ntu.edu.tw