This tutorial is in continuation of A tutorial on Dynamic Programming Part I. If have not gone through that please read it here
Is Dynamic Programming a process to find solution
quicker?
Yes
it is, but the nature of the solution we are talking to is an optimal solution
not the exact one. The principle of optimality applies if the optimal solution
to a problem always contains optimal solutions to all subproblems . Take the
following example:
Let
us consider the problem of making N Rupees with the fewest number of Rupee coins.
Either
there is a coin of value N Rupees (Exact Solution), or the set of coins making
up an optimal solution for N Rupees can be divided into two nonempty subsets, n1
Rupees and n2 Rupees (Optimal Solution).
If
any of the n1 Rupees or n2 Rupees, can be made with fewer
number of coins, then clearly N can be made with fewer coins, hence solution
was not optimal.
Tell me more on Principle of
Optimality
The principle of optimality holds if
Every
optimal solution to a problem contains optimal solutions to all subproblems
The principle of optimality does not say
If
you have optimal solutions to all subproblems then you can combine them to get
an optimal solution
Example:
If we have infinite numbers of coins of 1cents, 5 cents, 10 cents only then optimal
solution to make 7 cents is 5 cents + 1 cent + 1 cent, and the optimal solution to make 6 cents is 5 cents + 1 cent, but the optimal solution to make 13 cent is NOT 5 cents + 1 cent + 1 cent + 5
cents + 1 cent
But
there is a way of dividing up 13
cents into subsets with optimal solutions (say, 11 cents + 2 cents) that will
give an optimal solution for 13 cents. Hence, the principle of optimality holds
for this problem.
Let us see one example where Principle of
Optimality does not hold.
The longest simple path (path not
containing a cycle) from A to D is A->B->C->D. However, the sub path A->B
is not the longest simple path from A to B (A->C->B is longer)
The principle of optimality is not
satisfied for this problem. Hence, the longest simple path problem cannot be
solved by a dynamic programming approach.
In the next post, I will be explaining DP with a detailed example.
In the next post, I will be explaining DP with a detailed example.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.