1 / 54

String Matching in Lempel-Ziv Compressed Strings

String Matching in Lempel-Ziv Compressed Strings. 論文紹介. Algorithmica (1998) 20: 388-404. M. Farach and M. Thorup. 竹田研究室 修士課程 2 年 喜田 拓也. Preliminaries. 用語の説明. prefix, substring, suffix. 用語の説明. F.E.R.C. ある文字列 w に対して、. w = xyz. サフィクス. プレフィクス. サブストリング.

rasia
Download Presentation

String Matching in Lempel-Ziv Compressed Strings

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. String Matching in Lempel-Ziv Compressed Strings 論文紹介 Algorithmica (1998) 20: 388-404 M. Farach and M. Thorup 竹田研究室 修士課程2年 喜田 拓也

  2. Preliminaries 用語の説明

  3. prefix, substring, suffix 用語の説明 F.E.R.C ある文字列w に対して、 w = xyz サフィクス プレフィクス サブストリング プレフィクス、サブストリング、サフィクス (あるいは前、中、後)

  4. prefix, substring, suffix 用語の説明 F.E.R.C prefix substring suffix a i n ta bita no nob obita nobi bin bita nobi nobinobi inobita obinobi nobinobita nobinobita nobinobita プレフィクス、サブストリング、サフィクス (あるいは前、中、後) w = nobinobita

  5. Pattern Matching 用語の説明 F.E.R.C • existence problem • existence problem all-occurrences problem all-occurrences problem TEXT: テクマクマヤコンテクマクマヤコン Pattern: クマクマ パターンマッチング - 文字列照合 クマクマ Yes

  6. Pattern Matching 用語の説明 F.E.R.C • existence problem all-occurrences problem クマクマ クマクマ TEXT: テクマクマヤコンテクマクマヤコン Pattern: クマクマ パターンマッチング - 文字列照合 2,10

  7. Data Compression 用語の説明 F.E.R.C データ圧縮 起動実験「やります。 僕が乗ります」「起動確率は0.0000000001%」 セントラルドグマ「初号機、完全に沈黙」せめて、人間らしく「僕はもうエヴァには乗りません」覚醒 強迫観念「ダメなのね・・・もう」シンクロ率400%「逃げちゃだめだ、逃げちゃだめだ・・・」アンビリカルケーブル断線「活動限界まで4分53秒」「私には他に何もないもの・・・」ヤシマ作戦 決戦、第3新東京市「あんたバカァ」セカンドインパクト「私達は選ぶ余裕なんてないのよ。生き残るための手段をね」強羅絶対防衛線 完璧なユニゾン「命令があればそうするわ」自己修復中 ジェリコの壁 人類補完計画「とれないや。血の匂い」「帰れ!」ディラックの海 「駄目です。停止信号受け付けません」「歌はいいねぇ。 テキストデータ

  8. Data Compression 用語の説明 F.E.R.C データ圧縮 aldoghqu3850pcxps;lafdjaeqw09bjzpafq05^@62:vzZIAPF’(90rwDEVcx0832nkvl;pzp99OPF:eDfja 圧縮テキストデータ

  9. Goal of this paper 論文の目的 圧縮テキストに対してパターンマッチを行うには?

  10. Idea 論文の目的 F.E.R.C search 起動実験「やります。 僕が乗ります」「起動確率は0.0000000001%」 セントラルドグマ「初号機、完全に沈黙」せめて、人間らしく「僕はもうエヴァには乗りません」覚醒 強迫観念「ダメなのね・・・もう」シンクロ率400%「逃げちゃだめだ、逃げちゃだめだ・・・」アンビリカルケーブル断線「活動限界まで4分53秒」「私には他に何もないもの・・・」ヤシマ作戦 決戦、第3新東京市「あんたバカァ」セカンドインパクト「私達は選ぶ余裕なんてないのよ。生き残るための手段をね」強羅絶対防衛線 完璧なユニゾン「命令があればそうするわ」自己修復中 ジェリコの壁 人類補完計画「とれないや。血の匂い」「帰れ!」ディラックの海 「駄目です。停止信号受け付けません」「歌はいいねぇ。 元のテキストデータ aldoghqu3850pcxps;lafdjaeqw09bjzpafq05^@62:vzZIAPF’(90rwDEVcx0832nkvl;pzp99OPF:eDfja 圧縮テキストデータ

  11. Idea 論文の目的 F.E.R.C search aldoghqu3850pcxps;lafdjaeqw09bjzpafq05^@62:vzZIAPF’(90rwDEVcx0832nkvl;pzp99OPF:eDfja 圧縮テキストデータ

  12. 論文の目的 F.E.R.C Kida Kida Kida Previous studies year researcher compression method run-length two-dimensional run-length LZ77 LZ77 LZW straight-line programs straight-line programs LZW Eilam-Tsoreff and Vishkin Amir, Landau, and Vishikin Amir and Benson Farach and Thorup Gasieniec, et al. Amir, Benson and Farach Karpinski, et al. Miyazaki, et al. Kida, et al. 1988 1992 1992 1995 1996 1996 1997 1997 1998 Kida

  13. LZ77 Compression LZ77 圧縮

  14. LZ77 圧縮 F.E.R.C 圧縮テキストZ = C1・・・Cj・・・CM(P0 ,L1)・・・(Pi ,Li)・・・(PN ,LN) Cj:テキストで使用される文字 (アルファベットΣ上の記号. |Σ|=M) Pi , Li : 整数 contents

  15. LZ77 圧縮 F.E.R.C アルファベットΣ={a,b,c} テキストT = a b a b c a b a b c b a c a b a b -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a b c a b a b c a b a b c b a c a b a b ブロック (-3,1) (-2,1) (0,2) (-1,1) (0,5) (1,2) (4,5) example 圧縮テキストZ = a b c

  16. LZ77 圧縮 F.E.R.C Pattern: b a c a a b a b c a b a b c b a c a b a b T = useful property テキスト中の最も左の位置に現れるパターンは、 必ずブロックとブロックの境目をまたぐ。 b a c a

  17. Main Algorithm 圧縮テキストに対する 文字列照合アルゴリズム

  18. メイン アルゴリズム F.E.R.C Basic Idea テキスト中の最も左の位置に現れるパターンは、 必ずブロックとブロックの境目をまたぐ。 圧縮テキストの全てを展開せずとも、ブロックの境界付近の文字列だけをしらべれば existence problemを解くことができる。

  19. メイン アルゴリズム F.E.R.C Pi Pi Pi Pi+1 Basic Idea i番目のブロックの prefixのうち、 パターンの substringになっている 最長のもの。 テキストの先頭からi番目のブロックの終端まで文字列の suffixのうち、 パターンの substringになっている 最長のもの。 ある iについて、 の substringがパターン になっていれば「Yes」と答えることができる。

  20. メイン アルゴリズム F.E.R.C Pi Pi+1 Pi Pi+1 = b a c a c a Basic Idea Pattern: b a c a ・・・a b c c b c b a c a c a c b a b・・・ i+1番目のブロック i 番目のブロック b a c a Yes

  21. メイン アルゴリズム F.E.R.C 6 5 5 4 a b a b c a b a b c b a c a b a b b c a b T = 0 1 3 0 1 2 3 2 4 7 6 4 5 6 7 5 Winding Phase

  22. メイン アルゴリズム F.E.R.C a b c 7 7 0 1 3 0 1 7 4 3 5 6 2 4 5 6 2 7 Winding Phase

  23. メイン アルゴリズム F.E.R.C a b c 0 6 7 7 0 1 5 1 6 2 3 4 5 2 4 3 Winding Phase

  24. メイン アルゴリズム F.E.R.C a b c 0 5 6 6 7 2 7 3 4 0 1 2 3 4 5 1 Winding Phase

  25. メイン アルゴリズム F.E.R.C a b c 6 7 4 4 5 3 5 0 2 1 3 0 1 2 6 7 Winding Phase

  26. メイン アルゴリズム F.E.R.C a b c 6 7 4 5 5 3 3 0 0 1 2 2 4 6 7 1 Winding Phase

  27. メイン アルゴリズム F.E.R.C 6 7 2 a b c 0 2 3 4 5 7 1 0 3 4 6 5 1 Winding Phase

  28. メイン アルゴリズム F.E.R.C 6 7 2 a b c 5 4 0 0 1 6 2 3 3 7 5 4 1 Winding Phase

  29. メイン アルゴリズム F.E.R.C 6 7 2 a b c Pattern: 2 1 4 6 3 3 2 7 5 4 1 0 4 0 0 4 3 5 c a = Pi Pi+1 Winding Phase a b a b c a b a b c b a c a b a b b c a b i = 3

  30. メイン アルゴリズム F.E.R.C Pi Pi Winding の手順をそのまま逆にたぐる。 最終的に、それぞれの旗は元の位置に戻り は の情報をもつ i i の情報をもつ は ようにする。 Unwinding Phase

  31. メイン アルゴリズム F.E.R.C 0 1 5 3 5 4 2 3 7 1 7 2 4 6 6 0 Unwinding Phase a b c a b a b c ab a b c b a c a b a b b c a b Pattern: b a c a

  32. メイン アルゴリズム F.E.R.C 6 7 2 2 a b c 4 1 0 4 6 3 3 7 1 2 5 4 0 0 5 5 0 Unwinding Phase a b a b c a b a b c b a c a b a b b c a b Pattern: b a c a

  33. メイン アルゴリズム F.E.R.C 6 7 2 a b c 5 1 1 5 4 0 6 0 3 3 2 4 7 Unwinding Phase a b a b c a b a b c b a c a b a b b c a b Pattern: b a c a

  34. メイン アルゴリズム F.E.R.C a b c 7 0 2 7 4 5 0 5 2 4 6 3 3 6 1 1 Unwinding Phase 5 5 a b a b c a b a b c b a c a b a b b c a b Pattern: b a c a

  35. メイン アルゴリズム F.E.R.C a b c 7 4 6 3 3 5 5 4 7 0 1 0 1 2 2 6 Unwinding Phase a b a b c a b a b c b a c a b a b b c a b Pattern: b a c a

  36. メイン アルゴリズム F.E.R.C a b c 1 6 2 6 7 4 4 0 2 5 5 7 0 3 1 3 Unwinding Phase 6 a b a b c ab a b c b a c a b a b b c a b Pattern: b a c a

  37. メイン アルゴリズム F.E.R.C 5 a b c 3 6 6 7 7 0 5 1 2 3 4 2 4 1 0 Unwinding Phase a b a b c ab a b c b a c a b a b b c a b Pattern: b a c a

  38. メイン アルゴリズム F.E.R.C 5 a b c 3 6 6 7 7 1 5 1 2 3 4 2 4 0 0 Unwinding Phase a b a b c ab a b c b a c a b a b b c a b Pattern: b a c a

  39. メイン アルゴリズム F.E.R.C 5 a b c 0 7 7 0 1 5 6 2 3 4 2 4 6 3 1 Unwinding Phase a b a b c ab a b c b a c a b a b b c a b Pattern: b a c a

  40. メイン アルゴリズム F.E.R.C i 0 a b 1 b a 2 b c 3 c a 4 c b a Pi Pi+1 5 b a c a 6 b b Final operation Yes

  41. Complexity of Algorithm アルゴリズムの計算量

  42. アルゴリズムの計算量 F.E.R.C a b c 7 7 0 1 3 0 1 7 4 3 5 6 2 4 5 6 2 7 Winding Phase

  43. アルゴリズムの計算量 F.E.R.C 7 3 0 1 3 0 1 6 7 5 6 2 4 5 4 2 Winding Phase O( log|Z|) L : Balanced tree

  44. アルゴリズムの計算量 F.E.R.C 7 3 0 1 3 0 1 6 7 5 6 2 4 5 4 2 Winding Phase O( log|Z|) L : O( 1 )

  45. アルゴリズムの計算量 F.E.R.C 7 4 0 1 3 0 1 2 7 7 6 2 4 5 6 7 5 3 Winding Phase O( |Z| log|T|) L : Segment-Merge

  46. アルゴリズムの計算量 F.E.R.C O(|Z| log|Z| + |Z| log|T|) = O(|Z|( log|Z|・|T| ) ) O(|Z| log2(|T| |Z|)) Winding Phase

  47. アルゴリズムの計算量 F.E.R.C 6 7 2 a b c 6 7 4 5 0 1 0 1 4 2 3 6 5 7 2 2 5 3 Unwinding Phase 5 5 a b a b c a b a b c b a c a b a b b c a b Pattern: b a c a

  48. アルゴリズムの計算量 F.E.R.C 6 7 2 a b c 6 4 2 7 4 5 0 0 1 1 5 2 7 5 2 3 6 3 前処理 O( |P| ) Unwinding Phase O( |Z| ) 5 5 a b a b c a b a b c b a c a b a b b c a b O( log|P| ) Pattern: b a c a

  49. アルゴリズムの計算量 F.E.R.C O(P+|Z|log(|T| |Z|) log|P|) Unwinding Phase O(P +|Z| (|Z| + log|P| ) )

  50. アルゴリズムの計算量 F.E.R.C i 0 a b 1 b a 2 b c 3 c a 4 c b a 前処理 O( |P| ) Pi Pi+1 5 b a c a 6 b b final operation O( |Z| log|P| ) O( log|P| ) O( log|P| ) O( log|P| ) O( log|P| ) O( log|P| ) O( log|P| ) O( log|P| )

More Related