Thursday, May 21, 2020

Dynamic Programming


Dynamic Programming is a problem solving technique that solves a problem by dividing it into its subproblems. When the subproblems are similar that is they share the same property as the original problem and also they are dependent. It is normally used for optimizing a specific problem and follows the principle of optimality which states that for an optimal sequence of decisions, each sub-sequence must also be optimal.

List of possible parent DP problems with the possible least number of their variations(mentioned in square brackets). (source: google)
  1. 0-1 Knapsack[6]
  2. Unbounded Knapsack[5]
  3. Fibonacci[7]
  4. Longest Common Subsequence[15]
  5. Longest Increasing Subsequenc[10]
  6. Kadane's Algorith[6]
  7. Matrix Chain Multiplication[7]
  8. DP on Trees[7]
  9. DP on Grid[14]
  10. Others(less common)[5]
so there are atleast 83 types of DP problems. There are possibly more which i dont know at this point.
Anyways, I will be studying and blogging about each of these porblems and their varations..

Happy Coding!

No comments:

Post a Comment