生物情報ソフトウェア特論 (1) 文字列マッチング・データ構造

Slides:



Advertisements
Similar presentations
生物情報ソフトウェア特論 (3)近似文字列マッチング 阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター.
Advertisements

組合せ最適化輪講 2.3 連結性 川原 純. 2.3 連結性 内容 – グラフ上の節点をすべてたどるアルゴリズム 計算機上でのグラフの表現 – 強連結成分を求めるアルゴリズム トポロジカル順序を求める方法も – k- 連結、 k- 辺連結について – 2- 連結グラフの耳分解について.
情報生命科学特別講義III (5)配列アラインメント
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
情報生命科学特別講義III (1) 文字列マッチング
簡潔データ構造 国立情報学研究所 定兼 邦彦.
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
ヒープソートの演習 第13回.
コンパイラ 2011年10月17日
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
情報生命科学特別講義III (8)木構造の比較: 順序木
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
On the Enumeration of Colored Trees
分子生物情報学 動的計画法に基づく配列比較法 (ペアワイズアライメント法)
奈良女子大集中講義 バイオインフォマティクス (6) モチーフ発見・隠れマルコフモデル
集中講義(九州大学数理学研究院) バイオ構造データに対する数理モデルと アルゴリズム(3) + 数理談話会 木構造および画像データの文法圧縮
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
京都大学 化学研究所 バイオインフォマティクスセンター
第11講: 平成18年12月 8日 (金) 4限 E352教室 グラフ (1).
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
コンパイラ 2012年10月15日
集中講義(九州大学数理学研究院) バイオ構造データに対する数理モデルと アルゴリズム(5) 木構造データ間の編集距離
情報生命科学特別講義III (7)進化系統樹推定
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
データ構造とアルゴリズム論 第7章 探索のアルゴリズム
二分探索木によるサーチ.
データ構造とプログラミング技法 (第10回) ー文字列照合(KMP法、BM法)ー.
情報生命科学特別講義III (11) RNA二次構造予測
k 個のミスマッチを許した点集合マッチング・アルゴリズム
生物情報ソフトウェア特論 (3)近似文字列マッチング
情報生命科学特別講義III (4)近似文字列マッチング
生命情報学入門 配列のつなぎ合わせと再編成
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
情報生命科学特別講義III (2)文字列データ構造
九州大学大学院 情報学専攻特別講義 (9) ブーリアンネットワークの 解析と制御
奈良女子大集中講義 バイオインフォマティクス (9) 相互作用推定
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
データ構造とアルゴリズム 第14回 文字列の照合.
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
第9回 優先度つき待ち行列,ヒープ,二分探索木
九州大学大学院 情報学専攻特別講義 (3) 配列解析
分子生物情報学(2) 配列のマルチプルアライメント法
情報生命科学特別講義III (13) 固定パラメータアルゴリズムと 部分k木
分子生物情報学(3) 確率モデル(隠れマルコフモデル)に 基づく配列解析
計算の理論 II 前期の復習 -有限オートマトン-
アルゴリズム論 (第12回) 佐々木研(情報システム構築学講座) 講師 山田敬三
九州大学大学院 情報学専攻特別講義 (6) 固定パラメータアルゴリズムと 部分k木
生物情報ソフトウェア特論 (2)たたみ込みとハッシュに 基づくマッチング
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
第9回 優先度つき待ち行列,ヒープ,二分探索木
阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター
データ構造とアルゴリズム論 第6章 探索のアルゴリズム
計算の理論 I ー正則表現とFAの等価性ー 月曜3校時 大月 美佳.
九州大学大学院 情報学専攻特別講義 (8) ニューラルネットワークの 離散モデル
奈良女子大集中講義 バイオインフォマティクス (7) 進化系統樹
情報生命科学特別講義III (14) グラフの比較と列挙
4.プッシュダウンオートマトンと 文脈自由文法の等価性
生命情報学特論 (6) 固定パラメータアルゴリズムと 部分k木
生物情報ソフトウェア特論 (4)配列解析II
Q q 情報セキュリティ 第8回:2004年5月28日(金) の補足 q q.
参考:大きい要素の処理.
情報生命科学特別講義III (3)たたみ込みとハッシュに 基づくマッチング
データ構造とアルゴリズム 第14回 文字列の照合.
生物情報ソフトウェア特論 (10)固定パラメータアルゴリズムと 部分k木
集中講義(東京大学)「化学システム工学特論第3」 バイオインフォマティクス的手法による化合物の性質予測(1) バイオインフォマティクス概観
分子生物情報学(0) バイオインフォマティクス
Presentation transcript:

生物情報ソフトウェア特論 (1) 文字列マッチング・データ構造 生物情報ソフトウェア特論 (1) 文字列マッチング・データ構造 阿久津 達也 京都大学 化学研究所 バイオインフォマティクスセンター

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

講義目的、成績、教科書 講義目的 バイオインフォマティクスにおける主要な離散アルゴリズムについて理解する 乱拓アルゴリズム、近似アルゴリズム、固定パラメータアルゴリズムなど、現代的なアルゴリズム設計技法について理解する 計算時間および解の最適性もしくは近似精度に理論的保証のあるアルゴリズムを主対象とする 成績評価 出席5割、レポート5割 レポートは最終日の講義において出題 参考書(主に第4-9回) 主に第4-9回: 阿久津達也:バイオインフォマティクスの数理とアルゴリズム、共立出版、2007 第1,2回: Crochemore & Rytter: Jewels of Stringology, World Scientific, 2002 第12回: Anthony: Discerete Mathematics on Neural Networks, SIAM, 2001. その他は講義ノートにおいて該当トピックの最初に参考文献を記載

文字列マッチング問題

文字列マッチング問題(1) 例 入力 パターン文字列: テキスト文字列: 出力 を満たす、すべての j j=6 j=14 j=3 j=10

文字列マッチング問題(2) 単純アルゴリズム 一文字ずつ、ずらしながらチェック 例 全部で、4+1+1+2+4+1=13 回の比較

文字列マッチング問題(3) 命題: 単純アルゴリズムの時間計算量は Θ(mn) 証明: 時間計算量が O(mn) なのは明らか。 以下の例の場合、m(n-m+1) 回の比較が必要なので、Ω(mn) 時間。 ただし、平均的にはO(m+n)時間で動作することが知られている。

Knuth-Morris-Prattアルゴリズム

KMPアルゴリズム: アイデア アイデア: 以前の結果を利用 表 h[i]: 次を満たす最大の k (無い時は h[i]=0) アイデア: 以前の結果を利用 j=2 ではグレーのところだけをチェックすれば良い 表 h[i]: 次を満たす最大の k (無い時は h[i]=0)

KMPアルゴリズム: テキスト処理 KMPアルゴリズム (テキスト処理) 表 h[i]: 次を満たす最大の k (無い時は h[i]=0) 上記はマッチの有無のみを判定。すべての j の出力は宿題

KMPアルゴリズム: 実行例(1) 表 h[i]: 次を満たす最大の k (無い時は h[i]=0) a b p h[i] 1 2 3 4 i a b h[4]=3 a a a b h[4]=3 a a a b t a c b a c b a a a b h[3]=0 a c b

KMPアルゴリズム: 実行例(2) h[5]=0 Match! h[6]=2 h[2]=1 h[3]=0

KMPアルゴリズム: 実行例(3) h[12]=7 h[7]=4 h[4]=2 h[2]=1 h[1]=0

KMPアルゴリズム: 解析 定理: KMPアルゴリズム(テキスト処理)の時間計算量は O(n) 証明: 明らかに (#) にかかる時間が問題。その時間は ・ j が1増えた時のみ、i も1増える ・ i←h[i] を1回実行すると、i は少なくとも1減る ・ i は増えた回数以上に減ることはない より、O(n)。よって、全体の計算量も O(n) 解析のアイデア: 計算量のならし解析(amortized analysis)          ここでは「稼いだ分しか使えない」が基本的アイデア

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

Boyer-Moore アルゴリズム

BMアルゴリズム: アイデア、例 例 KMPではテキスト中の文字を全て1回は調べている まず、c と d を比較。d は P 中には現れないので、P が d と重なることはない。 よって、次のようにずらして、最後の文字を比較。 P 中の c の位置に T 中の a があるので、P 中の最後の a が重なるようにずらす

BMアルゴリズム: 計算量 詳細を工夫することにより、最悪の場合を O(m+n) とすることができる 平均的には KMP よりずっと速い BM と似たアルゴリズムでは、平均的に O((n/m) logkm) 時間を達成(ただし、k はアルファベットのサイズ(文字種の個数))

Aho-Corasick アルゴリズム

複数文字列マッチング問題 入力 キーワード集合: テキスト文字列: 出力 を満たす、すべての j KMPやBMを k 回実行 ⇒ O(kn) 時間 Aho-Corasick アルゴリズムなら、O(m+n) 時間 これ以降の講義では、アルファベットΣ(文字種の集合)は固定と仮定

Aho-Corasick アルゴリズム アイデア キーワード集合からDFA(決定性有限オートマトン)を構成 例: W={ he, she, his, hers } 実線: 前方遷移関数 f 点線: 失敗関数 g 0 に戻る失敗関数 は省略

Aho-Corasick アルゴリズム: 実行例 W={ he, she, his, hers }, T = ushers u s h e r s 0 0 3 4 5 8 9 2 0 に戻る失敗関数は省略

Aho-Corasickアルゴリズム: テキスト処理 O(n)時間 W={ he, she, his, hers } T = ushers

Aho-Corasick アルゴリズム: 例題 W={ he, she, his, hers }, T = rhishers r h i s h e r s 0 0 1 6 7 4 5 8 9 3 2 0 に戻る失敗関数は省略

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

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

接尾辞木

接尾辞木 (suffix tree) 文字列 S[1..n] の接尾辞(suffix) 接尾辞木 S[1..n], S[2..n], S[3..n], ・・・, S[n-1..n], S[n..n] 接尾辞木 文字列のすべての 接尾辞から構成されるトライ(trie) S[n+1]=$ を追加し最後尾を表す (以降は $ を追加後に n 文字とする) ただし、子が1個しか ない頂点は縮約 S=aabbccdabbca$ の接尾辞 $ a$ ca$ bca$ . abbccdabbca$ aabbccdabbca$

接尾辞木の応用: パターン検索 テキスト文字列の接尾辞木を構成(1回のみ) パターン文字列の入力の毎に、根から一致する文字を順にたどる パターン文字列長に比例する時間(O(m)時間)で検索が終了 テキスト文字列長に無関係 ⇒ データベース検索に有用

接尾辞木の応用: Longest Common Substring 2個の文字列 S1, S2 に共通に出現する最長の連続部分文字列の検出 「k文字ずらしては一致する部分をチェックする」というアルゴリズムではO(|S1|・|S2|)時間 接尾辞木を用いれば 線形時間(なお、接尾辞木も線形時間で構築可能) S=S1#S2$ の接尾辞木を作成 ⇒ #を含む葉へのパスと含まない葉へのパスを持つ頂点をマーク ⇒ 根からの文字数最大のマークつき頂点を探す S1=aabbcc S2=abbdd S=aabbcc#abbdd$

接尾辞配列 (suffix array) 接尾辞木と似た情報をより簡潔に表現 もとの文字列の接尾辞をソートし、接尾辞の開始位置のみを格納した配列(図中のSA) 文字列 S SA ソートした接尾辞

接尾辞配列の性質 接尾辞木があれば簡単に構成できるが、接尾辞木を作らなくても O(n) 時間で直接構成可能 部分文字列検索を、単純な二分探索法で O(m log n)時間で実行可。より精密な方法を使えば、O(m+log n)時間で実行可。 その他、接尾辞木でできる多くの操作が接尾辞配列でも可能(ただし、配列以外に付加的な情報が必要になる場合もある) 部分文字列検索の例: P=abraca a: (10,7,0,3,5) ⇒ ab: (7,0) ⇒ abr: (7,0) ⇒ abra (7,0) ⇒ abrac (0)

Burrows-Wheeler(BW)変換 例で示す: S=abracadabra$ ($は終端を意味) この文字列を巡回させた文字列をすべて生成し、ソートし、終端の文字を並べたものが変換後の文字列 ソート ard$rcaaaabb

BW変換: 逆変換 変換後の文字列 逆変換:アイデア S=abracadabra$ 逆変換:方法 この作業を繰り返す 同じ文字が連続して並ぶことが多い ⇒ データ圧縮に有利 もとの文字が(同じ回数だけ)出現 終端 始端 逆変換:アイデア ソート後の巡回文字列の終端(BW変換)と始端の文字を並べる(文字には順番に番号を付加) 同じ行の(終端、始端)はS中で連続して出現 S=abracadabra$ 逆変換:方法 始端を並べた文字列を、BW変換後の文字をソートして作成 左側が$である行を探す⇒右側(a3)がSの1番目 左側がa3である行を探す⇒右側(b2)がSの2番目 左側がb2である行を探す⇒右側(r2)がSの3番目 この作業を繰り返す

始端と終端で順番が保存される理由 終端 始端 これをソートしたもの の末尾が a になる ので、 始端と終端で a の 順番が保存される

まとめ(1) 文字列マッチング: 線形時間で可能 補足 KMPアルゴリズム: 失敗関数の利用 文字列マッチング: 線形時間で可能 KMPアルゴリズム: 失敗関数の利用 Boyer-Mooreアルゴリズム:パターンの最後から検索 Aho-Corasickアルゴリズム:オートマトンを構成 補足 平均的には線形時間より高速に可能 近年では圧縮文字列の検索が盛んに研究 Aho-Corasick では O(log |Σ|)だけアルファベットサイズに依存していたが、前処理(DFAの構成)に関しては依存しないアルゴリズムも存在 [Dori & Landau: Inf. Proc. Lett. 2006]

まとめ(2) 接尾辞木 BW変換 接尾辞配列 補足 接尾辞集合をコンパクトに表現 線形時間で構成可能 文字列をコンパクトに表現、圧縮にも有効、高速な検索が可能 接尾辞配列 接尾辞木と同様の目的、よりコンパクト 補足 近年ではコンパクトかつ検索その他を用意にする簡潔データ構造(succinct data structure)に関する研究が盛んに行われている