29
22/3/13 chapter25 1

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

Embed Size (px)

Citation preview

Page 1: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 1

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

23/4/19 chapter25 2

Page 3: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 3

Page 4: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 4

Page 5: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 5

Recursive Algorithm:Compute-Opt(j)

if j=0 then

return 0

else

return max {vj+Compute-Opt(p(j)), Compute-Opt(j-1)}

Running time: >2n/2.

(not required)

Page 6: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 6

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

v1=2

v2=4

v3=4

v4=7

v5=2

v6=1

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

23/4/19 chapter25 7

Weighted Interval Scheduling: Bottom-Up Input: n, s1, s2, …, sn, f1, f2, …, fn, v1, v2, …, vn

Sort jobs by finish times so that f1f2 … fn.

Compute p(1), p(2) , …, p(n)

M[0]=0;

for j = 1 to n do

M[j] = max { vj+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.

Page 8: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 8

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

w1=2

w2=4

w3=4

w4=7

w5=2

w6=1

0 1 2 3 4 5 6

0

0

0

0

0

0

2

2 4

2 4 6

2 4 6 7

2 4 6 7 8

2 4 6 87 8

M =

j: 0 1 2 3 4 5 6

B: 0 1 1 1 1 1 0Backtracking: job1, job 3, job 5

M[j] = max { vj+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;

Page 9: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 9

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.

Page 10: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 10

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)

Page 11: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 11

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

Page 12: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 12

Longest common subsequence

• Definition 1: Given a sequence X=x1x2...xm, another sequence Z=z1z2...zk is a subsequence of X if there exists a strictly increasing sequence i1i2...ik of indices of X such that for all j=1,2,...k, we have xij=zj.

• Example 1: If X=abcdefg, Z=abdg is a subsequence of X. X=abcdefg,Z=ab d g

Page 13: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 13

• 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

Page 14: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 14

• 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.

Page 15: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 15

Longest common subsequence problem• Input: Two sequences X=x1x2...xm, and

Y=y1y2...yn.

• 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”.

Page 16: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 16

Longest common subsequence problem

• Input: Two sequences X=x1x2...xm, and

Y=y1y2...yn.

• Output: a longest common subsequence of X and Y.

• A brute-force approach

Suppose that mn. Try all subsequence of X (There are 2m subsequence of X), test if such a subsequence is also a subsequence of Y, and select the one with the longest length.

Page 17: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 17

Charactering a longest common subsequence

• Theorem (Optimal substructure of an LCS)

• Let X=x1x2...xi, and Y=y1y2...yj be two sequences, and • Z=z1z2...zk be any LCS of X and Y.• 1. If xi=yj, then zk=xi=yj and Z[1..k-1] is an LCS of X[1..m-

1] and Y[1..n-1]. • 2. If xi yj, then zkxi implies that Z is an LCS of X[1..i-

1] and Y.• 2. If xi yj, then zkyjimplies that Z is an LCS of X and

Y[1..j-1].

Page 18: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 18

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 xi=yj, max{c[i,j-1],c[i-1,j]} if i,j>0 and xiyj.

Computing the length of an LCS• There are nm c[i,j]’s. So we can compute them

in a specific order.

Page 19: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 19

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 }

Page 20: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 20

Example 3: X=BDCABA and Y=ABCBDAB.

xi 0 0 0 0 0 0 0

A 0 0 0 0 1 1 1

B 0 1 1 1 1 2 2

C 0 1 1 2 2 2 2

B 0 1 1 2 2 3 3

D 0 1 2 2 2 3 3

A 0 1 2 2 3 3 4

B 0 1 2 2 3 4 4

yi B D C A B A

Page 21: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 21

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=m2. 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 “xi”; } 5. if b[i,j]==2 i=i-16. if b[i,j]==3 j=j-17. Goto Step 3.

• The time complexity: O(nm).

Page 22: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 22

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).

Page 23: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 23

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.

Page 24: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 24

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 xi=yj,

min{c[i,j-1]+1,c[i-1,j]+1} if i,j>0 and xiyj.

Page 25: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 25

Page 26: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 26

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} }

Page 27: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 27

Example SCS for X=BDCABA and Y=ABCBDAB.

xi 0 1 2 3 4 5 6

A 1 2 3 4 4 5 6

B 2 2 3 4 5 5 6

C 3 3 4 4 5 6 7

B 4 4 5 5 6 6 7

D 5 5 5 6 7 7 8

A 6 6 6 6 7 8 8

B 7 7 7 7 8 8 9

yi B D C A B A

7+6-4 (LCS)=9 (SCS) see slide 23

Page 28: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 28

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.  

Page 29: 2015-7-2chapter251. 2015-7-2chapter252 2015-7-2chapter253

23/4/19 chapter25 29

Summary of Week 7 • Understand the algorithms for the weighted

Interval Scheduling problem, LCS and SCS.

.