JP2000082967A - デ―タ圧縮方法及びデ―タ圧縮装置 - Google Patents

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

Info

Publication number
JP2000082967A
JP2000082967A JP11150217A JP15021799A JP2000082967A JP 2000082967 A JP2000082967 A JP 2000082967A JP 11150217 A JP11150217 A JP 11150217A JP 15021799 A JP15021799 A JP 15021799A JP 2000082967 A JP2000082967 A JP 2000082967A
Authority
JP
Japan
Prior art keywords
character string
code
array
search
past
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
JP11150217A
Other languages
English (en)
Other versions
JP4242970B2 (ja
Inventor
Nobuko Sato
宣子 佐藤
Shigeru Yoshida
茂 吉田
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 JP15021799A priority Critical patent/JP4242970B2/ja
Priority to US09/348,163 priority patent/US6563956B1/en
Publication of JP2000082967A publication Critical patent/JP2000082967A/ja
Priority to US10/230,236 priority patent/US6876774B2/en
Application granted granted Critical
Publication of JP4242970B2 publication Critical patent/JP4242970B2/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

Abstract

(57)【要約】 【課題】 検索作業に必要なテーブル領域の低減化かつ
文字列検索の高速化を図る。 【解決手段】 圧縮すべきデータ列の連続する複数の文
字を文字列に設定し、この文字列を表現するビット列中
の各ビットを2個のコードに振り分けて第1、第2のコ
ードを生成し、この第1、第2のコードを配列のアドレ
スとして予め過去の文字列の出現位置に関する情報が登
録された第1、第2のテーブルから第1、第2の配列内
容を取得し、第1、第2の配列内容を照合して両者が一
致した場合、配列内容に基づいてこの文字列の過去の出
現位置に関する情報を取得し、符号化する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、文字コードや画像
データ等の、様々な種類のデータ中に含まれる冗長な部
分を省いてデータ量を圧縮する、データ圧縮方法及びデ
ータ圧縮装置に関する。さらに特定すると、圧縮処理対
象となるデータ列の類似性を利用する辞書型符号化方式
を利用した、データ圧縮方法及びデータ圧縮装置に関す
る。
【0002】
【従来の技術】近年、文字コード、画像データ等の、様
々な種類のデータがコンピュータ等の情報処理装置で扱
われるように成っている。その結果、情報処理装置で取
り扱われるデータ量も増大している。このような大量の
データには、多くの場合冗長なデータ列が含まれてお
り、この冗長な部分を省くための圧縮処理を実行するこ
とにより、情報処理装置においてデータ保存のための記
憶容量を減らすことができる。また圧縮されたデータを
用いることにより情報処理装置におけるデータ転送容量
を低減できるので、データ転送時間を短縮することがで
きる。
【0003】辞書型符号化方式を用いたデータ圧縮の代
表的な方法として、LZ77圧縮方法とLZ78圧縮方
法が知られている。LZ77圧縮方法では、LZ78圧
縮方法に比べて簡単な処理で充分な圧縮率が得られる。
そのため、実際の使用ではLZ77圧縮方法が主流とな
っている。以下では、従ってLZ77圧縮方法について
説明を行う。
【0004】なお本発明の分野は文字コードの圧縮に限
らず、様々なデータに適用できるが、以下では情報理論
に基づきデータの1ワード(WORD)単位を文字(ア
ルファベット)といい、データが任意ワードつながった
ものを文字列と呼ぶようにする。LZ77圧縮方法で
は、図1に示すように、まず一定の容量(図示の例では
16文字)を持つスライドバッファ1を設け、このバッ
ファ内に既に符号化し圧縮した文字列2a(defab
qaaaacabcde)を格納しておく。次に、格納
された文字列2aと、これから圧縮する入力文字列2b
(abcdaaaq…)との間で、最大一致する文字列
2c(abcd)を検索し、検索した最大一致する文字
列の位置の相対アドレス5(入力文字列の最初の文字か
ら過去にさかのぼって5文字目)とその文字列長である
一致長4を符号化し、符号(5,4)で最大一致した入
力文字列2c(abcd)を置換し、圧縮する。
【0005】次にスライドバッファ1を4文字スライド
して、バッファ内の文字列2aをbqaaaacabc
deabcdとし、次の入力文字列2b(aaaq…)
に対する検索を上記と同様にして行う。この結果、最大
一致文字列2c(aaa)の一致が見いだされるので、
この文字列aaaのバッファ1内での出現位置13(入
力文字列aaaの最初のaから過去にさかのぼって13
文字目)と最大一致長3を(13,3)の形式で符号化
し置換する。
【0006】このようにLZ77圧縮方法は、符号化を
進めるにつれてスライドバッファをスライドしていくこ
とから、スライド辞書法とも呼ばれている。ところがこ
の様なLZ77圧縮方法では、スライドバッファの容量
を上げれば最大一致する文字列も長くなり、圧縮率が向
上するが、バッファの容量が上がるに連れて検索に要す
る文字列の組み合わせが膨大な量となり、バッファ内を
順に検索していくと、検索に要する手間と時間が膨大な
ものとなる。従って実際のLZ77法では、バッファ内
の全ての文字列と入力文字列とを照合するのではなく、
入力文字列の最初の2〜4文字程度の文字列(接頭部)
とその出現位置をテーブルに随時登録して行き、入力文
字列の接頭部とテーブルに登録された文字列とを照合す
る方法を取っている。この方法によって、検索に要する
時間は大幅に短縮される。
【0007】この様な検索に使用するテーブルに、ルッ
クアップテーブル(Look UpTable)とハッ
シュテーブル(Hash Table)がある。ルック
アップテーブルを使用する方法は、図2に示す様に、検
索文字列2dをルックアップテーブル3のアドレスに一
対一で対応させる。対応するアドレスの内容には、その
文字列の過去の出現位置(相対アドレス)が登録されて
いる。この方法によれば、一回のテーブル引きで、検索
文字列2d(ab)を検索して、その過去の出現位置を
知ることができる。そのため、検索を非常に高速で行う
事ができると言う利点を有している。
【0008】しかしながら検索文字列が長い場合、文字
列の組み合わせが累乗的に増加するので、ルックアップ
テーブルを構成するためのアドレス数が膨大となる。そ
のためこのような数のアドレスを確保するのに、非常に
大きなメモリ領域が必要となる欠点を有している。例え
ば、文字数が1(1文字8ビット)の場合、28*1 =2
56個の記憶領域が必要である。2文字の場合は、2
8*2 ≒64キロ、3文字の場合で、28*3 ≒16メガと
なり、実際には2文字が限界である。しかも、検索する
文字列が長くなると、実際に使用される(すなわち、ル
ックアップテーブルに登録される)領域は一部分だけ
で、ルックアップテーブル内がまばらな状態になり、テ
ーブルの利用効率が低くなると言う欠点も有している。
【0009】ハッシュテーブルを用いた文字列検索方法
では、図3に示す様に、検索文字列2dのコードに対し
てそのビット数を減らすようなマスク処理を行って(縮
退をかける)、ハッシュコード6を生成し(4)、縮退
状態が共通である複数の文字列でハッシュテーブル5の
一つの領域7を共有するようにしている。このため、ル
ックアップテーブルを用いた文字列検索方法に比べて、
同等の検索領域でより長い文字列を検索することができ
るといった特徴を備えている。
【0010】しかしながら、この様にして得たハッシュ
テーブルでは、検索文字列に対して縮退処理を行ってい
るので、検索文字列2d(abc)と縮退状態が共通で
ある異なる文字列が、ハッシュテーブル内の同じ領域7
に登録される場合があると言う問題(衝突問題)が発生
する。この衝突問題を解決するために、検索で見つかっ
た文字列と検索文字列中の各文字とを照合して(8)、
検索された文字列が実際に検索している文字列であるか
否かをチェックする作業が新たに必要となる。
【0011】
【発明が解決しようとする課題】以上に説明したよう
に、LZ77圧縮方法におけるルックアップテーブルを
用いた文字列検索方法の場合、ルックアップテーブルに
対する一回のテーブルびきのみで、高速に検索対象の文
字列を探し出すことができる反面、テーブルサイズが検
索文字数の増加と共に累乗的に増加して膨大となるた
め、検索のための文字数を余り多く取る(事実上2文字
が限界)ことができない。その結果圧縮率をあまり高く
することが出来ないと言う欠点を有している。
【0012】一方、前述のハッシュテーブルを用いた文
字列検索方法の場合、ルックアップテーブルを用いた文
字列検索方法に比べて必要なテーブルサイズが小さく、
リーズナブルなテーブルサイズの使用で早い検索をする
ことができるが、衝突問題を解決するための照合作業が
新たに必要となる欠点を有している。なおこの照合作業
は、各検索文字について行う必要があるため、かなりの
手間を要する。
【0013】本発明は、このような従来技術の問題点を
解決することを課題としており、特に衝突問題を避ける
ために検索文字列に対して、各文字を照合する処理を行
う事無く、しかも3文字、4文字の長い文字列に対する
検索であっても、ハッシュテーブルを用いた文字列検索
方法と同程度のテーブルサイズで文字列検索が可能な、
データ圧縮方法およびデータ圧縮装置を実現することを
課題としている。
【0014】
【課題を解決するための手段】本発明の第1の特徴によ
れば、上記課題を解決するために、被圧縮データ列に圧
縮処理を行って圧縮データを作成するデータ圧縮方法に
おいて、被圧縮データ列内の連続する複数の文字を検索
する文字列に設定する文字列設定工程と、前記文字列を
表現するビット列中の各ビットを少なくとも2個のコー
ドに振り分けて第1、第2の検索用コードを生成する検
索用コード振り分け工程と、前記第1、第2の検索用コ
ードをそれぞれ配列のアドレスとして用いて予め過去の
文字列の出現位置に関する情報が登録された第1、第2
の配列テーブルから第1、第2の配列内容を取得する、
配列内容取得工程と、前記取得した第1、第2の配列内
容を照合する照合工程と、前記照合した第1、第2の配
列内容が一致したとき、前記第1または第2の配列内容
に基づいて前記文字列に対する過去の出現位置情報を取
得する出現位置情報取得工程、を備えるデータ圧縮方法
を提供する。
【0015】本発明の第2の特徴によれば、被圧縮デー
タ列に圧縮処理を行って圧縮データを作成するデータ圧
縮方法において、被圧縮データ列内の連続する複数の文
字を検索する文字列に設定する文字列設定工程と、前記
文字列を表現するビット列中の各ビットを2個のコード
に振り分けて検索用の第1のコードと該第1のコードの
相補コードである第2のコードを生成する検索用コード
振り分け工程と、現時点で検索すべき文字列に関する前
記第1のコードを配列のアドレスとして用いて、過去に
出現した文字列に関する前記第2のコードが予め登録さ
れた第1の配列テーブルから、配列の内容を取得する、
配列内容取得工程と、前記取得した配列内容と前記第2
のコードを照合する照合工程と、前記照合結果が一致の
場合、前記第1のコードを配列のアドレスとして用いて
予め過去の文字列の出現位置に関する情報が登録された
第2の配列テーブルから前記設定された文字列の過去の
出現位置に関する情報を取得する出現位置情報取得工
程、を備えるデータ圧縮方法を提供する。
【0016】本発明の第3の特徴によれば、被圧縮デー
タ列に圧縮処理を行って圧縮データを作成するデータ圧
縮方法において、被圧縮データ列内の連続する複数の文
字を検索する文字列に設定する文字列設定工程と、前記
文字列を表現するビット列中の各ビットを2個のコード
に振り分けて検索用の第1のコードと該第1のコードの
相補コードである第2のコードを生成する検索用コード
振り分け工程と、前記第1のコードに演算を行って前記
第1のコードを起点とする複数のコードを取得する、演
算工程と、現時点で圧縮すべき文字列に関する前記取得
された複数のコードを配列のアドレスとして用いて過去
に出現した文字列に関する前記第2のコードが予め登録
された第1の配列テーブルから複数の配列内容を取得す
る、配列内容取得工程と、前記取得した複数の配列内容
と前記第2のコードとを照合する照合工程と、前記照合
結果が一致の場合、前記演算工程で得られたコードを配
列のアドレスとして用いて予め過去の文字列の出現位置
に関する情報が登録された第2の配列テーブルから前記
設定された文字列の過去の出現位置に関する情報を取得
する出現位置情報取得工程を備える、データ圧縮方法を
提供する。
【0017】上記各構成のデータ圧縮方法では、圧縮す
べき文字列を表現するビット列中の各ビットを、少なく
とも2個のコードに振り分け、各コード別々にテーブル
引きを行い、その結果を互いに照合することによって、
その文字列が過去に出現し、テーブル内にその過去の出
現位置に関する情報が登録されているか否かが検出され
る。従って、文字列を少なくとも2個のコードに振り分
けてアドレスを構成したことによって、各コードのテー
ブル引きに要するテーブルのサイズが、文字列を表すビ
ット列をそのままの状態でアドレスとした場合(ルック
アップテーブルを用いた場合)に比べて、大幅に減少す
る。
【0018】従って、設定する文字列を比較的長い文字
列(例えば3文字、4文字等)に設定した場合であって
も、必要な記憶領域は従来の物に比べてそれ程増大しな
い。さらに、テーブル引き後の一致確認の作業も、配列
内容の一致を確認するのみであるので、検索文字列の各
文字に対する一致確認が必要な従来のハッシュ方法に比
べて、その作業が大幅に軽減される。
【0019】
【発明の実施の形態】以下に本発明のデータ圧縮方法お
よび装置を、その実施形態を説明するための図面を参照
しながら、詳細に説明する。図4は本発明の第1の実施
形態にかかるデータ圧縮方法およびそのための装置の動
作原理の説明に提供するブロック図である。この実施形
態では、スライドバッファの代わりに入力バッファ10
を用いて、この中に入力された文字列に対してポインタ
を順次移動させて行き、ポインタで指示される位置を先
頭とする文字列について検索を実行する方法を取る。今
ポインタが入力バッファ10の位置t(Inbuf
〔t〕)にあり、これに連続する位置(Inbuf〔t
+1〕,Inbuf〔t+2〕)にある3個の文字列x
1x2x3が過去に出現したか否かを検索する場合を例
にして、本実施形態の構成を説明する。
【0020】まず、取得された文字列x1x2x3をビ
ットの振り分け部11に入力して、この文字列の全ビッ
ト(1文字を8ビットとすると、24ビット)を例えば
12個づつの第1、第2のビットコードS1、S2に振
り分ける。本実施形態では、元の文字列の特徴を示すビ
ットが、コードS1、S2になるべく均等に分散される
ように、ビットの振り分けを行うことが望ましい。この
振り分けの方法については後述する。
【0021】12、13は第1、第2のアドレステーブ
ルであり、各テーブル中にはビットの振り分け部11に
よって形成された第1、第2のビットコードS1、S2
を配列のアドレスとして使用して、過去に出現した文字
列の先頭部の出現位置、即ち入力バッファ10内のアド
レスが予め登録されている。従って今、位置tから始ま
る3文字の文字列について形成された第1、第2のビッ
トコードS1、S2を配列のアドレスとして使用して、
テーブル引きを行うと、その文字列が過去に出現してい
た場合は、各テーブル12、13から得られた内容ad
dress1〔S1〕とaddress2〔S2〕は互
いに一致する。
【0022】照合(一致検出)部14は、addres
s1〔S1〕とaddress2〔S2〕の一致を確認
するための手段である。若し両者が一致しない場合(a
ddress1〔S1〕≠address2〔S2〕)
は、その文字列が過去に出現していないこと(未登録で
あること)を示す。一致した場合(address1
〔S1〕=address2〔S2〕)は、addre
ss1〔S1〕またはaddress2〔S2〕が検索
文字列x1x2x3の、入力バッファ10における過去
の出現位置を示す。
【0023】本実施形態では、以上の様に、文字列をそ
れぞれ12ビットずつの第1、第2のビットコードに分
け、そのそれぞれについてアドレステーブルを作成して
いるため、各アドレステーブルのサイズは、212とな
る。したがって2個のアドレステーブル全体で2×212
=213個のメモリ領域を必要とするのみで良く、メモリ
領域が従来の方法に比べて大幅に削減される。なお、図
1に示す従来の方法では、この場合必要とされるメモリ
領域は、224個である。
【0024】また、各ビットコードS1、S2に対し
て、対応するテーブルのアドレスは一対一の関係にある
ため、互いに一回のテーブル引きで検索結果を確定でき
る。そのため、図1に示した従来の方法と同程度の非常
に早い検索スピードを獲得することができる。図4に示
す実施形態では、アドレステーブル12、13の内容と
して、直接過去の入力バッファ10内のアドレスを入
れ、符号として相対アドレスを出力している。しかしな
がら、図5に示す様に、ビットコードS1、S2を配列
のアドレスとする内容にインデックス(index)値
を入れた、第1、第2のインデックステーブル15、1
6を利用する事も可能である。この場合、各テーブル1
5、16から得られた内容index1〔S1〕とin
dex2〔S2〕の一致を、照合(一致検出)部14で
確認し、一致(index1〔S1〕=index2
〔S2〕)が確認されたら、アドレステーブル17から
過去に出現したアドレスを獲得する。index1〔S
1〕≠index2〔S2〕(衝突)の場合は、その検
索文字列が未登録であることを示す。この方法によれ
ば、メモリ領域が更に効率的に使用される。
【0025】また、その詳細については後述するが、ビ
ットコードの振り分けに当たって、必ずしも2種類のコ
ードに分解する必要はなく、2個以上であれば良い。さ
らに、各ビットコードについて、必ずしも同じ数のビッ
トに分解する必要もない。また、振り分けられたビット
コードS1、S2が、元の文字列の同じビット(例えば
各文字の最下位ビット)を共通して含んでいてもよい。
【0026】図6は、上記実施形態の圧縮方法を実行す
る装置のブロック図である。図示する様に本データ圧縮
装置60は、文字列設定手段61、検索用コード振り分
け手段62、配列内容取得手段63、照合手段64、出
現位置情報取得手段65、コピー符号生成部66a及び
リテラル符号生成部66bとを備えた符号化手段66を
中心とするハードウェア構成になっている。
【0027】文字列設定手段61、検索用コード振り分
け手段62、配列内容取得手段63、照合手段64、出
現位置情報取得手段65および符号化手段66は、図4
または5に示したデータ圧縮方法を記述したプログラム
コードを実行できるマイクロプロセッサーを中心にして
構成されている。文字列設定手段61は、圧縮処理対象
としてバッファInbuf内に蓄えられている被圧縮デ
ータ列内の連続する複数の文字Inbuf〔t〕,In
buf〔t+1〕,Inbuf〔t+2〕を検索文字列
に設定する機能を有し、後述する検索用コード振り分け
手段62に文字を受け渡す工程を主に実行する手段であ
る。本実施形態では、バッファInbuf内に蓄えられ
ている被圧縮データ列内の連続する8ビット構成の3文
字Inbuf〔t〕,Inbuf〔t+1〕,Inbu
f〔t+2〕を24ビット構成の検索文字列に設定して
いる。
【0028】検索用コード振り分け手段62は、文字列
設定手段61が求めた検索文字列を表現するビット列中
の各ビットを複数個の検索用コードに振り分ける機能を
有し、後述する検索用コード振り分け工程を主に実行す
る手段である。本実施形態では、文字列設定手段61が
求めた24ビット構成の検索文字列を表現するビット列
中の各ビットを、2個の検索用コードS1,S2に各々
振り分けている。
【0029】24ビット構成の検索文字列に対して検索
用コードS1と検索用コードS2を定める場合、例え
ば、検索用コードS1のビット数を20ビットとし、検
出用コードS2のビット数を4ビットにすることや、検
索用コードS1のビット数と検出用コードS2のビット
数とを共に12ビットにすること、更に検索文字列を表
現したビット列の一部のビットを複数の検索用コードに
重複して包含する事も可能である。本実施形態では、検
索用コードS1のビット数を12ビットとし、検出用コ
ードS2のビット数を12ビットとしている。
【0030】配列内容取得手段63は、検索用コード振
り分け手段62で定めた検索用コードを配列アドレスと
し、インデックステーブルあるいはアドレステーブルか
ら配列内容を取得する。照合手段64はこの様にして得
た各々の配列内容が一致するか否かを照合する処理を実
行する。出現位置情報取得手段65は、照合した配列内
容が一致したときに一致した配列内容またはそれに準ず
るものに基づいて検索文字列に対する過去出現位置情報
を取得する機能を有している。
【0031】符号化手段66は、検索文字列に対する過
去出現位置情報が取得できたときにコピー符号を出力す
るコピー符号生成部66aと、検索文字列に対する過去
出現位置情報が取得できなかったときにリテラル符号を
出力するリテラル符号生成部66bとを有しており、後
述するコピー符号生成工程、リテラル符号生成工程を主
に実行する手段である。
【0032】コピー符号生成部66aは、過去の出現ア
ドレスを起点として、起点以降のアドレスに対応する配
列の内容と入力データとが連続して一致する文字列長を
一致長情報FLとして求める一致長算出処理、過去の出
現アドレス情報として、入力バッファ内のアドレス(A
dress〔Index〔S1〕〕)、または現入力位
置との相対アドレス(Adress〔Index〔S
1〕〕−t)を出力する処理、過去の出現アドレス情報
として、テーブルに過去に登録した登録番号Index
1〔S1〕、または現在の登録番号との相対番号(Co
unter−Index1〔S1〕)を出力する処理、
過去の出現アドレス情報と一致長情報FLとを符号化し
て出力する符号化出力処理を実行する。
【0033】リテラル符号生成部66bは、バッファI
nbuf内に蓄えられている被圧縮データ列をそのま
ま、または被圧縮データ列に準ずる(例えば、被圧縮デ
ータ列を符号化したもの)データを出力する符号化出力
処理を実行できる。図7は、本発明の第1の実施形態で
ある、データ圧縮方法の基本的工程を説明する工程図で
あり、図8はプログラミングのための基本フローチャー
トである。
【0034】なお、以下の説明では、前述の辞書型符号
化方法を実行する際に過去の出現位置を検索するために
本発明のデータ圧縮方法を適用した実施形態を説明する
が、本発明は辞書型符号化方法等の圧縮技術に限定され
るものではなく、一般の文字列検索に用いることができ
る。第1実施形態のデータ圧縮方法は、図7に示す様
に、初期化工程70、文字列設定工程71、検索用コー
ド振り分け工程72、配列内容取得工程73、照合工程
74、出現位置情報取得工程75、符号化工程76およ
び圧縮データの出力工程77を中心とする論理構成にな
っており、前述のマイクロプロセッサーで実行可能なプ
ログラムコードで記述されている。
【0035】初期化工程70は、図8のフローチャート
において例えばステップT1およびT2で示され、in
dex1を初期化しかつ入力バッファInbuf内のこ
れから圧縮する位置を示すtを0に、文字列登録数カウ
ンタを1に設定する。文字列設定工程71は、バッファ
Inbuf内に蓄えられている被圧縮データ列の現符号
化位置tを起点として連続する複数の文字Inbuf
〔t〕,Inbuf〔t+1〕,Inbuf〔t+2〕
を検索文字列(8ビット×3=24ビット)に設定す
る。
【0036】検索用コード振り分け工程72は、前工程
で得られた検索文字列を表現するビット列を構成する各
ビットを複数個の検索用コードに振り分ける工程であ
り、検索用コード振り分け手段62が中心となって実行
する工程である。本実施形態では24ビット構成の検索
文字列を表現するビット列を構成する各ビットを2個の
検索用コードS1,S2に各々振り分けている。なお図
8のフローチャートでは、この工程はステップT3に示
されている。
【0037】配列内容取得工程73は、前工程で構成さ
れた検索用コードS1、S2を配列のアドレスとして、
インデックステーブルあるいは直接アドレステーブルか
ら配列内容index1〔S1〕、index2〔S
2〕あるいはaddress1〔S1〕、addres
s2〔S2〕を取得する工程である。工程73は、配列
内容取得手段63が主として実行する。
【0038】照合工程74は、前工程73で取得した各
々の配列内容index1〔S1〕、配列内容inde
x2〔S2〕若しくはaddress1〔S1〕、ad
dress2〔S2〕とが一致するか否かを照合する工
程であり、照合手段64が中心となって実行する工程で
ある。図8のフローチャートでは、ステップT4によっ
て主として実行されている。
【0039】出現位置情報取得工程74は、前工程で照
合された配列内容index1〔S1〕もしくは配列内
容index2〔S2〕とが一致したとき(ステップT
4のYES)、あるいは配列内容address1〔S
1〕、address2〔S2〕とが一致したときに、
配列内容に基づいて、検索文字列に対する過去出現位置
情報を取得する工程である。図4の例では、取得された
過去出現位置情報は、address1〔S1〕または
address2〔S2〕(両者は一致する)であり、
図5の例では、address〔Index〔S1また
はS2〕〕である。
【0040】なお、図8に示すフローチャートでは、ス
テップT5において、取得された配列内容index1
〔S1〕、index2〔S2〕が最近出現しているか
否か(Counter−Index1〔S1〕<212
が、更に出現位置情報の一部として取得されている(ス
テップT5)。符号化工程76は、出現位置情報取得工
程74において出現位置情報が得られた場合(ステップ
T5のYES)コピー符号を生成するコピー符号生成工
程と、出現位置情報が得られない場合(ステップT4ま
たはステップT5のNO)にリテラル符号を生成するリ
テラル符号生成工程とを有している。コピー符号生成工
程は、図8のフローチャートにおいてステップT6以下
ステップT15迄を示し、リテラル符号生成工程はステ
ップT5−1からステップT5−2(またはステップT
5−3)までを示す。
【0041】コピー符号生成工程は、図6のコピー符号
生成部66aが中心となって実行する工程であり、リテ
ラル符号生成工程は、リテラル符号生成部66bが中心
となって実行する工程である。出力工程77は、得られ
たコピー符号から圧縮データを出力するか、またはリテ
ラル符号を出力する。以下に上記図8のフローチャート
の動作について、更に説明を加える。例えば図5に示す
例において、配列内容Index1〔T1〕もしくは配
列内容Index2〔T2〕が等しい場合(ステップT
4のYES)、Inbuf〔t〕,Inbuf〔t+
1〕,Inbuf〔t+2〕の検索文字列が過去に出現
していることが分かる。このとき、図5に示すInde
xテーブルに保持されている配列内容Index1〔S
1〕または配列内容Index2〔S2〕をアドレスと
して、検索文字列に対する過去の検索において出現して
いたアドレスを図5に示すAdressテーブルから得
る(ステップT7)。
【0042】なお、ステップT7において、P1、P2
はステップT7〜T9(T12〜T13)で一時的に使
用する変数であり、P1には過去の出現位置を、P2に
は現在の位置を代入する。ステップT7〜ステップT9
では、過去に出現した3バイトに続くバイトと入力デー
タInbuf〔t+3〕以降とが続けて一致する長さF
L(一致長)を調べ、その一致長情報FLを求めてい
る。現在の位置P2として、t+3としているのは、先
頭の3文字の一致確認は既にステップT3からT4で済
ませている為である。
【0043】こうして求めた一致長情報FLと相対アド
レス情報(Count−Index1〔S1〕)を出力
(ステップT11とステップT9−1)する。ステップ
T5でNOの場合は、リテラルモードを指定する符号
(literal符号)及びそのときのInbuf
〔t〕とを出力する(ステップT5−1)。本実施形態
では、一致長情報が24 −1以上の場合(ステップT1
0のYES)、続けて8ビットを一致長符号に割り当て
る(ステップT15)。リテラルモードの場合には、1
バイト分、そのまま生で出力する(ステップT5−
1)。
【0044】一方、リテラル符号生成工程(ステップT
5−1,T5−2)では、バッファInbuf(t)内
に蓄えられている被圧縮データ列をそのまま、または被
圧縮データ列に準ずるデータを符号化して出力する。以
上の検索及び符号化工程(ステップT1、…、ステップ
T16)は、入力されたファイルに対する圧縮作業が終
了するまで繰り返される。
【0045】以上説明したように、本発明の第1の実施
形態のデータ圧縮方法及びデータ圧縮装置では、ハッシ
ュテーブルを使用した場合と同等の少ないテーブルの記
憶領域でルックアップテーブルを用いた場合と同様の検
索スピードにより、文字の検索を実行し、データを圧縮
することができる。また、ハッシュテーブルを用いた場
合に必要である各文字についての照合は、本実施形態で
は必要ではないので、一致確認の簡素化を図ることがで
きる。
【0046】図9は、本発明にかかるデータ圧縮方法の
第2実施形態の基本動作を説明するための概念図であ
り、図10はこのデータ圧縮方法を実現するための装置
の構成を示すブロック図、図11はこの実施形態の基本
的工程を説明する工程図、さらに図12はプログラミン
グのための基本フローチャートである。以下に、本発明
の第2の実施形態の構成および動作を、上記図9〜12
を参照して詳細に説明する。
【0047】本実施形態では、図9に示す様に、まず入
力された文字列Inbuf〔t〕,Inbuf〔t+
1〕,Inbuf〔t+2〕を、ビットコード振り分け
部11において、S1、S2のビットコードに振り分け
る。コードS1、S2は、第1の実施形態とは異なっ
て、各文字の特徴を表すビットがなるべくコードS1に
振り分けられる様にする。
【0048】また、コードS1、S2は、振り分けられ
る前のビット列に対して互いに相補的である。即ち、コ
ードS2は、元のビット列からコードS1を取り除いた
残りのビット(Remainbit)で構成される。本
実施形態では、過去に出現した文字列で構成されたコー
ドS1、S2において、コードS1を配列のアドレスと
し、配列の内容にコードS2を登録したテーブル(Re
mainbit Table)20が用意されている。
【0049】データ圧縮を行う場合、入力された文字列
Inbuf〔t〕,Inbuf〔t+1〕,Inbuf
〔t+2〕から構成したコードS1を配列のアドレスと
してテーブル引きを行い、配列の内容を取得する。この
配列の内容をコードS2と照合し、両者が一致すればそ
の文字列が過去に出現していたことが分かる。従って、
コードS1を配列のアドレスとしてインデックステーブ
ル21を参照する事によって、あるいは直接アドレステ
ーブル22を参照することによって、第1の実施形態と
同様に入力文字列の過去の出現位置が取得される。
【0050】上記第2の実施形態に対して、図9に示す
様に、コードS1に演算を行って複数(h個、hは任意
の整数)のアドレスを形成することにより、リメインビ
ットテーブル20において一致候補を複数取得する変形
例も可能である。この場合、複数の一致候補とコードS
2を照合することにより、一致の確率が向上する。なお
hを1と見做せば、上記第2の実施形態は、この変形例
に含まれるので、以降、両者を同じと見なして説明す
る。
【0051】上記第2実施形態のデータ圧縮方法は、辞
書型符号化方法における文字列検索を高速かつ簡便に行
うことができるといった特徴を有し、図11において示
す様に初期化工程90(図12のフローチャートではス
テップR1,R2,R4)、文字列設定工程91(ステ
ップR3)、検索用コード振り分け工程92(ステップ
R3)、演算工程93、配列内容取得工程94、照合工
程95(ステップR5)、出現位置情報取得工程96、
符号化工程97および出力工程98を中心とする論理構
成になっており、前述のマイクロプロセッサーで実行可
能なプログラムコードで記述されている。
【0052】文字列設定工程91(ステップR3)は、
バッファInbuf内に蓄えられている被圧縮データ列
内の文字検索開始位置tを起点として連続する複数の文
字Inbuf〔t〕,Inbuf〔t+1〕,Inbu
f〔t+2〕を検索文字列に設定する工程であり、図1
0の文字列設定手段81が中心となって実行する工程で
ある。本実施形態では、前述の第1実施形態のデータ圧
縮方法と同様に、3文字Inbuf〔t〕,Inbuf
〔t+1〕,Inbuf〔t+2〕を検索文字列に設定
している。
【0053】検索用コード振り分け工程92(ステップ
R3)は、前工程で得られた検索文字列を表現するビッ
ト列を構成する各ビットを2つの検索用コードS1,S
2に振り分け、その一方を検索用コードS1とすると同
時に、その他方を検出用コードS2とする工程であり、
検索用コード振り分け手段92が中心となって実行する
工程である。なお本実施形態の一つの特徴は、上述した
ように、コードS1とS2が検索文字列に対して相補コ
ードを形成することである。
【0054】即ち、24ビット構成の検索文字列に対し
て検索用コードS1と検出用コードS2を定める場合、
検索用コードS1のビット数と検出用コードS2のビッ
ト数との和が24ビットであれば良い。例えば、検索用
コードS1のビット数を20ビットとし、検出用コード
S2のビット数を4ビットにすることや、検索用コード
S1のビット数と検出用コードS2のビット数とを共に
12ビットにするといったように、合計が24ビットで
あれば、検索用コードS1のビット数と検出用コードS
2のビット数との組み合わせは任意である。コードS1
とS2が元の24ビットコードのそれぞれのビットに一
対一で対応すれば良い。
【0055】本実施形態では、検索用コードS1のビッ
ト数を12ビットとし、検出用コードS2のビット数を
12ビットとしている。更に本実施形態では、検索用コ
ードS1に、なるべく元のビット列の特徴となる部分が
集中する様にしている。本実施形態では、図9に示す様
に、検索用コードS1に演算を行って、検索用コードS
1からh個の配列のアドレスを形成している。このh個
のアドレスに基づいて、リメインビットテーブル20の
予め登録されている配列の内容を取得する。この様にし
て得たh個の一致候補を検出用コードS2そのものと照
合する。照合の結果、検出用コードS2がテーブル20
のh個の一致候補の何れかと一致すれば、その検索文字
列が過去に出現していたことが分かる。従って、コード
S1に演算を行ったものを配列アドレスとしてインデッ
クステーブル21から配列の内容を取得し、更にアドレ
ステーブル22からその文字列の過去の出現位置を取得
する。
【0056】演算工程93は、上述した様に、コード振
り分け工程92で得られた検索用コードS1に対して、
掛け算またはシフト演算のいずれか一方の演算を実行
し、h個のコードS1×h、・・・(S1+1)×(h
−1)を得る工程であり、演算手段83が中心となって
実行する工程である。例えば、検索用コードS1におい
て、hを4としたとき、検索用コードS1を2ビット分
だけシフト演算して、図9に示す様にh個のコードを得
る。
【0057】配列内容取得工程94は、前工程93で得
られたh個のコードを配列のアドレスとして、リメイン
ビットテーブル20からそれらのアドレスに予め登録さ
れている配列内容Remainbit〔S1×h〕,
…,Remainbit〔(S1+1)×h−1〕を得
る工程であり、図10の配列内容取得手段が中心となっ
て実行する工程である。
【0058】照合工程95(図12のフローチャートの
ステップR5、R5−1、R5−2に相当)は、前工程
で取得した配列内容Remainbit〔S1×h〕,
…,Remainbit〔(S1+1)×h−1〕と前
工程で得られた検出用コードS2とが一致しているか否
かを照合する工程であり、照合手段85が中心となって
実行する工程である。
【0059】照合工程95において一致が検出される
と、即ちRemainbit〔S1×h+ord〕が検
出用コードS2と一致すると、出現位置情報取得工程9
6においてインデックステーブル21およびアドレステ
ーブル22を参照して、現検出文字列の過去の出現位置
に関する情報を取得する。即ち、図9に示すインデック
ステーブルに記録されているIndex1〔S1〕を参
照し、アドレステーブル22から過去の出現位置Adr
ess〔Index{S1}〕を得ることができる。
【0060】なお、図12のフローチャートには記載さ
れていないが、ステップR5以降に第1の実施形態の場
合(図8のフローチャート参照)と同様に、この検索文
字列が最近出現したか否かを検出するステップ(Cou
nt−Index〔S1〕<212)を設けても良いこと
は勿論である。出現位置情報取得工程96は、図10の
出現位置情報取得手段86が主に実行する工程である。
【0061】符号化工程97は、コピー符号生成工程と
リテラル符号生成工程と備えている。ここでコピー符号
生成工程は、辞書型符号化方法における検索文字列に対
する過去出現位置情報を取得できたときにコピーモード
を指定する符号(Copy符号)を出力する工程であ
り、コピー符号生成部87aが中心となって実行する工
程である。
【0062】なお、ステップR6以下のコピー符号生成
工程は、第1の実施形態において説明したコピー符号生
成工程(図8のフローチャートにおけるステップT6以
下)と同じであるため、詳細な説明は省略する。照合工
程95で一致が得られない場合は、符号化工程97にお
いて、入力された検索文字列からリテラル符号を生成す
る。リテラル符号の生成は、図10の符号化手段87に
おけるリテラル符号生成部87bが主となって実行する
工程である。図12に示すフローチャートの場合は、リ
テラル符号出力としてステップR−3で、そのときのI
nbuf〔t〕を出力する。
【0063】なお、図12のフローチャートにおけるリ
テラル符号形成のための各ステップについては、これが
単に一例であるため、ここで詳細には説明しない。この
ような工程を設けた結果、第2実施形態のデータ圧縮方
法及びデータ圧縮装置では、ハッシュテーブルを使用し
た場合と同等の少ないテーブルの記憶領域でルックアッ
プテーブルを用いた場合と同様の検索スピードにより、
文字の検索を実行し、データを圧縮することができる。
【0064】また、ハッシュテーブルを用いた場合に必
要である各文字についての照合は、本実施形態では必要
ではないので、一致確認の簡素化を図ることができる。
なお、データ圧縮方法の第1実施形態または第2実施形
態は、過去の出現位置として相対番号を符号化して出力
しているが、直接過去の入力バッファInbufのアド
レスをそのまま、もしくは符号化して出力してもよい。
またこれらの実施形態は、辞書型符号化方法に文字列検
索を適用しているが、辞書型符号化方法に囚われず、文
字列検索に用いることができる。
【0065】また、第1の実施形態の説明の部分では述
べていないが、第1の実施形態においても、コードS1
またはコードS2に演算を行って、一致候補を複数個形
成することも可能であることに注意されたい。次に、上
述のデータ圧縮方法の各実施形態で使用可能な検索コー
ド(または検出コード)S1,S2の作成方法につい
て、実例を挙げて説明する。
【0066】図13は、検索文字列を表現するビット列
の特徴的なビットを検索用コードS1,S2の各々にな
るべく均一に振り分ける場合を示す。これは、特に第1
の実施形態に適するコードの振り分け方法である。通
常、特徴的なビットは、下位のビットであるため、各文
字コードの下位ビットを成るべく検索用コードS1、S
2に均等に成るように振り分ける。従って図示する様
に、検索文字Inbuf〔t〕、Inbuf〔t+2〕
の偶数ビットと検索文字Inbuf〔t+1〕の奇数ビ
ットを組み合わせて検索用コードS1を形成する。ま
た、検索文字Inbuf〔t〕、Inbuf〔t+2〕
の奇数ビットと、検索文字Inbuf〔t+1〕の偶数
ビットを組み合わせて検索用コードS2を形成する。
【0067】これにより、検索用コードS1には一個の
最下位ビット(格子状にハッチングされている)が、検
索用コードS2には2個の最下位ビットが含まれる様に
なり、文字コードの特徴が比較的均等にコードS1、S
2に分配される。図14は、図13のコード振り分け方
法に類似の方法を示す。この振り分け方法では、検索用
コードS1、S2の下位8ビットを検索文字Inbuf
〔t+1〕とInbuf〔t+2〕の各ビットを交互に
配置することにより、形成している。上位4ビットは、
検索文字Inbuf〔t〕の各ビットで構成されてい
る。図から明らかなように、コードS1には1個の最下
位ビットが、コードS2には2個の最下位ビットが含ま
れ、何れかのコードに最下位ビットが集中することは避
けられる。
【0068】図15に示す例は、図13に示す例と同様
に、検索文字Inbuf〔t〕、Inbuf〔t+2〕
の偶数ビットと検索文字Inbuf〔t+1〕の奇数ビ
ットを組み合わせて検索用コードS1を形成するが、こ
の場合各検索文字の最下位ビットをコードS1に含ませ
ている。更に、検索文字Inbuf〔t〕、Inbuf
〔t+2〕の奇数ビットと検索文字Inbuf〔t+
1〕の偶数ビットを組み合わせて検索用コードS2を形
成するが、この時も同様に各検索文字の最下位ビットを
含ませている。
【0069】この様にして、各検索文字の特徴を共通に
含む、14ビットのコードS1と、13ビットのコード
S2が形成される。なお、図13および14に示したコ
ードの振り分け方法は、本発明の第1の実施形態に適し
た方法であるが、第2の実施形態にも適用可能である。
しかしながら図15に示した方法は、コードS1、S2
が相補コードではないため(コードS1は14ビット、
コードS2は13ビットであるため)、第2の実施形態
には適用することが出来ない。
【0070】図16に示すコードの振り分け方法は、特
に第2の実施形態に適した振り分け方法である。即ちこ
の方法では、各検索文字Inbuf〔t〕,Inbuf
〔t+1〕,Inbuf〔t+2〕の下位4ビットで、
検索用コードS1を形成することによって、コードS1
に文字の特徴を表すビットを集中させる。一方、各検索
文字Inbuf〔t〕,Inbuf〔t+1〕,Inb
uf〔t+2〕の上位4ビットで、検出用コードS2を
形成することによって、文字の特徴をあまり含まない検
出用コードS2が作成される。
【0071】なお、図16に示す振り分け方法もまた第
1の実施形態に適用できることは勿論であるが、しかし
ながら第1の実施形態にはあまり好ましくない振り分け
方法である。
【0072】
【発明の効果】本発明によれば、辞書型符号化方法で実
行される文字列の過去の出現位置検出がリーズナブルな
テーブル領域でかつ高速に検索できるようになる。即
ち、ルックアップテーブルを用いた文字列検索方法のよ
うに、出現可能な検索文字列に1対1に対応したテーブ
ルサイズを必要とせず、3文字、4文字といった長い検
索文字列に対する文字検索であっても、検索作業に必要
なテーブル領域の低減化を図ることができるようにな
る。
【0073】またハッシュテーブルを用いた文字列検索
方法のような、候補文字列と検索文字列とを一対一で照
合してそれが実際に検索している検索文字列であるか否
かをチェックする作業が必要ではないので、一致確認の
作業を大幅に簡素化することができる。
【図面の簡単な説明】
【図1】辞書型符号化方法を用いた従来のデータ圧縮方
法の基本動作を説明するための概念図である。
【図2】図1のデータ圧縮方法において、ルックアップ
テーブルを用いた文字列検索方法の基本動作を説明する
ための概念図である。
【図3】図1のデータ圧縮方法において、ハッシュテー
ブルを用いた文字列検索方法の基本動作を説明するため
の概念図である。
【図4】本発明のデータ圧縮方法にかかる第1の実施形
態の基本原理を説明するための機能ブロック図である。
【図5】図4に示す第1の実施形態の変形例を示す機能
ブロック図である。
【図6】本発明の第1の実施形態にかかるデータ圧縮方
法を実行するための装置の構成を示すブロック図であ
る。
【図7】本発明の第1の実施形態にかかるデータ圧縮方
法を実行するための工程を示すブロック図である。
【図8】本発明の第1の実施形態をプログラミングによ
って実現する場合の基本フローチャートの一例を示す図
である。
【図9】本発明のデータ圧縮方法にかかる第2の実施形
態の基本原理を説明するための機能ブロック図である。
【図10】本発明の第2の実施形態にかかるデータ圧縮
方法を実行するための装置の構成を示すブロック図であ
る。
【図11】本発明の第2の実施形態にかかるデータ圧縮
方法を実行するための工程を示すブロック図である。
【図12】本発明の第2の実施形態をプログラミングに
よって実現する場合の基本フローチャートの一例を示す
図である。
【図13】本発明のデータ圧縮方法における検索用(ま
たは検出用)コードの1作成方法を示す概念図である。
【図14】本発明のデータ圧縮方法における検索用(ま
たは検出用)コードのその他の作成方法を示す概念図で
ある。
【図15】本発明のデータ圧縮方法における検索用(ま
たは検出用)コードの更にその他の作成方法を示す概念
図である。
【図16】本発明のデータ圧縮方法における検索用(ま
たは検出用)コードの更にその他の作成方法を示す概念
図である。
【符号の説明】
10…入力バッファ 11…ビット振り分け部 12、13…アドレステーブル 14…照合部 15、16…インデックステーブル 17…アドレステーブル 20…リメインビットテーブル 21…インデックステーブル 22…アドレステーブル 60…データ圧縮装置 61…文字列設定手段 62…検索用コード振り分け手段 63…配列内容取得手段 64…照合手段 65…出現位置情報取得手段 66…符号化手段 66a…コピー符号生成部 66b…リテラル符号生成部 80…データ圧縮装置 81…文字列設定手段 82…検索用コード振り分け手段 83…演算手段 84…配列内容取得手段 85…照合手段 86…出現位置情報取得手段 87…符号化手段 87a…コピー符号生成部 87b…リテラル符号生成部 S1、S2…第1、第2のコード

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 被圧縮データ列に圧縮処理を行って圧縮
    データを作成するデータ圧縮方法において、 被圧縮データ列内の連続する複数の文字を検索する文字
    列に設定する文字列設定工程と、 前記文字列を表現するビット列中の各ビットを少なくと
    も2個のコードに振り分けて第1、第2の検索用コード
    を生成する検索用コード振り分け工程と、 前記第1、第2の検索用コードをそれぞれ配列のアドレ
    スとして用いて予め過去の文字列の出現位置に関する情
    報が登録された第1、第2の配列テーブルから第1、第
    2の配列内容を取得する、配列内容取得工程と、 前記取得した第1、第2の配列内容を照合する照合工程
    と、および前記照合した第1、第2の配列内容が一致し
    たとき、前記第1または第2の配列内容に基づいて前記
    文字列に対する過去の出現位置情報を取得する出現位置
    情報取得工程、を備える、データ圧縮方法。
  2. 【請求項2】 被圧縮データ列に圧縮処理を行って圧縮
    データを作成するデータ圧縮方法において、 被圧縮データ列内の連続する複数の文字を検索する文字
    列に設定する文字列設定工程と、 前記文字列を表現するビット列中の各ビットを2個のコ
    ードに振り分けて検索用の第1のコードと該第1のコー
    ドの相補コードである第2のコードを生成する検索用コ
    ード振り分け工程と、 現時点で検索すべき文字列に関する前記第1のコードを
    配列のアドレスとして用いて、過去に出現した文字列に
    関する前記第2のコードが予め登録された第1の配列テ
    ーブルから、配列の内容を取得する、配列内容取得工程
    と、 前記取得した配列内容と前記第2のコードを照合する照
    合工程と、および前記照合結果が一致の場合、前記第1
    のコードを配列のアドレスとして用いて予め過去の文字
    列の出現位置に関する情報が登録された第2の配列テー
    ブルから前記設定された文字列の過去の出現位置に関す
    る情報を取得する出現位置情報取得工程、を備える、デ
    ータ圧縮方法。
  3. 【請求項3】 被圧縮データ列に圧縮処理を行って圧縮
    データを作成するデータ圧縮方法において、 被圧縮データ列内の連続する複数の文字を検索する文字
    列に設定する文字列設定工程と、 前記文字列を表現するビット列中の各ビットを2個のコ
    ードに振り分けて検索用の第1のコードと該第1のコー
    ドの相補コードである第2のコードを生成する検索用コ
    ード振り分け工程と、 前記第1のコードに演算を行って前記第1のコードを起
    点とする複数のコードを取得する、演算工程と、 現時点で検索すべき文字列に関する前記取得された複数
    のコードを配列のアドレスとして用いて、過去に出現し
    た文字列に関する前記第2のコードが予め登録された第
    1の配列テーブルから、複数の配列内容を取得する、配
    列内容取得工程と、 前記取得した複数の配列内容と前記第2のコードとを照
    合する照合工程と、および前記照合結果が一致の場合、
    前記演算工程で得られたコードを配列のアドレスとして
    用いて、予め過去の文字列の出現位置に関する情報が登
    録された第2の配列テーブルから前記設定された文字列
    の過去の出現位置に関する情報を取得する出現位置情報
    取得工程、を備える、データ圧縮方法。
  4. 【請求項4】 前記演算工程における演算は、掛け算ま
    たはシフト演算の何れか一方である、請求項3に記載の
    データ圧縮方法。
  5. 【請求項5】 さらに、前記取得された出現位置情報を
    符号化して出力する符号化工程を備える、請求項1乃至
    4の何れか1項に記載のデータ圧縮方法。
  6. 【請求項6】 前記符号化工程は、 前記出現位置情報取得工程において前記文字列に対する
    過去の出現位置にかかる情報を取得できたときにコピー
    符号を出力するコピー符号生成工程と、 前記出現位置情報取得工程において前記文字列に対する
    過去の出現位置にかかる情報を取得できなかったときに
    リテラル符号を出力するリテラル符号生成工程とを有す
    る、請求項5に記載のデータ圧縮方法。
  7. 【請求項7】 前記コピー符号生成工程は、 前記出現位置情報取得工程において得られた前記設定さ
    れた文字列の出現位置を起点として当該起点以降のアド
    レスに対応する配列の内容と前記設定された文字列以降
    の文字列とが連続して一致する文字列長を一致長情報と
    して求める一致長算出工程と、 前記過去の出現位置情報と前記一致長情報とを符号化し
    て出力する符号化出力工程とを有する、請求項6に記載
    のデータ圧縮方法。
  8. 【請求項8】 前記リテラル符号生成工程は、前記設定
    された文字列の最初の文字の入力データをそのまままた
    は符号化して出力する工程を有する、請求項6または7
    に記載のデータ圧縮方法。
  9. 【請求項9】 前記第1および第2のコードは、前記設
    定された文字列の各文字を表すビット列の複数の下位ビ
    ットおよび複数の上位ビットが比較的均等に両者に分配
    される様に振り分けられる、請求項1に記載のデータ圧
    縮方法。
  10. 【請求項10】 前記第1および第2のコードは、前記
    設定された文字列の各文字を表すビット列の最下位ビッ
    トが比較的均等に両者に分配される様に振り分けられ
    る、請求項1または9に記載のデータ圧縮方法。
  11. 【請求項11】 前記第1および第2のコードは、前記
    設定された文字列の各文字を表すビット列の最下位ビッ
    トを共通に含む様に振り分けられる、請求項1に記載の
    データ圧縮方法。
  12. 【請求項12】 前記第1のコードは、前記設定された
    文字列の各文字を表すビット列の下位複数のビットで構
    成され、前記第2のコードは、その上位複数のビットで
    構成されている、請求項2または3に記載のデータ圧縮
    方法。
  13. 【請求項13】 被圧縮データ列に圧縮処理を行って圧
    縮データを作成するデータ圧縮装置において、 被圧縮データ列内の連続する複数の文字を検索する文字
    列に設定する文字列設定手段と、 前記文字列を表現するビット列中の各ビットを少なくと
    も2個のコードに振り分けて第1、第2の検索用コード
    を生成する検索用コード振り分け手段と、 前記第1、第2の検索用コードをそれぞれ配列のアドレ
    スとして用いて予め過去の文字列の出現位置に関する情
    報が登録された第1、第2の配列テーブルから第1、第
    2の配列内容を取得する、配列内容取得手段と、 前記取得した第1、第2の配列内容を照合する照合手段
    と、および前記照合した第1、第2の配列内容が一致し
    たとき、前記第1または第2の配列内容に基づいて前記
    文字列に対する過去の出現位置情報を取得する出現位置
    情報取得手段、を備える、データ圧縮装置。
  14. 【請求項14】 被圧縮データ列に圧縮処理を行って圧
    縮データを作成するデータ圧縮装置において、 被圧縮データ列内の連続する複数の文字を検索する文字
    列に設定する文字列設定手段と、 前記文字列を表現するビット列中の各ビットを2個のコ
    ードに振り分けて検索用の第1のコードと該第1のコー
    ドの相補コードである第2のコードを生成する検索用コ
    ード振り分け手段と、 現時点で検索すべき文字列に関する前記第1のコードを
    配列のアドレスとして用いて、過去に出現した文字列に
    関する前記第2のコードが予め登録された第1の配列テ
    ーブルから、配列の内容を取得する、配列内容取得手段
    と、 前記取得した配列内容と前記第2のコードを照合する照
    合手段と、および前記照合結果が一致の場合、前記第1
    のコードを配列のアドレスとして用いて予め過去の文字
    列の出現位置に関する情報が登録された第2の配列テー
    ブルから前記設定された文字列の過去の出現位置に関す
    る情報を取得する出現位置情報取得手段、を備える、デ
    ータ圧縮装置。
  15. 【請求項15】 被圧縮データ列に圧縮処理を行って圧
    縮データを作成するデータ圧縮装置において、 被圧縮データ列内の連続する複数の文字を検索する文字
    列に設定する文字列設定手段と、 前記文字列を表現するビット列中の各ビットを2個のコ
    ードに振り分けて検索用の第1のコードと該第1のコー
    ドの相補コードである第2のコードを生成する検索用コ
    ード振り分け手段と、 前記第1のコードに演算を行って前記第1のコードを起
    点とする複数のコードを取得する、演算手段と、 現時点で検索すべき文字列に関する前記取得された複数
    のコードを配列のアドレスとして用いて、過去に出現し
    た文字列に関する前記第2のコードが予め登録された第
    1の配列テーブルから、複数の配列内容を取得する、配
    列内容取得手段と、 前記取得した複数の配列内容と前記第2のコードとを照
    合する照合手段と、および前記照合結果が一致の場合、
    前記演算手段で得られたコードを配列のアドレスとして
    用いて、予め過去の文字列の出現位置に関する情報が登
    録された第2の配列テーブルから前記設定された文字列
    の過去の出現位置に関する情報を取得する出現位置情報
    取得手段、を備える、データ圧縮装置。
  16. 【請求項16】 前記演算手段における演算は、掛け算
    またはシフト演算の何れか一方である、請求項15に記
    載のデータ圧縮装置。
  17. 【請求項17】 さらに、前記取得された出現位置情報
    を符号化して出力する符号化手段を備える、請求項13
    乃至16の何れか1項に記載のデータ圧縮装置。
  18. 【請求項18】 前記符号化手段は、 前記出現位置情報取得手段において前記文字列に対する
    過去の出現位置にかかる情報を取得できたときにコピー
    符号を出力するコピー符号生成手段と、 前記出現位置情報取得手段において前記文字列に対する
    過去の出現位置にかかる情報を取得できなかったときに
    リテラル符号を出力するリテラル符号生成手段とを有す
    る、請求項17に記載のデータ圧縮装置。
  19. 【請求項19】 前記コピー符号生成手段は、 前記出現位置情報取得手段において得られた前記設定さ
    れた文字列の出現位置を起点として当該起点以降のアド
    レスに対応する配列の内容と前記設定された文字列以降
    の文字列とが連続して一致する文字列長を一致長情報と
    して求める一致長算出手段と、 前記過去の出現位置情報と前記一致長情報とを符号化し
    て出力する符号化出力手段とを有する、請求項18に記
    載のデータ圧縮装置。
  20. 【請求項20】 前記リテラル符号生成手段は、前記設
    定された文字列の最初の文字の入力データをそのままま
    たは符号化して出力する手段を有する、請求項18また
    は19に記載のデータ圧縮装置。
JP15021799A 1998-07-09 1999-05-28 データ圧縮方法及びデータ圧縮装置 Expired - Fee Related JP4242970B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP15021799A JP4242970B2 (ja) 1998-07-09 1999-05-28 データ圧縮方法及びデータ圧縮装置
US09/348,163 US6563956B1 (en) 1998-07-09 1999-07-07 Method and apparatus for compressing data string
US10/230,236 US6876774B2 (en) 1998-07-09 2002-08-29 Method and apparatus for compressing data string

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP10-193832 1998-07-09
JP19383298 1998-07-09
JP15021799A JP4242970B2 (ja) 1998-07-09 1999-05-28 データ圧縮方法及びデータ圧縮装置

Publications (2)

Publication Number Publication Date
JP2000082967A true JP2000082967A (ja) 2000-03-21
JP4242970B2 JP4242970B2 (ja) 2009-03-25

Family

ID=26479903

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15021799A Expired - Fee Related JP4242970B2 (ja) 1998-07-09 1999-05-28 データ圧縮方法及びデータ圧縮装置

Country Status (2)

Country Link
US (2) US6563956B1 (ja)
JP (1) JP4242970B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004505475A (ja) * 2000-07-25 2004-02-19 ペリビット・ネットワークス,インコーポレイテッド ネットワーク通信データをオンラインで透過的にクロスセッションで符号化及び伝送するための構成及び方法
WO2004062110A1 (ja) * 2002-12-26 2004-07-22 Fujitsu Limited データ圧縮方法、プログラム及び装置
JP2013150041A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体
US9391636B2 (en) 2012-12-19 2016-07-12 Fujitsu Limited Method and system
US9496895B2 (en) 2012-12-19 2016-11-15 Fujitsu Limited Compression method and decompression method

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US7181608B2 (en) 2000-02-03 2007-02-20 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
US7064489B2 (en) * 2000-09-28 2006-06-20 Roke Manor Research Limited Huffman data compression method
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US7277585B2 (en) * 2001-05-25 2007-10-02 Ricoh Company, Ltd. Image encoding method, image encoding apparatus and storage medium
US7366910B2 (en) * 2001-07-17 2008-04-29 The Boeing Company System and method for string filtering
DE10205546B4 (de) * 2002-02-11 2006-01-12 Nexpress Solutions Llc Verfahren zur Datenkomprimierung von Bildmaskendaten
US7130470B1 (en) * 2002-03-15 2006-10-31 Oracle International Corporation System and method of context-based sorting of character strings for use in data base applications
KR100532275B1 (ko) * 2002-12-11 2005-11-29 삼성전자주식회사 이미지 압축방법
US20060124721A1 (en) * 2004-12-10 2006-06-15 Ecpg.Net Inc. Method for data compression and quality checking
AU2005248949B2 (en) * 2005-12-23 2010-04-01 Canon Kabushiki Kaisha Efficient Halftone Image Compression
US20090112900A1 (en) * 2007-10-31 2009-04-30 Krishnamurthy Viswanathan Collaborative Compression
US7864085B2 (en) * 2009-02-05 2011-01-04 Lsi Corporation Data compression method and apparatus
US8207875B2 (en) * 2009-10-28 2012-06-26 Motorola Mobility, Inc. Encoder that optimizes bit allocation for information sub-parts
JP5499894B2 (ja) * 2010-05-14 2014-05-21 株式会社リコー 画像処理装置および画像処理方法
JP2012129778A (ja) * 2010-12-15 2012-07-05 Ricoh Co Ltd 画像処理装置および画像処理方法
US9425825B2 (en) 2012-05-22 2016-08-23 International Business Machines Corporation Path encoding and decoding
JP6065914B2 (ja) * 2012-09-21 2017-01-25 富士通株式会社 制御プログラム、制御方法および制御装置
JP6252489B2 (ja) * 2012-12-19 2017-12-27 富士通株式会社 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム
US8823557B1 (en) * 2013-05-10 2014-09-02 International Business Machines Corporation Random extraction from compressed data
SG11201601228SA (en) * 2013-08-30 2016-03-30 Fujitsu Ltd Data compression apparatus, method, and program
US9407287B2 (en) * 2014-10-21 2016-08-02 Huawei Technologies Co., Ltd. Parallel history search and encoding for dictionary-based compression
GB2533392A (en) 2014-12-19 2016-06-22 Ibm Path encoding and decoding
GB2533391A (en) 2014-12-19 2016-06-22 Ibm Wall encoding and decoding
GB2533393A (en) * 2014-12-19 2016-06-22 Ibm Pad encoding and decoding
US9509337B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor using dynamic hash algorithm based on input block type
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
US9503122B1 (en) 2015-05-11 2016-11-22 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that sorts hash chains based on node string match probabilities
US10027346B2 (en) 2015-05-11 2018-07-17 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that maintains sorted symbol list concurrently with input block scanning
US9515678B1 (en) 2015-05-11 2016-12-06 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that directly huffman encodes output tokens from LZ77 engine
US9509336B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that pre-huffman encodes to decide whether to huffman encode a matched string or a back pointer thereto
US9509335B1 (en) 2015-05-11 2016-11-29 Via Alliance Semiconductor Co., Ltd. Hardware data compressor that constructs and uses dynamic-prime huffman code tables
US9584155B1 (en) 2015-09-24 2017-02-28 Intel Corporation Look-ahead hash chain matching for data compression
US9950261B2 (en) 2016-04-29 2018-04-24 International Business Machines Corporation Secure data encoding for low-resource remote systems
CN107168936B (zh) * 2017-05-17 2019-02-19 上海兆芯集成电路有限公司 基于散列的加速压缩方法以及使用此方法的装置
CN107180018B (zh) * 2017-05-17 2018-11-20 上海兆芯集成电路有限公司 基于散列的加速压缩方法以及使用此方法的装置
US10224957B1 (en) 2017-11-27 2019-03-05 Intel Corporation Hash-based data matching enhanced with backward matching for data compression
US11615056B2 (en) * 2019-09-27 2023-03-28 AVAST Software s.r.o. Compression of array of strings with similarities
US11677416B2 (en) * 2021-05-17 2023-06-13 Radu Mircea Secareanu Hardware implementable data compression/decompression algorithm
CN116805537B (zh) * 2023-08-22 2023-11-07 江汉大学附属医院(武汉市第六医院) 用于心肺康复管理系统的数据处理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4071745A (en) 1977-03-04 1978-01-31 Hall B C Programmable time varying control system and method
US5016009A (en) 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5254990A (en) * 1990-02-26 1993-10-19 Fujitsu Limited Method and apparatus for compression and decompression of data
DE69128053T2 (de) * 1990-08-06 1998-02-26 Fujitsu Ltd Wörterbuch-Suchsystem
US5155484A (en) 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
JPH05113869A (ja) * 1991-10-23 1993-05-07 Fujitsu Ltd データ圧縮符号化及び復号化方式
US5533051A (en) * 1993-03-12 1996-07-02 The James Group Method for data compression
US5389922A (en) * 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
US5635932A (en) * 1994-10-17 1997-06-03 Fujitsu Limited Lempel-ziv compression with expulsion of dictionary buffer matches
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004505475A (ja) * 2000-07-25 2004-02-19 ペリビット・ネットワークス,インコーポレイテッド ネットワーク通信データをオンラインで透過的にクロスセッションで符号化及び伝送するための構成及び方法
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
JP2013150041A (ja) * 2012-01-17 2013-08-01 Fujitsu Ltd プログラム、圧縮ファイル生成方法、圧縮符号伸張方法、情報処理装置、および記録媒体
US9391636B2 (en) 2012-12-19 2016-07-12 Fujitsu Limited Method and system
US9496895B2 (en) 2012-12-19 2016-11-15 Fujitsu Limited Compression method and decompression method
US9577666B2 (en) 2012-12-19 2017-02-21 Fujitsu Limited Method and system

Also Published As

Publication number Publication date
US20020196166A1 (en) 2002-12-26
US6563956B1 (en) 2003-05-13
JP4242970B2 (ja) 2009-03-25
US6876774B2 (en) 2005-04-05

Similar Documents

Publication Publication Date Title
JP2000082967A (ja) デ―タ圧縮方法及びデ―タ圧縮装置
EP0293161B1 (en) Character processing system with spelling check function
JP3421700B2 (ja) データ圧縮装置及び復元装置並びにその方法
JP3499671B2 (ja) データ圧縮装置及びデータ復元装置
CN1228887A (zh) 与串搜索交错进行即时字典更新的数据压缩和解压缩系统
JPH0830432A (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US6982661B2 (en) Method of performing huffman decoding
EP0628228A1 (en) Data compression using hashing
WO2004062110A1 (ja) データ圧縮方法、プログラム及び装置
JP2001345710A (ja) データ圧縮装置および方法
JP2000201080A (ja) 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
US10171103B1 (en) Hardware data compression architecture including shift register and method thereof
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP3241787B2 (ja) データ圧縮方式
JP2000259646A (ja) 情報索引装置
JP3199292B2 (ja) ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
JP2016134808A (ja) データ圧縮プログラム、データ復元プログラム、データ圧縮装置、及びデータ復元装置
Bharathi et al. A plain-text incremental compression (pic) technique with fast lookup ability
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置
JP3425143B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
JPH1155125A (ja) 文字データの圧縮・復元方法
JP3088740B2 (ja) データ圧縮及び復元方式
JPH06202844A (ja) データ圧縮復元処理装置
JPH04265020A (ja) データ圧縮方式
JP3100206B2 (ja) データ圧縮方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060316

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081113

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: 20081202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081226

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees