3/28/18 1
Objec&ves
- Dynamic Programming
Ø Review Knapsack Ø Sequence Alignment
Mar 28, 2018 1 CSCI211 - Sprenkle
Review
- What is the knapsack problem?
- What is our solu&on?
Mar 28, 2018 CSCI211 - Sprenkle 2
Objec&ves Dynamic Programming Review Knapsack Sequence - - PDF document
3/28/18 Objec&ves Dynamic Programming Review Knapsack Sequence Alignment Mar 28, 2018 CSCI211 - Sprenkle 1 Review What is the knapsack problem? What is our solu&on? Mar 28, 2018 CSCI211 - Sprenkle 2 1 3/28/18
Mar 28, 2018 1 CSCI211 - Sprenkle
Mar 28, 2018 CSCI211 - Sprenkle 2
Mar 28, 2018 CSCI211 - Sprenkle 3
OPT(i, w) = if i = 0 OPT(i −1, w) if wi > w max OPT(i −1, w), vi + OPT(i −1, w− wi)
{ }
# $ % & %
Mar 28, 2018 CSCI211 - Sprenkle 4
Input: W, N, w Input: W, N, w1,…, ,…,wN,
, v1,…,
,…,vN for for w = 0 = 0 to to W W M[0, M[0, w] = 0 ] = 0 for for i = 1 = 1 to to N N # for all items
# for all items
for for w = 1 w = 1 to to W W # for all possible weights
# for all possible weights
if if wi > > w : : # item’s weight is more than available
# item’s weight is more than available
M[i M[i, , w] = M[i-1, ] = M[i-1, w] else else M[i M[i, , w] = max{ M[i-1, ] = max{ M[i-1, w], v ], vi
i + M[i-1,
+ M[i-1, w-w w-wi] } ] } return return M[N, W] M[N, W]
Mar 28, 2018 CSCI211 - Sprenkle 5
Mar 28, 2018 CSCI211 - Sprenkle 6
n + 1
1 Value 18 22 28 1 Weight 5 6 6 2 7 Item 1 3 4 5 2 φ { 1, 2 } { 1, 2, 3 } { 1, 2, 3, 4 } { 1 } { 1, 2, 3, 4, 5 } 1
1 1 1 1
2
6 6 6 1
3
7 7 7 1
4
7 7 7 1
5
7 18 18 1
6
7 19 22 1
7
7 24 24 1
8
7 25 28 1
9
7 25 29 1
10
7 25 29 1
11
7 25 40 1
W + 1
W = 11
i = 4
Mar 28, 2018 CSCI211 - Sprenkle 7
n + 1
1 Value 18 22 28 1 Weight 5 6 6 2 7 Item 1 3 4 5 2 φ { 1, 2 } { 1, 2, 3 } { 1, 2, 3, 4 } { 1 } { 1, 2, 3, 4, 5 } 1
1 1 1 1 1
2
6 6 6 1 6
3
7 7 7 1 7
4
7 7 7 1 7
5
7 18 18 1 18
6
7 19 22 1 22
7
7 24 24 1 28
8
7 25 28 1 29
9
7 25 29 1 34
10
7 25 29 1 35
11
7 25 40 1 40
W + 1
W = 11
i = 5
Mar 28, 2018 CSCI211 - Sprenkle 8
n + 1
1 Value 18 22 28 1 Weight 5 6 6 2 7 Item 1 3 4 5 2 φ { 1, 2 } { 1, 2, 3 } { 1, 2, 3, 4 } { 1 } { 1, 2, 3, 4, 5 } 1
1 1 1 1 1
2
6 6 6 1 6
3
7 7 7 1 7
4
7 7 7 1 7
5
7 18 18 1 18
6
7 19 22 1 22
7
7 24 24 1 28
8
7 25 28 1 29
9
7 25 29 1 34
10
7 25 29 1 35
11
7 25 40 1 40
W + 1
W = 11
i = 5
Mar 28, 2018 CSCI211 - Sprenkle 9
n + 1
1 Value 18 22 28 1 Weight 5 6 6 2 7 Item 1 3 4 5 2 φ { 1, 2 } { 1, 2, 3 } { 1, 2, 3, 4 } { 1 } { 1, 2, 3, 4, 5 } 1
1 1 1 1 1
2
6 6 6 1 6
3
7 7 7 1 7
4
7 7 7 1 7
5
7 18 18 1 18
6
7 19 22 1 22
7
7 24 24 1 28
8
7 25 28 1 29
9
7 25 29 1 34
10
7 25 29 1 35
11
7 25 40 1 40
W + 1
W = 11
Mar 28, 2018 CSCI211 - Sprenkle 10
Mar 28, 2018 CSCI211 - Sprenkle 11
u r r a n c e c c u r r e n c e
u r r a n c e c c u r r e n c e
u r r n c e c c u r r n c e
e
Mar 28, 2018 CSCI211 - Sprenkle 12
C G A C C T A C C T C T G A C T A C A T T G A C C T A C C T C T G A C T A C A T
C C C
Mar 28, 2018 CSCI211 - Sprenkle 13
u r e r n c e c c u r r e n c e
u r e r n c e c c u r r e n c e
Mar 28, 2018 CSCI211 - Sprenkle 14
C T A C C
A C A T
G
y1 y2 y3 y4 y5 y6 x2 x3 x4 x5 x1 x6 cost(M) = αxi y j
(xi, y j) ∈ M
mismatch
+ δ
i : xi unmatched
+ δ
j : y j unmatched
gap
Mar 28, 2018 CSCI211 - Sprenkle 15
Mar 28, 2018 CSCI211 - Sprenkle 16
Mar 28, 2018 CSCI211 - Sprenkle 17
Mar 28, 2018 CSCI211 - Sprenkle 18
Mar 28, 2018 CSCI211 - Sprenkle 19
Mar 28, 2018 CSCI211 - Sprenkle 20
OPT(i, j) = " # $ $ $ % $ $ $ jδ if i = 0 min αxi y j +OPT(i −1, j −1) δ +OPT(i −1, j) δ +OPT(i, j −1) " # $ % $
iδ if j= 0
Mar 28, 2018 CSCI211 - Sprenkle 21
, yj] + M[i-1, j-1],
Mar 28, 2018 CSCI211 - Sprenkle 22
α = 1, for vowel mismatch α = 2, for other mismatches δ = 2
Mar 28, 2018 CSCI211 - Sprenkle 23
α = 1, for vowel mismatch α = 2, for other mismatches δ = 2
Mar 28, 2018 CSCI211 - Sprenkle 24
α = 1, for vowel mismatch α = 2, for other mismatches δ = 2
Mar 28, 2018 CSCI211 - Sprenkle 25
α = 1, for vowel mismatch α = 2, for other mismatches δ = 2
Mar 28, 2018 CSCI211 - Sprenkle 26
α = 1, for vowel mismatch α = 2, for other mismatches δ = 2
Mar 28, 2018 CSCI211 - Sprenkle 27
α = 1, for vowel mismatch α = 2, for other mismatches δ = 2
Mar 28, 2018 CSCI211 - Sprenkle 28
α = 1, for vowel mismatch α = 2, for other mismatches δ = 2
, yj] + M[i-1, j-1],
Mar 28, 2018 CSCI211 - Sprenkle 29
Mar 28, 2018 CSCI211 - Sprenkle 30
, yj] + M[i-1, j-1],
, yj] + M[i-1, j-1],
Mar 28, 2018 CSCI211 - Sprenkle 31
Mar 28, 2018 CSCI211 - Sprenkle 32
Mar 28, 2018 CSCI211 - Sprenkle 33
Space-Efficient- Space-Efficient-Alignment(m Alignment(m, , n, x , x1x2... ...xm, y , y1y2... ...yn, , δ, , α) ) for for i = 0 = 0 to to m # initialize first row # initialize first row M[i M[i, 0] = , 0] = iδ for for j = 1 = 1 to to n M[0, 1] = M[0, 1] = jδ # first gap # first gap for for i = 1 = 1 to to m M[i M[i, 1] = , 1] = min( min(α[x [xi,
, yj] + M[i-1, 0],
] + M[i-1, 0], δ + + M[i M[i, 0], , 0], δ + M[i-1, 1]) + M[i-1, 1]) for for i = 1 = 1 to to m # copy current row into previous # copy current row into previous M[i M[i, 0] = , 0] = M[i M[i, 1] , 1] return return M[m M[m, 1] , 1]
Mar 28, 2018 CSCI211 - Sprenkle 34
Space-Efficient- Space-Efficient-Alignment(m Alignment(m, , n, x , x1x2... ...xm, y , y1y2... ...yn, , δ, , α) ) for for i = 0 = 0 to to m m # initialize first row # initialize first row M[i M[i, 0] = , 0] = iδ for for j = 1 = 1 to to n M[0, 1] = M[0, 1] = jδ # first gap # first gap for for i = 1 = 1 to to m M[i M[i, 1] = , 1] = min( min(α[x [xi,
, yj] + M[i-1, 0],
] + M[i-1, 0], δ + + M[i M[i, 0], , 0], δ + M[i-1, 1]) + M[i-1, 1]) for for i = 1 = 1 to to m # copy current row into previous # copy current row into previous M[i M[i, 0] = , 0] = M[i M[i, 1] , 1] return return M[m M[m, 1] , 1]
Mar 28, 2018 CSCI211 - Sprenkle 35
Mar 28, 2018 CSCI211 - Sprenkle 36
Mar 28, 2018 CSCI211 - Sprenkle 37