Professional Documents
Culture Documents
Dynamic Programming
Dynamic Programming
DYNAMIC PROGRAMMING
Acknowledgement: The course slides are adapted from the slides prepared by K. Wayne of Princeton
University.
Algorithmic paradigms
Greed. Process the input in some order, myopically making irrevocable decisions.
fancy name fo
caching intermediate result
in a table for later reuse
2
r
fl
.
Application areas.
・Computer science: AI, compilers, systems, graphics, theory, …
・Operations research
・Information theory
・Control theory
・Bioinformatics
Some famous dynamic programming algorithms.
・Avidan–Shamir for seam carving
・Unix diff for comparing two les
・Viterbi for hidden Markov models
・De Boor for evaluating spline curves
・Bellman–Ford–Moore for shortest path
・Knuth–Plass for word wrapping text in T X
・Cocke–Kasami–Younger for parsing context-free grammars
<latexit sha1_base64="EhG7/UUHfhF6o3p74Glw1DH78ik=">AAACK3icbVBNS8NAEN34WetXW49egkXwVBIRrLeCF48VGltoQ9lspu3SzSbsTqQl9C941V/hr/GiePV/mKQ52NYHC4/3ZnZmnhcJrtGyPo2t7Z3dvf3SQfnw6PjktFKtPekwVgwcFopQ9TyqQXAJDnIU0IsU0MAT0PWm95nffQaleSg7OI/ADehY8hFnFDNp0IHesFK3GlYOc5PYBamTAu1h1agN/JDFAUhkgmrdt60I3YQq5EzAojyINUSUTekY+imVNADtJvmyC/MyVXxzFKr0STRz9W9HQgOt54GXVgYUJ3rdy8T/vH6Mo6abcBnFCJItB41iYWJoZpebPlfAUMxTQpni6a4mm1BFGab5rEzJ/46ArVySzGLJWejDmipwhoou0hTt9cw2iXPduGvYjzf1VrOIs0TOyQW5Ija5JS3yQNrEIYxMyAt5JW/Gu/FhfBnfy9Ito+g5Iyswfn4BrkOohg==</latexit>
sha1_base64="K4LIWrwvep29t51jV7N8ecuok+0=">AAACGXicbVBNT8JAEN3iFyIqePWykZh4Iq0X9WbixSMmVkigIdvtFDZst83u1EAa/oBXf4W/xpMx/huXwkHAl2zy8t7MzswLMykMuu6PU9nZ3ds/qB7Wjuq145PTRv3FpLnm4PNUproXMgNSKPBRoIRepoEloYRuOHlY+N1X0Eak6hlnGQQJGykRC87QSp1ho+W23RJ0m3gr0iIrDJvO2SBKeZ6AQi6ZMX3PzTAomEbBJcxrg9xAxviEjaBvqWIJmKAo95zTS6tENE61fQppqf7tKFhizCwJbWXCcGw2vYX4n9fPMb4NCqGyHEHx5aA4lxRTujiaRkIDRzmzhHEt7K6Uj5lmHG00a1PKvzPga5cU01wJnkawoUqcomZzG6K3Gdk28a/bd23vySVVck4uyBXxyA25J4+kQ3zCSUTeyLvz4Xw6X8usK84q9CZZg/P9C1n2pHk=</latexit>
sha1_base64="SWKETCWkcgZ0sm6ZDiXeRUTM5+0=">AAACIHicbVBNT8JAEJ36iYgKXL1sJCaeSOtFvZl48YgJCAk0ZLsMsGG7bXanBtLwF7zqr/DXeNH4YyyFg4Av2eTlvZmdmRfESlpy3S9nZ3dv/+CwcFQ8Lp2cnpUrpWcbJUZgS0QqMp2AW1RSY4skKezEBnkYKGwHk4eF335BY2WkmzSL0Q/5SMuhFJwWUq+JnX655tbdHGybeCtSgxUa/YpT7Q0ikYSoSShubddzY/JTbkgKhfNiL7EYczHhI+xmVPMQrZ/my87ZZaYM2DAy2dPEcvVvR8pDa2dhkFWGnMZ201uI/3ndhIa3fip1nBBqsRw0TBSjiC0uZwNpUJCaZYQLI7NdmRhzwwVl+axNyf+OUaxdkk4TLUU0wA1V0ZQMn2cpepuZbZPWdf2u7j25UIBzuIAr8OAG7uERGtACAWN4hTd4dz6cT+d7GfeOs8q9Cmtwfn4BcFCm+g==</latexit>
sha1_base64="HJV6YlmlVjnPgPYqeSt99ZGHmBg=">AAACK3icbVBNT8JAEN3iF+IX4NFLIzHxRFov4o3Ei0dMqJBAQ7bbATZst83u1EAa/oJX/RX+Gi8ar/4P29KDgC/Z5OW9mZ2Z50WCa7SsT6O0s7u3f1A+rBwdn5yeVWv1Jx3GioHDQhGqvkc1CC7BQY4C+pECGngCet7sPvN7z6A0D2UXFxG4AZ1IPuaMYiYNu9AfVRtW08phbhO7IA1SoDOqGfWhH7I4AIlMUK0HthWhm1CFnAlYVoaxhoiyGZ3AIKWSBqDdJF92aV6lim+OQ5U+iWau/u1IaKD1IvDSyoDiVG96mfifN4hx3HITLqMYQbLVoHEsTAzN7HLT5woYikVKKFM83dVkU6oowzSftSn53xGwtUuSeSw5C33YUAXOUdFlmqK9mdk2cW6ad0370Wq0W0WcZXJBLsk1scktaZMH0iEOYWRKXsgreTPejQ/jy/helZaMouecrMH4+QWtA6iC</latexit>
fi
.
‣ Fibonacci number
‣ weighted interval schedulin
‣ segmented least square
‣ knapsack proble
‣ RNA secondary structur
‣ sequence alignment
m
mbers
Fibonacci numbers
Fibonacci numbers
Fibonacci
mbers. numbers.
0, 1, numbers.
Fibonacci 1, 0,13,
2, 3, 0,5,1,8,1, 1,3,1,5,
2, 21,2,8, 3,
34,
13,5,21,
8,34,
55,13,
89,21,
55, …34,
89, ... 55, 89, …
Fibonacci numbers
8 8 <latexit sha1_base64="lG5KV5dzjHqxJdRxPd6Wu2waeY8=">AAACsXicbVFda9swFJXdfXTZR9P2cRtcFlYGY8HqNloYG4VB2WMHS9sRB0+Wr1MRWTKSPBKMn/cb+yP6HyYnHixpLwgO5xzdq3uUllJYF0XXQbh17/6Dh9uPeo+fPH2209/dO7e6MhxHXEttLlNmUQqFIyecxMvSICtSiRfp7GurX/xGY4VWP9yixEnBpkrkgjPnqaT/5zQR8BniFKdC1dx3sk0v/gQRHMRFque1yKEBT7SuCOIYWpXepdJ/6mlSi3e0gbcrdNjAAWzavwDtxaiybiQk/UE0jJYFtwHtwIB0dZbsBntxpnlVoHJcMmvHNCrdpGbGCS7RL1FZLBmfsSmOPVSsQDupl4k18NozGeTa+KMcLNn/b9SssHZRpN5ZMHdlN7WWvEsbVy4/ntRClZVDxVeD8kqC09DGD5kwyJ1ceMC4Ef6twK+YYdz5T1qbsuxdIl/bpJ5XSnCd4QYr3dwZ1vgU6WZmt8H54ZB+HEbfPwxOjrs8t8lz8oq8IZQckRPyjZyREeHkJtgPXgQvw/fhz/BXmK6sYdDd2SdrFc7+Ai0pzMY=</latexit>
>
< 0 i = 0
> 0
<Fibonacci numbers. 0, 1, 1, 2,i 3,=5, 08, 13, 21, 34, 55, 89, …
Fi = 1 i=1
= 1 8
> 0
>
: i = 1
<latexit sha1_base64="lG5KV5dzjHqxJdRxPd6Wu2waeY8=">AAACsXicbVFda9swFJXdfXTZR9P2cRtcFlYGY8HqNloYG4VB2WMHS9sRB0+Wr1MRWTKSPBKMn/cb+yP6HyYnHixpLwgO5xzdq3uUllJYF0XXQbh17/6Dh9uPeo+fPH2209/dO7e6MhxHXEttLlNmUQqFIyecxMvSICtSiRfp7GurX/xGY4VWP9yixEnBpkrkgjPnqaT/5zQR8BniFKdC1dx3sk0v/gQRHMRFque1yKEBT7SuCOIYWpXepdJ/6mlSi3e0gbcrdNjAAWzavwDtxaiybiQk/UE0jJYFtwHtwIB0dZbsBntxpnlVoHJcMmvHNCrdpGbGCS7RL1FZLBmfsSmOPVSsQDupl4k18NozGeTa+KMcLNn/b9SssHZRpN5ZMHdlN7WWvEsbVy4/ntRClZVDxVeD8kqC09DGD5kwyJ1ceMC4Ef6twK+YYdz5T1qbsuxdIl/bpJ5XSnCd4QYr3dwZ1vgU6WZmt8H54ZB+HEbfPwxOjrs8t8lz8oq8IZQckRPyjZyREeHkJtgPXgQvw/fhz/BXmK6sYdDd2SdrFc7+Ai0pzMY=</latexit>
i =0
>
:
<
Fi =
F i 1 + Fi 2 i>1
Fi + F>
1
i > i1= 1 Leonardo Fib
1 :i 2
Fi 1 + Fi 2 i>1 Leonardo Fibonacci
Leonardo Fibonacci
3 5 8 13
3 5 8 13
5 8 13
21 34 55 89
7
>
< 0 i = 0
Fi = 1 i=1
Fi =>
: 1
F + F i > i
1 = 1
>i 1 i 2
:
Fi 1 + Fi 2 i>1
Leonardo Fib
Memoization.
Memoization.
・Maintain an array (or symbol table) to remember all computed values
Maintain an array (or symbol table) to remember all computed values.
・If value to compute is known, just return it;
If value to compute is known, just return it;
otherwise, compute
otherwise, it; remember
compute it; and
it; remember it; return it. it.
and return
assume
assumeglobal long
global array
long initialized
f[],f[],
array to 0 to 0
initialized
Impact. Solves each subproblem Fi only once; Θ(n) time to compute Fn.
Impact. Solves each subproblem Fi only once; Θ(n) time to compute Fn.
10
DYNAMIC PROGRAMMING
‣ Fibonacci number
‣ weighted interval schedulin
‣ segmented least square
‣ knapsack proble
‣ RNA secondary structur
‣ sequence alignment
m
sj wj fj
h
time
0 1 2 3 4 5 6 7 8 9 10 11
14
fi
fi
.
8
time
0 1 2 3 4 5 6 7 8 9 10 11
15
l
fi
.
Def. OPT( j) = max weight of any subset of mutually compatible jobs for subproblem
consisting only of jobs 1, 2, ..., j
Goal. OPT(n) = max weight of any subset of mutually compatible jobs
Case 1. OPT(j) does not select job j.
・Must be an optimal solution to problem consisting of remaining
jobs 1, 2, ..., j – 1.
optimal substructure propert
Case 2. OPT(j) selects job j (proof via exchange argument)
・Collect pro t wj
・Can’t use incompatible jobs { p(j) + 1, p(j) + 2, ..., j – 1 }
・Must include optimal solution to problem consisting of remaining compatible
jobs 1, 2, ..., p( j)
0 j=0
Bellman equation. OP T (j) =
<latexit sha1_base64="qEOy02oDztIDL8rE3HZJCxx6JUo=">AAACxnicbVHbattAEF0pvaTuzUkf+zLUtMQ0NVJSaIpJCfSlfaoLcRPwCrNajex1Viuxu2pshKE/0g/r33Sl6KG2O7BwODN7ZuZMXEhhbBD88fy9e/cfPNx/1Hn85Omz592Dwx8mLzXHMc9lrq9jZlAKhWMrrMTrQiPLYolX8c3nOn/1E7URubq0qwKjjM2USAVn1lHT7u9vo8ujRR/o8JwOOzTGmVAVd4Jm3aHDAN4Atbi0UIFIYQ0LOIcAKJ0MTjGLXAXN2BKoxNQCrYAeQ6P3LuwfO0m4nS7gbUMVrkm/zlMtZnNXvN6V/tRIdyiqpB1h2u0Fg6AJ2AVhC3qkjdH0wDukSc7LDJXlkhkzCYPCRhXTVnCJbqfSYMH4DZvhxEHFMjRR1fi4hteOSSDNtXvKQsP++6NimTGrLHaVGbNzs52ryf/lJqVNz6JKqKK0qPhdo7SUYHOojwKJ0MitXDnAuBZuVuBzphm37nQbXRrtAvnGJtWyVILnCW6x0i6tZrWL4bZnu2B8Mvg4CL+/712ctXbuk5fkFTkiIflALsgXMiJjwr09r++deKf+Vz/3S//2rtT32j8vyEb4v/4CZY/TYA==</latexit>
max { OP T (j 1), wj + OP T (p(j)) } j>0
16
fi
.
COMPUTE-OPT( j )
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
IF (j = 0
RETURN 0
ELSE
RETURN max {COMPUTE-OPT( j – 1), wj + COMPUTE-OPT( p[ j ]) }.
17
)
fi
.
1 4 3
2
3 2 2 1
3
4
2 1 1 0 1 0
5
recursion tree
18
RETURN M-COMPUTE-OPT(n).
M-COMPUTE-OPT( j )
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
IF (M [ j] is uninitialized
M [ j] ← max { M-COMPUTE-OPT (j – 1), wj + M-COMPUTE-OPT(p[ j]) }
RETURN M [ j].
19
fi
)
20
.
fi
21
.
fi
22
Weighted interval scheduling: Finding a solution
IF (j = 0
RETURN ∅
ELSE IF (wj + M[p[ j]] > M [ j – 1]
RETURN { j } ∪ FIND-SOLUTION(p[ j])
ELSE
RETURN FIND-SOLUTION( j – 1).
M [ j] = max { M[j – 1], wj + M[p[j]] }.
Analysis. # of recursive calls ≤ n ⇒ O(n).
23
)
fi
.
Sort jobs by nish time and renumber so that f1 ≤ f2 ≤ … ≤ fn
Compute p[1], p[2], …, p[n]
M[0] ← 0 previously computed values
FOR j = 1 TO n
Running time. The bottom-up version takes O(n log n) time.
24
.
fi
.
fi
.
DYNAMIC PROGRAMMING
‣ Fibonacci number
‣ weighted interval schedulin
‣ segmented least square
‣ knapsack proble
‣ RNA secondary structur
‣ sequence alignment
m
Least squares
x
Solution. Calculus ⇒ min error is achieved when
! ! ! ! !
n ix i yi − ( i xi )( i yi ) i yi − a i xi
a = ! 2 ! 2
, b =
<latexit sha1_base64="uSR6MIDaEDPJwkbPgs/ygO2X/DQ=">AAACunicbVHbatwwEJXdW5reNuljKYgubRNoF3tfklICgb70MYVuE1hvzFgeJ2Jl2ZVGYRfjj+jn9Uv6WnmzJVmnA5IOZ87MSEdZraSlKPodhPfuP3j4aOvx9pOnz56/GOzs/rCVMwInolKVOcvAopIaJyRJ4VltEMpM4Wk2/9LlT6/QWFnp77SscVbChZaFFECeSge/gCef+VG3JYUB0WieWFemki9SufTHR753Q+z/wz6z325oz8c96fm4/cCTnw5ynvVm3DTxNXCriW/ZpoNhNIpWwe+CeA2GbB0n6U6wm+SVcCVqEgqsncZRTbMGDEmhsN1OnMUaxBwucOqhhhLtrFl51/K3nsl5URm/NPEVe7uigdLaZZl5ZQl0afu5jvxfbuqoOJw1UteOUIvrQYVTnCrefQTPpUFBaukBCCP9Xbm4BG8P+e/amLLqXaPYeEmzcFqKKsceq2hBBjoX475nd8FkPPo0ir9Fw+PDtZ1b7BV7w/ZYzA7YMfvKTtiECfYneB28C96HR6EIZTi/lobBuuYl24iQ/gJmldVD</latexit>
sha1_base64="h5fKMH7NWGnBcmDeMLEiuZrLM70=">AAACunicbVFNb9QwEHXCVylf23JESBYV0EqwSvbSIlSpEheORWJppc02mjiT1lrHCfYY7SrKj+BncOTncONfcMXZLWo3ZSTbT2/ezNjPWa2kpSj6FYS3bt+5e2/j/uaDh48ePxlsbX+xlTMCx6JSlTnNwKKSGsckSeFpbRDKTOFJNvvQ5U++obGy0p9pUeO0hHMtCymAPJUOvgNP3vPDbksKA6LRPLGuTCWfp3Lhj7d894rY+4d9Zq9d056NetKzUfuGJ18d5Dzrzbhq4mvgWhPfsk0HO9EwWga/CeJLsHO0/+Pnb8bYcboVbCd5JVyJmoQCaydxVNO0AUNSKGw3E2exBjGDc5x4qKFEO22W3rX8pWdyXlTGL018yV6vaKC0dlFmXlkCXdh+riP/l5s4Kg6mjdS1I9RiNahwilPFu4/guTQoSC08AGGkvysXF+DtIf9da1OWvWsUay9p5k5LUeXYYxXNyUDnYtz37CYYj4bvhvEn7+YBW8UGe8ZesF0Ws312xD6yYzZmgv0JngevgtfhYShCGc5W0jC4rHnK1iKkv7SR1/Q=</latexit>
sha1_base64="osgmybCFlDRwfvDA5+Vdeo/74To=">AAACunicbVHBTtwwEHXSllJaYKHHqpJV1BYErJK9AKqQkHrhSKVuQdos0cRxwFrHSe1xtaso4hv4DI79HI79il5xdqlgQ0ey/fTmzYz9nJRSGAyCW89/9vzFwsvFV0uv3yyvrHbW1n+YwmrG+6yQhT5LwHApFO+jQMnPSs0hTyQ/TUZfm/zpL66NKNR3nJR8mMOFEplggI6KO9dAoy/0sNmiTAOrFI2MzWNBx7GYuGOXbj4QW/+wy2zVc9rzXkt63qt3aPTTQkqT1oyHJq4GHjVxLeu4sxF0g2nQpyC8BxtHeze/b7ev/pzEa956lBbM5lwhk2DMIAxKHFagUTDJ66XIGl4CG8EFHzioIOdmWE29q+lHx6Q0K7RbCumUfVxRQW7MJE+cMge8NO1cQ/4vN7CY7Q8roUqLXLHZoMxKigVtPoKmQnOGcuIAMC3cXSm7BGcPuu+amzLtXXI295JqbJVgRcpbrMQxamhcDNuePQX9XvegG35zbu6TWSySd+QD2SQh2SNH5JickD5h5K/33vvkffYPfeYLfzST+t59zVsyFz7eARtS2Xg=</latexit>
n i xi − ( i x i ) n
27
.
x 28
fi
fi
.
x 29
fi
.
Notation
・OPT( j) = minimum cost for points p1, p2, …, pj
・ei = SSE for for points pi, pi+1, …, pj
To compute OPT( j)
・Last segment uses points pi, pi+1, …, pj for some i ≤ j
・Cost = eij + c + OPT(i – 1) optimal substructure propert
Bellman equation.
0 j=0
OP T (j) =
min { eij + c + OP T (i 1) } j>0
<latexit sha1_base64="3Vqhon9XuZlMDxUy0KO6LsmTpKw=">AAAC6XicbVFNaxsxENVuv1L3I0567GWoaUgoNbtpoQkmJdBLD4W6ECcByxitPGvL0WoXSRtsxP6Jnkqv/SP9G/031W58qO0OSHq8edKbGSWFFMZG0Z8gvHf/wcNHO49bT54+e77b3tu/NHmpOQ54LnN9nTCDUigcWGElXhcaWZZIvEpuPtX5q1vURuTqwi4LHGVsqkQqOLOeGrd/f+1fHM6PgPbOaK9FE5wK5bh/0FQt2ovgAKjFhQUHIoUK5nAGEVA67L7DbOQVNBOKSpEJa8aOmjIxlvEbVyuOvQJioBJBNPu8quoztUCdNwQcOzGv4A1wv+o6xNv4yPNUi+nMi6pt94+Ne4uimqyqHLc7UTdqArZBvAIdsor+eC/Yp5OclxkqyyUzZhhHhR05pq3gEn3bpcHCN8GmOPRQsQzNyDWjruC1ZyaQ5tovZaFh/73hWGbMMku8MmN2ZjZzNfm/3LC06cnICVWUFhW/M0pLCTaH+t9gIjRyK5ceMK6FrxX4jGnGrf/dNZfm7QL5WiduUSrB8wlusNIurGb1FOPNmW2DwXH3tBt/e985P1mNc4e8JK/IIYnJB3JOPpM+GRAeHARfgkFwGcrwe/gj/HknDYPVnRdkLcJffwFz2eL9</latexit>
1 i j
30
.
FOR j = 1 TO n
FOR i = 1 TO j
Compute the SSE eij for the points pi, pi+1, …, pj
M [ 0] ← 0
previously computed value
FOR j = 1 TO n
M [ j] ← min 1 ≤ i ≤ j { eij + c + M [ i – 1] }
RETURN M [ n]
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
31
.
DYNAMIC PROGRAMMING
‣ Fibonacci number
‣ weighted interval schedulin
‣ segmented least square
‣ knapsack proble
‣ RNA secondary structur
‣ sequence alignment
m
Knapsack problem
$18
1 $1 1 kg
g weights and value
5k
$22 g
6k can be arbitrar
2 $6 2 kg
11 kg positive integers
3 $18 5 kg
$6 2 kg
4 $22 6 kg
g
5 $28 7 kg
$28
7k
$1 g
1k
knapsack instanc
Creative Commons Attribution-Share Alike 2.
(weight limit W = 11)
by Dake 34
y
・ Collect value vi
(proof via exchange argument)
OP T (i, w) = OP T (i 1, w) wi > w
<latexit sha1_base64="yGc+dBk4QwRLdPr1J0EKEi2YjzI=">AAADBHicbVFNb9NAEF2brxK+0nLkMiICFZFGNkKlKCoq4sKNIDW0UjaK1puxs+p67e6um0RWzvwaTogr/wPxZ1i7OTgpI6309Gbem9mZKJfC2CD44/m3bt+5e2/nfuvBw0ePn7R3976ZrNAchzyTmT6PmEEpFA6tsBLPc40sjSSeRRefqvzZFWojMnVqlzmOU5YoEQvOrKMm7b9fBqf7ogvzV0D7x7TfohEmQpXceZpVi/YDeAnU4sJCCSKGFQg4hgAoHfUOMR27itrhIKw9tmrnEwEfYN6spilbAJUYW6Cl6wkNeRdot6KunOx1I3HgfKr5gGqRzJxw1WiU2RnquTDo+lHaoqim6+kn7U7QC+qAmyBcgw5Zx2Cy6+3RacaLFJXlkhkzCoPcjkumreAS3ToKgznjFyzBkYOKpWjGZX2FFbxwzBTiTLunLNRsU1Gy1JhlGrnKlNmZ2c5V5P9yo8LGR+NSqLywqPh1o7iQYDOoTgpToZFbuXSAcS3crMBnTDNu3eE3utTeOfKNn5SLQgmeTXGLlXZhNau2GG7v7CYYvum974Vf33ZOjtbr3CHPyHOyT0LyjpyQz2RAhoR7H73Ey71L/7v/w//p/7ou9b215inZCP/3P7Vj6Os=</latexit>
max { OP T (i 1, w), vi + OP T (i 1, w wi ) }
35
.
FOR w = 0 TO W
M [ 0, w] ← 0.
RETURN M [ n, W]
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
0 i=0
OP T (i, w) = OP T (i 1, w) wi > w
<latexit sha1_base64="yGc+dBk4QwRLdPr1J0EKEi2YjzI=">AAADBHicbVFNb9NAEF2brxK+0nLkMiICFZFGNkKlKCoq4sKNIDW0UjaK1puxs+p67e6um0RWzvwaTogr/wPxZ1i7OTgpI6309Gbem9mZKJfC2CD44/m3bt+5e2/nfuvBw0ePn7R3976ZrNAchzyTmT6PmEEpFA6tsBLPc40sjSSeRRefqvzZFWojMnVqlzmOU5YoEQvOrKMm7b9fBqf7ogvzV0D7x7TfohEmQpXceZpVi/YDeAnU4sJCCSKGFQg4hgAoHfUOMR27itrhIKw9tmrnEwEfYN6spilbAJUYW6Cl6wkNeRdot6KunOx1I3HgfKr5gGqRzJxw1WiU2RnquTDo+lHaoqim6+kn7U7QC+qAmyBcgw5Zx2Cy6+3RacaLFJXlkhkzCoPcjkumreAS3ToKgznjFyzBkYOKpWjGZX2FFbxwzBTiTLunLNRsU1Gy1JhlGrnKlNmZ2c5V5P9yo8LGR+NSqLywqPh1o7iQYDOoTgpToZFbuXSAcS3crMBnTDNu3eE3utTeOfKNn5SLQgmeTXGLlXZhNau2GG7v7CYYvum974Vf33ZOjtbr3CHPyHOyT0LyjpyQz2RAhoR7H73Ey71L/7v/w//p/7ou9b215inZCP/3P7Vj6Os=</latexit>
max { OP T (i 1, w), vi + OP T (i 1, w wi ) }
36
n
.
Knapsack problem: Bottom-up dynamic programming
i vi wi
1 $1 1 kg 0 i=0
2 $6 2 kg OP T (i, w) = OP T (i 1, w) wi > w
3 $18 5 kg max {OP T (i 1, w), vi + OP T (i 1, w wi }
<latexit sha1_base64="Z2vromkJx+wQ2wpWsn/gLtchm2Q=">AAAC+nicbVFda9swFJW9ry77SrvHvVwWNjqWBnuMtSN0FPayt2XQrIXIBFm5TkRl2Uhyk2D8a/Y09ro/ssf9m8luHpx0FwSHc889VzqKcymMDYK/nn/n7r37D/Yedh49fvL0WXf/4LvJCs1xzDOZ6cuYGZRC4dgKK/Ey18jSWOJFfPW57l9cozYiU+d2nWOUsrkSieDMOmra/fN1dH4o+rB8A3R4SocdGuNcqJI7T1N16DCA10AtriyUIBKoQMApBEDpZPAB08gpGoejsPHY0S6nAj7Bsq2mKVsBlZhYoCW0ZvtA+3DtBt622KPagWoxXzh51bLP7AL1Uhh0WyjtUFSzzZ2n3V4wCJqC2yDcgB7Z1Gi67x3QWcaLFJXlkhkzCYPcRiXTVnCJLoTCYM74FZvjxEHFUjRR2WRfwSvHzCDJtDvKQsO2J0qWGrNOY6dMmV2Y3V5N/q83KWxyEpVC5YVFxW8WJYUEm0H9kTATGrmVawcY18LdFfiCacat++6tLY13jnzrJeWqUIJnM9xhpV1ZzeoUw93MboPxu8HHQfjtfe/sZBPnHnlBXpJDEpJjcka+kBEZE+4de5GXeHO/8n/4P/1fN1Lf28w8J1vl//4H1VHmOQ==</latexit>
4 $22 6 kg
5 $28 7 kg
weight limit w
0 1 2 3 4 5 6 7 8 9 10 11
{ } 0 0 0 0 0 0 0 0 0 0 0 0
{1} 0 1 1 1 1 1 1 1 1 1 1 1
subset
{ 1, 2 } 0 1 6 7 7 7 7 7 7 7 7 7
of item
1, …, i { 1, 2, 3 } 0 1 6 7 7 18 19 24 25 25 25 25
{ 1, 2, 3, 4 } 0 1 6 7 7 18 22 24 28 29 29 40
{ 1, 2, 3, 4, 5 } 0 1 6 7 7 18 22 28 29 34 35 40
OPT(i, w) = optimal value of knapsack problem with items 1, …, i, subject to weight limit w
37
s
38
.
fi
.
Coin changing
Problem. Given n coin denominations { c1, c2, …, cn } and a target value V, nd the
fewest coins needed to make change for V (or report impossible)
Ex. { 1, 10, 21, 34, 70, 100, 350, 1295, 1500 }.
Optimal. 140¢ = 70 + 70.
39
.
fi
Coin changing
Running time. O(n V).
40
.
DYNAMIC PROGRAMMING
‣ Fibonacci number
‣ weighted interval schedulin
‣ segmented least square
‣ knapsack proble
‣ RNA secondary structur
‣ sequence alignment
m
C A
A A
A U G C
base
C G U A A G
G
U A U U A
base pair G
A C G C U
G
C G C G A G C
G
A U
G G
C U
C G
A C G U G G C C A U
U A
B = ACGUGGCCCAU
S = { (b1, b10), (b2, b9), (b3, b8) } 43
r
G G
C G
A U G G G G C A U
A U
B = AUGGGGCAU
S = { (b1, b9), (b2, b8), (b3, b7) } 44
.
G G
C U
C U
A G
A G U U G G C C A U
G G
C U
C G
A U
A U G U G G C C A U
S is a secondary structur
U A
(with 3 base pairs)
B = AUGUGGCCAU
S = { (b1, b10), (b2, b9), (b3, b8) } 46
e
47
.
fi
RNA secondary structure: Subproblems
48
fi
fi
.
i t j
49
.
RNA-SECONDARY-STRUCTURE(n, b1, …, bn ) j
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
6 7 8 9 10
FOR k = 5 TO n – 1 4 0 0 0
all needed value
FOR i = 1 TO n – k are already computed 3 0 0
i
j ← i+ k 2 0
Compute M[i, j] using formula 1
Theorem. The DP algorithm solves the RNA secondary structure problem in O(n3)
time and O(n2) space.
50
.
fi
.
RNA-SECONDARY-STRUCTURE(n, b1, …, bn )
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Case 1. If i ≥ j – 4.
FOR k = 5 TO n – 1 ・ OPT(i, j) = 0 by no-sharp-turns condition
6.5 RNA Secondary Structure: Dynamic P
FOR i = 1 TO n – k Case 2. Base bj is not involved in a pair
j ← i+ k ・ OPT(i, j) = OPT(i, j – 1) RNA sequence ACCGGUAGU
i=1 i=1 1
6.5 RNA Secondary Structure: Dynamic Programming over Intervals j = 6 7 8 9 277
j=6 7 8 9
Initial values Filling in the values
for k = 5
RNA sequence ACCGGUAGU
RNA sequence ACCGGUAGU
4 0 0 0
4 0 0
4 00 0 0 4 0 0 0 0
4 04 00 0
00 00 4 00 0 0 4 00 0 0 0
3 0 0 3 0 0 1 3 0 0 1 1 3 0 0 1 1 3 0 0 1 1
2 0 3 0 0 2 0 0 3 02 00 0 11 2 0 0 13 1 0 0 1 2 10 0 1 1
i=1 i=1 1 i=1 1 1 1 i=1 1 1 1 2
2 0 2 i =01 10 1
2 0 0 1
j=6 7 8 9 j=6 7 8 9 j=6 7 8 9 j=6 7 8 9 j=6 7 8 9
= 1 values
i Initial i=
Filling in the values 1 1Filling in the values i=
Filling in the 1
1 values 1 Filling in the values
for k = 5 for k = 6 for k = 7 for k = 8
j=6 7 8 9 j=6 7 8 9 j=6 7 8 9
Figure 6.16 The iterations of the algorithm on a sample
51 inst
Initial values Filling in the values Filling in the values
.
DYNAMIC PROGRAMMING
‣ Fibonacci number
‣ weighted interval schedulin
‣ segmented least square
‣ knapsack proble
‣ RNA secondary structur
‣ sequence alignment
m
String similarity
o c u r r a n c e – o c – u r r a n c e
o c c u r r e n c e o c c u r r e n c e
o c – u r r – a n c e
o c c u r r e – n c e
0 mismatches, 3 gaps
53
?
Edit distance
Applications. Bioinformatics, spell correction, machine translation,
speech recognition, information extraction, ...
54
.
55
Sequence alignment
€ x1 x2 x3 x4 x5 x6
C T A C C – G
– T A C A T G
y1 y2 y3 y4 y5 y6
fi
.
Def. OPT(i, j) = min cost of aligning pre x strings x1 x2 ... xi and y1 y2 ... yj
Goal. OPT(m, n)
Case 1. OPT(i, j) matches xi – yj
Pay match for xi – yj + min cost of aligning x1 x2 ... xi–1 and y1 y2 ... yj–1.
Case 2a. OPT(i, j) leaves xi unmatched
Pay gap for xi + min cost of aligning x1 x2 ... xi–1 and y1 y2 ... yj.
optimal substructure propert
Case 2b. OPT(i, j) leaves yj unmatched (proof via exchange argument)
Pay gap for yj + min cost of aligning x1 x2 ... xi and y1 y2 ... yj–1
j i=0
Bellman equation.
i j=0
OP T (i, j) = x i yj + OP T (i 1, j 1)
min + OP T (i 1, j)
+ OP T (i, j 1)
<latexit sha1_base64="60wUnMrLdnu23FwG/Nh5FwbDvxY=">AAADS3ichVJdaxNBFJ3dWq3xq62PvgwGpUUbdsViIRQKvvhmhKYtZEKYnb1JJp2dXWbu1oQlz/4aX/VX+AP8Hb6JD85uFslHwQsDl3PPPefOnYkyJS0GwU/P37qzfffezv3Gg4ePHj/Z3du/sGluBHRFqlJzFXELSmrookQFV5kBnkQKLqPr92X98gaMlak+x1kG/YSPtBxKwdFBgz2PfuycH8jXdHJIWfuUtRssgpHUhXCidt5gbTqhLAaFnL6kDGGKhRzOHZdKekoDylivdQxJv1EhtzMnG0yWSL3hxLjKxnxQTAdyNpiUna8ctZrvKHQTHoWHyyK11zrrP5yFToOBjmvnf9OmOAbzWVqYL5cHu82gFVRBN5OwTpqkjo7b6T6LU5EnoFEobm0vDDLsF9ygFKoUzy1kXFzzEfRcqnkCtl9UbzmnLxwS02Fq3NFIK3S5o+CJtbMkcsyE49iu10rwtlovx+FJv5A6yxG0WBgNc0UxpeXHoLE0IFDNXMKFkW5WKsbccIHu+6y4VNoZiJWbFNNcS5HGsIYqnKLh5RbD9Z1tJhdvWmHQCj+9bZ6d1PvcIc/Ic3JAQvKOnJEPpEO6RHhfvK/eN++7/8P/5f/2/yyovlf3PCUrsbX9Fz1PAsg=</latexit>
57
.
fi
.
FOR i = 0 TO m
M [i, 0] ← i δ
FOR j = 0 TO n
M [0, j] ← j δ.
FOR i = 1 TO m
FOR j = 1 TO n
M [i, j] ← min { αxi yj + M [i – 1, j – 1]
δ + M [i – 1, j], alread
δ + M [i, j – 1] } computed
RETURN M [m, n]
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
58
y
.
FOR i = 0 TO m
Sequence alignment: Traceback M [i, 0] ← i δ
FOR j = 0 TO n
M [0, j] ← j δ
FOR i = 1 TO m
FOR j = 1 TO n
gap penalty = 2, mismatch penalty = 2, match penalty = -1 M [i, j] ← min { αxi yj + M [i – 1, j – 1]
δ + M [i – 1, j],
δ + M [i, j – 1]
— S I M I L A R I T Y
— 0 2 4 6 8 10 12 14 16 18 20
I 2 2 1 3 5 7 9 11 13 15 17
D 4 4 3 3 5 7 9 11 13 15 17
E 6 6 5 5 5 7 9 11 13 15 17
N 8 8 7 7 7 7 9 11 13 15 17
T 10 10 9 9 9 9 9 11 13 12 14
I 12 12 9 11 8 10 11 11 10 12 14
T 14 14 11 11 10 10 12 13 12 9 11
Y 16 16 13 13 12 12 12 14 14 11 8
59
.
,
Theorem. The DP algorithm computes the edit distance (and an optimal alignment)
of two strings of lengths m and n in Θ(mn) time and space
Pf
・Algorithm computes edit distance
・Can trace back to extract optimal alignment itself. ▪
Theorem. [Backurs–Indyk 2015] If can compute edit distance of two strings
of length n in O(n2−ε) time for some constant ε > 0, then can solve SAT
with n variables and m clauses in poly(m) 2(1−δ) n time for some constant δ > 0.
60
Abstract
.
61
fi
.