90 likes | 244 Views
Lecture 37. CSE 331 Nov 4, 2009. Homework stuff. (Last!) HW 10 at the end of the lecture. Solutions to HW 9 on Monday. Graded HW 9 on Wednesday. http://xkcd.com/336/. Weighted Interval Scheduling. Input: n jobs ( s i ,t i ,v i ).
E N D
Lecture 37 CSE 331 Nov 4, 2009
Homework stuff (Last!) HW 10 at the end of the lecture Solutions to HW 9 on Monday Graded HW 9 on Wednesday http://xkcd.com/336/
Weighted Interval Scheduling Input: n jobs (si,ti,vi) Output: A schedule S s.t. no two jobs in S have a conflict Goal: max Σj in S vj Assume: jobs are sorted by their finish time
Property of OPT OPT(j) = max {vj + OPT( p(j) ), OPT(j-1)}
A recursive algorithm M-Compute-Opt(j) = OPT(j) M-Compute-Opt(j) If j = 0 then return 0 If M[j] is not null then return M[j] M[j] = max {vj + M-Compute-Opt( p(j) ), M-Compute-Opt( j-1 ) } return M[j] Run time = O(# recursive calls)
Bounding # recursions M-Compute-Opt(j) O(n) overall If j = 0 then return 0 If M[j] is not null then return M[j] M[j] = max {vj + M-Compute-Opt( p(j) ), M-Compute-Opt( j-1 ) } return M[j] Whenever a recursive call is made an M value of assigned At most n values of M can be assigned
Recursion+ memory = Iteration Iteratively compute the OPT(j) values Iterative-Compute-Opt M[0] = 0 For j=1,…,n M[j] = max {vj + M[p(j)], M[j-1] } M[j] = OPT(j) O(n) run time
Reading Assignment Sec 6.1, 6.2 of [KT]