**Dynamic Programming** (**DP**) is a funny term. It was named as such to avoid enraging a former Secretary of Defense, and the name has stuck ever since.

Essentially, there’s nothing dynamic about it. DP can simply be categorized as an algorithmic strategy where one breaks down a single problem into sub-problems. By solving each sub-problem, the algorithm gets closer and closer to solving the original problem. After solving all of the sub-problems, the answer to the original problem is found.

Experienced readers will most likely think that this definition is very close to the idea of **recursion** — it definitely is, and most problems that employ a DP solution can be solved with recursion.

For the purposes of this article, however, we will be taking a look at **bottom-up dynamic programming** (**BUDP**), which does not necessarily make use of recursion. After thoroughly examining the topic at hand, we will solve the problem **Minimum Path Sum** using BUDP, and do so with several illustrative diagrams.

#javascript

1.50 GEEK