JP3384844B2 - データ圧縮方法および装置並びにデータ復元方法および装置 - Google Patents

データ圧縮方法および装置並びにデータ復元方法および装置

Info

Publication number
JP3384844B2
JP3384844B2 JP24482993A JP24482993A JP3384844B2 JP 3384844 B2 JP3384844 B2 JP 3384844B2 JP 24482993 A JP24482993 A JP 24482993A JP 24482993 A JP24482993 A JP 24482993A JP 3384844 B2 JP3384844 B2 JP 3384844B2
Authority
JP
Japan
Prior art keywords
character
dictionary
character string
code
string
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
JP24482993A
Other languages
English (en)
Other versions
JPH07104969A (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 JP24482993A priority Critical patent/JP3384844B2/ja
Publication of JPH07104969A publication Critical patent/JPH07104969A/ja
Application granted granted Critical
Publication of JP3384844B2 publication Critical patent/JP3384844B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ユニバーサル型アルゴ
リズムの一種である増分分解型のZiv-Lempel-Welch(LZ
W) 符号化方式を用いてデータを圧縮,復元する方法お
よび装置に関するものである。
【0002】近年、情報処理技術の発達により、コンピ
ュータによって文字コード,ベクトル情報,画像など様
々な種類の膨大なデータが処理されるようになってい
る。このため、データの種類にかかわらず、データの中
の冗長な部分を省いてデータ量を圧縮する技術および圧
縮された情報を復元する技術が必要とされており、これ
に応じて、ユニバーサル符号化が提案されている。
【0003】上述したLZW 符号は、ユニバーサル符号化
の代表例であるZiv-Lempel符号の増分分解型アルゴリズ
ムの改良技術として知られている(T.A.Welch,"A Techn
iquefor High-Performance Data Compression",Compute
r,June 1984参照)。
【0004】このLZW 符号は、辞書に登録された文字列
の中から符号化対象の文字列と最も長く一致する文字列
を辞書から検索し、得られた文字列に対応する符号を出
力するとともに、検索された文字列に不一致となった最
後の文字をつなげて拡張した文字列に新しい符号を与え
て辞書に登録することにより、入力文字列を相異なる文
字部分列ごとに順次に符号化して得られる。
【0005】ここで、上述した文字はデータの1ワード
単位を示しており、複数ワードのデータの連なりが文字
列と呼ばれている。本明細書においても、文字および文
字列を同様の意味で用いる。
【0006】
【従来の技術】図9に従来のLZW 符号化方式による圧縮
動作を表す流れ図を示す。圧縮処理を開始する際には、
入力される文字列を構成する各文字を辞書に登録し、各
文字に対応する符号を与えておく。つまり、1ワードが
8ビットであれば256個の文字それぞれに対応する符
号(例えば「0」〜「255」)が、番号0〜番号25
5に対応して辞書に登録される。また、上述した各文字
に対応する登録位置の次の登録位置が、辞書に新たな文
字列を登録する際の登録位置を示す番号n(例えば25
6)とされる。
【0007】以下、図9を参照して圧縮動作を説明す
る。文字列が入力されると、まず、この文字列の先頭の
1文字に対応する符号をそのまま一致文字列ωとして保
持し(ステップ601)、次の文字を読み込んで入力文
字Kとして保持する(ステップ602)。
【0008】次に、辞書を参照して、上述した一致文字
列ωと入力文字Kとを繋げた拡張文字列ωKが登録され
ているか否かを判定する(ステップ603)。ステップ
603の肯定判定の場合は、上述した拡張文字列ωKを
一致文字列ωとして保持し(ステップ604)、ステッ
プ605において次の文字があるか否かを判定し、この
ステップ605の肯定判定の場合は、ステップ602に
戻って次の文字を入力する。
【0009】このようにして、1文字ずつ文字列を延ば
しながら一致する文字列を検索することにより、辞書か
ら符号化対象となる文字列に最も長く一致する文字列を
検索していき、ステップ603における否定判定となっ
たときに、そのときの一致文字列ωに対応する符号を出
力する(ステップ606)。
【0010】また、このとき、上述した一致文字列ωに
不一致となった入力文字Kを繋げた拡張文字列ωKを辞
書に登録する(ステップ607)。また、上述した入力
文字Kを一致文字列ωとして保持し、辞書における登録
位置nをインクリメントしてステップ605に進む。
【0011】上述したようにして、文字列を圧縮してい
き、ステップ605における否定判定となったときに、
そのときの一致文字列ωに対応する符号を出力して(ス
テップ608)、圧縮処理を終了する。
【0012】このように、辞書を更新しつつ、入力文字
列を相異なる文字部分列に分解しながら符号化すること
により、入力文字列の冗長性を除去して、高い圧縮率で
データを圧縮することができる。
【0013】図10に、従来のLZW 方式の文字列復元動
作を表す流れ図を示す。復元処理は、上述した圧縮処理
の逆の手順で辞書を復元しながらデータを復元する処理
である。
【0014】復元処理を開始する際には、圧縮処理の場
合と同様に、各文字を初期値として辞書に登録し、新た
な文字列の登録位置nを設定しておく。以下、図10を
参照して、復元処理を説明する。
【0015】まず、ステップ701において最初の符号
の処理を行う。最初の符号は、そのまま直前コードC
OLD として保持される。また、この符号に基づいて辞書
を検索して該当する文字Kが得られ、この文字Kは復元
された文字列の先頭の文字として出力されるとともに、
復元文字列の先頭文字KFIN として保持される。
【0016】その後、ステップ702において符号Cを
読み込んで、この符号を入力コードCINとして保持する
とともに、この符号Cが辞書に登録されているか否かを
判定する(ステップ703)。
【0017】このステップ703の肯定判定の場合は、
辞書を参照して、符号Cに対応する文字列を一致文字列
ωと拡張文字Kとの組み合わせで表せるか否かを判定し
(ステップ704)、肯定判定の場合は、上述した拡張
文字Kをスタックに保持するとともに、一致文字列ωを
示す符号ωを符号Cとして(ステップ705)、ステッ
プ704に戻る。
【0018】つまり、ステップ704,705の手順を
繰り返すことにより、ステップ702で入力された符号
Cに対応する文字列の末尾の文字から順次に拡張文字K
として分解され、スタックに保持されていく。したがっ
て、符号Cに対応する文字列をそれ以上分解できなくな
ったとき、すなわち、符号Cが1文字に対応する符号と
なったときに、ステップ704の否定判定となる。この
とき、スタックに保持された文字を入力と逆の順番で出
力すれば(ステップ706)、入力符号CINに対応する
文字列を復元することができる。
【0019】次に、復元された文字列の先頭の文字と直
前コードCOLD とを組み合わせて、新たな符号として辞
書に登録して辞書を更新し、辞書の登録位置nをインク
リメントする(ステップ707)。
【0020】また、上述した文字列の先頭の文字を先頭
文字KFIN として保持し、ステップ708において、入
力符号CINを直前コードCOLD として保持したのちに、
ステップ709で入力済でない符号があるか否かを判定
し、肯定判定の場合に、ステップ702に戻って新しい
符号を読み込めばよい。
【0021】ところで、上述したステップ703におけ
る否定判定となった場合は、ステップ710に進んで、
復元処理の例外として処理する。この場合は、まず、前
の復元文字列の先頭文字KFIN を出力し、符号Cを直前
符号COLD で置き換えるとともに、入力符号CINを直前
符号COLD と先頭文字KFIN との組み合わせに対応する
符号で置き換え、ステップ704に進めばよい。
【0022】このように、辞書を更新しながら符号を復
元することにより、図9に示した圧縮処理で得られた符
号列から元の情報を復元することができる。このように
して、全ての符号を復元したときに、ステップ709の
否定判定として復元処理を終了すればよい。
【0023】
【発明が解決しようとする課題】このように、従来の圧
縮,復元方式においては、文字部分列に出現順序に相当
する符号を付け、この符号を用いて入力文字列を圧縮
し、この符号から元の文字列を復元している。したがっ
て、符号と文字部分列とは1対1に対応している。ま
た、登録番号の大きい文字部分列にも対応する必要性か
ら、1つの符号のビット長を長くとっておく必要があ
る。
【0024】ところで、実際の文章などにおいては、各
文字部分列の出現順序には所定の相関関係があり、前に
出現した文字部分列と次に出現する文字部分列との間に
は従属関係があることが知られている。
【0025】しかしながら、上述した従来の符号化方式
においては、各文字部分列をそれぞれ独立に出現したも
のとして扱っており、連続する文字部分列間の従属関係
を考慮していない。このため、冗長な情報であるにもか
かわらず、各文字部分列の履歴情報を含んだ符号が生成
されてしまっていた。
【0026】このような課題を解決する技法として、本
出願人は、特開平3─270417(特願平2─703
79)『データ圧縮および復元方式』を既に出願してい
る。この技法は、直前文字列の最終文字を先頭文字とす
る現文字部分列を先頭文字とその展開文字として捉え、
先頭文字ごとの個別の辞書の木における出現順番で各文
字部分列の番号を付すことにより、直前文字列の最終文
字との従属関係に基づいて、現文字部分列の符号を設定
するものである。
【0027】この技法においては、各文字部分列は先頭
文字とこの先頭文字を根とする辞書の木における登録番
号とで特定されるが、直前文字列の最終文字と現文字部
分列の先頭文字とが一致しているから、先頭文字に関す
る情報は省略可能である。したがって、入力文字列を分
解して得られた各文字部分列について、それぞれがつな
がる辞書の木における登録番号のみを符号とすることが
でき、各文字部分列の履歴情報を符号から除去すること
ができる。
【0028】この技法を適用した場合には、各文字を先
頭とする文字部分列の出現頻度が同等であると仮定すれ
ば、全体辞書に従来と同数の符号を登録したときに各個
別の辞書の木において与えられる番号の期待値は、全体
辞書の番号を個別の辞書の木の数で割った値となること
が予想される。したがって、従来方式よりも符号のビッ
ト長を短くすることができ、データの圧縮率を向上する
ことができる。
【0029】しかしながら、上述した技法においては、
符号を復元する際に、直前文字列の最終文字と符号とを
全体辞書の番号に変換する必要がある。この変換方法と
しては、各辞書の木に対応する個別辞書を設け、個別の
辞書の木における符号と全体辞書における登録番号との
対応表を格納しておくことが考えられる。しかしなが
ら、各個別辞書が全体辞書と同数のエントリを備えてい
る必要があるため、膨大な記憶容量を必要とする。例え
ば、1文字を8ビットとした場合には、256個の個別
辞書を設ける必要があり、これらの個別辞書の全てが全
体辞書と同じ容量を必要とする。このため、小規模のシ
ステムで実現することは困難であった。
【0030】また、ポインタでつないで表す方法も考え
られるが、登録の数だけポインタをたどらなければなら
ないので、登録数が多くなったときに処理時間が長くな
ってしまう。
【0031】本発明は、直前文字列の最終文字で示され
る先頭文字とこの先頭文字に続く展開文字列に付された
符号との組み合わせで各文字部分列を表す符号化方式を
少ない記憶容量で実現する圧縮,復元方法および装置を
提供することを目的とする。
【0032】
【課題を解決するための手段】図1に、請求項1〜請求
項3の発明の原理構成を示す。請求項1の発明は、辞書
に登録された文字部分列から入力文字列に最大長一致す
る一致文字列を検索し、この一致文字列の複製として入
力文字列の該当する部分を符号化するとともに、一致文
字列を1文字だけ拡張した新規の文字部分列を辞書に登
録する増分分解型の符号化方法を適用しており、直前に
符号化された直前文字列の最終文字を先頭文字とする現
文字列に対応する符号を辞書から検索して出力し、各文
字部分列を先頭文字とこの先頭文字からの展開文字列と
して捉え、先頭文字ごとに相異なる展開文字列にそれぞ
れ符号を与えて辞書に登録するデータ圧縮方法におい
て、辞書を検索する際に、一致文字列に対応する登録番
号と一致文字列に付加しようとする拡張文字および直前
文字列の最終文字の少なくとも一方とを所定のハッシュ
関数に入力し、得られたハッシュ値に基づいてハッシュ
表を参照することにより、一致文字列を拡張文字で拡張
した文字列を辞書から検索し、新規の文字部分列を辞書
に登録する際に、該当する一致文字列の辞書における登
録位置を示す登録番号と一致文字列に付加された拡張文
字および直前文字列の最終文字の少なくとも一方とをハ
ッシュ関数に入力し、得られたハッシュ値に応じて、辞
書において新規の文字部分列が登録されている位置を示
す登録番号をハッシュ表に登録することを特徴とする。
【0033】請求項2の発明は、辞書101に登録され
た文字部分列から入力文字列に最大長一致する一致文字
列を検索し、この一致文字列の複製として入力文字列の
該当する部分を符号化するとともに、一致文字列を1文
字だけ拡張した新規の文字部分列を辞書101に登録す
る増分分解型の符号化方法を適用しており、直前に符号
化された直前文字列の最終文字を先頭文字とする現文字
列に対応して検索手段104が辞書101から検索した
符号を出力し、符号化手段102は、各文字部分列を先
頭文字とこの先頭文字からの展開文字列として捉えて先
頭文字ごとに相異なる展開文字列にそれぞれ符号を与
え、登録手段103を介して辞書101に登録する構成
のデータ圧縮装置において、変数の入力に応じて所定の
演算を行い、演算結果をハッシュ値として出力するハッ
シュ演算手段111と、ハッシュ値と辞書101におけ
る登録番号とが入力され、ハッシュ値に対応する格納場
所に登録番号を格納するハッシュ表112とを備え、検
索手段104は、辞書101から得られた一致文字列に
対応する登録番号と一致文字列につなげようとする拡張
文字および直前文字列の最終文字の少なくとも一方とを
変数としてハッシュ演算手段111に入力し、得られた
ハッシュ値に基づいてハッシュ表112を参照して、一
致文字列を拡張文字で拡張した文字列に対応する辞書1
01における登録番号を得て符号化手段102に送出す
る構成であり、登録手段103は、新規の文字部分列を
該当する一致文字列の辞書101における登録番号と新
規の文字部分列の展開文字列に与えられた符号との組み
合わせとして辞書101に登録するとともに、登録番号
と一致文字列に付加された拡張文字および直前文字列の
最終文字の少なくとも一方とを変数としてハッシュ演算
手段111に送出し、得られたハッシュ値と登録番号と
をハッシュ表112に送出する構成であることを特徴と
する。
【0034】請求項3の発明は、請求項2に記載のデー
タ圧縮装置において、ハッシュ演算手段111が、入力
される変数の排他的論理和演算を行ってハッシュ値を得
る構成であることを特徴とする。
【0035】図2は、請求項4〜請求項6の発明の原理
構成を示す。請求項4の発明は、辞書に登録された文字
部分列から入力文字列に最大長一致る一致文字列を検索
し、この一致文字列の複製として入力文字列の該当する
部分を符号化するとともに、一致文字列を1文字だけ拡
張した新規の文字部分列を辞書に登録する増分分解型の
符号化方法を適用しており、直前に符号化された直前文
字列の最終文字を先頭文字とする現文字列に対応する符
号を辞書から検索して出力し、各文字部分列を先頭文字
とこの先頭文字からの展開文字列として捉え、先頭文字
ごとに相異なる展開文字列にそれぞれ符号を与えて辞書
に登録するデータ圧縮方法で得られた符号から元の文字
列を復元するデータ復元方法において、辞書を検索する
際に、展開文字列に対応する符号と直前文字列の最終文
字とを所定のハッシュ関数に入力し、得られたハッシュ
値に基づいてハッシュ表を参照することにより、該当す
る文字列を辞書から検索し、新規の文字部分列を辞書に
登録する際に、新規の文字部分列の展開文字列に与えら
れた符号と新規の文字列に対応する直前文字列の最終文
字とをハッシュ関数に入力し、得られたハッシュ値に応
じて、新規の文字部分列の辞書における登録番号をハッ
シュ表に登録することを特徴とする。
【0036】請求項5の発明は、辞書101に登録され
た文字部分列から入力文字列に最大長一致する一致文字
列を検索し、この一致文字列の複製として入力文字列の
該当する部分を符号化するとともに、一致文字列を1文
字だけ拡張した新規の文字部分列を辞書101に登録す
る増分分解型の符号化方法を適用しており、直前に符号
化された直前文字列の最終文字を先頭文字とする現文字
列に対応する符号を辞書101から検索して出力し、各
文字部分列を先頭文字とこの先頭文字からの展開文字列
として捉え、先頭文字ごとに相異なる展開文字列にそれ
ぞれ符号を与えて辞書101に登録するデータ圧縮装置
で得られた符号から元の文字列を復元するデータ復元装
置において、変数の入力に応じて所定の演算を行い、演
算結果をハッシュ値として出力するハッシュ演算手段1
11と、ハッシュ値と辞書101における登録番号とが
入力され、ハッシュ値に対応する格納場所に登録番号を
格納するハッシュ表112と、検索しようとする文字列
の展開文字列を示す符号と直前文字列の最終文字とを変
数としてハッシュ演算手段111に入力し、得られたハ
ッシュ値に基づいてハッシュ表112を参照することに
より、該当する文字列に対応する辞書101における登
録番号を得る検索手段122と、検索手段122で得ら
れた登録番号に基づいて辞書101を参照し、該当する
文字列を復元する復号手段123と、新規の文字部分列
に含まれる一致文字列の辞書101における登録位置を
示す登録番号と一致文字列に付加された拡張文字とを辞
書101に登録するとともに、新規の文字部分列の展開
文字列に与えられた符号と新規の文字列に対応する直前
文字列の最終文字とを変数としてハッシュ演算手段11
1に送出し、得られたハッシュ値と新規の文字部分列の
辞書101における登録番号とをハッシュ表112に送
出する登録手段121とを備えたことを特徴とする。
【0037】請求項6の発明は、請求項5に記載のデー
タ復元装置において、ハッシュ演算手段111が、入力
される変数の排他的論理和演算を行ってハッシュ値を得
る構成であることを特徴とする。
【0038】
【作用】請求項1の発明は、各文字部分列に含まれる
一致文字列に対応する登録番号と拡張文字および直前文
字列の最終文字の少なくとも一方とに対応して、各文字
部分列の辞書における登録番号をハッシュ表に登録する
ので、このハッシュ表を参照することにより、新しく符
号化する文字列に最長一致する文字部分列を高速に検索
することが可能である。また、ハッシュ表と辞書とに、
先頭文字に対応する個別の辞書の木と辞書に対応する全
体辞書の木との関係を示す情報を登録しているので、
頭文字ごとの膨大な数の個別辞書を1つのハッシュ表で
置き換えて、このハッシュ表により、先頭文字ごとの
別辞書と同等の機能を実現することができる。したがっ
て、直前文字列の最終文字で示される先頭文字とこの先
頭文字に続く展開文字列に付された符号との組み合わせ
で各文字部分列を表す符号化方式を少ない記憶容量で実
現することができる。
【0039】請求項2の発明は、登録手段103がハッ
シュ演算手段111を利用して得られるハッシュ値に応
じて、該当する文字部分列の辞書101における登録番
号をハッシュ表112に登録するので、検索手段104
が、ハッシュ演算手段111から得られるハッシュ値に
応じてこのハッシュ表112を参照することにより、符
号化しようとする文字列に最長一致する文字部分列を高
速に検索し、符号化手段102に送出することが可能で
ある。また、ハッシュ表と辞書とに、先頭文字に対応す
る個別の辞書の木と辞書に対応する全体辞書の木との関
係を示す情報を登録しているので、先頭文字ごと多数
の個別辞書を設けた場合と同等の機能を1つのハッシュ
表112で実現し、直前文字列の最終文字で示される先
頭文字とこの先頭文字に続く展開文字列に付された符号
との組み合わせで各文字部分列を表す符号化方式を少な
い記憶容量で実現したデータ圧縮装置を提供することが
できる。
【0040】請求項3の発明は、ハッシュ演算手段11
1が排他的論理和演算を行うことにより、ハッシュ値の
衝突確率を低減することができるので、ハッシュ値の衝
突に伴う処理時間の遅れを低減し、データ圧縮処理を高
速化することができる。
【0041】請求項4の発明は、各文字部分列に対応す
る直前文字列の最終文字で示される先頭文字とこの先頭
文字に連なる展開文字列に付された符号とに対応して、
各文字部分列の辞書における登録番号をハッシュ表に登
録するので、このハッシュ表を参照することにより、入
力符号に対応する文字部分列の全体辞書における登録番
号を容易に検索することができる。また、ハッシュ表1
12と辞書101とに、先頭文字に対応する個別の辞書
の木と辞書に対応する全体辞書の木との関係を示す情報
を登録しているので、先頭文字ごとの個別辞書を1つの
ハッシュ表で置き換えて、このハッシュ表により、先頭
文字ごとの個別辞書と同等の機能を実現することができ
る。したがって、直前文字列の最終文字で示される先頭
文字とこの先頭文字に続く展開文字列に付された符号と
の組み合わせで各文字部分列を表す符号化方式で得られ
る符号列を少ない記憶容量を使って復元することができ
る。
【0042】請求項5の発明は、登録手段121がハッ
シュ演算手段111を利用して得られるハッシュ値に応
じて、該当する文字部分列の辞書101における登録番
号をハッシュ表112に登録するので、検索手段122
が、ハッシュ演算手段111から得られるハッシュ値に
応じてこのハッシュ表112を参照することにより、入
力符号に対応する文字部分列を容易に検索することが可
能である。また、ハッシュ表112と辞書101とに、
先頭文字に対応する個別の辞書の木と辞書に対応する全
体辞書の木との関係を示す情報を登録しているので、
頭文字ごと多数の個別辞書を設けた場合と同等の機能
を1つのハッシュ表112で実現し、直前文字列の最終
文字で示される先頭文字とこの先頭文字に続く展開文字
列に付された符号との組み合わせで各文字部分列を表す
符号化方式で得られる符号を少ない記憶容量を利用して
復元するデータ復元装置を実現することができる。
【0043】請求項6の発明は、ハッシュ演算手段11
1が排他的論理和演算を行うことにより、ハッシュ値の
衝突確率を低減することができるので、ハッシュ値の衝
突に伴う処理時間の遅れを低減し、データ復元処理を高
速化することができる。
【0044】
【実施例】以下、図面に基づいて本発明の実施例につい
て詳細に説明する。図3に、請求項2のデータ圧縮装置
の実施例構成図を示す。
【0045】図3において、データ圧縮装置は、文字列
入力部201を介して文字列の入力を受けて、メモリ2
10内に設けられた辞書(後述する)を参照しながら、
圧縮処理部220が入力文字列を符号化し、符号出力部
202を介して磁気テープ装置や磁気ディスク装置など
の外部記憶装置203に記録する構成となっている。
【0046】上述したメモリ210には、辞書101に
相当する全体辞書211と、後述するハッシュ関数で得
られる値に対応する全体辞書211のエントリに関する
情報を登録するハッシュ表112とが設けられている。
このハッシュ表112に、全体辞書211のサイズより
少し大きい素数で表される大きさを割り当てておくと便
利である。上述した全体辞書211は、従来のLZW 方式
の辞書に対応するものであるが、本発明においては、文
字列を構成するp個の文字それぞれに対応する符号を初
期値として登録しておく必要はない。
【0047】また、圧縮処理部220は、主制御部22
1からの指示に応じて、ハッシュ演算部222がハッシ
ュ値を算出して検索処理部223と登録処理部224と
に送出し、このハッシュ値に基づいて、検索処理部22
3および登録処理部224が最大一致文字部分列の検索
処理および新たな文字部分列の登録処理を行う構成とな
っている。また、検索処理部223による検索結果に応
じて、主制御部221が符号生成部225に符号の出力
と新たな符号の生成処理を指示し、生成された符号を登
録処理部224が全体辞書211とハッシュ表213と
にそれぞれ登録する構成となっている。すなわち、ハッ
シュ演算部222,登録処理部224,検索処理部22
3,符号生成部225の各部は、それぞれハッシュ演算
手段111,登録手段103,検索手段104,符号化
手段102のそれぞれに相当している。
【0048】ここで、上述したハッシュ演算部222
は、全体辞書211から得られた一致文字列の登録番号
ωとこの一致文字列を1文字拡張するための拡張文字K
と注目している文字列の先頭文字を示す直前文字列の最
終文字pKとを用いたハッシュ関数でハッシュ値を算出す
ればよい。例えば請求項3の発明を適用し、下記の式
に示すように、全体辞書211の最大ビット数Dから8
を引いた数だけ拡張文字Kを左にシフトし、得られた値
と登録番号ωとの排他的論理和を求め、更に、この演算
結果と最終文字pKとの排他的論理和演算を行って、この
結果をハッシュ値(index)として出力すればよい。
【0049】
【数1】
【0050】また、下記の式に示すように、ハッシュ
関数を登録番号ωと拡張文字Kとの関数としてもよい。
【0051】
【数2】
【0052】以下、請求項2のデータ圧縮装置による符
号化動作について説明する。図4に、請求項2のデータ
圧縮装置の文字列圧縮動作を表す流れ図を示す。また、
図5に、ハッシュ値を用いた検索処理および登録処理を
説明する図を示す。但し、図5においては、説明を簡単
とするために、入力文字列が3つの文字a,b,cの組
み合わせで構成されている場合について示した。この場
合は、全体辞書211への登録開始位置は登録番号4で
示される。
【0053】符号化処理を開始する前に、主制御部22
1は、符号化処理に用いる各変数に初期値を与える。例
えば、直前文字列の最終文字pKに初期値0を設定し、直
前文字部分列のコードを示す変数ωに初期値0を設定す
る。また、辞書の木の深さを示す変数DPに初期値0を設
定するとともに、各文字に対応する辞書の木への登録個
数を示すp個の変数m1 〜mp および文字がない状態を
示す空文字“0”につながる辞書の木への登録数を示す
変数m0 に初期値0を設定する。また、全体辞書211
への登録位置を示す登録番号nに初期値p+1を設定す
る。
【0054】このようにして初期設定が終了した後に、
主制御部221は文字列入力部201に文字の入力を指
示し、これに応じて、文字列入力部201は、入力され
た文字列の先頭から順次に1文字ずつ入力し(ステップ
301)、主制御部221は入力された1文字を拡張文
字Kとして保持する。
【0055】主制御部221は、拡張文字Kと変数ωと
最終文字pKとをハッシュ演算部222に送出し、これに
応じて、ハッシュ演算部222は上述したハッシュ関数
を用いてハッシュ値を算出して、検索処理部223と登
録処理部224とに送出する(ステップ302)。
【0056】検索処理部223は、入力されたハッシュ
値に基づいてハッシュ表112を参照し、対応するエン
トリが既に登録されているか否かを判定し(ステップ3
03)、判定結果を主制御部221に返す。
【0057】例えば、図5(a) において、入力文字列の
最初の文字aがステップ301で入力された場合は、最
終文字pKの初期値0と一致文字列ωの初期値0と拡張文
字Kの初期値aとからハッシュ値h1が得られ、このハッ
シュ値h1に基づいてハッシュ表112を参照することに
より、該当する文字列が未登録であることが分かる。
【0058】したがって、この場合は、ステップ303
の否定判定となり、これに応じて、主制御部221はス
テップ306に進んで、変数DPの値に基づいて、拡張文
字Kが各個別の辞書の木の根に直接につながっている否
かを判定する。
【0059】上述した入力文字列の最初の文字aの場合
は、変数DPの値が初期値0から変化していないので、初
期値0に対応する辞書の木の根に直接つながる文字であ
ると判定され、ステップ306の肯定判定となる。
【0060】この場合は、主制御部221は、最終文字
pKと拡張文字Kとを符号生成部225に送出し、最終文
字pKに対応する辞書の木の根に直接つながる文字に対応
する符号モード(以下モード1と称する)で拡張文字K
(文字a)を符号化する旨を符号生成部225に指示す
る。これに応じて、符号生成部225により、モード1
の符号である旨を示す符号と拡張文字Kとの組み合わせ
(図5(a) において、符号aLとして示した)が符号と
して生成され(ステップ307)、符号出力部202を
介して外部記憶装置203に記録される。
【0061】また、このとき、符号生成部225は、該
当する辞書の木への登録数を示す変数mi の値に基づい
て、その辞書の木における新しい符号を生成し、この符
号および該当する辞書の木を示す情報を拡張文字Kとと
もに登録処理部224に送出する。また、主制御部22
1は、そのときの一致文字列ωを登録処理部224に送
出し、これに応じて、登録処理部224は、全体辞書2
11の登録位置nに一致文字列ωと該当する辞書の木に
おける符号との対を登録する。また、ハッシュ演算部2
22から得られたハッシュ値に対応して、上述した全体
辞書211の登録位置nと拡張文字kとの対をハッシュ
表112に登録する(ステップ308)。
【0062】例えば、入力文字列の最初の文字aを符号
化した際には、符号生成部225により、最終文字Pkの
初期値0に対応する辞書の木の最初の葉として、この辞
書の木における個別番号0が与えられ、図5(b) に示す
ように、全体辞書211の登録位置4に文字0を根とす
る0番目の符号を示す符号(0)0が、一致文字列ωの
初期値0とともに登録される。ここで、図5(b) におい
て、全体辞書211に登録された符号の括弧内の数字は
辞書の木の根を示し、閉じ括弧に続く数字がその辞書の
木における個別番号を示している。また、一致文字列ω
の初期値0と拡張文字aとから得られるハッシュ値h1に
対応して、全体辞書211の登録位置を示す番号0と拡
張文字Kとがハッシュ表112に登録される(図5(c)
参照)。
【0063】その後、主制御部221は、該当する辞書
の木に対応する変数mi の値および全体辞書211の登
録位置nをインクリメントし、拡張文字Kを直前文字列
の最終文字pKとするとともに、この拡張文字Kを一致文
字列ωとする(ステップ309)。このようにして、変
数を更新した後に、主制御部221は、まだ読み込んで
いない文字があるか否かを判定し(ステップ305)、
肯定判定の場合は、ステップ301に戻って新しい文字
を入力する。
【0064】図5(a) に示した例においては、上述した
文字aに続く文字bおよび文字aは、上述した先頭の文
字aと同様にして符号化される。2番目の文字bの入力
に応じて、ステップ302において、拡張文字K(b)
と変数ω(a)と最終文字pK(a)とから、ハッシュ演
算部222によりハッシュ値h2が得られ、ステップ30
3からステップ306に進む。更に、ステップ306の
肯定判定となって、上述した最初の文字aと同様にし
て、ステップ307〜ステップ309を実行する。これ
により、2番目の文字bに対応して符号bLが出力さ
れ、全体辞書211に文字aを根とする辞書の木の番号
0の葉を示す符号(a)0が登録番号5に登録される
(図5(b) 参照)。また、ハッシュ値h2に対応して、全
体辞書211における登録番号5と拡張文字bとの対が
ハッシュ表112に登録される(図5(c) 参照)。
【0065】3番目の文字aも同様にして、文字bに直
接つながる最初の文字としてモード1で符号化され、符
号aLが出力され、全体辞書211に文字bを根とする
辞書の木の番号0の葉を示す符号(b)0が登録番号6
に登録される(図5(b) 参照)。また、拡張文字K
(a)と変数ω(b)と最終文字pK(b)とから得られ
るハッシュ値h3に対応して、全体辞書211における登
録番号6と拡張文字aとがハッシュ表112に登録され
る(図5(c) 参照)。ところで、図5(a) においては、
4番目の文字bの入力に応じてハッシュ値h2が得られ、
このハッシュ値h2でハッシュ表112を参照することに
より、該当する文字部分列が全体辞書211に登録され
ていることが分かる。つまり、そのときの変数ωで示さ
れる一致文字列(a)に拡張文字K(b)をつなげた文
字列(ab)に対応する全体辞書211の登録番号
(5)を得ることができる。
【0066】この場合は、ステップ303における肯定
判定となり、ハッシュ表112から得られた全体辞書2
11の登録番号を変数ωに設定し、拡張文字Kを文字列
の最終文字K1として保持し、また、辞書の木の深さを示
す変数DPをインクリメントする(ステップ304)。次
に、ステップ305において次の文字の有無を判定し、
肯定判定の場合は、ステップ301に戻って新しい文字
を入力する。
【0067】図5(a) の例においては、新しい文字とし
て5番目の文字cが入力され、これに応じて、ステップ
302において再びハッシュ値h4が算出される。この場
合は、ハッシュ表112の該当箇所は未登録であるの
で、ステップ303の否定判定となり、辞書の木の深さ
を示す変数DPがインクリメントされているので、ステッ
プ306の否定判定となって、ステップ310に進む。
【0068】この場合に、主制御部221は、一致文字
列を示す変数ωを符号生成部225に送出して、個別の
辞書の木での符号化処理を指示する。これに応じて、符
号生成部225は、全体辞書211から変数ωに相当す
る登録番号に登録された個別番号を検索し、この個別番
号を符号として符号出力部202を介して出力する(ス
テップ310)。
【0069】また、上述したステップ308と同様にし
て、変数ωと拡張文字Kとで示される文字列に、該当す
る辞書の木における個別番号を与え、全体辞書211お
よびハッシュ表112への登録処理を行う(ステップ3
11)。
【0070】このようにして、最後に入力された拡張文
字Kの前までの文字列が全体辞書211に登録済の文字
部分列の複製として符号化されて出力され、この拡張文
字Kを含んだ文字部分列が全体辞書211およびハッシ
ュ表112に登録される。
【0071】図5に示した例においては、変数ω(5)
の入力に応じて、ステップ310において、符号生成部
225により、全体辞書211から文字aを根とする辞
書の木の最初の葉を示す個別番号0が検索され、この個
別番号0が4番目の文字bの符号として出力される。ま
た、ステップ311において、登録番号1の文字列に文
字cをつなげた文字列が新しい文字部分列として分解さ
れ、この文字部分列の登録処理が行われる。この場合
は、2番目の文字bを符号化した際に、文字aを根とす
る辞書の木に対応する変数ma が1度だけインクリメン
トされているので、符号生成部225は文字aを根とす
る辞書の木の個別番号1の葉であることを示す符号
(a)1を登録処理部224に送出する。これに応じ
て、登録処理部224は、登録番号7に対応して、一致
文字列を示す登録番号5と符号(a)1を全体辞書21
1に登録し、ハッシュ値h4に対応して、全体辞書211
への登録番号7と拡張文字cとをハッシュ表112に登
録する(図5(a),(b),(c) 参照)。
【0072】上述した登録処理の終了後に、主制御部2
21は、該当する辞書の木に対応する変数mi と全体辞
書の登録位置nとをインクリメントし、辞書の木の深さ
を示す変数DPに再び初期値0を設定する。また、ステッ
プ304で文字列の最終文字K1として保持された文字を
最終文字pKとし、この最終文字K1を一致文字列を示す変
数ωに設定し(ステップ312)、この変数更新処理の
後に、再びステップ302に戻って、最後に入力された
拡張文字Kの符号化処理を行えばよい。
【0073】図5(a) の例においては、5番目の文字c
は、上述した1〜3番目の文字a,b,aと同様にして
モード1で符号化され、符号cLが出力される。また、
文字bに対応する辞書の木には既に1個の文字部分列が
登録されているので、符号生成部225により符号
(b)1が与えられ、全体辞書211の登録番号8に登
録される(図5(b) 参照)。また、拡張文字K(c)と
変数ω(b)と最終文字pK(b)とから得られるハッシ
ュ値h5に対応して、全体辞書211における登録番号8
と拡張文字cとがハッシュ表112に登録される(図5
(c) 参照)。
【0074】このようにして符号化処理を進めていき、
ステップ305において、次に入力される文字が無いと
されたときに、ステップ305の否定判定としてステッ
プ313に進み、そのときの変数ωをステップ310と
同様にして符号化して出力し、圧縮処理を終了すればよ
い。
【0075】このようにして、ハッシュ表112を設け
て、全体辞書211における登録番号を登録していくこ
とにより、各文字に対応する個別辞書を設けた場合と同
様に、入力文字列を直前の一致文字列の最終文字との従
属関係を考慮しながら符号化することができる。
【0076】このハッシュ表112は、上述したよう
に、全体辞書211のサイズよりも少し大きめとする必
要があるが、各文字に対応する個別辞書の容量の総和に
比べれば、ハッシュ表112は遙に小さい記憶容量で実
現できる。したがって、小規模のシステムにおいても、
十分に実現可能である。
【0077】また、本発明を適用した場合には、ハッシ
ュ値に基づいてハッシュ表112を参照することによ
り、該当する文字列が全体辞書211に既に登録されて
いるか否かを判定し、該当する登録番号を検索すること
ができる。したがって、辞書の検索処理を高速化するこ
とが可能であり、文字列の圧縮処理の高速化を図ること
ができる。
【0078】なお、ハッシュ値が衝突した場合には、ハ
ッシュ値に1を加算した値を新しいハッシュ値とすれば
よい。また、最初に得られたハッシュ値から辞書サイズ
Dを差し引いた値を新たなハッシュ値として登録処理を
行ってもよい。
【0079】次に、本発明を適用したデータ復元装置に
ついて説明する。図6に、請求項5のデータ復元装置の
実施例構成図を示す。なお、図6において、図3に示し
た各部に対応するものについては、同一の符号を付して
示す。
【0080】図6において、データ復元装置は、符号入
力部401からの入力符号を受けて、復元処理部410
がメモリ210内に設けられた全体辞書211およびハ
ッシュ表112を参照しながら文字列を復号し、得られ
た文字列を文字列出力部402を介して外部記憶装置2
03に記録する構成となっている。
【0081】また、図6において、復元処理部410
は、図3に示した圧縮処理部220の符号生成部225
に代えて、復号手段123に相当する復号処理部411
を備えた構成となっており、主制御部221からの指示
に応じて、この復号処理部411が符号から文字列を復
号し、文字列出力部402を介して出力するとともに、
得られた文字列を拡張した新しい文字列を登録手段12
1に相当する登録処理部224が登録する構成となって
いる。また、この場合は、検索処理部223は検索手段
122の機能を果たす構成となっている。
【0082】また、この場合は、ハッシュ演算部222
は、下記の式に示すハッシュ関数を用いて、現在の一
致文字列ωと直前文字列の最終文字pKとに基づいたハッ
シュ値を求めればよい。
【0083】
【数3】
【0084】図7に、本発明のデータ復元装置による文
字列復元動作を表す流れ図を示す。また、図8に、文字
列復元動作を説明する図を示す。なお、図8は、説明を
簡単とするために、文字列が3つの文字a,b,cとか
ら構成される場合について示した。
【0085】文字列の復元処理を開始する前に、主制御
部221は、復元処理に用いる各変数に初期値を与え
る。例えば、直前文字列の最終文字pKおよびその前の文
字列の最終文字K1に初期値0を設定し、一致文字列の個
別の辞書の木における符号を示す変数ωに初期値0を設
定する。また、直前文字列を復号した際に得られた一致
文字列のコードを示す変数ωOLD に初期値0を設定す
る。また、辞書の木の深さを示す変数DPに初期値0を設
定するとともに、各文字に対応する辞書の木への登録個
数を示すp個の変数m1 〜mp および文字がない状態を
示す空文字“0”につながる辞書の木への登録数を示す
変数m0 に初期値0を設定する。また、全体辞書211
への登録開始位置を示す登録番号nに初期値p+1を設
定する。
【0086】以下、図7,図8を参照しながら、文字列
復元動作について説明する。まず、主制御部221は符
号入力部401に対して符号の入力を指示し、これに応
じて、1つの符号が入力され(ステップ501)、主制
御部221は、入力符号がモード1の符号であるか否か
を判定する(ステップ502)。
【0087】ステップ502における否定判定の場合
は、主制御部221は入力符号を変数ωに設定し、この
変数ωとそのときの最終文字pKとをハッシュ演算部22
2に送出して、ステップ503に進む。
【0088】このステップ503において、ハッシュ演
算部222は、入力された変数ωおよび最終文字pKとに
基づいてハッシュ値を算出し、検索処理部223に送出
する。
【0089】検索処理部223は、このハッシュ値に基
づいてハッシュ表112を参照し、ハッシュ値に対応す
る格納場所に該当する文字部分列に対する全体辞書21
1における登録番号が格納されているか否かによって、
入力された符号が登録済であるか否かを判定する(ステ
ップ504)。
【0090】このステップ504における否定判定の場
合は、図10に示した従来のLZW 方式の復元処理の流れ
図のステップ710と同様にして例外処理を行い(ステ
ップ505)、その後、ステップ506に進めばよい。
【0091】一方、ステップ504における肯定判定の
場合は、検索処理部223により、ハッシュ値に対応す
る全体辞書221における登録番号が得られ、主制御部
221は、この登録番号の値で変数ωを置き換えて復号
処理部411に送出し、この変数ωに相当する文字部分
列の復号処理を指示する。
【0092】これに応じて、復号処理部411は、図1
0に示した流れ図のステップ704〜706と同様の復
号処理を行い、全体辞書211における登録番号ωに対
応する文字部分列を復元して(ステップ506)、文字
列出力部401を介して外部記憶装置203に出力す
る。
【0093】次に、主制御部221は、直前文字列が既
に登録されている否かを判定し(ステップ507)、否
定判定の場合は、変数ωOLD とステップ506で得られ
た復元文字列の先頭文字Kとを登録処理部224に送出
する。これに応じて、登録処理部224により、全体辞
書211の登録番号nに変数ωOLD と先頭文字Kとの組
み合わせで示される文字部分列が新しく登録される(ス
テップ508)。すなわち、変数ωOLD で示される文字
列に先頭文字Kを拡張文字としてつなげた文字部分列
が、直前文字列として登録される。
【0094】また、このとき、主制御部221は、2つ
前の文字部分列の最終文字pK1 とこの最終文字pK1 に対
応する辞書の木への登録数を示す変数mpK1 の値とをハ
ッシュ演算部222に送出し、これに応じて、ハッシュ
演算部222は該当するハッシュ値を算出し(ステップ
509)、最終文字pK1 と変数mpK1 の値と全体辞書2
11の登録番号nとともに登録処理部224に送出す
る。
【0095】これに応じて、登録処理部224は、得ら
れたハッシュ値で示されるハッシュ表112の格納場所
に、登録番号nと最終文字pK1 と変数mpK1 の値との組
み合わせを登録すればよい(ステップ510)。
【0096】ここで、2つ前の文字部分列の最終文字pK
1 は、ステップ508で登録した文字部分列の先頭文字
であり、変数mpK1 は、この最終文字pK1 を根とする辞
書の木における個別番号を示しているから、上述したよ
うにして、直前の文字部分列の最終文字との従属関係を
考慮した符号を辞書に登録して、全体辞書211ととも
に個別の辞書の木を復元していくことができる。
【0097】その後、主制御部221は全体辞書211
への登録番号nをインクリメントし(ステップ51
1)、ステップ512において各変数の更新処理を行
う。すなわち、主制御部221は、直前文字列の最終文
字pKを2つ前の文字部分列の最終文字pK1 に設定し、ス
テップ506で復号された文字列の最終文字を直前文字
列の最終文字pKに設定し、復号された文字列の先頭文字
を直前文字部分列の先頭文字K1に設定する。また、ステ
ップ504においてハッシュ表から得られた登録番号ω
を直前文字部分列の登録番号ωOLD に設定し、これらの
更新処理の終了後に、ステップ513に進んで、次に入
力される符号の有無を判定し、肯定判定の場合は、ステ
ップ501に戻って新しい符号を入力する。
【0098】一方、ステップ507における否定判定の
場合は、そのままステップ512に進んで変数の更新を
行い、ステップ513へ進めばよい。また、上述したス
テップ501において入力された符号がモード1である
場合は、ステップ502における肯定判定となり、ステ
ップ514に進み、入力符号に含まれている文字を示す
ビットパターンをそのまま文字Kとして出力する。
【0099】次に、主制御部221は直前文字列が登録
済であるか否かを判定し(ステップ515)、否定判定
の場合は、上述したステップ508〜511と同様にし
て、直前文字列の登録処理を行い(ステップ516)、
更に、ステップ514で出力した文字を含む現文字部分
列の登録処理を行う(ステップ517)。
【0100】すなわち、主制御部221は、直前文字列
の最終文字pKと上述した文字Kとを登録処理部224に
送出し、これに応じて、登録処理部224と、全体辞書
211の登録番号nに最終文字pKに文字Kをつなげた文
字部分列を新しく登録する。また、このとき、主制御部
221は、最終文字pKとこの最終文字pKに対応する辞書
の木への登録数を示す変数mpKの値とをハッシュ演算部
222に送出し、これに応じて、ハッシュ演算部222
が算出したハッシュ値に応じて、登録処理部224によ
り、登録番号nと最終文字pKと変数mpKの値との組み合
わせがハッシュ表112に登録される。
【0101】このようにして、モード1の符号が入力さ
れた場合には、この符号の復号処理を行った時点で、復
号した文字部分列の辞書への登録が行われる。したがっ
て、モード1の符号の次に入力された符号を復号した際
には、既に直前文字列が登録されていることになる。し
たがって、上述したステップ507およびステップ51
5においては、直前の符号がモード1であったか否かを
判定すればよい。
【0102】また、ステップ515における肯定判定の
場合は、そのままステップ517に進んで、上述した現
文字列の登録処理を行えばよい。その後、主制御部22
1は、全体辞書211の登録番号nをインクリメント
し、文字Kを最終文字pKとし、さらに、この最終文字pK
に対応する全体辞書211における登録番号を直前文字
列を示す変数ωOLD とし(ステップ518)、これらの
変数の更新処理の終了後に、ステップ513に進めばよ
い。
【0103】例えば、図8(a) において、最初の3つの
符号aL,bL,aLはモード1の符号であるから、上
述したステップ502の肯定判定となり、それぞれ文字
a,文字b,文字aが出力され、全体辞書211の登録
番号4〜6に対応して(0)a,(a)b,(b)aが
それぞれ登録される(図8(b) 参照)。また、このと
き、新しく登録された文字列に対応して、ハッシュ値h
1,h2,h3が算出され、ハッシュ表112にそれぞれ該
当する値が登録される(図8(c) 参照)。
【0104】一方、4番目の符号0はモード1の符号で
はないから、ステップ502の否定判定となり、この符
号0とそのときの最終文字pK(この場合は文字a)に基
づいてハッシュ表112を参照することにより、該当す
る文字部分列を示す全体辞書211の登録番号5が得ら
れ、文字列abが復元される(図8(a),(b),(c) 参
照)。
【0105】この場合は、3番目の符号cLの入力に応
じて、直前文字列が既に登録されているから、そのまま
変数の更新処理を行い、次の符号の入力処理に進み、5
番目の符号cLから文字cを復号した後に、登録番号5
の文字部分列をこの文字cで拡張した新しい文字列ab
cを直前文字列として全体辞書211の登録番号7に登
録する(図8(b) 参照)。この文字列は、文字aを根と
する辞書の木における個別番号1の葉であるから、該当
するハッシュ値h4に応じて、登録番号7と先頭文字aと
個別番号1とをハッシュ表112に登録する。更に、こ
の場合は、現文字列として文字列bcが全体辞書211
の登録番号8に登録され、ハッシュ値h5に対応してハッ
シュ表に文字bを根とする登録番号1の文字列を示す情
報が登録される(図8(c) 参照)。
【0106】このようにして、上述したステップ501
〜ステップ513を繰り返していき、次の入力符号がな
いとされたときに、ステップ513の否定判定として、
文字列の復元処理を終了すればよい。
【0107】上述したように、各文字に対応する個別辞
書を設ける代わりにハッシュ表112を設け、全体辞書
211の復元処理と並行してこのハッシュ表112を復
元することにより、直前文字列の最終文字との従属関係
を考慮しながら符号化して得られた符号列から元の文字
列を復元することができる。
【0108】この場合は、個別辞書を各文字に対応して
設ける場合に比べて、少量の記憶容量で実現することが
可能であるから、小規模のシステムでも十分に実現する
ことができる。また、注目している文字列の個別の辞書
の木における登録番号ωと直前文字列の最終文字pKとか
ら得られるハッシュ値に基づいて、ハッシュ表112を
検索することにより、該当する文字列が全体辞書211
に登録されているか否かおよびその登録番号を容易に知
ることができるから、個別辞書を用いた場合と同様に、
検索処理および登録処理を高速に実行することができ
る。
【0109】
【発明の効果】以上説明したように請求項1のデータ圧
縮方法は、新規の文字部分列を辞書に登録するとともに
ハッシュ表にも登録することにより、1つのハッシュ表
によって、各文字に対応する個別辞書と同等の機能を果
たすことができる。これにより、直前文字列の最終文字
で示される先頭文字とこの先頭文字に続く展開文字列に
付された符号との組み合わせで各文字部分列を表す符号
化方式を少ない記憶容量で実現することが可能となり、
小規模のシステムに適用することができる。
【0110】また、請求項2のデータ圧縮装置は、ハッ
シュ演算手段で得られたハッシュ値に基づいて検索手段
および登録手段がハッシュ表を参照しながら検索処理お
よび登録処理を行う構成とすることにより、請求項1の
データ圧縮方法を実現することができる。更に、排他的
論理和を利用したハッシュ関数を用いることにより、ハ
ッシュ値の衝突に伴う処理に要する時間を低減し、処理
の高速化を図ることができる。
【0111】また、請求項4のデータ復元方法は、辞書
を復元するとともにハッシュ表を復元することにより、
1つのハッシュ表によって、各文字に対応する個別辞書
と同等の機能を果たすことができる。これにより、直前
文字列の最終文字で示される先頭文字とこの先頭文字に
続く展開文字列に付された符号との組み合わせで各文字
部分列を表す符号化方式で得られる符号列を少ない記憶
容量を用いて復元することが可能となり、小規模のシス
テムに適用することができる。
【0112】また、請求項5のデータ圧縮装置は、ハッ
シュ演算手段で得られたハッシュ値に基づいて検索手段
および登録手段がハッシュ表を参照しながら検索処理お
よび登録処理を行う構成とすることにより、請求項4の
データ復元方法を実現することができる。更に、排他的
論理和を利用したハッシュ関数を用いることにより、ハ
ッシュ値の衝突に伴う処理に要する時間を低減し、処理
の高速化を図ることができる。
【図面の簡単な説明】
【図1】請求項1〜請求項3の発明の原理を示す図であ
る。
【図2】請求項4〜請求項6の発明の原理を示す図であ
る。
【図3】請求項2のデータ圧縮装置の実施例構成図であ
る。
【図4】文字列圧縮動作を表す流れ図である。
【図5】ハッシュ値を用いた検索処理および登録処理を
説明する図である。
【図6】請求項5のデータ復元装置の実施例構成図であ
る。
【図7】文字列復元動作を表す流れ図である。
【図8】文字列復元動作を説明する図である。
【図9】従来のLZW 方式による文字列圧縮動作を表す流
れ図である。
【図10】従来のLZW 方式による文字列復元動作を表す
流れ図である。
【符号の説明】
101 辞書 102 符号化手段 103,121 登録手段 104,122 検索手段 111 ハッシュ演算手段 112 ハッシュ表 123 復号手段 201 文字列入力部 202 符号出力部 203 外部記憶装置 210 メモリ 211 全体辞書 220 圧縮処理部 221 主制御部 222 ハッシュ演算部 223 検索処理部 224 登録処理部 225 符号生成部 401 符号入力部 402 文字列出力部 410 復元処理部 411 復号処理部
フロントページの続き (56)参考文献 特開 昭60−116228(JP,A) 特開 平4−95161(JP,A) 特開 平4−96174(JP,A) 特開 平4−96868(JP,A) 特開 平5−250137(JP,A) 特開 平5−252049(JP,A) 特開 昭63−136223(JP,A) 特開 平4−155578(JP,A) 特開 平5−128003(JP,A) 特開 平4−156110(JP,A) 特開 平4−156111(JP,A) 特開 平5−341953(JP,A) 特開 平6−83575(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 5/00 G06F 17/30 H03M 7/30

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】 辞書に登録された文字部分列から入力文
    字列に最大長一致する一致文字列を検索し、この一致文
    字列の複製として入力文字列の該当する部分を符号化す
    るとともに、前記一致文字列を1文字だけ拡張した新規
    の文字部分列を前記辞書に登録する増分分解型の符号化
    方法を適用しており、直前に符号化された直前文字列の
    最終文字を先頭文字とする現文字列に対応する符号を前
    記辞書から検索して出力し、各文字部分列を先頭文字と
    この先頭文字からの展開文字列として捉え、前記先頭文
    字ごとに相異なる展開文字列にそれぞれ前記先頭文字に
    対応する個別の辞書の木における符号を与えて前記辞書
    に登録するデータ圧縮方法において、 前記辞書を検索する際に、検索対象の文字列に最長一致
    する一致文字列に対応する登録番号と前記一致文字列に
    付加しようとする拡張文字および直前文字列の最終文字
    の少なくとも一方とを所定のハッシュ関数に入力し、得
    られたハッシュ値に基づいてハッシュ表を参照すること
    により、前記一致文字列を前記拡張文字で拡張した文字
    列を前記辞書から検索し、 新規の文字部分列に与えられた符号を前記辞書に登録す
    る際に、前記新規の文字部分列の先頭文字に対応する個別の辞書
    の木と前記辞書に対応する全体辞書の木との関係を示す
    情報を、前記符号とともに前記辞書に登録するととも
    に、 前記新規の文字部分列に最長一致する 一致文字列の前記
    辞書における登録位置を示す登録番号と前記一致文字列
    に付加された拡張文字および直前文字列の最終文字の少
    なくとも一方とを前記ハッシュ関数に入力し、得られた
    ハッシュ値に応じて、前記辞書において前記新規の文字
    部分列に与えられた符号が登録されている位置を示す登
    録番号と次に新たな展開文字列を登録すべき個別の辞書
    の木を示す情報とを前記ハッシュ表に登録することを特
    徴とするデータ圧縮方法。
  2. 【請求項2】 辞書(101)に登録された文字部分列
    から入力文字列に最大長一致する一致文字列を検索し、
    この一致文字列の複製として入力文字列の該当する部分
    を符号化するとともに、前記一致文字列を1文字だけ拡
    張した新規の文字部分列を前記辞書(101)に登録す
    る増分分解型の符号化方法を適用しており、直前に符号
    化された直前文字列の最終文字を先頭文字とする現文字
    列に対応して検索手段(104)が辞書(101)から
    検索した符号を出力し、符号化手段(102)は、各文
    字部分列を先頭文字とこの先頭文字からの展開文字列と
    して捉えて前記先頭文字ごとに相異なる展開文字列にそ
    れぞれ前記先頭文字に対応する個別の辞書の木における
    符号を与え、登録手段(103)を介して前記辞書(1
    01)に登録する構成のデータ圧縮装置において、 変数の入力に応じて所定の演算を行い、演算結果をハッ
    シュ値として出力するハッシュ演算手段(111)と、 前記ハッシュ値とともに前記辞書(101)における登
    録番号および前記辞書に対応する全体辞書の木と前記登
    録番号に登録された符号が属する個別の辞書の木との関
    係を示す情報が入力され、前記ハッシュ値に対応する格
    納場所に前記登録番号とともに前記全体辞書の木と前記
    個別の辞書の木との関係を示す情報を格納するハッシュ
    表(112)とを備え、 前記検索手段(104)は、前記辞書(101)から得
    られた一致文字列に対応する登録番号と前記一致文字列
    につなげようとする拡張文字および直前文字列の最終文
    字の少なくとも一方とを変数として前記ハッシュ演算手
    段(111)に入力し、得られたハッシュ値に基づいて
    前記ハッシュ表(112)を参照して、前記一致文字列
    を前記拡張文字で拡張した文字列に対応する前記辞書
    (101)における登録番号を得て符号化手段(10
    2)に送出する構成であり、 前記登録手段(103)は、新規の文字部分列を前記新
    規の文字部分列に最長一致する一致文字列の前記辞書
    (101)における登録番号と前記新規の文字部分列の
    展開文字列に与えられた符号との組み合わせとして前記
    辞書(101)に登録するとともに、前記登録番号と前
    記一致文字列に付加された拡張文字および直前文字列の
    最終文字の少なくとも一方とを変数として前記ハッシュ
    演算手段(111)に送出し、得られたハッシュ値と
    もに前記登録番号および前記拡張文字を前記ハッシュ表
    (112)に送出する構成であることを特徴とするデー
    タ圧縮装置。
  3. 【請求項3】 請求項2に記載のデータ圧縮装置におい
    て、 ハッシュ演算手段(111)が、入力される変数の排他
    的論理和演算を行ってハッシュ値を得る構成であること
    を特徴とするデータ圧縮装置。
  4. 【請求項4】 辞書に登録された文字部分列から入力文
    字列に最大長一致する一致文字列を検索し、この一致文
    字列の複製として入力文字列の該当する部分を符号化す
    るとともに、前記一致文字列を1文字だけ拡張した新規
    の文字部分列を前記辞書に登録する増分分解型の符号化
    方法を適用しており、直前に符号化された直前文字列の
    最終文字を先頭文字とする現文字列に対応する符号を前
    記辞書から検索して出力し、各文字部分列を先頭文字と
    この先頭文字からの展開文字列として捉え、前記先頭文
    字ごとに相異なる展開文字列にそれぞれ前記先頭文字に
    対応する個別の辞書の木における符号を与えて前記辞書
    に登録するデータ圧縮方法で得られた符号から元の文字
    列を復元するデータ復元方法において、 前記辞書を検索する際に、展開文字列に対応する符号と
    直前文字列の最終文字とを前記ハッシュ関数に入力し、
    得られたハッシュ値に基づいて前記ハッシュ表を参照す
    ることにより、該当する文字列を前記辞書から検索し、 新規の文字部分列に与えられた符号を前記辞書に登録す
    る際に、前記新規の文字部分列の先頭文字に対応する個別の辞書
    の木と前記辞書に対応する全体辞書の木との関係を示す
    情報を、前記符号とともに前記辞書に登録するととも
    に、 前記新規の文字部分列の展開文字列に与えられた符号と
    前記新規の文字列に対応する直前文字列の最終文字とを
    前記ハッシュ関数に入力し、得られたハッシュ値に応じ
    て、前記新規の文字部分列に与えられた符号の前記辞書
    における登録番号と次に新たな展開文字列を登録すべき
    個別の辞書の木を示す情報とをハッシュ表に登録するこ
    とを特徴とするデータ復元方法。
  5. 【請求項5】 辞書(101)に登録された文字部分列
    から入力文字列に最大長一致する一致文字列を検索し、
    この一致文字列の複製として入力文字列の該当する部分
    を符号化するとともに、前記一致文字列を1文字だけ拡
    張した新規の文字部分列を前記辞書(101)に登録す
    る増分分解型の符号化方法を適用しており、直前に符号
    化された直前文字列の最終文字を先頭文字とする現文字
    列に対応する符号を前記辞書(101)から検索して出
    力し、各文字部分列を先頭文字とこの先頭文字からの展
    開文字列として捉え、前記先頭文字ごとに相異なる展開
    文字列にそれぞれ前記先頭文字に対応する個別の辞書の
    木における符号を与えて前記辞書(101)に登録する
    データ圧縮装置で得られた符号から元の文字列を復元す
    るデータ復元装置において、 変数の入力に応じて所定の演算を行い、演算結果をハッ
    シュ値として出力するハッシュ演算手段(111)と、 前記ハッシュ値とともに前記辞書(101)における登
    録番号および前記辞書に対応する全体辞書の木と前記登
    録番号に登録された符号が属する個別の辞書の木との関
    係を示す情報が入力され、前記ハッシュ値に対応する格
    納場所に前記登録番号とともに前記全体辞書の木と前記
    個別の辞書の木との関係を示す情報を格納するハッシュ
    表(112)と、 検索しようとする文字列の展開文字列を示す符号と直前
    文字列の最終文字とを変数として前記ハッシュ演算手段
    (111)に入力し、得られたハッシュ値に基づいて前
    記ハッシュ表(112)を参照することにより、該当す
    る文字列に対応する前記辞書(101)における登録番
    号を得る検索手段(122)と、 前記検索手段(122)で得られた登録番号に基づいて
    前記辞書(101)を参照し、該当する文字列を復元す
    る復号手段(123)と、 新規の文字部分列に最長一致する一致文字列の前記辞書
    (101)における登録位置を示す登録番号と前記一致
    文字列に付加された拡張文字とを前記辞書(101)に
    登録するとともに、前記新規の文字部分列の展開文字列
    に与えられた符号と前記新規の文字列に対応する直前文
    字列の最終文字とを変数として前記ハッシュ演算手段
    (111)に送出し、得られたハッシュ値とともに前記
    新規の文字部分列の前記辞書(101)における登録番
    号と前記新規の文字列の先頭文字および前記展開文字列
    に与えられた符号とを前記ハッシュ表(112)に送出
    する登録手段(121)とを備えたことを特徴とするデ
    ータ復元装置。
  6. 【請求項6】 請求項5に記載のデータ復元装置におい
    て、 ハッシュ演算手段(111)が、入力される変数の排他
    的論理和演算を行ってハッシュ値を得る構成であること
    を特徴とするデータ復元装置。
JP24482993A 1993-09-30 1993-09-30 データ圧縮方法および装置並びにデータ復元方法および装置 Expired - Fee Related JP3384844B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24482993A JP3384844B2 (ja) 1993-09-30 1993-09-30 データ圧縮方法および装置並びにデータ復元方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24482993A JP3384844B2 (ja) 1993-09-30 1993-09-30 データ圧縮方法および装置並びにデータ復元方法および装置

Publications (2)

Publication Number Publication Date
JPH07104969A JPH07104969A (ja) 1995-04-21
JP3384844B2 true JP3384844B2 (ja) 2003-03-10

Family

ID=17124577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24482993A Expired - Fee Related JP3384844B2 (ja) 1993-09-30 1993-09-30 データ圧縮方法および装置並びにデータ復元方法および装置

Country Status (1)

Country Link
JP (1) JP3384844B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194504B2 (en) * 2000-02-18 2007-03-20 Avamar Technologies, Inc. System and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques
CN115442024B (zh) * 2022-09-05 2024-05-31 哈尔滨理工大学 基于混沌的MapReduce数据压缩的信息保护方法

Also Published As

Publication number Publication date
JPH07104969A (ja) 1995-04-21

Similar Documents

Publication Publication Date Title
CN108768403B (zh) 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器
JP2534465B2 (ja) デ―タ圧縮装置および方法
JPH0682370B2 (ja) 文字処理装置
JP3974036B2 (ja) ハフマン・デコーディングを実施する方法
JP3240495B2 (ja) データの可逆符号化方法および装置、並びに、伸長装置
JP2000124810A (ja) 符号化装置及び復号化装置
JP3241788B2 (ja) データ圧縮方式
US9391636B2 (en) Method and system
JP2000269822A (ja) データ圧縮装置、及びデータ復元装置
JP3384844B2 (ja) データ圧縮方法および装置並びにデータ復元方法および装置
JP2536422B2 (ja) デ―タ圧縮装置及びデ―タ復元装置
JP2940948B2 (ja) データ圧縮方式
JPH0546357A (ja) テキストデータの圧縮方法および復元方法
RU2190295C2 (ru) Система уплотнения и разуплотнения данных с непосредственным обновлением каталога, которое чередуют с поиском строк
JPH0546358A (ja) テキストデータの圧縮方法
JPH0554077A (ja) 単語辞書検索装置
JP2774350B2 (ja) データ圧縮方法および圧縮データのデータ復元方法
JP3132774B2 (ja) データ圧縮・復元装置
JPH05152971A (ja) データ圧縮・復元方法
JP3236747B2 (ja) データ伸長方式
JP2823918B2 (ja) データ圧縮方式
JP3708318B2 (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP3117760B2 (ja) データ復元方式
JPH06274311A (ja) データ圧縮装置及びデータ復元装置
JPH05150940A (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: 20021210

LAPS Cancellation because of no payment of annual fees