JPH0936747A - データ圧縮方法及びデータ圧縮装置 - Google Patents

データ圧縮方法及びデータ圧縮装置

Info

Publication number
JPH0936747A
JPH0936747A JP7181485A JP18148595A JPH0936747A JP H0936747 A JPH0936747 A JP H0936747A JP 7181485 A JP7181485 A JP 7181485A JP 18148595 A JP18148595 A JP 18148595A JP H0936747 A JPH0936747 A JP H0936747A
Authority
JP
Japan
Prior art keywords
data
search
compression
string
data 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.)
Pending
Application number
JP7181485A
Other languages
English (en)
Inventor
Hidetoshi Sakakibara
秀敏 榊原
Atsuko Toda
亜津子 戸田
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.)
Toshiba Corp
Toshiba Computer Engineering Corp
Original Assignee
Toshiba Corp
Toshiba Computer Engineering 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 Toshiba Corp, Toshiba Computer Engineering Corp filed Critical Toshiba Corp
Priority to JP7181485A priority Critical patent/JPH0936747A/ja
Publication of JPH0936747A publication Critical patent/JPH0936747A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

(57)【要約】 【課題】 LZスライド辞書法によるデータ圧縮におい
てハッシュ法を用いてデータ検索を行うことにより、デ
ータ検索に時間を要すること無く、高速でデータの圧縮
を行うことができるデータ圧縮方法及びデータ圧縮装置
を提供する。 【解決手段】 データ入出力装置1によって圧縮処理対
象データをメモリ3上に読込むと、制御回路2は、圧縮
処理対象データ列と同じデータ列をハッシュ法によって
ハッシュ表より検索し、その検索されたデータ列と圧縮
処理対象データ列との各データを1データずつ比較して
両データ列の一致データ長を出力する。検索候補がなく
なるまで検索及び比較を繰返して、出力された一致デー
タ長が最長であるデータ列を検索された先頭位置から始
まるデータ列の中から選択する。そして、選択されたデ
ータ列の先頭位置と一致データ長とを一致情報として出
力し、圧縮処理対象データ列の先頭位置を検索候補とし
てハッシュ表に登録するよう構成した。

Description

【発明の詳細な説明】
【0001】
【発明が属する技術分野】本発明は、文章データ等のデ
ータを圧縮するデータ圧縮方法及びデータ圧縮装置に関
する。
【0002】
【従来の技術】文章データ等のデータを圧縮するデータ
圧縮方法の一例として、LZ(Lempel-Ziv)スライド辞
書法がある。このLZスライド辞書法は、図12に示す
ように、圧縮処理対象であるデータをその先頭から検索
していき、1度出現したデータ列が再度出現した場合
は、以前に出現したデータ列の先頭アドレスと両データ
列で一致するデータの長さとを一致情報として、再度出
現したデータ列に置換えて出力することによりデータ圧
縮を行う方法である。
【0003】このLZスライド辞書法においては、圧縮
対象データ列が以前に出現したデータであるか否かを検
索するために、様々なデータの検索法が用いられてい
る。例えば、2分木による検索法においては、入力デー
タ中に現れる各文字コードを先頭(根節点)として、順
次2つの節点に分岐して行く木構造をなす検索パスを構
成する。そして、ある文字コードとその後に続く文字コ
ードとについて、これらの文字コードを例えば16進数
コードで表現した場合の大小の比較結果によって、後の
文字コードをどちらの節点に分岐させて配置するかを決
定して行く。
【0004】
【発明が解決しようとする課題】しかしながら、上記2
分木による検索では、一つのデータ列を検索するのに節
点に配置された一文字毎に比較していくため、木の成長
状態がアンバランスになっている(検索パスの一部だけ
が長くなっている)場合には、その検索パスの最終の節
点(葉節点)に配置されたデータを検索するには、非常
に長い時間を要するという欠点がある。
【0005】また、トライ木による検索法が採用される
こともあり、このトライ木の場合には、2分木に比べて
より高速に検索を行うことができる。しかし、上記トラ
イ木の場合、膨大なメモリ空間を必要とするという不具
合があった。
【0006】本発明は上記課題を解決するもので、その
目的は、LZスライド辞書法によるデータを圧縮する場
合に、データの検索を高速で実行できると共に、検索時
に必要なメモリ空間を極力少なくすることができるデー
タ圧縮方法及びデータ圧縮装置を提供するにある。
【0007】
【課題を解決するための手段】本発明のデータ圧縮方法
は、LZスライド辞書法を用いて文書データ等のデータ
を圧縮するデータ圧縮方法において、圧縮処理対象のデ
ータ中における圧縮処理済みデータの次の位置から始ま
る圧縮対象データ列と同じデータ列の候補を前記圧縮処
理済みデータの中からハッシュ法によって検索する検索
ステップと、この検索ステップにおいて検索されたデー
タ列と前記圧縮対象データ列とを比較して一致している
データ長を求める比較ステップと、前記圧縮対象データ
列と同じデータ列の候補を前記圧縮処理済みデータの中
から検索候補がなくなるまで前記検索ステップと前記比
較ステップを繰返し実行する繰返しステップと、前記比
較ステップにおいて求められた一致データ長の中から最
長のデータ長のデータ列を選択して出力する選択ステッ
プと、前記圧縮対象データ列をハッシュ法による検索候
補としてハッシュ表に登録する登録ステップとを備えた
ところに特徴を有する。
【0008】この場合、繰返しステップにおいては、検
索及び比較を所定回数繰返した後打切るように構成する
ことが好ましい。また、検索及び比較の打切り回数は、
3乃至20回に設定することが好ましい。更に、登録ス
テップにおいては、圧縮対象データ列をハッシュ法によ
る検索候補のうちの最初に検索される位置に登録するよ
うに構成することが良い。加えて、比較ステップにおい
て最長の一致データ長を検出したときの検索回数を統計
的に記憶することにより、繰返しステップにおける打切
り回数を自動的に最適化して決定するように構成しても
良い。
【0009】本発明のデータ圧縮装置は、LZスライド
辞書法を用いて文書データ等のデータを圧縮するデータ
圧縮装置において、圧縮処理対象のデータ中における圧
縮処理済みデータの次の位置から始まる圧縮対象データ
列と同じデータ列の候補を前記圧縮処理済みデータの中
からハッシュ法によって検索する検索手段と、この検索
手段により検索されたデータ列と前記圧縮対象データ列
とを比較して一致しているデータ長を求める比較手段
と、前記圧縮対象データ列と同じデータ列の候補を前記
圧縮処理済みデータの中から検索候補がなくなるまで検
索及び比較を繰返し実行する繰返し手段と、前記比較手
段により求められた一致データ長の中から最長のデータ
長のデータ列を選択して出力する選択手段と、前記圧縮
対象データ列をハッシュ法による検索候補としてハッシ
ュ表に登録する登録手段とを備えたところに特徴を有す
る。
【0010】この構成の場合、繰返し手段は、検索及び
比較を所定回数繰返したら、その後の検索及び比較を打
切るように構成することが良い。また、繰返し手段にお
ける打切り回数は、3乃至20回の何れかに設定するこ
とが好ましい。更に、登録手段を、圧縮対象データ列を
ハッシュ法による検索候補のうちの最初に検索される位
置に登録するように構成することも良い。そして、比較
手段により最長の一致データ長を検出したときの検索回
数を統計的に記憶することにより、繰返し手段における
打切り回数を自動的に最適化して決定するように構成す
ることも好ましい構成である。
【0011】上記手段によれば、圧縮対象データ列と同
じデータ列を圧縮処理済みデータの中からハッシュ法に
よって検索するから、データ列を高速で検索することが
できる。そして、このハッシュ法による検索時には、メ
モリ空間にハッシュ表を作成するが、このハッシュ表に
は、検索候補のデータ列の位置(圧縮処理済みデータ中
における位置)を登録するだけであり、実際のデータを
登録しないから、ハッシュ表はそれほど大きなメモリ空
間を使用しない。また、ハッシュチェーンも、検索候補
のデータ列の位置をチェーン状に登録するだけであり、
実際のデータを登録しないから、それほど大きなメモリ
空間を使用しない。
【0012】また、検索及び比較を所定回数繰返した
後、打切るように構成すると、データの検索をより一層
高速に実行できる。更に、検索及び比較を打切る回数
を、3乃至20回に設定すると、データの圧縮効率を十
分良好なものとしながら、圧縮処理に要する時間も十分
短くすることができる。加えて、圧縮対象データ列をハ
ッシュ法による検索候補のうちの最初に検索される位置
に登録するように構成すると、最長の一致データ長を早
く得る確率を高くすることができる。また、比較ステッ
プにおいて、最長の一致データ長を検出したときの検索
回数を統計的に記憶することにより、繰返しステップに
おける打切り回数を自動的に最適化して決定するように
構成すると、データ圧縮効率及び圧縮処理速度を最適化
することができる。
【0013】
【発明の実施の形態】以下本発明の第1実施例につい
て、図1乃至図10を参照して説明する。データ圧縮装
置の電気的構成を示す図1において、データの入出力手
段であるデータ入出力装置1は例えばSCSIインター
フェイスなどからなり、圧縮対象となるデータファイル
が記憶されている例えばハードディスクやフロッピーデ
ィスクなどの図示しない外部記憶装置に対してデータの
入出力を行う機能を有している。上記データ入出力装置
1は、マイコンなどからなる制御回路2とアドレス及び
データバスライン並びに制御信号線を介して接続されて
いる。上記制御回路2には、メモリ3がアドレス及びデ
ータバスライン並びに制御信号線を介して接続されてい
る。
【0014】また、制御回路2には、データ圧縮処理を
実行制御するための制御プログタムが記憶されている。
そして、上記制御回路2は、検索手段である検索ロジッ
ク4、比較手段である一致比較ロジック5、選択手段で
ある選択ロジック6、データ圧縮ロジック7、並びに、
登録手段である登録ロジック8としての各機能を有する
ように構成されている。そして、制御回路2は、繰返し
手段としての機能をも有している。以下、上記各ロジッ
クの機能について説明する。まず、検索ロジック4は、
メモリ3上に読込まれた圧縮対象データファイル中の圧
縮対象データ列に対してハッシング(ハッシュ関数によ
る演算)を行い、その圧縮対象データ列と同じデータ列
を、後述する検索表に先頭位置を示す位置情報が書込ま
れて登録されているデータ列の中から検索する機能を有
している。
【0015】一致比較ロジック5は、圧縮対象データ列
と、検索ロジック4によって検索された先頭位置から始
まるデータ列とを1データ(例えば1文字)ずつ比較し
て、両者で一致しているデータ長を出力する機能を有し
ている。選択ロジック6は、一致比較ロジック5によっ
て出力される一致データ長が最長であるデータ列を、検
索ロジック4により検索された先頭位置から始まるデー
タ列の中から選択する機能を有している。データ圧縮ロ
ジック7は、選択ロジック6によって選択されたデータ
列の先頭位置と、一致比較ロジック5がそのデータ列に
ついて出力した一致データ長とを一致情報として出力す
るものである。そして、登録ロジック8は、圧縮処理対
象データ列の先頭位置を検索候補である位置情報として
ハッシュ表に登録するものである。
【0016】次に、上記実施例の作用について図2乃至
図10を参照して説明する。尚、図2及び図3に示すフ
ローチャートは、制御回路2の制御プログラムの制御内
容、即ち、データ圧縮処理の概略制御内容を示すもので
ある。また、圧縮対象データ(ファイル)として、図4
(a)に示すような文字を並べて成るデータを用いる。
この文字列のデータをデータ圧縮装置によって圧縮する
場合、操作者はデータ圧縮装置の図示しないキーボード
などの入力手段を操作することにより、圧縮対象データ
ファイルのファイル名を指定すると共に、圧縮処理の実
行コマンドを入力する。すると、制御回路2は、上記指
定されたデータファイルをデータ入出力装置1を介して
外部記憶装置から読込んでメモリ3上に転送した後、デ
ータ圧縮処理を開始する。
【0017】まず、図2のフローチャートにおいて、
「初期処理」の処理ステップR1を実行する。ここで
は、制御回路2は、メモリ3における圧縮処理に使用す
る領域のの初期化などを行う。続いて、「検索処理」の
処理ステップR2に移行する。この「検索処理」は、図
3のフローチャートによって示されるサブルーチンとし
て定義されており、以下この図3のフローチャートに従
って説明する。
【0018】図3に示すように、制御回路2は、メモリ
3上に設けられた検索処理に関する領域の初期化を行い
(ステップS1)、続いて、次の「データ検索」を実行
する(ステップS2)。ここでは、検索ロジック4によ
って、ハッシングを行うためにメモリ3より図4(a)
に示すデータ列の0番目(第0アドレス)の文字データ
「A」と、1番目(第1アドレス)の文字データ「B」
の2文字を読出す。この場合、ハッシュ関数として排他
的論理和を選び、第0アドレスの文字データ「A」のJ
ISコード0x41と、第1アドレスの文字データ「B」の
JISコード0x42との排他的論理和を論理演算して、ハ
ッシュ値0x03を得る。そして、このハッシュ値0x03によ
ってハッシュ表の検索を行うように構成されている。
【0019】上記ハッシュ表はハッシュ値をインデック
スとして、そのハッシュ値を持つ文字列の先頭位置(ア
ドレス)が位置情報として登録されている表(データテ
ーブル)であり、メモリ3上に展開されている。尚、前
記ステップR1の初期化において、ハッシュ表及び後述
するハッシュチェーンには例えば全ビット「1」のデー
タ(0xFFFF…)が書込まれるように構成されており、こ
れにより、データの登録が無い状態となっている。従っ
て、この時点でハッシュ値0x03によってハッシュ表のデ
ータ検索を行って登録されているデータを読出すと、”
登録データなし”を検出する(図5参照)。尚、ハッシ
ュ表とハッシュチェーンとを合わせたものを、検索表
(検索対象)として定義する。
【0020】続いて、「登録データなしか?」の判断を
行う(ステップS3)。この時点では”登録データな
し”を検出しているので、ステップS3にて「YES」
へ進み、図2に示すステップR3へ移行し、「検索結果
出力」の処理を実行する。ここでは、データ圧縮ロジッ
ク7によって、ステップR2で行われた検索処理の結果
を、出力データ列として図4(b)に示すような形式で
出力するものである。尚、図4(b)に示すように、圧
縮処理された出力データ列の第0アドレスには管理部が
配置されるが、この管理部の設定については後述する。
【0021】また、上記ステップR3においては、ステ
ップR2の検索処理の結果、最長一致データ長が所定値
(例えば「3」)以上か否かを判断してデータを出力す
る。具体的には、この時点では、ステップS3で登録デ
ータを検出できなかったので一致情報の出力は行われ
ず、最長一致データ長は初期化されたまま「0」であ
り、所定値「3」未満であるから、第1アドレスに文字
データ「A」をそのまま出力する。そして、「ハッシュ
表への登録」の処理を実行する(ステップR4)。ここ
では、ハッシュ表への位置情報の登録を行う。この登録
処理は、図6乃至10に示す概念図のようにして実行さ
れる。
【0022】具体的には、この時点での検索結果は、ハ
ッシュ表のインデックス0x03に対して登録されているデ
ータは一つも無かったので、ハッシュ表に先頭のデータ
「A」の位置(アドレス)を示す位置情報「0」を、”
登録データなし”を示すコードに上書きして登録する
(図6参照)。そして、圧縮対象データ列のポインタを
インクリメントして、検索ロジック4が次に第1アドレ
スの文字データ「B」に注目するようにする。また、ル
ープカウンタをインクリメントする。
【0023】続いて、「処理したデータ数分ループした
か?」の判断を行う(ステップR5)。ここでは、処理
データ数とループカウンタのカウント値とを比較するこ
とにより、ステップR4におけるハッシュ表への登録処
理を処理データ数分ループして実行したか否かを判断す
る。ここで、処理データ数は、選択ロジック6によって
得られる最長一致データ長が「3」以上の場合、後述す
るように圧縮処理が行われるため、その一致データ長に
等しく設定される数値である。そして、最長一致データ
長が「0」または「2」の場合は圧縮処理は行われず、
1文字データがそのまま出力されるので、処理データ数
は「1」と設定される数値である(最長一致データ長
「1」は出力されない)。
【0024】そして、この時点では、最長一致データ長
は「0」であって処理データ数は「1」に設定されてい
るから、ループカウンタのカウント値「1」に等しく、
判断ステップR5において「YES」へ進み、「データ
終わり?」の判断を行う(ステップR6)。ここでは、
圧縮対象データ列を最後まで処理したか否かが判断され
るが、この時点ではまだ終りでないから、ステップR6
にて「NO」へ進み、ステップR2へ戻る。尚、ステッ
プR4及びR5は、登録ステップに対応している。
【0025】続いて、ステップR2においては、前回と
同様にしてステップS1で最長一致データ長の初期化が
行われた後、ステップS2に移行して、今度は第1アド
レスの文字データ「B」と第2アドレスの文字データ
「C」とでハッシングを行い、ハッシュ値0x01を得る。
そして、インデックス0x01によってハッシュ表の検索を
行うが、やはり”登録データなし”を検出し、次のステ
ップS3で「NO」へ進み、ステップR3へ移行する。
【0026】このステップR3においては、前回と同様
にして、出力データ列の第2アドレスに文字データ
「B」をそのまま出力する。そして、ステップR4に移
行し、ハッシュ表のインデックス0x01の領域に文字デー
タ「B」の位置(アドレス)を示す位置情報「1」を書
込んで登録する。また、圧縮対象データ列のポインタを
インクリメントして次は第2アドレスの文字データ
「C」に注目するようにしてから、次のステップR5に
移行する。このステップR5では、1文字だけ処理した
ので「YES」へ進み、ステップR6に移行する。この
ステップR6では、データはまだ終りではないので「N
O」へ進み、ステップR2に戻る。
【0027】次の第3及び第4アドレスの文字列「C
D」、また第4及び第5アドレスの文字列「DA」につ
いても上記と同様に一致情報は出力されず、出力データ
列には文字データ「C」及び「D」をそのまま出力し、
ハッシュ表の各ハッシュ値のインデックスが示す領域に
は、位置情報「2」及び「3」がそれぞれ書込まれる。
【0028】そして、圧縮処理対象データ列のポインタ
が「4」になると、ステップS2において第4及び第5
アドレスの文字列「AB」に対してハッシングが行われ
る。すると、ハッシュ値0x03を得るので、ハッシュ表の
検索を行うと登録データの位置情報「0」を得る(図6
参照)。よって、次の判断ステップS3では「NO」へ
進み、次の「同じデータ列か?」の判断ステップS4に
移行する。
【0029】ここで、ハッシュ法は大集合から小集合へ
の写像を行うものであるから、異なるデータ列でも同一
のハッシュ値になる場合(衝突)がある。本実施例で
は、同じハッシュ値を示す文字列の位置情報は、全て同
一のインデックスに連なる連鎖的なデータ,所謂ハッシ
ュチェーン(以下、単にチェーンと称す)に登録される
ので、判断ステップS4においては、位置情報「0」の
データ列が現在の圧縮処理対象データ列と同じものであ
るかが確認される。そのため、判断ステップS4では、
一致比較ロジック5によって、圧縮処理対象データ列の
第0アドレスのデータ「A」を読出して、第4アドレス
のデータ「A」と比較し、一致の結果を得る。ここで、
同じハッシュ値において第1データが一致していれば第
2データも必ず一致するので確認は終了する。そして、
次の「1データずつ比較」の処理ステップS5に移行す
る。
【0030】この処理ステップS5においては、文字列
の第3データ以降を1データずつ比較するため、一致比
較ロジック5により第2アドレスのデータ「C」及び第
6アドレスのデータ「C」を読出して比較し、一致の結
果を得る。次に第3アドレスのデータ「D」及び第7ア
ドレスのデータ「E」を読出して比較すると不一致の結
果を得るので、ここまでの一致データ長「3」を、メモ
リ3の現在の一致データ長の記憶領域に書込んで記憶さ
せる。尚、ステップS4及びS5は、比較ステップに対
応している。
【0031】続いて、「最長一致長か?」の判断を行う
(ステップS6)。ここでは、選択ロジック7によっ
て、ステップS5において得られた現在の一致データ長
「3」が、最長一致データ長の領域に記憶されている内
容より大きいか否かが判断される。この場合、最長一致
データ長はステップS1で初期化されており「0」であ
るから、ステップS6にて「YES」へ進み、「一致位
置と最長一致長を更新」の処理を実行する(ステップS
7)。
【0032】このステップS7においては、メモリ3上
の一致位置の記憶領域に「0」を、最長一致データ長の
記憶領域に「3」を書込んで記憶させる。そして、次の
「チェーンの次をとる」の処理ステップS8に移行す
る。尚、ステップS6及びS7は、選択ステップに対応
する。
【0033】上記処理ステップS8においては、インデ
ックス0x03のチェーンの次の(この場合、第1)データ
を読出す。すると、”登録データなし”のコードが読出
されるので(図6参照)、次のステップS3では「N
O」へ進み、ステップR3へ移行する。尚、ステップS
2は検索ステップに対応し、ステップS3及びS8は繰
返しステップに対応する。
【0034】そして、ステップR3では、ステップR2
の検索処理で得られた最長一致データ長が所定値「3」
以上であるので、データ圧縮ロジック7によって、出力
データ列の第5アドレスに一致情報として一致位置
「0」及び一致データ長「3」を、例えば各1バイトサ
イズとした2バイトサイズのデータとして書込む。そし
て、第5アドレスが一致情報であることを示すため、第
0アドレスの管理部に設定を行う。
【0035】この管理部は、他の文字データと同じ1バ
イトサイズのデータであり、出力データ列の第0アドレ
スからデータ8個おきに挿入され、その内容は、その後
に続く8個のデータの内何データ目がデータ圧縮処理の
結果により出力された一致情報であるかを示すものであ
る。例えば、この場合設定を行うには、第0アドレスの
管理部の内容を読出すと、既に「1」が立てられている
ビットをクリアせずに新たな情報を付加するため、その
内容と第4ビット(第5アドレスに対応する)のみ
「1」を立てた1バイトデータとを排他的論理和により
論理演算する。この時点では、管理部の内容はステップ
R1における初期設定時に0クリアされているので、排
他的論理和により論理演算した結果は、図4(c)に示
すように第4ビットのみ「1」となる。そして、ステッ
プR4に移行する。
【0036】ステップR4においては、位置情報「4」
をハッシュ表に登録する。この時点では、図6に示すよ
うに、ハッシュ表のインデックス0x03が示す領域には位
置情報「0」が既に登録されているので、その位置情報
「0」をチェーンの第1領域に送出する。そして、ハッ
シュ表のインデックス0x03が示す領域に位置情報「4」
を書込んで更新登録する。この更新登録後の状態を図7
に示す。その後、圧縮処理対象データ列のポインタをイ
ンクリメントして「5」にすると、ループカウンタをイ
ンクリメントした後ステップR5に移行する。
【0037】ステップR5においては、この時点での処
理データ数は、ステップS5において選択ロジック6に
より得られた最長一致データ長が「3」であるから
「3」と設定されており、ループカウンタは1であるか
ら「NO」と判断して、この後を2回ループしてステッ
プR4を2回実行する。即ち、文字列「BC」でハッシ
ングしてその位置情報「5」と、文字列「CE」でハッ
シングしてその位置情報「6」とを、ハッシュ表のそれ
ぞれのインデックスが示す領域に登録する。この処理の
終了時点で、圧縮処理対象データ列のポインタは「7」
である。そして、ステップR6では、データはまだ終了
ではないので「NO」と判断して、ステップR2に移行
する。
【0038】ステップR2では、第7及び第8アドレス
の文字列「EA」について、上記と同様な処理により、
出力データ列への出力及びハッシュ表への登録を行う。
以下はデータ列「AB」に注目して説明する。第8及び
第9アドレスの文字列「AB」について処理を行う場
合、ステップS2でハッシングしてハッシュ表の検索を
行うと、位置情報「4」を得る(図7参照)。ステップ
S4及びS5において、第4アドレスから始まる文字列
について1データずつ比較をおこなうが、得られる一致
データ長は「2」である。従って、ステップS6では初
期化された最長一致データ長「0」と比較して「YE
S」と判断して、ステップS7に移行する。そして、ス
テップS7において一致位置「4」及び最長一致データ
長「2」を更新登録すると、ステップS8に移行する。
【0039】ステップS8においては、インデックス0x
03のチェーンの第1領域に格納されたデータを読出す。
すると、位置情報「0」を得るので、ステップS3では
「NO」と判断してステップS4に移行し、更に、ステ
ップS4では「YES」と判断してステップS5に移行
する。この場合も、ステップS5において得られる一致
データ長は「2」であるので、以下同様にステップS
6,S8,S9,S10,S3と移行して、ステップS
10ではチェーンの第2領域に格納された”データな
し”コードを得るので、ステップS3では「YES」と
判断してステップR3に移行する。
【0040】ステップR3においては、一致データ長が
「2」の場合はデータ圧縮効果がないので、先頭の文字
データ「A」をそのまま出力データ列に出力する。そし
て、ステップR5でハッシュ表に登録されている位置情
報「4」をチェーンに送出し、位置情報「8」をハッシ
ュ表に登録する(図8参照)。以下、文字列「BB」及
び「BA」についても同様の処理を行う。
【0041】次に、第11及び第12アドレスの文字列
「AB」について、検索処理を行う。まず、ハッシュ表
に登録された位置情報「8」について文字列の比較を行
うと、3文字目で異なるので一致データ長「2」を得
る。そして、次の検索処理でチェーンの第1領域に格納
された位置情報「4」を得て文字列の比較を行い、やは
り一致データ長「2」を得る。更に、次の検索処理でチ
ェーンの第2領域に格納された位置情報「0」を得て文
字列の比較を行う。すると、やはり一致データ長「2」
を得る。更に次の検索処理では”データなし”を検出し
て検索処理を終了するが、最長一致データ長は「2」で
あるから、結果として圧縮処理は実行されない。
【0042】以降、文字列「AB」,即ちインデックス
0x03のチェーンは、図9及び図10に示すように、入力
データの位置情報「11」と「16」がハッシュ表に順
次登録されることにより、位置情報データが順次チェー
ンに送出されて次第に長くなって行く。その中で最長の
一致データ長が得られたものを一致情報として文字列の
代わりに出力データ列に出力する。以下同様にして、デ
ータ圧縮処理を圧縮処理対象データの全てについて行う
と、ステップR6で「YES」へ進み、「後処理」の処
理ステップR7に移行する。このステップR7では、図
4(b)に示す圧縮処理後のデータであるメモリ3上の
出力データを、データ入出力装置1によって外部記憶装
置へ出力して、データ圧縮処理を終了する。
【0043】以上のように本実施例によれば、制御回路
2によって、圧縮処理対象のデータ中における圧縮処理
済みデータの次の位置から始まる圧縮対象データ列と同
じデータ列の候補を圧縮処理済みデータの中からハッシ
ュ法によって検索すると共に、この検索されたデータ列
と圧縮対象データ列とを比較して一致しているデータ長
を求める構成とした。そして、制御回路2によって、圧
縮対象データ列と同じデータ列の候補を圧縮処理済みデ
ータの中から検索候補がなくなるまで上記検索及び比較
を繰返し実行するように構成した。更に、制御回路2に
よって、上記比較により求められた一致データ長の中か
ら最長のデータ長のデータ列を選択して出力すると共
に、圧縮対象データ列をハッシュ法による検索候補とし
てハッシュ表に登録するように構成した。この構成によ
れば、圧縮処理対象データ列と同じデータ列の検索を行
うのにハッシュ法を用いているので、データ列の検索が
高速に実行できると共に、使用するメモリ空間を十分小
さくすることができる。
【0044】図11は本発明の第2実施例を示すもので
あり、第1実施例と同一部分には同一符号を付して説明
を省略し、以下異なる部分のみ説明する。図11におい
ては、第1実施例における図2のフローチャートのステ
ップS7とステップS8との間に、「検索回数カウンタ
+1」の処理ステップS9及び「検索回数=制限回数
?」の判断ステップS10を挿入するように構成されて
いる。そして、第2の実施例の他の構成は、第1実施例
と同じ構成である。
【0045】次に、上記第2実施例の作用を説明する。
第2実施例では、ステップS7の処理を終えると、次の
「検索回数カウンタ+1」の処理ステップS9に移行す
る。このステップS9においては、検索ロジック4によ
って一つのデータ列について検索表を1回検索すると、
ステップS1で初期化された検索回数カウンタを1カウ
ントアップして、次の「検索回数=制限回数?」の判断
ステップS10に移行する。
【0046】このステップS10においては、検索回数
カウンタのカウント値が、検索表の検索の制限回数とし
て予め決められている値に等しくなったか否かが判断さ
れる。この場合、制限回数は「3」に設定されている。
上記ステップS10において、検索回数カウンタのカウ
ント値が制限回数に等しくなると、「YES」へ進み、
検索処理を完了する。また、ステップS10において、
検索回数カウンタのカウント値が制限回数に等しくない
と(制限回数より小さいと)、「NO」へ進み、ステッ
プS8に移行する。尚、第1実施例における繰返しステ
ップにステップS9及びS10を加えたものが、第2実
施例の繰返しステップに対応する。
【0047】ここで、第2実施例においても、第1実施
例と同じ圧縮処理対象データについて圧縮処理を行うも
のとして、同様に文字列「AB」に注目して説明する。
図7に示すように、ハッシュ値0x03のインデックスが示
すハッシュ表に文字列「AB」の位置情報「4」が登録
されている段階までは、ステップS9における検索回数
カウンタのカウント値は「3」未満であり、ステップS
10においては「NO」と判断してステップS8に移行
するので、第1実施例と同様に処理される。
【0048】そして、図8に示す、次の位置情報「8」
が登録された段階で、第11及び第12アドレスの文字
列「AB」について検索を行うと、ステップS8におい
てチェーンの第2領域にある位置情報「0」を読出した
後、ステップS3乃至S7まで同様に処理を行い、次の
ステップS9において検索回数カウンタのカウント値は
制限回数である「3」に達する。すると、ステップS1
0にて「YES」へ進むから、それ以上の検索及び比較
を行うこと無く検索処理を打切るように構成されてい
る。
【0049】また、図9及び10に示すように、その後
にデータ圧縮処理が進んで位置情報「11」と「16」
がハッシュ表に順次登録されることによりチェーンが更
に長くなった場合でも、この後に圧縮処理対象データ列
中に文字列「AB」が出現した場合は、ステップR2で
の検索処理は3回だけ,即ち、位置情報「16」,「1
1」及び「8」についてのみ行ってそれ以上の検索表の
検索は行なわず、その中で最長の一致データ長が得られ
たものを一致情報として出力データ列に出力するように
構成されている。
【0050】尚、第2実施例では、検索表内に出現して
いる一致データ列全てについて検索を行わないため、最
長の一致データ長が得られない可能性がある。しかし、
一般的な文章データの特徴として、「最長の一致長を有
するデータ列は、注目している位置の直ぐ近くに現れや
すい」という性質がある。従って、第2実施例のよう
に、最新の一致データ列から3回だけ検索する方式を用
いても、圧縮効率の劣化は殆ど無いのである。
【0051】以上のように第2実施例によれば、検索処
理を行う回数をカウントして、予め3回として設定され
た制限回数に等しくなると検索を打切り、その時点で最
長の一致データ長を示したデータ列の先頭位置とその一
致データ長とを一致情報として出力するように構成した
ので、一致データ列がなくなるまで検索表の検索を反復
する第1実施例とは異なり、検索に要する時間はチェー
ンが長くなった場合でも毎回同じとなり、データ圧縮処
理をより一層高速に実行することができる。しかも、こ
の場合、データ圧縮効率を低下させることはほとんどな
い。
【0052】尚、本発明は上記し且つ図面に記載した実
施例にのみ限定されること無く、次のような変形が可能
である。まず、文字データの16進数コードをJISコ
ードとしたが、EBCDICコード若しくはASCII
コードでも良い。また、ハッシュ関数を排他的論理和と
したが、これに限らず、衝突の発生がなるべく少なくな
るような適当な演算(論理演算に限らない)を適宜選択
するように構成しても良い。更に、ステップR3におい
て、一致情報を出力する最長一致データ長の所定値を
「3」としたが、「4」以上の適当な値に設定しても良
い。加えて、ハッシングの対象とする文字数を3文字以
上としても良い。
【0053】また、一致情報のデータ(2バイトのデー
タ)は、一致位置(アドレス)を表わす1バイトのデー
タと、一致データ長を表わす1バイトのデータとから構
成したが、これに限らず、圧縮対象データの大きさと予
想される最大一致データ長との兼合いによって適宜変更
しても良く、例えば一致位置のサイズを12ビット、一
致データ長のサイズを4ビットとしても良い。更に、一
致情報のデータサイズは2バイトに限らず、圧縮処理対
象データの大きさに応じてビット数が更に必要な場合
は、例えば3バイトとしても良い。この場合、その一致
情報のデータサイズに応じて圧縮効率を考慮し、一致情
報を出力する最低の一致データ長を「3」から「4」に
するなど、適宜変更して良い。
【0054】更にまた、圧縮処理対象データは、アルフ
ァベットなどからなる言語の文章に限らず、日本語など
のその他の言語でも良い。また、言語の1文字を表現す
る16進数コードが2バイトである場合は、管理部を、
そのデータサイズを2バイトとして、16文字毎に1個
付加するように構成しても良い。
【0055】また、反復ロジックにおける検索の制限回
数(打切り回数)を3回としたが、この回数は、データ
圧縮効率と処理速度とを考慮して、どちらをより重視す
るかによって適宜決定すれば良い。例えば、圧縮効率を
重視する場合は検索制限回数を大きな値に設定し、処理
速度を重視する場合は検索制限回数を小さな値に設定す
る。データ圧縮効率と処理速度との適当なバランスを重
視して決定する場合は、検索制限回数は3乃至20回の
何れかに設定することが望ましい。この場合、最も好ま
しい制限回数は、10回前後である。また、圧縮処理対
象とするデータの性質に応じて、ユーザーが検索の制限
回数を指定可能にするように構成しても良い。
【0056】一方、上記各実施例においては、最新の圧
縮対象データ列をハッシュ表の最初に検索される位置に
登録するように構成したが、これに限られるものではな
く、最新の圧縮対象データ列を一番最後に検索される位
置に登録するように構成しても良い。
【0057】また、上記各実施例のステップS5におい
て、限界として規定される最長一致データ長(最長一致
データ長の記憶領域の物理的な制限,若しくは、文章デ
ータの性質からこれ以上の一致データ長は有り得ないと
想定されるもの)を検出した場合は、それ以降の検索を
打切るように構成しても良い。この構成によれば、更に
圧縮処理を高速にすることができる。
【0058】更に、図11のフローチャートの「リター
ン」の直前に、「検索回数を記憶」の処理ステップS1
1を設け、データ列の検索毎に、最長の一致長が検出さ
れたデータ列が何回目の検索で見付かったか、その検索
回数をメモリ3に記憶させるように構成する。そして、
データ圧縮処理がある程度進んだ段階で、「検索回数最
適化処理」の処理ルーチンを実行するように構成しても
良い。この処理ルーチンにおいては、ステップS11で
記憶させた検索回数に対して適当な統計処理を行うこと
によって、圧縮効率が十分良い範囲で且つ検索処理時間
を十分短縮できる検索回数を自動的に求めて設定する
(最適化する)ことができるように構成されている。
【0059】尚、上記各実施例や変形例等によって圧縮
処理して出力した出力データに対して、例えば算術符号
化などの他の圧縮方法を適用して更にデータ圧縮するよ
うに構成しても良く、このように構成すると、更にデー
タ圧縮効率を高めることができる。
【0060】
【発明の効果】本発明は、以上の説明から明らかなよう
に、LZスライド辞書法を用いて文書データ等のデータ
を圧縮するデータ圧縮処理において、圧縮対象データ列
と同じデータ列を圧縮処理済みデータの中からハッシュ
法によって検索する構成としたので、データ列を高速で
検索することができると共に、検索時に必要なメモリ空
間を極力少なくすることができる。
【0061】また、この構成の場合、検索及び比較を所
定回数繰返した後、打切るように構成すると、データの
検索及びそれに伴うデータ圧縮処理をより一層高速に実
行できる。更に、検索を打切る回数を、3乃至20回の
何れかに設定すると、データの圧縮効率と圧縮処理速度
との適度なバランスをとることができる。そして、最新
の圧縮対象データ列をハッシュ法による検索候補のうち
の最初に検索される位置に登録するように構成すると、
最長の一致データ長を得る確率を高めることができる。
また、最長の一致データ長を検出したときの検索回数を
統計的に記憶することにより、検索を打切る回数を自動
的に最適化して決定するように構成すると、データ圧縮
効率及び圧縮処理速度を最適化することができる。
【図面の簡単な説明】
【図1】本発明の第1実施例の構成を示すブロック図
【図2】制御内容のフローチャート
【図3】図2のステップR2の制御内容のフローチャー
【図4】入力データ及び出力データ並びに管理部の内容
を示す図
【図5】初期化された状態の検索表の内容を示す概念図
【図6】ハッシュ表の更新登録処理を示す概念図
【図7】図6相当図
【図8】図6相当図
【図9】図6相当図
【図10】図6相当図
【図11】本発明の第2実施例を示す図2相当図
【図12】LZスライド辞書法によるデータ圧縮処理の
概念図
【符号の説明】
1はデータ入出力装置、4は検索ロジック(検索手
段)、5は一致比較ロジック(比較手段)、6は選択ロ
ジック(選択手段)、7はデータ圧縮ロジック、8は登
録ロジック(登録手段)を示す。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 LZスライド辞書法を用いて文書データ
    等のデータを圧縮するデータ圧縮方法において、 圧縮処理対象のデータ中における圧縮処理済みデータの
    次の位置から始まる圧縮対象データ列と同じデータ列の
    候補を前記圧縮処理済みデータの中からハッシュ法によ
    って検索する検索ステップと、 この検索ステップにおいて検索されたデータ列と、前記
    圧縮対象データ列とを比較して一致しているデータ長を
    求める比較ステップと、 前記圧縮対象データ列と同じデータ列の候補を前記圧縮
    処理済みデータの中から検索候補がなくなるまで前記検
    索ステップと前記比較ステップを繰返し実行する繰返し
    ステップと、 前記比較ステップにおいて求められた一致データ長の中
    から最長のデータ長のデータ列を選択して出力する選択
    ステップと、 前記圧縮対象データ列をハッシュ法による検索候補とし
    てハッシュ表に登録する登録ステップとを備えたことを
    特徴とするデータ圧縮方法。
  2. 【請求項2】 前記繰返しステップにおいては、検索ス
    テップ及び比較ステップを所定回数繰返したら、その後
    の検索ステップ及び比較ステップを打切るように構成さ
    れていることを特徴とする請求項1記載のデータ圧縮方
    法。
  3. 【請求項3】 前記繰返しステップにおける打切り回数
    は、3乃至20回に設定されていることを特徴とする請
    求項2記載のデータ圧縮方法。
  4. 【請求項4】 前記登録ステップにおいては、前記圧縮
    対象データ列をハッシュ法による検索候補のうちの最初
    に検索される位置に登録することを特徴とする請求項1
    乃至3の何れかに記載のデータ圧縮方法。
  5. 【請求項5】 前記比較ステップにおいて最長の一致デ
    ータ長を検出したときの検索回数を統計的に記憶するこ
    とにより、前記繰返しステップにおける打切り回数を自
    動的に最適化して決定することを特徴とする請求項2ま
    たは4記載のデータ圧縮方法。
  6. 【請求項6】 LZスライド辞書法を用いて文書データ
    等のデータを圧縮するデータ圧縮装置において、 圧縮処理対象のデータ中における圧縮処理済みデータの
    次の位置から始まる圧縮対象データ列と同じデータ列の
    候補を前記圧縮処理済みデータの中からハッシュ法によ
    って検索する検索手段と、 この検索手段により検索されたデータ列と、前記圧縮対
    象データ列とを比較して一致しているデータ長を求める
    比較手段と、 前記圧縮対象データ列と同じデータ列の候補を前記圧縮
    処理済みデータの中から検索候補がなくなるまで検索及
    び比較を繰返し実行する繰返し手段と、 前記比較手段により求められた一致データ長の中から最
    長のデータ長のデータ列を選択して出力する選択手段
    と、 前記圧縮対象データ列をハッシュ法による検索候補とし
    てハッシュ表に登録する登録手段とを備えたことを特徴
    とするデータ圧縮装置。
  7. 【請求項7】 前記繰返し手段は、検索及び比較を所定
    回数繰返したら、その後の検索及び比較を打切るように
    構成されていることを特徴とする請求項6記載のデータ
    圧縮装置。
  8. 【請求項8】 前記繰返し手段における打切り回数は、
    3乃至20回に設定されていることを特徴とする請求項
    7記載のデータ圧縮装置。
  9. 【請求項9】 前記登録手段は、前記圧縮対象データ列
    をハッシュ法による検索候補のうちの最初に検索される
    位置に登録することを特徴とする請求項6乃至8の何れ
    かに記載のデータ圧縮装置。
  10. 【請求項10】 前記繰返し手段は、前記比較手段によ
    り最長の一致データ長を検出したときの検索回数を統計
    的に記憶することにより、検索及び比較の打切り回数を
    自動的に最適化して決定することを特徴とする請求項6
    または9記載のデータ圧縮装置。
JP7181485A 1995-07-18 1995-07-18 データ圧縮方法及びデータ圧縮装置 Pending JPH0936747A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7181485A JPH0936747A (ja) 1995-07-18 1995-07-18 データ圧縮方法及びデータ圧縮装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7181485A JPH0936747A (ja) 1995-07-18 1995-07-18 データ圧縮方法及びデータ圧縮装置

Publications (1)

Publication Number Publication Date
JPH0936747A true JPH0936747A (ja) 1997-02-07

Family

ID=16101592

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7181485A Pending JPH0936747A (ja) 1995-07-18 1995-07-18 データ圧縮方法及びデータ圧縮装置

Country Status (1)

Country Link
JP (1) JPH0936747A (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005269618A (ja) * 2004-03-15 2005-09-29 Microsoft Corp データ圧縮
WO2006062142A1 (ja) * 2004-12-07 2006-06-15 Nippon Telegraph And Telephone Corporation 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体
US8224829B2 (en) 2000-11-30 2012-07-17 Bernard Consulting Limited Database
JP2017530592A (ja) * 2014-08-12 2017-10-12 ティダル システムズ, インク.Tidal Systems, Inc. 適応率圧縮ハッシュ処理デバイス
JP2018157481A (ja) * 2017-03-21 2018-10-04 Kddi株式会社 サーバ装置、ビーコン装置及びプログラム
JP2020503705A (ja) * 2016-11-16 2020-01-30 シトリックス・システムズ・インコーポレイテッドCitrix Systems,Inc. 可逆エンコーディングのためのマルチピクセルキャッシングスキーム
US10922343B2 (en) 2016-10-21 2021-02-16 Fujitsu Limited Data search device, data search method, and recording medium
US11055328B2 (en) 2017-03-29 2021-07-06 Fujitsu Limited Non-transitory computer readable medium, encode device, and encode method
US11222068B2 (en) 2017-04-20 2022-01-11 Fujitsu Limited Information processing device, information processing method, and data structure

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8224829B2 (en) 2000-11-30 2012-07-17 Bernard Consulting Limited Database
JP2005269618A (ja) * 2004-03-15 2005-09-29 Microsoft Corp データ圧縮
US7966424B2 (en) 2004-03-15 2011-06-21 Microsoft Corporation Data compression
JP2012019532A (ja) * 2004-03-15 2012-01-26 Microsoft Corp データ圧縮
WO2006062142A1 (ja) * 2004-12-07 2006-06-15 Nippon Telegraph And Telephone Corporation 情報圧縮符号化装置、その復号化装置、これらの方法、およびこれらのプログラムとその記録媒体
US7667630B2 (en) 2004-12-07 2010-02-23 Nippon Telegraph And Telephone Corporation Information compression-encoding device, its decoding device, method thereof, program thereof, and recording medium storing the program
JP2017530592A (ja) * 2014-08-12 2017-10-12 ティダル システムズ, インク.Tidal Systems, Inc. 適応率圧縮ハッシュ処理デバイス
US10817474B2 (en) 2014-08-12 2020-10-27 Micron Technology, Inc. Adaptive rate compression hash processor
US10922343B2 (en) 2016-10-21 2021-02-16 Fujitsu Limited Data search device, data search method, and recording medium
JP2020503705A (ja) * 2016-11-16 2020-01-30 シトリックス・システムズ・インコーポレイテッドCitrix Systems,Inc. 可逆エンコーディングのためのマルチピクセルキャッシングスキーム
US11190787B2 (en) 2016-11-16 2021-11-30 Citrix Systems, Inc. Multi-pixel caching scheme for lossless encoding
US11653009B2 (en) 2016-11-16 2023-05-16 Citrix Systems, Inc. Multi-pixel caching scheme for lossless encoding
JP2018157481A (ja) * 2017-03-21 2018-10-04 Kddi株式会社 サーバ装置、ビーコン装置及びプログラム
US11055328B2 (en) 2017-03-29 2021-07-06 Fujitsu Limited Non-transitory computer readable medium, encode device, and encode method
US11222068B2 (en) 2017-04-20 2022-01-11 Fujitsu Limited Information processing device, information processing method, and data structure

Similar Documents

Publication Publication Date Title
JP3234104B2 (ja) 圧縮データをサーチする方法及びシステム
US5721899A (en) Retrieval apparatus using compressed trie node and retrieval method thereof
EP0293161A2 (en) Character processing system with spelling check function
US5553284A (en) Method for indexing and searching handwritten documents in a database
CN114880523B (zh) 字符串处理方法、装置、电子设备及存储介质
US5081608A (en) Apparatus for processing record-structured data by inserting replacement data of arbitrary length into selected data fields
JPH08147320A (ja) 情報検索方法及びシステム
JPH0936747A (ja) データ圧縮方法及びデータ圧縮装置
JP4156381B2 (ja) 文字テーブルによって実施されるデータ圧縮の方法および装置
JP2003242179A (ja) 文字列照合方法、これを用いた文書処理装置及びプログラム
JPH07210569A (ja) 情報検索方法および情報検索装置
JP2003208423A (ja) 入力予測処理プログラム
JP4726046B2 (ja) 文字列検索装置及びコンピュータプログラム及び文字列検索方法
JPH0652222A (ja) 情報検索処理装置
JP6347023B1 (ja) コード自動記述2ソフトウェアを記録した記録媒体
JP6318327B1 (ja) コード自動記述ソフトウェアを記録した記録媒体
JP2772124B2 (ja) 辞書検索方式
JPH10260980A (ja) 圧縮検索方式
US20030187843A1 (en) Method and system for searching for a list of values matching a user defined search expression
JP2535655B2 (ja) 辞書検索方式
JPH07200622A (ja) 情報管理システム
JP3291501B2 (ja) ネットワーク作成装置およびそのネットワーク作成方法
JP6096970B1 (ja) マルメ圧縮ソフトウェアを記録した記録媒体
JPS59100939A (ja) 日本語入力装置
JP3236747B2 (ja) データ伸長方式