JPH0946235A - データ圧縮装置 - Google Patents

データ圧縮装置

Info

Publication number
JPH0946235A
JPH0946235A JP24995695A JP24995695A JPH0946235A JP H0946235 A JPH0946235 A JP H0946235A JP 24995695 A JP24995695 A JP 24995695A JP 24995695 A JP24995695 A JP 24995695A JP H0946235 A JPH0946235 A JP H0946235A
Authority
JP
Japan
Prior art keywords
character string
index
entry
history array
array means
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
JP24995695A
Other languages
English (en)
Other versions
JP2910639B2 (ja
Inventor
Toshihiko Okamura
利彦 岡村
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP24995695A priority Critical patent/JP2910639B2/ja
Publication of JPH0946235A publication Critical patent/JPH0946235A/ja
Application granted granted Critical
Publication of JP2910639B2 publication Critical patent/JP2910639B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 大きな履歴アレイを用いても、比較すべき文
字列の個数、検索手段へ登録する文字列の数が効果的に
削減でき、圧縮率の劣化を小さく抑えて符号化速度の向
上を図ることができるデータ圧縮方式を提供する。 【解決手段】 入力データを格納する複数のエントリを
有する履歴アレイ手段1と、履歴アレイ手段1中の文字
列の検索を容易にするための検索手段2と、履歴アレイ
手段1の文字列の検索手段2への登録を以下に述べる方
法によって制御する登録制御手段と5と、検索手段2に
登録されている文字列の先頭位置に対応するエントリに
のみインデックスを保持するインデックスアレイ手段6
と、インデックスアレイ手段6にインデックスを供給す
るインデックス更新手段7と、符号化データ生成手段3
と、符号化手段4とから構成されている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は無歪みで復元可能な
データ圧縮復元方式に関する。
【0002】
【従来の技術】レンペル−ジブ方式として知られるテキ
スト置換型の無歪みデータ圧縮方式は1980年代後半
から広く使用されるようになってきた。中でもLZ77
型と呼ばれるデータ圧縮アルゴリズムは圧縮率の良さか
ら計算機上のファイル圧縮ツールにしばしば組み込まれ
ている。LZ77型は既に符号化を終えた入力データを
格納するための履歴アレイを持つことを特徴とする。履
歴アレイは更新が容易になるように円環的に使用される
ことが多い。つまり履歴アレイ内に一定長の先読み領域
と呼ばれる領域を用意し、そこにはこれから圧縮を行う
データを格納しておき、先読み領域は処理が進むにつれ
て円環的に移動していく。
【0003】これから圧縮を行うデータ(先読み領域内
のデータ)は履歴アレイ中の先読み領域以外の部分から
始まる文字列、つまり既に圧縮が終了している入力デー
タを格納するエントリから始まる文字列と照合し、一致
列を求める。十分に長い一致列が見つかったら、入力デ
ータの一致列の部分に対する符号語として、履歴アレイ
内のその一致列の先頭位置、長さを符号語として送出す
る。必要に応じてこれらの値は可変長符号化してさらに
効率を良くする。一致列の先頭位置はなるべく最新のも
のに統一し、先読み領域の先頭との相対距離で表すこと
によって、比較的小さい値に集中させることができ、可
変長符号化が有効に働く。履歴アレイ内は常に最新の符
号化済みのデータが格納されるように更新していく。つ
まり、LZ77型は常に最新の符号化済みのデータを
“辞書”としており、辞書に登録されている文字列は履
歴アレイ内の既に圧縮を終えたデータを格納するエント
リから始まる一定長以下の文字列すべてとなる。これは
レンペル−ジブ方式のもう一つの形態であるLZ78型
の圧縮方法に比べて辞書に登録されている文字列が多い
ことになり、より長い一致列が見つかり良い圧縮率を示
すことが多い。
【0004】十分長い一致列が見つからなかった場合の
処置法としてLZSSと呼ばれるアルゴリズムがある。
1ha,gzipなどのファイル圧縮用フリーソフトは
LZSSを基本としている。LZSSは二つの符号化モ
ードを用いる。十分に長い一致列(1シンボル1byt
eの場合で3シンボル以上が普通)が見つかった場合に
用いるコピーモードと、見つからなかった場合に用いる
リテラルモードである。コピーモードの場合は一致長を
表すビット列と一致位置を表すビット列が符号語とな
る。リテラルモードの場合には先頭一文字がそのまま送
出される。リテラルモードとコピーモードを区別するた
めに1ビットのフラグをつけるか、または一致長と入力
データのアルファベットを合わせて新たに大きなアルフ
ァベットを生成するといった処置がとられる。
【0005】LZ77型を実装する上では、これから圧
縮を行う入力文字列と履歴アレイ内の文字列との照合処
理を高速に行うことが問題となる。図10に示すよう
に、観念的には履歴アレイ手段1に対して何らかの検索
手段2を設定し、履歴アレイ内の文字列はすべてこの検
索手段2に登録する形になる。なお、図10において、
3は符号化データ生成手段、4は符号化手段である。
【0006】現在は専用ハードウェアで並列的に履歴ア
レイ内を検索する他に、履歴アレイ内が順次更新される
ことから、二分木、トライなどの木構造を使う検索手段
か、ハッシュ表に衝突時用の線形リストを備えた検索手
段がよく用いられる。検索手段は文字列の先頭の履歴ア
レイ内の位置を示すポインタを用いて構成される。検索
手段は文字列の先頭位置を示すポインタから履歴アレイ
内の文字列を読み込みターゲットの文字列と比較する。
【0007】二分木を用いた方法はIEEEの刊行物
「IEEE トランザクション オンコミュニケーショ
ン」1986年vol.34,no.12,pp.11
76−1182に開示されている。トライを用いた方法
は米国特許第4,906,991号明細書に詳しく述べ
られている。ハッシュ表+線形リストの方法は特開平3
−68219号公報に詳しく述べられている。
【0008】それぞれの検索法を図11〜図14に示
す。図11は履歴アレイ手段の状態を表し、図12,図
13,図14は履歴アレイ手段が図11の状態のときの
各検索手段の構成を表す。図12は二分木を用いた方
法、図13はトライを用いた方法、図14はハッシュテ
ーブルに衝突用の線形リストを備えた方法である。アレ
イから溢れた文字列は検索手段から削除する必要がある
ため、検索手法は削除のコストが低いものでなければな
らない。
【0009】
【発明が解決しようとする課題】LZ77型では、長い
一致列が見つかれば圧縮率は向上する。よりたくさんの
文字列とマッチングをとればより長い一致列が見つかる
可能性が高くなり、そのためには履歴アレイの大きさ
N,コピーの最大長Lを大きくすればよい。しかし、
N,Lを大きくすると三つの問題が生じる。
【0010】第一にN,Lの増大は文字列の位置、長さ
を表すために必要なビット数の増加につながり、かえっ
て圧縮率を劣化させる恐れがある。しかし、この問題は
位置、長さなどを可変長符号化することである程度解決
できる。1シンボルを1バイト(8ビット)とした時、
位置,長さを固定長符号化するという前提の下では履歴
アレイ長N=8192程度、一致列の最大長L=64程
度が最良と言われていたが、現在ではN=32768,
65536、L=256〜1024程度が最もよい圧縮
率を示すことが判明している。
【0011】第二にN,Lの増大は符号化時にメモリを
大きく消費することにつながる。しかし、N=6553
6,L=2048程度であったら検索手段まで含めて高
々2メガバイトのメモリで済むため、現在ではワークス
テーションや高性能なパソコンで実行する上では問題な
く実行できる。
【0012】第三の問題が最も重大で、N,Lの増大は
符号化速度を著しく劣化させる。LZ77型の符号化速
度を見積もる指標として文字比較回数がある。データ長
をMとすると、二分木、トライ、ハッシュテーブル+線
形リストの文字比較回数は次のように近似される。
【0013】 ・特別に検索手段を設けない … M′LN ・二分木 … MLlog2 N ・トライ … ML ・ハッシュ表 … M′LN′
【0014】LZ77型では入力データは部分列に分解
され、部分列毎に符号語が対応することになるが、M′
はこの部分列の個数である。またN′は線形リストの平
均の長さである。二分木やトライを用いた場合、文字列
を検索手段に登録するためには検索手段を用いて検索を
行い、しかるべき位置に挿入しなければならない。その
ために、データ中の全ての位置から一定長以下の文字列
を検索手段を用いて検索しなければならない。これに対
してハッシュテーブルを使用する方法では文字列検索を
必要とするのは、符号化を行う文字列の先頭のみからに
限られる。一致列の途中から始まる文字列の検索手段へ
の登録に関してはハッシュ関数の計算とハッシュ表の1
レコードの書き換えだけで済み、文字列検索を必要とし
ない。そこでハッシュテーブルを用いた方法では文字列
比較回数はMではなく、M′の倍数という形で表せるの
である。N′は最悪Nに等しくなるが、十分なハッシュ
テーブルを用意すれば平均は十分に小さく、また、圧縮
率の多少の劣化を許容すればN′は適当な回数で打ち切
ることができるので小さい定数で抑えることもできる。
そのためにM′と二分木、トライの場合のMの差が効い
て、ハッシュテーブルを使用した方法の高速性が生まれ
る。とくに冗長の大きなデータの場合にはMとM′の差
が大きく、ハッシュテーブルを使用した場合と木構造を
用いた場合とでは実行速度の大きな違いが生じる。N=
65536,L=1024に設定すると二分木、トライ
では著しく符号化速度が劣化してしまい、ハッシュテー
ブルを使用した方法の独壇場となる。しかし、ハッシュ
テーブルを使用した方法で最長一致列を求めようとする
とN′が大きくなり、1回の検索にかかるコストが余り
にも大きく、特別に検索手段を設けない場合と変わらな
くなり、実行速度は極めて劣化してしまう。
【0015】検索手段に木構造を用いた場合の高速化手
法の一つが米国特許4,906,991号の拡張具体例
に開示されている。そこで述べられている方法は、検索
手段にトライ構造を用い、符号化する文字列の先頭から
始まる文字列のみを検索手段に登録する方法である。ま
た、一致長が2または3の場合にその途中から始まる文
字列を検索手段に登録する方法についても簡単に述べら
れている。
【0016】本発明の目的は、大きな履歴アレイを用い
ても、比較すべき文字列の個数、検索手段へ登録する文
字列の数が効果的に削減でき、圧縮率の劣化を小さく抑
えて符号化速度の向上を図ることができるデータ圧縮方
式を提供することにある。本発明は先に述べた米国特許
4,906,991の方法を拡張した、より柔軟性のあ
る登録制御を行うことによって目的を達成する。
【0017】
【課題を解決するための手段】第1の発明は、入力デー
タを格納する複数のエントリを有する履歴アレイ手段を
有し、これから圧縮を行う入力データと、前記履歴アレ
イ手段に格納されている文字列を比較し、十分に長い一
致文字列が発見された場合には該一致文字列を前記履歴
アレイ手段における該一致文字列の位置、長さの情報で
表すことによって圧縮を達成するデータ圧縮装置におい
て、前記履歴アレイ手段の文字列の検索を行うための検
索手段と、前記履歴アレイ手段内の文字列の前記検索手
段への登録を制御する登録制御手段と、を有することを
特徴とする。
【0018】第2の発明は、第1の発明のデータ圧縮装
置において、各エントリが前記履歴アレイ手段の各エン
トリに対応するインデックスアレイ手段を持ち、前記履
歴アレイ手段のエントリの内、前記検索手段に登録され
る文字列の先頭のエントリにのみインデックスを振り、
前記インデックスアレイ手段は前記履歴アレイ手段の該
エントリに対応する位置に該インデックスを保持し、前
記アレイ手段中の位置を表す情報を該インデックスから
生成される位置コードによって表すことを特徴とする。
【0019】第3の発明は、第1または第2の発明にお
いて、前記登録制御手段は該一致文字列の長さに基づい
て前記検索手段に登録される新たな文字列を決定するこ
とを特徴とする。
【0020】第4の発明は、第3の発明において、前記
検索手段に新たに登録される文字列は入力データ中の該
一致文字列の先頭から始まる文字列と、該一致文字列の
長さが予め決められた閾値以下の場合に該一致文字列の
途中の位置から始まる文字列であることを特徴とする。
【0021】第5の発明は、第4の発明において、該閾
値を動的に変更することを特徴とする。
【0022】第6の発明は、第1または第2の発明にお
いて前記登録制御手段は該一致文字列の先頭の前記履歴
アレイ手段における位置に基づいて前記検索手段に登録
される新たな文字列を決定することを特徴とする。
【0023】第7の発明は、第6の発明において前記検
索手段に新たに登録される文字列は入力データ中の該一
致文字列の先頭から始まる文字列と、該一致文字列の先
頭の前記履歴アレイ手段内の位置と入力データ中の該一
致文字列の先頭位置との相対距離が予め決められた閾値
以上の場合には該一致文字列の途中の位置から始まる文
字列であることを特徴とする。
【0024】第8の発明は、第7の発明において、該閾
値を動的に変更することを特徴とする。
【0025】第9の発明は、入力データを格納する複数
のエントリを有する履歴アレイ手段を持ち、これから圧
縮を行う入力データと前記履歴アレイ手段に格納されて
いる既に符号化を終えている入力データを比較し、十分
に長い一致文字列が発見された場合には該一致文字列を
前記履歴アレイ手段における該一致文字列の位置、長さ
の情報で表すことによって圧縮を達成するデータ圧縮装
置において、前記履歴アレイ手段の文字列の検索を行う
ための検索手段と、入力データ中の該一致文字列の先頭
から高々閾値個までの位置から始まる文字列を前記検索
手段へ登録する登録制御手段と、を有することを特徴と
する。
【0026】第10の発明は、第9の発明のデータ圧縮
方法において、各エントリが前記履歴アレイ手段の各エ
ントリに対応するインデックスアレイ手段を持ち、前記
履歴アレイ手段のエントリの内、前記検索手段に登録さ
れる文字列の先頭のエントリにのみインデックスを振
り、前記インデックスアレイ手段は前記履歴アレイ手段
の該エントリに対応する位置に該インデックスを保持
し、前記アレイ手段中の位置を表す情報を該インデック
スから生成される位置コードによって表すことを特徴と
する。
【0027】第11の発明は、第1または第9の発明に
おいて、各エントリが前記履歴アレイ手段の各エントリ
に対応するインデックスアレイ手段を持ち、前記検索手
段に登録されている文字列の先頭のエントリの内、連続
する該エントリから成るブロックにインデックスを割り
振り、前記インデックスアレイ手段は前記履歴アレイ手
段の該エントリに対応する位置に、該エントリが属する
該ブロックのインデックスを保持し、前記アレイ手段の
位置を表す情報を該エントリが属する該ブロックのイン
デックスと該エントリの該ブロック内での位置を表す情
報から生成される位置コードによって表すことを特徴と
する。
【0028】
【作用】本発明では検索手段への履歴アレイ内の文字列
の登録を制御するという形で、比較する文字列の個数と
検索手段へ登録する文字列の個数を削減させている。圧
縮率を良くするための大きな履歴アレイでは同じ文字列
が頻繁に現れることが多く、符号化速度の面から大きな
負荷を与えるが、本発明はこれを解消するための手段を
与える。
【0029】圧縮を行う文字列は履歴アレイ内の文字列
とのマッチングをとって一致列を求める。このように符
号化する文字列の場合、検索は必須で、その結果を利用
して検索手段に容易に挿入することができるので、符号
化の先頭位置から始まる文字列については検索手段に登
録するのが妥当である。一致列が見つかった場合、符号
化された文字列の途中の位置から始まる文字列を処理す
る方法が本発明の着眼点である。登録制御手段の判断の
基準は、復元側でもわかる仕組みでなければならない。
そこで、一致長や一致列の位置といった情報から生成さ
れる基準を使用する方法が考えられる。
【0030】一致長が長い文字列が符号化された場合、
その途中から始まる文字列に関しても既に履歴アレイ内
に存在しているものが多いことになる。そこで途中から
始まる文字列の登録を控えても圧縮率に大きく影響しな
いことが期待できる。本発明の第3から第5の発明はこ
のことを利用した方式である。同じような文字列が繰り
返し現れることが冗長度の高いデータに対しては、検索
構造への無駄な登録を大きく省くことができ、履歴アレ
イ内から始まる文字列をすべて登録していた従来の方式
に比べて符号化速度を向上させることができる。
【0031】一致文字列の履歴アレイ内での位置に基づ
いて符号化された文字列の途中の位置から始まる文字列
を登録するかを判断するという手法は次のようになる。
一致列が昔に現れたものであったら、その列は近い内に
履歴アレイから溢れてしまう。そのような状況になって
もその文字列が絡んだ文字列が参照できるようにするた
めに、途中から始まる文字列を登録するのである。逆に
比較的近い位置に一致列が同定された場合、その符号化
文字列が絡んだ文字列はしばらくは履歴アレイ内に存在
するので、あえて符号化された文字列の途中から始まる
文字列まで検索手段に登録しなくても圧縮率はそれ程劣
化しないことが期待できる。冗長なデータでは比較的近
い位置に最長一致列が見つかることが多いため、検索手
段に登録される文字列を絞ることができ、従来の方式に
比べて符号化速度を向上させることができる。
【0032】また、単純に一致文字列の先頭から閾値個
までの位置から始まる文字列を登録する方法が考えられ
る。ただし、閾値が一致文字列より大きい場合は一致文
字列のすべての位置から始まる文字列を登録する。そう
いった意味ではこの方法も、一致長に基づいて登録され
る文字列が決めている、とみなすこともできる。この場
合、閾値を小さく設定すると登録される文字列が少なく
なり、符号化速度の向上を生む。
【0033】本発明の方式では、履歴アレイ中のすべて
の位置から始まる文字列を参照することができるわけで
はないので、一致列の先頭位置をアレイ中の位置でその
まま表すと冗長になる。必要な位置にだけインデックス
を振り、一致列の先頭位置のインデックスと最新のイン
デックスの差を用いて位置を表すことによって、履歴ア
レイの位置で見た相対距離で表すより小さな値で表現で
き、位置を表す符号語のビット長に関しては有利にな
る。第2の発明のように、インデックスアレイを用い
て、各エントリに対応するインデックスを保持する必要
がある。また、検索手段に登録されている文字列の先頭
位置の中で連続するものをまとめたブロックを形成し、
ブロックに割り振ったインデックスを用いて一致列の先
頭位置を表すこともできる。
【0034】
【発明の実施の形態】次に、本発明の実施例について図
面を参照して説明する。
【0035】図1は、一実施例のデータ圧縮装置を示す
構成図である。この装置は、入力データを格納する複数
のエントリを有する履歴アレイ手段1と、履歴アレイ手
段1中の文字列の検索を容易にするための検索手段2
と、履歴アレイ手段1の文字列の検索手段2への登録を
以下に述べる方法によって制御する登録制御手段5と、
検索手段2に登録されている文字列の先頭位置に対応す
るエントリにのみインデックスを保持するインデックス
アレイ手段6と、インデックスアレイ手段6にインデッ
クスを供給するインデックス更新手段7と、符号化デー
タ生成手段3と、符号化手段4とから構成されている。
【0036】次に、このデータ圧縮方式の動作を図2の
フローチャートを参照しながら説明する。
【0037】入力データをX=x(0)x(1)x
(2)…とする。履歴アレイ手段1はNシンボルの入力
データを格納するとする。1シンボル1バイト(8ビッ
ト)として、N=32768または65536が適当で
ある。Nは任意の値でよいが円環的に用いるため、2の
巾で採ることがよく行われる。また、一致長の最大長L
は256以上にとる。履歴アレイ手段における先読み領
域はL以上の大きさにする。この実施例では先読み領域
の大きさをLとする。
【0038】まず、履歴アレイ手段1,検索手段2,イ
ンデックスアレイ手段6,インデックス更新手段7を初
期化する(ステップS1)。
【0039】履歴アレイ手段の初期状態は空でも適当な
デフォルトの文字列でも、要は復元時に同じ状態が再現
できるものであったら何でもよい。検索手段2,インデ
ックスアレイ手段6,インデックス更新手段7の初期状
態はアレイ手段の初期状態に合わせて決まる。
【0040】今、…x(s−2)x(s−1)までの符
号化を終えてx(s)x(s+1)…という文字列の符
号化を行うものとする(ステップS2)。このとき履歴
アレイ手段内の各エントリにはx(s−N+L),…,
x(s−1),x(s),…,x(s+L−1)という
文字列が格納されており、特に先読み領域にはx
(s),…,x(s+L−1)という文字列が格納され
ている。検索手段2に登録されている文字列はx(s−
N+1),…,x(s−1)の内、限定された位置から
始まる、長さL以下の文字列である。検索手段2に登録
されている文字列の先頭位置に対応するインデックスア
レイ手段6のエントリには対応するインデックスが保持
されている。
【0041】検索手段2を用いて文字列x(s)x(s
+1)…と検索手段2に登録されている文字列と比較し
(ステップS3)、最長一致列を求める。場合によって
は最長一致列ではなくなるべく長い一致列でよい。x
(s)x(s+1)…は検索結果が分かっているので検
索構造へ登録する(ステップS4)。x(s)が格納さ
れているエントリにはインデックス更新手段7から供給
されるインデックスを割り振り、インデックスアレイ手
段6に保持する。インデックス更新手段7はインデック
スアレイ手段6にインデックスを供給する度にインデッ
クス値を1更新する。インデックスは各エントリを区別
できればよいので、Nに対する剰余で表すことにより0
からN−1で表すことができる。
【0042】最長一致列がx(s−N+L+k)…x
(s−N+L+k+l−1)=x(s)…x(s+l−
1)であったとする(ステップS5)。検索手段2は、
一致長lを符号化データ生成手段3に送る。lが予め決
められた一定値M以上であったら、符号化データ生成手
段3は一致列が見つかったというフラグとともにx
(s)…x(s+l−1)に対応する符号語としてlと
x(s−N+L+k)の位置に対応するエントリに保持
されているインデックスとx(s)の位置に対応するエ
ントリに保持されているインデックスとの差(位置コー
ド)を符号化手段4に送出する(ステップS6、これを
コピーモードによる符号化と呼ぶ)。lがMよりも小さ
かったらl=1として、符号化データ生成手段は一致列
が見つからなかったというフラグとともにx(s)をそ
のまま符号化手段に送出する(ステップS7、これをリ
テラルモードによる符号化と呼ぶ)。
【0043】符号化手段4はl,d,x(s)などを最
終的な二進列に変換する(ステップS6,S7)。符号
化手段4には固定長のものの他、ハフマン符号化、算術
符号化などを利用できる。符号化手段4はデータが入力
される度に符号化を行う他、バッファに値を一時的に蓄
え、ブロック単位に処理することもできる。
【0044】x(s)…x(s+l−1)の符号化が終
わった時点で、履歴アレイ手段1を更新する。新たな入
力データを読み込み、先読み領域はx(t+l)のエン
トリから始まる領域に移動する。このとき、履歴アレイ
手段1から削除された古い文字列は検索手段2からも削
除される(ステップS8)。
【0045】登録制御手段5はx(s+1),…,x
(s+l−1)から始まる文字列のうち、検索手段2に
登録するものがあるかどうかを判断する。例えばリテラ
ルモードで符号化された文字列の場合は登録するものが
ないと判断して、次の文字列の符号化に移る(ステップ
S9)。登録すると選択された文字列は検索手段2へ登
録し、それぞれの先頭位置のエントリに順にインデック
ス更新手段7から供給される番号を振り、インデックス
アレイ手段6に保持する(ステップS10)。
【0046】以上で入力データの部分列x(s)…x
(s+l−1)の符号化は終了で、履歴アレイ手段1に
新しいシンボルを挿入し、x(s+l)から始まる文字
列の符号化を開始する。
【0047】登録制御において一致長を基準にする場
合、一致長が閾値よりも大きかったら登録を控えるのが
妥当である。閾値は経験的には4から16程度が良い結
果をもたらす。動的に閾値を変化させる場合は、一致長
のそれまでの平均値を閾値とする方法が考えられる。図
3は平均値を用いて閾値を動的に変化させる場合の登録
制御手段の処理の流れを示すフローチャートである。
【0048】図4は従来方式と一致長を基準にする登録
制御方式を比較した図である。図2の処理の流れに沿っ
て、図4の状況での一致長を基準とした登録制御の具体
例を説明する。履歴アレイ手段22は12個のエントリ
から成っている。履歴アレイ手段22の中で灰色の部分
は先読み領域で、これから符号化を行う文字列を格納し
ており、今は履歴アレイ手段の8から11の位置のエン
トリである。履歴アレイ手段22の先読み領域以外の位
置から始まる文字列はすべて検索手段に登録されている
として、インデックスアレイ手段21は‘0’から順に
‘7’までのインデックスを格納しているとする。先読
み領域の長さが4のため、文字列の検索手段への登録
は、ある位置から始まる長さ4の文字列を登録する、と
いう形で行う。このとき、履歴アレイ手段22内で先読
み領域の先頭から始まる文字列(圧縮を行おうとしてい
る文字列)と検索手段に登録されている文字列との間で
最長一致列を求めると、“bcb”という文字列が得ら
れる(ステップS3)。このとき8から始まる文字列
は、一致列を求める過程で検索手段に登録される。イン
デックスアレイ手段21の対応するエントリには新しい
インデックスである‘8’が格納される(ステップS
4)。“bcb”に対する符号語は一致長‘3’(先読
み領域の先頭のインデックスと比較して3個前のインデ
ックスで示される位置、という情報)を元に生成される
(ステップS6)。符号語の出力が済んだら、履歴アレ
イ手段22を3文字分更新する。先読み領域は11から
始まる領域に移動する。履歴アレイ手段を円環的に使用
しているため、先読み領域は(11,0,1,2)の位
置のエントリに移動する。0,1,2から始まる文字列
は検索手段から削除される。その位置のインデックスも
無効になる。履歴アレイ手段22の(0,1,2)の位
置には新たに読み込んだデータである“caa”が挿入
される(ステップS9)。図4(a)は登録制御が行わ
れない場合、図4(b)は登録制御が行われる場合の状
況を表している。両者とも履歴アレイ手段の状態は同一
で、24または26で表される。登録制御では、履歴ア
レイ手段24(または26)の9,10から始まる文字
列(“cbbc”,“bbca”)を検索手段に登録す
るかどうかが問題になる(ステップS9)。従来方式は
9,10から始まる文字列を検索手段に登録する(図4
(a))。対応するインデックス‘9’,‘10’がイ
ンデックスアレイ手段23に格納される。一致長を基準
にした登録制御では、一致長が3のため、閾値が4以上
であったら従来方式と同様に検索手段への登録、インデ
ックスアレイ手段23の更新を行い(図4(a),ステ
ップS10)、閾値が4よりも小であったら9,10か
ら始まる文字列の登録は行わない(図4(b))。イン
デックスアレイ手段25の9,10のエントリは空にな
る。図4(a)の状況で、次に11の位置に格納される
インデックスは‘11’であるが、図4(b)では
‘9’となる。
【0049】登録制御において一致列の開始点を基準に
する場合、一致列の開始点の位置が閾値よりも小さかっ
たら登録を控えるのが妥当である。動的に閾値を変化さ
せる方法は一致長の場合と同様に平均値を使用する方法
が考えられる。
【0050】図5は従来方式と一致位置を基準にする登
録制御方式を比較した図である。図5の状況での一致位
置を基準とした登録制御の具体例を説明する。図5の履
歴アレイ手段32やインデックスアレイ手段31の状況
は図4と同様である。また、最長一致列を求め、履歴ア
レイ手段を更新する状況も図4と同様である。図5
(a)は登録制御が行われない場合、図5(b)は登録
制御が行われる場合の状況を表している。両者とも履歴
アレイ手段の状態は同一で、34または36で表され
る。登録制御では、履歴アレイ手段34(または36)
の9,10から始まる文字列(“cbbc”,“bbc
a”)を検索手段に登録するかどうかが問題となる。従
来方式は図4の場合と同様に履歴アレイ手段34の9,
10から始まる文字列を検索手段に登録する(図5
(a))。対応するインデックス‘9’,‘10’がイ
ンデックスアレイ手段33に格納される。一致位置を基
準にした登録制御では、一致位置が先読み領域の先頭か
らみて3個前の位置のため、閾値が4以上であったら従
来方式と同様に検索手段への登録、インデックスアレイ
手段33の更新を行い(図5(a))、閾値が4よりも
小であったら9,10から始まる文字列の登録は行わな
い(図5(b))。インデックスアレイ手段35の9,
10のエントリは空になる。図5(a)の状況で、次に
11の位置に格納されるインデックスは‘11’である
が、図5(b)では‘9’となる。
【0051】次に、本発明の登録制御手段のもう一つの
実施例について説明する。図6はこの実施例の登録制御
の流れを示す図である。先頭x(s)から始まる文字列
は先に述べたようにこの符号化のための検索結果を用い
て既に登録されているとする。今一致列がx(s)…x
(t)(一致長l=t−s+1)であったとする(ステ
ップT1)。リテラルモードで符号化された場合(l=
1)、または閾値r=1の場合には先頭のx(s)から
始まる文字列のみが検索手段2に登録されるので、一致
列の途中から始まる文字列の登録はない(ステップT
2)。そうでない場合、一致列として切り出された文字
列の中で、最初のr個の位置から始まる文字列のみを検
索手段2に登録する。つまり、x(s)…x(t)(l
=t−s+1)の途中から始まる文字列としては、x
(s+1),…,x(s+r−1)から始まる文字列の
みを検索手段2に登録するよう登録制御を行うのである
(ステップT4)。ただし、l<rの場合にはx(s+
1),…,x(s+l−1)(=x(t))から始まる
文字列を検索手段に登録する(ステップT3,T5)。
閾値rの設定を変更することで符号化速度と圧縮率のど
ちらを重視するかを調節するようなアプリケーションも
考えられる。この場合、圧縮データの先頭にこの閾値を
記しておくことにより、復元側ではこの閾値を知ること
ができ、この値さえ知っていれば、履歴アレイ中のどの
位置から始まる文字列が登録されているのかを正しく知
ることができるため正しく復元できる。
【0052】図7は従来方式と一致列の先頭から閾値個
までの文字列を登録する方式を比較した図である。図7
の状況での本登録制御方式の具体例を説明する。図7の
履歴アレイ手段42やインデックスアレイ手段41など
の状況は図4と同様である。また、最長一致列を求め、
履歴アレイ手段を更新する状況も図4と同様である。図
7(a)は登録制御が行われない場合、図7(b)は登
録制御が行われる場合の状況を表している。両者とも履
歴アレイ手段の状態は同一で、44(または46)で表
される。登録制御では、履歴アレイ手段44(または4
6)の9,10から始まる文字列(“cbbc”,“b
bca”)を検索手段に登録するかどうかが問題にな
る。従来方式は履歴アレイ手段44の9,10から始ま
る文字列を検索手段に登録する(図7(a))。対応す
るインデックス‘9’,‘10’がインデックスアレイ
手段43に格納される。閾値を2とした場合、先頭の次
の位置である、履歴アレイ手段46の9の位置から始ま
る文字列が検索手段に登録される(図7(b))。イン
デックスアレイ手段46の9の位置のエントリは‘9’
が格納され、10の位置のエントリは空となる。図7
(a)の状況で、次に11の位置に格納されるインデッ
クスは‘11’であるが、図7(b)では‘10’とな
る。
【0053】また、更に閾値rが2以上のときには次の
ように圧縮率の改善をみることができる。r≧2の時に
は符号化する文字列の先頭x(s)の次の文字x(s+
1)から始まる文字列を検索手段2に登録する必要があ
るため、木構造などを検索手段に用いた場合にはその過
程でx(s+1)から始まる文字列に対する一致列を求
める必要がある。そこで、x(s)からの一致列とx
(s+1)からの一致列を比較してx(s+1)からの
一致列の方が大きかったらx(s)をリテラルモードで
符号化し、x(s+1)からの一致列をコピーモードで
符号化する。こうすることによって、2回のコピーモー
ドで符号化するところを1回のリテラルモードと1回の
コピーモードで符号化できる場合が多い。リテラルモー
ドの方がコピーモードよりも少ないビット数で表現でき
るため圧縮率が向上するのである。この処理の詳細な説
明を図8に示す。
【0054】x(s)からの一致列がx(s)…z(s
+l−1)(lは一致長)であったとする(ステップU
1)。lが十分に大きくないときにはx(s)をリテラ
ルモードで符号化し(ステップU3)。履歴アレイ手段
1の更新、履歴アレイ手段1から溢れた文字列を検索手
段2から溢れた文字列の削除を行い(ステップU8)、
x(s+1)の符号化に移る(ステップU13)。lが
十分に大きいときには、先頭の次の文字x(s+1)か
ら始まる文字列と履歴アレイ手段1内の文字列との最長
一致列を求め、その検索結果を用いてx(s+1)から
始まる文字列を検索手段2に登録する(ステップU
4)。一致列をx(s+1)…x(s+l′)(l′は
一致長とする)。lとl′を比較し(ステップU5)、
l′の方が大きかったらx(s)をリテラルモードで、
x(s+1)…x(s+l′)をコピーモードで符号化
する(ステップU9)。符号化された分の大きさ((1
+l′)個の文字分)履歴アレイ手段1を更新し、履歴
アレイ手段1から溢れた文字列の削除を行う(ステップ
U9)。x(s+1)…x(s+l′)から始まる文字
列に対して図6に示した登録制御法で検索手段2への登
録を行う(ステップU11)。そして、x(s+l′+
1)から始まる文字列の符号化に移る(ステップU1
4)。lがl′以上の場合にはx(s)…x(s+l−
1)をコピーモードで符号化する(ステップU7)。符
号化された分の大きさ(l個の文字分)履歴アレイ手段
を更新し、履歴アレイ手段1から溢れた文字列の削除を
行う(ステップU10)。x(s)…x(s+l−1)
から始まる文字列に対して図6に示した登録制御法で検
索手段2への登録を行う(ステップU12)。このと
き、x(s+1)から始まる文字列の登録は既に済んで
いることに注意。そして、x(s+l)から始まる文字
列の符号化に移る(ステップU15)。
【0055】以上のように登録制御を行うと、検索手段
に登録されている履歴アレイ手段内の文字列は連続して
現れることが多くなる。ここで“連続して現れる文字
列”は、隣合う位置から始まる文字列、ということを意
味する。次に、このことを利用して、圧縮率を向上させ
る方式を図9を用いて説明する。
【0056】今、履歴アレイ手段内でx(p),x(p
+1),…x(r)から始まる文字列は検索手段に登録
されており、x(p−1),x(r+1)から始まる文
字列は検索手段に登録されていないとする。このとき、
x(p)…x(r)を“ブロック”と呼ぶことにする。
図9に示すように、履歴アレイ手段52の先読み領域以
外のエントリは、いくつかのブロックと検索手段に登録
されていない部分に分けられることになる。このとき現
れたブロックには順にインデックスを割り振り、インデ
ックスアレイ手段51はこのブロックのインデックスを
格納する。図9に示したように、同じブロック内のエン
トリは同一のインデックスをインデックスアレイ手段5
1に格納している。従来方式では履歴アレイ手段内の先
読み領域以外の位置から始まるすべての文字列が検索手
段に格納されているため、先読み領域以外の部分は一つ
の大きなブロックになる。
【0057】先読み領域内の文字列をx(s)x(s+
1)…とし、x(s)x(s+1)…と履歴アレイ手段
内で検索手段に登録されている文字列との最長一致列が
x(s−k)…x(s−k+l−1)(=x(s)…x
(s+l−1))であったとする。前述の方式では一致
位置の情報をx(s−k)に対応するインデックスに基
づいて生成したが、このブロックを用いた方式では、x
(s−k)の属するブロックのインデックスとx(s−
k)のそのブロック内での位置の情報に基づいて生成す
る。具体的には、x(s−k)が先読み領域からみてr
個前のブロックに属し、そのブロックの最後のエントリ
にはx(s−k+u)が格納されているとすると、
(r,u)という情報でx(s−k)の位置を指定す
る。図9は一致長が5で、r=3,u=0である状況を
表している。rはインデックスアレイ手段51から求め
られる。uはブロックのインデックスに対してそのブロ
ックの最後のエントリの位置を格納するアレイを用意す
る方法か、またはインデックスアレイ手段51を用いて
同じインデックスが続くところまで検索する方法によっ
て求めることができる。
【0058】一般に複数のエントリが集まってブロック
を形成するため、ブロックの数は検索手段に登録されて
いるエントリの数に比べてはるかに小さいものとなる。
ブロックのインデックス情報(一致列はr個前のブロッ
クから始まる、というrの値)の分布は、個々のエント
リに割り振ったインデックス情報(一致列はr′個前の
インデックスの位置から始まる、というr′の値)の分
布に比べて小さい値に集中するため、ブロックのインデ
ックスの符号長の方が小さい値で表せることになる。一
方、ブロックのインデックスを用いる方法はブロック内
の位置を表す情報も付加しなければならないため、全体
としてみれば個々のエントリにインデックスを割り振る
方法と圧縮率は変わらない場合もある。しかし、例えば
次に示すような場合に圧縮率の改善をみることができ
る。
【0059】データ中にランダムに近い大きな領域があ
ると、リテラルモードの出力が続く。つまりその部分の
文字列は連続して検索手段に登録され、大きなブロック
を形成する。しかし、そのブロックから始まる文字列は
その後参照される可能性は低い。各エントリにインデッ
クスを割り振った場合には、そのような大きなブロック
より遠い位置に割り振られたインデックスは、最新のイ
ンデックスと大きく離れた値となる。しかし、ブロック
のインデックスは最新のブロックのインデックスとそれ
ほど離れた値とはならない。ブロックのインデックスを
用いて一致位置を表す方法は、このように大きな無駄な
領域を飛び越えて一致位置を効果的に表す方法となるの
である。
【0060】検索手段として二分木を用い、履歴アレイ
手段の大きさN=16384、一致列の最大長L=25
6として2メガバイトのCプログラムソースを圧縮する
実験を行った。従来の方法では175秒の実行時間で2
8.1%の圧縮率を達成した。図3に示した登録制御を
行った本発明では、32秒の実行時間で29.2%の圧
縮率を達成した。つまり、1%未満の圧縮率の劣化で6
倍の符号化速度の向上を得ている。また、図8に示した
本発明において閾値を2に設定して登録制御処理を行っ
た本発明の方式では32秒の実行時間で28.7%の圧
縮率を達成し、図3の登録制御法と同じ圧縮時間で0.
5%程度優れた圧縮率を達成している。また、N=81
92,L=32と変更して従来の方法と同じデータを圧
縮したときには、67秒の実行時間で31.0%の圧縮
率であった。つまり、検索手段として二分木を用い、高
速な符号化を求めるのなら、N,Lを変更するよりも、
本発明の方式を採用した方が有効であり、かつ圧縮率の
劣化も小さいことがわかる。
【0061】また、図9に示したブロックのインデック
スを用いた符号化法で等長符号化を行った場合の効果は
次のように評価できる。検索手段に登録されているエン
トリの数をM、ブロックの平均長をBとする。ブロック
の数はM/Bとなる。個々のエントリにインデックスを
順に割り振った場合、インデックスを表すためのビット
数はほぼlogMビットとなる。一方、ブロックのイン
デックスを表すためのビット数はほぼlog(M/B)
=logM−logBビットとなる。ここでlogの底
は2である。ブロックがどれも同じ大きさであったら、
ブロック内での位置を表すためにほぼlogBビット必
要になり、この場合はブロックのインデックスを用いた
方式を用いても圧縮率は変わらない。しかし、履歴アレ
イ手段中にランダムに近い大きな領域がある場合、その
領域からなるブロックを除いた、実際に後に参照される
文字列を含むブロックの平均長B′はBよりも小さくな
る。そこで、ブロックのインデックスを用いる方式によ
って一回の一致位置情報の出力につき(logB−lo
gB′)ビットだけ圧縮データを短縮化できるのであ
る。
【0062】以上本発明のデータ圧縮方式について説明
したが、本発明は、データ復元方式にも応用できる。デ
ータ復元方式の実施態様を以下に説明する。 (1)既に復元を終えたデータを格納する複数のエント
リを有する履歴アレイ手段を有し、前記履歴アレイ手段
における位置、長さを表す圧縮符号語に対応する文字列
を複製することで元データを復元するデータ復元方式に
おいて、各エントリが前記履歴アレイ手段の各エントリ
に対応したインデックスアレイ手段を有し、圧縮データ
に対応する可能性がある文字列は前記履歴アレイ手段の
制限された位置から始まる文字列のみであり、前記イン
デックスアレイ手段は、圧縮データに対応する可能性が
ある文字列の先頭位置にのみ割り振られたインデックス
を保持し、圧縮データにおける前記インデックスから生
成された圧縮符号語から複製される文字列の開始点を確
定することを特徴とするデータ復元方式。 (2)圧縮データに対応する可能性がある前記履歴アレ
イ手段内の文字列の先頭位置は、前記復元文字列の長さ
に基づいて決定されることを特徴とする(1)記載のデ
ータ復元方式。 (3)圧縮データに対応する可能性がある前記履歴アレ
イ手段内の先頭位置は、復元された文字列の先頭位置と
前記復元文字列の長さが予め決められた閾値以下であっ
た場合の前記復元文字列の途中の位置であることを特徴
とする(2)記載のデータ復元方式。 (4)前記閾値を動的に変更することを特徴とする
(3)記載のデータ復元方式。 (5)圧縮データに対応する可能性がある文字列の先頭
位置は、圧縮データで指示される前記履歴アレイ手段内
の復元文字列と同一の文字列の先頭の前記アレイ手段に
基づいて決定されることを特徴とする(1)記載のデー
タ復元方式。 (6)圧縮データに対応する可能性がある前記履歴アレ
イ手段内の文字列の先頭位置は、復元文字列の先頭位置
と、圧縮データによって指示される復元文字列と同一の
文字列の先頭の前記履歴アレイ手段における位置と、前
記復元文字列の先頭の位置との相対距離が予め決められ
た閾値以上であった場合の前記復元文字列の途中の位置
であることを特徴とする(5)記載のデータ復元方式。 (7)閾値を動的に変更することを特徴とする(6)記
載のデータ復元方式。 (8)圧縮データに対応する可能性がある前記履歴アレ
イ手段内の先頭位置は、過去に復元された文字列の中で
先頭位置から閾値以下の順位の位置に制限されているこ
とを特徴とする(1)記載のデータ復元方式。 (9)前記履歴アレイ手段中の圧縮データに対応する可
能性がある文字列うち、連続している文字列の先頭エン
トリをブロックとしてまとめ、同じ該ブロックに属する
エントリには同じインデックスを割り振り、前記インデ
ックスアレイ手段はこれを格納し、圧縮符号語から該ブ
ロックのインデックスと該ブロック内での位置の情報が
求められ、一致列の開始位置が定まることを特徴とする
(1)記載のデータ復元方式。
【0063】
【発明の効果】以上説明したように本発明のデータ圧縮
方式を用いれば、大きな履歴アレイを用いても比較すべ
き文字列の個数、検索手段へ登録する文字列の数が削減
でき、符号化速度の向上を図ることができる。特に冗長
の大きなデータに対しては大きな符号化速度の向上を生
む。更に、登録制御を行うことを積極的に利用して、検
索手段に登録されている文字列の先頭エントリ、または
隣接する先頭エントリをまとめたブロックに割り振られ
たインデックスを用いて一致位置情報を表すことによ
り、圧縮率の劣化を小さく抑えることができる。このよ
うに本発明によって圧縮率を劣化させずに符号化速度の
向上を達成できるのである。
【0064】また、登録に検索と同じ時間が必要となる
木構造を用いた検索手段に関しては本発明のように選択
的に検索構造へ登録することは極めて効果がある。ハッ
シュテーブルを用いた方法でも、ハッシュ関数を計算す
る回数が少なくなるとともに、検索すべきアレイ内の文
字列の数も減少し、線形リストを辿る回数が減少するた
めに効果がある。このように、本発明の登録制御は様々
な検索手段に対応させることができる。
【図面の簡単な説明】
【図1】本発明の一実施例を示すブロック図である。
【図2】本発明の処理の流れを示す図である。
【図3】動的に閾値を変更する処理の流れを示す図であ
る。
【図4】一致長を基準にして登録制御を行う方式の具体
例を、従来方式と比較して示した図である。
【図5】一致位置を基準にして登録制御を行う方式の具
体例を、従来方式と比較して示した図である。
【図6】閾値個以下の位置から始まる文字列のみを検索
手段に登録する場合の登録制御手段の処理の流れを示す
図である。
【図7】閾値個以下の位置から始まる文字列のみを検索
手段に登録する方式の具体例を、従来方式と比較して示
した図である。
【図8】閾値個以下の位置から始まる文字列のみを検索
手段に登録する方式で、閾値が2以上の場合の改良型の
登録制御手段および符号化データ生成手段の処理の流れ
を示す図である。
【図9】ブロックのインデックスによって一致位置を表
す方式を示す図である。
【図10】従来の圧縮方式の構成を示す図である。
【図11】履歴アレイ手段を示す図である。
【図12】二分木を用いた方法を示す図である。
【図13】トライを用いた方法を示す図である。
【図14】ハッシュテーブルに衝突用の線形リストを備
えた方法を示す図である。
【符号の説明】
1 履歴アレイ手段 2 検索手段 3 符号化データ生成手段 4 符号化手段 5 登録制御手段 6 インデックスアレイ手段 7 インデックス更新手段

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】入力データを格納する複数のエントリを有
    する履歴アレイ手段を持ち、これから圧縮を行う入力デ
    ータと前記履歴アレイ手段に格納されている既に符号化
    を終えている入力データを比較し、十分に長い一致文字
    列が発見された場合には該一致文字列を前記履歴アレイ
    手段における該一致文字列の位置、長さの情報で表すこ
    とによって圧縮を達成するデータ圧縮装置において、 前記履歴アレイ手段の文字列の検索を行うための検索手
    段と、 前記履歴アレイ手段内の文字列の前記検索手段への登録
    を制御する登録制御手段と、を有することを特徴とする
    データ圧縮装置。
  2. 【請求項2】各エントリが前記履歴アレイ手段の各エン
    トリに対応するインデックスアレイ手段を持ち、前記履
    歴アレイ手段のエントリの内、前記検索手段に登録され
    る文字列の先頭のエントリにのみインデックスを振り、 前記インデックスアレイ手段は前記履歴アレイ手段の該
    エントリに対応する位置に該インデックスを保持し、前
    記アレイ手段中の位置を表す情報を該インデックスから
    生成される位置コードによって表すことを特徴とする請
    求項1記載のデータ圧縮装置。
  3. 【請求項3】前記登録制御手段は該一致文字列の長さに
    基づいて前記検索手段に登録される新たな文字列を決定
    することを特徴とする請求項1または請求項2記載のデ
    ータ圧縮装置。
  4. 【請求項4】前記検索手段に新たに登録される文字列は
    入力データ中の該一致文字列の先頭から始まる文字列
    と、該一致文字列の長さが予め決められた閾値以下の場
    合に該一致文字列の途中の位置から始まる文字列である
    ことを特徴とする請求項3記載のデータ圧縮装置。
  5. 【請求項5】前記閾値を動的に変更することを特徴とす
    る請求項4記載のデータ圧縮装置。
  6. 【請求項6】前記登録制御手段は該一致文字列の先頭の
    前記履歴アレイ手段における位置に基づいて前記検索手
    段に登録される新たな文字列を決定することを特徴とす
    る請求項1または請求項2記載のデータ圧縮装置。
  7. 【請求項7】前記検索手段に新たに登録される文字列は
    入力データ中の該一致文字列の先頭から始まる文字列
    と、該一致文字列の先頭の前記履歴アレイ手段内の位置
    と入力データ中の該一致文字列の先頭位置との相対距離
    が予め決められた閾値以上の場合には該一致文字列の途
    中の位置から始まる文字列であることを特徴とする請求
    項6記載のデータ圧縮装置。
  8. 【請求項8】前記閾値を動的に変更することを特徴とす
    る請求項7記載のデータ圧縮装置。
  9. 【請求項9】入力データを格納する複数のエントリを有
    する履歴アレイ手段を持ち、これから圧縮を行う入力デ
    ータと前記履歴アレイ手段に格納されている既に符号化
    を終えている入力データを比較し、十分に長い一致文字
    列が発見された場合には該一致文字列を前記履歴アレイ
    手段における該一致文字列の位置、長さの情報で表すこ
    とによって圧縮を達成するデータ圧縮装置において、 前記履歴アレイ手段の文字列の検索を行うための検索手
    段と、 入力データ中の該一致文字列の先頭から高々閾値個まで
    の位置から始まる文字列を前記検索手段へ登録する登録
    制御手段と、を有することを特徴とするデータ圧縮装
    置。
  10. 【請求項10】各エントリが前記履歴アレイ手段の各エ
    ントリに対応するインデックスアレイ手段を持ち、前記
    履歴アレイ手段のエントリの内、前記検索手段に登録さ
    れる文字列の先頭のエントリにのみインデックスを振
    り、 前記インデックスアレイ手段は前記履歴アレイ手段の該
    エントリに対応する位置に該インデックスを保持し、前
    記アレイ手段中の位置を表す情報を該インデックスから
    生成される位置コードによって表すことを特徴とする請
    求項9記載のデータ圧縮装置。
  11. 【請求項11】各エントリが前記履歴アレイ手段の各エ
    ントリに対応するインデックスアレイ手段を持ち、前記
    検索手段に登録されている文字列の先頭のエントリの
    内、連続する該エントリから成るブロックにインデック
    スを割り振り、 前記インデックスアレイ手段は前記履歴アレイ手段の該
    エントリに対応する位置に、該エントリが属する該ブロ
    ックのインデックスを保持し、前記アレイ手段の位置を
    表す情報を該エントリが属する該ブロックのインデック
    スと該エントリの該ブロック内での位置を表す情報から
    生成される位置コードによって表すことを特徴とする請
    求項1または請求項9記載のデータ圧縮装置。
JP24995695A 1994-10-04 1995-09-27 データ圧縮装置 Expired - Fee Related JP2910639B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24995695A JP2910639B2 (ja) 1994-10-04 1995-09-27 データ圧縮装置

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP23992694 1994-10-04
JP12113595 1995-05-19
JP7-121135 1995-05-19
JP6-239926 1995-05-19
JP24995695A JP2910639B2 (ja) 1994-10-04 1995-09-27 データ圧縮装置

Publications (2)

Publication Number Publication Date
JPH0946235A true JPH0946235A (ja) 1997-02-14
JP2910639B2 JP2910639B2 (ja) 1999-06-23

Family

ID=27314187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24995695A Expired - Fee Related JP2910639B2 (ja) 1994-10-04 1995-09-27 データ圧縮装置

Country Status (1)

Country Link
JP (1) JP2910639B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004062110A1 (ja) * 2002-12-26 2004-07-22 Fujitsu Limited データ圧縮方法、プログラム及び装置
JP2005269618A (ja) * 2004-03-15 2005-09-29 Microsoft Corp データ圧縮
JP2006295853A (ja) * 2005-04-14 2006-10-26 Sony Corp 符号化装置、復号装置、および、符号化方法ならびに復号方法
US7966296B2 (en) 2007-06-01 2011-06-21 Hitachi, Ltd. Storage system, storage controller and data compression method

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004062110A1 (ja) * 2002-12-26 2004-07-22 Fujitsu Limited データ圧縮方法、プログラム及び装置
US7536399B2 (en) 2002-12-26 2009-05-19 Fujitsu Limited Data compression method, program, and apparatus to allow coding by detecting a repetition of a matching character string
JP2005269618A (ja) * 2004-03-15 2005-09-29 Microsoft Corp データ圧縮
US7966424B2 (en) 2004-03-15 2011-06-21 Microsoft Corporation Data compression
JP2006295853A (ja) * 2005-04-14 2006-10-26 Sony Corp 符号化装置、復号装置、および、符号化方法ならびに復号方法
US7966296B2 (en) 2007-06-01 2011-06-21 Hitachi, Ltd. Storage system, storage controller and data compression method
US9342521B2 (en) 2007-06-01 2016-05-17 Hitachi, Ltd. Storage system, storage controller and data compression method

Also Published As

Publication number Publication date
JP2910639B2 (ja) 1999-06-23

Similar Documents

Publication Publication Date Title
US5883588A (en) Data compression system and data compression device for improving data compression rate and coding speed
US5870036A (en) Adaptive multiple dictionary data compression
JP3273119B2 (ja) データ圧縮・伸長装置
KR100950607B1 (ko) 허프만 코딩
US5001478A (en) Method of encoding compressed data
US5010345A (en) Data compression method
CN1446404A (zh) 操作码的双模数据压缩
JP3241788B2 (ja) データ圧縮方式
US7253752B2 (en) Coding apparatus, decoding apparatus, coding method, decoding method and program
US5010344A (en) Method of decoding compressed data
EP0435802B1 (en) Method of decompressing compressed data
JPH0946235A (ja) データ圧縮装置
JP3241787B2 (ja) データ圧縮方式
WO2009001174A1 (en) System and method for data compression and storage allowing fast retrieval
US6262675B1 (en) Method of compressing data with an alphabet
JP3105598B2 (ja) ユニバーサル符号を用いたデータ圧縮方式
JP3242795B2 (ja) データ処理装置及びデータ処理方法
Korodi et al. Lossless data compression using optimal tree machines
Hoang et al. Dictionary selection using partial matching
JP2003152548A (ja) データ圧縮における文字列検索方法
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JPH05152971A (ja) データ圧縮・復元方法
JP3012677B2 (ja) Zl符号化方法
Zia et al. Two-level dictionary-based text compression scheme
Sadakane Text compression using recency rank with context and relation to context sorting, block sorting and PPM/sup*

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080409

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20100409

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20110409

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees