Copyright © Philip M. Parker, INSEAD. Terms of Use.

DYNAMIC PROGRAMMING

Specialty Definition: DYNAMIC PROGRAMMING

DomainDefinition

Math

An algorithmic technique in which an optimization problem is solved by caching subproblem solutions (memoization) rather than recomputing them. (references)

Source: compiled by the editor from various references; see credits.

Top     

Specialty Definition: Dynamic programming

(From Wikipedia, the free Encyclopedia)

The term Dynamic programming originally only applied to solving certain kinds of operational problems, quite outside the area of Computer Science, just as Linear programming did. In this context it has no particular connection to programming at all, and there is a mere coincidence of naming.

In the 1940s Richard Bellman, an American mathematician, used the term dynamic programming to describe the process of solving problems where one needs to find the best decisions one after another. In the context of programming, Dynamic programming is an important technique which belongs to the theory of optimization.

Dynamic programming is efficient in finding optimal solutions for cases with lots of overlapping subproblems. It solves problems by recombining solutions to subproblems, when the subproblems themselves may share sub-subproblems.

In order to avoid solving these sub-subproblems several times, their results are gradually computed and memorized, starting from the simpler problems, until the overall problem itself is solved. Thus, dynamic programming is simply memorisation of results of a recurrence, so that time is not spent trying to solve the same subproblem (or problem) repeatedly.

Dynamic programming can only be applied when the problem under concern has optimal substructure. Optimal substructure means that the optimal solutions of local problems can lead to the optimal solution of the global problem. In simple terms, that means that the problem can be solved by breaking it down, and solving the simpler problems.

A simple example for a possible application of dynamic programming would be calculating fibonacci numbers. The nth fibonacci number is calculated on the formula F(n) = F(n-1) + F(n-2). Assuming we did not use dynamic programming, we would probably generate the following recursive pseudo-code :

function fibonacci(n)
 if n is less than or equal to 2, return 1, otherwise
 return the value of fibonacci(n-1)+fibonacci(n-2)
end function

From this function, the recurrence relation (relation of the local problems to the global one) is evident, thus dynamic programming is applicable here. It is probably obvious to the reader that the above function wastes much time recalculating the value of various fibonacci numbers over and over again. Dynamic programming would eliminate the need to do so through memorisation. Thus, we can generate the following pseudo-code:

global array fibonacci_numbers
fibonacci_numbers[0,1,2] = 1;

for i = 2 to requested number do fibonacci_numbers[i] = fibonacci_numbers[i-1]+fibonacci_numbers[i-2]

After applying dynamic programming, our code is now much faster as it memorises results of previous subproblems which are used to solve the global problem.

In summary, dynamic programming makes use of:

Approaches

Dynamic programming usually comes in two approaches:

Algorithms that use dynamic programming

External links

Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "Dynamic programming."

Top     

Crosswords: DYNAMIC PROGRAMMING

Specialty definitions using "DYNAMIC PROGRAMMING": coarseningIburgknapsack problemmatrix-chain multiplication problemSmith-Waterman algorithm. (references)

Top     

Commercial Usage: DYNAMIC PROGRAMMING

DomainTitle

Books

  • Decision Theory: An Introduction to Dynamic Programming and Sequential Decisions (reference)

  • Nonlinear processes in engineering; dynamic programming, invariant imbedding, quasilinearization, finite elements, system identification, optimization (reference)

  • State increment dynamic programming (reference)

  • Iterative Dynamic Programming (reference)

  • Stochastic Dynamic Programming and the Control of Queueing Systems (reference)

    (more book examples)

Source: compiled by the editor from various references; see credits.

Top     

Frequency of Internet Keywords: DYNAMIC PROGRAMMING

The following statistics estimate the number of searches per day across the major English-language search engines as identified by various trade publications. Hyperlinks lead to commercial use of the expression at Amazon.com.
 
ExpressionFrequency
per Day

dynamic programming

29

algorithm dynamic programming

8

algorithm code dynamic programming source

3

application dynamic programming

3

dynamic programming site web

2

dynamic programming relaxation space state

2

dual dynamic programming stochastic

2
Source: compiled by the editor from various references; see credits.

Top     

Anagrams: DYNAMIC PROGRAMMING

Scrabble® Enable2K-Verified Anagrams

Words within the letters "a-a-c-d-g-g-i-i-m-m-m-n-n-o-p-r-r-y"

-5 letters: micromanaging.

Source: compiled by the editor from various references; see credits.

SCRABBLE® is a registered trademark. All intellectual property rights in and to the game are owned in the U.S.A and Canada by Hasbro Inc., and throughout the rest of the world by J.W. Spear & Sons Limited of Maidenhead, Berkshire, England, a subsidiary of Mattel Inc. Mattel and Spear are not affiliated with Hasbro.

Top     

Alternative Orthography: DYNAMIC PROGRAMMING


Hexadecimal (or equivalents, 770AD-1900s) (references)

44 59 4E 41 4D 49 43      50 52 4F 47 52 41 4D 4D 49 4E 47

Leonardo da Vinci (1452-1519; backwards) (references)

    

Binary Code (1918-1938, probably earlier) (references)

01000100 01011001 01001110 01000001 01001101 01001001 01000011 00100000 01010000 01010010 01001111 01000111 01010010 01000001 01001101 01001101 01001001 01001110 01000111

HTML Code (1990) (references)

&#68 &#89 &#78 &#65 &#77 &#73 &#67 &#32 &#80 &#82 &#79 &#71 &#82 &#65 &#77 &#77 &#73 &#78 &#71

ISO 10646 (1991-1993) (references)

0044 0059 004E 0041 004D 0049 0043      0050 0052 004F 0047 0052 0041 004D 004D 0049 004E 0047

Encryption (beginner's substitution cypher): (references)

3859483547433725052494152354747434841

Top     



INDEX

1. Crosswords
2. Usage: Commercial
3. Expressions: Internet
4. Anagrams
5. Orthography
6. Bibliography


  

Copyright © Philip M. Parker, INSEAD. Terms of Use.