• 検索結果がありません。

動的ハフマン符号を同期させた動的辞書法による1パスデータ圧縮

N/A
N/A
Protected

Academic year: 2021

シェア "動的ハフマン符号を同期させた動的辞書法による1パスデータ圧縮"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

愛知工業大学研究報告 第33号B 平成10年 69

動的ハフマン符号を同期させた動的辞書法による

1

パスデータ圧縮

A O

n

e

-

P

a

s

s

D

a

t

a

C

o

m

p

r

e

s

s

i

o

n

b

y

D

y

n

a

m

i

c

D

i

c

t

i

o

n

a

r

y

Method

S

y

n

c

h

r

o

n

i

z

e

d

w

i

t

h

D

y

n

a

m

i

c

H

u

f

f

m

a

n

C

o

d

e

s

伊 藤 雅f Masaru ITOH

Abstract This pap巴rproposes a new data. compression algorithm. 1n the dynamic dict-ion品,rymethod

when building the dictionary from aJl original五le, 乱largenumber of single ch品r乱cters乱ppear.E乱ch

chara.cter is usu乱11yput into乱filewith fixed-length bits. The performaJlce of compression ra.tio ca.n be improved by usingはledynamic Huffman codes which isa.ssigned to乱P乱.rtof this output procedure.

The features of our algorithm乱retha.t it is乱one-p乱S6da.ta compr巴s6ion乱ndthat it is reversible cocling.

I

t

is necessaJ'y tha.t both dictiona.ry tree乱ncldyna.mic Huffman tree must be synchronously upclatecl

when ellcocling乱sequentialof ch乱,ractersfrom input file to output one. The algoritlun utilize6 LRU

(Le乱stRece凶yUsed) queue for deleting乱dictionaryitem when the dictiolla.ry is full.

1

.

はじめに

データ圧縮とは,ある長さの入力データ列をそれが 含む冗長度を利用してより短い圧縮データ列に変換す ることである.入力データ列の長さと圧縮データ列の 長さの比を圧縮率 (compressiollr抗io)といい,圧縮 率をできるだけ良くすることがデータ圧縮の本質であ る.データ圧縮の利点は通信コストの削減や記憶容量 の節約などが挙げられ,データが大規模になればなる 程その必要性は顕著になる. データ圧縮の分類1)には種々あり,ひとつは可逆圧 縮と非可逆圧縮である.可逆圧縮は主として実行ファ イルやテキストファイルなどの圧縮に使われる.一方, 非可逆圧縮は主として画像や音声データで使われる. データ圧縮にはもうひとつ,静的・動的という分類も ある.静的符号化とはメッセージから符号への写像が 符号化中.常に一定であるものをいい,多くが2パス 方式を採用している.他方,動的符号化とはメッセー ジから符号への写像が時間的特性を反映するような1 パス圧縮をいう.動的符号化の中でも特に,入力デー タ列の統計的性質に依らず,その局所性を利用した符 号をユニバーサル符号という. ユニバーサル符号を生成する代表的な圧縮法にレ ンペル・ジプ (Lempel-Ziv)圧縮2)がある.これは 文字列の置き換え (textualsubstitution)によるもの と増分分解(incremelltalparsing)によるものの2種 類がある.これら

2

つの方法はそのアルゴリズムのイ メージからそれぞれスライド辞書法 (sliclingdicti

o

-m,ry method) 3) 動的辞書法 (clYlla.micdiction凱γ ↑愛知工業大学経営工学科(豊田市〉 methocl)4)とよばれる場合がある 5) スライド辞書 法は入力文字列と一致する部分文字列を先に読み込ま せた文字列バッファの中からスライドさせる形で探し 出し,その位置と長さで置き換えて圧縮を実現する. 動的辞書法は入力文字列から既に辞書に登録されてい る最長一致文字列を探索し,その辞書項目で置き換え て圧縮を実現する.このとき参照した最長一致文字列 を前回一致文字列の末尾に付加することによって新た な文字列を辞書に登録する. 無記憶情報源に対する符号化のひとつにハフマン法 (Huffma.ll codillg)2)がある.これは文字を常に固定 長で表現するのではなく,出現頻度の高い文字にはよ り短い符号語を割り当てるというものである そのた めハフマン木を用いて語頭条件 (prefixprop erty)を 満足する可変長符号を生成する必要がある.事前にす べての文字の出現頻度情報を必要とする静的ハフマン 法 (staticHuffman coding)と動的に頻度を見積もり ながら符号化する動的ノ、フマン法 (clyna.n吐cHuffman coding)がある. 提案法の基本的な考え方は,入力データ列の冗長性・ 局所性に対処可能な動的辞書法の一部に動的ハフマン 符号を取り入れるというものである.文字列を逐次辞 書に登録してし、く動的辞書法の増分分解過程では,必 ず切りこぼしとなる単一文字が多数発生する.単一文 字は通常固定長で出力されることが多い.この部分に 動的ハフマン符号を適用すれば,圧縮率を改善できる. この場合,単一文字を処理する毎に辞書とハフマン木 の両方を同期させて動的に更新する必要がある.提案 法は動的辞書法を基本としているため,ユニバーサル 性を保持しており可逆符号を生成する.

(2)

70 愛知工業大学研究報告,第33号 B,平成10年, V 01.33-B, Mar. 1998

2

.

動的辞書法と動的ハフマン法の処理

過程とその欠点

動的辞書法では

{

(

O

,文字コード),

(

1

,辞書項目)}とい う要素の組合せで圧縮を進めていくのが通例である. 動的辞書法の一つである LZTCLempe1-Ziv-Tischer) 圧縮 6)η の処理過程では辞書木 Cdiction乱rytree)と

LRU待ち行列 (Lea.stRecently Used queue) を用い る. LRU待ち行列は辞書が一杯になった場合に,辞 書木の中で最も使われていない辞書項目を削除し,そ の項目を再利用するために利用される.以下ではこの LZTに基づく圧縮法を動的辞書法とよぶことにする. 動的辞書法のアルゴリズムの概略を以下に記す. 動的辞書法の符号化アルゴリズム Step1:事前に辞書木に全文字種を登録し, LRU待ち 行列を空とする.ファイルポインタをファイルの 先頭に設定し,前回一致文字列もなしとする. Step2: 2文字以上の一致文字列が既に辞書木に登録 されている場合には,それを検索し,辞書項目を (1,辞書項

E

I

)

として書き出す.2文字以上の一致 文字列が辞書木にない場合には,

(

0

,文字コード) を書き出す. Step3:前回一致文字列の末尾に今回一致文字列を付 加して辞書木の更新を行う.同時に LRU待ち行 列の更新も行う. Step4: ファイル終端ならば終了,さもなければファ イルポインタを今回一致文字列長だけ進め,前回 一致文字列を今回一致文字列で更新する.そして Step2に戻り符号化を続ける. Step2の文字コードの書き出し方法は固定長である. 辞書項目の書き出し方法について説明するー文字種を

N

,現在までに登録されている辞書項目数を

SIZE

, 符号化すべき辞書項目をDとする.このとき ,

D

の符 号語は

(D-N)

をln

SIZE

ピ、ットで 2進表現して与え ることができるー 復号過程は符号化アルゴリズムの Step2とStep4を 次のように置き換えるだけである. Step2:読み取りビットが 1ならば,続けて辞書項目 を読み込み,現在の辞書木で元の文字列を復元す る.読み取りビ、ットが 0ならば,続けて文字コー ドを固定長で読み込み,元の文字を復元する Step4:元ファイルサイズに達すれば終了.さもなけ れば Step2に戻り復号化を続ける. 例として, 16バイト(128ピット)からなる文字列 example1

=

"a.cl】aωbaucbuacb八Z"を用いて説明す る ここで,川Z'はファイル終端を表す文字である.

character codes of8 bi恒(N=256)

qoutーをontofLRU queue, qin: rear ofLRU queue 垣~二:@lこ~工彊b工@:工:@二4EP三信診コZ診

ご歪i)9l三屯~三歪~ご彊~~@>ご信号三をø~哩v 図 1exa.mple1の辞書木と LRU待ち行列

表1辞書項目に対応する文字列 辞書項目│登録文字列

45

269

I

"a.cb" 270

I

"b八Z"

動的辞書圧縮による結果は (O,'a.') (O,'c) (O,'b') (0

'

)

(O,'u') (1,257) (1,259) (1,257) (O,'u') (1,256)

(

O

'

b

'

)

(

O

'

^

Z

'

)

となる.文字コードを

8

ビ‘ット,辞書 項目を 12ビットで表現するならば, ex札口lple1は 124 ピットに圧縮されたことになる.圧縮終了時の辞書木 とLRU待ち行列の最終状態を図lに,各辞書項目に対 応する登録文字列を表1にそれぞれ示す 動的辞書法の欠点はこの例のように単一文字

'

a

'

'

b

'

.

V

が複数回出現している点である.この部分を動的ハ フマン符号で置換すれば,さらなる圧縮率の向上が期 待できる. 一方の動的ハフマン法では{(pa.thO,文字コード), (pa.th1)}という要素の組合せで圧縮が行われる.こ こで, pa.thOとはハフマン木の根から「未出現文字」 ノードまでのパスであり, pa.th1とは根から「登録済 み文字」ノードまでのパスである

.

1

未出現文字」とは 現時点においてまだハフマン木に登録されていない未 出現の文字すべての呼称である.以下では未出現文字 ノードをふnodeと表記する. 動的ハフマン法については, 1985年に発表され た FGI<(Faller-Ga.lla.ger-I<nuth) アルゴリズム8)と 1989年に発表された Vitterアルゴリズム9)の 2種類 が有名である.どちらも Pasc.al言語で書かれたソース コードが掲載されている. Vitterのハフマン木は木の 高さを抑制できる点で FGKよりも優れている. しか し,そのために暗黙の番号(implicitnumber) と不 変(inva.ri a.n t)条件という2つの概念を FGI<に追加

(3)

動的ハフマン符号を同期させた動的辞書法によるlパスデータ圧縮 71 する必要がある.動的辞書圧縮の一部に動的ハフマン 符号が利用できることを示すのが本論文の呂約である. よって以下では実装や拡張,さらには説明がより容易 な

FGK

を基本とする.動的ハフマン法のアルゴリズ ムの概略を以下に記す. 動的ハフマン法の符号化アルゴリズム Stepl:ハフマン木としてO-nodeのみを用意する. Step2:現在の符号化対象文字が未出現文字の場合に は,根からO-nodeまでのパス(paぬ0)をまず出力 し,続いて符号化対象文字をCBT符号(文字コー ド)で出力する.他方,符号化対象文字が登録済 み文字の場合には,根からその文字に対応する葉 ノードまでのパス(p3oth1)のみを出力する. Step3:符号化対象文字が未出現文字の場合には,そ の文字をハフマン木の葉ノードに追加登録する 対象文字が登録済み文字の場合には何もしない. Step4:対象文字の葉から根までの経路上にある各ノ ードの出現頻度をそれぞれ1ずつ増やしながらハ フマン木を更新する.このとき兄弟条件 (siblillg property)8)を常に満足しなければならない. Step5:ファイル終端ならば終了 さもなければ次の 文字を符号化対象文字とした後, St巴p2に戻る. ここで, Step2の rCBT符号」とはCOll].pleぬ Bi -n3.1'・yTl'ee符 号7)の略であり,文献8)と同ーとした. すなわち,文字集合

{

a

1

,.・・,日間}でm= 2<十1',0::; l'

<

2eのとき ,1::;k ::; 21'ならばakをk-1として ε+1ビットで,

2

1'く

k:

:

;

rnならば白kを

k-

1'

-1

とし てEビットでそれぞれ2進表現する.また, Step4の 「兄弟条件」とはハフマン木の下から上,左から右の 順序に各ノードの出現頻度が昇順に皇室列されていなけ ればならない条件のことである. 復号過程は符号化アルゴリズムのStep2とStep5を 次のように置き換えるだけである Step2:読 み 取 っ た かlビ ッ ト 列 で ハ フ マ ン 木 の ふ nodeに到達する場合には,続けて文字コードを CBT符号で読み込み,元の文字を復元する.0-1 ビ';!ト列でO-node以外の葉ノードに到達する場合 には,その葉に登録されている文字を復元する. Step5:元ファイルサイズに達すれば終了.さもなけ ればStep2に戻り復号化を続ける. 先の e奴X乱mp叫l巴札1に対する動自的

5

ハフマン圧縮による結 果は(仰0,'30')(0乍c',')

(

00J

(

0

01

)(

1

00

)

(

01

)

(

.

0

01

)(

11

)

(ρ10

)

(

01

)

(

0叩0叩0J川八Z

'

'

)

7日4 ビピ‘ツトとなる.圧縮終了時のハフマン木を図2に示す. 15

.,c •• a 図2ex3omple1のハフマン木 動的ハフマン法の最大の欠点は頻度情報しか利用し ておらず,多くのファイルに見られる冗長性・局所性に 全く対処できないことである.一方の動的辞書法はこ の点を十分考慮しており,元ファイルサイズが無限大 になれば,漸近的最適となることが知られている 1) 但し, exa.mple1のような小さな例ではこのような優 位性は確認できない.

3

.

動的ハフマン符号を同期させた動的

辞書法による

1

パスデータ圧縮

2.のexa.mple1を動的辞書法で圧縮したときの(0,文 字コード)要素の文字コード部分だけを取り出すと, ex3omple2

=

"3ocb.auub八Z"の8ノ〈イト (64ビット〉を 得る.この部分に動的ハフマン法を適用すると,結 果は(0,γ)(0,'ど)(OO,'b') (0) (100,'u') (1101) (111) (000,'八Z')となり, 64ビットから58ビットに圧縮で きる. さて, ex3omple1を動的辞書圧縮した(0,文字コード) の部分にex30mpl巴2の上記の符号を埋め込むと,結果は (0,(0,'ぶ))(O,(O,'c')) (O,(OO,'b')) (0,(0)) (0,(100,'u')) (1,257) (1,259) (1,257) (0,(1101)) (1,256) (0,.(111)) (0,(000,'^Z'))となる.この結果, 2.でex出nple1を動 的辞書圧縮した124ピットがさらに118ピットに圧縮 できる.この6ビ';!卜の差はexa.mple2を動的ハフマン 法で圧縮した場合の効果と全く同じである. このことからファイルサイズが十分大きくなれば動 的辞書法を単独で使用するよりも動的辞書法のルーチ ンに動的ハフマン符号を組み込んだ提案法の方が圧縮 率の点で優れたものになることが予想される. 上記の例ではexa.mple1からex3omple2を生成して最 終的な符号化導出を試みている.しかし,このままで は動的辞書法がもっlパス圧縮という利点が損なわれ る.そこで,動的辞書圧縮の実行過程で動的ハフマン 符号を同時に生成する機構が必要となる.本節の残り ではこの観点から動的ハフマン符号を同期させた動的 辞書法によるlパスデータ圧縮について詳述する. 動的辞書法では辞書木と

LRU

待ち行列の

2

つを管

(4)

72 愛知工業大学研究報告、第33B、平成 10年 Vo1.33-B、Mar.1998 dynamic Hu島nanroutine (using Hu節nantree) dynamic dictiona巧,routine (using dictionaηI tree& LRU queue) 図 3提案法の処理過程概念図 理する必要がある.提案法では併せてハフマン木を動 的辞書圧縮の処理過程で常に保持する必要がある 具体的には動的辞書部で

(

0

ぅ文字コード)の要素を ファイルに書き出す前に文字コードのみを動的ハフマ ン部に転送して現在のハフマン木から動的ハフマン符 号を得て,この符号をファイルに書き出せばよいこと になる.動的辞書部で

(

1

ぅ辞書項目)の要素を警き出す 場合には動的ハフマン部を通さずそのまま書き出せば よい 図3は提案法の処理過程概念図である.アルゴ リズムで使用する記号を整理しておく. N:文字種 1 :ファイjレポインタ j:処理回数 Cj・第 z番目の符号化対象文字

S

j

:

最長一致文字列

(

8

j

=

"CiCi+l・・f叫んー1")

L

j

・最長一致文字列長

8

j

-

1

:

前回一致文字列

L

j

-

1

・前回一致文字列長

D

(

S

j

)

:

文字列$jの辞書項目 提案法の符号化アルゴリズム Step1:初期化 事前に辞書木にN種の文字を登録し, LRU待ち 行列を空とする.LRU待ち行列は双方向リスト で表現し,先頭(出口〕にqo'U

t

,末尾(入口)に qinの番兵を用意する,前回一致文字列も空とし, ハフマン木はかnodeのみとするーファイルポイ ンタiと処理回数Jを i=l

j=lで初期化する Step2:最長一致文字列の検索 現在の辞書木から最長一致文字列5jを検索し, if

L

j

=

1 a.nd Cjεハフマン木功 (0

h1)) ifLj = 1 and Ci~ハフマン木中(仏 (pathO ヲ 'Cj')) if

L

j

>

1キ

(

l

D

(

S

j

)

)

を場合に応じてそれぞれ書き出す.ここで, pathO, path1とは 2 の動的ハフマン法の符号化アルコ、リ ズムで定義したものと同一である. Step3:辞書木の更新

t

1

-"

S

j

_

lC

/

'

t

2 =

"

S

j

-

lC

1:

C

i

+

l

"

~

図4辞書木内での辞書項目問の関係

t

L

j

=

"8j_1CjCj+1・ .

C

j

+

L

j

-

1

というん個の文字列のうち辞書項目として未登 録の文字列がある場合にはそれらを辞書木に追加 登録する.辞書項目には図lにあるようにN以降 を順次割り当てる.辞書木内での辞書項目簡の関 係を図4に示す目 Step4: LRU待ち行列の更新

L

j

-

1

= 1の場合には最長一致文字列辞書項目

D

(

S

j

)

をLRU待ち行列の末尾に移動させ,さら に

L

j

個の辞書項呂を末尾に追加する‘すなわち, LJ個の辞書項目 ~、ー一一ー『、 qo'U

t

宗主・ ・ " "

D

(

8

j

)

"

"

D(tLJ'" D

(

t

1

l

""qm

一方,Lj-1

>

1の場合には最長一致文字列辞書項 目

D(s

j

)

をLRU待ち行列の末尾に移動させ ,

L

j

佃の辞書項目を前回一致文字列辞書項目

D

(

8

j

_

1

)

の直前に追加挿入する.すなわち, LJ個の辞書項目 戸 目 凶 -qo世

t"

"

. 戸

D

(

t

L

)

'

"

D

(

t1

)

D

(

S

j

-

I

l

1

"

"

D

(

8

j

)

"

"

qin Step5:ハフマン木の更新 上記St巴p2で(1,辞書項目)を出力した場合は何も しない.

(

0

ぅ動的ハフマン符号)を出力した場合の みハフマン木を更新する.更新は2.動的ハフマン 法の符号化アルコリズム Step3~4 と同様である. Step6:終了判定 ファイル終端ならば終了 さもなければ i=

i+L

‘l' Sj-1

=

8jぅJ=J十lと更新後, Step2に戻る 復号過程は符号化アルゴリズムのStep2とStep6を 次のように置き換えるだけであるa Step2:文字列または単一文字の復元 読み取りビットが 1ならば,続けて辞書項目を読 み込み,現在の辞書木で元の文字列を復元する 読み取りビットが0ならば,さらに 0-1ビット列 を読み込み,ハフマン木のO-nocl巴に到達する場 合には,続けて文字コードを

CBT

符号で読み込 み,単一文字を復元する 0-1ビット列が O-node

(5)

73 動的ハフマン符号を同期させた動的辞書法による 1パスデータ圧縮 以外の棄に到達する場合には,その棄に登録され ている単一文字を復元する. 。 由。 。 。 。 。。 。

o c o E

-。

-0 0 4 0 宇

-0 0 ・ 0 0 ・

-。 ﹄ 。 位 、 υ -骨 O -e o -O 宇 E -e

-0 ・ l v i -し e l l 1 1 1 ト 1 1 1 1ヒ l l l 0 0 0 0 0 7 6 5 4 3 ( 日 )OHH悶 M C 。 阿 ω ω ω M 且 属 。 U v c 80 Step6:終了判定 元ファイルサイズに達すれば終了.さもなければ Step2に戻り復号化を続ける. z 20 10 20 30 4 0 5 0 Text file size (KB)

I

。:FGK, -:PROG

I

5

テキストファイルでの

PROG

FGK

の圧縮率 × 泌 < x -,ー X-× -V 外 F V λ 一 × ︾ ︽ 一 × , x -χ × X -x -v -X ﹄ × U A - x -コιX × -x x -× 英 、 × 一 括 v ' × ・ × -v n-x -M h h ヌx -25 10 50 ( 3 45 0 ・州 E40 巴

: ; ; 35 ' "

"

'

"

e i30 ιJ 辞書木が一杯になった場合の処理について記す.上 述の符号化アルゴリズムに従えば,

LRU

待ち行列の先 頭qoutから末尾qmまでは順序よく辞書木の葉から根 までの最も使われていない辞書項目が整列している 辞書木の更新過程で辞書がムー杯となりIII個の辞書項 目が不足する場合を考える.一杯になった時点の

LRU

待ち行列が以下のようになっていたとする. m個の辞書項目 qout;='

D

(

s)

)

.

.

D

(

S

j

=

)

;== . . . ;==qin このとき,qo

ω

からqmに向かつてm佃の辞書項目

D

(

S

j

)

~

D

(

s

j

m

)

を辞書木と

LRU

待ち行列から順に 削除するーこれによって文字列

S

IlI"V

8

j

m

が今後参照 不能となるが,新たにm個の文字列t,j~ tjmが辞書 木に登録可能となる このようにすべての辞書項目を

LRU

待ち行列で管理し,辞書項目の削除と再利用を 可能にする ハ U

EEA F D

一 .

-p U 薗

= U

I

一 n r 園 二 i 闇 n υ 一 " ワ γ I 心ω 司 必 峰 せ a -?即E目 L E

i

) n o K ( n U e q 、 u ワ 1 s e l 1 z 1 よ 企 t x e n U 中 l ワ 釘 図6テキストファイルでの

PROG

LZT

の圧縮率 n u ハ U j i -! " h U ﹁I I I -圃 -n u E -n U E -n k E 一 n r -n υ 一 { E n U 一 回 5 一v L E -n U 圃 百 r -τ A U ハ H V 、 , , 必 体 D υ v 臥 e ク e ハU n U e 3 口 干 A r a n

∞ 恒

ヮ , “ 。 。 。 。 。 。 。 。 《 。 。 。 。。 。

ゃ ー

L ト ぃ ー ド し

l

r

L

0 0 0 0 0 0 9 8 7 6 5 4 (日)。 -h H 伺 い M ロ 。 4︻ ω ω ω し H ハH E 。 U 図7実行ファイルでの

PROG

F

G

I

¥

:

の圧縮率 優位性も同様に検証した.提案法による圧縮患の改善 を表

2

にまとめる. これらの結果からテキストファイルに娘定すれば, 提案法は

LZT

と比較して圧縮率の面で1.22%程度の改 善ができることを確認した 図

9

3KB

未満の比較的 小規模なファイルについて,提案法の圧縮率が

LZT

よ りも若干劣る場合がある.これは動的辞書圧縮の増分 分解過程で切りこぼしとなる単一文字を動的ノ¥フマン 符号化する際にハフマン木情報を余分にファイルに書 き出す必要があるからである 次に実行時間について検討する.実行時間は

RAM

ディスク上で各ファイル毎に計測した.ファイル群で の比較が容易となるよう

50KB

に正規化した場合の圧 縮および復元時間を表3に示す.表から復元時よりも

M

i

c

r

o

s

o

f

t

CjC++

Ve

r.

7

.

0

で実装した提案法のフ。ロ グラムサイズは約

44K

バイトである.辞書サイズは

4K

バイトとした.提案法(以下

PROG

と略記)の性 能評価のため,動的辞書法(以下

LZT

と略記〕と動 的ハフマン法 f以下

FGK

と略記〉の両者で比較検討 した.

FGK

のコードは文献呂)の

P

a

s

c

a

l

コードに基づ いており,

LZT

は文献5)に基づいているーいずれも C言語のポインタ版に修正したものを使用した 開発 した

PROG

とのプログラム上の整合性をとり3 対等の 条件で正当に評価するためである目

LZT

FGK

を比 較対象とした理由は次の二点による 第ーに提案法は 両者の融合を図っているということ 第二に提案法が 1パス圧縮方式であるため,比較対象も1パス方式の 圧締法の方が妥当であると判断したためである. 性能評価は

NECP

C

-

9

8

(Cx486DLC

42MHz)

上 でさまざまなサイズのテキストファイル

(

9

4

編〉と実 行ファイル(1

0

8

編〕の

2

群について実施した それ ぞれのファイル群での

PROG

FG

,K

LZT

による圧 縮率を図 5~ 図 8 に示す.圧縮率は元ファイルと圧縮後 ファイルのサイズの比とした

LZT

に対する提案法の優位性を検証するため,横 軸

z

にテキストファイルサイズを,縦軸ylこ (LZT-PROG)すなわち圧縮後ファイルの出力バイト数の差 をとって回帰分析を行ったE 結果を図9に示す 回帰 係数は

O

0

1

2

2

であった目同様の回帰分析を実行ファイ ルについても行った.また,

FGK

に対する提案法の

実験結果

4

.

(6)

愛知工業大学研究報告,第33号B,平成10年, Vo1.33-B, Mar. 1998 表350KB当たりの圧縮および復元時間(秒) 圧縮方法 ァキストファイル 実行ファイル 圧縮時 復元時 圧 縮 時 復 元 時 FGK 13.396 12.702 15.662 14.897 LZT 6.472 6.271 7.571 7.022 PROG 7.998 7.784 12.068 11.418 X ~ X 3 民 x x x p x F × -x x -v 。 74 75日 1" X ~ 70t卜 v ~官 .~ 65

f

y +i .1 主 3

e

60

r

宅福

'

"

・~ 55ト話

50 0:'545 40 100 訴4 者 3三 三 本 誌 芯

-200 300 400 500 600 Bi田ηfi1esize(悶) I x : LZT.・:PR

l X V 令 V内 実行時間もわずかな増加に留まった.圧縮率と実行時 間の関係は互いに相反するものである.この意味で提 案法は両者を比較的バランスさせた良いデータ圧縮法 であるといえる. 図8実行ファイルでのPROGとLZTの圧縮率

本研究は財団法人日東学術振興財団の第14回(平成 9年度)助成により達成された.ここに謝意を表する.

4000

~ ~~~~

I

川 .0122x..'

2500卜 ロ

!?!!![oj

,f

z

;

;

;

;

L

BJ'ロ ロ

E 百~

o

J

;

r

t

I

'

J

1

0

:

(LZT一 間 ∞ )

I

100 150 200 250 300 TeつはfiJe size (K8)

参考文献

1) D.A.Lelewer組 dD.S.Hirschberg: "Dat乱 Com-pression

"

ACM Computing Surveys

Vol.19

No.3

pp.261-296

1987. 図9PROGのLZTに対する優位性 2) T.C.Bell

J.G.Cle乱1・y組 dI.H.Witten: Text Compression, Prentice Hall, New Jersey, 1990. 表2提案法による圧縮率の改善 3) T.C.Bell: "Better OPM/L Text Compression

"

IEEE Trans. on Commun.

Vo1.34

No.12

pp.1176-1182

1986.

%

フ 一 日 山 一 心 ﹁ 行 一

1

-1

笑 ァキストファイル 28.2

%

1.22

%

対 一 郎 一 間 4) T

Welch:"A Technique for High-perform組 ce

Data. Compression

"

IEEE Trans. on Computer

Vol.17, No.6, pp.8-19, 1984.

5)奥村晴彦 iC言語による最新アルゴリズム辞 典J,技術評論社,1991.

6) P.Tischer: "A Modifted Lempel-Ziv-Welch Dat乱

Compression Scheme

"

Australian Computer Sci. Commun.

Vo1.9, No.1, pp.262-272, 1987.

7

)

植松友彦:

i

文書データ圧縮アルゴリズム入門

J

, CQ出版社, 1994. 圧縮時が,テキストファイルよりも実行ファイルがそ れぞれ若干ではあるが余分に処理時聞を要している. FGKの実行時間の大半を占めるのはハフマン木の 更新過程である.単一文字を対象とするFGKに対し 文字列単位の圧縮を考慮、した提案法で、はハフマン木の 更新回数が減少する.その結果, FGKと比較して大 幅に実行時間を短縮した.しかし,一方のLZTではハ フマン木自体が必要ではない.よって, LZTと比較す ると提案法はハフマン木の更新分だけ処理負担が増大 し,その分だけ実行時間も増加する.

8) D.E.Knuth: "Dynamic Huffman Coding

"

J. of Algorithms

Vo1.6, No.2, pp.163-180, 1985. 9) J.S.Vitter: "Dynamic Huffman Coding

"

ACM

Trans. on Mathematica.l Software

Vo1.15

No.2

pp.158-167

1989. 平成10年3月20日〉 〈受理

おわりに

多くのデータに共通する冗長性・局所性に対処可能 な動的辞書法の一部に動的ノ、フマン符号を周期させた

1

パスデータ圧縮アルゴリズムを提案した.辞書サイ ズを4Kバイトとして実装した提案法は符号化対象が バイト単位である動的ハフマン法や文字列単位である 動的辞書法と比較して圧縮率の面での改善を実現した.

5

.

表 1 辞書項目に対応する文字列 辞書項目│登録文字列 与 45 269  I &#34;a. c b &#34;  2 7 0  I  &#34;b 八 Z&#34; 動的辞書圧縮による結果は ( O , ' a

参照

関連したドキュメント

震動 Ss では 7.0%以上,弾性設計用地震動 Sd では

高(法 のり 肩と法 のり 尻との高低差をいい、擁壁を設置する場合は、法 のり 高と擁壁の高さとを合

この問題をふまえ、インド政府は、以下に定める表に記載のように、29 の連邦労働法をまとめて四つ の連邦法、具体的には、①2020 年労使関係法(Industrial

 右上の「ログイン」から Google アカウント でログインあるいは同じ PC であると⼆回⽬以

近時は、「性的自己決定 (性的自由) 」という保護法益の内実が必ずしも明らかで

 そこで、本研究では断面的にも考慮された空間づくりに

供試体の寸法は、高さ 100mm,直径 50mm である。図‑2 はペデスタ

そのため本研究では,数理的解析手法の一つである サポートベクタマシン 2) (Support Vector