220 likes | 425 Views
k 個のミスマッチを許した点集合マッチング・アルゴリズム. 阿久津達也 京都大学 化学研究所 バイオインフォマティクスセンター. 最大共通部分点集合. 点集合合同性判定. 研究の背景 (1). 合同性判定 O( n log n ) (3 次元以下) [ Atkinson, 1987] O( n d -2 log n ) [Alt et al. 1988] O( n ( d -1)/2 log n ) (randomized) [Akutsu, 1998]
E N D
k 個のミスマッチを許した点集合マッチング・アルゴリズム 阿久津達也 京都大学 化学研究所 バイオインフォマティクスセンター
最大共通部分点集合 点集合合同性判定
研究の背景 (1) • 合同性判定 • O(n log n)(3次元以下) [Atkinson, 1987] • O(nd-2 log n) [Alt et al. 1988] • O(n(d-1)/2 log n) (randomized)[Akutsu, 1998] • O(nd/4+O(1) log n) (randomized)[Matousek, 1998] • 最大共通部分点集合[Akutsu,Tamaki,Tokuyama, 1998] • 2次元で O(n3.2 log n) • 3次元で O(n4.69 log n) ⇒ 二つの問題の時間計算量の間に大きな差 (両者ともパターン認識などにおける基本的問題)
研究の背景 (2) • 文字列マッチング • Exact マッチング:O(m+n) • 近似マッチング: O(mn) • k 個の誤りのみを許した場合: O(kn) ⇒ 点集合で誤りの個数を制限した場合は?
本研究の結果 • 最大共通部分点集合問題においてマッチしない点の個数を k 以下とした場合の効率的アルゴリズム • 数値列に対する近似マッチング
近似文字列マッチング • 近似文字列マッチング • 編集距離(edit distance)が最小のマッチを求める • 距離=置換(substitution)+挿入(insertion)+削除(deletion) • 動的計画法により O(mn)時間(|P|=m, |Q|=n) • 距離がk以下の時、 O(kn)時間[Landau & Vishkin 1989] • 動的計画法+suffix tree
距離がk以下の場合の近似文字列マッチ • L[d,e]: D[i,j]=eかつ j-i=d となる最大の行 i • Suffix treeを用いて 定数時間で実行可能 ⇒ O(kn) 時間
点集合マッチング問題: LCP-kDIFF • 入力 • d-次元空間上の点集合 P ,Q (|P|=m, |Q|=n, m≦n) • 非負整数 k • 出力: 以下の等長変換T (無い場合は No) (i.e., 共通部分に含まれない点の個数が高々 k 個)
1次元の場合(1): mmsp(pi,qj) • mmsp(pi,qj) • pi,qjから始まる合同な部分列組で最大長のもの • 補題: O(n log n) 時間の前処理により、 |mmsp(pi,qj)|は O(1) 時間で計算可能 証明:Σ={ |pi+1 – pi|, |qj+1 – qj| }として suffix treeを構成
1次元の場合(3): 計算量 • 定理1: 1次元 LCP-kDiff ⇒ O(k3 + n log n)時間 • 各(pi0,qj0)あたり O(k)時間、 全部で O(k2)個のペア ⇒ O(k3)時間 • mmspの前処理 ⇒ O(n log n)時間 • ランダムサンプリングの利用 • Pからランダムにサンプルすれば、その点は高確率でLCPに所属 ⇒ O(k)時間を節約可能 • 系1: 1次元 LCP-kDiff ⇒ 高確率で O((k2 + n) log n) 時間
2次元の場合(1): 点の順序づけ • 点に適切な順序 ⇒ suffix tree が利用可能 • pi ≺ pi’ ⇔ θ(pi) < θ(pi’)or ( θ(pi) =θ(pi’) and | pi –p0| <| pi’ –p0| )
2次元の場合(2): 計算量 • 定理2: 2次元LCP-kDiff ⇒ O(k3n4/3+ kn2 log n)時間 • Pから O(k2) ペア ⇒ 一つのペアは LCP に所属 • (p0,p1) と合同な Q のペア (q0,q1) の個数: O(n4/3) • 各 ((p0,p1), (q0,q1)) あたり、O(k) 時間 • ランダムサンプリングの利用 • Pからペアをランダムにサンプルすれば、そのペアは高確率でLCPに所属 ⇒ O(k2)時間を節約可能 • 系3: 2次元 LCP-kDiff ⇒ 高確率で O(kn4/3 log n + n2log2n) 時間
3次元の場合(1): 点の順序づけ • 以下の情報を用いて順序づけ • 平面 pi1, pi2, pi と、平面 pi1, pi2, pi3 のなす角度 • pi- pi1と pi2 - pi1の内積 • pi と直線 pi1 pi2 の距離
3次元の場合(2): 計算量 • 定理3: 3次元LCP-kDiff ⇒ O(k4n1.8log n + k2n5/2 log2n) 時間 • Pから O(k3) 個の三つ組 ⇒ 一つは LCP に所属 • (pi1, pi2 , pi3) と合同な Q の三つ組の個数: O(n1.8 log n) • (pi1, pi2)と合同な Q のペアの個数: O(n3/2 log n) • 各ペアについて suffix tree を構成: O(n log n) • ランダムサンプリングの利用 • Pから三つ組をランダムにサンプル ⇒ O(k3)時間を節約可能 • 系4: 3次元 LCP-kDiff ⇒ 高確率で O(k n1.8 log2n + n5/2 log3n) 時間
1次元数値列の近似マッチング (1) • 入力: 数値列 P, Q最大誤差 ε • 出力: P との編集距離が k 以下の Qの位置 ただし、pi と qj がマッチ ⇔ |pi-qj|<ε
1次元数値列の近似マッチング (2) • 誤差としてミスマッチのみを許した場合 • O(m1/2n log m)時間 [Amir, Farach, 1995] • Convolution を利用
1次元数値列の近似マッチング (3) • Don’t careつき近似マッチング [Akutsu, 1995] • Suffix tree が利用できないので、テーブルを利用 • [Amir, Farach,1995]との組合せで、以下が成立 • 定理4:数値列の近似マッチング ⇒ O(k1/3m2/3n log m) 時間
結論 課題 • 高次元の場合の検討 • 相似マッチの場合の検討 • 誤差を許した場合の検討