Lecture 2: Dynamic Programming
主講人 :虞台文
Content What is Dynamic Programming? Matrix Chain-Products Sequence Alignments Knapsack Problem All-Pairs Shortest Path Problem Traveling Salesman Problem
Conclusion
Lecture 2: Dynamic Programming
What is Dynamic Programming?
What is Dynamic Programming?
Dynamic Programming (DP) tends to break the original problem to sub-problems, i.e., in a smaller size
The optimal solution in the bigger sub-problems is found through a retroactive formula which connects the optimal solutions of sub-problems.
Used when the solution to a problem may be viewed as the result of a sequence of decisions.
Properties for Problems Solved by DP
Simple Subproblems– The original problem can be broken into smaller subproblems with the same structure
Optimal Substructure of the problems– The solution to the problem must be a composition of subproblem solutions (the principle of optimality)
Subproblem Overlap– Optimal subproblems to unrelated problems can contain subproblems in common
The Principle of Optimality The basic principle of dynamic programming Developed by Richard Bellman An optimal path has the property that whatever
the initial conditions and control variables (choices) over some initial period, the control (or decision variables) chosen over the remaining period must be optimal for the remaining problem, with the state resulting from the early decisions taken to be the initial condition.
Example: Shortest Path Problem
10
5
3
GoalStart
25
28
40
Example: Shortest Path Problem
10
5
3
Start Goal
25
28
40
Example: Shortest Path Problem
10
5
3
Start Goal
Recall Greedy Method forShortest Paths on a Multi-stage Graph
Problem– Find a shortest path from v0 to v3
Is the greedy solution optimal?
Recall Greedy Method forShortest Paths on a Multi-stage Graph
Problem– Find a shortest path from v0 to v3
Is the greedy solution optimal?
The optimal path
Example Dynamic Programming
min 1,1 3
min 1,2 3min 0 3
min 1,3 3
min 1,4 3
( , )( , )
31
min57
( , )( , )( , )
d v vd v v
d v vd v vd v v
Lecture 2: Dynamic Programming
Matrix Chain-Products
Matrix MultiplicationC = A × BA is d × e and B is e × f
O(def )
e
Bf
ej
Cd
f
i,jA
d i
1
e
ij ik kjk
C A B
Matrix Chain-Products Given a sequence of matrices, A1, A2, …, An, find
the most efficient way to multiply them together. Facts:
– A(BC) = (AB)C– Different parenthesizing may need different numbers of
operation. Example: A:10 × 30, B: 30 × 5, C : 5 × 60
– (AB)C = (10×30×5) + (10×5×60) = 1500 + 3000 = 4500 ops – A(BC) = (30×5×60) + (10×30×60) = 9000 + 18000 = 27000 ops
Matrix Chain-Products Given a sequence of matrices, A1, A2, …, An, find the m
ost efficient way to multiply them together. A Brute-force Approach:
– Try all possible ways to parenthesize A=A1A2…An
– Calculate number of operations for each one– Pick the best one
Time Complexity:– #paranethesizations = #binary trees of n nodes– O(4n)
A Greedy Approach Idea #1:
– repeatedly select the product that uses the most operations.
Counter-example: – A: 10 5, B: 5 10, C: 10 5, and D: 5 10– Greedy idea #1 gives (AB)(CD), which takes
500+1000+500 = 2000 ops– A((BC)D) takes 500+250+250 = 1000 ops
Another Greedy Approach
Idea #2: – repeatedly select the product that uses the least operations.
Counter-example: – A: 101 11, B: 11 9, C: 9 100, and D: 100 999– Greedy idea #2 gives A((BC)D), which takes 109989+9900+108900=228789 ops– (AB)(CD) takes 9999+89991+89100=189090
ops
DP Define Subproblem
OriginalProblem 1 i j nA A A A 1 i j nA AA A
Subproblem (P ij, i j)(P1n)
Suppose #operations for the optimal solution of Pij is Nij #operations for the optimal solution of the original problem P1n is N1n
1:i i iA d d
DP Define Subproblem
OriginalProblem 1 i j nA A A A 1 i j nA AA A
Subproblem (P ij, i j)(P1n)
Suppose #operations for the optimal solution of Pij is Nij #operations for the optimal solution of the original problem P1n is N1n
1:i i iA d d
DP Define Subproblem
OriginalProblem 1 i j nA A A A 1 i j nA AA A
Subproblem (P ij, i j)(P1n)
Suppose #operations for the optimal solution of Pij is Nij #operations for the optimal solution of the original problem P1n is N1n
1:i i iA d d
What is the relation btw Nij (Pij) and N1n (P1
n)?
DP Principle of Optimality
1i k k jA A A A
1:i i iA d d
N ik N k+1,n
d i d k+1 d k d j+1
1 1 1,min ik ki jj i k j i k jd dNN N d 11, 1minij ik k i k ji k j j dN N N d d
DP Implementation 11, 1minij ik k i k ji k j j dN N N d d
1
2
i
n
1 2 j nNij
DP Implementation 11, 1minij ik k i k ji k j j dN N N d d
1
2
i
n
1 2 j nNij
DP Implementation
1
2
i
n
1 2 j nNij
?
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
?
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
?
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
?
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
?
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
?
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
?
11, 1minij ik k i k ji k j j dN N N d d
DP Implementation
1
2
i
n
1 2 j nNij
11, 1minij ik k i k ji k j j dN N N d d
DP for Matrix Chain-Products
Algorithm matrixChain(S):Input: sequence S of n matrices to be multipliedOutput: number of operations in an optimal parenthesization of Sfor i 1 to n // main diagonal terms are all zero
Ni,i 0
for d 2 to n // each diagonal do followingfor i 1 to nd+1 // do from top to bottom for each diagona
lj i+d1
Ni,j infinity
for k i to j1 // counting minimum Ni,j min(Ni,j, Ni,k +Nk+1,j +di dk+1 dj+1)
11, 1minij ik k i k ji k j j dN N N d d
Time ComplexityAlgorithm matrixChain(S):Input: sequence S of n matrices to be multipliedOutput: number of operations in an optimal parenthesization of Sfor i 1 to n // main diagonal terms are all zero
Ni,i 0
for d 2 to n // each diagonal do followingfor i 1 to nd+1 // do from top to bottom for each diagona
lj i+d1
Ni,j infinity
for k i to j1 // counting minimum Ni,j min(Ni,j, Ni,k +Nk+1,j +di dk+1 dj+1)
O(n3)
11, 1minij ik k i k ji k j j dN N N d d
Exercises 11,min i kij ik ji k j k jN N N d d d
1. The matrixChain algorithm only computes #operations of an optimal parenthesization. But, it doesn’t report the optimal parenthesization scheme. Please modify the algorithm so that it can do so.2. Given an example with 5 matrices to illustrate your idea using a table.
QuestionGiven two strings
are they similar?what is their distance?
1 2, , , mX x x x 1 2, , , nY y y y and
Example
Y:applicableplausibly
X:
How similar they are?Can you give them a score?
Example
Y’:
applica---ble
-p-l--ausibly
X’:Y:applicableplausibly
X:
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mis
mat
ch
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Three cases:MatchesMismatchesInsertions & deletions (indel)
Example
Y’:
applica---ble
-p-l--ausibly
X’:Y:applicableplausibly
X:
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mis
mat
ch
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Three cases:MatchesMismatchesInsertions & deletions (indel)
(+1)(1)
(1)
The values depends on applications. It can be
described using a so-called substitution matrix, to be
discussed shortly.
Example
Y’:
applica---ble
-p-l--ausibly
X’:Y:applicableplausibly
X:
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mis
mat
ch
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Three cases:MatchesMismatchesInsertions & deletions (indel)
(+1)(1)
(1)
Score = 5(+1) + 1(1) + 7 (1) = 3
Example
Y’:
applica---ble
-p-l--ausibly
X’:Y:applicableplausibly
X:
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mat
ch
Mis
mat
ch
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Inde
l
Three cases:MatchesMismatchesInsertions & deletions (indel)
(+1)(1)
(1)
Score = 5(+1) + 1(1) + 7 (1) = 3 Is the alignment optimal?
Sequence Alignment In bioinformatics, a sequence alignment is a way of
arranging the primary sequences of DNA, RNA, or protein to identify regions of similarity that may be a consequence of functional, structural, or evolutionary relationships between the sequences.
Global and Local Alignments
L G P S S K Q T G K G S - S R I W D N
Global alignmentL N - I T K S A G K G A I M R L G D A
- - - - - - - T G K G - - - - - - - -
Local alignment- - - - - - - A G K G - - - - - - - -
Global and Local Alignments
L G P S S K Q T G K G S - S R I W D N
Global alignmentL N - I T K S A G K G A I M R L G D A
- - - - - - - T G K G - - - - - - - -
Local alignment- - - - - - - A G K G - - - - - - - -
Global and Local Alignments
Global Alignment– attempts to align the entire sequence– most useful when the sequences in the query set are similar and of roughly equal size.– Needleman–Wunsch algorithm (1971).
Local Alignment– Attempts to align partial regions of sequences
with high level of similarity.– Smith-Waterman algorithm (1981)
Needleman–Wunsch Algorithm
Find the best global alignment of any two sequences under a given substitution matrix.
Maximize a similarity score, to give maximum match
Maximum match = largest number of residues of one sequence that can be matched with another allowing for all possible gaps
Based on dynamic programming Involves an iterative matrix method of calculation
Substitution Matrix In bioinformatics, a substitution matrix estimates
the rate at which each possible residue in a sequence changes to each other residue over time.
Substitution matrices are usually seen in the context of amino acid or DNA sequence alignment, where the similarity between sequences depends on the mutation rates as represented in the matrix.
Substitution Matrix (DNA) w/o Gap Cost
A C G TA 2 1 1 1C 1 2 1 1G 1 1 2 1T 1 1 1 2
Substitution Matrix (DNA) w/ Gap Cost
A C G TA 2 1 1 1C 1 2 1 1G 1 1 2 1T 1 1 1 2
A C G T
A 2 1 1 1 2C 1 2 1 1 2G 1 1 2 1 2T 1 1 1 2 2 2 2 2 2 0
Substitution Matrix (3D-BLAST)
DP Define Subproblem
Consider two strings, s of length n and t of length m. Let S be the substitution matrix.
Subproblem: Let Pij is defined to be the optimal aligning for the two substrings:
t[1..i] and s[1..j],and let Mij be the matching score.
Original Problem: Pmn (matching score Mmn)
DP Principle of Optimality
1, 1
, 1
1,
,
max __
i ji j
ij i j
i
t s
j
S
g
M
M MM
ap scoregap score
1, 1
, 1
1,
,
,
,
maxi j
j
i
i j
i j
i
t s
s
j t
S
S
S
M
M
M
jj1
ii1
?
,1, 1
, 1
1,
,
,
maxi j
j
i
i j
ij i j
i j
t s
s
t
S
S
S
M
M M
M
ExampleStep 1. Create a scoring matrixStep 2. Make an empty table for Mij
Step 3. Initialize base conditionsStep 4. Fill table by
Step 5. Trace back
s :t :ACGGTAGCCTAAG
Mij A C G G T A G
CCTAAG
22 11 1
T
2 11 1T0 2 2 2
22 11G 2 12 1C 21 12AGCA
22 11 1
T
2 11 1T0 2 2 2
22 11G 2 12 1C 21 12AGCA
,1, 1
, 1
1,
,
,
maxi j
j
i
i j
ij i j
i j
t s
s
t
S
S
S
M
M M
M
ExampleStep 1. Create a scoring matrixStep 2. Make an empty table for Mij
Step 3. Initialize base conditionsStep 4. Fill table by
Step 5. Trace back
s :t :ACGGTAGCCTAAG
Mij A C G G T A G
CCTAAG
22 11 1
T
2 11 1T0 2 2 2
22 11G 2 12 1C 21 12AGCA
22 11 1
T
2 11 1T0 2 2 2
22 11G 2 12 1C 21 12AGCA
0
2
4
6
8
10
12
2 4 6 8 10 12 14
ExampleStep 1. Create a scoring matrixStep 2. Make an empty table for Mij
Step 3. Initialize base conditionsStep 4. Fill table by
Step 5. Trace back
s :t :ACGGTAGCCTAAG
Mij A C G G T A G
CCTAAG
22 11 1
T
2 11 1T0 2 2 2
22 11G 2 12 1C 21 12AGCA
22 11 1
T
2 11 1T0 2 2 2
22 11G 2 12 1C 21 12AGCA
,1, 1
, 1
1,
,
,
maxi j
j
i
i j
ij i j
i j
t s
s
t
S
S
S
M
M M
M
0 2 4 6 8 10 12 14
2
4
6
8
10
12
1 0 2 4 6 8 10
3 1 1 3 3 5 7
5 1 0 2 1 3 5
4 3 0 1 1 1 1
6 5 2 1 0 1 2
8 7 3 0 0 1 3
ExampleStep 1. Create a scoring matrixStep 2. Make an empty table for Mij
Step 3. Initialize base conditionsStep 4. Fill table by
Step 5. Trace back
s :t :ACGGTAGCCTAAG
Mij A C G G T A G
CCTAAG
,1, 1
, 1
1,
,
,
maxi j
j
i
i j
ij i j
i j
t s
s
t
S
S
S
M
M M
M
0
2
4
6
8
10
12
2 4 6 8 10 12 14
1
3
5
4
6
8
0
1
1
3
5
7
2
1
0
0
2
3
4
3
2
1
1
0
6
3
1
1
0
0
8
5
3
1
1
1
10
7
5
1
2
33
1
1
0
1
1
0
1
s’ :t’ :
GG
AA
T-
GA
GT
CC
AC
Needleman–Wunsch Algorithm
Step 1. Create a scoring matrixStep 2. Make an empty table for Mij
Step 3. Initialize base conditionsStep 4. Fill table by
Step 5. Trace back
,1, 1
, 1
1,
,
,
maxi j
j
i
i j
ij i j
i j
t s
s
t
S
S
S
M
M M
M
for i = 2 to m+1 do for j from 2 to n +1 do
,1, 1
, 1
1,
,
,
maxi j
j
i
i j
ij i j
i j
t s
s
t
S
S
S
M
M M
M
s’ ””, t’ ”” while i < 1 and j < 1 do if
s’ sj+ s’ t’ ti+ t’ else if
s’ sj+ s’ t’ gap+ t’ else s’ gap+ s’ t’ ti+ t’while i > 1 do t’ gap+ t’while j > 1 do s’ gap+ s’
Needleman–Wunsch Algorithm
Step 1. Create a scoring matrixStep 2. Make an empty table for Mij
Step 3. Initialize base conditionsStep 4. Fill table by
Step 5. Trace back
,1, 1
, 1
1,
,
,
maxi j
j
i
i j
ij i j
i j
t s
s
t
S
S
S
M
M M
M
,1, 1 i jij i j t sM SM
, ,1 jij i j sM M S
Local Alignment Problem
Given two strings s = s1……sn,
t = t1…….tmFind substrings s’, t’ whose similarity (optimal global alignment value) is maximum.
Example: Local AlignmentGTAGT CATCAT ATG TGACTGAC G
TC CATDOGCAT CC TGACTGAC A
GTAGT CATCAT ATGCC TGACTGAC G
TC CATDOGCAT CCTACTAC TGACTGAC A
difference block
difference block difference
block
difference block
Best aligned subsequeces
Global Alignment (Needleman–Wunsch Algorithm)
Local Alignment (Smith-Waterman Algorithm)
Recursive Formulation
1, 1
, 1
1,
,
max __
i ji j
ij i j
i
s t
j
S
g
M
M MM
ap scoregap score
1, 1
, 1
1,
,
,
,
maxi j
j
i
i j
i j
i
t s
s
j t
S
S
S
M
M
M
1, 1
, 1
1,
,
0
_max_
i jsi j
i jij
i j
tS
gap scoregap sco
M
MMeM r
1, 1
,
,
,
,
1
1,
ma
0
x
i j
j
i
i j
i
t s
sj
i j t
S
S
M
M
M S
Exercises3. Find the best local aligned
substrings for the following two DNA strings:GAATTCAGTTA
GGATCGA
You have to give the detail.Hint: start from the left table.
Exercises
4. What is longest common sequence (LCS) problem? How to solve LCS using dynamic programming technique?
Lecture 2: Dynamic Programming
Knapsack Problem
Knapsack Problems Given some items, pack the knapsack to get the
maximum total value. Each item has some weight and some benefit. Total weight that we can carry is no more than some fixed capacity.
Fractional knapsack problem– Items are divisible: you can take any fraction of an
item.– Solved with a greedy algorithm.
0-1 knapsack problem– Items are indivisible; you either take an item or not.– Solved with dynamic programming.
Given a knapsack with maximum capacity W, and a set S consisting of n items
Each item i has some weight wi and benefit value bi (all wi and W are integer values)
Problem: How to pack the knapsack to achieve maximum total value of packed items?
0-1 Knapsack Problem
Why it is called a 0-1 Knapsack Problem?
Example: 0-1 Knapsack Problem
Which boxes should be chosen to maximize the amount of money while still keeping the overall weight under 15 kg ?
Example: 0-1 Knapsack Problem
1 {0,1}x
2 {0,1}x
3 {0,1}x
5 {0,1}x
4 {0,1}x
Objective Function
Unknowns or Variables
Constraints's, 1, ,5ix i
, ,0,1 1, 5ix i
1 2 3 4 54 2 10 2 1Maximize
x x x x x
1 2 3 4 512 1Subject t
154 2o
1x x x x x
Formulation: 0-1 Knapsack Problem
1
1
Maximize
Subject t
{0,1}
o
n
i ii
n
i ii
i
b x
w x W
x
0-1 Knapsack Problem: Brute-Force Approach
Since there are n items, there are 2n possible combinations of items.
We go through all combinations and find the one with maximum value and with total weight less or equal to W
Running time will be O(2n)
DP Define Subproblem Suppose that items are labeled 1,..., n. Define a subproblem, say, Pk as to finding an optimal solution for items in Sk = {1, 2,..., k}.
original problem is Pn. Is such a scheme workable? Is the principle of optimality held?
A Counterexample
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 8$
5. 9kgs, 10$20 kgs
P1
P2 P3
P4
P5
A Counterexample
Sub-problem
Optimum Value
P1 1 3$P2 1, 2 7$P3 1, 2, 3 12$P4 1, 2, 3, 4 20$P5 1, 3, 4, 5 26$
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 8$
5. 9kgs, 10$20 kgs
A Counterexample
Sub-problem
Optimum Value
P1 1 3$P2 1, 2 7$P3 1, 2, 3 12$P4 1, 2, 3, 4 20$P5 1, 3, 4, 5 26$
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 8$
5. 9kgs, 10$20 kgs
Solution for P4 is not part of the solution for P5 !!!
DP Define Subproblem Suppose that items are labeled 1,..., n. Define a subproblem, say, Pk as to finding an optimal solution for items in Sk = {1, 2,..., k}.
original problem is Pn. Is such a scheme workable? Is the principle of optimality held?
DP Define Subproblem Suppose that items are labeled 1,..., n. Define a subproblem, say, Pk,w as to finding an optimal solution for items in Sk = {1, 2,..., k} and with total weight no more than w.
original problem is Pn,W. Is such a scheme workable? Is the principle of optimality held?
New version
DP Principle of Optimality
Denote the benefit for the optimal solution of Pk,w as Bk,w.
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
DP Principle of Optimality
Denote the benefit for the optimal solution of Pk,w as Bk,w.
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
In this case, it is impossible to include the kth object.
Not includethe kth object
includethe kth object There are two
possible choices.
Example
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 6$5 kgs
w k 0 1 2 3 4012345
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
Example
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 6$5 kgs
w k 0 1 2 3 4012345
0 0 0 0 000000
Step 1. Setup table and initialize base conditions.
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
Example
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 6$5 kgs
w k 0 1 2 3 4012345
0 0 0 0 000000
03333
Step 2. Fill all table entries progressively.
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
Example
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 6$5 kgs
w k 0 1 2 3 4012345
0 0 0 0 000000
03333
03447
Step 2. Fill all table entries progressively.
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
Example
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 6$5 kgs
w k 0 1 2 3 4012345
0 0 0 0 000000
03333
03447
03457
Step 2. Fill all table entries progressively.
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
Example
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 6$5 kgs
w k 0 1 2 3 4012345
0 0 0 0 000000
03333
03447
03457
03457
Step 2. Fill all table entries progressively.
1,
,1, 1,
if
max , if k
k w k
k wk w k w w k k
B w wB
B B b w w
Example
1. 2kgs, 3$
2. 3kgs, 4$
3. 4kgs, 5$
4. 5kgs, 6$5 kgs
w k 0 1 2 3 4012345
0 0 0 0 000000
03333
03447
03457
03457
Step 3. Trace back
Pseudo-Polynomial Time Algorithm
The time complexity for 0-1 knapsack using DP is O(Wn).
Not a polynomial-time algorithm if W is large. This is a pseudo-polynomial time algorithm.
Lecture 2: Dynamic Programming
All-PairsShortest Path Problem
All-Pairs Shortest Path Problem
Given weighted graph G(V,E), we want to determine the cost dij of the shortest path between each pair of nodes in V.
Vk
Floyd's Algorithm Let be the minimum cost of a path from node i to node j, using only nodes in Vk={v1,…,vk}.
kijd
k
Vk1
i j1kijd
1kikd
1kkjd
1 1 1min , 0
0
k k kij ik kjk
ijij
d d d kd
c k
The all-pairs shortest path problem is to find all paths with costs
nij ijd d i j
Floyd's AlgorithmInput Parameter: DOutput Parameter: D, nextall_paths(D, next) n = D.NumberOfRows;// initialize next: if no intermediate// vertices are allowed next[i][j] = jfor i = 1 to n
for j = 1 to nnext[i][j] = j;
for k = 1 to n // compute D(k) for i = 1 to n for j = 1 to n if (D[i][k] + D[k][j] < D[i][j]) D[i][j] = D[i][k] + D[k][j];
next[i][j] = next[i][k];
O(n3)
1 1 1min , 0
0
k k kij ik kjk
ijij
d d d kd
c k
Floyd's AlgorithmInput Parameters: next, i, jOutput Parameters: Noneprint_path(next, i, j) { // if no intermediate vertices, just
// print i and j and return if (j == next[i][j]) { print(i + “ ” + j); return; } // output i and then the path from the vertex // after i (next[i][j]) to j print(i + “ ”); print_path(next,next[i][j], j);}
Lecture 2: Dynamic Programming
Traveling Salesman Problem
Traveling Salesman Problem (TSP)
Traveling Salesman Problem (TSP)
How many feasible paths?
n cities
! ( 1)!2 2n nn
Example (TSP)
1 2
3 4
2
6 4 7 6
5
(1234) = 18(1243) = 19(1324) = 23(1342) = 19(1423) = 23(1432) = 18
Subproblem Formulation for TSP
1 S
i
g(i, S) length of the shortest path from i to 1 visiting each city in S exactly once.
g(1, V {1})length of the optimal TSP tour.
Subproblem Formulation for TSP
1 S
i
g(i, S) length of the shortest path from i to 1 visiting each city in S exactly once.
S{j}
j
( , ) min ( , { })ijj Sg i S d g j S j
dij
Goal: g(1, V {1})
Example ( , ) min ( , { })ijj S
g i S d g j S j
Goal: g(1, V {1})
4 4
2 6 42 7 66 7 54 6 5
ijD d
(1,{2,3,4})g
(2,{3,4})g
d12
(3,{2, 4})g
d13
(4,{2,3})g
d14
(3,{4})g
d23
(4,{3})g
d24
(2,{4})g
d32
(4,{2})g
d34
(2,{3})g
d42
(3,{2})g
d43
(4, )g
d34
(3, )g
d43
(4, )g
d24
(2, )g
d42
(3, )g
d23
(2, )g
d32
11 22
33 44
2
6 4 7 6
5
11 22
33 44
2
6 4 7 6
5
Example ( , ) min ( , { })ijj S
g i S d g j S j
Goal: g(1, V {1})
4 4
2 6 42 7 66 7 54 6 5
ijD d
(1,{2,3,4})g
(2,{3,4})g
d12
(3,{2, 4})g
d13
(4,{2,3})g
d14
(3,{4})g
d23
(4,{3})g
d24
(2,{4})g
d32
(4,{2})g
d34
(2,{3})g
d42
(3,{2})g
d43
(4, )g
d34
(3, )g
d43
(4, )g
d24
(2, )g
d42
(3, )g
d23
(2, )g
d32
4 6 4 2 6 2
5 5 6 6 7 7
9 11 10 8 13 97 6 7 5 6 5
16 13 142 6 4
11 22
33 44
2
6 4 7 6
5
11 22
33 44
2
6 4 7 6
5
18
DP TSP AlgorithmInput Parameter: DOutput Parameter: P // pathTSP(D) n = Dim(D);for i = 1 to n
g[i, ] = D[i, 1];for k = 1 to n2 // compute g for subproblems for all S V{1} with |S|=k for all i S {1}
g[i, S] = minjS{D[i, j], g[j, S {j}] };P[i, S] = arg minjS{D[i, j], g[j, S {j}] };
// compute the TSP tourg[1, V{1}] = minjV{1}{D[1, j], g[j, V {1, j}]};P[1, V{1}] = arg minjV{1}{D[1, j], g[j, V {1, j}]};
( , ) min ( , { })ijj Sg i S d g j S j
Goal: g(1, V {1})
DP TSP AlgorithmInput Parameter: DOutput Parameter: P // pathTSP(D) n = Dim(D);for i = 1 to n
g[i, ] = D[i, 1];for k = 1 to n2 // compute g for subproblems for all S V{1} with |S|=k for all i S {1}
g[i, S] = minjS{D[i, j], g[j, S {j}] };P[i, S] = arg minjS{D[i, j], g[j, S {j}] };
// compute the TSP tourg[1, V{1}] = minjV{1}{D[1, j], g[j, V {1, j}]};P[1, V{1}] = arg minjV{1}{D[1, j], g[j, V {1, j}]};
O(2n)
( , ) min ( , { })ijj Sg i S d g j S j
Goal: g(1, V {1})
Top Related