Lexical Permutation Sorting Algorithm LPSA is superior to BWT!? Burrows Wheeler Transform 可逆圧縮の前処理 1. BWT(ブロックソーティング) 2. Move-to-Front 3. エントロピー圧縮 圧縮効率と処理速度のバランスが良い bzip2, Bred 等の基本アルゴリズム フルカラー画像の圧縮にも有効 Burrows Wheeler Transform BWT(ブロックソーティングアルゴリズム) 1. ローテーション 入力系列を左方向にローテートし、その長さと同じ 数の系列を生成する。 2. ソート 生成した系列群を辞書式にソートする。 3. 出力 出力系列: L プライマリインデックス: I ローテーション 原系列: S0 = GEGEGENOGE S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 GEGEGENOGE EGEGENOGEG GEGENOGEGE EGENOGEGEG GENOGEGEGE ENOGEGEGEG NOGEGEGEGE OGEGEGEGEN GEGEGEGENO EGEGEGENOG ソーティング 原系列: S0 = GEGEGENOGE S9 S1 S3 S5 S8 S0 S2 S4 S6 S7 EGEGEGENOG EGEGENOGEG EGENOGEGEG ENOGEGEGEG GEGEGEGENO GEGEGENOGE GEGENOGEGE GENOGEGEGE NOGEGEGEGE OGEGEGEGEN 出力 原系列: 出 力: S9 S1 S3 S5 S8 S0 S2 S4 S6 S7 S0 = GEGEGENOGE ( GGGGOEEEEN , 6 ) EGEGEGENOG EGEGENOGEG EGENOGEGEG ENOGEGEGEG GEGEGEGENO GEGEGENOGE GEGENOGEGE GENOGEGEGE NOGEGEGEGE OGEGEGEGEN BWTの効果 どうして同じ文字が並ぶの? ソートすることにより、似通った文脈は隣り合う。 ex. encode と decode → ode...enc, ode...dec こんなに文字を入れ替えちゃってだいじょうぶ? 出力系列 L とプライマリインデックス I から原系列を 復元できます。 原系列の求め方 原系列: 出 力: S? S? S? S? S? S0 S? S? S? S? S0 = G ( GGGGOEEEEN , 6 ) ? ? ? ? ? ? ? ? ? G ? ? ? ? ? ? ? ? ? G ? ? ? ? ? ? ? ? ? G ? ? ? ? ? ? ? ? ? G ? ? ? ? ? ? ? ? ? O ? ? ? ? ? ? ? ? ? E ? ? ? ? ? ? ? ? ? E ? ? ? ? ? ? ? ? ? E ? ? ? ? ? ? ? ? ? E ? ? ? ? ? ? ? ? ? N 原系列の求め方 原系列: 出 力: S? S? S? S? S? S0 S? S? S? S? S0 = G ( GGGGOEEEEN , 6 ) E ? ? ? ? ? ? ? ? G E ? ? ? ? ? ? ? ? G E ? ? ? ? ? ? ? ? G E ? ? ? ? ? ? ? ? G G ? ? ? ? ? ? ? ? O G ? ? ? ? ? ? ? ? E G ? ? ? ? ? ? ? ? E G ? ? ? ? ? ? ? ? E N ? ? ? ? ? ? ? ? E O ? ? ? ? ? ? ? ? N 原系列の求め方 原系列: S0 = G 出 ( GGGGOEEEEN , 6 ) 力: S? 1 G E ? ? ? ? ? ? ? ? S? 2 G E ? ? ? ? ? ? ? ? S? 3 G E ? ? ? ? ? ? ? ? S? 4 G E ? ? ? ? ? ? ? ? S? O 1 G ? ? ? ? ? ? ? ? S0 E 2G ? ? ? ? ? ? ? ? S? E 3G ? ? ? ? ? ? ? ? S? E 4G ? ? ? ? ? ? ? ? S? E N ? ? ? ? ? ? ? ? S? N O ? ? ? ? ? ? ? ? G G G G O E E E E N 原系列の求め方 原系列: S0 = GEGE G E N O G E 出 ( GGGGOEEEEN , 6 ) 力: S? 1 G 1 E ? ? ? ? ? ? ? ? S9 S? 2 G 2 E ? ? ? ? ? ? ? ? S1 S? 3 G 3 E ? ? ? ? ? ? ? ? S3 S? 4 G 4 E ? ? ? ? ? ? ? ? S5 S? O 1 G ? ? ? ? ? ? ? ? S8 S0 1 E 2G ? ? ? ? ? ? ? ? S? 2 E 3G ? ? ? ? ? ? ? ? S2 S? 3 E 4G ? ? ? ? ? ? ? ? S4 S? 4 E N ? ? ? ? ? ? ? ? S6 S? N O ? ? ? ? ? ? ? ? S7 G G G G O E E E E N Lexical Permutation Sorting Algorithm 入力列を {1, 2, ... ,n} の順列に限定する。 文字列は multiset の順列と考えられる φ(n) 個の列を出力列の候補にできる。 φ(n): n と互いに素な n 以下の数の個数。 ex. φ(7)=6, φ(8)=4 候補の中で、最も都合のよい列を出力系列 とする。 一般の文字列の場合とのうまい関係がある。 置換 X = { a, b, c, d, e } π: X → X π(a) = b, π(b) = c, π(c) = a, π(d) = e, π(e) = d . a b c d e π= b c a e d π = [ b, c, a, e, d ] (cartesian form) LPSAの例 原系列: p = [3, 1, 5, 4, 2] 3 1 N= 5 4 2 1 5 4 2 3 5 4 2 3 1 4 2 3 1 5 2 3 1 5 4 1 2 N’ = 3 4 5 5 3 1 2 4 4 1 5 3 2 BWTだと・・・ 出力系列: 53124 or 34251 プライマリインデックス: 3 2 5 4 1 3 3 4 2 5 1 LPSAならお得 1 2 N’ = 3 4 5 5 3 1 2 4 4 1 5 3 2 2 5 4 1 3 3 4 2 5 1 θ= 1 2 3 4 5 5 3 1 = [5,3,1,2,4] 2 4 θ 5θ θ 2θ 3θ 4 θ や θ も出力系列としてつかえる。 ただし、インデックスがさらに一つ増える。 2 3 任意の列じゃ駄目? 1 2 3 N’ = 4 5 6 5 6 1 2 4 3 4 3 5 6 2 1 2 1 4 3 6 5 6 5 2 1 3 4 3 4 6 5 1 2 2 θ= 1 2 3 4 5 6 4 3 5 6 2 1 θ6 θ2 θ4 2 θ から θ は一意には決まらない。 (φ(n) 個の列が候補となる) LPSAなら、さらにお得 LPSAの場合、一列目をみるだけでソートできる。 3 1 N= 5 4 2 1 5 4 2 3 5 4 2 3 1 4 2 3 1 5 2 3 1 5 4 N=[π ,π 2 ,π ] 1 , ... π =1 n 1 2 3 4 5 3 1 5 =[3,1,5,4,2] 4 2 π i も同様 LPSAなら、さらにお得 LPSAの場合、一列目をみるだけでソートできる。 3 1 N= 5 4 2 π 1 5 4 2 3 5 4 2 3 1 4 2 3 1 5 2 3 1 5 4 1 2 3 4 5 π =1 3 1 5 =[3,1,5,4,2] 4 2 π i も同様 -1 = [2, 5, 1, 4, 3] -1 -1 N’=[π π ,π π , 1 1 1... 2,π π ] 1 -1 1 n 一般的な文字列に対するLPSA 原系列: Y = a b a b b ソート後: Y’ = a a b b b a b N(Y)= a b b b a b b a a b b a b b b a b a b a b a b Y’ a b a b N’(Y) = b a b a b b a b b b a b a a b b μ=[1, 3, 5, 2, 4], -1 λ=μ =[1, 4, 2, 5, 3] Y’ [i] = Y [μ( i )], Y [i] = Y’ [λ( i )] b b b a a 1 3 5 2 4 一般的な文字列に対するLPSA 得られたλを入力列としてLPSAを行う。 1 4 2 5 3 1 4 2 5 4 2 5 3 1 2 5 3 1 N(λ)= 2 5 3 1 4 N’(λ) = 3 1 4 2 5 3 1 4 2 4 2 5 3 3 1 4 2 5 5 3 1 4 原系列を復元するには・・・ k 出力列θ , k, プライマリインデックス, Y’ 3 4 5 1 2 BWTとLPSAの関係 (論文中の定理3.2) Y を文字列、λ=λとすると、 N’i, j (Y) = Y’ [N’i, j (λ)] a a N’(Y) = b b b b b a a b a b b b a b a a b b b b b a a Y’ N’(λ) = Y’ = a a b b b 1 2 3 4 5 4 5 1 2 3 2 3 4 5 1 5 1 2 3 4 3 4 5 1 2 定理3.2の直感的証明 a b N(Y)= a b b b a b b a a b b a b b b a b a b a b a b Y’ N(λ)= 1 4 2 5 3 4 2 5 3 1 2 5 3 1 4 Y [i] = Y’ [λ( i )], N(Y) = Y’[N(λ)] N’i, j (Y) = Y’ [N’i, j (λ)] 5 3 1 4 2 3 1 4 2 5
© Copyright 2024 ExpyDoc