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

| Domain | Definition |
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. | |
(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 functionFrom 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;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.for i = 2 to requested number do fibonacci_numbers[i] = fibonacci_numbers[i-1]+fibonacci_numbers[i-2]
In summary, dynamic programming makes use of:
Source: adapted by the editor from Wikipedia, the free encyclopedia under a copyleft GNU Free Documentation License (GFDL) from the article "Dynamic programming."
Crosswords: DYNAMIC PROGRAMMING |
| Specialty definitions using "DYNAMIC PROGRAMMING": coarsening ♦ Iburg ♦ knapsack problem ♦ matrix-chain multiplication problem ♦ Smith-Waterman algorithm. (references) |
| Domain | Title |
Books |
|
Source: compiled by the editor from various references; see credits. | |
| 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. |
| Expression | Frequency 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. | |
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. | |
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)D Y N A M I C   P R O G R A M M I N G |
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 |
| 1. Crosswords 2. Usage: Commercial 3. Expressions: Internet 4. Anagrams | 5. Orthography 6. Bibliography |
Copyright © Philip M. Parker, INSEAD. Terms of Use.