Presentation is loading. Please wait.

Presentation is loading. Please wait.

2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253.

Similar presentations


Presentation on theme: "2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253."— Presentation transcript:

1 2015-7-2chapter251

2 2015-7-2chapter252

3 2015-7-2chapter253

4 2015-7-2chapter254

5 2015-7-2chapter255 Recursive Algorithm: Compute-Opt(j) if j=0 then return 0 else return max {v j +Compute-Opt(p(j)), Compute-Opt(j-1)} Running time: >2 n/2. (not required)

6 2015-7-2chapter256 1 2 3 5 4 6 Index p(1)=0 p(2)=0 p(3)=1 p(4)=0 p(5)=3 p(6)=3 v 1 =2 v 2 =4 v 3 =4 v 4 =7 v 5 =2 v 6 =1

7 2015-7-2chapter257 Weighted Interval Scheduling: Bottom-Up Input: n, s 1, s 2, …, s n, f 1, f 2, …, f n, v 1, v 2, …, v n Sort jobs by finish times so that f 1  f 2  …  f n. Compute p(1), p(2), …, p(n) M[0]=0; for j = 1 to n do M[j] = max { v j +m[p(j)], m[j-1]} if (M[j] == M[j-1]) then B[j]=0 else B[j]=1 /*for backtracking m=n; /*** Backtracking while ( m ≠0) { if (B[m]==1) then print job m; m=p(m) else m=m-1 } B[j]=0 indicating job j is not selected. B[j]=1 indicating job j is selected.

8 2015-7-2chapter258 1 2 3 5 4 6 Index p(1)=0 p(2)=0 p(3)=1 p(4)=0 p(5)=3 p(6)=3 w 1 =2 w 2 =4 w 3 =4 w 4 =7 w 5 =2 w 6 =1 0 1 2 3 4 5 6 0 0 0 0 0 0 2 24 246 2467 24678 246878 M = j: 0 1 2 3 4 5 6 B: 0 1 1 1 1 1 0 Backtracking: job1, job 3, job 5 M[j] = max { v j +m[p(j)], m[j-1]} M[2]=w2+M[0]=4+0; M[3]=w3+M[1]=4+2; M[4]=W4+M[0]=7+0;M[5]=W5+M[3]=2+6; M[6]=w6+M[3]=1+6<8;

9 2015-7-2chapter259 Backtracking and time complexity Backtracking is used to get the schedule. P()’s can be computed in O(n) time after sorting all the jobs based on the starting times. Time complexity O(n) if the jobs are sorted and p() is computed. Total time: O(n log n) including sorting.

10 2015-7-2chapter2510 Computing p()’s in O(n) time P()’s can be computed in O(n) time using two sorted lists, one sorted by finish time (if two jobs have the same finish time, sort them based on starting time) and the other sorted by start time. Start time: b(0, 5), a(1, 3), e(3, 8), c(5, 6), d(6, 8) Finish time a(1, 3), b(0,5), c(5,6), d(6,8), e(3,8) P(d)=c, p(c )=b, p(e)= a, p(a)=0, p(b)=0. (See demo7)

11 2015-7-2chapter2511 Example 2: Start time: b(0, 5), a(1, 3), e(3, 8), c(5, 6), d(6, 8) Finish time a(1, 3), b(0,5), c(5,6), d(6,8), e(3,8) P(d)=c, p(c )=b, p(e)= a, p(a)=0, p(b)=0. v(a)=2, v(b)=3, v(c )=5, v(d) =6, v(e)=8.8. Solution: M[0]=0, M[a]=2. M[b]=max{2, 3+M[p(b)]}=3. M[c]=max{3, 5+M[p(c )]}=5+M[b]=8. M[d]=max{8, 6+M[p(d)]}=6+M[c]=6+8=14. M[e]=max{14, 8.8+M[p(e)]}=max{14, 8.8+M[a]}=max {14, 10.8}=14. Backtracking: b, c, d. Job: a b c d e B: 1 1 1 1 0

12 2015-7-2chapter2512 Longest common subsequence Definition 1: Given a sequence X=x 1 x 2...x m, another sequence Z=z 1 z 2...z k is a subsequence of X if there exists a strictly increasing sequence i 1 i 2...i k of indices of X such that for all j=1,2,...k, we have x ij =z j. Example 1: If X=abcdefg, Z=abdg is a subsequence of X. X=abcdefg, Z=ab d g

13 2015-7-2chapter2513 Definition 2: Given two sequences X and Y, a sequence Z is a common subsequence of X and Y if Z is a subsequence of both X and Y. Example 2: X=abcdefg and Y=aaadgfd. Z=adf is a common subsequence of X and Y. X=abc defg Y=aaaadgfd Z=a d f

14 2015-7-2chapter2514 Definition 3: A longest common subsequence of X and Y is a common subsequence of X and Y with the longest length. (The length of a sequence is the number of letters in the sequence.) Longest common subsequence may not be unique. Example: abcd acbd Both acd and abd are LCS.

15 2015-7-2chapter2515 Longest common subsequence problem Input: Two sequences X=x 1 x 2...x m, and Y=y 1 y 2...y n. Output: a longest common subsequence of X and Y. Applications: Similarity of two lists –Given two lists: L1: 1, 2, 3, 4, 5, L2:1, 3, 2, 4, 5, –Length of LCS=4 indicating the similarity of the two lists. Unix command “diff”.

16 2015-7-2chapter2516 Longest common subsequence problem Input: Two sequences X=x 1 x 2...x m, and Y=y 1 y 2...y n. Output: a longest common subsequence of X and Y. A brute-force approach Suppose that m  n. Try all subsequence of X (There are 2 m subsequence of X), test if such a subsequence is also a subsequence of Y, and select the one with the longest length.

17 2015-7-2chapter2517 Charactering a longest common subsequence Theorem (Optimal substructure of an LCS) Let X=x 1 x 2...x i, and Y=y 1 y 2...y j be two sequences, and Z=z 1 z 2...z k be any LCS of X and Y. 1. If x i =y j, then z k =x i =y j and Z[1..k-1] is an LCS of X[1..m-1] and Y[1..n-1]. 2. If x i  y j, then z k  x i implies that Z is an LCS of X[1..i-1] and Y. 2. If x i  y j, then z k  y j implies that Z is an LCS of X and Y[1..j-1].

18 2015-7-2chapter2518 The recursive equation Let c[i,j] be the length of an LCS of X[1...i] and Y[1...j]. c[i,j] can be computed as follows: 0 if i=0 or j=0, c[i,j]= c[i-1,j-1]+1 if i,j>0 and x i =y j, max{c[i,j-1],c[i-1,j]} if i,j>0 and x i  y j. Computing the length of an LCS There are n  m c[i,j]’s. So we can compute them in a specific order.

19 2015-7-2chapter2519 The algorithm to compute an LCS 1. for i=1 to m do 2. c[i,0]=0; 3. for j=0 to n do 4. c[0,j]=0; 5. for i=1 to m do 6. for j=1 to n do 7. { 8. if x[i] ==y[j] then 9. c[i,j]=c[i-1,j-1]+1; 10 b[i,j]=1; 11. else if c[i-1,j]>=c[i,j-1] then 12. c[i,j]=c[i-1,j] 13. b[i,j]=2; 14. else c[i,j]=c[i,j-1] 15. b[i,j]=3; 14 }

20 2015-7-2chapter2520 Example 3: X=BDCABA and Y=ABCBDAB. xixi 0000000 A0000111 B0111122 C0112222 B0112233 D0122233 A0122334 B0122344 yiyi BDCABA

21 2015-7-2chapter2521 Constructing an LCS (back-tracking) We can find an LCS using b[i,j]’s. We start with b[n,m] and track back to some cell b[0,i] or b[i,0]. The algorithm to construct an LCS (backtracking) 1. i=m 2. j=n; 3. if i==0 or j==0 then exit; 4. if b[i,j]==1 then { i=i-1; j=j-1; print “x i ”; } 5. if b[i,j]==2 i=i-1 6. if b[i,j]==3 j=j-1 7. Goto Step 3. The time complexity: O(nm).

22 2015-7-2chapter2522 Remarks on weighted interval scheduling it takes long time to explain. (50+13 minutes) Do not mention exponent time etc. For the first example, use the format of example 2 to show the computation process (more clearly).

23 2015-7-2chapter2523 Shortest common supersequence Definition: Let X and Y be two sequences. A sequence Z is a supersequence of X and Y if both X and Y are subsequences of Z. Shortest common supersequence problem: Input: Two sequences X and Y. Output: a shortest common supersequence of X and Y. Example: X=abc and Y=abb. Both abbc and abcb are the shortest common supersequences for X and Y.

24 2015-7-2chapter2524 Recursive Equation: Let c[i,j] be the length of an SCS of X[1...i] and Y[1...j]. c[i,j] can be computed as follows: j if i=0 i if j=0, c[i,j]= c[i-1,j-1]+1 if i,j>0 and x i =y j, min{c[i,j-1]+1,c[i-1,j]+1} if i,j>0 and x i  y j.

25 2015-7-2chapter2525

26 2015-7-2chapter2526 The pseudo-codes for i=0 to n do c[i, 0]=i; for j=0 to m do c[0,j]=j; for i=1 to n do for j=1 to m do if (xi == yj) c[i,j]= c[i-1, j-1]+1; b[i.j]=1; else { c[i,j]=min{c[i-1,j]+1, c[i,j-1]+1}. if (c[I,j]=c[i-1,j]+1 then b[I,j]=2; else b[I,j]=3; } p=n, q=m; / backtracking while (p≠0 or q≠0) { if (b[p,q]==1) then {print x[p]; p=p-1; q=q-1} if (b[p,q]==2) then {print x[p]; p=p-1} if (b[p,q]==3) then {print y[q]; q=q-1} }

27 2015-7-2chapter2527 Example SCS for X=BDCABA and Y=ABCBDAB. xixi 0123456 A1234456 B2234556 C3344567 B4455667 D5556778 A6666788 B7777889 yiyi BDCABA 7+6-4 (LCS)=9 (SCS) see slide 23

28 2015-7-2chapter2528 Exercises Exercise 1: For the weighted interval scheduling problem, there are eight jobs with starting time and finish time as follows: j1=(0, 8), j2=(2, 3), j3=(3, 6), j4=(5, 9), j5=(8, 12), j6=(9, 11), j7=(10, 13) and j8=(11, 16). The weight for each job is as follows: v1=3.5, v2=2.0, v3=3.0, v4=3.0, v5=6.5, v6=2.5, v7=12.0, and v8=8.0. Find a maximum weight subset of mutually compatible jobs. (Backtracking process is required.) (You have to compute p()’s. The process of computing p()’s is NOT required.) Exercise 2: Let X=abbacab and Y=baabcbb. Find the longest common subsequence for X and Y. Backtracking process is required.

29 2015-7-2chapter2529 Summary of Week 7 Understand the algorithms for the weighted Interval Scheduling problem, LCS and SCS..


Download ppt "2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253."

Similar presentations


Ads by Google