95 lines
4.3 KiB
Markdown
95 lines
4.3 KiB
Markdown
# 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
|
|
|
|
```text
|
|
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
|
|
|
|
```text
|
|
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)
|
|
```
|