アルゴリズムと計算量の問題
文字列 から 個以上の文字を取り除き、残った文字を元の順序のまま並べた文字列を、 の部分列という。 つの文字列の両方の部分列になっている文字列を共通部分列という。
DNA の塩基配列を表す つの文字列
について、 の先頭 文字と の先頭 文字の最長共通部分列の長さを とする(。)。 の 文字目を 、 の 文字目を とすると、 のとき
が成り立つ。この漸化式で表を埋めて、 と の最長共通部分列の長さ を求めよ。
この問題で使うもの
- 最長共通部分列(説明と入口の問題)
この問題を解けるようになるまで(2 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
最長共通部分列の表 を、問題文の漸化式に従って 行目から順に埋めていく方法を使う。
ヒント 2
各マスでは と が同じ文字かを確かめる。同じなら左上の値に を足し、違えば上と左の値の大きいほうをとる。
ヒント 3
行目(A)は 、 行目(C)は 、 行目(G)は になる。残りの 行を同じように埋める。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
の文字を行、 の文字を列にとり、 の行から順に、各行を左から右へ埋めていく。 行目と 列目はすべて である。
()
- (C):不一致。
- (A):一致。
- (T):不一致。
- (G):不一致。
- (A):一致。
()
- (C):一致。
- から :すべて不一致で、上も左も なので、いずれも
()
- :不一致。上の値がすべて なので
- (G):一致。
- (A):不一致。
()
- :不一致。
- (T):一致。
- (G):不一致。
- (A):不一致。
()
- (C):不一致。
- (A):一致。
- (T):不一致。
- (G):不一致。
- (A):一致。
完成した表( から の部分)は次のとおり。
よって である。実際、 や は と の両方の部分列になっており、長さ の共通部分列である。
答え:
別解
表を として行 ( A, C, G, T, A)、列 ( C, A, T, G, A)の順に埋める。 である。
(A):
(C):
(G):
(T):
(A):
例えば は A なので となる。
検算として、共通部分列 CGA は ACGTA の 2,3,5 文字目、 CATGA の 1,4,5 文字目に現れるので長さ 3 のものが実際に存在する。表の値からこれより長いものは存在しない。
よって 。