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

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

難易度 1教科書の例題レベル大学数学 アルゴリズムと計算量

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

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

これらの操作をくり返して文字列 を文字列 に変換するとき、かかるコストの合計の最小値(重み付き編集距離)を求めよ。

この問題で使うもの

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

読み込み中…

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

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

ヒント

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

ヒント 1

編集距離の動的計画法を使う。 を「 の先頭 文字を の先頭 文字に変える最小コスト」として、 の表を埋める。

ヒント 2

、 とし、 で順に計算する。

ヒント 3

1 行目(T)は 、2 行目(E)は となる。3 行目(A)は まで求まる。

答えと解説

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

、 とし、 を「 の先頭 文字を の先頭 文字に変換する最小コスト」と定める。コストは 、、 である。

手順 1(初期値) 空文字列にするには削除だけ、空文字列から作るには挿入だけを使うので

手順 2(漸化式) 最後の操作が削除・挿入・置換(一致なら )のどれかで場合を分けて

手順 3(表を埋める)

():
- (E):
- (A):
- (S):
- (T, 一致):

():
- (E, 一致):
- (A):
- (S):
- (T):

():
- (E):
- (A, 一致):
- (S):
- (T):

表にまとめると(行が 、列が )

手順 4(答え) 求める値は である。実際、先頭の T を削除(コスト )し、末尾に S と T を挿入(コスト )すれば合計 で TEA → EA → EAS → EAST と変換できる。

よって答えは 。

別解

重み付き編集距離を、アラインメント(対応のつけ方)で考えて最小コストを調べる。

まず、 の長さは 、 の長さは なので、挿入は少なくとも 回必要である。

最長共通部分列は (長さ )で、 を含む長さ 以上の共通部分列はない。

1. を対応させる場合: の先頭の T は対応先がないので削除する(コスト )。 の末尾の S, T は挿入する(コスト )。合計は 。
2. だけを対応させる場合: T の削除に 、A を S に置換して T を挿入するのに 、合計 以上になる。ここでは A→S 置換と T 挿入で 、A→A とせず削除・挿入にするとさらに増える。
3. を末尾の T に対応させる場合: Y の EAS を挿入し()、 の E, A を削除する()ので合計 。
4. 何も一致させない場合: 置換 回()と挿入 回()で合計 。

置換のコスト は削除と挿入の和 より小さいが、上の比較では 1 が最小である。

よって最小値は である。具体的な操作列は、TEA → (T を削除) EA → (S を挿入) EAS → (T を挿入) EAST で、コストは 。

検算として、長さの差から挿入が 回以上必要で、これだけでは変換できない(T が余る)ので、最低でもコスト に加えて T の処理(削除なら 、置換でも )が必要となる。したがって下限は であるが、置換で T を使う場合は他の文字の整合が崩れて上の場合分けのとおり を下回れない。

この問題の確認

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

間違いを報告する

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

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

関連する問題