Globl linmen in liner spe 1
2 Globl linmen in liner spe Gol: Find n opiml linmen of A[1..n] nd B[1..m] in liner spe, i.e. O(n) Exisin lorihm: Globl linmen wih bkrkin O(nm) ime nd spe, bu he opiml os n be found in spe O(n)
3 Globl linmen in liner spe Gol: Find n opiml linmen of A[1..n] nd B[1..m] in liner spe, i.e. O(n) Exisin lorihm: Globl linmen wih bkrkin O(nm) ime nd spe, bu he opiml os n be found in spe O(n)
4 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm
5 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm
6 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n-2)m +
7 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n-2)m +
8 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n-2)m + (n-4)m
9 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n-2)m + (n-4)m
10 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n - 2)m + (n - 4)m + (n - 6)m
11 Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n - 2)m + (n - 4)m + (n - 6)m
Liner spe Firs ide Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n - 2)m + (n - 4)m + (n - 6)m + 2 12
Time nlysis (in enerel): Liner spe Ide I nm + (n-2)m + (n-4)m +... + 2m = m(n + (n-2) + (n-4) +... + 2) = Θ(mn 2 ) beuse n(n-1)/4 <= n + (n-2) + (n-4) +... + 2 <= n(n-1)/2 Firs ide: Keep only wo rows in memory nd reompue when oher prs of he mrix is needed durin bkrkin... nm + (n - 2)m + (n - 4)m + (n - 6)m + 2 13
Liner spe Firs ide 14
15 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm
16 Liner spe Hirshber's ide Middle row Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm
17 Liner spe Hirshber's ide Middle row Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm
18 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m
19 Liner spe Hirshber's ide Middle row Middle row Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m
20 Liner spe Hirshber's ide Middle row Middle row Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m
21 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m
22 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m
23 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m
24 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m + (n / 8)m
25 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m + (n / 8)m
26 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m + (n / 8)m
27 Liner spe Hirshber's ide Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m + (n / 8)m
28 Time nlysis (in enerel): Liner spe Hirshber's ide nm + (n/2)m + (n/4)m +... + 2m = m(n + (n/2) + (n/4) +... + 2) = Θ(mn) beuse n <= n + (n/2) + (n/4) +... + 2 <= 2n Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m + (n / 8)m
Liner spe Hirshber's ide 29
30 Liner spe Hirshber's ide Problem: Find he middle olumn (k middle ede ) in n opiml linmen in qudri ime nd liner spe... Middle row Hirshber's ide: Find middle ede (i.e. middle olumn ) of n opiml linmen, spli ino wo subproblems nd reurse... nm + (n / 2)m + (n / 4)m + (n / 8)m
31 The ineresin pr of he ble d m=+[(b-+1) div 2] b
d 32 Problem: Find he middle olumn (k middle ede ) in n opiml linmen of A[+1..b] nd B[+1..d], i.e. find he ede on n opiml The ph ineresin from node (,) o node pr (b,d) in of he linmen he ble rph whih oes from he upper hlf (reen) o he lower hlf (red) in he dynmi prormmin ble below. m=+[(b-+1) div 2] b
Problem: Find he middle olumn (k middle ede ) in n opiml linmen of A[+1..b] nd B[+1..d], i.e. find he ede on n opiml The ph ineresin from node (,) o node pr (b,d) in of he linmen he ble rph whih oes from he upper hlf (reen) o he lower hlf (red) in he dynmi prormmin ble below. d m=+[(b-+1) div 2] Soluion ide: We define funion find_ede(,b,,d,m) whih reurns he ede from row m-1 o row m on n opiml ph from (,) o ell (b,d), i.e. he "middle olumn" in n opiml linmen of A[+1..b] nd B[+1..d]. The ede n eiher be dionl ede oin from (m-1,j-1) o (m,j) or veril ede oin from (m-1,j) o (m,j) for some <=j<=d. b We denoe he wo ses s (j,diagonal) nd (j,vertical) respeively. 33
34 Implemenin find_ede(,b,,d,m) Implemenion: Define he rebk ble T[..b][..d] s (b+1)*(d-+1) ble suh h enry T[i,j] idenifies he ede on n opiml ph from (,) o (i,j) whih oes from row m-1 o row m. The ede is eiher (x,diagonal) or (x,vertical) for some <=x<=d. In priulr T[,d] is he ede whih oes from row m-1 o row m on n opiml ph from (,) o (b,d), i.e. he ede we re lookin for.
35 Implemenin find_ede(,b,,d,m) Implemenion: Define he rebk ble T[..b][..d] s (b+1)*(d-+1) ble suh h enry T[i,j] idenifies he ede on n opiml ph from (,) o (i,j) whih oes from row m-1 o row m. The ede is eiher (x,diagonal) or (x,vertical) for some <=x<=d. In priulr T[,d] is he ede whih oes from row m-1 o row m on n opiml ph from (,) o (b,d), i.e. he ede we re lookin for. Compuion: We n ompue T[,d] by fillin ou he rebk ble T[..b][..d] row by row while fillin he orrespondin ells in he dynmi prormmin ble S[..b][..d]. S: T:
36 Implemenin find_ede(,b,,d,m) Implemenion: Define he rebk ble T[..b][..d] s (b+1)*(d-+1) ble suh h enry T[i,j] idenifies he ede on n opiml ph from (,) o (i,j) whih oes from row m-1 o row m. The ede is eiher (x,diagonal) or (x,vertical) for some <=x<=d. In priulr T[,d] is he ede whih oes from row m-1 S[i-1, j-1] + subos(a[i ], B[j ]) S[i-1, j] + pos S[i, j-1] + pos 0 if i=0 nd j=0 o row m on n opiml ph from (,) o (b,d), i.e. he ede we re lookin for. S[i, j] = mx Compuion: We n ompue T[,d] by fillin ou he rebk ble T[..b][..d] row by row while fillin he orrespondin ells in he dynmi prormmin ble S[..b][..d]. S: T:
Compuin T[i,j] If i < m: T[i,j] = None. Inuiion: n opiml ph from (,)->..->(i,j) does no o from row m-1 o row m if i = m: se 1: if S[i,j] = S[i-1,j-1] + subos(a[i],b[j]): T[i,j] = (j, DIAGONAL) Inuiion: n opiml ph is (,)->..->(m-1,j-1)->(m,j) se 2: if S[i,j] = S[i-1,j] + pos: T[i,j] = (j, VERTICAL) Inuiion: n opiml ph is (,)->..->(m-1,j)->(m,j) se 3: if S[i,j] = S[i,j-1] + pos: T[i,j] = T[i,j-1] Inuiion: n opiml ph is (,)->..->(m,j-1)->(m,j) if i > m: if S[i,j] = S[i-1,j-1] + subos(a[i],b[j]): T[i,j] = T[i-1,j-1] if S[i,j] = S[i-1,j] + pos: T[i,j] = T[i-1,j] if S[i,j] = S[i,j-1] + pos: T[i,j] = T[i,j-1] Inuiion: n opiml ph is (,)->..->(h,k)->(i,j), i.e. i oes from row m-1 o row m vi he sme ede s n opiml ph (,b)->..->(h,k) 37
If i < m: Observion: We n ompue ble T row by row in liner spe. While fillin ou row i, we do no ess enries in row 0..i-2, i.e. we Compuin only need o keep wo T[i,j] rows of T in memory. (Exly like when fillin ou he dynmi prormmin ble). T[i,j] = None. Inuiion: n opiml ph from (,)->..->(i,j) does no o from row m-1 o row m if i = m: se 1: if S[i,j] = S[i-1,j-1] + subos(a[i],b[j]): T[i,j] = (j, DIAGONAL) Inuiion: n opiml ph is (,)->..->(m-1,j-1)->(m,j) se 2: if S[i,j] = S[i-1,j] + pos: T[i,j] = (j, VERTICAL) Inuiion: n opiml ph is (,)->..->(m-1,j)->(m,j) se 3: if S[i,j] = S[i,j-1] + pos: T[i,j] = T[i,j-1] Inuiion: n opiml ph is (,)->..->(m,j-1)->(m,j) if i > m: if S[i,j] = S[i-1,j-1] + subos(a[i],b[j]): T[i,j] = T[i-1,j-1] if S[i,j] = S[i-1,j] + pos: T[i,j] = T[i-1,j] if S[i,j] = S[i,j-1] + pos: T[i,j] = T[i,j-1] Inuiion: n opiml ph is (,)->..->(h,k)->(i,j), i.e. i oes from row m-1 o row m vi he sme ede s n opiml ph (,b)->..->(h,k) 38
39 Spliin ino subproblems When find_ede(,b,,d,m) hs been ompued, we hve found n ede/olumn in n opiml linmen of A[+1..b] nd B[+1..d] nd n spli he reminin linmen problem ino wo subproblems f. below nd he fiures on he followin wo slides. If find_ede(,b,,d,m) = (j,diagonal), we n spli he reminin linmen problem ino wo subproblems: find he opiml linmen of A[+1..m-1] nd B[+1..j-1] find he opiml linmen of A[m+1..b] nd B[j+1..d] If find_ede(,b,,d,m) = (j,vertical), we n spli he reminin linmen problem ino wo subproblems: find he opiml linmen of A[+1..m-1] nd B[+1..j] find he opiml linmen of A[m+1..b] nd B[j+1..d]
40 find_ede(,b,,d,m)=(j,diagonal) j d m=+[(b-+1) div 2] b
41 find_ede(,b,,d,m)=(j,vertical) j d m=+[(b-+1) div 2] b
Puin i ll oeher Overll ide: To find n opiml linmen of A[+1..b] nd B[+1..d], we ll find_ede(, b,, d, +[(b-+1) div 2]), whih yields he middle olumn, nd oninue reursively f. he previous slides by dividin ino wo subproblems. The bse se is when =b, i.e when we sk for n opiml linmen of he empy srin nd B[+1..d]. This linmen n be reurned immediely s sequene of p d-+1 olumns. Compuin n opiml linmen of A[1..n] nd B[1..n] is done by llin opiml_linmen(0,n,0,m). Pseudo ode: fun opiml_linmen(,b,,d) if ==b hen reurn linmen of empy srin nd B[+1..d] else middle ede = find_ede(,b,,d,+ [(b-+1) div 2]) reurn opiml_linmen( subproblem1 )+ middle ede + opiml_linmen( subproblem2 ) 42
43 Cves Be reful wih indies: Deide if he inpu srins A nd B re indexed from 0 (s A[0..n-1] nd B[0..m-1]) or from 1 (s A[1..n] nd B[1..m]). Deide lso if he rows nd olumns in he dynmi prormmin (nd re-bk) ble re numbered from 0 or 1. Remember nd sik o your deision. In hese slides i is ssumed h srins re indexed from 1, nd rows/olumns re numbered from 0. This mens h he sub-ble (of he dynmi prormmin ble) from row o row b (boh inluded) nd olumn o olumn d (boh inluded) orresponds o he dynmi prormmin ble for n linmen of A[+1..b] nd B[+1..d]. Be reful wih he bse se: Be sure of he definiion of your bse se (i.e. when ==b s in he pseudo ode on he previous slide) nd sik wih i.
Hirshber's find_ede(,b,,d,m) In Hirshber's oriinl pper, he does no use n ddiion ble o in order o keep rk of 'where he opiml ph eners he middle row'. Essenil he only fills ou he dynmi-prormmin ble S. S: T: Observion: Hirshber uilizes h he opiml os of n linmen of A nd B, OPT(A[1..n], B[1..m]) is equl o he opiml os of n linmen of he reversed sequenes A R [1..n] = A[n..1] nd B R [1..m] = B[m..1]: OPT(A[1..n], B[1..m]) = OPT(A R [1..n], B R [1..m]) 44
45 Hirshber's implemenion (1) Observions Tble S is he dynmi prormmin ble for linmen of A nd B, row r n be ompued in ime O(mr) nd spe O(m) by fillin ou he ble row-by-row, keepin wo rows in memory. Tble S R is he dynmi prormmin ble for linmen of A R nd B R, row r+1 of S R (ounin from he op) n be ompued in ime O(m(n-r)) nd spe O(m) by fillin ou he ble row-byrow (from he boom), keepin wo rows in memory. In summry, we n ompue 'row r of S' nd 'row r+1 of S R ' in ime O(nm) nd spe O(m). S[r, j] = OPT(A[1..r], B[1..j]) S R [r+1, j] = OPT(A[r+1..n], B[j..m]) = OPT(A R [1..n-r], B R [1..m-j+1])
Hirshber's implemenion (2) Observions Tble S is he dynmi prormmin ble for linmen of A nd B, row r n be ompued in ime O(mr) nd spe O(m) by fillin ou he ble row-by-row, keepin wo rows in memory. Tble S R is he dynmi prormmin ble for linmen of A R nd B R, row r+1 of S R (ounin from he op) n be ompued in ime O(m(n-r)) nd spe O(m) by fillin ou he ble row-byrow (from he boom), keepin wo rows in memory. The opiml os of he ph from (0,0) o (n,m) hvin (j', VERTICAL) s is 'middle ede' is: In summry, we n ompue 'row r of S' nd 'row r+1 of S R ' in ime O(nm) nd spe O(m). S[r,j'] + + S R [r+1,j'] S[r, j] = OPT(A[1..r], B[1..j]) S R [r+1, j] = OPT(A[r+1..n], B[j..m]) = OPT(A R [1..n-r], B R [1..m-j+1]) 46
Hirshber's implemenion (3) // Pseudo ode for findin middle ede oin // from row r o r+1 of n opiml linmen: S[r, j] = OPT(A[1..r], B[1..j]) mx = 0 middel_ede = (0, VERTICAL) // Mximize over ll (j, VERTICAL) for j=0 o m do urr = S[r,j] + + S R [r+1,j] if urr > m hen mx = urr middle_ede = (j, VERTICAL) endif endfor // Mximize over ll (j, DIAGONAL) for j=0 o m-1 do urr = S[r+j] + s(a[r+1],b[j+1]) + S R [r+1,j+1] if urr > mx hen mx = urr middle_ede = (j, DIAGONAL) endif endfor reurn middle_ede S R [r+1, j] = OPT(A[r+1..n], B[j..m]) = OPT(A R [1..n-r], B R [1..m-j+1]) 47
Hirshber's implemenion (4) Conlusion // Pseudo ode for findin middle ede oin // from row r o r+1 of n opiml linmen: mx = 0 middel_ede = (0, VERTICAL) // Mximize over ll (j, VERTICAL) for j=0 o m do urr = S[r,j] + + S R [r+1,j] if urr > m hen mx = urr middle_ede = (j, VERTICAL) endif endfor // Mximize over ll (j, DIAGONAL) for j=0 o m-1 do urr = S[r+j] + s(a[r+1],b[j+1]) + S R [r+1,j+1] if urr > mx hen mx = urr We n find 'middle ede' in ime O(nm) nd spe O(m), whih by reursion yields h we n ompue n opiml linmen in ime O(nm) nd spe O(m) S[r, j] = OPT(A[1..r], B[1..j]) middle_ede = (j, DIAGONAL) endif endfor reurn middle_ede S R [r+1, j] = OPT(A[r+1..n], B[j..m]) = OPT(A R [1..n-r], B R [1..m-j+1]) 48