JP3889762B2 - データ圧縮方法、プログラム及び装置 - Google Patents
データ圧縮方法、プログラム及び装置 Download PDFInfo
- Publication number
- JP3889762B2 JP3889762B2 JP2004564417A JP2004564417A JP3889762B2 JP 3889762 B2 JP3889762 B2 JP 3889762B2 JP 2004564417 A JP2004564417 A JP 2004564417A JP 2004564417 A JP2004564417 A JP 2004564417A JP 3889762 B2 JP3889762 B2 JP 3889762B2
- Authority
- JP
- Japan
- Prior art keywords
- candidate
- character string
- address
- encoding
- match
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000013144 data compression Methods 0.000 title claims abstract description 58
- 238000001514 detection method Methods 0.000 claims abstract description 28
- 238000011156 evaluation Methods 0.000 claims description 53
- 230000001174 ascending effect Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 description 38
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 5
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【技術分野】
【0002】
本発明は、被圧縮データ列から圧縮データを生成するデータ圧縮方法、プログラム及び装置に関し、特に、被圧縮データ列から生成される辞書を用いて、そのデータ列を圧縮するデータ圧縮方法、プログラム及び装置に関する。
【背景技術】
【0003】
近年、文字コード、画像データ等の様々な種類のデータがコンピュータで扱われるようになるのに伴い、取り扱われるデータ量も増大している。そのような大量のデータを扱う場合、データ中の冗長な部分を省いて圧縮することにより、必要な記憶容量を減らしたり、遠隔地へ高速に伝送したりすることができる。
【0004】
ここで本発明は、文字コードの圧縮に限らず、様々なデータの圧縮に適用できるが、以下の説明では情報理論に基づき、データ列をワード単位に分割し、1ワードのデータを文字と呼び、任意のワード数のデータ列を文字列と呼ぶことにする。
【0005】
従来のデータ圧縮技術には、データ系列の類似性を利用した辞書型符号化と、データ列の出現頻度を利用した確率統計型符号化とがある。このうち、前者の辞書型符号化の代表的な方法として、LZ77符号化とLZ78符号化が知られている(植松友彦箸、「文書データ圧縮アルゴリズム入門」、CQ出版、pp.131−208,1995年)。
LZ77符号化とLZ78符号化では、LZ77符号化の方が、簡単な処理で充分な圧縮率が得られることから、実際の使用では主流となっている。
【0006】
LZ77符号化では、図1に示すように、一定サイズのスライドバッファ100を設け、このバッファ100内で入力文字列と最長一致する文字列を検索し、その位置と長さを用いて入力文字列を符号化する。符号化が進むにつれてバッファ100をスライドさせていくことから、この符号化方法は、スライド辞書法とも呼ばれる。
【0007】
図1では、バッファ200の右隣の入力文字列"abcdaaaq..."が符号化されるとき、バッファ200内で一致する文字列のうち最長のものは"abcd"である。そこで、この最長一致文字列の先頭位置と入力文字列の先頭位置の相対アドレス"5(バイト)"を一致位置とし、最長一致文字列の長さ"4(バイド)"を一致長として、(一致位置,一致長)=(5,4)のような符号を生成する。
【0008】
これにより、入力文字列の先頭の"abcd"が(5,4)に置き換えられる。同様にして、次の文字列"aaa"は、符号(13,3)に置き換えられる。しかし、実際に用いられるスライドバッファはもっと長く、最長一致する文字列を発見するためにバッファ内の文字列を順に検索していくと、膨大な時間を要する。このため、実際には、バッファ内のすべての文字列と照合するのではなく、文字列の接頭部(2〜4文字程度)の出現位置を随時テーブルに登録し、テーブルに保持されている位置の文字列のみと照合している。このような検索に使用されるテーブルとしては、ルックアップテーブル(Look Up Table,LUT)とハッシュテーブル(Hash Table)とがある。
【0009】
図2は、LUTを用いた文字列検索を示している。LUT202は、バッファ200内の文字列の接頭部をアドレスとして、その文字列のバッファ200内における出現位置(アドレスまたはポインタ)を格納している。そして、検索時には、入力文字列の接頭部をアドレスとして、LUT202の領域にアクセスし、対応する文字列の位置を取得する。
【0010】
同じ接頭部の文字列がバッファ100内に複数存在する場合は、図3のように、リンクドリスト204の形式で複数の出現位置が保持される。したがって、LUT202に1回アクセスするだけで、バッファ200内のすべての対応する文字列の位置を取得することができる。ここでは、2文字分の接頭部が用いられており、入力文字列の接頭部"ab"に対応するLUT202の領域は、リンクドリスト104を利用して2つの出現位置を保持している。
【0011】
このように、LUTは、検索する接頭部をテーブルの領域に1対1に対応させ、1回のテーブル引きのみで必要な情報を取得できるため、非常に高速な検索を行うことができる。しかし、長い文字列を検索する場合、テーブルに必要な領域の数は出現可能な文字の数の巾乗で増えるため、必要な領域が膨大になる。例えば、出現可能な文字の数を8ビット、256個とすると、n文字の接頭部に対して256のn乗個の領域が必要となる。
【0012】
ところが、検索する接頭部を長くすると、用意された領域のうち実際に使用される(登録される)部分は一部分のみに止まり、テーブル内はまばらな状態になる。したがって、検索する接頭部を長くすると、メモリの使用効率が悪化する。そこで、ハッシュテーブルでは、検索文字列をアドレスとして用いる際に、一定の数値以下に縮退させて、複数の文字列が1つの領域を共有するようにしている。
【0013】
このため、テーブル引きの後で、得られた文字列が実際に検索している文字列かどうかをチェックする必要があるが、LUTに比べて、同等のテーブル領域でより長い文字列を検索することができる。
【0014】
図4は、ハッシュテーブルを用いた文字列検索を示している。ハッシュコード生成部206は、入力文字列の接頭部"abc"からハッシュコード208を生成し、それをアドレスとしてハッシュテーブル210にアクセスする。ハッシュブーブル210には、ハッシュコード208に対応するバッファ200内の位置が格納されており、その位置にある文字列"abcde"と入力文字列を照合することで、両者の接頭部が一致するかどうかがチェックされる。
【0015】
そして、それらが一致すれば、入力文字列と一致する文字列がバッファ200内に存在すると判断される。ハッシュテーブルの場合も、LUTの場合と同様に、バッファ内の同じ接頭部を持つ複数の文字列に対しては、リンクドリストの形式で複数の出現位置が保持される。いずれの場合も、リンクドリストは、最長一致文字列を検索するために用いられる。
【0016】
しかしながら、このような従来のデータ圧縮技術には、次のような問題がある。まずLUTを用いて長い文字列を検索する場合、膨大な領域を持つテーブルを用意しても、その一部分のみしか使用されないので、テーブル内はまばらな状態になる。ハッシュテーブルでは、LUTと比べるとテーブルサイズが小さくなるが、入力データが少なければ、同じようにテーブル内がまばらな状態になる。したがって、メモリが必ずしも有効に利用されないという問題がある。
【0017】
また、最長一致文字列を検索する際、リンクドリストに保持された複数の出現位置を一つ一つ辿らなければならず、同じ接頭部を持つ文字列が多くなると、検索処理に時間がかかるという問題もある。
【0018】
この問題を解決するため本願発明者等にあっては、入力データ量に比例した少ないメモリ量で検索できるデータ圧縮方法を提案している(日本国特許出願:特願2000−98834)。この方法は、従来のように符号化を進めながら順次、検索テーブルに登録して行くのではなく、入力バッファを設け、入力バッファ用の検索テーブルを一度で作り上げる方法である。検索には、入力バッファ中の各アドレスを起点とした文字列を、文字列の内容に従って並びかえた順位リストを利用する。中でも、順位リストから最近一致位置リストを生成し、最近一致位置リストから同じ数字が続く箇所を検出して一致を見つける方法が最も少ないメモリ量で実装することが出来る。
【0019】
図5は、本願発明者が提案している方法で使用される入力バッファ、順位リスト及び最近一致位置リストの具体例である。この方法は次の手順で処理される。
【0020】
(データ入力とリスト生成)
図5(A)入力バッファ212にバッファサイズのデータを入力し、符号化対象位置アドレスtをt=1に初期化し、図5(B)の順位リスト214と図5(C)の最近一致位置リスト216を作成する。ここで、順位リスト214は、入力バッファ212の各アドレスを始点とする3文字列を数値順にソートして作成する。また最近一致位置リスト216は、最も最近に出現したアドレスの相対位置を格納する。
【0021】
例えばアドレス15からの文字列「com」が最も最近に出現したのはアドレス1、相対位置14であることから、最近一致位置リスト216のアドレス15に相対位置14を格納する。なお、特願2000−98834号ではアドレスそのものを最近一致位置リストに格納しており、この場合、最近一致位置リスト216のアドレス15にはアドレス1を格納する。
【0022】
(一致文字列の検出と符号化)
最近一致位置リスト216の中の同じ数字が連続する部分をから一致文字列を検出して符号化する。図5(D)の最近一致位置リスト216について見ると、アドレス15〜20に数字14が連続し、アドレス24〜29に数字9が連続し、アドレス30〜31に数字23が連続している。まずアドレス15〜20に連続する数字14は、アドレス15−14=1からの文字列と一致し、一致長は6+2=8で一致位置が14となり、(一致長,位置)=(8,14)が符号として生成される。
【0023】
またアドレス24〜29,30〜32に連続する数字9,23は、アドレス24−23=1からの文字列と一致し、一致長は9+2=11で一致位置が23となり、(一致長,位置)=(11,23)が符号として生成される。
【発明の開示】
【発明が解決しようとする課題】
【0024】
しかしながら、図5に示したデータ圧縮方法は、最近一致位置リストから同じ数字が連続する箇所を検出することによって一致文字列を検出しているが、図6(A)の入力バッファ112のように、長い文字列の繰返しの間に、長い文字列を形成している短い文字列の繰返しが出現するようなデータでは、最長一致を検出することができない。即ち、図6(A)の入力バッファ212にあっては、アドレス1,16からの長い文字列「abcdef」の間に、アドレス7,10,13からの短い文字列「abc」、「cde」が繰り返されているが、入力バッファ212のデータから生成された図6(B)の最近一致位置リスト216には同じ数字が連続した個所がなく、文字列「abcdef」の繰返しが検出できないという問題がある。
【課題を解決するための手段】
【0025】
本発明は、最近一致位置リストに同じ数字の連続がなくとも一致文字列の繰返しを検出して符号化できるデータ圧縮方法、プログラム及び装置を提供することを目的とする。
本発明は、最近一致位置リストを過去に出現した一致文字列の候補の絞り込みに用い、候補となった入力バッファ中の文字列を比較することで一致文字列を検出して符号化することを基本とする。
【0026】
(方法)
本発明は、被圧縮データ列から圧縮データを生成するデータ圧縮方法を提供する。このデータ圧縮方法は、
入力部により、入力バッファに被圧縮データ列を入力して保持する入力ステップと、
最近一致位置リスト生成部により、入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを生成して保持するリスト生成ステップと、
候補取得部により、最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得ステップと、
一致検出部により、取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、繰返し候補の位置からの一致した文字列を検出する一致検出ステップと、
符号生成部により、検出した一致文字列を符号化する符号生成ステップと、
を備えたことを特徴とする。
【0027】
ここで候補取得ステップは、符号化位置をアドレスとして最近一致位置リストから取得した格納値を文字列の繰返し位置の第1候補とし、一致検出ステップは、第1候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、一致した文字列を取得して符号化させる。
【0028】
このような本発明のデータ圧縮方法によれば、最近一致位置リストに同じ数字の連続がなくとも、最近一致位置リストで候補を絞り込むことで、一致文字列の繰返しを検出して符号化する処理を高速で実現できる。また入力バッファ中の文字列の比較で一致検出することで、より長い文字列の一致検出ができる。更に、検索テーブルとして使用するのは、入力バッファと最近一致位置リストのみであるため、少ないメモリ量で実装できる。
本発明のデータ圧縮方法における候補取得ステップの第1形態は、更に、第1候補を評価値とする第1ステップと、符号化位置に後続する各位置をアドレスとして最近一致位置リストから取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補とする第2ステップと、を備え、
一致検出ステップは、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を取得して符号化させることを特徴とする。ここで、候補取得ステップは、後続候補を取得した際に、取得した後続候補の値を次に後続する候補を取得するための評価値としても良い。
【0029】
また本発明のデータ圧縮方法における候補取得ステップの第2形態は、更に、第1候補をアドレスとして最近一致位置リストから取得した値を評価値とする第1ステップと、
符号化位置に後続する各位置をアドレスとして最近一致位置リストから取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補とする第2ステップと、を備え、
一致検出ステップは、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とする。
【0030】
この場合にも、候補取得ステップは、後続候補を取得した際に、取得した後続候補の値をアドレスとして最近一致位置リストから取得した値を次に後続する候補を取得するための評価値としても良い。
【0031】
また本発明のデータ圧縮方法における候補取得ステップの第3形態は、更に、第1候補に続く1又は複数の後続候補として、先行する候補をアドレスとして最近一致位置リストから取得した格納値を後続候補とし、一致検出ステップは、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を取得して符号化させることを特徴とする。
【0032】
更に本発明のデータ圧縮方法における候補取得ステップの第4形態は、更に、第1候補を評価値とし、符号化位置に後続する各位置をアドレスとして最近一致位置リストから取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補とし、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、符号化位置の文字列との一致長の最も長い文字列を改定第1候補とする第1ステップと、改定第1候補に続く1又は複数の改定後続候補として、先行する候補をアドレスとして前記最近一致位置リストから取得した格納値を改定後続候補とする第2ステップと、を備え、一致検出ステップは、改定第1候補及び改定後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して号化させることを特徴する。
【0033】
本発明のデータ圧縮方法における符号生成ステップは、符号化位置からの文字列を、検出された一致文字列の相対位置と一致長で符号化することを特徴とする。
【0034】
(プログラム)
本発明は、被圧縮データ列から圧縮データを生成するプログラムを提供する。このプログラムは、コンピュータに、入力バッファに被圧縮データ列を入力して保持する入力ステップと、入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを生成して保持するリスト生成ステップと、最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得ステップと、取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、繰返し候補の位置からの一致した文字列を取得する一致検出ステップと、検出した一致文字列を符号化する符号生成ステップと、を実行させることを特徴とする。なお、このプログラムの詳細はデータ圧縮方法と基本的に同じになる。
【0035】
(装置)
本発明は、被圧縮データ列から圧縮データを生成するデータ圧縮装置を提供する。この装置は、入力バッファに被圧縮データ列を入力して保持する入力バッファと、入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを生成して保持する最近一致位置リスト生成部と、最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得部と、取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、繰返し候補の位置からの一致した文字列を検出する一致検出部と、検出した一致文字列を符号化する符号生成部と、を備えたことを特徴とする。なお、このデータ圧縮装置の詳細はデータ圧縮方法と基本的に同じになる。
【発明の効果】
【0036】
以上説明してきたように本発明によれば、入力バッファ中の各アドレスを起点とする所定長の各文字列が、最も最近出現した相対値を格納した最近一致位置リストで一致文字列の候補を絞り込み、絞り込んだ候補について符号化位置との文字列の一致検出で最も長い文字列を検出して符号化することができ、最近一致位置リストに同じ数字が連続せずに一致位置が不明となる被圧縮データの文字列であっても、最長一致文字列を検出して高速に符号化することができる。
【0037】
また、最長一致文字列の検出による符号化に使用する検索テーブルとして使用するのは入力バッファと最近一致位置リストのみで済むため、少ないメモリ量でデータ圧縮機能を実装することができる。
【発明を実施するための最良の形態】
【0038】
図7は、本発明によるデータ圧縮装置の機能構成のブロック図である。図7において、本発明のデータ圧縮装置は、入力ファイル10、入力部11、入力バッファ12、最近一致位置リスト生成部14、繰返し候補取得部16、一致検出部18、符号生成部20及び出力ファイル22で構成される。
【0039】
入力ファイル10にはデータ圧縮を行う被圧縮データが格納されている。この入力ファイルの被圧縮データは、入力部1Iにより入力バッファ12のバッファサイズ分切り出され、入力バッファ12に入力されて保持される。最近一致位置リスト生成部14は、入力バッファ12に保持された被圧縮データ列における入力バッファ中の各アドレスを起点とする所定長の各文字列、例えば3文字の各文字列が、最も最近に出現した相対位置を格納した最近一致位置リスト24を生成して保持する。
【0040】
繰返し候補取得部16は、最近一致位置リスト24を用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する。すなわち繰返し候補取得部16は、最近一致位置リスト24を過去に出現した一致文字列の候補の絞り込みに使用している。一致検出部18は、繰返し候補取得部16により取得した繰返し候補の位置を起点とする文字列と符号化位置を起点とする文字列を比較し、一致長の最も長い文字列を検出する。
【0041】
更に符号生成部20は、一致検出部18で検出した一致文字列を符号化する。この符号化は、検出した一致文字列の(相対位置,一致長)で符号化を行う。符号生成部20で生成された符号は出力ファイル22に圧縮データとして格納され、必要に応じてファイル転送やファイル格納が行われることになる。このような本発明のデータ圧縮装置において、繰返し候補取得部16による最近一致位置リスト24を用いた繰返し文字列の候補の絞り込み方法として、本発明にあっては、後の第1,第2,第3及び第4実施形態で明らかにする4つの方法がある。
【0042】
図7における本発明のデータ圧縮装置は,例えば図8のようなコンピュータのハードウェア資源により実現される。図8のコンピュータにおいて、CPU100のバス101にはRAM102、ハードディスドコントローラ(ソフト)104、フロッピィディスクドライバ(ソフト)110、CD−ROMドライバ(ソフト)114、マウスコントローラ118、キーボードコントローラ122、ディスプレイコントローラ126、通信用ボード130が接続される。ハードディスクコントローラ104はハードディスクドライブ106を接続し、本発明のデータ圧縮処理を実行するアプリケーションプログラムをローディングしており、コンピュータの起動時にハードディスクドライブ106から必要なプログラムを呼び出して、RAM102上に展開し、CPU100により実行する。
【0043】
フロッピィディスクドライバ110にはフロッピィディスクドライブ(ハード)112が接続され、フロッピィディスク(R)に対する読み書きができる。CD−ROMドライバ114に対しては、CDドライブ(ハード)116が接続され、CDに記憶されたデータやプログラムを読み込むことができる。マウスコントローラ118はマウス120の入力操作をCPU100に伝える。キーボードコントローラ122はキーボード124の入力操作をCPU100に伝える。ディスプレイコントローラ126は表示部128に対して表示を行う。通信用ボード130は通信回線132を使用し、インターネット等のネットワークを介して他のコンピュータやサーバとの間で通信を行う。
【0044】
図9は、本発明によるデータ圧縮方法の第1実施形態の説明図である。この第1実施形態において、図7の繰返し候補取得部16は、次の処理を行う。
(1) 符号化位置をアドレスとして、最近一致位置リスト24から取得した位置を文字列の繰返し位置の第1候補とする。
(2) 第1候補を評価値とする。
(3) 符号化位置に後続する各位置、即ち符号化位置に+1,+2,+3,...+Nとした各位置をアドレスとして、最近一致位置リスト24から取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合、具体的には取得した格納値が評価値より大きい場合に、符号化位置からの距離が小さい順に、第1候補に続く1または複数の後続候補、即ち第2候補、第3候補...とする。
【0045】
このような繰返し候補取得部16により第1候補及び第2候補以降の後続する候補が取得されたならば、図7の一致検出部18は、第1候補及び後続候補のアドレスを起点とする文字列と符号化位置を起点とする文字列を比較し、一致長の最も長い文字列を取得して符号生成部20により符号化させる。この第1実施形態の処理を、図9(A)の入力バッファ12に格納された文字列と、この入力バッファ12の文字列から生成された図9(B)の最近一致位置リスト24を参照して具体的に説明すると次のようになる。
【0046】
図9(A)の入力バッファ12に保持された被圧縮データとしての文字列に対し、入力バッファ12中の各アドレスを起点として所定長例えば3文字の各文字列が最も最近に出現した相対位置を格納した最近一致位置リスト24が生成される。この最近一致位置リスト24の生成は、例えば入力バッファ12のアドレス1からの文字列「abc」については、最も最近に出現した文字列がないことから、最近一致位置リスト24のアドレス1には一致文字列が存在しないことを示す値「0」を保持する。
【0047】
入力バッファ12のアドレス2〜6についても、それぞれ最も最近に出現した文字列がないことから、最近一致位置リスト24のアドレス2〜6に0を保持する。続いて入力バッファ12のアドレス7からの文字列「abc」については、最も最近に出現した文字列としてアドレス1からの文字列「abc」があることから、7−1=6となる相対位置を示す値を最近一致位置リスト24のアドレス7に保持する。以下同様にして、入力バッファ12に基づき、最近一致位置リスト24の各アドレスに最近出現した文字列がない場合は0を、文字列がある場合は相対位置を示す値を格納する。
【0048】
このようにして最近一致位置リスト24が生成できたならば、生成した最近一致位置リスト24を用いて、図7の繰返し候補取得部16が繰返し文字列の候補の絞り込みを行う。いま、図9において、入力バッファ12のアドレス19が符号化位置26であったとして説明すると次のようになる。まず入力バッファ12の符号化位置26のアドレス19により最近一致位置リスト24を参照し、アドレス19の格納値を文字列の繰返し位置の第1候補とする。この第1候補の位置は、アドレス19とその格納値6から19−6=13となり、矢印36のようにアドレス13の位置を示し、これは入力バッファ12におけるアドレス13からの繰返し文字列を第1候補28とすることを意味する。
【0049】
続いて、符号化位置26に対し+1,+2,...+Nをアドレスとして最近一致位置リスト24を参照し、各アドレスの格納値として10,5,18を取得する。このように符号化位置26に後続する各位置のアドレスから取得した格納値について、第1候補位置の格納値で与えられる評価値6と比較し、評価値より大きいものを後続する候補とする。この後続する候補の順位は、符号化位置26からの距離の小さい順に第1候補、第2候補、...とする。
【0050】
この符号化位置26に続く各位置の格納値は、アドレス20の格納値10、アドレス21の格納値5及びアドレス22の格納値18の3つである。このうち評価値6より大きいのは格納値10と格納値18である。そのうち符号化位置26からの距離が小さい方のアドレス20の格納値10を繰返し位置の第2候補とする。この第2候補の位置は矢印38に示すように19−10=9からアドレス9の位置であり、入力バッファ12におけるアドレス9からの文字列が繰返し文字列の第2候補30となる。
【0051】
更に、最近一致位置リスト24のアドレス22の格納値18による繰返し位置が第3候補となり、この第3候補の位置は矢印42に示すように19−18=1となるアドレス1の位置であり、これに対応した入力バッファ12のアドレス1からの文字列が第3候補32となる。このようにして文字列繰返し位置の第1候補、第2候補及び第3候補が取得されたならば、各候補のアドレス13からの第1候補28の文字列、アドレス9からの第2候補30の文字列、及びアドレス1の第3候補32からの文字列のそれぞれにつき、符号化位置26からの文字列との一致比較34を行い、一致長の最も長い文字列を取得して符号化する。
【0052】
この場合、第3候補32からの文字列が最も長く符号化位置26からの文字列に一致し、一致文字列は「abcdef」となり、したがって(相対位置,一致長)=(18,6)で符号化を行う。なお図9の実施形態にあっては、第3候補を求める際の評価値に第1候補を用いたが、第1候補と第2候補のうち、より長く一致したほうを用いてもよい。ただし、図9にあっては、第2候補の一致長は0であることから、必然的に第1候補が第3候補を取得するための評価値に使用されている。
【0053】
図10及び図11は、本発明の第1実施形態のデータ圧縮処理のフローチャートであり、次の処理手順となる。
ステップS1:入力バッファにバッファサイズのデータを入力し、符号化対象位置アドレスtをt=1に初期化し、順位リストと最近一致位置リストを作成する。
ステップS2:最近一致位置リストのアドレスtから相対位置Riを取得する。
ステップS3:取得した相対位置Riの値が文字一致を示す0以外の値か否かチェックし、そうであればステップS4に進み、そうでなければステップS13に進む。
ステップS4:相対位置Riの値を第1候補および評価値に設定する。
ステップS5:符号化位置アドレスtからアドレスt=t+1の相対位置相対位置Rを取得する。
ステップS6:取得した相対位置Rの値が文字一致を示す0以外の値か否かチェックし、そうであればステップS7に進み、そうでなければステップS9に進む。
ステップS7:取得した相対位置Rの値が評価値より大きいかどうかチェックし、大きければステップS8に進み、そうでなければステップS9に進む。
ステップS8:相対位置Rを次の候補に設定してステップS5に戻る。
ステップS9:取得した相対位置の値が文字一致でないことを示す0の場合であり、各候補位置を起点とする文字列と符号化対象位置を起点とする文字列の一致を比較し、一致長sを検出する。
ステップS10:最長一致の候補文字列の相対位置Rと一致長sを符号化した後に、t=t+sに設定する。
ステップS11:符号化位置アドレスtがバッファサイズより大きくなったらステップS12に進み、そうでなければステップS2に戻る。
ステップS12:圧縮するデータの終了をチェックし、終了であれば処理を終わり、そうでなければステップS1に戻る。
ステップS13:ステップS3で文字一致を示す値でなかった場合であり、アドレスtの文字をそのまま符号として出力し、t=t+1としてステップS11に進む。
【0054】
図12は、本発明の第2実施形態によるデータ圧縮処理の説明図である。この第2実施形態にあっては、図7の繰返し候補取得部16は次の処理を行う。
(1) 符号化位置26をアドレスとして最近一致位置リスト24から取得した格納値6を文字列の繰返し位置の第1候補とする。
(2) 第1候補6は、符号化位置26からの相対位置なので、アドレス19−6=13として、最近一致位置リスト24のアドレス13から取得した値6を符号化位置26からの相対位置に換算した値、即ち6+6=12を評価値とする。
(3) 符号化位置26に後続する+1,+2,...+Nの各位置をアドレス19,20,21,22として、最近一致位置リスト24から取得した格納値10,5,18と評価値12を比較し、取得した格納値が評価値より大きい場合、符号化位置26からの距離が小さい順に、第1候補に続く1または複数の後続候補、この例ではアドレス22の格納値18を第2候補とする。
【0055】
このようにして繰返し候補取得部16により第1候補及び第2候補が取得されたならば、図7の一致検出部18が第1候補のアドレス19−6=13となる入力バッファ12のアドレス13からの第1候補28の文字列、第2候補のアドレス19−18=1となる入力バッファ12のアドレス1からの第2候補44の文字列を、符号化位置26からの文字列と一致比較34を行い、最長一致した文字列、この場合にはアドレス1からの第2候補44との一致比較による文字「abcdef」を検出し、符号生成部20が(相対位置,一致長)=(18,6)で符号化を行う。
【0056】
図13及び図14は、本発明の第2実施形態のデータ圧縮処理のフローチャートであり、次の処理手順となる。
ステップS1:入力バッファにバッファサイズのデータを入力し、符号化対象位置アドレスtをt=1に初期化し、順位リストと最近一致位置リストを作成する。
ステップS2:最近一致位置リストのアドレスtから相対位置R1を取得する。
ステップS3:取得した相対位置R1の値が文字一致を示す0以外の値か否かチェックし、そうであればステップS4に進み、そうでなければステップS13に進む。
ステップS4:相対位置R1の値を第1候補とし、第1候補のアドレスの相対位置R2を評価値に設定(符号化位置tからの相対位置はR1+R2)する。
ステップS5:符号化位置アドレスtからアドレスt=t+1の相対位置相対位置Rを取得する。
ステップS6:取得した相対位置Rの値が文字一致を示す0以外の値か否かチェックし、そうであればステップS7に進み、そうでなければステップS9に進む。
ステップS7:取得した相対位置Rの値が評価値より大きいかどうかチェックし、大きければステップS8に進み、そうでなければステップS9に進む。
ステップS8: 相対位置Rを次の候補に設定してステップS5に戻る。
ステップS9:取得した相対位置の値が文字一致でないことを示す0の場合であり、各候補位置を起点とする文字列と符号化対象位置を起点とする文字列の一致を比較し、一致長sを検出する。
ステップS10:最長一致の候補文字列の相対位置Rと一致長sを符号化した後に、t=t+sに設定する。
ステップS11:符号化位置アドレスtがバッファサイズより大きくなったらステップS12に進み、そうでなければ゜ステップS2に戻る。
ステップS12:圧縮するデータの終了をチェックし、終了であれば処理を終わり、そうでなければステップS1に戻る。
ステップS13:ステップS3で文字一致を示す値でなかった場合であり、アドレスtの文字をそのまま符号として出力し、t=t+1としてステップS11に進む。
なお図12の第2実施形態にあっては、第3候補以降の候補を求める際の評価値にも第1候補を用いるが、第1候補と第2候補のうち、より長く一致したほうを用いてもよい。ただし、このケースでは第3候補は存在していない。
【0057】
図15は、本発明の第3実施形態によるデータ圧縮処理の説明図である。この第3実施形態にあっては、図7の繰返し候補取得部16が次の処理を行う。
(1) 入力バッファ12の符号化位置26をアドレス19として、最近一致位置リスト24から取得した格納値6を文字列の繰返し位置の第1候補とする。
(2) 第1候補に続く後続候補として、先行する候補をアドレスとして最近一致位置リスト24から取得した格納値を後続候補とする。即ち、第1候補をアドレス19−6=13として、最近一致位置リスト24のアドレス13から取得した格納値6を第2候補とする。また、第2候補のアドレス13−6=7として、最近一致位置リスト24のアドレス7から取得した格納値6を第3候補とする。更に、第3候補をアドレス7−6=1とした最近一致位置リスト24のアドレス1から取得した格納値を第3候補とする。
【0058】
このようにして繰返し文字列の位置の候補、即ち第1候補、第2候補、第3候補が取得されたならば、図7の一致検出部18が入力バッファ12における第1候補28、第2候補46、第3候補48の各アドレス13,7,1を起点とする文字列と符号化位置26のアドレス19を起点とする文字列と一致比較34を行い、一致長の最も長い候補の文字列を取得して符号生成部20により符号化させる。
【0059】
この例では、第3候補48からの文字列が符号化位置26からの文字列に最も長く一致する文字列「abcdef」であることから、第3候補48の相対位置19−1=18と一致長6を求め、(相対位置,一致長)=(18,6)で符号化を行う。
【0060】
図16及び図17は、本発明の第3実施形態によるデータ圧縮処理のフローチャートであり、次の処理手順となる。
ステップS1:入力バッファにバッファサイズのデータを入力し、符号化対象位置アドレスtをt=1に初期化し、順位リストと最近一致位置リストを作成する。
ステップS2:最近一致位置リストのアドレスtから相対位置Riを取得する。
ステップS3:取得した相対位置Rの値が文字一致を示す0以外の値か否かチェックし、そうであればステップS4に進み、そうでなければステップS12に進む。
ステップS4:相対位置R1の値を第1候補に設定する。
ステップS5:符号化位置アドレス(t−R1)からの相対位置R2を取得する。
ステップS6:取得した相対位置Rの値が文字一致を示す0以外の値か否かチェックし、そうであればステップS7に進み、そうでなければステップS8に進む。
ステップS7:相対位置R2を次の候補R1に設定する(符号化位置からの位置はR1+R2のため、R1=R1+R2)。
ステップS8:取得した相対位置の値が文字一致でないことを示す0の場合であり、各候補位置を起点とする文字列と符号化対象位置を起点とする文字列の一致を比較し、一致長sを検出する。
ステップS9:最長一致の候補文字列の相対位置Rと一致長sを符号化した後に、t=t+sに設定する。
ステップS10:符号化位置アドレスtがバッファサイズより大きくなったらステップS11に進み、そうでなければステップS2に戻る。
ステップS11:圧縮するデータの終了をチェックし、終了であれば処理を終わり、そうでなければステップS1に戻る。
ステップS12: ステップS3で文字一致を示す値でなかった場合であり、アドレスtの文字をそのまま符号として出力し、t=t+1としてステップS10に進む。
【0061】
図18は、本発明の第4実施形態によるデータ圧縮処理の説明図である。この第4実施形態にあっては、図9の第1実施形態によって最長一致の文字列を取得した後、この取得した文字列の候補を改めて第1候補いわゆる改定第1候補として、図15の第3実施形態の処理を適用するようにしたことを特徴とする。即ち、図9の第1実施形態は最近の一致部分を見つけることのできる処理であるが、それ以上、過去に延ばすことができないことから、これに過去の一致部分に候補を延ばすことのできる図15の第3実施形態の処理を組み合わせたものである。
【0062】
図18の第4実施形態について、図7の繰返し候補取得部16による処理は、図9の第1実施形態の処理である第1処理と、図15の第3実施形態の処理である第2処理とに分かれる。
【0063】
(第1処理)
(1) 符号化位置50をアドレス11として、最近一致位置リスト24から取得した格納値4を文字列繰返し位置の第1候補とする。
(2) 第1候補の格納値を評価値4とする。
(3) 符号化位置50に後続する+1,+2,...+Nの各位置をアドレス12〜17として、最近一致位置リスト24から取得した格納値7,7,3,3,3,3を評価値4と比較し、評価値4より大きい場合に符号化位置50からの距離の小さい順に、第1候補に続く後続候補とする。この場合、アドレス12,13の格納値が7となって、評価値4より大きいことから、第2候補となる。ここでアドレス12,13の格納値は共に7であることから、第2候補のアドレスは11−7=4となる。それ以外のアドレス14〜17については、評価値4より小さいことから候補外である。
【0064】
このようにして第1候補及び第2候補が取得されたならば、図7の一致検出部18によりアドレス7の第1候補52及びアドレス4の第2候補54を起点とした文字列と、符号化位置50のアドレス11を起点とした文字列の一致比較60を行い、一致長の最も長い文字列、この場合にはアドレス4からの第2候補54の文字列「abcabc」を、次の第2処理のための改定第1候補56とする。
【0065】
(第2処理)
第2処理は、改定第1候補56のアドレス4−3=1として、最近一致位置リスト24から取得した格納値を改定第2候補58とする。そして図7の符号生成部20により、改定第1候補56のアドレス4及び改定第2候補のアドレス1を起点とする文字列と、符号化位置50のアドレス11を起点とする文字列を比較する一致比較60を行い、最も長く一致する候補の文字列を検出する。
【0066】
この場合には第2改定候補58の文字列が、文字列「abcabcabc」となって最も長く一致し、改定第2候補の相対位置11−1=10で一致長が9であることから、(相対位置,一致長)=(10,9)で符号化を行う。
【0067】
図19及び図20は、本発明の第4実施形態のデータ圧縮処理のフローチャートであり、次の処理手順となる。
【0068】
ステップS1:入力バッファにバッファサイズのデータを入力し、符号化対象位置アドレスtをt=1に初期化し、順位リストと最近一致位置リストを作成する。
ステップS2:最近一致位置リストのアドレスtから相対位置R1を取得する。
ステップS3:取得した相対位置R1の値が文字一致を示す0以外の値か否かチェックし、そうであればステップS4に進み、そうでなければステップS18に進む。
ステップS4:相対位置R1の値を第1候補及び評価値に設定する。
ステップS5:符号化位置アドレスtからアドレスt=t+1の相対位置相対位置Rを取得する。
ステップS6:取得した相対位置R1の値が文字一致を示す0以外の値か否かチェックし、そうであればステップS7に進み、そうでなければステップS9に進む。
ステップS7:取得した相対位置R1の値が評価値より大きいかどうかチェックし、大きければステップS8に進み、そうでなければステップS9に進む。
ステップS8:相対位置R1を次の候補に設定してステップS5に戻る。
ステップS9:取得した相対位置の値が文字一致でないことを示す0の場合であり、各候補位置を起点とする文字列と符号化対象位置を起点とする文字列の一致を比較し、一致長sを検出する。
ステップS10:最長一致の候補を選択し、改定第1候補とする。
ステップS11:改定第1候補の相対位置をR1とすると、最近一致位置リストのアドレス(t−R1)の相対位置R2を取得する。
ステップS12:取得した相対位置Rの値が文字一致を示す0以外の値か否かチェックし、そうであればステップS13に進み、そうでなければステップS14に進む。
ステップS13:相対位置R2を次の改定候補R1に設定してステップS11に戻る。
ステップS14:ステップS12で取得した相対位置の値が文字一致でないことを示す場合であり、各候補位置を起点とする文字列と符号化対象位置を起点とする文字列の一致を比較し、一致長sを検出する。
ステップS15:最長一致の候補文字列の相対位置Rと一致長sを符号化した後に、t=t+sに設定する。
ステップS16:符号化位置アドレスtがバッファサイズより大きくなったらステップS17に進み、そうでなければステップS2に戻る。
ステップS17:圧縮するデータの終了をチェックし、終了であれば処理を終わり、そうでなければステップS1に戻る。
ステップS18:ステップS3で文字一致を示す値でなかった場合であり、アドレスtの文字をそのまま符号として出力し、t=t+1としてステップS16に進む。
なお、本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に本発明は、上記の実施形態に示した数値による限定は受けない。
警告 4 : 明細書の【図面の簡単な説明】の【図n】の数と、図面の【図n】の数が一致していません。 明細書:20 図面:4 [V1AHB06307P-W]
【図面の簡単な説明】
【0069】
【図1】従来のLZ77によるデータ圧縮処理の説明図
【図2】LZ77におけるLUTを用いた処理の説明図
【図3】LZ77におけるリンクドリストを用いた処理の説明図
【図4】LZ77におけるハッシュテーブルを用いた処理の説明図
【図5】本願発明者等が提案している最近一致位置リストを用いた一致文字列検索の説明図
【図6】入力バッファで文字列の繰返しがあっても最近一致位置リストで同じ数字が連続しない例の説明図
【図7】本発明の機能構成のブロック図
【図8】本発明の実施形態が適用されるコンピュータのハードウェア環境の説明図
【図9】本発明の第1実施形態によるデータ圧縮処理の説明図
【図10】図9の第1実施形態によるデータ圧縮処理のフローチャート
【図11】図10に続くデータ圧縮処理のフローチャート
【図12】本発明の第2実施形態によるデータ圧縮処理の説明図
【図13】図12の第2実施形態によるデータ圧縮処理のフローチャート
【図14】図13に続くデータ圧縮処理のフローチャート
【図15】本発明の第3実施形態によるデータ圧縮処理の説明図
【図16】図15の第3実施形態によるデータ圧縮処理のフローチャート
【図17】図16に続くデータ圧縮処理のフローチャート
【図18】本発明の第4実施形態によるデータ圧縮処理の説明図
【図19】図18の第4実施形態によるデータ圧縮処理のフローチャート
【図20】図19に続くデータ圧縮処理のフローチャート
【符号の説明】
【0070】
100:スライドバッファ100
200:バッファ
202:LUT
204:リンクドリスト
208:ハッシュコード
210:ハッシュテーブル
212:入力バッファ
214:順位リスト
216:最近一致位置リスト
10:入力ファイル
11:入力部
12:入力バッファ
14:最近一致位置リスト生成部
16:繰返し候補取得部
18:一致検出部
20:符号生成部
22:出力ファイル
24:最近一致位置リスト
100:CPU
102:RAM
104:ハードディスドコントローラ
110:フロッピィディスクドライバ
114:CD−ROMドライバ
118:マウスコントローラ
120:マウス
122:キーボードコントローラ
124:キーボード
126:ディスプレイコントローラ
128:表示部
130:通信用ボード
132:通信回線
Claims (6)
- 被圧縮データ列から圧縮データを生成するデータ圧縮方法に於いて、
入力部により、入力バッファのサイズ部データを切り出し、前記入力バッファに被圧縮データ列を入力して保持する入力ステップと、
最近一致位置リスト生成部により、前記入力バッファ中の各アドレスを起点として該アドレス起点から隣接する任意数の文字数からなる所定長の各文字列が前記入力バッファにおいて最も最近出現した位置を前記起点と最も最近出現した文字列先頭位置との相対アドレスとして格納した最近一致位置リストを生成して保持するリスト生成ステップと、
繰返し候補取得部により、前記最近一致位置リストを用いて現に符号化が行われている位置である符号化位置を起点とする文字列が該符号化の行われている位置よりも最近一致リストにおいて過去に出現した位置の繰返し候補を取得する候補取得ステップと、
一致検出部により、取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、前記繰返し候補の位置からの一致した文字列を検出する一致検出ステツプと、
符号生成部により、検出した一致文字列を符号化位置と前記検出した一致文字列の先頭位置との相対アドレス及び一致長として符号化する符号生成ステップと、
前記候補取得ステップは、符号化位置をアドレスとして前記最近一致位置リストから取得した格納値を文字列の繰返し位置の第1候補とし、前記第1候補を評価値とする第1ステップと、前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補を取得する第2ステップとを備え、
前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするデータ圧縮方法。 - 請求項1記載のデータ圧縮方法に於いて、
前記候補取得ステップは、更に、
前記第1候補をアドレスとして前記最近一致位置リストから取得した値を評価値とする第1ステップと、
前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補を取得する第2ステップと、
を備え、
前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするデータ圧縮方法。 - 請求項1記載のデータ圧縮方法に於いて、
前記候補取得ステップは、更に、
前記第1候補を評価値とし、前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補とし、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、符号化位置の文字列との一致長の最も長い文字列を改定第1候補として取得する第1ステップと、
前記改定第1候補に続く1又は複数の後続候補として、先行する候補をアドレスとして前記最近一致位置リストから取得した格納値を改定後続候補とする第2ステップと、
を備え、
前記一致検出ステップは、前記改定第1候補及び改定後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするデータ圧縮方法。 - コンピュータに、
入力バッファに入力バッファのサイズ分データを切り出し、前記入力バッファに被圧縮データ列を入力して保持する入力ステップと、
前記入力バッファ中の各アドレスを起点として該アドレス起点から隣接する任意数の文字数からなる所定長の各文字列が前記バッファにおいて最も最近出現した位置を前記起点と最も最近出現した文字列先頭位置との間の相対アドレスとして格納した最近一致位置リストを生成して保持するリスト生成ステップと、
前記最近一致位置リストを用いて現に符号化の行われている位置である符号化位置を起点とする文字列が該符号化の行われている位置よりも最近一致リストにおいて過去に出現した位置の繰返し候補を取得する候補取得ステップと、
取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、前記繰返し候補の位置からの一致した文字列を検出する一致検出ステップと、
検出した一致文字列を符号化位置と前記検出した一致文字列の先頭位置との相対アドレスおよび一致長として符号化する符号生成ステップと、
前記候補取得ステップは、符号化位置をアドレスとして前記最近一致位置リストから取得した格納値を文字列の繰返し位置の第1候補とし、前記第1候補を評価値とする第1ステップと、
前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補として取得する第2ステップと、を備え、
前記一致検出ステップは、前記第1候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするプログラム。 - 請求項4記載のプログラムに於いて、
前記候補取得ステップは、更に、
前記第1候補をアドレスとして前記最近一致位置リストから取得した値を評価値とする第1ステップと、
前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補を取得する第2ステツプと、
を備え、
前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするプログラム。 - 被圧縮データ列から圧縮データを生成するデータ圧縮装置に於いて、
入力バッファに入力バッファのサイズ分データを切り出して、前記入力バッファに被圧縮データ列を入力して保持する入力バッファと、
前記入力バッファ中の各アドレスを起点として該アドレス起点から隣接する任意数の文字列からなる所定長の各文字列が前記バッファにおいて最も最近出現した位置を前記起点と最も最近出現した文字列先頭位置との間の相対アドレスとして格納した最近一致位置リストを生成して保持する最近一致位置リスト生成部と、
前記最近一致位置リストを用いて現に符号化の行われている位置である符号化位置を起点とするの文字列が該符号化の行われている位置よりも最近一致リストにおいて過去に出現した位置の繰返し候補を取得する候補取得部と、
取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、前記候補位置からの一致した文字列を検出する一致検出部と、
検出した一致文字列を符号化位置と前記検出した一致文字列の先頭位置との相対アドレ スおよび一致長として符号化する符号生成部と、
前記候補取得部は、符号化位置をアドレスとして前記最近一致位置リストから取得した格納値を文字列の繰返し位置の第1候補とし、前記第1候補を評価値とする第1手段と、
前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補として取得する第2手段と、を備え、
前記一致検出部は、前記第1候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするデータ圧縮装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/013600 WO2004062110A1 (ja) | 2002-12-26 | 2002-12-26 | データ圧縮方法、プログラム及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2004062110A1 JPWO2004062110A1 (ja) | 2006-05-18 |
JP3889762B2 true JP3889762B2 (ja) | 2007-03-07 |
Family
ID=32697298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004564417A Expired - Lifetime JP3889762B2 (ja) | 2002-12-26 | 2002-12-26 | データ圧縮方法、プログラム及び装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7536399B2 (ja) |
EP (1) | EP1578020B1 (ja) |
JP (1) | JP3889762B2 (ja) |
WO (1) | WO2004062110A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461008B2 (en) | 2020-03-18 | 2022-10-04 | Kioxia Corporation | Memory system for improving compression performance of a dictionary coder circuit |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7653643B2 (en) * | 2005-03-24 | 2010-01-26 | Microsoft Corporation | Method and apparatus for compressing a data set |
JP2006295853A (ja) * | 2005-04-14 | 2006-10-26 | Sony Corp | 符号化装置、復号装置、および、符号化方法ならびに復号方法 |
US8489562B1 (en) | 2007-11-30 | 2013-07-16 | Silver Peak Systems, Inc. | Deferred data storage |
US8811431B2 (en) | 2008-11-20 | 2014-08-19 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data |
US8929402B1 (en) * | 2005-09-29 | 2015-01-06 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data by predicting subsequent data |
US8755381B2 (en) | 2006-08-02 | 2014-06-17 | Silver Peak Systems, Inc. | Data matching using flow based packet data storage |
US8885632B2 (en) | 2006-08-02 | 2014-11-11 | Silver Peak Systems, Inc. | Communications scheduler |
US8046532B2 (en) * | 2007-08-27 | 2011-10-25 | Comtech Ef Data Corp. | Content-addressable memories and state machines for performing three-byte matches and secondary matches, and for providing error protection |
US8307115B1 (en) | 2007-11-30 | 2012-11-06 | Silver Peak Systems, Inc. | Network memory mirroring |
US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
US8743683B1 (en) | 2008-07-03 | 2014-06-03 | Silver Peak Systems, Inc. | Quality of service using multiple flows |
US10805840B2 (en) | 2008-07-03 | 2020-10-13 | Silver Peak Systems, Inc. | Data transmission via a virtual wide area network overlay |
WO2010044100A1 (en) * | 2008-10-15 | 2010-04-22 | Veeresh Rudrappa Koratagere | Lossless compression |
KR101049699B1 (ko) * | 2009-07-17 | 2011-07-15 | (주)이스트소프트 | 데이터의 압축방법 |
US9130991B2 (en) | 2011-10-14 | 2015-09-08 | Silver Peak Systems, Inc. | Processing data packets in performance enhancing proxy (PEP) environment |
US9626224B2 (en) | 2011-11-03 | 2017-04-18 | Silver Peak Systems, Inc. | Optimizing available computing resources within a virtual environment |
JP5807592B2 (ja) * | 2012-03-19 | 2015-11-10 | 富士通株式会社 | 符号化方法、符号化装置及びコンピュータプログラム |
JP5928201B2 (ja) * | 2012-07-06 | 2016-06-01 | 富士通株式会社 | 復元プログラム、圧縮プログラム、復元装置、圧縮装置、復元方法、および圧縮方法 |
JP5808359B2 (ja) * | 2013-04-08 | 2015-11-10 | 日本電信電話株式会社 | 文字列圧縮及び復元システム並びに方法 |
CN110691252A (zh) * | 2013-10-12 | 2020-01-14 | 洪学文 | 结合块匹配和串匹配的图像压缩装置 |
JP6319740B2 (ja) * | 2014-03-25 | 2018-05-09 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
US9264068B2 (en) * | 2014-05-09 | 2016-02-16 | Micron Technology, Inc. | Deflate compression algorithm |
US9948496B1 (en) | 2014-07-30 | 2018-04-17 | Silver Peak Systems, Inc. | Determining a transit appliance for data traffic to a software service |
US9875344B1 (en) | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
CN106294528B (zh) * | 2015-06-29 | 2020-03-03 | 深圳市腾讯计算机系统有限公司 | 一种实现信息发送的方法及装置 |
US9537504B1 (en) * | 2015-09-25 | 2017-01-03 | Intel Corporation | Heterogeneous compression architecture for optimized compression ratio |
US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
US9967056B1 (en) | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
US11212210B2 (en) | 2017-09-21 | 2021-12-28 | Silver Peak Systems, Inc. | Selective route exporting using source type |
US10224957B1 (en) * | 2017-11-27 | 2019-03-05 | Intel Corporation | Hash-based data matching enhanced with backward matching for data compression |
US10637721B2 (en) | 2018-03-12 | 2020-04-28 | Silver Peak Systems, Inc. | Detecting path break conditions while minimizing network overhead |
CN113705175B (zh) * | 2021-08-18 | 2024-02-23 | 厦门海迈科技股份有限公司 | 一种电子表格行列精简的方法、服务器及存储介质 |
CN117216023B (zh) * | 2023-11-07 | 2024-01-26 | 陕西长瑞安驰信息技术集团有限公司 | 一种大规模网络数据存储方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5126739A (en) * | 1989-01-13 | 1992-06-30 | Stac Electronics | Data compression apparatus and method |
US5532693A (en) * | 1994-06-13 | 1996-07-02 | Advanced Hardware Architectures | Adaptive data compression system with systolic string matching logic |
US5883588A (en) * | 1994-10-04 | 1999-03-16 | Nec Corporation | Data compression system and data compression device for improving data compression rate and coding speed |
JP2910639B2 (ja) * | 1994-10-04 | 1999-06-23 | 日本電気株式会社 | データ圧縮装置 |
JP3273119B2 (ja) * | 1995-09-29 | 2002-04-08 | 京セラ株式会社 | データ圧縮・伸長装置 |
JP3540109B2 (ja) * | 1996-12-24 | 2004-07-07 | 富士通株式会社 | データ圧縮方法及び装置 |
JP4242970B2 (ja) * | 1998-07-09 | 2009-03-25 | 富士通株式会社 | データ圧縮方法及びデータ圧縮装置 |
-
2002
- 2002-12-26 JP JP2004564417A patent/JP3889762B2/ja not_active Expired - Lifetime
- 2002-12-26 EP EP02792004.0A patent/EP1578020B1/en not_active Expired - Lifetime
- 2002-12-26 WO PCT/JP2002/013600 patent/WO2004062110A1/ja active Application Filing
-
2005
- 2005-06-27 US US11/166,146 patent/US7536399B2/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461008B2 (en) | 2020-03-18 | 2022-10-04 | Kioxia Corporation | Memory system for improving compression performance of a dictionary coder circuit |
Also Published As
Publication number | Publication date |
---|---|
EP1578020B1 (en) | 2014-08-27 |
WO2004062110A1 (ja) | 2004-07-22 |
JPWO2004062110A1 (ja) | 2006-05-18 |
EP1578020A1 (en) | 2005-09-21 |
US20050283355A1 (en) | 2005-12-22 |
US7536399B2 (en) | 2009-05-19 |
EP1578020A4 (en) | 2005-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3889762B2 (ja) | データ圧縮方法、プログラム及び装置 | |
US8200646B2 (en) | Efficient retrieval of variable-length character string data | |
US8838551B2 (en) | Multi-level database compression | |
KR101157693B1 (ko) | 토큰스페이스 저장소와 함께 사용하기 위한 멀티-스테이지질의 처리 시스템 및 방법 | |
US9619565B1 (en) | Generating content snippets using a tokenspace repository | |
US5936560A (en) | Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed | |
US10224957B1 (en) | Hash-based data matching enhanced with backward matching for data compression | |
EP3292481B1 (en) | Method, system and computer program product for performing numeric searches | |
US20130013574A1 (en) | Block Entropy Encoding for Word Compression | |
JPH0682370B2 (ja) | 文字処理装置 | |
JP2001345710A (ja) | データ圧縮装置および方法 | |
JP4077409B2 (ja) | 高速最長一致探索方法及び装置 | |
JP2016134037A (ja) | 意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法 | |
US20120254190A1 (en) | Extracting method, computer product, extracting system, information generating method, and information contents | |
JP4208326B2 (ja) | 情報索引装置 | |
CN112527949B (zh) | 数据存储与检索方法、装置、计算机设备及存储介质 | |
JP3053656B2 (ja) | データ圧縮における辞書登録方式 | |
JP2535655B2 (ja) | 辞書検索方式 | |
JP2772125B2 (ja) | 辞書検索方式 | |
JP3236747B2 (ja) | データ伸長方式 | |
KR19990084950A (ko) | 역화일을 이용한 데이터 부분검색 장치 및 그 방법 | |
JP3058711B2 (ja) | データ圧縮及び復元方法 | |
JPH06251070A (ja) | 単語検索のための電子辞書圧縮方法及び装置 | |
JPH11149476A (ja) | 類似データ抽出システム及びその方法 | |
JP2001195413A (ja) | 文字列検索装置および文字列検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060808 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061005 |
|
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: 20061107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061130 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3889762 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091208 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101208 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111208 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111208 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121208 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121208 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131208 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term |