Lecture 38 CSE 331 Dec 3, 2010
A new grading proposal Towards your final score in the course MAX ( mid-term as 25%+ finals as 40%, finals as 65%) me any objections (or support) by Monday, Dec 6, noon Individual choice for every student
Homework stuff HW 10 posted Graded HW 9 pickups: my office hours today Jeff/Alex next week
Weighted Interval Scheduling Input: n jobs (s i,t i,v i ) Output: A schedule S s.t. no two jobs in S have a conflict Goal: max Σ j in S v j Assume: jobs are sorted by their finish time
Property of OPT OPT(j) = max { v j + OPT( p(j) ), OPT(j-1) }
A recursive algorithm M-Compute-Opt(j) If j = 0 then return 0 M[j] = max { v j + M-Compute-Opt( p(j) ), M-Compute-Opt( j-1 ) } If M[j] is not null then return M[j] return M[j] M-Compute-Opt(j) = OPT(j) Run time = O(# recursive calls)
Bounding # recursions M-Compute-Opt(j) If j = 0 then return 0 M[j] = max { v j + M-Compute-Opt( p(j) ), M-Compute-Opt( j-1 ) } If M[j] is not null then return M[j] return M[j] Whenever a recursive call is made an M value of assigned At most n values of M can be assigned O(n) overall
Property of OPT OPT(j) = max { v j + OPT( p(j) ), OPT(j-1) } Given OPT(1), …, OPT(j-1), one can compute OPT(j) Given OPT(1), …, OPT(j-1), one can compute OPT(j)
Recursion+ memory = Iteration Iteratively compute the OPT(j) values M[0] = 0 M[j] = max { v j + M[p(j)], M[j-1] } For j=1,…,n Iterative-Compute-Opt M[j] = OPT(j) O(n) run time
Reading Assignment Sec 6.1, 6.2 of [KT]
When to use Dynamic Programming There are polynomially many sub-problems Optimal solution can be computed from solutions to sub-problems There is an ordering among sub-problem that allows for iterative solution Richard Bellman
Shortest Path Problem Input: (Directed) Graph G=(V,E) and for every edge e has a cost c e (can be <0) t in V Output: Shortest path from every s to t s t Shortest path has cost negative infinity Assume that G has no negative cycle
Today’s agenda Dynamic Program for shortest path
May the Bellman force be with you