JPH0480813A - 辞書初期化方式 - Google Patents

辞書初期化方式

Info

Publication number
JPH0480813A
JPH0480813A JP19439690A JP19439690A JPH0480813A JP H0480813 A JPH0480813 A JP H0480813A JP 19439690 A JP19439690 A JP 19439690A JP 19439690 A JP19439690 A JP 19439690A JP H0480813 A JPH0480813 A JP H0480813A
Authority
JP
Japan
Prior art keywords
dictionary
reference number
storage location
blocks
character
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.)
Granted
Application number
JP19439690A
Other languages
English (en)
Other versions
JP2799228B2 (ja
Inventor
Shigeru Yoshida
茂 吉田
Yasuhiko Nakano
泰彦 中野
Yoshiyuki Okada
佳之 岡田
Hirotaka Chiba
広隆 千葉
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 JP19439690A priority Critical patent/JP2799228B2/ja
Publication of JPH0480813A publication Critical patent/JPH0480813A/ja
Application granted granted Critical
Publication of JP2799228B2 publication Critical patent/JP2799228B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (閂 次〕 概要 産業上の利用分野 従来の技術 発明が解決しようとする課題 課題を解決するための手段 作用 実施例 発明の効果 〔概 要] データを圧縮する際の辞書初期化方式に関し、所要時間
を長くすることなく、辞書の初期化によるデータ圧縮率
の低下を防ぐことを目的とし、相異なる文字列を当該文
字列よりも前に辞書に登録された文字列の参照番号と増
分とで表して辞書に順次に登録しながら、人力された文
字列を符号化してデータを圧縮する際の辞書初期化方式
において、導入される検索通知に基づいて、辞書に登録
された各要素が検索された回数を計数する計数手段と、
初期化指示に応じて、計数手段による計数結果に基づい
て使用頻度の低い要素を検出し、辞書の格納領域を少な
くとも1つの使用頻度の低い要素で区切られた複数のブ
ロックに分割するとともに、これらのブロックの分割に
関する分割情報を出力する分割手段と、この分割情報に
基づいて、複数のブロックごとに、辞書における格納場
所を移動する移動手段と、分割情報に基づいて、移動手
段によって移動された辞書の各要素に含まれる参照番号
を該当する要素の移動後の格納場所に対応して変更する
変更手段とを備え、使用頻度の低い要素を削除するとと
もに他の要素の辞書における格納場所を詰めて、新しい
要素の登録のための格納場所を確保するように構成する
〔産業上の利用分野] 本発明は、増分分解型のZiv−Lempel符号化お
よび復号化の際の辞書の初期化方式に関する。
近年、文字コード、ベクトル情報1画像情報など様々な
種類のデータがコンピュータによって扱われるようにな
っており、また、扱われるデータ量も急速に増大してい
る。
このような膨大なデータを蓄積したり伝送したりする際
には、データの中に含まれている冗長な部分を省いてデ
ータ量を圧縮することが望ましい。
このため、データの種類にかかわらず、効率よくデータ
を圧縮する方法が望まれている。
ユニバーサル符号化方式は、予め符号表を定めておく必
要がないため、上述した様々なデータの圧縮に適用する
ことができるという特徴を有している。
ここで、本明細書においては、データの1語単位をr文
字Jと称し、連続した複数語のデータをr文字列jと称
する。
ジブーレンペル(Ziv−Lempel )符号は、上
述したユニバーサル符号の代表的な方法であり(宗像著
r Ziv−Lempelのデータ圧縮法」、情報処理
、 Vol。
26、 NO,1、1985参照)、ユニバーサル型の
アルゴリズムと増分分解型のアルゴリズムとが提案され
ている。更に、ユニバーサル型アルゴリズムの改良とし
て、LZSS符号(T、C,Be1l、“Better
 OPMルText Compression”、IE
EE Trans、on Commun、、Vol。
C0M−34,No、 12. Dec、1986参照
)があり、増分分解型アルゴリズムの改良として、LZ
W符号(T、A。
Welch、’A  Technique  for 
 High−Performance  DataCo
mpression″、Computer、June 
1984)がある。
これらの符号化方式のうち、高速処理が可能であること
とアルゴリズムが簡単であることから、LZW符号が記
憶装置のファイル圧縮などで使われるようになっている
〔従来の技術〕
増分分解型アルゴリズムは、入力された文字列を、既に
辞書に登録された部分列に1文字を増分として付加して
形成される成分の系列に分解し、この成分の系列を登録
された部分列に対応する参照番号と増分とで表すことに
より、入力文字列を符号化するものである。また、上述
した成分は、新しい部分列として辞書に登録され、以降
の符号化処理に用いられるようになっている。
更に、LZW符号においては、上述した増分を次の部分
列に組み込むようになっている。
以下、簡単のために、入力文字列として、 a“b′”
、′I C11の3文字からなる文字列°“ababc
bababaaaaa−−−” (第6図(a)参照)
が入力された場合について、このLZW符号化方式につ
いて説明する。
この場合は、上述した3文字″“a  “bIIc”を
辞書(7)7FレスFIJ、r2J、’3Jlのそれぞ
れに登録して、符号化処理を開始する。
まず、上述した入力文字列の先頭の文字(例えば文字“
′a”)を読み込み、辞書からこの文字を検索し、この
文字が格納されている辞書のアドレス(例えば’IJ 
)を参照番号ωとする。
その後、入力文字列の2番目以降の各文字を順次に読み
込んで、この文字を上述した増分に相当する拡張文字に
とし、上述した参照番号ωとこの拡張文字にとの組合せ
(ωK)で表される部分列(ωK)C以下、組合せ(ω
K)を部分列の表現と称する)を辞書から検索する。該
当する部分列(ωK)が検索された場合は、上述した部
分列(ωK)に対応する符号を新しい参照番号ωとして
、更に、入力文字列の次の文字を読み込んで、上述した
処理を繰り返す。
このようにして、符号化しようとする文字列を順次に1
文字ずつ延ばしていき、辞書からこの文字列を順次に検
索することにより、辞書に登録された部分列の中から、
入力文字列の注目している部分と最も長く一致する部分
列が検索され、この部分列に対応する参照番号ωが、該
当する符号として出力される。また、このとき、参照番
号ωに対応する部分列(ω)に拡張文字Kを継ぎ足した
部分列が、参照番号ωと拡張文字にとの組合せ(ωK)
で表され、参照番号が与えられ、新しい部分列として辞
書に登録される。
このようにして、第6図(a)に示した文字列は、図に
おいて下線を付して示した部分列に分解され、第6図ら
)に示すように、各部分列に対応する符号「la、  
’2i、r4j、・・・が出力される。また、第6図(
C)に入力文字列と辞書に登録された部分列との対応関
係を、第1表に作成された辞書の例を示す。
第1表 また、 上述したようにして作成された辞書は、第7図に示すよ
うに、樹状の構成を持っており、辞書の要素のそれぞれ
は、辞書の樹の各節点に対応している。第7図において
、各節点に括弧を付して示した数字は、対応する辞書の
要素の参照番号を示しており、第6図(a)に示した文
字列の符号化処理の際に、各節点がたどられた経路を太
い実線で示した。
ある符号が与えられたときに、この符号を参照番号とす
る辞書の樹の技あるいは葉に相当する節点から根の方向
に向かって、辞書の樹を逆にたどることにより、LZW
符号の復号化処理が行われる。
まず、入力された符号ωを参照番号として辞書に登録さ
れている部分列の表現(ω’ K)を求める。このとき
、拡張文字Kをスタックに保持し、次に、この参照番号
ω”に対応して辞書に登録されている部分列の表現を検
索する。このようにして、順次に検索していき、得られ
た部分列の表現が、拡張文字にのみとなるまで上述した
処理を繰り返す。その後、スタックに保持された拡張文
字Kを最後に保持されたものから順にポツプアップして
出力することにより、入力された符号ωに対応する部分
列が復元される。
ここで、最後に得られた拡張文字には、符号ωに対応す
る文字列の先頭の文字であり、この拡張文字にと直前の
符号ω。LDとの組合せ(ω。1.K)が、新しい部分
列の表現として辞書に登録されるようになっている。
上述したように、LZW符号化方式においては、符号化
処理を行うとともに辞書に新しい符号を登録することに
より、入力されたデータの統計的性質を学習しながら、
データ量を効率よく圧縮するようになっている。
従って、入力されるデータの統計的な性質が変化した場
合には、それまでに蓄積された辞書では、新しい性質を
有する入力データを効率よく圧縮することができないた
め、再度学習を行う必要がある。
ここで、辞書に充分に大きな容量が割り当てられている
場合は、学習の履歴を全て保存しておき、新しいデータ
の性質についての再学習を行うことができるが、実際に
辞書に割り当てられるメモリなどの資源は有限である。
このため、通常は、辞書に割り当てられた容量まで登録
したときに、圧縮前のデータ量と圧縮後のデータ量との
比として得られる圧縮率をチエyりして、圧縮率が低下
している場合は、再学習が必要であると判断し、上述し
た符号化処理の開始の際と同様にして、辞書を初期化し
ていた。
〔発明が解決しようとする課題〕
ところで、上述した従来方式にあっては、辞書を初期化
する際に、それまでの学習の履歴を全て捨ててしまう。
しかしながら、辞書に登録された部分列が少ないとき、
即ち、上述した学習の初期の段階においては、圧縮率は
一般に低くなるので初期化処理の回数が多い場合には、
充分な容量を有する辞書を備えた理想的な場合に比べて
、圧縮率が低下してしまうという問題点があった。
このような初期化処理による圧縮率の低下を抑える技法
として、本出願人は、既に、特願平245164 In
データ圧縮方方式を提案している。
本出願人の提案による辞書の初期化方式は、辞書に登録
された要素のそれぞれについて、使用頻度を計数する手
段を設け、使用頻度の高い要素は削除することなく辞書
に残し、低い要素を削除して新しい符号を登録する領域
を確保するようにするものであり、それまでの学習の履
歴の一部を残すようになっている。
しかしながら、本出願人の提案による辞書初期化方式に
おいては、削除する要素を検出するごとに、辞書の全て
の要素について格納領域の変更処理および部分列の表現
の変更処理を行っている。
このため、辞書の要素数をnとすると、辞書に対してn
2回のアクセス処理が必要となり、初期化処理に要する
時間が長くなるという欠点を有している。
本発明は、このような点にかんがみて創作されたもので
あり、辞書の初期化処理に要する時間を長(することな
く、辞書の初期化による圧縮率の低下を防ぐようにした
辞書初期化方式を提供することを目的とする。
〔課題を解決するための手段〕
第1図は、本発明の原理ブロック図である。
ffiの H 図において、相異なる文字列を当該文字列よりも前に辞
書110に登録された文字列の格納場所に対応する参照
番号と1文字からなる増分とで表し、この文字列の表現
を新しい要素として辞書110に順次に登録しながら、
入力された文字列を辞書110に登録された文字列の参
照番号によって符号化してデータを圧縮する際の辞書初
期化方式における計数手段111は、導入される検索通
知に基づいて、辞書110に登録された各要素が検索さ
れた回数を計数する。
分割手段121は、初期化指示に応じて、計数手段11
1による計数結果に基づいて使用頻度の低い要素を検出
し、辞書110の格納領域を少なくとも1つの使用頻度
の低い要素で区切られた複数のブロックに分割するとと
もに、これらのブロックの分割に関する分割情報を出力
する。
移動手段131は、分割手段121によって出力された
分割情報に基づいて、複数のブロックごとに、ブロック
間を区切っている使用頻度の低い要素の分だけ辞書11
0における格納場所を移動する。
変更手段141は、分割情報に基づいて、移動手段13
1によって移動された辞書110の各要素に含まれる参
照番号を該当する要素の移動後の格納場所に対応して変
更する。
全体として、使用頻度の低い要素を削除するとともに他
の要素の辞書110における格納場所を詰めて、新しい
要素の登録のための格納場所を確保するように構成され
ている。
ii−;2の H 請求項2の発明は、請求項1の発明による辞書初期化方
式において、変更手段141が、各要素に含まれる参照
番号に対応する要素が属しているブロックを2分探索に
よって検出し、該当するブロックの格納場所の移動量に
基づいて、参照番号の変更を行うように構成されている
〔作 用〕
i 舌)゛ 1の 日 請求項1の発明においては、導入される検索通知に基づ
いて、計数手段111により、辞書110に登録された
各要素が検索された回数が計数され、初期化指示に応じ
て、この計数手段111による計数結果に基づいて、分
割手段121により、使用頻度の低い要素が検出される
。また、この分割手段121により、辞書110の格納
領域が、少なくとも1つの使用頻度の低い要素で区切ら
れた複数のブロックに分割され、これらのブロックの分
割に関する分割情報が出力される。
この分割手段121によって出力された分割情報に基づ
いて、移動手段131により、上述した複数のブロック
ごとに、ブロック間を区切っている使用頻度の低い要素
の分だけ辞書110における格納場所が移動させられる
また、上述した分割情報に基づいて、変更手段141に
より、移動手段131によって移動させられた辞書21
0の各要素に含まれる参照番号が、該当する要素の移動
後の格納場所に対応する参照番号に変更される。
このようにして、使用頻度の低い要素が削除され、他の
要素の辞書110における格納場所が詰められ、新しい
要素の登録のための格納場所を確保される。
請求項1の発明にあっては、各要素の移動処理を行う前
に、辞書110の格納領域が、使用頻度の低い削除すべ
き要素によって区切られた複数のブロックに分割され、
これらのブロックごとに、辞書110の要素の格納場所
の移動が行われる。
従って、削除すべき要素を検出するごとに、以降の格納
場所に登録されている全ての要素の格納場所の移動を行
う場合に比べて、処理量が大幅に削減される。これによ
り、初期化処理に要する時間を長くすることなく、学習
履歴の一部を保存して、初期化による圧縮率の低下を防
ぐことが可能となる。
j  云)゛ 2の 日 請求項2の発明においては、変更手段141により、各
要素に含まれる参照番号に対応する要素が属しているブ
ロックが、2分探索によって検出され、該当するブロッ
クの格納場所の移動量に基づいて、参照番号の変更が行
われる。
請求項2の発明にあっては、2分探索手法を用いて該当
するブロックを検出することにより、参照番号の変更処
理に要する時間を短縮することができ、初期化処理に要
する時間を更に短縮することができる。
[実施例] 以下、図面に基づいて本発明の実施例について詳細に説
明する。
第2図は、本発明の一実施例による辞書初期化方式を適
用したデータ圧縮装置の構成を示す。
第5図は、本発明の一実施例による辞書初期化方式を適
用したデータ復元装置の構成を示す。
ここで、第1図と実施例との対応関係について説明して
おく。
辞書110は、辞書221に相当する。
計数手段111は、カウンタ222に相当する。
分割手段121は、初期化処理部230の分割処理部2
31に相当する。
移動手段131は、初期化処理部230の移動処理部2
32に相当する。
変更手段141は、初期化処理部230の変更処理部2
33に相当する。
以上のような対応関係があるものとして、以下実施例の
構成および動作を説明する。
第2図において、210は符号化部を、220はメモリ
を、230は初期化処理部をそれぞれ示しており、また
、メモリ220において、221は辞書を示している。
この辞書221は、N m a X個の領域に分割され
ており、各領域にはlrl」〜’N−mxuのアドレス
が付けられており、これらの領域のそれぞれには、符号
化部210により、相異なる部分列が登録されるように
なっている。
また、上述した辞書221のN ***個の領域のそれ
ぞれに対応して、N□、個のカウンタ222゜・・・、
222.、、、が設けられており、これらのカウンタ2
22.、・・・、222.1.、Xには、計数値の初期
値として「0」が格納されている。以下、これらのカウ
ンタ222.  ・・・ 222工、Xを総称する際に
は、単にカウンタ222と称する。
第3図に、実施例によるデータ圧縮動作を表す流れ図を
示す。
入力文字列を構成する文字のそれぞれについて、1文字
からなる文字列を辞書221に登録して辞書221を初
期化しくステップ301)、その後、符号化処理を開始
する。
例えば、第7図(a)に示したような文字“a 。
“°b゛、  C”からなる文字列を符号化する場合は
、これらの文字“a″、“b″  II CI+のそれ
ぞれ1文字からなる文字列を辞書221の要素として、
アドレスrl、+、  l’2J、  r31に登録し
、次に登録する辞書221の領域を示す登録開始アドレ
スnにIr4.をセットすればよい。
まず、入力文字列の最初の文字を読み込んで、この文字
が登録されている辞書221のアドレスを参照番号ωと
しくステップ302)、以下、1文字ずつ順次に入力文
字列を読み込んで、拡張文字にとする(ステップ3o3
)。
ステップ304において、まだ読み込むべき文字がある
とされた場合(肯定判定の場合)は、上述した参照文字
ωと拡張文字にとの組合せ(ωK)で表された部分列を
辞書221から検索する(ステップ305)。
該当する部分列が辞書221に登録されている場合は、
ステップ306における肯定判定となり、上述した組合
せ(ωK)で表される部分列が登録されているアドレス
を新しい参照番号ωとしくステップ307)、また、こ
の参照番号ωに対応するカウンタ222の計数をインク
リメントして(ステップ308)、ステップ303に戻
る。
このように、実施例によるデータ圧縮装置においては、
従来のLZW符号化アルゴリズム(ステップ301〜ス
テツプ307)に、ステップ308の該当するカウンタ
222の計数をインクリメントする処理が付加されてい
る。
例えば、第6図(a)に示した文字列の1番目の文字“
°a”の符号化の際に、組合せ(1b)が辞書221の
アドレス174Aに、また、2番目の文字“b”の符号
化の際に、組合せ(2a)が辞書221のアドレス1′
5」に登録されている。従って、3番目の文字“′a°
“の符号化の際には、続いて読み出された文字“b”を
拡張文字にと文字°“a”に対応する参照番号「1jと
の組合せ(1b)が既に登録されているので、上述した
ステップ306における肯定判定となり、辞書221の
アドレスf4Jに対応するカウンタ2224の計数値が
インクリメントされる。
また、第6図(a)に示した8番目の文字゛″b”を先
頭とする文字列に注目して符号化する際には、まず、文
字“b”に次の文字“a”を拡張文字にとして付加した
部分列“ba”を表す表現(2a)が辞書221から検
索される。また、更に次の文字“b”を付加した“’b
ab’”を表す部分列の表現(5b)が検索される。従
って、この場合は、アドレスr5Jとアドレス「8jと
のそれぞれに対応するカウンタ2226,222.がイ
ンクリメントされる。
このように、各部分列がステップ305において検索さ
れるごとに、該当するカウンタ222の計数値が1ずつ
インクリメントされる。従って、カウンタ222のそれ
ぞれの計数値は、上述した符号化処理によって作成され
る辞書の樹の対応する節点を経由して、辞書の樹の技が
伸びた回数、即ち、対応する参照番号が符号化処理で使
用された頻度を示している。
一方、ステップ306における否定判定の場合は、参照
番号ωを符号として出力しくステップ309)、上述し
た組合せ(ωK)を辞書221の要素として、登録開始
アドレスnに登録する(ステップ310)。これにより
、組合せ(ωK)で表される部分列に対応して参照番号
「njが定義される。
また、このときの拡張文字Kが登録されているアドレス
を新しい参照番号ωとしくステップ311)、登録開始
アドレスnをインクリメントする(ステ・ンブ312)
その後、ステップ313において、登録開始アドレスn
と辞書221の最大アドレスtN maxとを比較し、
登録開始アドレスnの方が小さい(肯定判定)場合は、
上述したステップ303に戻り、ステップ304におい
て、読み込むべき文字がない(否定判定)とされた場合
には、そのときの参照番号ωを符号として出力して(ス
テ・ンプ314)、処理を終了する。
一方、上述したステップ313における否定判定の場合
は、辞書221に新しい符号を登録することができない
と判断し、符号化部210は、初期化処理部230に対
して、以下に述べる初期化処理を依願する(ステップ3
15)。
この初期化依頬に応して、初期化処理部230は、辞書
221に登録された要素の一部を削除し、空いた領域に
削除されずに保存された要素を詰める処理を行うように
なっている。
この初期化処理部230おいて、231は分割処理部を
、232は移動処理部を、233は変更処理部をそれぞ
れ示している。
分割処理部231は、上述したN m 11 X個のカ
ウンタ222による計数結果に基づいて、削除する要素
と保存する要素とを判別し、辞書221を複数のブロッ
クに分割して、各ブロックに含まれる要素の格納場所の
移動量を算出するようになっている。
この分割処理部231によって算出された移動量に基づ
いて、移動処理部232は、保存する要素の格納場所の
移動を行うようになっている。
また、変更処理部233は、新しいアドレスに基づいて
、辞書221に保存された部分列の表現を変更するよう
になっている。
第4図(a)に分割処理部231の動作を表す流れ図を
、第4図(ロ)に移動処理部232の動作を表す流れ図
を、第4図(C)に変更処理部233の動作を表す流れ
図を示す。
分割処理部231は、予め、辞書221の着目している
アドレスを示す変数iの初期値として、辞書221を圧
縮したのちの最小アドレスN m i nを設定する。
例えば、上述したように、人力文字列が3文字から構成
されている場合は、最小アドレスN m i nとして
f4jを設定すればよい。また、変数Sと変数にとに初
期値j′Ojを設定する。
また、分割処理によって生成される複数のブロックのそ
れぞれに対応する格納場所の変化量からなる配列5li
deと、各ブロックの最終アドレスからなる配列Pos
 とを定義し、上述した配列5lideの「0」番目の
成分5Iide[O] として数値1’QJを設定して
おく。
分割処理部231は、まず、辞書221のアドレスiの
領域に対応するカウンタ222iの計数値Count 
[i ]  と所定の閾値Thと比較し、該当する辞書
221の要素が高い頻度で参照されたか否かに基づいて
、この要素を削除するべきか否かを判定する(ステップ
401)。
計数値Count [i ] が閾値Thよりも大きい
場合(ステップ401における否定判定)に、分割処理
部231は、該当する要素は、使用頻度の高い保存して
おくべき要素であると判断し、変数iをインクリメント
して(ステップ402)、ステップ401に戻る。
一方、ステップ401における肯定判定の場合は、変数
iの値を別の変数jに設定しくステップ403)、上述
したステップ401と同様にして、j番目の要素を削除
するべきか否かを判定する(ステップ404)。
例えば、辞書221のアドレスf5Jに登録された要素
に対応するカウンタ222による計数値Count[6
] が闇値Th以下である場合は、上述したステップ4
01において肯定判定となり、更に、ステップ404に
おいて肯定判定となって、変数jおよび変数Sがそれぞ
れインクリメントされて(ステップ405)、ステップ
404に戻る。
更に、アドレスr7Jの要素に対応するカウンタ222
7の計数値Count[7] が闇値Th以下であれば
、ステップ405において変数jと変数Sとが更にイン
クリメントされる。
このように、削除される要素が検出されるたびに変数S
をインクリメントすることにより、それまでに検出され
た削除すべき要素の数が計数される。従って、この変数
Sは、次の保存すべき要素のアドレスを移動させるべき
数、即ち、アドレスの変化量を示している。
その後、使用頻度の高い保存すべき要素が検出されると
、ステップ404における否定判定となる。この場合は
、分割処理部231は、変数iから数値flJを差し引
いたものを配列Po5Ok番目の成分Pos [k ]
 に代入し、変数kをインクリメントする(ステップ4
06)。
ここで、変数iで示されるアドレスに対応する要素は削
除される要素である。従って、変数iから数値rIJを
差し引いたものをに番目のブロックの最終アドレスとす
ることにより、その前の保存すべき要素が連続している
部分が、k番目のブロックとして区切られる。また、こ
のように、辞書221の要素をブロックに区切るごとに
、変数kをインクリメントすることにより、分割されて
生成されたブロックの数が計数される。
例えば、上述したアドレス「6」に登録された要素が初
めて検出された削除すべき要素であった場合は、配列P
osの0番目の成分Pos [O]にアドレスF5Jが
設定され、変数kがインクリメントされてflJとなる
また、k番目のブロックまでに検出された削除すべき要
素の数を示す変数Sの値が、k番目のブロックに含まれ
る要素のアドレスの変化量として、配列5lideOk
番目の成分5Iide[k]に代入される(ステップ4
07)。
例えば、辞書221(7)7)”レスr6B、  f7
Jに登録された要素が削除すべき要素であるとされた場
合は、変数Sの値はr2Jとなっており、この値が、ス
テップ407において、配列5lideの1番目の成分
51ide[1] に代入される。
次に、分割処理部231は、変数jの値を変数iに設定
しくステップ408L変数iの値と最大アドレスN。X
とを比較しくステップ409)、変数iが最大アドレス
N□8よりも小さい場合(ステップ409における肯定
判定)は、ステップ401に戻って上述した処理を繰り
返す。
このようにして、辞書221を削除すべき要素で区切ら
れて複数のブロックに分割され、各ブロックに順次にブ
ロック番号kが与えられていき、変数iが最大アドレス
N。axとなったときに、ステップ409における否定
判定となる。
この場合は、分割処理部231は、最大アドレスN m
 m xを配列Posのに番目の成分Pos [k ]
に代入し、このときの変数kを分割数に6として保持し
て(ステップ410)、処理を終了する。
また、このとき、分割処理部231は、上述した配列5
lide 、配列Posおよび分割数に、を分割情報と
して移動処理部232に導入し、移動処理を依願するよ
うになっている。
ここで、第2表に辞書221とカウンタ222の計数値
とを対応して示し、分割処理部231により、上述した
閾値Thをr3Jとして分割処理を行った結果を示す。
第2表において、ブロック欄の数字は、各要素が属して
いるブロックの番目を示している。
上述した移動処理依願に応じて、移動処理部232は、
まず、変数kに初期値1rQ、を、変数Pに配列Pos
の0番目の成分Pos[OJの値を、初期化処理後の辞
書221の要素数nに上述した最大アドレスN□8から
51ide[km]を差し引いたものを変数jに最小ア
ドレスN、、、(例えば「4J)をそれぞれ初期値とし
て設定する(ステップ421)。
また、辞書221に部分列の表現(ωK)として登録さ
れた参照番号ωからなる配列Wと拡張文字Kからなる配
列にとを定義する。また、以下、これらの配列Wおよび
配列にのアドレスiに対応する要素をそれぞれW(i)
、K(i)と称する。
次に、移動処理部232は、変数iと変数pとを比較し
、変数iに対応する辞書221の要素かに番目のブロッ
クに含まれているか否かを判定する(ステップ422)
変数iの値が変数pの値を超えていない場合(ステップ
422における肯定判定)は、該当する要素かに番目の
ブロックに属していると判断する。
この場合は、移動処理部232は、上述した配列Wの成
分W (i +5lide[kl )をW [i )に
、配列にの成分K (i+5lide[kl ]をK 
(illに代入する(ステップ423)。このことは、
辞書221におイテ、アトL/スr i +51ide
[kl J ニ登録された部分列の表現(ωK)をアド
レスFi。
に移動させたことに相当する。
また、このとき、辞書221のアドレスri+5lid
efk] Jに対応するカウンタ222の計数値Cou
nt[i +5lide[k月をアドレスFiAに対応
するカウンタ222□の計数値として設定する(ステッ
プ424)。
例えば、第2表に示した分割処理の結果に基づいて、移
動処理を行う場合は、ステップ421において、変数i
には初期値r4Jが、変数pに、はアドレス「5」が設
定されている。この場合は、ステップ422における肯
定判定となり、上述した移動処理が行われる。但し、こ
の場合は、0番目のブロックに対応する変化量5Iid
e[0] の値はr□、であるので、該当する要素の格
納場所は変化しない。
一方、変数iの値が変数pの値を超えた場合は、該当す
る要素は次のブロックに含まれていると判断して、ステ
ップ422における否定判定とする。
この場合は、ブロックを示す変数kをインクリメントし
、Pos (k ] から51ide[kl を差し引
いたものを変数Pに設定する(ステップ425)。
従って、ステップ425において設定された変数Pの値
は、辞書221の要素の移動が終了した後におけるに番
目のブロックに属する最後の要素のアドレスを示してい
る。
例えば、変数iの値がr5.となると、ステップ422
における否定判定となり、ステップ425により、ブロ
ックの番号を示す変数にと変数pの更新が行われ、変数
Pに2番目のブロックの最後の要素のアドレスがセット
される。これにより、ステップ422における肯定判定
となり、上述したステップ423,424の移動処理が
行われる。
この場合は、1番目のブロックに対応する変化量51i
de[1] の値は「2Jであるので、該当する要素の
格納場所は、それぞれ「2」ずつ詰められる。
このようにして、分割処理部231によって分割された
ブロックごとに、格納場所の移動処理が行われる。
上述した移動処理を行った後に、移動処理部232は、
変更処理部233に対して、上述した配列WO1番目の
成分W (i )の値の変更処理を依頼しくステップ4
26)、表現変更部233がらの終了通知を待つ(ステ
ップ427)。
ところで、LZW符号化方式においては、辞書221に
登録された部分列は、自身に対応する辞書の樹の節点よ
りも根に近い節点に対応する参照番号ωと拡張文字にと
で表されている。従って、上述した移動処理により、節
点に対応する参照番号が変化した場合は、この節点に対
応する新しい参照番号によって、部分列の表現を改める
必要がある。
上述した変更処理依頼に応じて、変更処理部233は、
まず、2分探索の範囲の下限を示す変数りに初期値r□
、を、上限を示す変数Hに初期値として上述した分割数
に、を設定する(ステップ441)。
次に、変数りと変数Hとの平均値mを求め(ステップ4
42)、上述したW [i ]の値と配列Po50m番
目の成分Pos[ml の値とを比較しくステップ44
3)、i番目の要素として登録された参照番号ωが区間
(L、m)と区間(m、H)とのいずれに属しているか
を判定する。
W (i ’Jの値がPos[ml の値以下であると
された場合(ステップ443における肯定判定)は、変
更処理部233は、参照番号ωは区間(L、 m)に属
していると判断し、変数Hに平均値mから数値r1.を
差し引いた値を設定する(ステップ444)。
一方、WCi)の値がPos(m)の値よりも大きいと
された場合(ステップ443における否定判定)は、変
更処理部233は、参照番号ωは区間(m、H)に属し
ていると判断し、変数りに平均値mにrljを加えた値
を設定する(ステップ445)。
その後、変更処理部233は、変数りと変数Hとを比較
し、変数りが変数H以下であるとされた場合(ステップ
446における肯定判定)は、該当するブロックが検出
されていないと判断して、ステップ442に戻って、上
述した処理を繰り返す。
一方、変数りが変数Hを超えたとき(ステップ446に
おける否定判定)に、変更処理部233は該当するブロ
ックを検出したと判断し、配列WO1番目の成分W (
i )からL番目のブロックに対応する配列5lide
の成分51ide[L] の値を差し引いたものを要素
W (i )に設定しくステップ447)、上述した移
動処理部232に対して、変更処理の終了を通知する。
このように、2分探索の手法を用いることにより、該当
するブロックを効率よく探すことができる。
上述した終了通知に応じて、移動処理部232は処理を
再開しくステップ427における肯定判定)、変数iを
インクリメントして(ステップ428)、この変数iと
要素数nとを比較する(ステップ429)。
変数iが要素数nよりも小さいとされた場合(ステップ
429の肯定判定)は、ステップ422に戻り、変数i
が要素数nと等しくなり、このステップ422における
否定判定となるまで、上述した処理を繰り返す。
また、上述した処理の終了後に、配列Wおよび配列にの
各要素を順次に辞書221の各アドレスに格納し、要素
数nを登録開始アドレスとして初期化処理を終了し、こ
の終了通知に応じて、符号化部210は、符号化処理を
再開すればよい。
上述したように、各ブロックの移動量を予め算出してお
き、ブロックごとに格納場所を移動することにより、格
納場所の移動処理に要する時間を辞書221に登録され
た要素数に比例する時間とすることができる。このよう
に、辞書221の要素全体を2重ループで検索する場合
に比べて、処理量を大幅に削減することが可能となる。
また、変更処理部233において、2分探索を用いるこ
とにより、各要素に含まれる参照番号に対応する要素が
含まれているブロックを効率よく探すことが可能となり
、該当する参照番号に基づいて、部分列の表現を変更す
る処理を高速化することができる。
このように、初期化に要する時間を長くすることなく、
学習履歴を保存して、初期化処理に伴う圧縮率の低下を
防ぐことが可能となり、効率よくデータの圧縮を行うこ
とができる。
なお、上述した実施例にあっては、データ圧縮装置に適
用した場合について説明したが、データ復元装置に通用
してもよい。
この場合は、第5図に示すように、符号化部210の代
わりに復号化部510を備えて構成すればよい。
この復号化部510は、辞書221に基づいて、従来の
LZW符号を復号する処理を行うとともに、辞書221
を検索するたびに、該当する要素に対応するカウンタ2
22の計数値をインクリメントするように構成されてい
る。また、この復号化部510は、辞書221に最大ア
ドレスN1.8を超えて登録しようとしたときに、初期
化処理部230に対して、初期化処理部顛を行うように
なっている。
[発明の効果] 上述したように、請求項1の発明によれば、各要素の移
動処理を行う前に、辞書の格納領域が複数のブロックに
分割され、これらのプロ・ンクごとに、辞書の要素の格
納場所の移動が行われるので、削除すべき要素を検出す
るごとに、以降の格納場所に登録されている全ての要素
の格納場所の移動を行う場合に比べて、処理量を大幅に
削減することができ、初期化処理に要する時間を長くす
ることなく、学習履歴の一部を保存して、初期化による
圧縮率の低下を防ぐことが可能となり、データの圧縮お
よび復元を効率よく行うことができる。
また、請求項2の発明によれば、2分探索手法を用いて
該当するブロックを検出することにより、参照番号の変
更処理に要する時間を短縮することができ、初期化処理
に要する時間を更に短縮することができる。
【図面の簡単な説明】
第1図は本発明の原理ブロック図、 第2図は本発明の一実施例による辞書初期化方式を適用
したデータ圧縮装置の構成図、第3図は実施例による符
号化動作を表す流れ図、第4図は実施例による初期化動
作を表す流れ図、第5図は実施例による辞書初期化方式
を適用したデータ復元装置の構成図、 第6図はLZW符号化方式の説明図、 第7図は辞書の構成を示す図である。 図において、 110は辞書、 111は計数手段、 121は分割手段、 131は移動手段、 141は変更手段、 210は符号化部、 220はメモリ、 221は辞書、 222はカウンタ、 230は初期化処理部、 231は分割処理部、 232は移動処理部、 233は変更処理部、 510は復号化部である。 本発明の原理プロ ク 図 第 図 実施(クリによるデータ圧1.宿装置の構成図第 図 実方缶9114こよる符号イヒ動イ乍を表す流れ図第 図 実施+1113によるデータ復元装置の構成図第 図

Claims (2)

    【特許請求の範囲】
  1. (1)相異なる文字列を当該文字列よりも前に辞書(1
    10)に登録された文字列の格納場所に対応する参照番
    号と1文字からなる増分とで表し、この文字列の表現を
    新しい要素として辞書(110)に順次に登録しながら
    、入力された文字列を前記辞書(110)に登録された
    文字列の参照番号によって符号化してデータを圧縮する
    際の辞書初期化方式において、 導入される検索通知に基づいて、前記辞書(110)に
    登録された各要素が検索された回数を計数する計数手段
    (111)と、 初期化指示に応じて、前記計数手段(111)による計
    数結果に基づいて使用頻度の低い要素を検出し、辞書(
    110)の格納領域を少なくとも1つの使用頻度の低い
    要素で区切られた複数のブロックに分割するとともに、
    これらのブロックの分割に関する分割情報を出力する分
    割手段(121)と、 前記分割手段(121)によって出力された分割情報に
    基づいて、前記複数のブロックごとに、ブロック間を区
    切っている使用頻度の低い要素の分だけ前記辞書(11
    0)における格納場所を移動する移動手段(131)と
    、 前記分割情報に基づいて、前記移動手段(131)によ
    って移動された前記辞書(110)の各要素に含まれる
    参照番号を該当する要素の移動後の格納場所に対応して
    変更する変更手段(141)と、 を備え、使用頻度の低い要素を削除するとともに他の要
    素の前記辞書(110)における格納場所を詰めて、新
    しい要素の登録のための格納場所を確保するように構成
    することを特徴とする辞書初期化方式。
  2. (2)前記変更手段(141)が、各要素に含まれる参
    照番号に対応する要素が属しているブロックを2分探索
    によって検出し、該当するブロックの格納場所の移動量
    に基づいて、参照番号の変更を行うようにしたことを特
    徴とする請求項1記載の辞書初期化方式。
JP19439690A 1990-07-23 1990-07-23 辞書初期化方式 Expired - Fee Related JP2799228B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19439690A JP2799228B2 (ja) 1990-07-23 1990-07-23 辞書初期化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19439690A JP2799228B2 (ja) 1990-07-23 1990-07-23 辞書初期化方式

Publications (2)

Publication Number Publication Date
JPH0480813A true JPH0480813A (ja) 1992-03-13
JP2799228B2 JP2799228B2 (ja) 1998-09-17

Family

ID=16323900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19439690A Expired - Fee Related JP2799228B2 (ja) 1990-07-23 1990-07-23 辞書初期化方式

Country Status (1)

Country Link
JP (1) JP2799228B2 (ja)

Also Published As

Publication number Publication date
JP2799228B2 (ja) 1998-09-17

Similar Documents

Publication Publication Date Title
EP0438955B1 (en) Data compression method
KR100527891B1 (ko) 허프만 디코딩을 수행하는 방법
WO2011057680A1 (en) Indexing compressed data
JP3241788B2 (ja) データ圧縮方式
EP2462696A1 (en) Compression of bitmaps and values
US5010344A (en) Method of decoding compressed data
JPH03204234A (ja) 圧縮データ復元方法
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
JPH0480813A (ja) 辞書初期化方式
JPH03247167A (ja) データ圧縮方式
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3241787B2 (ja) データ圧縮方式
JP3130324B2 (ja) データ圧縮方式
US20190245554A1 (en) Data encoder and data encoding method
JP3012677B2 (ja) Zl符号化方法
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JP3088740B2 (ja) データ圧縮及び復元方式
JP3100206B2 (ja) データ圧縮方法
US20100312755A1 (en) Method and apparatus for compressing and decompressing digital data by electronic means using a context grammar
JP3388768B2 (ja) データ圧縮及び復元方式
JPH05152971A (ja) データ圧縮・復元方法
JP2825960B2 (ja) データ圧縮方法及び復元方法
Klein et al. Parallel Lempel Ziv Coding
JPH0527943A (ja) データ圧縮方式
JP2003152548A (ja) データ圧縮における文字列検索方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees