Jump to content

Dynamic programming: Difference between revisions

From IdeaWazaWiki
wikademia>Wikademia
m 5 revisions
wikademia>Wikademia
 
(One intermediate revision by the same user not shown)
Line 6: Line 6:


== Algorithms that use dynamic programming ==
== Algorithms that use dynamic programming ==
* Many [[w:String (computer science)|string]] algorithms including [[longest common subsequence problem|longest common subsequence]]
* Many [[Wikipedia:String (computer science)|string]] algorithms including [[longest common subsequence problem|longest common subsequence]]
* The [[w:CYK algorithm|Cocke-Younger-Kasami (CYK) algorithm]] which determines whether and how a given string can be generated by a given [[w:context-free grammar|context-free grammar]]
* The [[Wikipedia:CYK algorithm|Cocke-Younger-Kasami (CYK) algorithm]] which determines whether and how a given string can be generated by a given [[Wikipedia:context-free grammar|context-free grammar]]
* The use of [[w:transposition table|transposition table]]s and [[w:refutation table|refutation table]]s in computer chess
* The use of [[Wikipedia:transposition table|transposition table]]s and [[Wikipedia:refutation table|refutation table]]s in computer chess
* The [[w:Viterbi algorithm|Viterbi algorithm]] (used for [[w:hidden Markov model|hidden Markov model]]s)
* The [[Wikipedia:Viterbi algorithm|Viterbi algorithm]] (used for [[Wikipedia:hidden Markov model|hidden Markov model]]s)
* The [[w:Earley algorithm|Earley algorithm]] (a type of [[w:chart parser|chart parser]])
* The [[Wikipedia:Earley algorithm|Earley algorithm]] (a type of [[Wikipedia:chart parser|chart parser]])
* The [[w:Needleman-Wunsch algorithm|Needleman-Wunsch]] and other [[w:sequence alignment|sequence alignment]] algorithms used in [[w:bioinformatics|bioinformatics]]
* The [[Wikipedia:Needleman-Wunsch algorithm|Needleman-Wunsch]] and other [[Wikipedia:sequence alignment|sequence alignment]] algorithms used in [[Wikipedia:bioinformatics|bioinformatics]]
* [[w:Levenshtein distance|Levenshtein distance]] (edit distance)
* [[Wikipedia:Levenshtein distance|Levenshtein distance]] (edit distance)
* [[w:Floyd-Warshall algorithm|Floyd's All-Pairs shortest path algorithm]]
* [[Wikipedia:Floyd-Warshall algorithm|Floyd's All-Pairs shortest path algorithm]]
* Optimizing the order for [[w:chain matrix multiplication|chain matrix multiplication]]
* Optimizing the order for [[Wikipedia:chain matrix multiplication|chain matrix multiplication]]
* [[w:subset sum problem|Subset Sum]] algorithm
* [[Wikipedia:subset sum problem|Subset Sum]] algorithm
* [[w:knapsack problem|knapsack problem]]
* [[Wikipedia:knapsack problem|knapsack problem]]
* The [[w:dynamic time warping|dynamic time warping]] algorithm for computing the global distance between two time series
* The [[Wikipedia:dynamic time warping|dynamic time warping]] algorithm for computing the global distance between two time series
* The [[w:Selinger|Selinger]] (a.k.a [[w:System R|System R]]) algorithm for relational database query optimization
* The [[Wikipedia:Selinger|Selinger]] (a.k.a [[Wikipedia:System R|System R]]) algorithm for relational database query optimization
* [[w:De Boor algorithm|De Boor algorithm]] for evaluating B-spline curves
* [[Wikipedia:De Boor algorithm|De Boor algorithm]] for evaluating B-spline curves
* [[w:Duckworth-Lewis method|Duckworth-Lewis method]] for resolving the problem when games of cricket are interrupted
* [[Wikipedia:Duckworth-Lewis method|Duckworth-Lewis method]] for resolving the problem when games of cricket are interrupted
* The Value Iteration method for solving [[w:Markov_decision_process|Markov_decision_process]]es
* The Value Iteration method for solving [[Wikipedia:Markov_decision_process|Markov_decision_process]]es





Latest revision as of 18:46, 25 April 2009

In computer science, dynamic programming is a method of solving problems exhibiting the properties of overlapping subproblems and optimal substructure that takes much less time than naïve methods.

The term was originally used in the 1940s by Richard Bellman to describe the process of solving problems where one needs to find the best decisions one after another. By 1953, he had refined this to the modern meaning. The field was founded as a systems analysis and engineering topic which is recognized by the IEEE.

The word "programming" in "dynamic programming" has no particular connection to computer programming at all. A program is, instead, the plan for action that is produced. For instance, a finalized schedule of events at an exhibition is sometimes called a program. Programming, in this sense, is finding an acceptable plan of action.

Algorithms that use dynamic programming