Dynamic programming is widely-used technique for solving optimization problems. It was developed by Richard Bellman while he was at RAND corporation. There’s a fun anecdote on where the term dynamic programming comes from. At RAND Bellman was working on mathematical research and had a boss who had a “pathological fear and hatred of the word “research””. So protect his research from bureaucratic meddling he coined the term dynamic programming. At that time programming referred to mathematical programming (like linear programming) rather than computer programming
Dynamic programming is way to go through all the possible points in a graph but in an intelligent manner. It is based on the principle of optimality. We break the problem into sub-problems, solve the sub-problems and put the sub-problems together to solve the original problem.