Dynamic Programming is a methodology used in the study of Mathematics and Computer Science that explores problem patterns and uses those properties to develop subroutines to solve the problem in any given case. Dynamic Programming, also known as Mathematical Programming in the mathematical realm, is pervaded by the fact that the set of actions that are sought to perform tasks for solving the problem is optimal in terms of speed, time, and maintainability. Of course, the right algorithm must be developed, even so some optimal algorithm may not be suitable for some situations, therefore the idea behind Dynamic Programming still lingers through empirical research of the construction of each subroutine. A complex problem is always going to involve an iterated or recursive algorithm, for example calculating all possible moves the knight from a chess game can perform in each instance must have a subroutine to calculate all those possible moves, within the principle of chess playing.
Programming is nothing more than the simulation of life’s problems and physical laws and conformity through the life language – mathematics. Therefore, programming is isomorphic to mathematics.