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

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

難易度 4大学院入試の標準レベル大学数学 アルゴリズムと計算量

文字列 に次の 種類の操作をくり返し行って、文字列 に変換することを考える。

  • 挿入: 任意の位置に 文字を挿入する。コストは
  • 削除: 文字を削除する。コストは
  • 置換: 文字を別の 文字に置き換える。コストは

操作のコストの合計の最小値を、 から への重み付き編集距離という。

のとき、 から への重み付き編集距離を求めよ。

この問題で使うもの

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

読み込み中…

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

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

ヒント

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

ヒント 1

置換のコスト と、「削除 挿入」のコストを比べてみよう。最適な変換で使う操作の種類が絞れる。

ヒント 2

挿入と削除だけを使うとき、削除されずに残る文字は と の共通部分列になる。コストは ( は残る文字数)と表せる。

ヒント 3

最長共通部分列の長さ を、 なら 、そうでなければ で表を埋めて求めよう。 の最初の 文字 と 全体の LCS の長さは になる。

答えと解説

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

置換を使わなくてよいこと. 置換 回(コスト )は、その文字の削除と新しい文字の挿入(コスト )で置き換えられ、コストが真に下がる。したがって最適な変換は挿入と削除だけからなるとしてよい。

挿入・削除だけの場合のコスト. 挿入と削除だけで を に変えるとき、 のうち削除されずに残る文字は、順序を保ったまま の中に現れるので、 と の共通部分列をなす。残る文字数を とすると、削除は 回、挿入は 回必要で、逆に長さ の共通部分列があればこの回数で変換できる。よって

であり、(最長共通部分列の長さ)を動的計画法で求めればよい。

LCS の動的計画法. , とし、 を と の LCS の長さとする。 で

である。表を埋めると(行が の文字、列が の文字 )

となり、 である。実際、例えば ( の第 文字、 の第 文字)や は長さ の共通部分列である。

答え.

具体的には、共通部分列 を残し、 の第 文字 の 文字を削除して にし、そこへ の第 文字にあたる の 文字を対応する位置に挿入すると

となり、コスト で変換できる。

別解

置換のコストは で、削除 回と挿入 回のコストの和 より大きい。よって置換は使わないとしてよく、操作は挿入と削除だけである。このとき、残す文字(共通部分列)の長さを とすると、コストは となる。したがって は と の最長共通部分列(LCS)の長さをとればよい。

LCS の長さを動的計画法で求める。 の先頭 文字と の先頭 文字の LCS の長さを とする。 の順に並べると、
- (C):
- (A):
- (T):
- (G):
- (A):
- (C):
- (T):

よって である。

検算: 共通部分列 は の 文字目、 の 文字目にあり、長さ の共通部分列が実際に存在する。 から残りの 文字(A,T,A)を削除し、 の残りの 文字(A,T,A,G)を挿入するとコストは になる。

コストは 。

この問題の確認

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

間違いを報告する

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

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

関連する問題