dynamic programming final ppt

28
Dynamic Programming Maham Zafar Adnan Shabbir Kashifa Kiran

Upload: kashifa-kiren

Post on 04-Apr-2015

205 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Dynamic Programming Final Ppt

Dynamic Programming

Maham Zafar

Adnan Shabbir

Kashifa Kiran

Page 2: Dynamic Programming Final Ppt

• Dynamic programming is a technique for solving problem

• Dynamic Programming is an algorithm design technique for optimization problems

• Dynamic programming divide the problem into subparts and then solve the subparts and use the solutions of the subparts to come to a solution.

• Dynamic Programming is a powerful technique that allows one to solve many different types of problems in time O(n2) or O(n3) for which it would take exponential time.

What is Dynamic Programming?

Page 3: Dynamic Programming Final Ppt

• The term dynamic programming was originally used in the 1940s by Richard Bellman to describe the process of solving problems where one needs to find the best decisions one after another.

History

Page 4: Dynamic Programming Final Ppt

Why does it apply?

• Dynamic programming is typically applied to optimization problems. In such problems there can be many possible solution. Each solution has a value, and we wish to find a solution with the optimal (minimum or maximum) value.

Page 5: Dynamic Programming Final Ppt

Examples of DP algorithms

• Matrix chain Multiplication

• Assembly Line Scheduling

Page 6: Dynamic Programming Final Ppt

The development of dynamic programming algorithm can be broken into a sequence of four steps-

• Characterize the structure of an optimal solution.• Recursively define the value of an optimal

solution.• Compute the value of an optimal solution in a

bottom-up fashion.• Construct an optimal solution from computed

information.

It’s Steps

Page 7: Dynamic Programming Final Ppt

Elements of Dynamic Programming

• Optimal substructure

• Overlapping sub problems

Page 8: Dynamic Programming Final Ppt

Optimal Substructure

• Dynamic programming uses optimal substructure bottom up.– First find optimal solutions to subproblems.

– Then choose which to use in optimal solution to the problem.

Page 9: Dynamic Programming Final Ppt

Overlapping Subproblems

• The space of sub problems must be “small”.• The total number of distinct sub problems is a

polynomial in the input size.– A recursive algorithm is exponential because it solves

the same problems repeatedly.

– If divide-and-conquer is applicable, then each problem solved will be brand new.

Page 10: Dynamic Programming Final Ppt

10

DP Example – Assembly Line Scheduling (ALS)

Page 11: Dynamic Programming Final Ppt

11

Concrete Instance of ALS

Page 12: Dynamic Programming Final Ppt

12

Brute Force Solution

– List all possible sequences, – For each sequence of n stations, compute the

passing time. (the computation takes (n) time.)

– Record the sequence with smaller passing time. – However, there are total 2n possible sequences.

Page 13: Dynamic Programming Final Ppt

13

ALS --DP steps: Step 1• Step 1: find the structure of the fastest way

through factory– Consider the fastest way from starting point

through station S1,j (same for S2,j)• j=1, only one possibility• j=2,3,…,n, two possibilities: from S1,j-1 or S2,j-1

– from S1,j-1, additional time a1,j

– from S2,j-1, additional time t2,j-1 + a1,j

Page 14: Dynamic Programming Final Ppt

14

DP step 1: Find Optimal Structure

• An optimal solution to a problem contains within it an optimal solution to subproblems.

• the fastest way through station Si,j contains within it the fastest way through station S1,j-1 or

S2,j-1 .

• Thus can construct an optimal solution to a problem from the optimal solutions to subproblems.

Page 15: Dynamic Programming Final Ppt

15

ALS --DP steps: Step 2• Step 2: A recursive solution• Let fi[j] (i=1,2 and j=1,2,…, n) denote the fastest

possible time to get a chassis from starting point through Si,j.

• Let f* denote the fastest time for a chassis all the way through the factory. Then

• f* = min(f1[n] +x1, f2[n] +x2)• f1[1]=e1+a1,1, fastest time to get through S1,1

• f1[j]=min(f1[j-1]+a1,j, f2[j-1]+ t2,j-1+ a1,j)• Similarly to f2[j].

Page 16: Dynamic Programming Final Ppt

16

ALS --DP steps: Step 2• Recursive solution:

– f* = min(f1[n] +x1, f2[n] +x2)– f1[j]= e1+a1,1 if j=1

– min(f1[j-1]+a1,j, f2[j-1]+ t2,j-1+ a1,j) if j>1

– f2[j]= e2+a2,1 if j=1

– min(f2[j-1]+a2,j, f1[j-1]+ t1,j-1+ a2,j) if j>1

• fi[j] (i=1,2; j=1,2,…,n) records optimal values to the subproblems.

• To keep the track of the fastest way, introduce li[j] to record the line number (1 or 2), whose station j-1 is used in a fastest way through Si,j.

• Introduce l* to be the line whose station n is used in a fastest way through the factory.

Page 17: Dynamic Programming Final Ppt

17

ALS FAST-WAY algorithm

Running time: O(n).

Page 18: Dynamic Programming Final Ppt

18

ALS --DP steps: Step 4

• Step 4: Construct the fastest way through the factory

Page 19: Dynamic Programming Final Ppt

19

Matrix-chain multiplication (MCM) -DP

• Problem: given A1, A2, …,An, compute the product: A1A2…An , find the fastest way (i.e., minimum number of multiplications) to compute it.

• Suppose two matrices A(p,q) and B(q,r), compute their product C(p,r) in p q r multiplications– for i=1 to p for j=1 to r C[i,j]=0– for i=1 to p

• for j=1 to r– for k=1 to q C[i,j] = C[i,j]+ A[i,k]B[k,j]

Page 20: Dynamic Programming Final Ppt

20

Matrix-chain multiplication -DP• Different parenthesizations will have different

number of multiplications for product of multiple matrices

• Example: A(10,100), B(100,5), C(5,50)– If ((A B) C), 10 100 5 +10 5 50 =7500– If (A (B C)), 10 100 50+100 5 50=75000

• The first way is ten times faster than the second !!!• Denote A1, A2, …,An by < p0,p1,p2,…,pn>

– i.e, A1(p0,p1), A2(p1,p2), …, Ai(pi-1,pi),… An(pn-1,pn)

Page 21: Dynamic Programming Final Ppt

21

MCP DP Steps• Step 1: structure of an optimal parenthesization

– Let Ai..j (ij) denote the matrix resulting from AiAi+1…Aj

– Any parenthesization of AiAi+1…Aj must split the product between Ak and Ak+1 for some k, (ik<j). The cost = # of computing Ai..k + # of computing Ak+1..j + # Ai..k Ak+1..j.

– If k is the position for an optimal parenthesization, the parenthesization of “prefix” subchain AiAi+1…Ak within this optimal parenthesization of AiAi+1…Aj must be an optimal parenthesization of AiAi+1…Ak.

– AiAi+1…Ak Ak+1…Aj

Page 22: Dynamic Programming Final Ppt

22

MCP DP Steps

• Step 2: a recursive relation– Let m[i,j] be the minimum number of multiplications

for AiAi+1…Aj

– m[1,n] will be the answer– m[i,j] = 0 if i = j

min {m[i,k] + m[k+1,j] +pi-1pkpj } if i<jik<j

Page 23: Dynamic Programming Final Ppt

23

MCM DP Steps

• Step 3, Computing the optimal cost– Recursive algorithm will encounter the same

subproblem many times.– If tabling the answers for subproblems, each

subproblem is only solved once.– The second hallmark of DP: overlapping subproblems

and solve every subproblem just once.

Page 24: Dynamic Programming Final Ppt

24

MCM DP Steps

• Step 3, Algorithm, – array m[1..n,1..n], with m[i,j] records the optimal

cost for AiAi+1…Aj .

– array s[1..n,1..n], s[i,j] records index k which achieved the optimal cost when computing m[i,j].

– Suppose the input to the algorithm is p=< p0 , p1 ,…, pn >.

Page 25: Dynamic Programming Final Ppt

25

MCM DP Example

Page 26: Dynamic Programming Final Ppt

26

MCM DP Steps

• Step 4, constructing a parenthesization order for the optimal solution.– Since s[1..n,1..n] is computed, and s[i,j] is the

split position for AiAi+1…Aj , i.e, Ai…As[i,j] and As[i,j] +1…Aj , thus, the parenthesization order can be obtained from s[1..n,1..n] recursively, beginning from s[1,n].

Page 27: Dynamic Programming Final Ppt

27

Running Time for DP Programs

• #overall subproblems #choices.– In assembly-line scheduling, O(n) O(1)= O(n) .– In matrix-chain multiplication, O(n2) O(n) = O(n3)

• The cost =costs of solving subproblems + cost of making choice.– In assembly-line scheduling, choice cost is

• ai,j if stay in the same line, ti’,j-1+ai,j (ii) otherwise.

– In matrix-chain multiplication, choice cost is pi-1pkpj.

Page 28: Dynamic Programming Final Ppt

THE END

THANKS

28