Guidelines

How can I be good in dynamic programming?

How can I be good in dynamic programming?

7 Steps to solve a Dynamic Programming problem

  1. How to recognize a DP problem.
  2. Identify problem variables.
  3. Clearly express the recurrence relation.
  4. Identify the base cases.
  5. Decide if you want to implement it iteratively or recursively.
  6. Add memoization.
  7. Determine time complexity.

Where does Tushar Roy work?

I m currently working with Apple iCloud team focussed on Cloudkit experience. Before this I worked at Amazon in S3(AWS) and FBA team for 4 and half years.

How to do dynamic programming?

Analyze the problem and see the order in which the sub-problems are solved and start solving from the trivial subproblem, up towards the given problem. In this process, it is guaranteed that the subproblems are solved before solving the problem. This is referred to as Dynamic Programming.

READ ALSO:   Can I do CS without training?

How to solve combinatorics by dynamic programming?

So solution by dynamic programming should be properly framed to remove this ill-effect. For ex. In combinatorics, C (n.m) = C (n-1,m) + C (n-1,m-1). In simple solution, one would have to construct the whole pascal triangle to calcute C (5,4) but recursion could save a lot of time.

What was the biggest breakthrough in your learning of dynamic programming?

The biggest breakthrough in my learning of dynamic programming was, when I started to think about the problems in the top-down fashion, instead of bottom-up. On the first look it doesn’t look as such a revolutionary insight, but these two approaches directly translates in two different source codes.

What are some examples of bottom-up methodologies in dynamic programming?

After you read some introductory texts on dynamic programming (which I highly recommend), pretty much all the source code examples in them use bottom-up technique with iteration (i.e. using for-cycles). For example calculating the length of the longest common subsequence of two strings A and B of length N, would look like this: