JP2002353818A - データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体 - Google Patents

データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体

Info

Publication number
JP2002353818A
JP2002353818A JP2001159512A JP2001159512A JP2002353818A JP 2002353818 A JP2002353818 A JP 2002353818A JP 2001159512 A JP2001159512 A JP 2001159512A JP 2001159512 A JP2001159512 A JP 2001159512A JP 2002353818 A JP2002353818 A JP 2002353818A
Authority
JP
Japan
Prior art keywords
data
input data
information
dictionary
storage area
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
JP2001159512A
Other languages
English (en)
Other versions
JP3913004B2 (ja
JP2002353818A5 (ja
Inventor
Masami Hisagai
正己 久貝
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2001159512A priority Critical patent/JP3913004B2/ja
Priority to US10/145,802 priority patent/US6664903B2/en
Priority to CN02121902.8A priority patent/CN1217259C/zh
Priority to EP02253733A priority patent/EP1263145A3/en
Publication of JP2002353818A publication Critical patent/JP2002353818A/ja
Publication of JP2002353818A5 publication Critical patent/JP2002353818A5/ja
Application granted granted Critical
Publication of JP3913004B2 publication Critical patent/JP3913004B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 伸長の高速化を生かして、高速にデータをロ
スレスに圧縮する。 【解決手段】 辞書領域を確保し、初期化する。辞書の
第1の記憶領域は、読み込んだデータの先頭の2バイト
をインデックスとし、読み込んだデータ3バイト目の後
続データが過去に出現していない場合には0、出現して
いれば後続データに関する情報を記憶する第2の記憶領
域のアドレス情報を格納する。第2の記憶領域は、後続
する1バイトのデータと、第1のアドレスと、後続する
1バイトの取り得る他のパターンが存在しない場合には
0、存在する場合には、他のパターンのデータを記憶す
る他の第2の記憶領域とチェーン接続するためのアドレ
スで構成される。第2の記憶領域を含む3バイトと同じ
データが過去に出現している場合、読み込んだデータの
4バイト目以降のデータと、前回出現した位置+3バイ
ト目以降のデータとを比較し、最長一致長L及びそのア
ドレスを符号化して出力する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はデジタルデータの可
逆的圧縮方法及び装置に関するものである。
【0002】
【従来の技術】ロスレス(可逆的)のデータ圧縮方法と
しては、ZivとLempelにより発明されたLZ77/LZ78を基
本とした方法がある。
【0003】LZ77は、過去の入力データをウィンドウバ
ッファに記憶し、現在の入力データと最長一致する過去
の入力データをウィンドウバッファ内で検索し、みつか
った最長一致ストリングの位置と長さを符号化して出力
することによりデータ圧縮を行っている。この方法は、
USP-4,054,951(Jackson,et al)、Ziv,J. and Lempel,
A.,“A universal algorithm for sequential data com
pression”, IEEE Transaction on Information Theor
y,Vol.23,No.3,pp.337-343,May 1977 などに記載されて
いる。
【0004】また、LZ78は、USP-4,464,650, USP-4,55
8,302, Ziv,J. and Lempel,A.,“Compression of indiv
idual sequences via variable-rate coding”, IEEE T
ransaction on Information Theory,Vol.24,No.5,pp.53
0-536,May 1978などに開示されているように過去の入力
データから辞書を作成していき、現在の入力データと最
長一致する辞書内のストリングを検索し、該ストリング
に対応付けてあった符号を出力し、また最長一致した現
在の入力データに次の1文字を連結したストリングを辞
書に追加登録し、次の検索でより最長の一致が可能とな
るよう工夫したものである。
【0005】LZ77におけるウィンドウバッファは2〜3
2KBのサイズが適当であり、LZ77が、入力データとウ
ィンドウバッファ内のデータとを比較するので、最長一
致を探す範囲は、高々過去32KBのデータに限定され
る。一方、LZ78はウィンドウバッファの大きさには関係
なく、辞書のサイズが許す限り遠い過去の入力データま
で最長一致検索の範囲とすることでき、検索範囲はLZ77
のように直近のものだけに限られない。したがって、LZ
77が近い相関を活用するのに対し、LZ78は遠い相関も活
用するという汎用性をもっているという利点がある。
【0006】また、LZ78は圧縮時に現在の入力データと
辞書との比較をすればよく、辞書が検索に適した構成に
できるので最長一致検索が高速に行える。
【0007】しかしながら、LZ78はデータ伸長時に辞書
を作成・更新しながら、伸長処理をしなくてはならない
が、LZ77はウィンドウバッファ内のストリングの位置と
オフセットが符号となっているために、辞書を作成せず
すぐに伸長が行え、LZ78よりも伸長処理が高速に行われ
る。
【0008】つまり、LZ78はデータに対して汎用性があ
りかつデータの圧縮が高速であるのに対し、LZ77はデー
タに対する汎用性には劣るものの、伸長処理を高速に行
えるという特徴を有する。
【0009】LZ77の圧縮では、入力データと最長一致す
る過去のストリングを探すため、ウィンドウバッファを
検索する必要がある。これを高速化するためには、USP-
4,701,745 (J.R.Waterworth)、USP-5,049,881 (D.K.Gib
son), USP-5.051,745 (P.W.Katz)、及びRFC-1951(“ DE
FLATE Compressed Data Format Specification version
1.3”, P. Deutsch)などに開示されているようなハッ
シュ検索方法がある。これらの公知資料でのハッシュ検
索方法は次のようなものである。
【0010】図1はこれらの説明図であり、10はウィ
ンドウバッファであり、P点より左側が既に圧縮の終わ
った入力データの圧縮前のデータが格納される領域であ
り、P点より右側はこれから圧縮しようとする入力デー
タが格納される領域である。P点より左側の領域のサイ
ズは、例えば32KBとする。P点から左側の領域の位
置を示すオフセットは、P点を基点として左にいくにし
たがい増えていくものとする。
【0011】また、11はウィンドウバッファのオフセ
ットを格納するハッシュ配列H[i]であって、要素数は2
15=32768エントリである。オフセットの長さは2バイト
としてよい。
【0012】次に図3は圧縮処理の処理手順であり、こ
れに従い説明する。
【0013】ステップ301では、現在入力データのス
トリングを示すポインタCに初期値(入力データの先頭
アドレス)を与える。ステップ302では、初期化状態
としてH[i]をゼロに初期化する。ここで、オフセットが
0であることはありえないので、0であることはオフセ
ットがいまだ格納されていないことを意味する。ステッ
プ303では圧縮すべき入力データがまだあるかどうか
チェックし、もしなければ処理を終了する。まだあれば
ステップ304に処理が進む。
【0014】図1の12は現在入力データの文字列であ
る。この先頭3文字を配列C[0]〜C[2]で表すと、ハッシ
ュ値hを図2のようにして計算する(ステップ30
4)。
【0015】なお、図2において、「^」 は排他的OR
を意味する。その他はC言語に準拠するが、「x<<
y」はxを上位ビット方向へのyビット分だけシフトす
ることを示し、「x&y」は値x、yをビット単位に論
理積することを示している。ハッシュ値hが求まった
ら、ステップ305において、H[h]と0を比較し、0な
らばこのハッシュ値hをもつ3文字列がまだ現れなかっ
たことを意味するのでステップ306にいき、H[h]に現
在入力データのカレントオフセット(先頭文字のオフセ
ット)を格納する。次にステップ307へいき、1バイ
トのデータC[0]をそのまま出力する。そしてステップ3
08へいき、ポインタCを1増やし、次の入力データを
処理可能にして、ステップ303へ戻る。
【0016】ステップ305において、H[h]が0でなけ
れば、算出したハッシュ値hと同じハッシュ値を出す3
文字列が現れていたので、その文字列があるH[h]の位置
mを取り出す(ステップ309)。そして、ステップ3
10で、位置mからの過去のデータと、現在入力データ
とを比較し最長一致する長さLを求める。次に、ステッ
プ311では、mとLをハフマン符号化したものを符号
化データとして出力する。最長一致長Lが決まると、ス
テップS312でポインタCをLだけ増分し、ステップ
303へ戻る。
【0017】
【発明が解決しようとする課題】LZ77の圧縮方式では、
前述のようなハッシュ検索方法で圧縮時の処理を高速化
することができるが、LZ78のようなウィンドウバッファ
を越えたずっと過去のデータをも現在入力データと比較
するようなことはしないので、例えば、ウィンドウバッ
ファの大きさ、32KBを周期として繰り返しが現れる
ようなデータについてはその圧縮効果を期待できない。
一方、LZ78の圧縮方式は、伸長時にも辞書を作成更新し
ながら処理をするので、オーバーヘッドがあり伸長処理
のスピードはLZ77よりも劣る。
【0018】伸長処理を高速化するためには、オフセッ
トと長さもしくはそれらを符号化したものを符号化デー
タとし、伸長時にはウィンドウバッファから対応するス
トリングを取り出すことが好ましい。しかし、オフセッ
トと長さを符号化データにするということは圧縮時にウ
ィンドウバッファ内だけの過去のデータを最長一致の検
索対象に限定することになるので、伸長時の高速化と、
圧縮時の比較対象の過去データの広がりをもたすことと
は両立が困難ではある。
【0019】本発明は、かかる問題点に鑑みなされたも
のであり、伸長の高速化を生かしながら、高速にデータ
をロスレスに圧縮するデータ圧縮方法及び装置及びコン
ピュータプログラム及び記憶媒体を提供することにあ
る。
【0020】
【課題を解決するための手段】かかる課題を解決するた
め、例えば本発明のデータ圧縮方法は以下の工程を備え
る。すなわち、所定の入力記憶域から入力データを読み
込み、該入力データと一致する過去の入力データを検索
し、該過去の入力データに対応した符号作成情報をもと
に符号化データを構成し、該符号化データを所定の出力
記憶域に出力するデータ圧縮方法であって、前記過去の
入力データに関連した入力データ関連情報と、該入力デ
ータの符号作成情報を関連付けて記憶するための辞書を
確保する確保工程と、ここで、前記辞書は要素領域を含
み、該要素領域は他の要素領域への接続情報を含むよう
に構成される;確保された前記辞書を検索する検索工程
と、前記過去の入力データに関連した入力データ関連情
報と、該入力データの符号作成情報とを前記要素領域に
登録する登録工程と、前記辞書検索工程により、現在の
入力データに関連した入力データ関連情報と対応する前
記辞書内の入力関連情報の検索を、要素領域を前記接続
情報で辿ることにより行い、該入力データ関連情報と関
連する前記符号作成情報を求め、該符号作成情報から符
号化データを作成する符号化データ作成工程とを備え
る。
【0021】
【発明の実施の形態】以下、添付図面に従って本発明に
係る実施形態を詳細に説明する。
【0022】図17は、実施形態における装置のブロッ
ク構成図である。図示において、201は装置全体の制
御を司るCPUであり、202はブートプログラム、B
IOS等を記憶しているROMである。203はCPU
201のワークエリアとして使用するRAMであり、こ
こにOS及び実施形態における圧縮プログラムがロード
され実行されることになる。204はOS、圧縮プログ
ラムを始め、圧縮対象のファイル等各種ファイルを記憶
するHDDである。205は通信インタフェースであっ
て、例えばモデムや、ネットワークカード等が接続さ
れ、LANやインターネット等へ接続する。206はキ
ーボード及びマウス、207は表示コントローラであっ
て、表示用のメモリ及び描画を司るコントローラを内臓
している。208はCRT等の表示装置である。
【0023】図示の構成において、本装置に電源が投入
されると、ROM202内のプログラムが起動し、HD
DからOSをRAM203にロードし、そのOS上で実
施形態の圧縮プログラムを起動することになる。なお、
OSとしては様々なものがあり、いずれを採用しても構
わない。
【0024】以下では、本装置のOSが動作を行い、H
DD204内に格納されている圧縮対象のファイル(H
DD204に格納されている)を指定し、圧縮プログラ
ムを起動した場合に説明する。なお、圧縮対象のファイ
ルはHDD204に限らず、如何なる記憶媒体に記憶さ
れていても良い。また、圧縮後のデータの出力先とし
て、HDDとして説明するが、この出力先も如何なるも
のでも良い。また、以下の説明における配列変数を始め
とする各領域はRAM203に確保されるものとする。
【0025】図4〜図8は、本発明の第1の実施形態の
説明図である。図4は、辞書に相当するもので、40は
第1の記憶領域に相当するところのヘッダ配列X
[i]、41〜44は第2の記憶領域であって、41〜
44の各データは要素領域である。ヘッダ配列X[i]
における配列要素の個数が216=65536個であって、各配
列要素(4バイト)には、要素領域のアドレスが格納で
きるようになっている。したがって、ヘッダ配列の大き
さは、256KB(=4×65536)となる。
【0026】要素領域41〜44は、図5のC言語で示
すデータ構造体であって、変数C(411に相当)はデー
タの1バイトを格納でき、offset(412に相当)は符号
作成情報であるところのデータのバッファ内オフセット
を格納でき、next(413に相当)は要素領域をチェイン
接続するために要素領域のアドレスが格納でき、dummy
はこのデータ構造体のメモリバウンダリを4バイトの倍
数にするための調整用変数である。
【0027】本実施形態では長さが3バイトのストリン
グを図4の辞書に登録できる。図4では、'abc','ab
d','abs','cup' の4つの3文字ストリングが登録され
ている状態を示している。それぞれの3文字ストリング
には、41、42、43,44の各要素領域が対応して
いる。例えば、'ストリングabc'は、先頭の2バイト'ab'
をバイナリで表すと0x6162 であるので、ヘッダ配列[0
x6162]のところに41のアドレスが格納されている。
そして、要素領域41には、先頭2バイトの情報は明ら
かであるから省略され、3バイト目の'c'だけが記録され
る。また、412のoffsetにはこの3文字ストリングが
出現した過去データの位置が格納されている。そして、
413のnextには、先頭2バイトが41と同じ'ab'であ
る3文字ストリングで、昇順にならべた場合に次にくる
ものの要素領域へのポインタが格納されている。42も
同様であり、43もnext以外は同様であるが、43の場
合はチェインの末端であることを示すためにnextには存
在しえない値、ここではNULL(ゼロ)が入っている。4
4の場合も末端であるため、nextにNULLが入っている。
【0028】図7は、ウィンドウバッファを説明する図
である。本実施形態では、現在入力データと最長一致す
る過去のデータを検索するのであるが、その検索範囲は
現在から過去へ32KBさかのぼったところまでであ
る。バッファは64KBの領域である。図7の(1)〜
(5)は、順に最初から圧縮処理を進行させた場合のバ
ッファの状態を表している。同図(1)はいまだ圧縮し
たデータがない、すなわち過去データがない場合であ
り、現在入力データの位置を示す変数strは0である。
同図(2)は少したって圧縮が進み、過去入力データが
いくらか生じた場合で、変数strにはある値(0<str<
32KB)が入っている。同図(3)は過去データがち
ょうど32KBたまった場合であり、str=32KBで
ある。同図(4)はさらに進行し、32KB<str<64
KBとなった状態である。このとき、過去データは32
KBよりも多くバッファに残っているが、実際に検索対
象となる過去データはstrの位置より過去へ32KBさ
かのぼったところが限界である。同図(5)はついにst
r が64KBの最後に到達した状態であり、このままでは処
理を進行できないので、同図(5)の状態にいたった場
合は、バッファ内のデータをすべて32KBだけ左にシフト
して、同図(3)の状態にする。それ以降は、同図
(3)〜(5)の状態を繰り返すことになる。
【0029】さて、図6のフローチャートにそって、本
実施形態の説明を詳細に述べる。ステップ601で、ま
ず圧縮処理開始にさきだち初期化を行う。すなわち、・
ヘッダ配列X[i]のすべての配列要素にNULLを格納す
る。・自由要素管理領域を初期化する。・現在入力デー
タ位置変数strに0をセットする。
【0030】図8は、自由要素管理領域を説明する図で
ある。図示において、801は要素管理領域、802は
自由領域先頭ポインタである。要素管理領域は、配列W
[i]であって、その配列要素は、図5のデータ構造体
であり、配列要素数は適当な値FREEMAX(例えば60000)
とする。初期化は、自由領域先頭ポインタheadにW
[0]のアドレスを設定し、W[i]のメンバー変数nex
tにW[i+1]のアドレスを設定する。これをすべてのi
について行い、最後の変数W[FREEMAX-1]の変数next
にはNULLを設定する。図8は、これを図示したものであ
る。
【0031】次にステップ602へ行き、圧縮処理をす
る入力データがあるかどうか判定し、なければ終了し、
あればステップ603へいく。
【0032】以下、図7のウィンドウバッファをWindow
[i]で表すことにする。Window[i]の配列要素は1バイト
である。変数indexは2バイトの変数であり、このindex
に、Window[str]とWindow[str+1]をつなげた2バイトを
設定する。このindexが、入力データの代表データに相
当する。また、変数mにゼロをセットする。
【0033】次にステップ604にいき、Window[str],
Window[str+1],Window[str+2]の3バイトで構成される
3字ストリング(入力データ関連情報)と同じものが辞
書内にあるかどうか検索し、もし辞書内になければこの
3文字ストリングを辞書(40、41)に登録する。つ
まり、3文字ストリングのうち、前半の2文字(代表デ
ータ)が既にヘッダ配列40に存在すれば、残りの1文
字(補助データ)を要素領域41として登録し、前半の
2文字も一致しない場合には、要素領域41は勿論、そ
の要素領域41のアドレスを、前半の2文字で示される
ヘッダ配列40の該当する位置に登録する。図9A、9
Bはステップ604の処理をC言語でプログラミングし
た一例である。Window[str+2]が入力データの補助デー
タに相当する。
【0034】例えば、3文字ストリングが、'abd'であ
って、辞書のそのときの状態が図4のようであれば、in
dexは0x6162(“ab”に相当するバイナリ数)となり、X
[index]を参照すると、ゼロでない値があり、その値を
ポインタとして辿ると41にいく。41で、411の'
c'と'abd'の補助データである3バイト目を比較すると
等しくないので、413のポインタを辿り、42にい
く。421の'd'と'abd'の3バイト目が一致するので、
3文字ストリングと同じ過去の3文字ストリングがみつ
かったことになる。そして、422の値Pdはこの過去
の3文字ストリングのバッファ内位置を表すので、mに
Pdをセットし、かつ、Pdの欄に現ポインタstrの
アドレスを格納する。
【0035】また、もし3文字ストリングが'abe'であ
った場合には、43まで辿っても一致する過去の3文字
ストリングがみつからず、431の's' が'e'(“abe”
の3バイト目)よりバイナリ数値として大きいという結
果になる。41〜43は第1文字のバイナリ数値順にチ
ェイン接続されているので、たとえ43以降にも要素領
域が接続されていても、もやは検索をしても一致する3
文字ストリングはないことは明白であるから検索を打ち
切る。そして、42と43の間に変数cが'e'である新
しい要素領域を追加挿入する。このため、自由要素管理
領域から未使用の要素領域を獲得して、上記追加挿入を
行う。それ以外にも、新しい要素領域をチェインの先頭
に追加したり、チェインの末端に追加したりする場合も
あるが、これらの正しい処理方法は、図9A、Bに示す
が如くである。つまり、チェインの順序を出現する文字
コード順に並べるために、ポインタのアドレスを更新す
る。
【0036】なお、バッファの位置は1を基点として1
以上の値が割り当てられるようにすれば、m=0なら
ば、過去に同じ3文字ストリングがなかったことを意味
することになる。
【0037】次にステップ605にいき、辞書とのマッ
チングが成功(過去の3文字ストリングがあった、すな
わちm≠0)かどうかチェックする。
【0038】もしm≠0ならば、ステップ606にい
き、バッファ内のm+3の位置からのデータと入力デー
タの4バイト目からを比較し最長一致の長さLを線形探
索法で求める。
【0039】ここで、USP-4,701,745などのようなハッ
シュ検索法よりも勝っている点を述べる。
【0040】これらのハッシュ検索法ではハッシュ値と
3文字ストリングのバッファ内位置を対応させてハッシ
ュ配列に記憶する。入力データの3文字からハッシュ関
数によりハッシュ値を求め、同じハッシュ値にあるハッ
シュ配列に記憶してあるバッファ内位置mを求める。こ
の場合は、異なる3文字列から求めたハッシュ値が等し
くなることがあり得るので、最長一致を求めるために
は、m+3から探索するのは危険であり、mから、つま
り1文字目からm位置にあるバッファ内データと入力デ
ータとを比較しなければならない。したがって、本発明
のほうが比較数が少ないので有利である。
【0041】さて、処理はステップ607にいき、符号
化データを作成し出力する。符号化データの作成は、簡
単にはmを先頭が常に1の16ビットのバイナリ数値表
現とし、L−1を8ビットのバイナリ数値表現にして
m、(L−1)の順に出力すればよい。ただし、この場
合にはLは最大256バイトしか表せないので、ステッ
プ606では最長一致の検索を256で打ち切ることが
必要となる。また、1バイトを非圧縮のまま出力すると
きは、先頭が1の後に非圧縮の1バイトを追加した形式
で出力する。
【0042】或いは、別の符号化としては、Deutsch,
L.P.,“DEFLATE Compressed Data Format Specificatio
n”, RFC-1951に示されてあるように、Lとmをハフマ
ン符号化して出力してもよい。ハフマン符号化は可変長
符号化の一形式であるが、もっとほかの可変長符号化で
あってもよい。
【0043】次にステップ611にいき、現在入力デー
タの位置を表す変数strにstr+Lを設定し更新する。
【0044】ステップ605においてマッチングが不成
功であった場合は、ステップ609へいき、Window[st
r]の1バイトを、前述のように先頭が1の9ビットで出
力するか、前記RFC-1951に開示されてあるようにハフマ
ン符号化して出力する。
【0045】そして、ステップ610へいき、str にst
r+1を設定し更新し、ステップ611へ進む。
【0046】str変数の更新により、バッファの状態が
図7(5)のような状態にいたることが起こりえる。つ
まりバッファのあふれである。バッファがあふれなけれ
ば、再びステップ602へいき602〜608の処理を
繰り返す。もし、バッファのあふれがあった場合は、前
述したように、バッファを左に32KBだけシフトし
て、図7(5)の状態から図7(3)の状態に変更す
る。このとき、辞書内の要素領域に記憶される412、
422、432、・・・のすべてのオフセットは32KB
(32,768)だけ減じて変更する必要がある。そして、減
じた結果、ゼロ以下になった場合には、該当する要素領
域を辞書から取り外し、その要素領域を自由要素管理領
域に返却する。この操作は、図9AのソースコードのRE
TURN_LISTマクロ関数で示してあるようにnext変数の値
の変更と、図8の変数headを書き換えることで行えるこ
とは、通常のリスト構造の手法である。
【0047】なお、自由要素管理領域から、未使用の要
素領域を獲得したり、不要になった要素領域を自由要素
管理領域へ返却したりすると、自由要素管理領域の状態
は、図8の上図の初期状態にとどまることはなく、たと
えば図8の下図のような接続関係が交錯した状態になっ
ていく。また、使用している要素領域は、最初に用意さ
れた自由要素管理領域の連続した部分にはならないこと
は容易に理解できる。
【0048】このことにより、本発明の辞書の記憶領域
がハッシュ配列のような連続した記憶領域とは異なって
いることがわかる。バッファのシフトが終わったら再び
ステップ602へいき処理を繰り返す。
【0049】<第2の実施の形態>次に、第2の実施形
態における動作を図10、11に従って説明する。図1
0は、要素領域を説明する図であって、101は要素領
域、1011は補助データ、1012は符号作成情報で
あるところのオフセット、1013は子の要素領域への
ポインタ、1014は次の要素領域へのポインタであ
る。
【0050】図11は辞書の構造を説明する図であっ
て、1101は先に説明した実施形態(第1の実施形
態)の記憶領域に相当する、256個の配列要素からな
る配列であって、配列要素には要素領域のポインタが記
憶される。つまり、このポインタが分類情報に相当す
る。ヘッダ配列の各要素から辿れる要素領域全体は第2
の記憶領域である。図11の1102〜1104の要素
領域群は、3文字ストリングの2文字目に対応する要素
領域であり、1105〜1107は3文字ストリングの
3文字目に対応する要素領域である。
【0051】本第2の実施形態では、ヘッダ配列のイン
デックスが3文字ストリング(入力データ関連情報)の
第1文字に相当し、これが入力データの代表データであ
る。そして、3文字ストリングの2〜3文字目が補助デ
ータに相当する。なお、ヘッダ配列のインデックスとし
て1文字(1バイト)を用いるので、そのエントリーは
256個となる。
【0052】第2の実施形態では、第1の実施形態と処
理のフローはほとんど図6と同じであるが、ステップ6
03とステップ604が辞書の構造にあわせて変更とな
る。
【0053】例えば、図11の辞書の状態において、3
文字ストリング'acz'を検索する場合を考える。indexに
は代表データであるところの、'a'のバイナリ値をセッ
トして、ヘッダ配列X[index]をアドレスとして辿る
と1102にいく。そして、変数cの内容と補助データ
の'c'を比較すると一致するので、1102のdesc変数
を取り出し、それをアドレスとして辿ると1105にい
く、変数cの内容と補助データ'z'のを比較し要素領域
のチェインをポインタnextでたどれば、1107で一致
をみる。したがって、1107のoffsetをとりだし、そ
れをmにセットする。このような検索をしても一致する
要素領域がなかった場合は、mは0のままである。な
お、図11において、1102〜1104が変数cの昇
順に接続され、1105〜1107も変数cの昇順に接
続される(もしくは、接続されるように更新処理を行
う)。それ以外の処理は第1の実施形態と同じである。
【0054】また、本第2の実施形態ではヘッダ配列X
[i]は、3文字ストリングの先頭バイトがインデック
スとなるように構成されたが、3文字ストリングxから
ハッシュ値を計算する適当なハッシュ関数h(x)をつ
かって、X[h(x)]を上記のヘッダ配列の変わりに
使用するような構成もとれる。この場合の配列X[h
(x)]は、インデックスが2バイトとする。こうすれ
ば、3文字ストリングがヘッダ配列によりばらつかせて
登録できるので、要素領域を辿って検索する速度が向上
する。ハッシュ関数は、例えば、 h(x) = (S[0] << 8) | (S[1] ^ S[2]); (<<は
ビットシフト、^は排他的ORを意味する) とすればよい。S[i]は、3文字ストリングの第i+1バイ
トのデータである。
【0055】この場合は、前記ハッシュ値が代表データ
となる。
【0056】h(x)は、第1バイト目のデータが異なれば
違った値になるので、図11と類似のヘッダ配列要素が
第1バイトを、そこからリンクされる2個の要素領域が第
2−3バイトを表すような態様になる。
【0057】<第3の実施形態>また、上記の第2の実
施形態で次のことが可能になる。つまり、図11の辞書
には3文字ストリングだけでなく、任意の長さのストリ
ングを登録できる。例えば、4文字ストリングを登録し
たければ、1105〜1107の各desc変数に4文字目
に対応する要素領域のアドレスをセットして、4文字目
の要素領域を接続すればよい。
【0058】この場合、入力データ関連情報とは、入力
データの先頭の不定長のバイト列である。また、入力デ
ータの先頭1バイトが代表データであり、2バイト以降の
不定長のバイト列が補助データである。
【0059】また、実は第1の実施形態においても、図
5の要素領域の構造体を図10のそれに置き換えること
によって、任意の長さのストリングを辞書に登録できる
ことは容易にわかる。
【0060】図6のステップ606において、バッファ
内と入力データの比較によって、最長一致が見つかった
ら、入力データの最長一致長の長さのストリングを辞書
に登録することができる。
【0061】ステップ606にこのような最長一致のス
トリングを辞書に登録する処理を追加したならば、次回
にバッファを線形探索行わずとも、入力データと辞書と
の比較だけによって最長一致がみつかるので、処理の高
速化を期待できる。
【0062】また、ステップ612でバッファシフトの
ときに、要素領域の取り外しをおこわないことにすれ
ば、バッファ内から消え去った遠い過去のストリングを
辞書に残せ、上記の辞書とのマッチングで最長一致がみ
つかるので、データ圧縮を効率よく行える。
【0063】<第4の実施形態>第1の実施形態で、最
長一致の長さLと過去のデータの位置mを合計23ビッ
トの符号で表すことを示したが、図10の要素領域のか
わりに図12の要素領域を使うことを考える。図12
は、変数offsetのかわりに変数codeを格納する。
【0064】変数codeは、ヘッダ配列からその要素領域
までたどって、各変数cをつなげてできるストリングの
符号化データを意味する。その値は、オフセットを先頭
が常に1の16ビットで表し、ストリングの長さを8ビ
ットで表し、合計24ビットを変数codeにセットしたも
のである。
【0065】<第5の実施形態>次に図13〜16にし
たがって、第5の実施形態を説明する。図13は、本第
5の実施形態の辞書のデータ構造を説明する図であっ
て、1301〜1312は要素領域である。要素領域
は、図14で示されるデータ形式であって、1401は
1バイトのデータを格納する変数c、1403はストリ
ングの先頭バイトの位置を格納する変数offset、140
4は子の要素領域へのポインタを格納する変数down、1
405は次の要素領域へのポインタを格納する変数next
である。
【0066】図13のおいて、1301はルートの要素
領域であって、辞書を検索する出発点である。変数root
に1301のアドレスが格納されている。1302〜1
304は、辞書に登録してあるストリングの先頭バイト
を格納する要素領域であって、1302は先頭バイト
が'a'、1303は先頭バイトが'c'、1304は先頭バ
イトが'g'のストリングの要素領域である。そして、1
302は子の要素領域へのポインタが変数downに格納さ
れていて、1305、1306へと接続されている。1
305〜1308はストリングの第2バイトを格納する
要素領域であって、例えば1305は第2バイトが'b'、
1306は第2バイトが'k'のストリングの要素領域で
ある。そして、1305はやはり子の要素領域へのポイ
ンタが変数downに格納されているいて、1309、13
10へと接続されている。1309〜1311はストリ
ングの第3バイトを格納する要素領域である。さらに、
1310は子の要素領域へのポインタがdownに格納され
ていて、1312へと接続されている。1312のdow
n、nextはNULLなので、もはやどこにも接続されていな
い。
【0067】図13の状態で辞書に登録されているスト
リングは図16に示すように11個あり、対応する要素
領域は図16に示されている。例えば、ストリング'abd
p'は、1301,1302,1305,1310,1312のルートを含めて5個
の要素領域からなっている。
【0068】さて、このような辞書を使用した本第5の
実施形態のデータ圧縮の処理手順は、図6と同様である
が、ステップ604のマッチング・挿入の処理内容は、
図15のフローチャートに置き換えたものである。以
下、図15にそって説明する。
【0069】なお、以下において、変数offsetは、入力
データと辞書内で最長一致するストリングのバッファ内
における位置を格納する変数であり、Lは、そのストリ
ングの長さであり、npは辞書のツリーを探索するための
要素領域のポインタを格納する変数である。また、変数
posにはあらかじめ入力データの位置が入っている。ま
た、S[i]は入力データのストリングを表す配列である。
【0070】ステップ1501では、変数offset、Lを
0で初期化する。変数npにはルート要素領域のdownをセ
ットする。次に1502へいき、変数npが0かどうかチ
ェックする。0ならば、辞書にはなにもストリングが登
録されていないので、1508へいき、入力データの位
置posから3バイトのストリングを図13の態様に従い
辞書に登録する。変数npが0でなければ、ステップ15
03へいき、長さLを1だけカウントアップする。次に
1504へいき、npが指す要素領域の変数np->cと入力
データストリングの第Lバイト目S[L]を比較する。変数n
p->cが小さければ1505へいき、npに次の要素領域の
ポインタをセットする。そして、1506へいき、npが
NULLかどうかチェックする。もしNULLであれば、それ以
上一致するストリングが辞書内にはないので、ステップ
1507へいき、入力データストリングをnpが指す要素
領域に追加して辞書に登録する。1506でNULLでなけ
れば比較すべき要素領域があるのでステップ1504へ
戻る。1504での比較で、もし、変数np->cのほうがS
[L]よりも大きければ、図13のツリーは辞書順に登録
されてあるので、これ以上の横のチェインを辿る必要が
ないので、npが指す要素領域の前に入力データを挿入し
て辞書に登録する。
【0071】ステップ1504の比較において両者が等
しければ、ステップ1509にいき、offset変数がまだ
0ならばoffsetにnpのoffsetをセットし、0でなければ
セットしない。ステップ1511にいき、npのoffsetに
は、入力データのposをセットし更新する。次に、15
12へいきnp変数に子の要素領域へのポインタdownをセ
ットする。そして、1513にいき、npがNULLかどうか
チェックする。0ならば、1507へいきnpが指す位置
に入力データストリングを挿入し辞書に登録する。ステ
ップ1513で0でなければ、ステップ1503へ戻る。
【0072】上記処理で、入力データストリングの辞書
への登録1508、1507は、Lが2以下であれば、
(3−L)バイトのストリングS[L]〜S[2]を登録し、Lが
3以上ならば1バイトのストリングS[L]を登録するもの
とする。また、辞書への登録では、要素領域の変数cに
は入力データストリングのバイトをセットし、変数offs
etには入力データストリングの先頭位置、すなわちpos
をセットする。変数down、offsetは図13の辞書態様と
なるべくポインタをセットする。
【0073】このような辞書へのストリングの登録によ
って、図13に辞書態様は要素領域が変数cが昇順にな
るように構成される点に注意すべきである。
【0074】なお、offsetは図6のmに相当する。ステ
ップ606では、ウィンドウバッファ内で、さらに最長
一致を検索する。ステップ606では、ウィンドウバッ
ファのm+1以降と入力データのpos+m+1以降を比
較することになる。ここで、さらにL2(L2>L)の長さ
の最長一致が見つかった場合には、S[0]〜S[L2-1]のス
トリングを辞書に登録しておき、後のマッチングに役立
てる。ここで、S[0]〜S[L-1]のストリングは登録済みな
ので、実際は残りのS[L]〜S[L2]を追加で登録すること
になる。
【0075】上記説明において、図14の1402の変
数cが入力データ関連情報に相当する。なお、本実施形
態においては代表データと補助データに相当するものは
ない。 さらに、上記実施形態に以下のような改良を追
加することを説明する。
【0076】まず、第1の実施形態と同じく、自由要素
管理領域と、要素取得手段、要素返却手段、及び辞書更
新手段を有し、辞書の更新と、要素領域の獲得と返却を
行い、要素領域のメモリ管理をすることができる。
【0077】そして、第1の実施形態と同じく、辞書に
は入力データの所定長データである3バイトストリング
だけを登録するようにしてもよい。また、第4の実施形
態と同じように、offsetのかわりに、符号化データその
ものを格納してもよい。
【0078】なお、上述した各実施形態は、RAM20
3等のハードウェアを必要とするものの、その実体はR
AM203にロードされ、CPU201によって実行さ
れるプログラムによって実現できる。すなわち、本発明
は、コンピュータが実行するプログラムによって実行す
ることができるので、当然、そのプログラムは本発明に
含まれる。また、通常、プログラムは、記憶媒体に記憶
されたそのプログラムを、その記憶媒体から直接実行す
る、或いは、記憶媒体に記憶されたプログラムをコンピ
ュータが有する記憶装置(HDD204等)にインスト
ール若しくはコピーすることで実施できる。従って、か
かる記憶媒体も本発明の範疇に含まれるものである。記
憶媒体としては、紙テープ等の紙記憶媒体、フロッピー
(登録商標)ディスク等の磁気記憶媒体、CDROM等
の光記憶媒体、或いは、MO等の光磁気記憶媒体等を上
げることができるが、その媒体の記録方式は如何なるも
のであっても構わない。
【0079】
【発明の効果】以上説明したように本発明によれば、伸
長の高速化を生かしながら、高速にデータをロスレスに
圧縮することが可能になる。また、LZ77の伸長の高
速性を生かしながら、LZ78の広範な範囲の検索を行
える辞書構成法をとることにより、同じアルゴリズムで
LZ77のデータ圧縮装置と、あるいはまたLZ78の
圧縮装置への実装も可能になる。
【図面の簡単な説明】
【図1】従来のLZ77の方法を説明するための図である。
【図2】ハッシュ関数の演算手順を示すフローチャート
である。
【図3】従来の方法の処理手順を示すフローチャートで
ある。
【図4】第1の実施形態の辞書構成を示す図である。
【図5】第1の実施形態における要素領域の構造体を示
す図である。
【図6】第1の実施形態の処理手順を示すフローチャー
トである。
【図7】ウィンドウバッファの推移を示す図である。
【図8】自由要素管理領域の構造を示す図である。
【図9A】、
【図9B】マッチング・挿入処理のソースコードを示す
図である。
【図10】第2の実施形態の要素領域及びその構造体を
示す図である。
【図11】第2の実施形態の辞書構成を示す図である。
【図12】第4の実施形態の要素領域及びその構造体を
示す図である。
【図13】第5の実施形態の辞書構成を示す図である。
【図14】第5の実施形態の要素領域及びその構造体を
示す図である。
【図15】第5の実施形態の処理手順を示すフローチャ
ートである。
【図16】第5の実施形態の辞書の内容を示す図であ
る。
【図17】実施形態における装置のブロック構成図であ
る。

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】 所定の入力記憶域から入力データを読み
    込み、該入力データと一致する過去の入力データを検索
    し、該過去の入力データに対応した符号作成情報をもと
    に符号化データを構成し、該符号化データを所定の出力
    記憶域に出力するデータ圧縮方法であって、 前記過去の入力データに関連した入力データ関連情報
    と、該入力データの符号作成情報を関連付けて記憶する
    ための辞書を確保する確保工程と、 ここで、前記辞書は要素領域を含み、該要素領域は他の
    要素領域への接続情報を含むように構成される;確保さ
    れた前記辞書を検索する検索工程と、 前記過去の入力データに関連した入力データ関連情報
    と、該入力データの符号作成情報とを前記要素領域に登
    録する登録工程と、 前記辞書検索工程により、現在の入力データに関連した
    入力データ関連情報と対応する前記辞書内の入力関連情
    報の検索を、要素領域を前記接続情報で辿ることにより
    行い、該入力データ関連情報と関連する前記符号作成情
    報を求め、該符号作成情報から符号化データを作成する
    符号化データ作成工程とを備えることを特徴とするデー
    タ圧縮方法。
  2. 【請求項2】 前記検索工程により、現在の入力データ
    に関連した入力データ関連情報と対応する前記辞書内の
    入力データ関連情報がみつからなかった場合に、前記入
    力データ関連情報と前記入力データに対応する符号作成
    情報とを関連付けて辞書に記憶する辞書登録工程を有す
    ることを特徴とする請求項第1項に記載のデータ圧縮方
    法。
  3. 【請求項3】 未使用の要素領域を含む自由要素管理領
    域を確保する工程と、要素取得工程と、要素返却工程、
    及び辞書更新工程とを有し、該辞書更新工程により、辞
    書に入力データから導かれる入力データ関連情報と符号
    作成情報とを関連付けて登録する場合に、該要素取得工
    程により前記自由要素管理領域から要素領域を取得し、
    該要素領域を辞書に追加し、辞書から要素領域を取り外
    すことを決定した場合に、前記要素返却工程により該要
    素領域を前記自由要素管理領域へ未使用の要素領域とし
    て返却・保管し、次の使用に備えることを特徴とする請
    求項第1項に記載のデータ圧縮方法。
  4. 【請求項4】 入力データを一時記憶するバッファを確
    保し、前記符号作成情報は、バッファ内位置情報であ
    り、 前記入力データとバッファ内位置情報が示す位置から開
    始する過去の入力データとを比較し最長一致長を求める
    最長一致検索工程と、 該最長一致検索工程にて得られた、前記バッファ内位置
    情報と最長一致長から符号化データを作成する符号作成
    工程とを備えることを特徴とする請求項第1項に記載の
    データ圧縮方法。
  5. 【請求項5】 前記符号作成情報は、最終出力符号その
    ものであることを特徴とする請求項第1項に記載のデー
    タ圧縮方法。
  6. 【請求項6】 前記符号作成工程は、前記符号作成情報
    を可変長符号化して符号化データを作成することを特徴
    とする請求項第1項に記載のデータ圧縮方法。
  7. 【請求項7】 前記可変長符号化は、ハフマン符号化で
    あることを特徴とする請求項第6項に記載のデータ圧縮
    方法。
  8. 【請求項8】 前記最長一致検索工程は、最長一致した
    前記入力データを前記辞書に登録することを特徴とする
    請求項第4項に記載のデータ圧縮方法。
  9. 【請求項9】 前記入力データ関連情報は、所定長の入
    力データであることを特徴とする請求項第1項に記載の
    データ圧縮方法。
  10. 【請求項10】 所定の入力記憶域から入力データを読
    み込み、該入力データと一致する過去のデータを検索
    し、該過去のデータに対応した符号作成情報をもとに符
    号化データを構成し、該符号化データを所定の出力記憶
    域に出力するデータ圧縮方法であって、 前記入力データに関連した代表データと、分類情報を関
    連付けて記憶する第1の記憶領域と、前記入力データに
    関連した補助データと符号作成情報を関連付けて前記分
    類情報ごとに記憶する第2の記憶領域とで構成される辞
    書を確保する確保工程と、 前記辞書を検索する第1検索工程及び第2検索工程で構
    成される検索工程とを備え、 前記第1の検索工程は、前記代表データをキーとして第
    1の記憶領域を検索し、該第2の検索工程は前記補助デ
    ータをキーとして第2の記憶領域を検索するものであっ
    て、 前記入力データから代表データを導き、前記第1の検索
    工程により前記第1の記憶領域を検索して、該代表デー
    タに関連する前記分類情報を求め、 前記第2の検索工程によって該分類情報により限定され
    る第2の記憶領域内を、前記入力データから導いた補助
    データをキーとして検索し、該補助データと関連する符
    号作成情報を求め、 該符号作成情報から符号化データを作成し、該符号化デ
    ータを出力記憶域に出力することを特徴とするデータ圧
    縮方法。
  11. 【請求項11】 前記第2の検索工程により、前記補助
    データと対応する符号作成情報が見つからなかった場合
    に、前記入力データから代表データと補助データ及び符
    号作成情報を導き、該代表データを第1の記憶領域に分
    類情報と対応させて記憶し、該分類情報によって限定さ
    れる第2の記憶領域内に前記補助データと前記符号作成
    情報を対応させて記憶する辞書登録工程を有することを
    特徴とする請求項第10項に記載のデータ圧縮方法。
  12. 【請求項12】 前記第2の記憶領域は、前記分類情報
    により複数の小領域に分類され、該小領域は空であるか
    1個以上の要素領域から構成され、該要素領域は同じ小
    領域内の他の要素領域とポインタで接続されるデータ構
    造を構成するところの、補助データと符号作成情報と前
    記ポインタからなる要素領域を含むことを特徴とする請
    求項第11項に記載のデータ圧縮方法。
  13. 【請求項13】 未使用の要素領域を含む自由要素管理
    領域を確保する工程と、要素取得工程と、要素返却工
    程、及び辞書更新工程を有し、 該辞書更新工程により、辞書に入力データから導かれる
    代表データと補助データ及び符号作成情報を登録する場
    合に、該要素取得工程により前記自由要素管理領域から
    要素領域を取得し、該要素領域を前記第2の記憶領域に
    追加し、該第2の記憶領域から要素領域を取り外すこと
    を決定した場合に、前記要素返却工程により、該要素領
    域を前記自由要素管理領域へ未使用の要素領域として保
    管し、次の使用に備えることを特徴とする請求項第12
    項に記載のデータ圧縮方法。
  14. 【請求項14】 入力データを一時記憶するバッファを
    確保し、前記符号作成情報は、バッファ内位置情報であ
    り、 前記入力データとバッファ内位置情報が示す位置から開
    始する過去のデータとを比較し最長一致長を求める最長
    一致検索工程と、 該最長一致検索工程で得られた該バッファ内位置情報と
    前記最長一致長から符号化データを作成する符号作成工
    程とを備えることを特徴とする請求項第10項に記載の
    データ圧縮方法。
  15. 【請求項15】 前記符号作成情報は、最終出力符号そ
    のものであることを特徴とする請求項第10項に記載の
    データ圧縮方法。
  16. 【請求項16】 前記符号作成工程は、前記符号作成情
    報を可変長符号化して符号化データを作成することを特
    徴とする請求項第14項に記載のデータ圧縮方法。
  17. 【請求項17】 前記可変長符号化は、ハフマン符号化
    であることを特徴とする請求項第16項に記載のデータ
    圧縮方法。
  18. 【請求項18】 前記最長一致検索工程は、最長一致し
    た前記入力データを前記辞書に登録することを特徴とす
    る請求項第14項に記載のデータ圧縮方法。
  19. 【請求項19】 ハッシュ生成工程を具備し、前記代表
    データは、前記入力データからハッシュ生成工程により
    求めたハッシュ値とすることを特徴とする請求項第10
    項に記載のデータ圧縮方法。
  20. 【請求項20】 コンピュータが読み込み実行すること
    で、所定の入力記憶域から入力データを読み込み、該入
    力データと一致する過去の入力データを検索し、該過去
    の入力データに対応した符号作成情報をもとに符号化デ
    ータを構成し 、該符号化データを所定の出力記憶域に出力するデータ
    圧縮装置として機能するコンピュータプログラムであっ
    て、 前記過去の入力データに関連した入力データ関連情報
    と、該入力データの符号作成情報を関連付けて記憶する
    ための辞書を確保する確保工程のプログラムコードと、 ここで、前記辞書は要素領域を含み、該要素領域は他の
    要素領域への接続情報を含むように構成される;確保さ
    れた前記辞書を検索する検索工程のプログラムコード
    と、 前記過去の入力データに関連した入力データ関連情報
    と、該入力データの符号作成情報とを前記要素領域に登
    録する登録工程のプログラムコードと、 前記辞書検索工程により、現在の入力データに関連した
    入力データ関連情報と対応する前記辞書内の入力関連情
    報の検索を、要素領域を前記接続情報で辿ることにより
    行い、該入力データ関連情報と関連する前記符号作成情
    報を求め、該符号作成情報から符号化データを作成する
    符号化データ作成工程のプログラムコードとを備えるこ
    とを特徴とするコンピュータプログラム。
  21. 【請求項21】 請求項20に記載のコンピュータプロ
    グラムを格納する記憶媒体。
  22. 【請求項22】 コンピュータが読み込み実行すること
    で、所定の入力記憶域から入力データを読み込み、該入
    力データと一致する過去のデータを検索し、該過去のデ
    ータに対応した符号作成情報をもとに符号化データを構
    成し、該符号化データを所定の出力記憶域に出力するデ
    ータ圧縮装置として機能するコンピュータプログラムで
    あって、 前記入力データに関連した代表データと、分類情報を関
    連付けて記憶する第1の記憶領域と、前記入力データに
    関連した補助データと符号作成情報を関連付けて前記分
    類情報ごとに記憶する第2の記憶領域とで構成される辞
    書を確保する確保工程のプログラムコードと、 前記辞書を検索する第1検索工程及び第2検索工程で構
    成される検索工程のプログラムコードとを備え、 前記第1の検索工程は、前記代表データをキーとして第
    1の記憶領域を検索し、該第2の検索工程は前記補助デ
    ータをキーとして第2の記憶領域を検索するものであっ
    て、 前記入力データから代表データを導き、前記第1の検索
    工程により前記第1の記憶領域を検索して、該代表デー
    タに関連する前記分類情報を求め、 前記第2の検索工程によって該分類情報により限定され
    る第2の記憶領域内を、前記入力データから導いた補助
    データをキーとして検索し、該補助データと関連する符
    号作成情報を求め、 該符号作成情報から符号化データを作成し、該符号化デ
    ータを出力記憶域に出力することを特徴とするコンピュ
    ータプログラム。
  23. 【請求項23】 請求項22に記載のコンピュータプロ
    グラムを格納する記憶媒体。
  24. 【請求項24】 所定の入力記憶域から入力データを読
    み込み、該入力データと一致する過去の入力データを検
    索し、該過去の入力データに対応した符号作成情報をも
    とに符号化データを構成し、該符号化データを所定の出
    力記憶域に出力するデータ圧縮装置であって、 前記過去の入力データに関連した入力データ関連情報
    と、該入力データの符号作成情報を関連付けて記憶する
    ための辞書を確保する確保手段と、 ここで、前記辞書は要素領域を含み、該要素領域は他の
    要素領域への接続情報を含むように構成される;確保さ
    れた前記辞書を検索する検索手段と、 前記過去の入力データに関連した入力データ関連情報
    と、該入力データの符号作成情報とを前記要素領域に登
    録する登録手段と、 前記辞書検索手段により、現在の入力データに関連した
    入力データ関連情報と対応する前記辞書内の入力関連情
    報の検索を、要素領域を前記接続情報で辿ることにより
    行い、該入力データ関連情報と関連する前記符号作成情
    報を求め、該符号作成情報から符号化データを作成する
    符号化データ作成手段とを備えることを特徴とするデー
    タ圧縮装置。
  25. 【請求項25】 所定の入力記憶域から入力データを読
    み込み、該入力データと一致する過去のデータを検索
    し、該過去のデータに対応した符号作成情報をもとに符
    号化データを構成し、該符号化データを所定の出力記憶
    域に出力するデータ圧縮装置であって、 前記入力データに関連した代表データと、分類情報を関
    連付けて記憶する第1の記憶領域と、前記入力データに
    関連した補助データと符号作成情報を関連付けて前記分
    類情報ごとに記憶する第2の記憶領域とで構成される辞
    書を確保する確保手段と、 前記辞書を検索する第1検索手段及び第2検索手段で構
    成される検索手段とを備え、 前記第1の検索手段は、前記代表データをキーとして第
    1の記憶領域を検索し、該第2の検索手段は前記補助デ
    ータをキーとして第2の記憶領域を検索するものであっ
    て、 前記入力データから代表データを導き、前記第1の検索
    手段により前記第1の記憶領域を検索して、該代表デー
    タに関連する前記分類情報を求め、 前記第2の検索手段によって該分類情報により限定され
    る第2の記憶領域内を、前記入力データから導いた補助
    データをキーとして検索し、該補助データと関連する符
    号作成情報を求め、 該符号作成情報から符号化データを作成し、該符号化デ
    ータを出力記憶域に出力することを特徴とするデータ圧
    縮装置。
JP2001159512A 2001-05-28 2001-05-28 データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体 Expired - Fee Related JP3913004B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2001159512A JP3913004B2 (ja) 2001-05-28 2001-05-28 データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体
US10/145,802 US6664903B2 (en) 2001-05-28 2002-05-16 Method, apparatus, computer program and storage medium for data compression
CN02121902.8A CN1217259C (zh) 2001-05-28 2002-05-28 用于数据压缩的方法和装置
EP02253733A EP1263145A3 (en) 2001-05-28 2002-05-28 Method, apparatus, computer program and storage medium for data compression

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001159512A JP3913004B2 (ja) 2001-05-28 2001-05-28 データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体

Publications (3)

Publication Number Publication Date
JP2002353818A true JP2002353818A (ja) 2002-12-06
JP2002353818A5 JP2002353818A5 (ja) 2006-10-19
JP3913004B2 JP3913004B2 (ja) 2007-05-09

Family

ID=19003079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001159512A Expired - Fee Related JP3913004B2 (ja) 2001-05-28 2001-05-28 データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体

Country Status (4)

Country Link
US (1) US6664903B2 (ja)
EP (1) EP1263145A3 (ja)
JP (1) JP3913004B2 (ja)
CN (1) CN1217259C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8902087B1 (en) 2013-08-27 2014-12-02 International Business Machines Corporation Data decompression utilizing pre-expanded dictionaries during decompression

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6731229B2 (en) * 2001-02-09 2004-05-04 International Business Machines Corporation Method to reduce storage requirements when storing semi-redundant information in a database
US20040153255A1 (en) * 2003-02-03 2004-08-05 Ahn Tae-Jin Apparatus and method for encoding DNA sequence, and computer readable medium
WO2005089397A2 (en) * 2004-03-16 2005-09-29 Advanced Tracking Technologies, Inc. Geographic information data base engine
CN1331088C (zh) * 2004-05-28 2007-08-08 凌阳科技股份有限公司 压缩打印资料的方法
US20060236319A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Version control system
US8521752B2 (en) 2005-06-03 2013-08-27 Osr Open Systems Resources, Inc. Systems and methods for arbitrary data transformations
US7512748B1 (en) 2006-08-17 2009-03-31 Osr Open Systems Resources, Inc. Managing lock rankings
US8539228B1 (en) 2006-08-24 2013-09-17 Osr Open Systems Resources, Inc. Managing access to a resource
WO2008128476A1 (en) * 2007-04-18 2008-10-30 Mediatek Inc. Data access tracing
US8024433B2 (en) 2007-04-24 2011-09-20 Osr Open Systems Resources, Inc. Managing application resources
US7949693B1 (en) 2007-08-23 2011-05-24 Osr Open Systems Resources, Inc. Log-structured host data storage
EP2187313A4 (en) * 2007-09-04 2011-08-03 Nintendo Co Ltd WRITE-IN REGIONAL SECURITY SYSTEM
WO2009031245A1 (ja) * 2007-09-04 2009-03-12 Nintendo Co., Ltd. ダウンロードセキュリティシステム
US8400334B2 (en) * 2009-12-31 2013-03-19 Thomson Reuters Global Resources (Trgr) Asymmetric dictionary-based compression/decompression useful for broadcast or multicast unidirectional communication channels
DE112011104633B4 (de) 2010-12-28 2016-11-10 International Business Machines Corporation Einheit zum Ermitteln des Ausgangspunkts für eine Suche
US8903874B2 (en) 2011-11-03 2014-12-02 Osr Open Systems Resources, Inc. File system directory attribute correction
JP6032292B2 (ja) 2012-12-19 2016-11-24 富士通株式会社 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
US9830329B2 (en) 2014-01-15 2017-11-28 W. Anthony Mason Methods and systems for data storage
US9864007B2 (en) * 2014-04-30 2018-01-09 Duke University Software-based self-test and diagnosis using on-chip memory
EP3195481B1 (en) * 2014-08-12 2022-07-13 Micron Technology, Inc. Adaptive rate compression hash processing device
US9628111B2 (en) * 2015-05-11 2017-04-18 Via Alliance Semiconductor Co., Ltd. Hardware data compressor with multiple string match search hash tables each based on different hash size
US9748972B2 (en) * 2015-09-14 2017-08-29 Leco Corporation Lossless data compression
WO2018010800A1 (en) * 2016-07-14 2018-01-18 Huawei Technologies Co., Ltd. General purpose data compression using simd engine
CN114168085B (zh) * 2021-12-16 2024-02-20 潍柴动力股份有限公司 变量处理方法、装置、设备及存储介质
CN116016397B (zh) * 2023-03-28 2023-05-30 湖南毂梁微电子有限公司 一种报文传输缓冲区快速检索方法和电路
CN116192154B (zh) * 2023-04-28 2023-06-27 北京爱芯科技有限公司 数据压缩及数据解压方法、装置、电子设备、芯片
CN117200805B (zh) * 2023-11-07 2024-02-02 成都万创科技股份有限公司 一种mcu的低内存占用的压缩和解压方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4054951A (en) 1976-06-30 1977-10-18 International Business Machines Corporation Data expansion apparatus
US4464650A (en) 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4558302A (en) 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
GB2172127B (en) 1985-03-06 1988-10-12 Ferranti Plc Data compression system
US5058144A (en) * 1988-04-29 1991-10-15 Xerox Corporation Search tree data structure encoding for textual substitution data compression systems
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
DE69118250T2 (de) * 1990-01-19 1996-10-17 Hewlett-Packard Ltd., Bracknell, Berkshire Zugriff für komprimierte daten
US5049881A (en) 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
DE69123660T2 (de) * 1990-08-13 1997-04-17 Fujitsu Ltd., Kawasaki, Kanagawa Datenkompressionsmethode und Gerät
US5051745A (en) 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
US5473326A (en) * 1990-12-14 1995-12-05 Ceram Incorporated High speed lossless data compression method and apparatus using side-by-side sliding window dictionary and byte-matching adaptive dictionary
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5717394A (en) * 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
AU1447295A (en) * 1993-12-30 1995-08-01 Connectix Corporation Virtual memory management system and method using data compression
AU1514795A (en) * 1993-12-30 1995-08-01 Connectix Corporation Lossless data compression system and method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8902087B1 (en) 2013-08-27 2014-12-02 International Business Machines Corporation Data decompression utilizing pre-expanded dictionaries during decompression
WO2015029329A1 (en) * 2013-08-27 2015-03-05 International Business Machines Corporation Data decompression utilizing pre-expanded dictionaries during decompression
JP2016533046A (ja) * 2013-08-27 2016-10-20 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 復元中に予備拡張辞書を利用するデータ復元

Also Published As

Publication number Publication date
CN1388443A (zh) 2003-01-01
EP1263145A3 (en) 2004-06-02
EP1263145A2 (en) 2002-12-04
JP3913004B2 (ja) 2007-05-09
US6664903B2 (en) 2003-12-16
CN1217259C (zh) 2005-08-31
US20020175840A1 (en) 2002-11-28

Similar Documents

Publication Publication Date Title
JP2002353818A (ja) データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体
KR100332709B1 (ko) 스트링 검색이 포함되어 있는 즉각적인 사전 갱신을 갖춘 데이터
US5635932A (en) Lempel-ziv compression with expulsion of dictionary buffer matches
US6570511B1 (en) Data compression method and apparatus implemented with limited length character tables and compact string code utilization
US5254990A (en) Method and apparatus for compression and decompression of data
US20140059075A1 (en) Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus
JPH0682370B2 (ja) 文字処理装置
JP6476647B2 (ja) 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法
JP4003854B2 (ja) データ圧縮装置及び復元装置並びにその方法
KR20160089279A (ko) 매체에 저장된 프로그램
JP6609404B2 (ja) 圧縮プログラム、圧縮方法および圧縮装置
JP4156381B2 (ja) 文字テーブルによって実施されるデータ圧縮の方法および装置
JP3983674B2 (ja) 動的に変更可能なまれに出会う列の組込みフィルタリングを有するデータ圧縮伸長の方法および装置
US6650259B1 (en) Character table implemented data decompression method and apparatus
JPH0936747A (ja) データ圧縮方法及びデータ圧縮装置
JPH10261969A (ja) データ圧縮方法および装置
JP4208326B2 (ja) 情報索引装置
RU2190295C2 (ru) Система уплотнения и разуплотнения данных с непосредственным обновлением каталога, которое чередуют с поиском строк
JPH0554077A (ja) 単語辞書検索装置
JP2006302082A (ja) 文字列検索装置
US6674374B1 (en) Data compressor utilizing switched input coincidence elements
JPH07152533A (ja) データ圧縮装置
JP3384844B2 (ja) データ圧縮方法および装置並びにデータ復元方法および装置
JP3088740B2 (ja) データ圧縮及び復元方式
JP2825960B2 (ja) データ圧縮方法及び復元方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060802

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060802

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20060802

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060804

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20060927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061002

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070130

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100209

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110209

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120209

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130209

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20140209

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees