単元一覧 › 大学数学 アルゴリズムと計算量

アルゴリズムと計算量の問題

難易度 2教科書の演習問題レベル大学数学 アルゴリズムと計算量

英大文字からなる文字列に対して、次の 種類の操作を考える。

  • 挿入: 好きな位置に 文字を挿入する(コスト )
  • 削除: 文字を削除する(コスト )
  • 置換: 文字を別の 文字に置き換える(コスト )

操作を何回か行って文字列 を文字列 に変えるとき、使った操作のコストの合計の最小値を と書く。

のとき、 を求めよ。

この問題で使うもの

この問題を解けるようになるまで(2 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 動的計画法の基本(硬貨の最小枚数)
  2. 編集距離

ヒント

行き詰まったら、上から順に 1 つずつ開いてください。

ヒント 1

の先頭 文字を の先頭 文字に変える最小コスト を考え、表を埋める動的計画法を使いましょう。

ヒント 2

( なら 、そうでなければ )、初期値は 、 です。

ヒント 3

表の途中では (B が一致し、R を A に置換)、、、 となります。残りは を計算するだけです。

答えと解説

答えを見る
結果を記録する(このブラウザにだけ保存されます):
解説を読む

、 とし、 の先頭 文字を の先頭 文字に変える最小コストを とおく()。

漸化式 最適な操作列で、 の先頭 文字の最後の文字 と の先頭 文字の最後の文字 の扱いを考えると、次のどれかになる。

  • を削除する:
  • を挿入する:
  • を に対応させる(同じ文字ならそのまま、異なれば置換): 。ただし のとき 、 のとき

よって

であり、初期値は (すべて削除)、(すべて挿入)である。

表の計算 行を の先頭 文字、列を の先頭 文字として、上の行から順に埋める。

BADGER
024681012
B20246810
R4235798
I645681010
D86757911
G10897579
E1210119757

いくつかの成分の計算を示す。

  • : なので 。
  • : なので 。
  • : なので 。
  • : なので 。
  • : なので 。
  • : なので 。

したがって である。

最適な操作列の例 表をたどると、次の操作列が得られる。

1. を に置換(コスト ):
2. を削除(コスト ):
3. 末尾に を挿入(コスト ):

合計コストは である。なお、挿入と削除だけを使うと、最長共通部分列 (長さ )を残して削除 回・挿入 回が必要になり、コストは になる。置換 回が削除と挿入の組(コスト )より安いことが効いて、最小値は になる。

別解

重み付き編集距離の最小値を、アラインメント(対応づけ)で考える。

まず上界を求める。次の操作列で を に変えられる。
- B は一致するのでコスト
- R を A に置換する(コスト )
- I を削除する(コスト )
- D, G, E は一致するのでコスト
- 末尾に R を挿入する(コスト )

合計は である。

次に、これより小さくできないことを確かめる。
- 最長共通部分列は BDGE(長さ )である。
- BDGE を一致させる場合、X 側の余りは R, I で、Y 側の余りは A と、末尾の R である。
- B と D の間は、X 側が RI、Y 側が A である。コスト最小は置換と削除の組合せで である。
- E の後は、Y 側にだけ R がある。挿入で かかる。
- 合計は である。
- 置換が で、挿入と削除の和 より安いので、置換を使うのが有利である。ただし、一致が 文字より少ない対応づけは、余る文字が増えてコストが 以上になる。例えば B と E だけを一致させると、間の RIDG と ADG の対応づけに少なくとも かかる。
- 一致 BDGE を使わない場合も、 を下回る対応づけはない。

よって最小コストは である。

この問題の確認

AI が作成した問題です。公開前に次の確認を行いました。確認の方法について

間違いを報告する

この問題の誤り・分かりにくい点・難易度や学年のずれを知らせる
どこについての報告ですか

報告の内容と問題の番号を保存します。名前やメールアドレスは保存しません。

関連する問題