Download presentation

Presentation is loading. Please wait.

Published byLiam Deaton Modified over 2 years ago

1
Subsequence A subsequence of a sequence/string X = is a sequence obtained by deleting 0 or more elements from X. Example: sudan is a subsequence of sesquipedalian. 1 2 m So is equal. There are 2 subsequences of X. m A common subsequence Z of two sequences X and Y is a subsequence of both. Example: ua is a common subsequence of sudan and equal.

2
LCS = equiin Longest Common Subsequence 1 2 n a longest common subsequence (LCS) of X and Y. Example a) X = abcbdab Y = bdcaba b) X = enquiring Y = sequipedalian c) X = empty bottle Y = nematode knowledge LCS = emt ole Input: X = Y = 1 2 m Output: LCS = bcba LCS = bdab 1 2

3
Brute-force Algorithm For every subsequence of X, check if its a subsequence of Y. Worst-case running time: ( n 2 ) ! m 2 subsequences of X to check. m Each check takes O(n) time – scanning Y for first element, then from there for next element...

4
Optimal Substructure of LCS Case 1: x = y m n z = x = y n m k Then Otherwise, LCS has length k + 1, a contradiction. zz LCS Z: z 1 2 k x m m yyy Y:Y: n 1 2 xx X:X: 1 x 2 m

5
Optimal Substructure (contd) Case 2: x y m n m yyy Y:Y: n 1 2 xx X:X: 1 x 2 m Either LCS of xx 1 x 2m – 1 yyy n 1 2 y or LCS of xx 1 x 2 y 1 2 y n – 1 m

6
A Recursive Formula X =, Y = 1 2 m 1 2 n 0 if i = 0 or j = 0 max(c[i, j 1], c[i 1, j]) if i, j > 0 and x y i j c[i, j] = c[i 1, j 1] + 1 if i, j > 0 and x = y A total of (m + 1)(n + 1) subproblems. Then c[m,n] = length of an LCS of X and Y. c[i, j] = length of an LCS of and. 1 i 1 j

7
Recursion Tree m = 3 and n = 4 3, 4 2, 3 2, 4 3, 3 x y x = y 3 4 Depth of the tree m+n since at each level i and/or j reduce by 1 Branches by at most 3 at each node. Amount of work for top-down recursion: 3 (m+n) 1, 2 1, 3 2, 2 1, 3 1, 4 2, 3 2, 2 2, 3 3, 2 recurring subproblems

8
Constructing an LCS s e s q u i p e d a l i a n e n q u i r i n g c[, ] 1. Initialize entries c[i, 0] and c[0, j] m = 9 n = 14

9
Constructing an LCS (contd) s e s q u i p e d a l i a n e n q u i r i n g c[, ] 2. Fill out entries row by row. Save pointers in b[1..m, 1..n]. 1 c[1, 2] = 1 + c[0, 1] = 1c[1, 7] = max(c[1, 6], c[0, 7]) = 1

10
s e s q u i p e d a l i a n e n q u i r i n g c[, ] 1 LCS Length Determined LCS has length 6.

11
s e s q u i p e d a l i a n e n q u i r i n g c[, ] 1 Reconstructing an LCS 3. Starting from the lower-right corner, follow the pointers in b[, ]. Whenever encounters an upper-left pointer, print the labeling char. Print n Print i Print u Print q Print e LCS = equiin

12
Assembly-Line Scheduling assembly line 1 assembly line 2 chassis enters completed auto exits station S 1, 1 1, 21, 41, 3 2, 12, 22, 3 2, 4 e e 2 1 x x 1 2 tt t t t t 1, 1 2, 1 t t 2, 2 1, 21, 3 2, 3 2, 4 1, 4 Minimize the total time through the factory for one auto.

13
Optimal Substructure f (j) : the fastest possible time to get a chassis from the starting point through station S. i i, j S a a a S S 1, j1, j – 1 2, j – 1 t 1, j1, j – 1 f (j) = 1 e + a if j = 1 11, 1 min(f [j – 1] + a, f [j – 1] + t + a ), if j > 1 11, j 2 2, j – 1 1, j f* = min(f [n] + x, f [n] + x )

14
The DP Solution assembly line 1 assembly line 2 chassis enters completed auto exits station S 1, 1 1, 21, 41, 3 2, 12, 22, 3 2, 4 x f [j] l [j] j j f* = 28 from line 2

Similar presentations

© 2016 SlidePlayer.com Inc.

All rights reserved.

Ads by Google