|
 |
 |
 |
 |
 |
 |
procedure
F(n) returns integer {
|
|
R: array[0..n] of integer;
|
|
|
R[0] = 1; R[1] = 1;
|
|
|
for i = 2 to n do
|
|
|
R[i] = R[i-1] + R[i-2];
|
|
|
return R[n];
|
|
|
}
|
|
|
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
| • |
Instead
of recomputing F(5)
|
|
|
|
over
and over, we compute it
|
|
|
once
and remember it
|
|
|
| • |
This
is a simple example of
|
|
|
Dynamic
Programming
|
|
|
| • |
Analysis
|
|
|
|
– |
Time =
O(n)
|
|
|
|
– |
Space =
O(n)
|
|
|
| • |
Can
improve again to use
|
|
|
|
just
O(1) space
|
|
|
|
– |
How?
|
|
|
|