Loading in 5 sec....

CSCI 6212 Design and Analysis of Algorithms Dynamic ProgrammingPowerPoint Presentation

CSCI 6212 Design and Analysis of Algorithms Dynamic Programming

Download Presentation

CSCI 6212 Design and Analysis of Algorithms Dynamic Programming

Loading in 2 Seconds...

- 178 Views
- Uploaded on
- Presentation posted in: General

CSCI 6212 Design and Analysis of Algorithms Dynamic Programming

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

- 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

n=4

Maximum Revenue, r4 ?

$10

$9

$1

$8

$5

$5

$8

$1

$1

$1

$5

$1

$5

$1

$5

$1

$1

$1

$1

$1

$1

$10

$5

$5

4-inch

rod into 2 pieces

Decomposition:

4 = 2 + 2

Maximum Revenue:

r4 = $5 + $5

rn

n-inch

rod into k pieces

Decomposition:

n = i1 + i2 + … + ik

Maximum Revenue:

r1 + rn-1

Uncut Rod of length n

pn

Cut

Revenue

Pick the largest

r2 + rn-2

rn-2 + r2

rn-1 + r1

- 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

- Similarity
- to divides problems into subproblems
- Difference
- subproblems overlap

- 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(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-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]