Você está na página 1de 17

Dynamic Programming

From An
Excel Perspective
Dynamic Programming From An Excel Perspective

Dynamic Programming
From An Excel Perspective

Ranette Halverson, Richard Simpson


Catherine Stringfellow

Department of Computer Science


Midwestern State University
Dynamic Programming From An Excel Perspective

Dynamic Programming

 A popular method for solving problems by breaking


them down into overlapping sub-problems that display
optimal substructure
Can be thought of as a top-down approach utilizing a
bottom-up evaluation
 Normally used to solve optimization problems
Dynamic Programming From An Excel Perspective

Excel

Generally taught in the freshman application classes


 Seldom taught to computer science majors
 In reality CS majors need to be able to use spreadsheets
 So what do we do?
Dynamic Programming From An Excel Perspective

Solution
 Do not need to teach the spreadsheet AT ALL
 Include spreadsheet usage in a few of their projects
and/or homework
 Spreadsheet usage includes
Graphing data collected via empirical analysis of two
algorithms.
 Rapidly construct mathematical tables for applications
 Simulating wave-front parallel algorithms
 Evaluating dynamic programming tables (the point of this
talk)
Dynamic Programming From An Excel Perspective

A Very Simple Example (used in Computer Science for


Science Majors)
The memo-ization of the recursive Fibonacci function.
Remember the complexity of the following?
int Fib( int n)
{
if (n<3) return 1
else return ( Fib(n-1)+Fib(n-2) );
}
Dynamic Programming From An Excel Perspective

Two well-known O(n) solutions

int FibMemo(int n,int * A){


int Fib( int n) if (A[n]!=0) return A[n];
{ else {
A=new int[n+1]; A[n]= FibMemo(n-1,A) + FibMemo(n-2,A);
A[1]=A[2]=1; return A[n];
for(int i=3 ; i<=n ; i++) }
A[i] = A[i-1] + A[i-2]; };
return A[n]; int Fib(int n)
{
}
int * A = new int[n+1] ;
// Pure Bottom up calculation using
for (int i=1;i<n+1;i++){ A[i]=0;}
// an array. The non array version is
A[1]=A[2]=1;
// not relative to our discussion.
return FibMemo(n,A);
} // A recursive Memoized version
Dynamic Programming From An Excel Perspective

Excel’s simple approach

=A1+B1 Kand copy cell to the right


Dynamic Programming From An Excel Perspective

Pascal's triangle is constructed


in Excel in the bottom-up
approach.

The programmed solution can


be handled via DP as in the
Fibonacci example, either using
an array with or without
memoized recursion.
formula =B1+A2 is
copied from B2 to The pure recursive version is
the remaining cells. computationally unacceptable.
Dynamic Programming From An Excel Perspective

There are many DP algorithms that appear throughout our


curriculum.
 Longest Common Subsequence Bioinformatics class.
 Sequence Alignment: Bioinformatics
 Optimal Binary Search Tree: Algorithm Analysis
 Matrix Chain Multiplication: Algorithms Analysis
 Graph Algorithms
Dynamic Programming From An Excel Perspective

Longest Common Subsequence (LCS)


Definition: find the longest subsequence that is common
to two (or more) sequences.
Example
Seq1 = B D C A B A Seq2 = A B C B D A B

LCS = BCBA

Note: The LCS is not a substring!


Dynamic Programming From An Excel Perspective

Longest Common Subsequence (LCS)


DP leads to the following recursive approach.

Let z=z1 z2 … xk be the LCS of x1 x2 … xi-1 xi


y1 y2 … yj-1 yj

0 𝑖𝑓 𝑥 = 0 𝑜𝑟 𝑗 = 0
𝑐 𝑖, 𝑗 = ൞ 𝑐 𝑖 − 1, 𝑗 − 1 + 1 𝑖𝑓 𝑖, 𝑗 > 0 𝑎𝑛𝑑 𝑥𝑖 = 𝑦𝑗
max(𝑐 𝑖, 𝑗 − 1 , 𝑐 𝑖 − 1, 𝑗 𝑖𝑓 𝑖, 𝑗 > 0 𝑎𝑛𝑑 𝑥𝑖 ≠ 𝑦𝑗

Where c[ib ,j] is the length of the LCS of x1..xi and y1..yj
Dynamic Programming From An Excel Perspective

The initialized LCS Table

Copy the following cell


formula to all grey cells.

These represent the c(i,j)’s

IF(D$2=$B4,C3+1,MAX(D3,C4))
Cell formula
Dynamic Programming From An Excel Perspective

And the solution is

Note diagonal increments

Length of LCS
Dynamic Programming From An Excel Perspective

DP Problems with complex table manipulation


 Optimal Binary Search Tree (in paper)
 Matrix Chain Multiplication

Question: What do you do with problems that require the


processing of rows or columns in such a way that the usual
cell function approach is not adequate?

Excel does not allow cell function side effects! Hmm.


Write the code in the include macro language (VB?)
Dynamic Programming From An Excel Perspective

Summarizing
 CS students can benefit from work with Excel
 Excel can support many projects in the CS curriculum.
 Table processing available in Excel supports some
algorithm visualization quite well.
 This approach works particularly well with the simpler
DP problems.
THE END

Você também pode gostar