JP3056268B2 - データ圧縮・復元における辞書登録方式 - Google Patents

データ圧縮・復元における辞書登録方式

Info

Publication number
JP3056268B2
JP3056268B2 JP5294791A JP5294791A JP3056268B2 JP 3056268 B2 JP3056268 B2 JP 3056268B2 JP 5294791 A JP5294791 A JP 5294791A JP 5294791 A JP5294791 A JP 5294791A JP 3056268 B2 JP3056268 B2 JP 3056268B2
Authority
JP
Japan
Prior art keywords
dictionary
compression ratio
data
character
compression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP5294791A
Other languages
English (en)
Other versions
JPH04289916A (ja
Inventor
佳之 岡田
茂 吉田
泰彦 中野
広隆 千葉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP5294791A priority Critical patent/JP3056268B2/ja
Publication of JPH04289916A publication Critical patent/JPH04289916A/ja
Application granted granted Critical
Publication of JP3056268B2 publication Critical patent/JP3056268B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ圧縮およびデータ
復元における辞書登録方式に関する。詳しくは、データ
圧縮率の良悪の判断に基づき、圧縮率が良好な場合に
は、短い文字列、古い登録内容、アクセス頻度の低い登
録内容を圧縮率に寄与していない登録内容として辞書か
ら抹消し、一方、圧縮率が悪化した場合には、古い登録
内容およびアクセス頻度の低い登録内容を圧縮率に寄与
している長い文字列も含めて辞書から抹消することによ
り、辞書を有効利用し、圧縮率を向上するデータ圧縮お
よびデータ復元における辞書登録方式に関する。
【0002】
【従来の技術】近年、文字コード、ベクトル情報、画像
など、さまざまな種類のデータがコンピュータで扱われ
るようになってきている。また、扱うデータ量も急速に
増加している。大量のデータを扱うときには、データの
なかの冗長な部分を省いてデータ量を圧縮することで、
記憶容量を減らしたり、伝送速度を速める方法が採られ
ている。さまざまなデータを一つの方式で圧縮する方法
としてユニバーサル符号化が提案されている。ここで言
うデータ圧縮は、さまざまなデータに適用できるが、以
下では、情報理論で用いられる呼称を踏襲して、データ
の1ワード単位を文字と呼び、データが任意のワード数
つながったものを文字列と呼ぶことにする。
【0003】ユニバーサル符号化の代表的な方法として
は、Ziv-Lempel(ジブ−レンペル)符号がある(詳しく
は、画像『Ziv-Lempelのデータ圧縮法』、情報処理、Vo
l.26, No.1, 1985年を参照されたい)。Ziv-Lempel符号
化には二つのアルゴリズム、すなわち、ユニバーサル型
と増分分解型(Incremental parsing)が提案されてい
る。さらに、ユニバーサル型アルゴリズムを改良したL
ZSS符号(詳しくは、T.C.Bell, "Better OPM/L Text
Compression", IEEE Trans.on Communication,Vol.COM
-34, No.12, Dec.1986 を参照)、増分分解型アルゴリ
ズムを改良したLZW(Lempel-Ziv-Welch)符号(詳し
くは、T.A.Welch, "A Technique for High-Performance
Data Compression", Computer, June 1984 を参照)が
ある。これらの符号のうち、高速処理ができることと、
アルゴリズムの簡単さからLZW符号が記憶装置のファ
イル圧縮などで使われるようになっている。
【0004】図9は、従来のLZW符号の符号化・復号
化処理の動作フローチャートである。LZW符号化は、
書き換え可能な辞書を使用し、入力文字コード・データ
を相異なる文字列に分け、この文字列を出現した順に番
号を付けて辞書に登録するとともに、現在入力している
文字列を辞書に登録してある文字列を照合し、最長一致
する文字列の番号を出力することによって符号化するも
のである。
【0005】図9(a)のLZW符号化の動作フローチ
ャートを、図10のLZW符号の説明図を使用して説明
する。図10のLZW符号の説明図は、説明を簡単化す
るためにabcの3文字の組合せからなるデータをLZ
W符号で圧縮/復元する場合の実際の手順を示してい
る。
【0006】図10(a)は、LZW符号化の説明図、
同図(b)は、LZW符号化で作成する辞書の説明図で
ある。今、入力データ(同図(a)の入力データ) とし
てabcの3つの文字の組合せからなる文字列(aba
bcbababaaaaaaa・・・)が入力されるも
のとする。符号化する場合には、まず、全文字、すなわ
ち、ここではa、b、cの3文字を初期値として辞書に
登録する(図9のS111、辞書の初期化)。すなわ
ち、入力データを構成する全文字であるa、b、cを辞
書の先頭に登録し、それぞれ、登録番号1、2、3を付
す(図10(b)の部分列)。この処理を終了したら、
入力データの第1番目の文字K(ここではK=a)につ
いて辞書を検索し、登録番号(ここでは1)を求めωと
する(図9のS112)。
【0007】次に、入力データの次の文字を読み込み、
これを文字Kとする(ここではK=b)(S113)。
そして、前の文字の登録番号ωを接続したωKが辞書に
存在するか否かを判断する(S114)。ここでは、1
bが辞書に存在するか否かを判定する。存在する場合
(Y)には、ωK、すなわち、1bを登録番号ωとし、
データが終了か否かを判定したうえ(S116)、終了
でなければ(N)次の文字を読み込む処理(S113)
に戻る。データ終了ならば(Y)処理を終了する(EN
D)。そして、文字列ωKが辞書から探せなくなるまで
最長一致の探索を続ける。一方、S114の判定でωK
が辞書に存在しない場合(N)には、まず、前の文字の
登録番号ωを符号code(ω)として出力したうえ、
文字列ωKに新たな登録番号を付加して辞書に登録し、
文字Kの登録番号をωとして置き換える(S117)。
そして、データ終了の判断をしたうえ(S116)、次
の文字を入力する処理(S113)に戻る。
【0008】図10の例では、この時点では1b(=ω
K)が辞書に存在しないのでS114でNとなり、S1
16の処理を実行する。すなわち、ω=1として符号語
code(1)を出力し(同図(a)の出力符号の最初
の1に対応)、文字列1bを新たな登録番号4を付して
辞書に登録する(同図(b))。そして、K=bの登録
番号2をωに代入して、次の文字の入力処理(S11
3)に戻る。S113では、次の文字(3文字目)aが
文字Kとして読み込まれ、S114でωK(=2a)が
辞書に存在するか否かを辞書を検索して判定する。辞書
にはないので(N)、S117でcode(2)を出力
し、文字列2aに新たな登録番号5を付して辞書に登録
し、aの登録番号1をωに代入して次の文字の入力処理
(S113)に戻る。次の入力文字(4文字目)はbで
あり、これを文字Kとする。S114でωK(=1b)
が辞書に存在するか否かを判定する。1bは辞書に存在
するので(Y)、S115でωK(=1b)の登録番号
4をωに代入し、次の文字の入力(S113)に戻る。
次の入力文字(5文字目)はcであり、これを文字Kと
する(S113)。S114でωK(=4c)が辞書に
存在するか否かを判定する。4cは辞書に存在しないの
で(N)、S117でcode(4)を出力し、文字列
4cに新たな登録番号6を付して辞書に登録し、cの登
録番号3をωに代入して次の文字の入力処理(S11
3)に戻る。以下、入力文字が存在しなくなる(S11
6のN)まで同様の処理を続ける。
【0009】そして、入力文字が存在しないと判定され
たら(S116のN)、その前までに求まっている登録
番号ωを符号語code(ω)として出力し(S11
8)、処理を終了する(END)。
【0010】以上の処理により、符号化を実行しなが
ら、図10(b)のような辞書が作成される。上記の流
れによって符号化したデータを復号する場合には、上記
の逆の操作を実行する。図9(b)の動作フローチャー
トおよび図10(c)の復号化の説明図に沿って復号化
の処理を説明する。
【0011】復号化する場合にも符号化と同様の辞書を
使用し、予め出現する全文字(abc)について1文字
の辞書を初期値として登録しておく(aの登録番号ω
(a)=1、ω(b)=2、ω(c)=3)(S121
の辞書の初期化)。そして、辞書の未登録の先頭アドレ
スNに出現する全文字数を代入し、Nを初期化する(S
121)。次に、最初の符号CODEを読み込み、OL
Dcodeに代入し、辞書を参照し、符号CODEと一
致する登録番号code(K)を探索し、登録番号co
de(K)をもつ文字Kを出力し、さらに文字Kを後の
例外処理のためにcharに代入しておく(S12
2)。図10の例の場合、まず、符号1を読み込み(同
図(c)の入力符号の最初の符号)、OLDcodeに
代入したうえ、辞書を参照するcode(K)=1とな
る文字Kはaであり、ここでaを出力し(同図(c)の
出力データ)、さらにcharにaを代入しておく。
【0012】次に、次の符号入力CODEを読み込み、
NEWcodeに代入する(S123)。そして、辞書
を探索し、CODE=code(K)となる辞書項目を
探し、CODEが辞書中に定義されているか否かを判定
する(S124)。通常、入力した符号語は前回までの
処理で辞書に登録されている。CODEが定義されてい
る(Y)場合には、CODE=code(ωK)となる
文字列を辞書から読み出し、文字列が2字以上(ωK)
からなっているか、1字のみ(K)かを判定する(S1
25)。2字以上の場合(Y)、文字Kを一時的にSt
ackをPUSHして格納し、登録番号code(ω)
をCODEとして判定S125に戻る。S125、S1
26を文字列ωKが1字になるまで繰り返すことによっ
て、Stackに最初に辞書から読み出したときのωK
を構成する文字列がスタックされる。文字列ωKが1字
になったと判定される(S125のN)と、最後に残っ
たCODE=code(K)となる文字Kを出力し、そ
の文字Kをcharにセットしたうえ、Stackに蓄
えた文字をLIFO(Last InFast Out) 形式で一つ一
つポップして出力する。そして、辞書の新たな登録番号
を付して(OLDcode,K)を辞書に登録し、NE
Wcodeにセットされた登録番号をOLDcodeに
セットする(S127)。そして、新たなデータが存在
しないか存在するか、すなわち、データ終了か否かをチ
ェックし(S128)、データが存在する場合には
(N)、次の符号入力を読み込む処理S123に戻り、
データ終了の場合(Y)には処理を終了する(EN
D)。
【0013】一方、S124でCODEが辞書中に定義
されていないと判定された場合(N)には、例外処理を
実行する(S129)。すなわち、前回処理した符号O
LDcodeに前回復号した文字列の最初の一文字を加
えた文字列(OLDcode,char)を求める(S
129)。そして、この文字列を実際の文字として出力
したうえ、文字列(OLDcode,char)を辞書
に新たな登録番号を付して登録する(S125〜S12
7)。この例外処理はS129およびS125〜S12
7の処理を通じて行なわれ、最終的にS127で文字列
の出力と辞書登録が行なわれる。
【0014】図10の例では、S122の時点で文字a
が出力されたうえ、OLDcodeに1が、charに
文字aがセットされている。次に、S123で、次の符
号入力(入力符号)である2をCODEとして読み込
み、NEWcodeにセットする。S124で辞書にC
ODEが定義されているか否かを判定する。CODE=
2は定義されているので(Y)S125へ進み、COD
E=code(ωK)か、すなわち、登録番号CODE
の文字列が2字以上か1字かを判定する。この場合、登
録番号2の文字はbの1字なのでNとなり、S127に
進み、文字bを出力し(出力データ)、charにbを
セットする。今、Stackに文字は蓄えられていない
ので、(OLDcode,K)=1bを登録番号4を付
して辞書に登録する(同図(c)の部分列(strin
g))。そしてNEWcode=2をOLDcodeに
セットして、データ終了の判定をし(S128でN)、
S123に戻る。
【0015】S123では3番目の符号4(入力符号)
をCODEとして入力し、NEWcodeにセットす
る。S124で辞書にCODE=4が定義されているか
否かを判定する。先に4は登録されているのでYとな
り、S125でCODEの文字列が2文字以上か否かを
判定する。CODE=4となる文字ωKは1bなので2
文字以上なのでS125はYとなり、S126へ進む。
S126では、文字K=bをStackにスタックし、
また、code(ω)=1をCODEに代入し、S12
5へ戻る。S125では、CODE=1が2文字以上が
1文字かを判定する。CODE=1とする文字Kはaで
1文字なのでNとなり、S127に進む。S127で
は、文字K=aを出力し(出力データ)、aをchar
にセットし、StackをポップしてStackに蓄積
しておいたbを出力する(出力データ)。そして、(O
LDcode,K)=2bを新たな登録番号5を付して
辞書に登録する(部分列(string))。さらにN
EWcode=4をOLDcodeにセットする。そし
て、データ終了の判定をし(S128)、Nとなり、次
の符号の入力S123に戻る。以上の処理によって、符
号124が文字ababに復号された。
【0016】通常、以上のような処理を繰り返すことに
よって復号処理が実行されるが、例外処理S129が必
要な場合がある。図10の例では同図(c)の6番目の
入力である符号8の復号時にこの例外処理が必要にな
る。すなわち、符号8が辞書に登録されていないからで
ある。S124でCODE=8が定義されいない(N)
と判断されS129の例外処理が実行される。この場合
には、前回処理した符号(OLDcode=5)に前回
復号した文字列baの最初の一文字(char=b)を
加えた文字列5bを求め(S129)、これをS125
〜127の処理によって5b=2ab=babに置き換
えて出力する。そして、最後にbabに新たな登録番号
8を付して辞書に登録する。
【0017】尚、図9(a)(b)の符号化/復号化処
理は、同じ辞書を作り出しながら行なう。以上に示した
LZW符号の辞書登録方法を簡単化して説明する。図1
1は、従来の符号・復号化の説明図である。
【0018】まず、同図(a)が従来の方法の一つであ
る(方法1)。すなわち、辞書の容量が一杯になった場
合には新規登録を行わないようにする方法である。符号
化の場合には(同図(a−1))、データを入力し(S
130)、そのデータと同一のデータを辞書を検索して
検出し(S131)、辞書検索で見つかった場合には辞
書に登録してある符号によって符号化する(S13
2)。そしてS133以下が辞書登録の処理である。ま
ず、辞書の容量が一杯になっているか否かを判定する
(S133)。一杯ではないときには(N)、辞書に新
規の項目を登録し(S134)、処理を終了する(EN
D)。一方、辞書が一杯の場合には(Y)、登録を行な
わずに処理を終了する(END)。これによって、辞書
が一旦一杯になると新規の登録処理は行なわれず、新た
な符号の辞書は作成されないことになる。
【0019】復号化の場合も同様である(同図(a−
2))。まず、符号データを入力し(S135)、符号
データと一致するデータを辞書検索して見つける(S1
36)。一致データが見つかった場合には辞書に登録し
てある復元データによって復号化する(S137)。そ
してS138以下が辞書登録の処理である。まず、辞書
の容量が一杯になっているか否かを判定する(S13
8)。一杯でないときには(N)辞書に新規の項目を登
録し(S139)、処理を終了する(END)。一方、
辞書容量が一杯の場合には(Y)、登録を行なわずに処
理を終了する(END)。
【0020】同図(b)は従来の辞書登録の第二の方法
である(方法2)。この方法は、辞書容量が一杯になっ
た時点で圧縮率が悪化しているか否かを判定し、悪化し
ていれば辞書を初期化するものである。
【0021】同図(b−1)は符号化の処理の流れであ
る。データ入力(S140)、辞書検索(S141)、
符号化(S142)は方法1の符号化と同様である。S
143以降が辞書登録の処理である。まず、辞書容量が
一杯か否かを判定する(S143)。そして、一杯でな
い場合(N)には、新規データを辞書に登録し(S14
4)、処理を終了する(END)。一方、辞書が一杯の
場合(Y)には、圧縮率が悪化しているか否かを判定す
る(S145)。悪化していない場合(N)には、辞書
の新規登録は行なわずに処理を終了する(END)。ま
た、悪化している場合(Y)には、これまでに登録した
辞書をすべてクリアして辞書を初期化し(S146)、
処理を終了する(END)。
【0022】復号化(同図(b−2))も同様である。
符号データ入力(S150)、辞書検索(S151)、
復号化(S152)の後で辞書登録処理を実行する(S
153〜)が、まず、辞書容量が一杯か否かを判定し
(S153)、一杯でない(N)場合には新規登録処理
を実行する(S154)。また、一杯の場合には、圧縮
率が悪化してか否かを判定し(S155)、悪化してい
ない場合は何も処理せずに終了し(END)、悪化して
いる場合には辞書をクリアし、初期化する(S15
6)。
【0023】
【発明が解決しようとする課題】しかしながら、従来の
方式では圧縮率が悪化するという問題がある。すなわ
ち、従来の方法1(図11(a))の場合は、辞書の容
量が一杯になるまで新規登録を行ない、一杯になるとそ
の時点の辞書の状態を最後まで保持する。そのため、圧
縮率が悪化した場合にはそれを改善する手立てがまった
くないのである。
【0024】一方、従来の方法2(図11(b))は、
辞書容量が一杯になった後に圧縮率が悪化した場合に辞
書を初期化して新たな辞書を作りなおすことにより、圧
縮率を改善しようとするものである。しかし、辞書が一
杯になる前の段階で圧縮率が低下したとしても、辞書容
量が一杯になるまでは登録をし続け辞書の初期化という
圧縮率を改善するための処理は行なわれないので圧縮率
は改善されないという問題と、辞書を初期化して圧縮率
を改善しようとする方法であるために、初期化直後には
辞書に何も登録されていず圧縮率が極端に落ちるという
問題、圧縮率が0好な場合には圧縮率に寄与しない内容
をも登録し続けるために圧縮率の伸びを抑えるという問
題がある。
【0025】本発明は、辞書容量には無関係に、圧縮率
が良好な場合には圧縮率に寄与しない短い文字列や古い
登録内容、アクセス頻度の低い登録内容を抹消し、圧縮
率が悪化したときには圧縮率に寄与する長い文字列をも
含めて古い登録内容、アクセス頻度の低い登録内容を抹
消し、圧縮率の向上することを目的とする。
【0026】
【課題を解決するための手段】第1図は、本発明の機能
ブロック図である。本発明は、原データ2を辞書4を作
成しながら符号化し圧縮データ3に変換するデータ圧縮
装置1と、データ圧縮装置1で符号化した圧縮データ3
を辞書4と同じ辞書9を作成しながら復号化し復元デー
タ10に変換するデータ復元装置8を前提とする。
【0027】まず、データ圧縮装置1は圧縮率判定手段
5を、データ復元装置8は圧縮率判定手段11を有す
る。両圧縮率検出手段(5、11)は、原データ2を次
々に圧縮データ3に符号化していく段階で、ある一定期
間の圧縮率を常時監視し、前もって定めたしきい値と比
較することにより圧縮率が良好か否かを判定する。
【0028】また、データ圧縮装置1は抹消対象決定手
段6を、データ復元装置7は抹消対象決定手段12を有
する。両登録抹消手段(6、12)は、それぞれ、前記
圧縮率判定手段(5、11)の結果に基づいて、それぞ
れ辞書4および辞書9から登録を抹消する辞書内容を決
定する。まず、前記圧縮率判定手段(5、11)の判定
結果が圧縮率良好の場合には、圧縮率に寄与していない
登録内容として、一定期間内の平均文字列長よりも短い
文字部分列を抽出する。そして、その中で時間的に古く
登録された文字部分列、アクセス頻度の低い文字部分列
を選択し、抹消対象とする。一方、前記圧縮率判定手段
(5、11)によって圧縮率が悪化していると判定され
た場合には、抹消対象として古く登録された文字部分列
およびアクセス頻度の低い文字部分列を選択し、圧縮に
寄与する長い文字部分列をも含めて抹消対象とする。
【0029】最後に、データ圧縮装置1は登録抹消手段
7を、データ復元装置8は登録抹消手段13を有する。
両登録抹消手段(7、13)は、それぞれ、前記抹消対
象決定手段(6、12)によって決定された抹消対象の
文字部分列を、それぞれ、辞書4、辞書9から抹消す
る。
【0030】
【作用】データ圧縮装置1で原データ2を符号化して圧
縮する場合、まず、辞書4の領域を用意しておく。ユー
ザは原データ2をこのデータ圧縮装置1に入力する。デ
ータ圧縮装置1は、入力されたデータの先頭から順に処
理していく。まず、辞書4を検索し、原データ(文字
列)と一致するデータがあるか否かを判定する。一致す
るデータがある場合には、その辞書データに付した番号
を出力することにより原データ(文字列)を符号化す
る。一方、一致するデータが辞書内にない場合には、該
原データ(文字列)を辞書4に登録することになる。こ
のような処理を順に繰り返すことにより、辞書4を作成
しながら原データ2を符号化し、圧縮データ3に変換し
ていく。
【0031】このとき、圧縮率は、ある一定期間内の原
データ数とそのなかで符号化できたデータ数の比で表す
ことができる。符号化されるデータ数が大きいほど圧縮
率は高くなる。符号化ができない場合には辞書に登録す
るので、辞書容量は徐々に増していくことになる。
【0032】圧縮率判定手段5は、データ圧縮装置1で
原データ2を圧縮データ3に符号化するときに常時稼働
している。そして、一定区間ごとに圧縮率を算出して該
圧縮率が悪化しているか否かを判定し、その判定結果を
抹消対象決定手段6に送る。
【0033】抹消対象決定手段6は、圧縮率判定手段5
が出力する圧縮率の悪化の判定結果を入力とする。圧縮
率が悪化していない場合には、圧縮率に寄与していない
登録内容を抹消対象として決定する。圧縮率に寄与しな
い登録内容として短い文字列が抽出され、そのなかで登
録時期の古い文字列、アクセス頻度の少ない部分列を抹
消対象とする。長い文字列ほど、効率良く原データ2を
符号化することができ、逆に、短い文字列で符号化する
と、多くの符号が必要になり、圧縮率を落とす要因とな
る。短い文字列の判断は、一定期間内の平均の文字列長
を求め、該平均文字列長よりも短いものを短い文字列と
判定する。また、登録時期の古い文字列は、一般に、符
号化に使われることが少なくなるので、圧縮率に寄与し
ないと判断され、抹消対象とされる。一方、圧縮率判定
手段5の判定結果が圧縮率が悪化しているという判断の
場合には、圧縮率に寄与している登録内容も含めて抹消
対象とする。すなわち、長い文字列であっても、古い登
録内容であったり、アクセス頻度が低い場合には抹消対
象に決定する。
【0034】登録抹消手段7は、前記抹消対象決定手段
6の決定結果を入力とする。そして、入力された抹消対
象文字列を辞書4から抹消する。データ圧縮装置1で符
号化した圧縮データ3は、データ復元装置8で復元デー
タ10に復号化する。データ復元装置8の復号化では、
符号化で作成した辞書4と同一の辞書9を作成しながら
復号処理を進める。まず、データ圧縮装置1で符号化し
た圧縮データ3をデータ復元装置8に入力する。データ
復元装置8は、入力された圧縮データ3の先頭から順に
処理していく。まず、辞書9を検索し、圧縮データ(符
号コード)と一致するデータを見つけて復号する。そし
て、前符号と原符号を合わせた符号を辞書9に登録す
る。この処理を繰り返すことにより、辞書9を作成しな
がら圧縮データ3を復号化し、復元データ10に変換し
ていく。
【0035】データ復元装置8を起動すると、これとと
もに、圧縮率判定手段11が起動される。圧縮率検出手
段11は、データ復元装置8で圧縮データ3を復元デー
タ10に復号化するときに常時稼働している。そして一
定区間ごとに圧縮率を算出して、該圧縮率が悪化してい
るか否かを判定し、その判定結果を抹消対象決定手段1
2に送る。
【0036】抹消対象決定手段12は、圧縮率判定手段
11が出力する圧縮率の悪化の判定結果を入力とする。
抹消対象決定手段12は、データ圧縮装置1の抹消対象
決定手段6と同様の処理を実行する。すなわち、圧縮率
が悪化していない場合には、圧縮率に寄与していない登
録内容、短い文字列で、登録時期の古い文字列、アクセ
ス頻度の少ない部分列を抹消対象として決定する。一
方、圧縮率が悪化しているという判定結果が入力された
場合には、圧縮率に寄与する長い文字列も含めて、登録
時期の古い文字列およびアクセス頻度の少ない文字列を
抹消対象とする。そして決定した抹消対象を登録抹消手
段13に送る。
【0037】登録抹消手段13は、前記抹消対象決定手
段12で決定された抹消対象文字部分列を辞書9から抹
消する。以上の処理において、圧縮率判定手段5、11
および抹消対象決定手段6、12は、辞書4および辞書
9の抹消内容は同一になるように同様の処理を実行す
る。
【0038】
【実施例】図2は、本発明の一実施例のシステム構成図
である。例えば、一般的なコンピュータ・システム20
で構成することができる。
【0039】コンピュータ・システム20は、CPU2
1および主記憶22、I/Oインタフェース23などか
らなり、それぞれが相互に接続されている。I/Oイン
タフェース23にはキーボードやマウス等の入力装置2
4と、ディスプレイ装置やプリンタ等の出力装置25、
外部記憶装置26、通信網30が接続される。主記憶2
2は、コンピュータ・システム20の基本動作を制御す
るシステム・ソフトウエア27やデータ圧縮・復元ソフ
トウエア28が格納され、CPU22やI/Oインタフ
ェース23はこれらのソフトウエアに従って処理を実行
する。データ圧縮・復元ソフトウエア28は圧縮・復元
に使用する辞書メモリ29の領域をもつ。
【0040】データ圧縮・復元ソフトウエア28は、入
力装置24から入力されるデータの圧縮や、外部記憶装
置26に格納されているデータの圧縮、他のコンピュー
タ・システム等の装置へ伝送されるデータの圧縮、およ
び、その復元を実行することが可能である。例えば、入
力装置24から入力されるデータを圧縮する場合を考え
る。入力装置24から入力される入力データはI/Oイ
ンタフェース23を介してデータ圧縮・復元ソフトウエ
ア28に入力され処理される。圧縮する場合には、デー
タ圧縮・復元ソフトウエア28は、辞書メモリ29内の
辞書を検索し、原データと一致するデータが存在すれば
そのデータに付された番号によって符号化する。また一
致するデータがないときには、そのデータに新たな番号
を付けて辞書メモリ29に登録する。一方、圧縮データ
を復元する場合には、入力装置24や外部記憶装置2
6、通信網30から圧縮データがI/Oインタフェース
23を介してデータ圧縮・復元ソフトウエア28に入力
される。データ圧縮・復元ソフトウエア28は、辞書メ
モリ29内の辞書を検索し、圧縮データ(符号)と一致
するデータを検索して、その符号に対応する原データを
求めて出力する。そして、前符号と現符号を合わせたも
のに新たな符号を付して辞書に登録する。
【0041】図3は一実施例の原理説明図である。同図
(a)は符号化の動作説明図、同図(b)は復号化の動
作説明図である。まず、符号化処理(同図(a))で
は、入力装置24等から圧縮したいデータを入力する
(S30)。次に、この入力データと一致するデータを
辞書メモリ29を検索して見つける(S31)。見つか
った場合には辞書メモリ29の該データに付された符号
によって符号化する(S32)。辞書検索で見つからな
い場合には、辞書登録等の以下の処理が必要になる(S
33〜S37)。
【0042】まず、圧縮率が悪化しているか否かを判定
する(S33)。悪化していない場合には(N)、圧縮
率に寄与しない文字部分列、すなわち、短い文字部分列
で登録時期の古い文字部分列、アクセス頻度の低い文字
部分列を抹消する(S34)。一方、悪化している場合
(S33のY)には、圧縮率に寄与している文字部分列
も含めて、登録時期の古い文字部分列、アクセス頻度の
低い文字部分列を抹消する(S35)。
【0043】以上の辞書登録抹消処理(S34、S3
5)の実行後、辞書容量が一杯か否かを判定し(S3
6)、一杯でなければ(N)新規の内容を登録し(S3
7)、処理を終了し(END)、辞書が一杯場合には
(Y)何も登録せずに処理を終了する(END)。
【0044】同図(b)は同図(a)で符号化した圧縮
データを復元するための復号化の動作説明図である。ま
ず、符号データを入力する(S38)。次に、この符号
データと一致するデータを辞書メモリ29を検索して見
つて(S39)、復号化する(S40)。その後、辞書
の登録処理を実行するとき、圧縮率の悪化状態によって
辞書の登録抹消処理を実行する(S40〜S45)。処
理は符号化(同図(a))の場合と同様である。まず、
圧縮率が悪化しているか否かを判定する(S41)。悪
化している場合には(Y)、圧縮に寄与している文字部
分列も含め、登録時期の古い文字部分列やアクセス頻度
の低い文字部分列を辞書メモリ29から抹消する(S4
3)。一方、圧縮率が悪化していない場合(S41の
N)には、圧縮率に寄与していない文字部分列、すなわ
ち、文字列長の短い文字部分列で、登録時期の古い文字
部分列、アクセス頻度の低い文字部分列を辞書メモリ2
9から抹消する(S44)。以上の辞書登録抹消処理
(S42、S43)の実行後、辞書容量が一杯か否かを
判定し(S44)、一杯でなければ(N)新規の内容を
登録し(S45)、処理を終了し(END)、辞書が一
杯場合には(Y)何も登録せずに処理を終了する(EN
D)。
【0045】
【表1】
【0046】表1は辞書登録の抹消条件と抹消処理の方
法をまとめた表である。辞書登録の抹消条件は圧縮率で
ある。圧縮率の悪化時と良好時で抹消処理方法が異な
る。圧縮率悪化時の抹消処理方法は、圧縮に寄与した部
分列をも含めた抹消である。すなわち、圧縮に寄与する
部分列である長い文字列も抹消の対象とする。文字列長
の如何に係わらず、登録時期の古い文字部分列およびア
クセス頻度の少ない文字部分列を抹消対象として抹消す
る。一方、圧縮率良好時の抹消処理方法は、圧縮に寄与
しない部分列の抹消である。すなわち、圧縮に寄与しな
い短い文字列のみを抹消対象とする。そして、短い文字
列のなかで、登録時期の古い文字部分列、アクセス頻度
の低い文字部分列を対象として抹消する。
【0047】図4は、圧縮率悪化の条件を図で説明した
ものである。辞書容量には関係なく圧縮率悪化を検知す
る条件を示している。縦軸が圧縮率、横軸は入力データ
量、すなわち、時間の経過を表す。
【0048】符号化・復号化処理を開始すると、初めは
圧縮率は悪いが、徐々に良好な圧縮率で安定してくる。
圧縮率判定の条件の対象は圧縮率が安定したとき以降と
する必要がある。同図のように、処理開始から一定区間
i ごとに圧縮率を求め、圧縮率が安定したTn-1 以降
を判定の対象とすることができる。
【0049】圧縮率悪化の条件としては、例えば、4つ
考えることができる(同図の条件(1) 〜(4) )。第1の
条件(1) は、処理開始(T1 )から現区間(Tn )まで
の各区間の圧縮率を累計した累計圧縮率をσn とし、こ
の値を前もって定めた圧縮許容率Aと比較するものであ
る。σn >Aならば圧縮率が悪化したと判定する。A=
0.5 とすると、累計圧縮率が0.5 になるまでが圧縮率の
許容範囲ということになる。第2の条件(2) は、現区間
(Tn )の圧縮率をμn とし、この値を前もって定めた
圧縮許容率Aと比較するものである。
【0050】また、第3、第4の方法は圧縮率の悪化度
を判定の条件とするものである。第3の条件(3) は、処
理開始(T1 )から現区間(Tn )までの累計圧縮率σ
n と、処理開始(T1 )から前区間(Tn-1 )までの累
計圧縮率σn-1 を求め、σn >α×σn-1 ならば圧縮率
の悪化度が高く登録抹消の必要があると判定する。例え
ば、α=1.1 とすれば、現区間までの累計圧縮率が前区
間までの累計圧縮率の10%悪化まで許容することを示
す。第4の条件(4) は、現区間(Tn )の圧縮率μn
前区間(Tn-1 )の圧縮率μn-1 を求め、μn >α×μ
n-1 ならば圧縮率の悪化度が高く登録抹消の必要がある
と判定する。α=1.1 とすれば、現区間の圧縮率が前区
間の圧縮率の10%悪化まで許容することを示す。
【0051】図5は、一実施例の符号化処理の動作フロ
ーチャートである。同図のS1〜S6、S16は、従来
の方式で説明した図9(a)のLZW符号化の動作フロ
ーチャートにおけるS111〜S116、118の内容
と同じである。まず、辞書を初期化する。すなわち、全
文字を初期値として辞書に登録し(S1の辞書の初期
化)、辞書の未登録領域の先頭アドレスNに初期登録し
た文字数を設定する。S1のなかで、本実施例に特有の
部分は、辞書メモリの容量N0 および一定区間Tに入力
される目安データ量M0 を設定し、処理するために入力
される入力データ量の変数Mを設けることである(S
1)。
【0052】初期設定(S1)が終了したら、最初の文
字Kを読み込みその登録番号をωとし、入力データ量M
を1にし、一定区間内での全文字列長LT 、および、一
定区間内で辞書に登録する文字列数LC 、文字列の長さ
Lを初期化する(S2)。すなわち、LT およびLC
0を代入し、Lに1を代入する。さらに次の文字Kを入
力し、入力データ量Mおよび文字列長Lを1インクリメ
ントする(S3)。次に、文字列ωKが辞書にあるか否
かを判定し(S4)、あれば(Y)ωKをωに置き換え
て(S5)、文字データ入力が終了か否かを判定したう
え(S6)、終了でなければ(N)次の文字の処理に戻
る(S3)。
【0053】以上の処理は、入力データ量Mおよび文字
列長Lを計数する処理が加わっている以外は従来(図9
(a))と変わらない。ωKが辞書に存在しなかった場
合(S4のN)に圧縮率を判定して辞書登録を抹消する
処理(図中で囲ってあるS7〜S15の部分)を実行す
ることになる。
【0054】まず、前の文字の登録番号ωを符号語co
de(ω)として出力し、文字Kの登録番号をωに入れ
る(S7)。従来の方式では、この時点で文字列ωKの
辞書登録を行なっていたが、本実施例では行なわない。
そして、次に、入力データ量Mが一定区間内の目安デー
タ量M0 を越えたか否かを判定する(S8)。これは、
一定区間Tが経過したか否かを判定するもので、M>M
0 ならば(Y)一定区間Tを経過したと判断し、M≦M
0 ならば(N)まだ一定区間Tを経過していないと判断
する。一定区間Tを経過していない場合(N)には、次
に、登録済みの辞書容量が一杯になったか否か、すなわ
ち、現在の未使用辞書領域の先頭アドレスNが辞書の最
終アドレスN0を越えたか否かを判定する(S13)。
N>N0 で辞書が一杯になっている場合(Y)には、辞
書登録を行なわずに、一定区間内の全文字列長LT に現
在の文字列長Lを加算し、一定区間内の文字列数Lc
1インクリメントし、文字列長Lを1に初期化したうえ
(S15)、データ終了の判定S6に戻る。一方、N≦
0 で辞書が一杯ではない(N)場合には、この段階で
文字列ωKおよび該文字列ωKの文字列長Lを辞書の未
使用領域の先頭アドレスNに登録し、未使用領域の先頭
アドレスNを1インクリメントする(S14)。
【0055】S8で一定区間Tが経過した(Y)と判定
された場合には、次に圧縮率の悪化の度合いを判定する
(S9)。ここでは、圧縮率悪化を判定する条件として
図4で説明した条件(4) を適用するものとする。すなわ
ち、現区間の圧縮率μn が前区間の圧縮率μn-1 のα倍
より悪化しているか否かを判定する。α=1.1とする
と、現区間の圧縮率μn が全区間の圧縮率μn-1 より1
0%悪化しているか否かを判定することになる。α倍よ
りも悪化している場合(Y)には圧縮に寄与している部
分も抹消する寄与部分列抹消処理S10を、悪化の度合
いがα倍以下の場合には圧縮に寄与していない部分も抹
消する非寄与部分列抹消処理S11を実行する。圧縮率
の条件としては、他の条件(条件(1) 〜条件(3) )でも
同様に処理することができる。寄与部分列抹消処理S1
0は、辞書の既登録部分のなかで登録時期の古い文字部
分列やアクセス頻度の少ない文字部分列を辞書から検索
し、該文字部分列を抹消する。一方、非寄与部分列抹消
処理S11は、辞書の既登録部分のなかで文字列長の短
い文字部分列を検索し、そのなかで、登録時期の古い文
字部分列やアクセス頻度の少ない文字列部分を抹消す
る。文字列長の短い文字列は、本実施例で求めている一
定区間内の全文字列長LT 、一定区間内の文字列数
C 、辞書に登録してある各文字列の長さから求める。
この方法については後述する。抹消した部分は辞書内容
を繰り上げる。これによって、抹消した文字部分列数分
だけ辞書の未使用領域の先頭アドレスNが減少する。
【0056】S10およびS11で辞書の登録抹消処理
を実行したのち、入力データ量M、一定区間内の全文字
列長LT 、一定区間内の文字列数LC を0に初期化する
(S12)。そして、辞書容量の判断を行ない(S1
3)、辞書が一杯でなければ(N)新規登録し(S1
4)、前述のS15の処理に移る。一方、辞書が一杯な
らば(S13のY)、即座に前述のS15の処理に移
る。
【0057】以上の処理をデータ入力が存在しなくなる
まで繰り返す。データ終了の場合(S6のY)には先に
求めた文字列ωを出力して(S16)、処理を終了する
(END)。
【0058】図6は図5に示した動作フローチャートで
符号化した圧縮データを復元する復号化処理の動作フロ
ーチャートである。同図のS61〜S67、S66は、
従来の方式で説明した図9(b)のLZW符号化の動作
フローチャートにおけるS121〜S127、S129
の内容と同じである。まず、辞書を初期化し、辞書の未
登録領域の先頭アドレスNに初期登録した文字数を設定
し、辞書メモリの容量N0 および一定区間Tに入力され
る目安データ量M0を設定し、入力データ量の変数Mを
設ける(S61)。
【0059】次に、最初の符号CODEを読み込み、O
LDcodeに代入し、辞書を検索して対応する文字K
を出力し、さらに文字Kを後の例外処理のためにcha
rに代入しておく。また入力データ量Mを1とし、一定
区間内の全文字列長LT および一定区間内の文字列数L
C を0に、現文字列の長さLを1に初期化する(S6
2)。次に、次の符号の処理に移り、次CODEをNE
Wcodeに代入する(S63)。そして、辞書を探索
し符号CODEが辞書中に定義されているか否かを判定
する(S64)。通常、入力した符号語は前回までの処
理で辞書に登録されている。CODEが定義されている
(Y)場合には、CODE=code(ωK)となる文
字列を辞書から読み出し、文字列が2字以上(ωK)か
らなっているか、1字のみ(K)かを判定する(S6
5)。2字以上の場合(Y)、文字Kを一時的にSta
ckをPUSHして格納し、登録番号code(ω)を
CODEとし、符号CODEの文字数Lの値を1インク
リメントして(S66)、判定S65に戻る。S65、
S66を文字列ωKが1字になるまで繰り返すことによ
って、Stackに文字列がスタックされる。文字列ω
Kが1字になったと判定される(S65のN)と、最後
に残ったCODE=code(K)となる文字Kを出力
し、Stackにプッシュした文字をLIFO(Last I
n Fast Out) 形式で一つ一つポップして出力し、ここで
最初に出力したKをcharにセットしたうえ、該符号
の文字数Lの値を入力データ量Mに加算する(S6
7)。
【0060】一方、S64でCODEが辞書中に定義さ
れていないと判定された場合(N)には、例外処理を実
行する(S77)。すなわち、前回処理した符号OLD
codeに前回復号した文字列の最初の一文字を加えた
文字列(OLDcode,char)を求める(S7
7)。そして、この文字列を実際の文字として出力する
(S65〜S67)。
【0061】符号を実際の文字列に復号する処理は以上
(S61〜67、S77)で完了する。そして、S68
以降で本実施例の圧縮率判定および辞書登録の抹消処理
および辞書の新規登録処理を実行する。圧縮率判定およ
び辞書登録の抹消処理は、図5の符号化における圧縮率
判定および辞書登録の抹消処理と同様である。
【0062】まず、入力データ量Mが一定区間T内の目
安データ量M0 を越えたか否かを判定する(S68)。
一定区間Tを経過していない場合(N)には、登録済み
の辞書容量が一杯になったか否か、すなわち、現在の未
使用辞書領域の先頭アドレスNが辞書の最終アドレスN
0 を越えたか否かを判定する(S73)。N>N0 で辞
書が一杯になっている場合(Y)には、辞書登録を行な
わずに、一定区間内の全文字列長LT に現文字列の長さ
Lを加算し、一定区間内の文字列数LC を1インクリメ
ントし、現文字列の長さLを1に初期化したうえ(S7
5)、データ終了の判定S76を行ない、次の符号の処
理(S63)に戻る。一方、N≦N0 で辞書が一杯では
ない(N)場合には、この段階で(OLDcode、
K)および登録する現文字列の長さLを辞書の未使用領
域の先頭アドレスNに登録し、未使用領域の先頭アドレ
スNを1インクリメントし、OLDcodeにNEWc
odeの値をセットする(S74)。そして、S75の
処理を実行し、データ終了の判定S76を経て次の符号
の処理(S63に戻る)。
【0063】S68で一定区間Tが経過した(Y)と判
定された場合には、次に圧縮率の悪化の度合いを判定す
る(S69)。ここでは圧縮率悪化条件として図5の符
号化で使用した条件(4) を適用する。すなわち、現区間
の圧縮率μn が前区間の圧縮率μn-1 のα倍より悪化し
ているか否かを判定する。α倍よりも悪化している場合
(Y)には圧縮に寄与している部分も抹消する寄与部分
列抹消処理S70を、悪化の度合いがα倍以下の場合に
は圧縮に寄与していない部分も抹消する非寄与部分列抹
消処理S71を実行する。S70およびS71は図5の
符号化における抹消処理S10とS11と同じである。
抹消した部分は辞書内容を繰り上げる。これによって、
抹消した文字部分列数分だけ辞書の未使用領域の先頭ア
ドレスNが減少する。
【0064】S70およびS71で辞書の登録抹消処理
を実行したのち、入力データ量M、一定区間内の全文字
列長LT 、一定区間内の文字列数LC を0に初期化する
(S72)。そして、辞書容量の判断を行ない(S7
3)、辞書が一杯でなければ(N)新規登録し(S7
4)、前述のS75の処理に移る。一方、辞書が一杯な
らば(S73のY)、即座に前述のS75の処理に移
る。
【0065】以上の処理をデータ入力が存在しなくなる
まで繰り返す。データ終了になったら(S76のY)処
理を終了する(END)。図7は、辞書の登録抹消の説
明図である。辞書には、登録番号(符号コードとなる)
と、該登録番号に対応する文字部分列ωK、アクセス頻
度を計数するカウンタ、文字列長などが登録されてい
る。今、登録番号5の辞書内容を抹消すると、それ以降
のデータ(登録番号6〜n)が一つずつ繰り上がる。
【0066】図8は、この登録抹消処理の動作フローチ
ャートである。図5、図6の符号化・復号化の動作フロ
ーチャートに示してある圧縮率判定処理(S9、S6
9)、寄与部分列抹消処理(S10、S70)、非寄与
部分列抹消処理(S11、S71)の部分にこの動作フ
ローチャートを挿入することにより、辞書の抹消処理を
実行することができる。
【0067】まず、辞書チェックのためのアドレスiを
0にリセットし、nに現在の辞書登録アドレスNを代入
する(S81)。そして、アドレスiを1インクリメン
トして(S82)、アドレスiが現在の登録アドレスn
以内であるか否かを判定し(S83)、現在の登録アド
レスn以内ならば(Y)、圧縮率が悪化しているか否か
を判定する(S84)。すなわち、圧縮率悪化判定の条
件(4)を使用し、現区間の圧縮率μn が前区間の圧縮率
μn-1 のα倍より悪化しているか否かを判定する。μn
>α×μn-1 ならば(Y)圧縮率が悪化していると判断
され、非寄与部分列抹消処理が実行される。すなわち、
まず、アドレスiの内容が古いものであるか否かを判定
する(S88)。この判定のために、古い登録を検出す
るためのパラメータBT を前もって定めておき、i≦N
−BT ならば(Y)古い登録と判定する。古くない場合
(N)には次のアドレスの処理に移る(S82)。古い
場合(Y)には、次に、アドレスiのアクセス頻度の多
少を判定する(S88)。すなわち、辞書を参照してア
ドレスiのアクセス頻度を求め、その値を前もって定め
たアクセス頻度のしきい値ST と比較する。アクセス頻
度が高い(cut(i)>ST )の場合(N)には次の
アクセスの処理に移る(S82)。アクセス頻度がST
よりも小さい場合(Y)にはアクセス頻度が低いと判断
する。以上の判定条件により、古い登録内容で(S87
のY)、且つ、アクセス頻度が低い(S88のY)場合
にアドレスiの登録内容の抹消処理(S89以降)を実
行する。
【0068】まず、アドレスiの次のアドレスをjとす
る(S89)。そして、それ以降のS90〜S93)の
処理で、アドレスj以降の辞書内容を一つずつ繰り上げ
る処理を行なう。すなわち、アドレスjが現在の登録ア
ドレスn以内であるか否かを判定し(S90)、Yであ
れば繰り上げ処理(S91〜93)を行なう。S91で
は、アドレスjの辞書内容(部分列ωK)のωがiより
大きいか否かを判定する。ω≦iの場合(N)にはωの
値を1減らす(S92)。すなわち、アドレスi以降の
辞書内容が一つずつ繰り上げられるので、ωKのωの値
を変更しなければならないのである。S92の処理後、
あるいは、S91がY(ω>i)の場合には、アドレス
jの全ての辞書内容(部分列ωK、カウンタ、文字列
長)をアドレスj−1に登録し、jを1インクリメント
する(S93)。そしてS90の処理に戻る。S90〜
S93をj>nになる(S90のN)まで繰り返すこと
により、元のアドレスiの内容が抹消され、それ以降の
内容が繰り上げられる。S90がNになったら、辞書の
現在の登録アドレスnを1減らして、つぎのアドレスの
処理に進む(S82)。
【0069】一方、S84で圧縮率が悪化していない場
合(N;μn ≦α×μn-1 )には、寄与部分列抹消処理
を実行する。すなわち、まず、文字列長の短い登録を探
す処理を実行する。文字列長の短い登録を探すために、
まず、一定区間内の平均文字列長LA を求める(S8
5)。一定区間内の全文字列長LT を該区間内の文字列
数LC で割ったものが平均文字列長LA である。次に、
アドレスiの登録文字列の長さlength(i)が該
平均文字列長LA より小さいか否かを判断する(S8
6)。文字列長length(i)が平均文字列長LA
よりも長い場合(N)には、次のアドレスiの処理に戻
る(S82)。一方、文字列長length(i)が平
均文字列長LA よりも短い場合(Y)には、前述した登
録時期が古いか否かの判断(S87)に進む。すなわ
ち、文字列長が平均文字列長よりも短く、かつ、登録時
期が古く(S87のY)、アクセス回数が少ない(S8
8のY)場合には、該アドレスiの文字列を抹消し、そ
れ以降のアドレスの内容を一つずつ繰り上げて登録し
(S93)、またωKのωがi以上の場合にはωの値を
1減らす処理を実行する(S92)。
【0070】S82〜S94の処理をi=1〜nまで繰
り返し、辞書登録抹消処理を実行する。S83でi>n
になったら(N)、辞書整理を行なったアドレスi=0
〜nまでのアクセス数cntをすべて0にリセットして
辞書旧登録抹消処理を完了する(RETURN)。
【0071】以上の登録抹消処理を図5、図6の辞書旧
登録抹消の部分に挿入して処理することにより、圧縮率
が良好な場合には圧縮率に寄与しない文字列(短い文字
列で、しかも、登録時期が古く、アクセス回数の低い文
字列)を抹消し、圧縮率が悪化している場合には圧縮率
に寄与する文字列も含めた文字列(登録時期が古く、ア
クセス回数の低い文字列)を抹消することにより、圧縮
率の悪化を防ぐことが可能になる。
【0072】
【発明の効果】本発明によって、辞書の容量に関係な
く、圧縮率が良好な場合には圧縮率に寄与しない、短く
て、登録時期が古く、アクセス頻度の低い文字列を辞書
から抹消し、一方、圧縮率が悪化した場合には圧縮率に
寄与する長い文字列であっても登録時期が古く、アクセ
ス頻度の低い文字列を辞書から抹消することにより、そ
の都度、状況に応じた圧縮率の改善が可能になる。ま
た、圧縮率の悪化に寄与する部分列のみを削除するの
で、登録抹消処理直後の圧縮率低下を防ぐことが可能に
んなる。この結果、辞書を有効に利用することが可能に
なる。
【図面の簡単な説明】
【図1】本発明の機能ブロック図である。
【図2】一実施例のシステム構成図である。
【図3】一実施例の主な処理の流れを示す原理説明図で
ある。
【図4】圧縮率悪化の条件説明図である。
【図5】一実施例の符号化の動作フローチャートであ
る。
【図6】一実施例の復号化の動作フローチャートであ
る。
【図7】辞書の登録抹消の説明図である。
【図8】辞書の登録抹消処理の動作フローチャートであ
る。
【図9】従来のLZW符号化・復号化の動作フローチャ
ートである。
【図10】LZW符号・復号化の説明図である。
【図11】従来の符号・復号化の説明図である。
【符号の説明】
1 データ圧縮装置 2 原データ 3 圧縮データ 4 辞書 5 圧縮率判定手段 6 抹消対象決定手段 7 登録抹消手段 8 データ復元装置 9 辞書 10 復元データ 11 圧縮率判定手段 12 抹消対象決定手段 13 登録抹消手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 平4−219818(JP,A) 特開 平4−149767(JP,A) 特開 平3−247168(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 H03M 7/30 - 7/48

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】 辞書(4)に符号を登録しながら原デー
    タ(2)を圧縮データ(3)に符号化するデータ圧縮装
    置(1)において、一定区間における圧縮率を検出し、
    圧縮率が悪化しているか否かを判断する圧縮率判定手段
    (5)と、前記圧縮率判定手段(5)の結果に基づい
    て、辞書(4)内の登録内容のうちで抹消対象とする登
    録を決定する抹消対象決定手段(6)と、前記抹消対象
    決定手段(6)が決定した抹消対象を辞書(4)から抹
    消する登録抹消手段(7)とを有することを特徴とする
    データ圧縮における辞書登録方式。
  2. 【請求項2】 辞書(9)にデータ圧縮装置(1)の辞
    書(4)と同様の符号を登録しながら圧縮データ(3)
    を復元データ(10)に復号化するデータ復元装置
    (8)において、一定区間における圧縮率を検出し、圧
    縮率が悪化しているか否かを判断する圧縮率判定手段
    (11)と、前記圧縮率判定手段(11)の結果に基づ
    いて、辞書(9)内の登録内容のうちで抹消対象とする
    登録を決定する抹消対象決定手段(12)と、前記抹消
    対象決定手段(12)が決定した抹消対象を辞書(9)
    から抹消する登録抹消手段(13)とを有することを特
    徴とするデータ復元における辞書登録方式。
  3. 【請求項3】 請求項1の抹消対象決定手段(6)およ
    び請求項2の抹消対象決定手段(12)は、辞書(4)
    および辞書(9)に登録されている文字列の長さを抹消
    対象の決定基準とする請求項1および請求項2記載のデ
    ータ圧縮・復元における辞書登録方式。
  4. 【請求項4】 請求項1の抹消対象決定手段(6)およ
    び請求項2の抹消対象決定手段(12)は、それぞれ、
    前記圧縮率判定手段(5)および前記圧縮率判定手段
    (11)が圧縮率悪化と判定した場合には、圧縮に寄与
    していた部分列をも含めた辞書内容を抹消対象とし、圧
    縮率が悪化していないと判定した場合には、圧縮に寄与
    していなかった部分列のみ抹消対象とする請求項1およ
    び請求項2記載のデータ圧縮・復元における辞書登録方
    式。
  5. 【請求項5】 請求項1の抹消対象決定手段(6)およ
    び請求項2の抹消対象決定手段(12)は、それぞれ、
    前記圧縮率判定手段(5)および前記圧縮率判定手段
    (11)の判定結果が圧縮率悪化の場合には、圧縮に寄
    与していた部分列をも含めた辞書内容として、時間的に
    古く登録された文字部分列およびアクセス頻度の少ない
    文字部分列を抹消対象とする請求項1および請求項2記
    載のデータ圧縮・復元における辞書登録方式。
  6. 【請求項6】 請求項1の抹消対象決定手段(6)およ
    び請求項2の抹消対象決定手段(12)は、それぞれ、
    前記圧縮率判定手段(5)および前記圧縮率判定手段
    (11)の判定で圧縮率が悪化していないと判定された
    場合には、圧縮率に寄与していない辞書内容として、一
    定期間内の平均文字列長より短い文字部分列のなかで、
    時間的に古く登録された文字部分列、アクセス頻度の少
    ない文字部分列を抹消対象とする請求項1および請求項
    2記載のデータ圧縮・復元における辞書登録方式。
JP5294791A 1991-03-19 1991-03-19 データ圧縮・復元における辞書登録方式 Expired - Fee Related JP3056268B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5294791A JP3056268B2 (ja) 1991-03-19 1991-03-19 データ圧縮・復元における辞書登録方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5294791A JP3056268B2 (ja) 1991-03-19 1991-03-19 データ圧縮・復元における辞書登録方式

Publications (2)

Publication Number Publication Date
JPH04289916A JPH04289916A (ja) 1992-10-14
JP3056268B2 true JP3056268B2 (ja) 2000-06-26

Family

ID=12929071

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5294791A Expired - Fee Related JP3056268B2 (ja) 1991-03-19 1991-03-19 データ圧縮・復元における辞書登録方式

Country Status (1)

Country Link
JP (1) JP3056268B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011105463A1 (ja) * 2010-02-23 2011-09-01 日本電気株式会社 データ圧縮装置、データ圧縮方法およびプログラム記憶媒体

Also Published As

Publication number Publication date
JPH04289916A (ja) 1992-10-14

Similar Documents

Publication Publication Date Title
US6778103B2 (en) Encoding and decoding apparatus using context
JP2581903B2 (ja) バイト整列式データ圧縮方法及び装置
JP3258552B2 (ja) データ圧縮装置及びデータ復元装置
JP3241788B2 (ja) データ圧縮方式
JP3231105B2 (ja) データ符号化方式及びデータ復元方式
JP3056268B2 (ja) データ圧縮・復元における辞書登録方式
JP3038223B2 (ja) データ圧縮方式
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
JP3058931B2 (ja) データ圧縮・復元における辞書登録方式
JP3241787B2 (ja) データ圧縮方式
JP3350118B2 (ja) データ符号化方式及びデータ復元方式
JP3038233B2 (ja) データ圧縮及び復元装置
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3130324B2 (ja) データ圧縮方式
JP2952067B2 (ja) データ圧縮方式
JPH05152971A (ja) データ圧縮・復元方法
JP3053656B2 (ja) データ圧縮における辞書登録方式
JP3088740B2 (ja) データ圧縮及び復元方式
JPH06161705A (ja) データ符号化方式及びデータ復元方式
JP3083329B2 (ja) データ圧縮復元方式
JPH06202844A (ja) データ圧縮復元処理装置
JP3012677B2 (ja) Zl符号化方法
JP3012679B2 (ja) データ圧縮方法
JP3058711B2 (ja) データ圧縮及び復元方法
JP2825960B2 (ja) データ圧縮方法及び復元方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20000404

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080414

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090414

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees