情報生命科学特別講義 iii (1) 文字列マッチング

27
情情情情情情情情情情 III (1) 情情情情情情情情 阿阿阿 阿阿 阿阿阿阿 阿阿阿阿阿 阿阿阿阿阿阿阿阿阿阿阿阿阿阿阿阿

Upload: aric

Post on 31-Jan-2016

65 views

Category:

Documents


0 download

DESCRIPTION

情報生命科学特別講義 III (1) 文字列マッチング. 阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター. 講義予定. 第1回 : 文字列マッチング 第2回:  文字列データ構造 第3回:  たたみ込みとハッシュに基づくマッチング 第4回:  近似文字列マッチング 第5回 :  配列アラインメント 第6回:  配列解析 第7回 :  進化系統樹推定 第8回 :  木構造の比較:順序木 第9回 :  木構造の比較:無順序木 第10回 :  文法圧縮 第11回 : RNA 二次構造予測 第12回 :  タンパク質立体構造の予測と比較 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 情報生命科学特別講義 III (1) 文字列マッチング

情報生命科学特別講義 III

(1) 文字列マッチング

阿久津 達也

京都大学 化学研究所バイオインフォマティクスセンター

Page 2: 情報生命科学特別講義 III (1) 文字列マッチング

講義予定 第1回 :  文字列マッチング 第2回: 文字列データ構造 第3回: たたみ込みとハッシュに基づくマッチング 第4回: 近似文字列マッチング 第5回: 配列アラインメント 第6回: 配列解析 第7回: 進化系統樹推定 第8回: 木構造の比較:順序木 第9回: 木構造の比較:無順序木 第10回: 文法圧縮 第11回:  RNA 二次構造予測 第12回: タンパク質立体構造の予測と比較 第13回: 固定パラメータアルゴリズムと部分 k 木 第14回: グラフの比較と列挙 第15回: まとめ

Page 3: 情報生命科学特別講義 III (1) 文字列マッチング

講義目的 バイオインフォマティクスにおける主要な離散アルゴリズムにつ

いて理解する 乱拓アルゴリズム、近似アルゴリズム、固定パラメータアルゴリ

ズムなど、現代的なアルゴリズム設計技法について理解する 計算時間および解の最適性もしくは近似精度に理論的保証のあるア

ルゴリズムを主対象とする 成績評価

出席4割、レポート6割 レポートは最終日の講義において出題

教科書(主に第 5-8 回、第 11-12 回) 阿久津達也:バイオインフォマティクスの数理とアルゴリズム、共

立出版、 2007 参考書

第1,3回: Crochemore & Rytter: Jewels of Stringology, World Scientific, 2002

第 2 回: 岡野原大輔:高速文字列解析の世界、岩波書店、 2012 その他は講義ノートにおいて該当トピックの最初に参考文献を記載

講義目的、成績、教科書

Page 4: 情報生命科学特別講義 III (1) 文字列マッチング

文字列マッチング問題

Page 5: 情報生命科学特別講義 III (1) 文字列マッチング

文字列マッチング問題(1) 入力

パターン文字列: テキスト文字列:

出力                   を満たす

、すべての j

mpppP 21

ntttT 21

1121 mjjjm tttppp

例acgtP tgtacgtcatactgcacgtcT 20

4

n

m

j=6 j=14

acacP cacacgctaaacacgctaT

j=3 j=10 j=12

18

4

n

m

Page 6: 情報生命科学特別講義 III (1) 文字列マッチング

文字列マッチング問題(2)

jtttppp

n-mj

mjjjm output

1 1

1121 thenif

dotofor

単純アルゴリズム

一文字ずつ、ずらしながらチェック

全部で、 4+1+1+2+4+1=13 回の比較

Page 7: 情報生命科学特別講義 III (1) 文字列マッチング

文字列マッチング問題(3)命題: 単純アルゴリズムの時間計算量は Θ(mn)

証明: 時間計算量が O(mn) なのは明らか。以下の例の場合、 m(n-m+1) 回の比較が必要なので、 Ω(mn) 時間。

ただし、平均的には O(m+n) 時間で動作することが知られている。

nm

abaaaaaTabaaaP ,

jtttppp

n-mj

mjjjm output

1 1

1121 thenif

dotofor

Page 8: 情報生命科学特別講義 III (1) 文字列マッチング

Knuth-Morris-Pratt アルゴリズム

Page 9: 情報生命科学特別講義 III (1) 文字列マッチング

KMP アルゴリズム: アイデア

アイデア: 以前の結果を利用 j=2 ではグレーのところだけをチェックすれ

ば良い 

表 h[i] : 次を満たす最大の k (無い時は h[i]=0 )

ikikik pppppp かつ1111

Page 10: 情報生命科学特別講義 III (1) 文字列マッチング

KMP アルゴリズム: テキスト処理 表 h[i] : 次を満たす最大の k (無い時は

h[i]=0 )ikikik pppppp かつ1111

`no'output `yes'output)(

;1;1

)(#];[)0(

)(

;1;1

elsethenif

doandwhile

doandwhile

mi

jjii

ihitpi

njmi

ji

ji

KMP アルゴリズム (テキスト処理)

上記はマッチの有無のみを判定。すべての j の出力は宿題

Page 11: 情報生命科学特別講義 III (1) 文字列マッチング

KMP アルゴリズム: 実行例(1)

a a a bp

h[i]

1 2 3 4

0 0 0 3

i a a a b

a a a b

h[4]=3

表 h[i] : 次を満たす最大の k (無い時は h[i]=0 )

ikikik pppppp かつ1111

a a a b a a a b

a a a b

t

h[4]=3

h[3]=0

Page 12: 情報生命科学特別講義 III (1) 文字列マッチング

h[5]=0

h[3]=0

KMP アルゴリズム: 実行例(2)

Match!

h[6]=2

h[2]=1

Page 13: 情報生命科学特別講義 III (1) 文字列マッチング

KMP アルゴリズム: 実行例(3)

h[12]=7

h[7]=4

h[4]=2

h[2]=1

h[1]=0

Page 14: 情報生命科学特別講義 III (1) 文字列マッチング

KMP アルゴリズム: 解析定理:  KMP アルゴリズム(テキスト処理)の時間計算量は O(n)証明:

明らかに (#) にかかる時間が問題。その時間は・ j が1増えた時のみ、 i も1増える・ i←h[i] を1回実行すると、 i は少なくとも1減る・ i は増えた回数以上に減ることはないより、 O(n) 。よって、全体の計算量も O(n)

解析のアイデア: 計算量のならし解析( amortized analysis )         ここでは「稼いだ分しか使えない」が基本的アイデア

Page 15: 情報生命科学特別講義 III (1) 文字列マッチング

KMP アルゴリズム: パターン処理表 h[i] の作り方テキスト処理と似た手続き自分自身とのマッチをとりながら、 h[i] を作っていく 

ijhihjhpp

jjii

ihippi

mj

hji

ji

ji

][][][)(

;1;1

];[)0(

)(

;0]1[;1;0

elsethenif

doandwhile

dowhile

定理:  KMP アルゴリズムは文字列マッチング    問題を O(m+n) 時間で解く

Page 16: 情報生命科学特別講義 III (1) 文字列マッチング

Boyer-Moore アルゴリズム

Page 17: 情報生命科学特別講義 III (1) 文字列マッチング

BM アルゴリズム: アイデア、例

まず、 c と d を比較。 d は P 中には現れないので、 P が d と重なることはない。よって、次のようにずらして、最後の文字を比較。

KMP ではテキスト中の文字を全て1回は調べている BM では、パターンを後から前に調べることでテキス

ト中の一部の文字しか見ないようにする 

P 中の c の位置に T 中の a があるので、 P 中の最後の a が重なるようにずらす

Page 18: 情報生命科学特別講義 III (1) 文字列マッチング

BM アルゴリズム: 計算量 詳細を工夫することにより、最悪の場合を

O(m+n) とすることができる 平均的には KMP よりずっと速い BM と似たアルゴリズムでは、平均的に

O((n/m) logkm) 時間を達成(ただし、 k はアルファベットのサイズ(文字種の個数))

Page 19: 情報生命科学特別講義 III (1) 文字列マッチング

Aho-Corasick アルゴリズム

Page 20: 情報生命科学特別講義 III (1) 文字列マッチング

複数文字列マッチング問題 入力

キーワード集合: テキスト文字列:

出力               を満たす、すべて

の j

},,,{ 21 kwwwW

ntttT 21

))(( 1 jhhi tttwi

KMPや BM を k 回実行 ⇒ O(kn) 時間 Aho-Corasick アルゴリズムなら、 O(m+n) 時間

)||||||( 21 kwwwm

これ以降の講義では、アルファベット Σ (文字種の集合)は固定と仮定

Page 21: 情報生命科学特別講義 III (1) 文字列マッチング

Aho-Corasick アルゴリズムアイデアキーワード集合から DFA (決定性有限オートマトン)を構成 

例: W={ he, she, his, hers }

0 に戻る失敗関数は省略

実線: 前方遷移関数 f 点線: 失敗関数 g

Page 22: 情報生命科学特別講義 III (1) 文字列マッチング

Aho-Corasick アルゴリズム: 実行例W={ he, she, his, hers }, T = ushers

0 に戻る失敗関数は省略

u s h e r s 0 0 3 4 5 8 9 2

Page 23: 情報生命科学特別講義 III (1) 文字列マッチング

Aho-Corasick アルゴリズム: テキスト処理

is

tsgs

sfsfailtsg

ni

i

i

output)statematch a is(

);,(

);()),((

1

thenif

dowhile

dotofor

W={ he, she, his, hers } T = ushers

O(n) 時間

Page 24: 情報生命科学特別講義 III (1) 文字列マッチング

Aho-Corasick アルゴリズム: 例題W={ he, she, his, hers }, T = rhishers

0 に戻る失敗関数は省略

r h i s h e r s 0 0 1 6 7 4 5 8 9 3 2

Page 25: 情報生命科学特別講義 III (1) 文字列マッチング

Aho-Corasick アルゴリズム: DFAの構成 (1)1. パターン集合からトライを構成2. 前方遷移関数 g を作成3. 幅優先探索を用いて失敗関数 f を作成4. 最適化された失敗関数 h を作成(これは無くても OK ) 

Page 26: 情報生命科学特別講義 III (1) 文字列マッチング

Aho-Corasick アルゴリズム: DFAの構成 (2)

O(m) 時間定理Aho-Corasick アルゴリズムは複数文字列マッチング問題をO(m+n) 時間で解く

Page 27: 情報生命科学特別講義 III (1) 文字列マッチング

まとめ 文字列マッチング: 線形時間で可能

KMP アルゴリズム: 失敗関数の利用 Boyer-Moore アルゴリズム:パターンの最後から検索 Aho-Corasick アルゴリズム:オートマトンを構成

補足 平均的には線形時間より高速に可能 近年では圧縮文字列の検索が盛んに研究 Aho-Corasick では O(log |Σ|) だけアルファベットサ

イズに依存していたが、前処理( DFA の構成)に関しては依存しないアルゴリズムも存在 [Dori & Landau: Inf. Proc. Lett. 2006]