25
joint work with Juha Kärkkäinen, Dominik Kempa, Simon J. Puglisi (University of Helsinki) Arseny M. Shur (Ural Federal University) 基盤(S)離散構造処理系プロジェクト 「2016年度 秋のワークショップ」 2016/11/21 Lyndon 分解と LZ 分解の関係性 Lyndon vs. Lempel-Ziv 中島祐人(九州大学)

Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

joint work with Juha Kärkkäinen, Dominik Kempa, Simon J. Puglisi

(University of Helsinki) Arseny M. Shur

(Ural Federal University)

基盤(S)離散構造処理系プロジェクト 「2016年度 秋のワークショップ」

2016/11/21

Lyndon 分解と LZ 分解の関係性

〜 Lyndon vs. Lempel-Ziv 〜

中島祐人(九州大学)

Page 2: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

文字列の分解

空でない部分文字列の列.例えば…

特定の性質を満たす分解の例l LZ分解l Lyndon分解l 回文分解

abababaabbbaaba

ab,ab,ab,aabbb,aab,a

abababaabbbaaba

Page 3: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

LZ77 分解 (自己参照なし)

以降,単にLZ分解とよぶ

定義[ZivandLempel,1977]

t1, t2, …, tz が w の LZ77 分解 LZw であるとは, 次の条件をみたすことである. l  w = t1t2 ⋯ tk ; l  t1 = w[1] ; l  t1 ⋯ ti−1 = w[1.. j] とする,

l  w[j+1] が w[1.. j] 中に出現しないとき, ti = w[j+1] ;

l  w[j+1] が w[1.. j] 中に出現するとき, ti = w[j+1.. j+q], q = max{r | w[p..p+r−1] = w[j+1.. j+r], p+r−1 ≤ j}.

Page 4: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

LZ77 分解 (自己参照なし)

LZw = abababaabbbaaba

w = abababaabbbaaba

×

Page 5: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

LZ77 分解 (自己参照なし)

LZw = abababaabbbaaba

w = abababaabbbaaba

×参照先と factor 自身が重なることを認めない.

Page 6: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

LZ77 分解 (自己参照なし)

LZw = abababaabbbaaba

w = abababaabbbaaba

Page 7: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

辞書式順序の定義

定義(辞書式順序)

任意の文字列 x, y について,x が y より辞書式順序が小さ い(x ≺ y)とは,次のいずれかの条件を満たすことである: (1) x[lcp(x, y)+1] ≺ y[lcp(x, y)+1], (2) x は y の真の接頭辞.

※ lcp(x, y) : x, y の最長共通接頭辞の長さ

abb c ≺ a b c

(a≺b≺c)

a b ≺ a b c

Page 8: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Lyndon 文字列 [Lyndon, 1954]

定義

文字列 w が Lyndon 文字列であるとは,w のすべての真の 接尾辞より w の辞書式順序が小さいことである.

w=aababb

w の真の接尾辞

≺≺≺

Lyndon 文字列

ababb

※ 真の接尾辞 : もとの文字列自身でない接尾辞.

babbbabb

babbbabb

Page 9: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Lyndon 分解 [Chen, Fox, Lyndon, 1958]

w = a b c a b b a b b a a b c a a a �u4� u4� u4�u1� u2� u2� u3�

LFw =(abc)1(abb)2(aabc)1(a)3�u4

3�u11� u2

2� u31�

定義

文字列の列 u1p1, …, um

pm が w の Lyndon 分解 LFwであるとは,次の条件を満たすことである : u1 ≻ … ≻ um が Lyndon 文字列, pi ≥ 1 (1 ≤ i ≤ m), かつ w = u1

p1…umpm .

|LFw| : Lyndon 分解のサイズ( = factor の数)

Page 10: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w =ab ab ab aab b b aab a

分解を考えること

l 文字列の構造を捉えるl 文字列の圧縮表現 例LZ分解

LZw = (a ) (b ) ( 1 , 2 ) (1 , 3 ) (1 , 2 ) (2 , 2 ) (6 , 9 ) (1 , 1 )

Page 11: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w =ab ab ab aab b b aab a

分解を考えること

l 文字列の構造を捉えるl 文字列の圧縮表現 例LZ分解

LZw = (a ) (b ) ( 1 , 2 ) (1 , 3 ) (1 , 2 ) (2 , 2 ) (6 , 9 ) (1 , 1 )

Page 12: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w =ab ab ab aab b b aab a

分解を考えること

l 文字列の構造を捉えるl 文字列の圧縮表現 例LZ分解

LZw = (a ) (b ) ( 1 , 2 ) (1 , 3 ) (1 , 2 ) (2 , 2 ) (6 , 9 ) (1 , 1 )

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w =ab ab ab aab b b aab a

Page 13: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w =ab ab ab aab b b aab a

分解を考えること

l 文字列の構造を捉えるl 文字列の圧縮表現 例LZ分解

LZw = (a ) (b ) ( 1 , 2 ) (1 , 3 ) (1 , 2 ) (2 , 2 ) (6 , 9 ) (1 , 1 )

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

w =ab ab ab aab b b aab a

Page 14: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Lyndon 分解とLZ分解は,最小文法の下界であることが知られている.

最小文法の下界

Lyndon 分解 Faster Lyndon Factorization Algorithms for SLP and LZ78 Compressed Text

Tomohiro I, Yuto Nakashima, Shunsuke Inenaga, Hideo Bannai, Masayuki Takeda, TCS 2016, SPIRE 2013

LZ 分解 The Smallest Grammar Problem

Moses Charikar, Eric Lehman, April Lehman, Ding Liu, Rina Panigrahy, Manoj Prabhakaran, Amit Sahai, abhi shelat, 2005

Page 15: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

単一の文字列を導出する最小の文脈自由文法を求める問題.

最小文法問題

X1 → aX2 → bX3 → X1 X2 X4 → X1 X3

X5 → X3 X4

X6 → X4 X5

X7 → X6 X5

X3X1

X5X4

X7

X6 X5

a

X1

ba

X2

a

X1

b

X3

X4

ababab aa

X2

X1X1

X3

X2 X1

X3

X4

X2

X1X1

X3

X2

Page 16: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

単一の文字列を導出する最小の文脈自由文法を求める問題.

最小文法問題

X1 → aX2 → bX3 → X1 X2 X4 → X1 X3

X5 → X3 X4

X6 → X4 X5

X7 → X6 X5

X3X1

X5X4

X7

X6 X5

a

X1

ba

X2

a

X1

b

X3

X4

ababab aa

X2

X1X1

X3

X2 X1

X3

X4

X2

X1X1

X3

X2

Page 17: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Lyndon vs. LZ 予想Lyndon 分解のサイズと LZ 分解のサイズに関係は あるのだろうか?

予想 [Nakashima,2014]

任意の文字列 w について,|LFw| ≤ |LZw|.

bbababbabbaabaabLF 3

9LZ

babaababaabaaaba6

6

LF

LZ

Page 18: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Lyndon vs. LZ 予想

予想 [Nakashima,2014]

任意の文字列 w について,|LFw| ≤ |LZw|.

b a b a a b a b a a b a a a b a b a a a b a a b a a a b a

1

1

2 3 4 5 6 7 8

2 3 4 5 6 7

�  アルファベットサイズ 2, 長さ 30 以下

�  アルファベットサイズ 3, 長さ 19 以下

�  アルファベットサイズ 4, 長さ 15 以下

以上の文字列の中で唯一の反例.

Page 19: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

反例文字列は以下のように表すことができ,|LFw| − |LZw| → ∞ となる文字列を生成できる.

反例文字列の特徴

Bk = (akba1b) (akba2b) … (akbak−1b) (akb)

Xk = B0B1・・・Bk a

(反例は文字列 X3)

b a b a a b a b a a b a a a b a b a a a b a a b a a a b a

1

1

2 3 4 5 6 7 8

2 3 4 5 6 7

|LFXk| − |LZXk

| = k − 2 (k ≧ 3).

Page 20: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

主結果

定理(Upperbound)

任意の文字列 w について,|LFw| < 2|LZw|.

Page 21: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Key lemma

※ dom(uipi ) = uj

pj … uipi (s.t. ui

piの最左出現がujの接頭辞). ※|dom(ui

pi )| = i − j.

補題

任意の Lyndon factor uipi の domain dom(ui

pi ) について, dom(ui

pi ) は少なくとも ⌈|dom(uipi )| / 2⌉ + 1 個の LZ factor の

開始位置を含む.

uipi

ujpj

dom(uipi )

uipi

↑uipiの最左出現

Page 22: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Key lemma

※ dom(uipi ) = uj

pj … uipi (s.t. ui

piの最左出現がujの接頭辞). ※|dom(ui

pi )| = i − j.

補題

任意の Lyndon factor uipi の domain dom(ui

pi ) について, dom(ui

pi ) は少なくとも ⌈|dom(uipi )| / 2⌉ + 1 個の LZ factor の

開始位置を含む.

uipiui

pi

ujpj

dom(uipi )

少なくとも ⌈(i − j) / 2⌉ + 1 個の LZ factor

Page 23: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Key lemma

l Lyndon分解をdomainの列に分けて補題を適用.

umpm

dom(umpm )dom dom

補題

任意の Lyndon factor uipi の domain dom(ui

pi ) について, dom(ui

pi ) は少なくとも ⌈|dom(uipi )| / 2⌉ + 1 個の LZ factor の

開始位置を含む.

定理(Upperbound)

任意の文字列 w について,|LFw| < 2|LZw|.

Page 24: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

Key lemma

l Lyndon分解をdomainの列に分けて補題を適用.

umpm

dom(umpm )dom dom

補題

任意の Lyndon factor uipi の domain dom(ui

pi ) について, dom(ui

pi ) は少なくとも ⌈|dom(uipi )| / 2⌉ + 1 個の LZ factor の

開始位置を含む.

定理(Upperbound)

任意の文字列 w について,|LFw| < 2|LZw|.

⌈x / 2⌉ + ⌈y / 2⌉ + 2      ≥ ⌈(x + y + 1)/ 2⌉ + 1

Page 25: Lyndon vs. Lempel-Ziv · LZ77 分解 (自己参照なし) 以降,単に LZ 分解とよぶ 定義 [Ziv and Lempel, 1977] t 1, t 2, …, t z が w の LZ77 分解 LZ w であるとは,

まとめと今後の課題

今後の課題l よりタイトな上界と下界の証明.l 自己参照を許したLZ分解での予想,証明.

定理(Upperbound)

任意の文字列 w について,|LFw| < 2|LZw|.

定理(Lowerbound)

|LFw| = |LZw| + 𝛩(√|LZw|) となる文字列 w が存在する. (√|LZw|) となる文字列 w が存在する. ※ |LFw| ≤ |LZw| 予想の反例文字列.