0% found this document useful (0 votes)
25 views

19 Dynamic Programming

Dynamic programming is an algorithm design technique that solves problems by breaking them down into smaller subproblems and storing the results of subproblems to avoid recomputing them. It is applicable to problems exhibiting optimal substructure and overlapping subproblems. The main steps are to define the problem recursively in terms of optimal solutions to subproblems, solve the subproblems in bottom-up fashion storing results in a table, and extract the optimal solution. It improves on inefficient divide-and-conquer algorithms by memoizing results of repeated subproblems. Examples include 0/1 knapsack problem, traveling salesperson problem, and longest common subsequence problem.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views

19 Dynamic Programming

Dynamic programming is an algorithm design technique that solves problems by breaking them down into smaller subproblems and storing the results of subproblems to avoid recomputing them. It is applicable to problems exhibiting optimal substructure and overlapping subproblems. The main steps are to define the problem recursively in terms of optimal solutions to subproblems, solve the subproblems in bottom-up fashion storing results in a table, and extract the optimal solution. It improves on inefficient divide-and-conquer algorithms by memoizing results of repeated subproblems. Examples include 0/1 knapsack problem, traveling salesperson problem, and longest common subsequence problem.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 11

Design and Analysis of

Algorithms

Dynamic programming

1
Dynamic programming
Well known algorithm design techniques:.
– Divide-and-conquer algorithms

• Another strategy for designing algorithms is


dynamic programming.

– Used when problem breaks down into recurring


small Subproblems

• Dynamic programming is typically applied to


optimization problems. In such problem there can be
many solutions. Each solution has a value, and we
wish to find a solution with the optimal value

2
Dynamic programming
Dynamic Programming is a general algorithm design
technique for solving problems defined by or formulated as
recurrences with overlapping sub instances.

Invented by American mathematician Richard Bellman in


the 1950s to solve optimization problems .

Main idea:
- set up a recurrence relating a solution to a larger
instance to solutions of some smaller instances
- solve smaller instances once
- record solutions in a table
- extract solution to the initial instance from that table

3
Dynamic programming
Dynamic programming is a way of improving on inefficient
divide and-conquer algorithms.

• By “inefficient”, we mean that the same recursive call is


made over and over.

• If same subproblem is solved several times, we can use


table to store result of a subproblem the first time it is
computed and thus never have to recompute it again.

• Dynamic programming is applicable when the subproblems


are dependent, that is, when subproblems share sub
subproblems
.• “Programming” refers to a tabular method

4
Elements of Dynamic Programming
DP is used to solve problems with the following characteristics:

• Simple subproblems
– We should be able to break the original problem to smaller
subproblems that have the same structure

• Optimal substructure of the problems


– The optimal solution to the problem contains within
optimal solutions to its subproblems.

• Overlapping sub-problems
– there exist some places where we solve the same
subproblem more than once.

5
Steps to Designing a
Dynamic Programming Algorithm

1. Characterize optimal substructure

2. Recursively define the value of an optimal Solution

3. Compute the value bottom up

4. (if needed) Construct an optimal solution.

6
Principle of Optimality

•The dynamic Programming works on a principle


of optimality.

• Principle of optimality states that in an optimal


sequence of decisions or choices, each sub
sequences must also be optimal.

7
` Dynamic Programming vs.Divide & Conquer

8
` Dynamic Programming vs Greedy Method

Dynamic Programming Greedy Method


1. Dynamic Programming is used to 1. Greedy Method is also used to get
obtain the optimal solution. the optimal solution.

2. In Dynamic Programming, we 2. In a greedy Algorithm, we make


choose at each step, but the choice whatever choice seems best at the
may depend on the solution to sub- moment and then solve the sub-
problems. problems arising after the choice is
made.
3. It is guaranteed that Dynamic 3. In Greedy Method, there is no such
Programming will generate an optimal guarantee of getting Optimal Solution
solution using Principle of Optimality.
4. Example: 0/1 Knapsack 4. Example: Fractional Knapsack

9
Examples
•0/1 Knapsack Method
•Traveling sales person Problem
•Optimal Binary search tree
•Matrix chain multiplication
•Longest Common Sequence

10
Thank You

11

You might also like