# 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) ```