跳到主要内容

京都大学 情報学研究科 知能情報学専攻 2020年8月実施 情報学基礎 F2-1

Author​

祭音Myyura

Description​

大学公表の原題 削除、挿入、置換により数列 AA を数列 BB に変形する編集操作列を考える。AA と BB の各要素は以下の通りである。

A[1]=8,  A[2]=−4,  A[3]=1,  A[4]=−6A[1] = 8, \; A[2] = -4, \; A[3] = 1, \; A[4] = -6
B[1]=7,  B[2]=2,  B[3]=−4,  B[4]=3B[1] = 7, \; B[2] = 2, \; B[3] = -4, \; B[4] = 3

任意の AA の要素 aa と BB の要素 bb に対し、aa を削除するコストは ∣a∣|a|, bb を挿入するコストは ∣b∣|b|, aa から bb へ置換するコストは ∣a−b∣|a - b| とする。 なお AA の左端や右端にも挿入操作は可能である。 以下では2つの編集操作列において、編集操作の順序がのみ異なる場合は、同一の編集操作列とみなす。 例えば図1のように、AA の左端に 77 を挿入、88 を 22 に置換、−4-4 を削除、11 を −4-4 に置換、−6-6 を 33 に置換する編集操作列のコストは 7+6+4+5+9=317 + 6 + 4 + 5 + 9 = 31 となるが、これは最小ではない。

図1: 編集操作列の例(順不同)​
     8    -4    1   -6
| | | | |
7 2 -4 3

A[i:j]A[i:j] を AA の ii 番目から jj 番目の連続する要素で構成される数列とし、B[i:j]B[i:j] も同様に定義する。 M(m,n)M(m, n) を A[1:m]A[1:m] を B[1:n]B[1:n] に変形するコスト最小の編集操作列のコストとする。 動的計画法に基づくアルゴリズムに関する以下の設問に答えよ。

設問1 M(1,1),M(1,2),M(1,3),M(1,4)M(1, 1), M(1, 2), M(1, 3), M(1, 4) の値をそれぞれ求めよ。

設問2 M(2,1),M(3,1),M(4,1)M(2, 1), M(3, 1), M(4, 1) の値をそれぞれ求めよ。

設問3 M(4,4)M(4, 4) を M(3,3),M(3,4),M(4,3)M(3, 3), M(3, 4), M(4, 3) を用いて表現せよ。

設問4 M(4,4)M(4, 4) の値を求めよ。

設問5 AA を BB に変形するコスト最小の編集操作列をすべて図1のように示せ。

题目描述​

用删除、插入、替换把数列

A=(8,−4,1,−6)A=(8,-4,1,-6)

变为

B=(7,2,−4,3).B=(7,2,-4,3).

删除 aa 的代价为 ∣a∣|a|,插入 bb 的代价为 ∣b∣|b|,将 aa 替换为 bb 的代价为 ∣a−b∣|a-b|;也可在 AA 两端插入。若两个编辑方案仅操作顺序不同,视为同一方案。题中示例方案总代价为 7+6+4+5+9=317+6+4+5+9=31,但并非最小。

令 A[i:j]A[i:j]、B[i:j]B[i:j] 表示相应连续子序列,M(m,n)M(m,n) 为把 A[1:m]A[1:m] 变为 B[1:n]B[1:n] 的最小代价。基于动态规划回答:

  1. 分别求 M(1,1),M(1,2),M(1,3),M(1,4)M(1,1),M(1,2),M(1,3),M(1,4)。
  2. 分别求 M(2,1),M(3,1),M(4,1)M(2,1),M(3,1),M(4,1)。
  3. 用 M(3,3),M(3,4),M(4,3)M(3,3),M(3,4),M(4,3) 表示 M(4,4)M(4,4)。
  4. 求 M(4,4)M(4,4)。
  5. 按题中对齐图的形式,列出把 AA 变为 BB 的全部最小代价编辑方案。

Kai​

境界値は M(0,0)=0M(0,0)=0、M(i,0)=∑k=1i∣A[k]∣M(i,0)=\sum_{k=1}^i|A[k]|、M(0,j)=∑k=1j∣B[k]∣M(0,j)=\sum_{k=1}^j|B[k]| とする。

M[i][j]=min⁡{M[i−1][j]+∣Ai∣M[i][j−1]+∣Bj∣M[i−1][j−1]+∣Ai−Bj∣M[i][j] = \min \begin{cases} M[i-1][j]+|A_{i}|\\ M[i][j-1]+|B_{j}|\\ M[i-1][j-1]+|A_{i}-B_{j}| \end{cases}

設問1​

M(1,1)=1, M(1,2)=3, M(1,3)=7, M(1,4)=10M(1,1) = 1, \ M(1,2) = 3, \ M(1,3) = 7, \ M(1,4) = 10

設問2​

M(2,1)=5, M(3,1)=6, M(4,1)=12M(2,1) = 5, \ M(3,1) = 6, \ M(4,1) = 12

設問3​

M(4,4)=min⁡{M(3,3)+9M(3,4)+6M(4,3)+3M(4,4) = \min \begin{cases} M(3,3) + 9\\ M(3,4) + 6\\ M(4,3) + 3 \end{cases}

設問4​

M(4,4)=11M(4,4) = 11

設問5​

 8        -4    1   -6
| | | | |
7 2 -4 3
 8   -4    1   -6   
| | | | |
7 2 -4 3