1 / 51

Lempel-Ziv Parsing and Sublinear-Size Index Structures for String Matching

Juha Karkkainen. ¨. ¨. Lempel-Ziv Parsing and Sublinear-Size Index Structures for String Matching. Esko Ukkonen. Proceedings of the Third South American Workshop on String Processing. WSP 1996, 141-55, 1996. 竹田研究室 修士課程1年 喜田 拓也. existence problem. existence problem. existence problem.

bridgit
Download Presentation

Lempel-Ziv Parsing and Sublinear-Size Index Structures for String Matching

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Juha Karkkainen ¨ ¨ Lempel-Ziv Parsing and Sublinear-Size Index Structures for String Matching Esko Ukkonen Proceedings of the Third South American Workshop on String Processing. WSP 1996, 141-55, 1996 竹田研究室 修士課程1年 喜田 拓也

  2. existence problem • existence problem • existence problem all-occurrences problem all-occurrences problem all-occurrences problem 研究背景 • 文字列照合問題(パターンマッチング) 9 きだくんのおかあさんがりあかーをひいている さんがりあ

  3. existence problem • existence problem • existence problem all-occurrences problem all-occurrences problem all-occurrences problem 研究背景 • 文字列照合問題(パターンマッチング) KMP O(m+n) BM O(m+n) n m

  4. 研究背景 • 巨大なテキストに対する文字列照合問題 • Index を作ることで劇的に速くなる.

  5. About 11n bytes 9n bytes About 10n bytes 研究背景 O(n) • 現在知られている index 構造 • suffix tree • suffix array • level-compressed trie • suffix cactus • suffix binary search tree Over 10n bytes 5n bytes

  6. 研究背景 • 新しい index 構造が必要 • より小さい • 前処理をしない場合よりも検索が高速 • 初の sublinear-size index これがミソ LZ parsing を用いる O(n / log n)

  7. LZ parsing • Lempel-Ziv 圧縮 • LZ77 (移動辞書式圧縮) • LZSS, LZH,LZR,LZB • LZ78 (登録辞書式圧縮) • LZW,LZC,LZT,LZFG LZ parsing = LZ76 ?

  8. ... ... (P1,L1,C1) (Pi,Li,Ci) (PN,LN,CN) Z = LZ parsing • LZ parse Z of string Tの定義 負でない整数 Pi, Li Σ上の記号 Ci

  9. ... ... (P1,L1,C1) (Pi,Li,Ci) (PN,LN,CN) Ui= Ui -1 + Li -1 + 1 for i > 1. U1 = 1, Pi < Ui , whenever Li > 0 For 1 ≦ i ≦ N T[Ui…Ui+Li-1] = T[Pi…Pi+Li-1], Z = T[Ui+Li] = Ci . T[Pi...] と T[Ui...] の common prefix が 最大となる Pi < Ui を選ぶ. LZ parsing • LZ parse Z of string Tの定義

  10. aaaabbaaababaaabb T = Z = LZ parsing • LZ parse の例 b a a a b $ 注意 (0,0,a) (1,3,b) (5,1,a) (3,3,a) (6,5,b)

  11. aaaabbaaababaaabb T = Z = (0,0,a) (1,3,b) (5,1,a) (3,3,a) (6,5,b) LZ parsing • LZ parse の例 block b a a a b phrase definition boundary symbol

  12. aaaabbaaababaaabb T = U1 U3 U4 U2 U5 = = = = = 1 2 6 8 12 Z = (0,0,a) (1,3,b) (5,1,a) (3,3,a) (6,5,b) LZ parsing • LZ parse の例 b a a a b

  13. LZ parsing • parse Z の特性 • どの二つの block も同一ではない

  14. LZ parsing • parse Z の特性 • どの二つの block も同一ではない • パターンP の最初の occurrence は, 必ず Z の boundary symbol を含む

  15. n N < logc n- logc logc n - 1 c-1 LZ parsing • parse Z のサイズのオーダー N を長さ nのテキストの LZ parse における block の個数とする.また c = |Σ|とする. O(n / log n)

  16. type N |Σ| 77 4 2 8 64 40964 31633 16734 14755 88748 English DNA random random random LZ parsing • N の目安 for text length n = 300000.

  17. Oh! Let’s go

  18. 検索アルゴリズム • サーチ を2種類に分類する. これがミソ Tにおける Pの occurrence が boundary symbol を含む. Primary occurrence それ以外 Secondary occurrence

  19. 検索アルゴリズム • Occurrence を2種類に分類する. これがミソ Primary search Existence problem Primary occurrence Secondary search Secondary occurrence

  20. 1 ・・・ u ・・・・・・ m T [Ui + Li] = Ci Primary Search • 問題の定義 P の primary occurrence を見つけ出す. Reference pair(i , u)

  21. Primary Search • 問題の定義 P の primary occurrence を見つけ出す. 1 ・・・ u ・・・・・・・・・ u′・・ m Canonical reference pair (i , u)

  22. Primary Search • 問題の定義 P の primary occurrence を見つけ出す. O(mN) (i,u) が primary occurrence の canonical reference pair であるような iを見つけ出す.

  23. 1 ・・・ u ・・・・・・ m T [Ui + Li-u + 1 … Ui + Li ] = P[1…u] T [Ui + Li… Ui + Li -u + m] = P[u…m] Primary Search • Primary Search を解くための工夫

  24. 1 ・・・ u ・・・・・・ m Primary Search • Primary Search を解くための工夫

  25. i Primary Search • Two-Dimensional Prefix Matching(2DPM) {(Xi , Yi)} : 文字列の組の集合 (X , Y) : 質問文字列 Xが Xiの prefix, Yが Yiの prefix. (Xi , Yi) 愛?

  26. Primary Search • Two-Dimensional Prefix Matching(2DPM) {(Xi , Yi)} : 文字列の組の集合 (X , Y) : 質問文字列 Xi = T[Ui…Ui+Li]R = T[Ui…Ui+1-1]R Yi = T[Ui+Li...] = T[Ui+1-1...] X = P[1…u]R Y = P[u…m]

  27. 1 ・・・ u ・・・・・・ m Primary Search • 2DPMの例 1 block

  28. Primary Search • 問題の定義 P の primary occurrence を見つけ出す. 2-dimensional prefix matching を解く. 2-dimensional range query を解く.

  29. i Primary Search • 2-dimensional range query {(xi, yi)} : 点の集合 ([xl, xr] , [yl, yr]) : 質問区間. 質問区間に含まれる点 (xi , yi)を見つける. 愛?

  30. yr yl xl xr Primary Search • 2-dimensional range query {(xi, yi)} : 点の集合 ([xl, xr] , [yl, yr]) : 質問区間.

  31. xl = X yl = Y xr = Xzzzzz... yr = Yzzzzz... xi= Xi , yi = Yi Primary Search • 2-dimensional range query {(xi, yi)} : 点の集合 ([xl, xr] , [yl, yr]) : 質問区間. これがミソ 辞書式順序を用いる.

  32. Y abzzzz... ab aba X abazzzz... Primary Search • 2-dimensional range query (a,aaaabb...) (baaa,bbaaa...) (ab,aaabab...) (abaa,abaaa...)

  33. O( N + l) O(m N + l) O(m + N + l) Primary Search • 2-dimensional range query • 2DPM N 点の balanced 2-d tree. (Lee, Wong 1977) 2-d tree for string.

  34. a X 値で判別 (x2, y2) (x1, y1) c b Y 値で判別 (x3, y3) g d e X 値で判別 f (x4, y4) (x5, y5) (x6, y6) (x7, y7) Y g e c b f d a X Primary Search • 2-d tree の例

  35. T [Ui + Li-u + 1 … Ui + Li -u + m] = P となるような canonical な iを見つける. O(m + N + l) O(m2 + mN + L) 1 ・・・ u ・・・・・・ m Primary Search

  36. T [Ui + Li-u + 1 … Ui + Li -u + m] = P となるような canonical な iを見つける. O(m2 + mN + L) O(m2 +m log N + Nm log m + L) 1 ・・・ u ・・・・・・ m Primary Search

  37. Ok? No!

  38. Secondary Search • 問題の定義 Secondary occurrence Known occurrence これがミソ Secondary occurrence

  39. Known occurrence Secondary occurrence Pi+Li-1 Pi Secondary Search • 問題の定義 (Pi , Li , Ci)

  40. Secondary occurrence Secondary Search • 問題の定義 T[v…v + m - 1] Known occurrence O = T[v…v + m - 1] Pi ≦v, Pi + Li-1≧v + m - 1 となる すべての i をみつける. O(N) Secondary occurrence T[Ui - Pi + v…Ui -Pi + v + m - 1]

  41. i Secondary Search • Interval containment problem {[xi , yi]}i=1,…,N : 区間の集合 [x , y] : 質問区間 xi ≦x, yi ≧ y となるような すべての区間[xi , yi]を見つける. 愛?

  42. O = T[v…v + m - 1] Secondary occurrence T[Pi+Li-1] T[Pi] Secondary Search • 問題の定義 xi = Pi , yi = Pi + Li- 1 x = v , y = v + m - 1 offset oi = Ui-Pi T[ x + oi … y + oi ]

  43. Secondary Search • Interval containment problem • Priority search tree (McCreight 1985) O(log N + l) • 2-d heap O(log N + l log N) トータルでは, すべてのoccurrenceに対して interval containment problem が行われるので O(L log N)

  44. Secondary Search binary tree の構造を持つ. • 2-d heap 各ノードは区間のうちの1つを中に持つ. 区間[xi , yi]を持つノードの… 左のsubtree のすべてのノードが持つ 区間の yの値はyiより小さい. 右のsubtree のすべてのノードが持つ 区間の xの値はxiより大きい.

  45. 6 11 [6,11] 1 [1,9] 9 7 [7,12] 2 3 [1,7] 7 [4,8] 8 4 5 6 7 [9,12] 9 6 [6,9] 5 6 7 [5,7] [2,5] [3,6] [4,5] 5 8 9 10 11 Secondary Search • 2-d heap の例

  46. [6,11] [1,9] [7,12] 1 [1,7] [4,8] 2 3 [9,12] [6,9] 4 5 [2,5] [3,6] [4,5] [5,7] 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 Secondary Search [2,3] • 2-d heap の例 [2,3] [2,3] [2,3] O(log N + l log N) [2,3] [2,3] [2,3]

  47. I saw every thing Mmmmm...

  48. 検索アルゴリズムのまとめ • parse Zにより,サーチを 2 part に分割 • primary search -> 2DPM -> 2-dimensional range query • 2-d tree for string.O(N)領域 • search time O(m2 + m log N + Nm log m ) • secondary search -> interval containment problem • 2-d heap. O(N)領域 • search time O(LlogN)

  49. 18 N bytes 新しい Index 構造の構成 LZ parse Z O(N) 2-d tree for string O(N) 2-d heap と offsetO(N) 1 2 さいごに • 本当に小さいのか? Suffix array = 5n bytes 小さい n > 103

  50. さいごに • 本当に小さいのか? • 他の index 構造よりも一般的に小さくなるだろう. • 検索時間の practical な評価は? • 謎

More Related