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

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

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

文字列 から 個以上の文字を取り除き、残った文字を元の順に並べて得られる文字列を の部分列という(取り除く文字は連続していなくてよい)。 つの文字列の両方の部分列である文字列を共通部分列といい、共通部分列のうち長さが最大のものを最長共通部分列という。

つの DNA の塩基配列を表す文字列

を比べる。 の先頭から 文字目を 、 の先頭から 文字目を とし、 の最初の 文字と の最初の 文字の最長共通部分列の長さを とする()。 は と、 に対する漸化式

で求められる。この表を埋めて、 と の最長共通部分列の長さ を求めよ。

この問題で使うもの

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

読み込み中…

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

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

ヒント

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

ヒント 1

2 次元の表 を、動的計画法で小さい から順に埋めていく「最長共通部分列」の技能を使います。 行目と 列目はすべて です。

ヒント 2

各マスでは と を比べます。同じなら左上のマスに を足し、違うなら上のマスと左のマスの大きいほうをとります。

ヒント 3

行目(A)は 、 行目(G)は 、 行目(C)は になります。残りの 行も同じ規則で埋めてみましょう。

答えと解説

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

行を の文字()、列を の文字()に対応させ、 から始めて、上の行から順に左から右へ埋めていく。

()
- (G):不一致。
- (A):一致。
- (C):不一致。
- (T):不一致。
- (A):一致。

行は 。

()
- (G):一致。
- 〜:すべて不一致で、上も左も なので

行は 。

()
- :不一致。
- :不一致。
- (C):一致。
- :不一致。
- :不一致。

行は 。

()
- :不一致。
- (A):一致。
- :不一致。
- :不一致。
- (A):一致。

行は 。

()
- :不一致。
- :不一致。
- :不一致。
- (T):一致。
- :不一致。

行は 。

表をまとめると次のとおり。

したがって である。

確認として、 は の 文字目、 の 文字目として現れるので、長さ の共通部分列が実際に存在する。

別解

の各文字 に対して、 の順に表を埋める(各行は の値で、)。

  • (A):
  • (G):
  • (C):
  • (A):
  • (T):

たとえば は なので となる。 は なので となる。

検算: は の部分列でも の部分列でもあり、長さ の共通部分列が実際に存在する。表からは であり、これより長い共通部分列はない。

よって 。

この問題の確認

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

間違いを報告する

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

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

関連する問題