最長共通部分列問題

最長共通部分列問題(さいちょうきょうつうぶぶんれつもんだい、: Longest-common subsequence problem, LCS)とは、与えられた列の集合(しばしば、2つの列からなる集合)の最長共通部分列を見つけ出す問題である。(ここで部分列(subsequence)は、部分文字列(substring)とは異なることに注意する。前者は元の列の連続した項からなる必要はない。)例えば、「ABCX」と「AYBZC」との最長共通部分列は「ABC」である。この問題は計算機科学における古典的問題であり、diff などのファイル比較プログラムの基礎をなし、バイオインフォマティクスにも応用されている。

計算量

入力列の個数が任意である一般の場合については、この問題はNP困難である。入力列の個数が一定のときには、この問題は動的計画法によって多項式時間で解く事ができる(後の項参照)。 個の列があり、長さが であるとする。単純な探索では、最初の列の 個の部分列が残りの列の部分列であるかを確かめる。それぞれの配列は、残りの配列長の線形時間で評価される。それゆえ、このアルゴリズムの計算時間は、下記の通りである。

2つの配列で列の長さが n と m の場合、動的計画法の解法による時間計算量は、O(n × m)である。入力配列の個数が任意の場合、動的計画法の解法は下記の計算量で解を与える。

より計算量の小さい方法が存在[1]するが、それはしばしば、最長共通部分列の配列長か、アルファベット(=対象とする列に現れる要素)のサイズ、もしくはその両方に依存する。

注意:最長共通部分列は、必ずしも一意ではない。例として ”ABC” と ”ACB” の最長共通部分列は ”AB” と ”AC” の両方である。実際、最長共通部分列の定義が「長さ最大の共通部分列をすべて見つけること」であることも多い。このように問題を変更すると、計算量は増大してしまう。なぜならば、長さ最大の部分列の数は最悪の場合[2]、指数関数的に増大する。入力配列が2つの場合でさえ同様である。

配列が二つの場合の解法

最長共通部分列問題は、部分構造最適性を持つ。すなわち、この問題は、簡単な部分問題に分解することができ、それらはさらに簡単な部分問題に分解でき、そして最後には自明な問題に帰着される。またこの問題は、部分構造重複性を持つ。上位の部分問題を解く際には、しばしば下位の部分問題の解を再利用することになる。これら二つの特質を伴うこの問題は、動的計画法と呼ばれる手法で解決できる。動的計画法では、部分問題の解をその都度計算するのではなく、メモ化しておく。メモ化、すなわち、ひとつのレベルの部分問題の解をテーブルに格納して、次のレベルの部分問題が利用できるようにし、計算量を節約することが、この手続きには必要不可欠である(メモを取ることによく似ている所が、名前の由来である)。この解法を次に示す。

接頭辞

列が短くなるほど、部分問題も単純になる。短い配列は、「接頭辞(prefix)」という用語を使用して上手く説明できる。 配列の接頭辞は、配列の後ろを削除したものである。S を列(AGCA)とした時、列(AG)は、S の接頭辞の一つである。接頭辞は「もとの配列の名前」の後に、「接頭辞がいくつの文字を含んでいるか」の示す添え字を置くことで表わす。[3]

接頭辞(AG)は、 S の最初の2要素を含んでいるので、S2 と表記される。可能な S の接頭辞は、

S1 = (A)
S2 = (AG)
S3 = (AGC)
S4 = (AGCA)

である。 任意の二つの列 XY の最長共通部分列問題を解くことは、XY の最長共通部分列を与える関数LCS(X, Y)を構成することである。この関数は、続く二つの特性を持つ。

最初の特性

二つの列の最後の要素は同じであるとする。これらの最長共通部分列を求めるには、それぞれの要素から最後の要素を取り除いた列の最長共通部分列を見つけ、そしてその最長共通部分列に取り除かれた要素を追加すればよい。

例として、ここに同じ最終要素を持つ二つの列(BANANA)と(ATANA)がある。
共通する最終要素を取り除くことを、共通ではない最終要素が見つかるまで、繰り返す。取り除かれた列は(ANA)である。
考察すべき列は(BAN)と(AT)であり、最後の二つの配列の最長共通部分列は(A)であることが容易にわかる。
取り出した要素(ANA)を追加し(AANA)となる。これが元の配列の最長共通部分列であることは容易に確かめられる。

接頭辞に関して、

if xn=ym, then LCS(Xn, Ym) = (LCS( Xn-1, Ym-1), xn)

が成り立つ。ここで最後の括弧は、列の最後にxnを追加することを表す。 XnYmの最長共通部分列問題が、より短い列 Xn-1Ym-1の最長共通部分列問題に帰着されたことに注意せよ。

第二の特性

二つの列 XYの最後の要素は同じでないとする。その時、XYの最長共通部分列は、二つの配列LCS(Xn,Ym-1)とLCS(Xn-1,Ym)の長い方である。

この特質を理解するため、次の二つの配列について考える:

X: ABCDEFG (長さn)
Y: BCDGK (長さm)

これら二つの配列の最長共通部分列は、最後がG(列"X"の最後の要素) もしくは、そうではないもののどちらかである。

ケース1:最後がGの最長共通部分列
この場合、最長共通部分列の最後はKではありえない。このとき、もしKが最長共通部分列にあれば、それは最後の文字となるので、Kは最長共通部分列にはない。したがって、YからKを取り除いても問題ないので、こう書くことができる: LCS(Xn,Ym) = LCS(Xn, Ym-1).

ケース2:最長共通部分列の最後が、Gではない場合
この場合は、上記と同じ理由により、列Xから G を取り除いても問題ないので、こう書くことができる:LCS(Xn,Ym) = LCS(Xn-1, Ym).

いずれにせよ、求めるべき最長共通部分列は、LCS(Xn, Ym-1) もしくはLCS(Xn-1, Ym)である。これら二つのLCSは、いずれもXYの共通部分列である。LCS(X,Y)は定義より最長なので、 LCS(Xn, Ym-1) と LCS(Xn-1, Ym) の長い方である。

最長共通部分列関数定義

二つの配列を以下のように定義する:

 X = (x1, x2...xm) … X の接頭辞は、 X1, 2,...m
 Y = (y1, y2...yn) … Y の接頭辞は、 Y1, 2,...n

LCS(Xi, Yj) は、XiYj の接頭辞の最長共通部分列セットを代表する。 この配列セットは、以下を与える。

XiYj に対する最長共通部分列を見つけるため、xiyj を比較する。もし、それらが同じであれば、その時は配列LCS(Xi-1, Yj-1) は、要素xiによって伸長されたものである。もしそれらが同じでなければ、その時は二つの配列の長さLCS(Xi, Yj-1), と LCS(Xi-1, Yj)は維持される。(もしそれらが両方とも同じ長さであり、しかし一致していない場合、その時は両方とも維持される) 注釈:添え字は、これらの公式によって1短縮される。結果は0の添え字も可能である。配列要素は、1から開始すると定義し、それは空の最長共通部分列(その時、添え字はゼロ)を追加する必要がある。

計算例

これから C = (AGCAT)と R = (GAC)の共通の最長部分列を見つける。最長共通部分列関数は、ゼロ番目の要素を使用する。それは、ゼロ接頭辞を定義するのに便利であり、配列C0 = Ø; と R0 = Øは空である。すべての接頭辞は、テーブル上で最初の縦列 C (これは列ヘッダとなる)と、最初の横列 R (これは行ヘッダとなる)である。

LCS Strings
0 1 2 3 4 5
0 A G C A T
0 0 Ø Ø Ø Ø Ø Ø
1 G Ø
2 A Ø
3 C Ø

このテーブルは、最長共通部分列のそれぞれの計算手順を保存するために使われ、二つ目の縦列と二つ目の横列はØで埋まっている。なぜなら、空配列は非空配列と比較されたとき、最長共通部分列はいつでも空配列である。

LCS(R1, C1)は、それぞれの配列の最初の要素と比較することによって決定した。G と A は、同じ長さではない、そう、その最長共通部分列は二つの最長配列、LCS(R1, C0) と LCS(R0, C1)を得る。(二つ目の特質を使用する) 続くテーブル、それら両方の空白は、LCS(R1, C1)も空白である。同じように、以下のテーブルも見えてくる。矢印は、配列が上のセル、LCS(R0, C1)と左のセル、LCS(R1, C0)の両方のセルから来ることを示している。

LCS(R1, C2) は、G と G を比較し決定された。それは一致している、そう、G は左上の配列LCS(R0, C1) に追加される。それは、(Ø)であり、(ØG)を与え、それは、(G)です。

LCS(R1, C3) は、G と C を比較し、それは一致しない。上の配列は空である; 左の一つは一つの要素 G を含んでおり、選択する最長のLCS(R1, C3)は(G)である。矢の指すのは左であり、二つの配列の最長となる。

LCS(R1, C4)も同様に(G)

LCS(R1, C5)も同様に(G)

"G" Row Completed
0 1 2 3 4 5
Ø A G C A T
0 Ø Ø Ø Ø Ø Ø Ø
1 G Ø Ø (G) (G) (G) (G)
2 A Ø
3 C Ø


LCS(R2, C1)は A と A を比較する。二つの要素は一致し、A は Ø に追加され、(A)となる。

LCS(R2, C2)は A と G を比較し、不一致。LCS(R1, C2)は上の(G)と左であるLCS(R2, C1)の(A)を使用する。この場合は、どちらの要素も含んでおり、その最長共通部分列は、二つの配列(A)と(G)のどちらかとなる。

LCS(R2, C3) は A と C を比較し、不一致、LCS(R2, C2) は、配列 (A) と (G) を含む。LCS(R1, C3) は(G)、それは既に LCS(R2, C2) を含んでいる。LCS(R2, C3)の結果は、もちろん、配列 (A) と (G) を含んでいる。

LCS(R2, C4) は A と A を比較し、一致。それは左上のセルに追加され、(GA)を与える。

LCS(R2, C5) は A と T を比較し、不一致。二つの配列(GA)と(G)を比較し、最長は(GA)、LCS(R2, C5) は(GA)である。

"G" & "A" Rows Completed
0 1 2 3 4 5
Ø A G C A T
0 Ø Ø Ø Ø Ø Ø Ø
1 G Ø Ø (G) (G) (G) (G)
2 A Ø (A) (A) & (G) (A) & (G) (GA) (GA)
3 C Ø


LCS(R3, C1) は C と A を比較し、不一致。LCS(R3, C1) は二つの配列の最長(A)を得る。

LCS(R3, C2)は C と G を比較し、不一致。LCS(R3, C1) と LCS(R2, C2) は、共通の一つの要素を持っている。結果、LCS(R3, C2) は二つの配列 (A) と (G) となる。

LCS(R3, C3) は C と C を比較し、一致。C は LCS(R2, C2) に追加され、それは二つの配列 (A) と (G)、そして、(AC)と (GC) を得る。

LCS(R3, C4) は C と A を比較し、不一致。LCS(R3, C3) を結合させ、それは (AC) と (GC)、そしてLCS(R2, C4)は (GA) を含んでおり、全部で (AC)、(GC)、(GA) の三つの配列を与える。

最後にLCS(R3, C5)は C と T を比較し、不一致。結果は、LCS(R3, C5)の通り、(AC)、(GC)、そして (GA) の三つの配列を含む。

Completed LCS Table
0 1 2 3 4 5
Ø A G C A T
0 Ø Ø Ø Ø Ø Ø Ø
1 G Ø Ø (G) (G) (G) (G)
2 A Ø (A) (A) & (G) (A) & (G) (GA) (GA)
3 C Ø (A) (A) & (G) (AC) & (GC) (AC) & (GC) & (GA) (AC) & (GC) & (GA)

結果として、最後のセルは (AGCAT) と (GAC) に共通なすべての最長部分列を含んでいる。それらは (AC) と (GC) そして (GA) である。またこのテーブルは、最長共通部分列の接頭辞すべての可能な組み合わせを見ることができる。例えば (AGC) と (GA) の最長共通部分列は (A) と (G) である。

トレースバックアプローチ

最長共通部分列のテーブルにおいて、最長共通部分列の行の計算に唯一要求されるのは、現在の行と次の行である。なお、長い配列の場合、それらの配列はおびただしく長くなるので、たくさんの記憶領域が要求される。記憶領域を節約するには、実際の部分列を保存しない事である。しかし、部分列の長さと方向矢印は保存する必要がある。それは、以下のテーブルのようにである。

Storing length, rather than sequences
0 1 2 3 4 5
Ø A G C A T
0 Ø 0 0 0 0 0 0
1 G 0 0 1 1 1 1
2 A 0 1 1 1 2 2
3 C 0 1 1 2 2 2

実際の部分列は、”トレースバック”手順で推測する。それは続く逆向き矢印であり、テーブルの最後のセルから開始する。トレースバックでは長さは減少する。配列に必須なのは共通の要素である。いくつかの経路が可能であり、その場合、セルに二つの矢印がある。以下は、その解析のためのテーブルである。セルの色の付いた数字は減少についての長さである。太字の数字はトレースした配列 (GA) である。

Traceback example
0 1 2 3 4 5
Ø A G C A T
0 Ø 0 0 0 0 0 0
1 G 0 0 1 1 1 1
2 A 0 1 1 1 2 2
3 C 0 1 1 2 2 2

脚註

  1. ^ L. Bergroth and H. Hakonen and T. Raita (2000). “A Survey of Longest Common Subsequence Algorithms”. SPIRE (IEEE Computer Society) 00: 39–48. doi:10.1109/SPIRE.2000.878178. ISBN 0-7695-0746-8. 
  2. ^ Ronald I. Greenberg (6 August 2003). "Bounds on the Number of Longest Common Subsequences". arXiv:cs.DM/0301030
  3. ^ Xia, Xuhua (2007). Bioinformatics and the Cell: Modern Computational Approaches in Genomics, Proteomics and Transcriptomics. New York: Springer. p. 24. ISBN 0-387-71336-0 

関連項目

Read other articles:

Untuk sinetron SCTV, lihat Pinokio dan Peri Biru. Untuk drama Korea, lihat Pinocchio (seri televisi 2014). Si Boneka Kayu, PinokioSutradaraWilly WiliantoProduserSabirin KasdaniDitulis olehImam TantowiAbbi WiyonoPemeranAtengIskakDina MarianaJack JohnLiza TanzilSup YusupSoes DAPenata musikGatot SubartoSinematograferAsmawiPenyuntingE. Mukhsin HamzahDistributorRapi FilmsTanggal rilis1979Durasi93 menitNegaraIndonesia Si Boneka Kayu, Pinokio adalah film Indonesia yang diproduksi pada tahun 19...

 

Rail service in Sydney, New South Wales, Australia Cumberland LineAn M set at Warwick Farm stationOverviewOwnerTransport Asset Holding EntityLocaleSydney, New South WalesTerminiRichmondLeppingtonStations30ServiceTypeCommuter railOperator(s)Sydney TrainsDepot(s)MortdaleRolling stockM, A setsHistoryOpened1996; 28 years ago (1996)TechnicalTrack gauge1,435 mm (4 ft 8+1⁄2 in) standard gauge Sydney Trains services Metro North West North Shore & Wester...

 

A state firearm has been designated by ten states in the United States: Alaska, Arizona, Utah, Indiana, Kentucky, Pennsylvania, West Virginia, Tennessee, Texas, and Missouri. States In March 2011, Utah adopted the M1911 pistol as its state firearm. This gun was designed by Ogden, Utah native John Browning. The adoption was supported by Republican Utah State Representative Carl Wimmer, who said, It does capture a portion of Utah's history and even bigger than that, it captures a portion of Am...

Aria Wangsakara Raden Aria Wangsakara (c. 1615 – c. 1681) adalah seorang dalem (kepala daerah), ulama dan pejuang Muslim keturunan Kerajaan Sumedang Larang yang umumnya dianggap sebagai pendiri Tangerang.[1][2] Pada November 2021, ia ditetapkan sebagai Pahlawan Nasional Indonesia oleh Presiden Joko Widodo.[3][4] Biografi Biografi Aria Wangsakara yang tepat sulit untuk dipastikan karena kisah-kisah kontradiktif yang muncul dalam teks yang berbeda, dan kurangny...

 

Груз-кормушка Кормушка (англ. feeder) — рыболовное приспособление, для приманивания рыбы к крючкам с наживкой или привлечения к месту ловли. Кормушки крепятся к леске при помощи различных видов оснастки (монтажа), на которых имеются один или несколько крючков для ловли...

 

Vein which drains blood from the large intestine Inferior mesenteric veinThe portal vein and its tributaries. The superior mesenteric vein and splenic vein, into which the inferior mesenteric vein empties. Leinal vein is an old term for splenic vein. Anatomical position.Superior and inferior duodenal fossæ.DetailsSystemHepatic portal systemDrains fromGastrointestinal tractSourceLeft colic vein, sigmoid veins, superior rectal vein,Drains toSplenic veinArteryInferior mesenteric arteryIdentifie...

South African record label Ambitiouz EntertainmentOfficial logoParent companyAmbitiouz Group (Pty) LtdFounded2015; 9 years ago (2015)FounderKgosi MahumapeloDistributor(s)Nyce EntertainmentGenreHip-hopCountry of origin South AfricaLocationMidrand, South AfricaOfficial websiteambitiouz.co.za Ambitiouz Entertainment is a South African independent record label owned and founded by Kgosi Mahumapelo. The label was founded in April 2015 and houses notable acts including, G-Sta...

 

Solar power plant in María Elena This article needs to be updated. Please help update this article to reflect recent events or newly available information. (April 2018) María Elena Solar Power PlantThermosolar plantCountryChileLocationAntofagastaCoordinates22°10′S 69°25′W / 22.167°S 69.417°W / -22.167; -69.417StatusProject approvedSolar farm TypeCSPCSP technologySolar power towerPower generation Units operational4Nameplate capacity400...

 

VTB United League 2014-2015 Competizione VTB United League Sport Pallacanestro Edizione VII Organizzatore ULEB Date 3 ottobre 2014 - 8 giugno 2015 Partecipanti 16 Risultati Vincitore  CSKA Mosca(6º titolo) Secondo  Chimki Cronologia della competizione 2013-2014 2015-2016 Manuale La VTB United League 2014-2015 è stata la 7ª edizione della VTB United League. La vittoria finale fu ad appannaggio dei russi del CSKA Mosca sui conterranei del Chimki. Andrej Voroncevič, del CSKA Mosca...

NGC 4203   الكوكبة الهلبة رمز الفهرس NGC 4203 (الفهرس العام الجديد)MCG+06-27-040 (فهرس المجرات الموروفولوجي)UGC 7256 (فهرس أوبسالا العام)IRAS F12125+3328 (IRAS)IRAS 12125+3328 (IRAS)PGC 39158 (فهرس المجرات الرئيسية)2MASX J12150502+3311500 (Two Micron All-Sky Survey, Extended source catalogue)1ES 1212+33.4 (Einstein Slew survey, Version No. 1)SDSS J121504.98+331143.1 (مسح سلون الرق...

 

Polytheistic religious groups Pagan redirects here. For other uses, see Pagan (disambiguation). Depiction from 1887 showing two Roman women offering a sacrifice to the goddess Vesta Paganism (from classical Latin pāgānus rural, rustic, later civilian) is a term first used in the fourth century by early Christians for people in the Roman Empire who practiced polytheism,[1] or ethnic religions other than Judaism. In the time of the Roman Empire, individuals fell into the pagan class e...

 

Artikel ini memberikan informasi dasar tentang topik kesehatan. Informasi dalam artikel ini hanya boleh digunakan untuk penjelasan ilmiah; bukan untuk diagnosis diri dan tidak dapat menggantikan diagnosis medis. Wikipedia tidak memberikan konsultasi medis. Jika Anda perlu bantuan atau hendak berobat, berkonsultasilah dengan tenaga kesehatan profesional. HematuriaMicroscopic hematuriaInformasi umum Dalam kedokteran, hematuria adalah kehadiran sel-sel darah merah (eritrosit) dalam urin. Ini mun...

У этого термина существуют и другие значения, см. Уступ (значения). Уиллис-тауэр составлен из девяти труб, которые, заканчиваясь на разных высотах, формируют уступы Уступ — изменение площади перекрытий в здании по мере увеличения высоты, за счёт чего приобретается ступен�...

 

Disambiguazione – Se stai cercando altri significati, vedi Guastalla (disambigua). Questa voce o sezione sull'argomento Emilia-Romagna è priva o carente di note e riferimenti bibliografici puntuali. Sebbene vi siano una bibliografia e/o dei collegamenti esterni, manca la contestualizzazione delle fonti con note a piè di pagina o altri riferimenti precisi che indichino puntualmente la provenienza delle informazioni. Puoi migliorare questa voce citando le fonti più precisamente. Segu...

 

بوذيانة (إذيسا) ΈδεσσαEdessa (باليونانية: Έδεσσα)‏    الموقع الجغرافي تقسيم إداري البلد اليونان[1][2] عاصمة لـ بيلا  المنطقة الإدارية مقدونيا الوسطى بيلا خصائص جغرافية إحداثيات 40°48′N 22°03′E / 40.8°N 22.05°E / 40.8; 22.05   المساحة 611 كيلومتر مربع  الأرض 312.2 �...

李敬元[1]이경원基本資料代表國家/地區 韩国出生 (1980-01-21) 1980年1月21日(44歲)[2] 韩国慶尚南道馬山市身高1.60米(5英尺3英寸)[2]體重56公斤(123英磅)[2]主項:女子双打、混合双打世界冠軍頭銜 尤伯杯:1職業戰績61勝–35負(女單)359勝–124負(女双)7勝–8負(混双)現時世界排名已經退役BWF id8245官方檔案链接BWF TournamentsoftwareBWF Fansites�...

 

Road in Queensland, Australia Nerang–Murwillumbah RoadQueenslandGeneral informationTypeRural roadLength36.4 km (23 mi)[1]Route number(s) State Route 97 (Nerang – Natural Bridge) Major junctionsNorth end Beaudesert–Nerang Road (State Route 90) Nerang Mount Nathan Road (State Route 90) Nerang  Beechmont Road Latimers Crossing Road (State Route 42) Pine Creek Road South end Numinbah Road (NSW Tourist Drive 34) Numinbah, New South WalesLocation(s)Major settlement...

 

Титульный лист первого тома словаря Слова́рь Акаде́мии Росси́йской — первый толковый словарь русского языка, содержащий 43 357 слов[источник не указан 972 дня] в шести частях. Работа над словарём началась в 1783 году и заняла всего 11 лет. При этом использов�...

Jimoto ga JapanGambar sampul manga Jimoto ga Japan volume pertama, yang diterbitkan di Jepang oleh Shueishaジモトがジャパン(Jimoto ga Japan) MangaPengarangSeiji HayashiPenerbitShueishaPenerbit bahasa InggrisNA Viz MediaImprintJump ComicsMajalahWeekly Shōnen Jump (5 September 2018 – 27 Mei 2019)Saikyō Jump (1 Juni 2019 – sekarang)Majalah bahasa InggrisNA Weekly Shonen JumpDemografiShōnenTerbit15 September 2018 – sekarangVolume2 (Daftar volume) Seri animeSutradaraIsamu UenoSken...

 

Juliano Belletti Informasi pribadiNama lengkap Juliano Haus BellettiTanggal lahir 20 Juni 1976 (umur 48)Tempat lahir Cascavel, BrasilTinggi 1,74 m (5 ft 8+1⁄2 in)[1]Posisi bermain Bek kanan GelandangKarier junior1992–1994 CruzeiroKarier senior*Tahun Tim Tampil (Gol)1994–1996 Cruzeiro 22 (0)1996–2002 São Paulo 54 (4)1999 → Atlético Mineiro (pinjaman) 17 (5)2002–2004 Villarreal 59 (6)2004–2007 Barcelona 71 (1)2007–2010 Chelsea 54 (5)2010–2011...