18. 基本⽤用語
l ⽂文脈⾃自由⽂文法(CFG:Context-free Grammar)
l ⽂文法 G = (V, Σ, D, S)の例。
Σ = { a, b }
V = { S }
D = {
アルファベット⽂文字
(または終端記号)
の有限集合
変数(または⾮非終端
記号)の有限集合
⽣生成規則の有限集合
構⽂文⽊木
(Parse Tree)
S → a S b,
S → a b }
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
S
S
S
言語L(G) =
{ anbn | n ≧ 1 }
a b
a b
a b
Sは開始記号
30. l 以下は同じ⽂文字列列を導出するCFG G1とG2.
l Size(G) : ここでは⽂文法 Gの規則(変数)の数とする.
⽂文法のサイズ
X1
X2
X3
X1 X1
X2
X4
a a a a ab b b a a a a ab b b
X1 X2 X3 X3
X4 X5
X6
Size(G1) = 4 Size(G2) = 6
G2
G1
<
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
38. OLCA
共通部分文字列
z a b r a k a d a b r a k a d a b r a z
X1 X2 X3 X1 X2 X3 X1 X4
4
l 共通⽂文字列列に対してペアの置き換えを同期させる
置き換え後も共通部分⽂文字列列内で同じ⽂文字列列にさせる
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
39. OLCA
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
共通部分文字列
10
z a b r a k a d a b r a k a d a b r a z
l 左から適当に置き換えると置き換えにズレが⽣生じることがある
このようなケースは避けたい
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
40. l テクニック
l 記号の順序関係を利利⽤用する.
l ⽂文字列列中の極値や連続⽂文字を⽬目印とする.
例) 極小⽂文字 (w[i-1] > w[i] < w[i+1]) の⽬目印
X1 X2 X3 X1 X2 X3 X1 X4
z a b r a k a d a b r a k a d a b r a z
w[i, i+1]を置換え.
順序: … < a < b < c < … < z …
共通部分文字列
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
OLCA
41. OLCA
l アルゴリズムの動き
l 置き換えを1⽂文字になるまで再帰的に繰り返す。
l ⼀一回のループで3⽂文字中の2⽂文字は必ず置き換える。
ab b aba
a
X4
X1
X2
X1 X1
X3 X2
a
X2
w1
w2
w3
w4
w5
オフライン型
[Sakamoto+,‘04]
OLCA [Maruyama+, ‘12]
aa
X1
構⽂文⽊木の⾼高さは
O(log n).
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
42. OLCA
0
1
2
3
4
d
0
1
2
3
4
d
0
1
2
3
4
d
w1
w2
w3
aaa
X1→aaX1
a abab a a a b
X1
X2→ab
b X2
X3→X1X1
X3
CFG
入力文字列
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
(このスライドはアニメーションです)
l OLCAの動作
61. テキスト:
状態遷移:
0
3
3
4
5
1
2
4
1
a b a b a b b a
5
l ⽂文法圧縮に対する圧縮パターン照合アルゴリズム [Kida+, ‘03]
a
0 1 2 4 5
b
3任意の
文字
-1
a b
パターン P=a b a b bを受理するKMPオートマトン
b
: goto
: failure
圧縮パターン照合
*図は状態遷移を計算するJump関数の例.パターンの出現を報告するOutput関数は省略.
a b X1 X3
S S : 開始規則の右辺
D : 開始規則以外の生成規則
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
X1 → ab,X2 → ba,
X3 → X1X2
D
62. テキスト:
状態遷移:
0
3
3
4
5
1
2
4
1
S : a b X1 X3
a b a b a b b a
5
l ⽂文法圧縮に対する圧縮パターン照合アルゴリズム [Kida+, ‘03]
a
0 1 2 4 5
b
3任意の
文字
-1
a b
パターン P=a b a b bを受理するKMPオートマトン
b
: goto
: failure
X1
圧縮パターン照合
*図は状態遷移を計算するJump関数の例.パターンの出現を報告するOutput関数は省略.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
a b X1 X3
S S : 開始規則の右辺
D : 開始規則以外の生成規則
X1 → ab,X2 → ba,
X3 → X1X2
D
63. テキスト:
状態遷移:
0
3
3
4
5
1
2
4
1
S : a b X1 X3
a b a b a b b a
5
l ⽂文法圧縮に対する圧縮パターン照合アルゴリズム [Kida+, ‘03]
a
0 1 2 4 5
b
3任意の
文字
-1
a b
パターン P=a b a b bを受理するKMPオートマトン
b
: goto
: failure
O(|D|+|P|2)の前処理時間・領域
X1
走査時間:O(|S|+Pの出現回数)
*図は状態遷移を計算するJump関数の例.パターンの出現を報告するOutput関数は省略.
圧縮パターン照合
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
a b X1 X3
X1 → ab,X2 → ba,
X3 → X1X2
S
D
S : 開始規則の右辺
D : 開始規則以外の生成規則
68. 圧縮索索引
l 各変数が表す文字列で辞書式ソート(逆向きに対しても同様に⾏行行う)
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
A → a
B → b
C → c
D → d
R → r
U → AB
V → RA
W → UV
X → CA
Y → DW
Z → WX
S → ZY
辞書式順でソート
X1 → a
X2 → X1X6
X3 → X2X12
X4 → X3X8
X5 → X4X10
X6 → b
X7 → c
X8 → X7X1
X9 → d
X10→ X9X3
X11→ r
X12→ X11X1
w = abracadabra
a
b
c
d
r
ab
ra
abra
ca
dabra
abraca
abracadabra
a
ab
abra
abraca
abracadabra
b
c
ca
d
dabra
r
ra
93. 参考⽂文献
[Amir+ ’92] "Efficient Two-Dimensional Compressed Matching", DCC.
[Amir+ ’96] "Let Sleeping Files Lie: Pattern Matching in Z-Compressed Files", J. Comput. Syst.
Sci.
[Amir+ ’97] "Optimal Two-Dimensional Compressed Matching", J. Algorithms.
[Apostlico+ ’98] “Some Theory and Practice of Greedy Off-Line Textual Substitution”, DCC.
[Bille+ ’11] “Random Access to Grammar-Compressed Strings”, SODA.
[Brisaboa+ ’09] "Directly Addressable Variable-Length Codes", SPIRE.
[Brisaboa+ ’11] “Compressed String Dictionaries”, SEA.
[Charikar+ ’05] "The Smallest Grammar Problem", IEEE Transactions on Information Theory.
[Cégielski+ ’06] “Window Subsequence Problems for Compressed Texts”, CSR.
[Claude+ ’10a] “Fast and Compact Web Graph Representations”, TWEB.
[Claude+ ’10b] “Extended Compact Web Graph Representations”, Algorithms and Applications.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
94. 参考⽂文献
[Claude+ ’10c] "Compressed Q-gram Indexing for Highly Repetitive Biological Sequences",
BIBE.
[Claude+ ’11] "Self-Indexed Grammar-Based Compression", Fundam. Inform.
[Claude+ ’12] “Improved Grammar-Based Compressed Indexes”, SPIRE.
[Claude+ ’13] "Document Listing on Versioned Documents", SPIRE.
[Eilam-Tzoreff+ ’88] "Matching Patterns in Strings Subject to Multi-Linear Transformations",
Theor. Comput. Sci.
[Gagie+ ’10] "Grammar-Based Compression in a Streaming Model”, LATA.
[Gagie+ ’12] “A Faster Grammar-Based Self-index”, LATA.
[Gawrychowski ’11a] “Pattern Matching in Lempel-Ziv Compressed Strings: Fast, Simple, and
Deterministic”, ESA.
[Gawrychowski ’11b] “Optimal Pattern Matching in LZW Compressed Strings”, SODA.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
95. 参考⽂文献
[González+ ’07] "Compressed Text Indexes with Fast Locate", CPM.
[Hermelin+ ’09] "A Unified Algorithm for Accelerating Edit-Distance Computation via Text-
Compression", STACS.
[Hermelin+ ’13] "Unified Compression-Based Acceleration of Edit-Distance Computation",
Algorithmica.
[Inenaga+ ’12] “Finding Characteristic Substrings from Compressed Texts”, Int. J. Found.
Comput. Sci.
[Jez ’13] “Approximation of Grammar-Based Compression via Recompression”, CPM.
[Kärkkäinen+ ’00] "Approximate String Matching over Ziv-Lempel Compressed Text", CPM.
[Karpinski+ ’97] “An Efficient Pattern-Matching Algorithm for Strings with Short Descriptions”,
Nord. J. Comput.
[Kida+ ’98] "Multiple Pattern Matching in LZW Compressed Text", DCC.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
96. 参考⽂文献
[Kida+ ’99] “Shift-And Approach to Pattern Matching in LZW Compressed Text”, CPM.
[Kida+ ’03] “Collage System: a Unifying Framework for Compressed Pattern Matching”, Theor.
Comput. Sci.
[Kieffer+ ’00] “Grammar-Based Codes: A New Class of Universal Lossless Source Codes”, IEEE
Trans. Inform. Theory.
[Klein+ ’00] “A New Compression Method for Compressed Matching”, DCC.
[Klein+ ’01] “Pattern Matching in Huffman Encoded Texts”, DCC.
[Kreft+ ’10] “LZ77-like Compression with Fast Random Access”, DCC.
[Larsson+ ’99] “Offline Dictionary-Based Compression”, DCC.
[Lifshits ’07] “Processing Compressed Texts: A Tractability Border”, CPM
[Lohrey+ ’11] "Tree Structure Compression with RePair", DCC.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
97. 参考⽂文献
[Maruyama+ ’10] "Context-Sensitive Grammar Transform: Compression and Pattern Matching",
IEICE Transactions.
[Maruyama+ ’12] "An Online Algorithm for Lightweight Grammar-Based Compression”,
Algorithms.
[Maruyama+ ’13a] "ESP-Index: A Compressed Index Structure Based on Edit-Sensitive
Parsing”, J. Discrete Algorithms.
[Maruyama+ ’13b] “Fully-Online Grammar Compression”, SPIRE.
[Maruyama+ ’14] “Fully-Online Grammar Compression in Constant Space”, DCC.
[Matsubara+ ’09] “Efficient algorithms to compute compressed longest common substrings
and compressed palindromes”, Theor. Comput. Sci.
[Matsumoto+ ’09] “A Run-Time Efficient Implementation of Compressed Pattern Matching
Automata”, Int. J. Found. Comput. Sci.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
98. 参考⽂文献
[Miyazaki+ ’97] “An Improved Pattern Matching Algorithm for Strings in Terms of Straight-Line
Programs”, CPM.
[Nakamura+ ’09] “Linear-Time Text Compression by Longest-First Substitution”, Algorithms.
[Navarro+ ’99] “A General Practical Approach to Pattern Matching over Ziv-Lempel Compressed
Text”, CPM.
[Navarro+ ’04] "Practical and Flexible Pattern Matching over Ziv-Lempel Compressed Text",
Journal of Discrete Algorithms.
[Navarro+ ’07] "Compressed Full-Text Indexes", ACM Computing Surveys.
[Navarro+ ’11] “Practical Compressed Document Retrieval”, SEA.
[Navarro+ ’12] “Indexing Highly Repetitive Collection”, IWOCA.
[Nevill-Manning+ ‘94] "Compression by Induction of Hierarchical Grammars”, DCC.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
99. 参考⽂文献
[Nevill-Manning+ ’97] "Identifying Hierarchical Structure in Sequences: A Linear-Time
Algorithm", J. Artif. Intell. Res.
[Rautio+ ’02] “String Matching with Stopper Encoding and Code Splitting”, CPM.
[Rytter ’03] “Application of Lempel-Ziv Factorization to the Approximation of Grammar-Based
Compression”, Theor. Comput. Sci.
[Sakamoto+ ’04] "A Space-Saving Linear-Time Algorithm for Grammar-Based Compression",
SPIRE.
[Sakamoto+ ’09] "A Space-Saving Approximation Algorithm for Grammar-Based Compression"
IEICE Transactions.
[Shibata+ ’00] “Speeding Up Pattern Matching by Text Compression”, CIAC.
[Tabei+ ’13] “A Succinct Grammar Compression”, CPM.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)
100. 参考⽂文献
[Tiskin ’08] “Semi-local String Comparison: Algorithmic Techniques and Applications",
Mathematics in Computer Science.
[Tiskin ’11] “Towards Approximate Matching in Compressed Strings: Local Subsequence
Recognition”, CSR.
[Wan+ ’07] "Block Merging for Off-line Compression", Journal of the American Society for
Information Science and Technology.
[Yamamoto+ ’11] “Faster Subsequence and Don't-Care Pattern Matching on Compressed
Texts”, CPM.
[Yoshida+ ’13] "A Variable-length-to-fixed-length Coding Method Using a Re-Pair Algorithm",
IPSJ Transactions on Databases.
言語処理学会 第 20 回年次大会 チュートリアル資料 (2014年3月)