Dynamic Programming: It's Not What You Think

2025-07-21

The term "dynamic programming" in algorithm studies often causes confusion. 'Dynamic' doesn't refer to its changeability, but rather to the planning aspect of 'programming', originating from the 1950s when engineers planned construction projects as 'process scheduling'. In computer science, dynamic programming means planning the order of sub-steps required to solve a problem. For example, computing the Fibonacci sequence, the 'program' is the sequence of steps to calculate fib(2) to fib(10) in dependency order. This can be planned top-down or bottom-up; the final plan is the same, and both are considered dynamic programming. Richard Bellman coined the term to avoid a Secretary of Defense's aversion to 'mathematical research', cleverly choosing 'dynamic programming' because the adjective 'dynamic' cannot be used pejoratively.

Development