150 likes | 429 Views
CSCI 6212 Design and Analysis of Algorithms Dynamic Programming. Dr. Juman Byun The George Washington University. Please drop this course if you have not taken the following prerequisite. Sometimes enthusiasm alone is not enough. CSci 1311: Discrete Structures I (3)
E N D
CSCI 6212 Design and Analysis of AlgorithmsDynamic Programming • Dr. Juman Byun • The George Washington University • Please drop this course if you have not taken the following prerequisite. Sometimes enthusiasm alone is not enough. • CSci 1311: Discrete Structures I (3) • CSci 1112: Algorithms and Data Structures (3)
n=4 Example: Rod Cutting
n=4 Example: Rod Cutting Maximum Revenue, r4 ?
rn when n=4 ? $10 $9 $1 $8 $5 $5 $8 $1 $1 $1 $5 $1 $5 $1 $5 $1 $1 $1 $1 $1 $1
Notation $10 $5 $5 4-inch rod into 2 pieces Decomposition: 4 = 2 + 2 Maximum Revenue: r4 = $5 + $5
Notation rn n-inch rod into k pieces Decomposition: n = i1 + i2 + … + ik Maximum Revenue:
r1 + rn-1 Uncut Rod of length n pn General Procedure to Find Optimal Rod Cutting Cut Revenue Pick the largest r2 + rn-2 rn-2 + r2 rn-1 + r1
Recursive Top-Down • Cut-Rod(p,n) • if n == 0 • return 0 • q = ∞ • for i = 1 to n • q = max(q,p[i] + Cut-Rod(p, n - i ) ) • return q
vs Divide-and-conquer • Similarity • to divides problems into subproblems • Difference • subproblems overlap
Momoized-Cut-Rod • Memoized-Cut-Rod(p,n) • let r[0..n] be a new array • for i = 0 to n • r[i] = -∞ • return Memoized-Cut-Rod-Aux(p,n,r)
Momoized-Cut-Rod-Aux • Momoized-Cut-Rod-Aux(p,n) • if r[n] >= 0 • return r[n] • if n == 0 • q = 1 • else q = -∞ • for i = 1 to n • q = max(q,p[i]+Memoized-Cut-Rod-Aux(pn,n-i,r)) • r[n] = q • return q
Bottom-Cut-Rod • Bottom-Up-Cut-Rod(p,n) • let r[0..n] be a new array • r[0] = 0 • for j = 1 to n • q = -∞ • for i = 1 to j • q = max(q, p[i] + r[j-i]) • r[j] = q • return r[n]