4.3 KiB
4.3 KiB
Review 8-3
- Hajin Ju, 2024062806
Problem 1
Fill in the blanks in the following LCS computation
Solution 1
c[i][j] = \text{The length of an LCS of the subsequences} \,X_i\, \text{and}\, Y_j.
$$c[i][j] = \begin{cases} 0 & \text{if}, i = 0 ,\text{or}, j = 0\ c[i-1][j-1] + 1 &\text{if}, i,j > 0 ,\text{and}, x_i = y_j\ max(c[i][j-1], c[i-1][j]) &\text{if}, i, j > 0 ,\text{and}, x_i \neq y_j \end{cases}$$
| * | y_j |
B |
D |
C |
A |
B |
A |
|---|---|---|---|---|---|---|---|
x_i |
0 | 0 | 0 | 0 | 0 | 0 | 0 |
A |
0 | \uparrow 0 |
\uparrow 0 |
\uparrow 0 |
\nwarrow 1 |
\leftarrow 1 |
\nwarrow 1 |
B |
0 | \nwarrow1 |
\leftarrow1 |
\leftarrow1 |
\uparrow 1 |
\nwarrow 2 |
\leftarrow 2 |
C |
0 | \uparrow 1 |
\uparrow 1 |
\nwarrow 2 |
\leftarrow 2 |
\uparrow 2 |
\uparrow 2 |
B |
0 | \nwarrow 1 |
\uparrow 1 |
\uparrow 2 |
\uparrow2 |
\nwarrow3 |
\leftarrow3 |
D |
0 | \uparrow1 |
\nwarrow2 |
\uparrow2 |
\uparrow2 |
\uparrow3 |
\uparrow3 |
A |
0 | \uparrow1 |
\uparrow2 |
\uparrow2 |
\nwarrow 3 |
\uparrow 3 |
\nwarrow4 |
B |
0 | \nwarrow1 |
\uparrow2 |
\uparrow2 |
\uparrow3 |
\nwarrow4 |
\uparrow4 |
Problem 2
Fill in the blanks in the following multiple LCS computation.
Solution 2
| * | y_j |
B |
D |
C |
A |
B |
A |
|---|---|---|---|---|---|---|---|
x_i |
0 | 0 | 0 | 0 | 0 | 0 | 0 |
A |
0 | \leftarrow\uparrow 0 |
\leftarrow\uparrow 0 |
\leftarrow\uparrow 0 |
\nwarrow 1 |
\leftarrow 1 |
\nwarrow 1 |
B |
0 | \nwarrow1 |
\leftarrow1 |
\leftarrow1 |
\leftarrow\uparrow 1 |
\nwarrow 2 |
\leftarrow 2 |
C |
0 | \uparrow 1 |
\leftarrow\uparrow 1 |
\nwarrow 2 |
\leftarrow 2 |
\leftarrow\uparrow 2 |
\leftarrow\uparrow 2 |
B |
0 | \nwarrow 1 |
\leftarrow\uparrow 1 |
\uparrow 2 |
\uparrow2 |
\nwarrow3 |
\leftarrow3 |
D |
0 | \uparrow1 |
\nwarrow2 |
\leftarrow\uparrow2 |
\uparrow2 |
\uparrow3 |
\uparrow3 |
A |
0 | \uparrow1 |
\uparrow2 |
\uparrow2 |
\nwarrow 3 |
\leftarrow\uparrow 3 |
\nwarrow4 |
B |
0 | \nwarrow1 |
\uparrow2 |
\leftarrow\uparrow2 |
\uparrow3 |
\nwarrow4 |
\leftarrow\uparrow4 |
Problem 3
Fill in the blanks in the following pseudocode for LCS-LENGTH.
Solution 3
LCS-LENGTH(X, Y)
m = X.length
n = Y.length
let b[1..m, 1..n] and c[1..m, 1..n] be new tables
for i = 1 to m
c[i][0] = 0
for j = 1 to n
c[0][j] = 0
for i = 1 to m
for j = 1 to n
if X[i] = Y[j]
c[i][j] = c[i - 1][j - 1] + 1
b[i][j] = \nwarrow
else if c[i-1][j] >= c[i][j-1]
c[i][j] = c[i-1][j]
b[i][j] = \uparrow
else
c[i][j] = c[i][j-1]
b[i][j] = \leftarrow
return c, b
Problem 4
Fill in the blanks in the following pseudocode for PRINT-LCS.
Solution 4
PRINT-LCS(b, X, i, j)
if i = 0 or j = 0
return
if b[i][j] == \nwarrow
PRINT-LCS(b, X, i-1, j)
print X[i]
else if b[i][j] == \uparrow
PRINT-LCS(b, X, i-1, j)
else
PRINT-LCS(b, X, i, j-1)