JPWO2004062110A1 - データ圧縮方法、プログラム及び装置 - Google Patents

データ圧縮方法、プログラム及び装置 Download PDF

Info

Publication number
JPWO2004062110A1
JPWO2004062110A1 JP2004564417A JP2004564417A JPWO2004062110A1 JP WO2004062110 A1 JPWO2004062110 A1 JP WO2004062110A1 JP 2004564417 A JP2004564417 A JP 2004564417A JP 2004564417 A JP2004564417 A JP 2004564417A JP WO2004062110 A1 JPWO2004062110 A1 JP WO2004062110A1
Authority
JP
Japan
Prior art keywords
candidate
character string
encoding
match
subsequent
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
JP2004564417A
Other languages
English (en)
Other versions
JP3889762B2 (ja
Inventor
井谷 宣子
宣子 井谷
隆洋 野見山
隆洋 野見山
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
Publication of JPWO2004062110A1 publication Critical patent/JPWO2004062110A1/ja
Application granted granted Critical
Publication of JP3889762B2 publication Critical patent/JP3889762B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

最近一致位置リストを過去に出現した一致文字列の候補の絞り込みに用い、候補となった入力バッファ中の文字列を比較することで一致文字列を検出して符号化する。入力部は、入力バッファに被圧縮データ列を入力して保持する。最近一致位置リスト生成部は、入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを生成して保持する。繰返し候補取得部は、最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する。一致検出部は、取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、候補位置からの最長一致した文字列を検出する。符号生成部は、検出した一致文字列の一致長と相対位置により符号化する。

Description

本発明は、被圧縮データ列から圧縮データを生成するデータ圧縮方法、プログラム及び装置に関し、特に、被圧縮データ列から生成される辞書を用いて、そのデータ列を圧縮するデータ圧縮方法、プログラム及び装置に関する。
近年、文字コード、画像データ等の様々な種類のデータがコンピュータで扱われるようになるのに伴い、取り扱われるデータ量も増大している。そのような大量のデータを扱う場合、データ中の冗長な部分を省いて圧縮することにより、必要な記憶容量を減らしたり、遠隔地へ高速に伝送したりすることができる。
ここで本発明は、文字コードの圧縮に限らず、様々なデータの圧縮に適用できるが、以下の説明では情報理論に基づき、データ列をワード単位に分割し、1ワードのデータを文字と呼び、任意のワード数のデータ列を文字列と呼ぶことにする。
従来のデータ圧縮技術には、データ系列の類似性を利用した辞書型符号化と、データ列の出現頻度を利用した確率統計型符号化とがある。このうち、前者の辞書型符号化の代表的な方法として、LZ77符号化とLZ78符号化が知られている(植松友彦箸、「文書データ圧縮アルゴリズム入門」、CQ出版、pp.131−208,1995年)。
LZ77符号化とLZ78符号化では、LZ77符号化の方が、簡単な処理で充分な圧縮率が得られることから、実際の使用では主流となっている。LZ77符号化では、図1に示すように、一定サイズのスライドバッファ100を設け、このバッファ100内で入力文字列と最長一致する文字列を検索し、その位置と長さを用いて入力文字列を符号化する。符号化が進むにつれてバッファ100をスライドさせていくことから、この符号化方法は、スライド辞書法とも呼ばれる。図1では、バッファ200の右隣の入力文字列“abcdaaaq...”が符号化されるとき、バッファ200内で一致する文字列のうち最長のものは“abcd”である。そこで、この最長一致文字列の先頭位置と入力文字列の先頭位置の相対アドレス“5(バイト)”を一致位置とし、最長一致文字列の長さ“4(バイド)”を一致長として、(一致位置,一致長)=(5,4)のような符号を生成する。これにより、入力文字列の先頭の“abcd”が(5,4)に置き換えられる。同様にして、次の文字列“aaa”は、符号(13,3)に置き換えられる。しかし、実際に用いられるスライドバッファはもっと長く、最長一致する文字列を発見するためにバッファ内の文字列を順に検索していくと、膨大な時間を要する。このため、実際には、バッファ内のすべての文字列と照合するのではなく、文字列の接頭部(2〜4文字程度)の出現位置を随時テーブルに登録し、テーブルに保持されている位置の文字列のみと照合している。このような検索に使用されるテーブルとしては、ルックアップテーブル(Look Up Table,LUT)とハッシュテーブル(Hash Table)とがある。
図2は、LUTを用いた文字列検索を示している。LUT202は、バッファ200内の文字列の接頭部をアドレスとして、その文字列のバッファ200内における出現位置(アドレスまたはポインタ)を格納している。そして、検索時には、入力文字列の接頭部をアドレスとして、LUT202の領域にアクセスし、対応する文字列の位置を取得する。同じ接頭部の文字列がバッファ100内に複数存在する場合は、図3のように、リンクドリスト204の形式で複数の出現位置が保持される。したがって、LUT202に1回アクセスするだけで、バッファ200内のすべての対応する文字列の位置を取得することができる。ここでは、2文字分の接頭部が用いられており、入力文字列の接頭部“ab”に対応するLUT202の領域は、リンクドリスト104を利用して2つの出現位置を保持している。
このように、LUTは、検索する接頭部をテーブルの領域に1対1に対応させ、1回のテーブル引きのみで必要な情報を取得できるため、非常に高速な検索を行うことができる。しかし、長い文字列を検索する場合、テーブルに必要な領域の数は出現可能な文字の数の巾乗で増えるため、必要な領域が膨大になる。例えば、出現可能な文字の数を8ビット、256個とすると、n文字の接頭部に対して256のn乗個の領域が必要となる。ところが、検索する接頭部を長くすると、用意された領域のうち実際に使用される(登録される)部分は一部分のみに止まり、テーブル内はまばらな状態になる。したがって、検索する接頭部を長くすると、メモリの使用効率が悪化する。そこで、ハッシュテーブルでは、検索文字列をアドレスとして用いる際に、一定の数値以下に縮退させて、複数の文字列が1つの領域を共有するようにしている。このため、テーブル引きの後で、得られた文字列が実際に検索している文字列かどうかをチェックする必要があるが、LUTに比べて、同等のテーブル領域でより長い文字列を検索することができる。
図4は、ハッシュテーブルを用いた文字列検索を示している。ハッシュコード生成部206は、入力文字列の接頭部“abc”からハッシュコード208を生成し、それをアドレスとしてハッシュテーブル210にアクセスする。ハッシュブーブル210には、ハッシュコード208に対応するバッファ200内の位置が格納されており、その位置にある文字列“abcde”と入力文字列を照合することで、両者の接頭部が一致するかどうかがチェックされる。そして、それらが一致すれば、入力文字列と一致する文字列がバッファ200内に存在すると判断される。ハッシュテーブルの場合も、LUTの場合と同様に、バッファ内の同じ接頭部を持つ複数の文字列に対しては、リンクドリストの形式で複数の出現位置が保持される。いずれの場合も、リンクドリストは、最長一致文字列を検索するために用いられる。
しかしながら、このような従来のデータ圧縮技術には、次のような問題がある。まずLUTを用いて長い文字列を検索する場合、膨大な領域を持つテーブルを用意しても、その一部分のみしか使用されないので、テーブル内はまばらな状態になる。ハッシュテーブルでは、LUTと比べるとテーブルサイズが小さくなるが、入力データが少なければ、同じようにテーブル内がまばらな状態になる。したがって、メモリが必ずしも有効に利用されないという問題がある。また、最長一致文字列を検索する際、リンクドリストに保持された複数の出現位置を一つ一つ辿らなければならず、同じ接頭部を持つ文字列が多くなると、検索処理に時間がかかるという問題もある。
この問題を解決するため本願発明者等にあっては、入力データ量に比例した少ないメモリ量で検索できるデータ圧縮方法を提案している(日本国特許出願:特願2000−98834)。この方法は、従来のように符号化を進めながら順次、検索テーブルに登録して行くのではなく、入力バッファを設け、入力バッファ用の検索テーブルを一度で作り上げる方法である。検索には、入力バッファ中の各アドレスを起点とした文字列を、文字列の内容に従って並びかえた順位リストを利用する。中でも、順位リストから最近一致位置リストを生成し、最近一致位置リストから同じ数字が続く箇所を検出して一致を見つける方法が最も少ないメモリ量で実装することが出来る。
図5は、本願発明者が提案している方法で使用される入力バッファ、順位リスト及び最近一致位置リストの具体例である。この方法は次の手順で処理される。
(データ入力とリスト生成)
図5(A)入力バッファ212にバッファサイズのデータを入力し、符号化対象位置アドレスtをt=1に初期化し、図5(B)の順位リスト214と図5(C)の最近一致位置リスト216を作成する。ここで、順位リスト214は、入力バッファ212の各アドレスを始点とする3文字列を数値順にソートして作成する。また最近一致位置リスト216は、最も最近に出現したアドレスの相対位置を格納する。例えばアドレス15からの文字列「com」が最も最近に出現したのはアドレス1、相対位置14であることから、最近一致位置リスト216のアドレス15に相対位置14を格納する。なお、特願2000−98834号ではアドレスそのものを最近一致位置リストに格納しており、この場合、最近一致位置リスト216のアドレス15にはアドレス1を格納する。
(一致文字列の検出と符号化)
最近一致位置リスト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)が符号として生成される。またアドレス24〜29,30〜32に連続する数字9,23は、アドレス24−23=1からの文字列と一致し、一致長は9+2=11で一致位置が23となり、(一致長,位置)=(11,23)が符号として生成される。
しかしながら、図5に示したデータ圧縮方法は、最近一致位置リストから同じ数字が連続する箇所を検出することによって一致文字列を検出しているが、図6(A)の入力バッファ112のように、長い文字列の繰返しの間に、長い文字列を形成している短い文字列の繰返しが出現するようなデータでは、最長一致を検出することができない。即ち、図6(A)の入力バッファ212にあっては、アドレス1,16からの長い文字列「abcdef」の間に、アドレス7,10,13からの短い文字列「abc」、「cde」が繰り返されているが、入力バッファ212のデータから生成された図6(B)の最近一致位置リスト216には同じ数字が連続した個所がなく、文字列「abcdef」の繰返しが検出できないという問題がある。
本発明は、最近一致位置リストに同じ数字の連続がなくとも一致文字列の繰返しを検出して符号化できるデータ圧縮方法、プログラム及び装置を提供することを目的とする。
本発明は、最近一致位置リストを過去に出現した一致文字列の候補の絞り込みに用い、候補となった入力バッファ中の文字列を比較することで一致文字列を検出して符号化することを基本とする。
(方法)
本発明は、被圧縮データ列から圧縮データを生成するデータ圧縮方法を提供する。このデータ圧縮方法は、
入力部により、入力バッファに被圧縮データ列を入力して保持する入力ステップと、
最近一致位置リスト生成部により、入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを生成して保持するリスト生成ステップと、
候補取得部により、最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得ステップと、
一致検出部により、取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、繰返し候補の位置からの一致した文字列を検出する一致検出ステップと、
符号生成部により、検出した一致文字列を符号化する符号生成ステップと、
を備えたことを特徴とする。
ここで候補取得ステップは、符号化位置をアドレスとして最近一致位置リストから取得した格納値を文字列の繰返し位置の第1候補とし、一致検出ステップは、第1候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、一致した文字列を取得して符号化させる。
このような本発明のデータ圧縮方法によれば、最近一致位置リストに同じ数字の連続がなくとも、最近一致位置リストで候補を絞り込むことで、一致文字列の繰返しを検出して符号化する処理を高速で実現できる。また入力バッファ中の文字列の比較で一致検出することで、より長い文字列の一致検出ができる。更に、検索テーブルとして使用するのは、入力バッファと最近一致位置リストのみであるため、少ないメモリ量で実装できる。
本発明のデータ圧縮方法における候補取得ステップの第1形態は、更に、
第1候補を評価値とする第1ステップと、
符号化位置に後続する各位置をアドレスとして最近一致位置リストから取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補とする第2ステップと、
を備え、
一致検出ステップは、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を取得して符号化させることを特徴とする。
ここで、候補取得ステップは、後続候補を取得した際に、取得した後続候補の値を次に後続する候補を取得するための評価値としても良い。
また本発明のデータ圧縮方法における候補取得ステップの第2形態は、更に、
第1候補をアドレスとして最近一致位置リストから取得した値を評価値とする第1ステップと、
符号化位置に後続する各位置をアドレスとして最近一致位置リストから取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補とする第2ステップと、
を備え、
一致検出ステップは、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とする。
この場合にも、候補取得ステップは、後続候補を取得した際に、取得した後続候補の値をアドレスとして最近一致位置リストから取得した値を次に後続する候補を取得するための評価値としても良い。
また本発明のデータ圧縮方法における候補取得ステップの第3形態は、更に、第1候補に続く1又は複数の後続候補として、先行する候補をアドレスとして最近一致位置リストから取得した格納値を後続候補とし、一致検出ステップは、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を取得して符号化させることを特徴とする。
更に本発明のデータ圧縮方法における候補取得ステップの第4形態は、更に、
第1候補を評価値とし、符号化位置に後続する各位置をアドレスとして最近一致位置リストから取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補とし、第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、符号化位置の文字列との一致長の最も長い文字列を改定第1候補とする第1ステップと、
改定第1候補に続く1又は複数の改定後続候補として、先行する候補をアドレスとして前記最近一致位置リストから取得した格納値を改定後続候補とする第2ステップと、
を備え、
一致検出ステップは、改定第1候補及び改定後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して号化させることを特徴する。
本発明のデータ圧縮方法における符号生成ステップは、符号化位置からの文字列を、検出された一致文字列の相対位置と一致長で符号化することを特徴とする。
(プログラム)
本発明は、被圧縮データ列から圧縮データを生成するプログラムを提供する。このプログラムは、コンピュータに、
入力バッファに被圧縮データ列を入力して保持する入力ステップと、
入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを生成して保持するリスト生成ステップと、
最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得ステップと、
取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、繰返し候補の位置からの一致した文字列を取得する一致検出ステップと、
検出した一致文字列を符号化する符号生成ステップと、
を実行させることを特徴とする。なお、このプログラムの詳細はデータ圧縮方法と基本的に同じになる。
(装置)
本発明は、被圧縮データ列から圧縮データを生成するデータ圧縮装置を提供する。この装置は、
入力バッファに被圧縮データ列を入力して保持する入力バッファと、
入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した相対位置を格納した最近一致位置リストを生成して保持する最近一致位置リスト生成部と、
最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得部と、
取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、繰返し候補の位置からの一致した文字列を検出する一致検出部と、
検出した一致文字列を符号化する符号生成部と、
を備えたことを特徴とする。なお、このデータ圧縮装置の詳細はデータ圧縮方法と基本的に同じになる。
図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に続くデータ圧縮処理のフローチャート;
図7は、本発明によるデータ圧縮装置の機能構成のブロック図である。図7において、本発明のデータ圧縮装置は、入力ファイル10、入力部11、入力バッファ12、最近一致位置リスト生成部14、繰返し候補取得部16、一致検出部18、符号生成部20及び出力ファイル22で構成される。入力ファイル10にはデータ圧縮を行う被圧縮データが格納されている。この入力ファイルの被圧縮データは、入力部1Iにより入力バッファ12のバッファサイズ分切り出され、入力バッファ12に入力されて保持される。最近一致位置リスト生成部14は、入力バッファ12に保持された被圧縮データ列における入力バッファ中の各アドレスを起点とする所定長の各文字列、例えば3文字の各文字列が、最も最近に出現した相対位置を格納した最近一致位置リスト24を生成して保持する。一致検出部18は、最近一致位置リスト24を用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する。即ち一致検出部18は、最近一致位置リスト24を過去に出現した一致文字列の候補の絞り込みに使用している。符号生成部20は、一致検出部18により取得した繰返し候補の位置を起点とする文字列と符号化位置を起点とする文字列を比較し、一致長の最も長い文字列を検出する。更に符号生成部20は、一致検出部18で検出した一致文字列を符号化する。この符号化は、検出した一致文字列の(相対位置,一致長)で符号化を行う。符号生成部20で生成された符号は出力ファイル22に圧縮データとして格納され、必要に応じてファイル転送やファイル格納が行われることになる。このような本発明のデータ圧縮装置において、繰返し候補取得部16による最近一致位置リスト24を用いた繰返し文字列の候補の絞り込み方法として、本発明にあっては、後の第1,第2,第3及び第4実施形態で明らかにする4つの方法がある。
図7における本発明のデータ圧縮装置は,例えば図8のようなコンピュータのハードウェア資源により実現される。図8のコンピュータにおいて、CPU100のバス101にはRAM102、ハードディスドコントローラ(ソフト)104、フロッピィディスクドライバ(ソフト)110、CD−ROMドライバ(ソフト)114、マウスコントローラ118、キーボードコントローラ122、ディスプレイコントローラ126、通信用ボード130が接続される。ハードディスクコントローラ104はハードディスクドライブ106を接続し、本発明のデータ圧縮処理を実行するアプリケーションプログラムをローディングしており、コンピュータの起動時にハードディスクドライブ106から必要なプログラムを呼び出して、RAM102上に展開し、CPU100により実行する。フロッピィディスクドライバ110にはフロッピィディスクドライブ(ハード)112が接続され、フロッピィディスク(R)に対する読み書きができる。CD−ROMドライバ114に対しては、CDドライブ(ハード)116が接続され、CDに記憶されたデータやプログラムを読み込むことができる。マウスコントローラ118はマウス120の入力操作をCPU100に伝える。キーボードコントローラ122はキーボード124の入力操作をCPU100に伝える。ディスプレイコントローラ126は表示部128に対して表示を行う。通信用ボード130は通信回線132を使用し、インターネット等のネットワークを介して他のコンピュータやサーバとの間で通信を行う。
図9は、本発明によるデータ圧縮方法の第1実施形態の説明図である。この第1実施形態において、図7の繰返し候補取得部16は、次の処理を行う。
(1) 符号化位置をアドレスとして、最近一致位置リスト24から取得した位置を文字列の繰返し位置の第1候補とする。
(2) 第1候補を評価値とする。
(3) 符号化位置に後続する各位置、即ち符号化位置に+1,+2,+3,…+Nとした各位置をアドレスとして、最近一致位置リスト24から取得した格納値と評価値を比較し、取得した格納値が評価値より過去の値である場合、具体的には取得した格納値が評価値より大きい場合に、符号化位置からの距離が小さい順に、第1候補に続く1または複数の後続候補、即ち第2候補、第3候補…とする。
このような繰返し候補取得部16により第1候補及び第2候補以降の後続する候補が取得されたならば、図7の一致検出部18は、第1候補及び後続候補のアドレスを起点とする文字列と符号化位置を起点とする文字列を比較し、一致長の最も長い文字列を取得して符号生成部20により符号化させる。この第1実施形態の処理を、図9(A)の入力バッファ12に格納された文字列と、この入力バッファ12の文字列から生成された図9(B)の最近一致位置リスト24を参照して具体的に説明すると次のようになる。
図9(A)の入力バッファ12に保持された被圧縮データとしての文字列に対し、入力バッファ12中の各アドレスを起点として所定長例えば3文字の各文字列が最も最近に出現した相対位置を格納した最近一致位置リスト24が生成される。この最近一致位置リスト24の生成は、例えば入力バッファ12のアドレス1からの文字列「abc」については、最も最近に出現した文字列がないことから、最近一致位置リスト24のアドレス1には一致文字列が存在しないことを示す値「0」を保持する。入力バッファ12のアドレス2〜6についても、それぞれ最も最近に出現した文字列がないことから、最近一致位置リスト24のアドレス2〜6に0を保持する。続いて入力バッファ12のアドレス7からの文字列「abc」については、最も最近に出現した文字列としてアドレス1からの文字列「abc」があることから、7−1=6となる相対位置を示す値を最近一致位置リスト24のアドレス7に保持する。以下同様にして、入力バッファ12に基づき、最近一致位置リスト24の各アドレスに最近出現した文字列がない場合は0を、文字列がある場合は相対位置を示す値を格納する。このようにして最近一致位置リスト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とすることを意味する。続いて、符号化位置26に対し+1,+2,…+Nをアドレスとして最近一致位置リスト24を参照し、各アドレスの格納値として10,5,18を取得する。このように符号化位置26に後続する各位置のアドレスから取得した格納値について、第1候補位置の格納値で与えられる評価値6と比較し、評価値より大きいものを後続する候補とする。この後続する候補の順位は、符号化位置26からの距離の小さい順に第1候補、第2候補、…とする。この符号化位置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となる。更に、最近一致位置リスト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を行い、一致長の最も長い文字列を取得して符号化する。この場合、第3候補32からの文字列が最も長く符号化位置26からの文字列に一致し、一致文字列は「abcdef」となり、したがって(相対位置,一致長)=(18,6)で符号化を行う。なお図9の実施形態にあっては、第3候補を求める際の評価値に第1候補を用いたが、第1候補と第2候補のうち、より長く一致したほうを用いてもよい。ただし、図9にあっては、第2候補の一致長は0であることから、必然的に第1候補が第3候補を取得するための評価値に使用されている。
図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に進む。
図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候補とする。
このようにして繰返し候補取得部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)で符号化を行う。
図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候補は存在していない。
図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候補とする。
このようにして繰返し文字列の位置の候補、即ち第1候補、第2候補、第3候補が取得されたならば、図7の一致検出部18が入力バッファ12における第1候補28、第2候補46、第3候補48の各アドレス13,7,1を起点とする文字列と符号化位置26のアドレス19を起点とする文字列と一致比較34を行い、一致長の最も長い候補の文字列を取得して符号生成部20により符号化させる。この例では、第3候補48からの文字列が符号化位置26からの文字列に最も長く一致する文字列「abcdef」であることから、第3候補48の相対位置19−1=18と一致長6を求め、(相対位置,一致長)=(18,6)で符号化を行う。
図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に進む。
図18は、本発明の第4実施形態によるデータ圧縮処理の説明図である。この第4実施形態にあっては、図9の第1実施形態によって最長一致の文字列を取得した後、この取得した文字列の候補を改めて第1候補いわゆる改定第1候補として、図15の第3実施形態の処理を適用するようにしたことを特徴とする。即ち、図9の第1実施形態は最近の一致部分を見つけることのできる処理であるが、それ以上、過去に延ばすことができないことから、これに過去の一致部分に候補を延ばすことのできる図15の第3実施形態の処理を組み合わせたものである。
図18の第4実施形態について、図7の繰返し候補取得部16による処理は、図9の第1実施形態の処理である第1処理と、図15の第3実施形態の処理である第2処理とに分かれる。
(第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より小さいことから候補外である。
このようにして第1候補及び第2候補が取得されたならば、図7の一致検出部18によりアドレス7の第1候補52及びアドレス4の第2候補54を起点とした文字列と、符号化位置50のアドレス11を起点とした文字列の一致比較60を行い、一致長の最も長い文字列、この場合にはアドレス4からの第2候補54の文字列「abcabc」を、次の第2処理のための改定第1候補56とする。
(第2処理)
第2処理は、改定第1候補56のアドレス4−3=1として、最近一致位置リスト24から取得した格納値を改定第2候補58とする。そして図7の符号生成部20により、改定第1候補56のアドレス4及び改定第2候補のアドレス1を起点とする文字列と、符号化位置50のアドレス11を起点とする文字列を比較する一致比較60を行い、最も長く一致する候補の文字列を検出する。この場合には第2改定候補58の文字列が、文字列「abcabcabc」となって最も長く一致し、改定第2候補の相対位置11−1=10で一致長が9であることから、(相対位置,一致長)=(10,9)で符号化を行う。
図19及び図20は、本発明の第4実施形態のデータ圧縮処理のフローチャートであり、次の処理手順となる。
ステップ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に進む。
なお、本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に本発明は、上記の実施形態に示した数値による限定は受けない。
産業上の利用の可能性
以上説明してきたように本発明によれば、入力バッファ中の各アドレスを起点とする所定長の各文字列が、最も最近出現した相対値を格納した最近一致位置リストで一致文字列の候補を絞り込み、絞り込んだ候補について符号化位置との文字列の一致検出で最も長い文字列を検出して符号化することができ、最近一致位置リストに同じ数字が連続せずに一致位置が不明となる被圧縮データの文字列であっても、最長一致文字列を検出して高速に符号化することができる。
また、最長一致文字列の検出による符号化に使用する検索テーブルとして使用するのは入力バッファと最近一致位置リストのみで済むため、少ないメモリ量でデータ圧縮機能を実装することができる。

Claims (19)

  1. 被圧縮データ列から圧縮データを生成するデータ圧縮方法に於いて、
    入力部により、入力バッファに被圧縮データ列を入力して保持する入力ステップと、
    最近一致位置リスト生成部により、前記入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した位置を格納した最近一致位置リストを生成して保持するリスト生成ステップと、
    繰返し候補取得部により、前記最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得ステップと、
    一致検出部により、取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、前記繰返し候補の位置からの一致した文字列を検出する一致検出ステップと、
    符号生成部により、検出した一致文字列を符号化する符号生成ステップと、
    を備えたことを特徴とするデータ圧縮方法。
  2. 請求の範囲1のデータ圧縮方法に於いて、
    前記候補取得ステップは、符号化位置をアドレスとして前記最近一致位置リストから取得した格納値を文字列の繰返し位置の第1候補とし、
    前記一致検出ステップは、前記第1候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、一致した文字列を取得して符号化させることを特徴とするデータ圧縮方法。
  3. 請求の範囲2のデータ圧縮方法に於いて、
    前記候補取得ステップは、更に、
    前記第1候補を評価値とする第1ステップと、
    前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補を取得する第2ステップと、
    を備え、
    前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするデータ圧縮方法。
  4. 請求の範囲3のデータ圧縮方法に於いて、前記候補取得ステップは、後続候補を取得した際に、取得した後続候補の値を次に後続する候補を取得するための評価値とすることを特徴とするデータ圧縮方法。
  5. 請求の範囲2のデータ圧縮方法に於いて、
    前記候補取得ステップは、更に、
    前記第1候補をアドレスとして前記最近一致位置リストから取得した値を評価値とする第1ステップと、
    前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補を取得する第2ステップと、
    を備え、
    前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするデータ圧縮方法。
  6. 請求の範囲5のデータ圧縮方法に於いて、前記候補取得ステップは、後続候補を取得した際に、取得した後続候補の値を次に後続する候補を取得するための評価値とすることを特徴とするデータ圧縮方法。
  7. 請求の範囲2のデータ圧縮方法に於いて、
    前記候補取得ステップは、更に、第1候補に続く1又は複数の後続候補として、先行する候補をアドレスとして前記最近一致位置リストから取得した格納値を後続候補とし、
    前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を取得して符号化させることを特徴とするデータ圧縮方法。
  8. 請求の範囲2のデータ圧縮方法に於いて、
    前記候補取得ステップは、更に、
    前記第1候補を評価値とし、前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補とし、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、符号化位置の文字列との一致長の最も長い文字列を改定第1候補として取得する第1ステップと、
    前記改定第1候補に続く1又は複数の後続候補として、先行する候補をアドレスとして前記最近一致位置リストから取得した格納値を改定後続候補とする第2ステップと、
    を備え、
    前記一致検出ステップは、前記改定第1候補及び改定後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするデータ圧縮方法。
  9. 請求の範囲1のデータ圧縮方法に於いて、前記符号生成ステップは、符号化位置からの文字列を、検出された一致文字列の相対位置と一致長で符号化することを特徴とするデータ圧縮方法。
  10. コンピュータに、
    入力バッファに被圧縮データ列を入力して保持する入力ステップと、
    前記入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した位置を格納した最近一致位置リストを生成して保持するリスト生成ステップと、
    前記最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得ステップと、
    取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、前記繰返し候補の位置からの一致した文字列を検出する一致検出ステップと、
    検出した一致文字列を符号化する符号生成ステップと、
    を実行させることを特徴とするプログラム。
  11. 請求の範囲10のプログラムに於いて、
    前記候補取得ステップは、符号化位置をアドレスとして前記最近一致位置リストから取得した格納値を文字列の繰返し位置の第1候補とし、
    前記一致検出ステップは、前記第1候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、一致した文字列を検出して符号化させることを特徴とするプログラム。
  12. 請求の範囲11のプログラムに於いて、
    前記候補取得ステップは、更に、
    前記第1候補を評価値とする第1ステップと、
    前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補として取得する第2ステップと、
    を備え、
    前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするプログラム。
  13. 請求の範囲12のプログラムに於いて、前記候補取得ステップは、後続候補を取得した際に、取得した後続候補の値を次に後続する候補を取得するための評価値とすることを特徴とするプログラム。
  14. 請求の範囲11のプログラムに於いて、
    前記候補取得ステップは、更に、
    前記第1候補をアドレスとして前記最近一致位置リストから取得した値を評価値とする第1ステップと、
    前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に第1候補に続く1又は複数の後続候補を取得する第2ステップと、
    を備え、
    前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするプログラム。
  15. 請求の範囲14のプログラムに於いて、前記候補取得ステップは、後続候補を取得した際に、取得した後続候補の値を次に後続する候補を取得するための評価値とすることを特徴とするプログラム。
  16. 請求の範囲11のプログラムに於いて、
    前記候補取得ステップは、更に、第1候補に続く1又は複数の後続候補として、先行する候補をアドレスとして前記最近一致位置リストから取得した格納値を後続候補とし、
    前記一致検出ステップは、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を検出して符号化させることを特徴とするプログラム。
  17. 請求の範囲11のプログラムに於いて、
    前記候補取得ステップは、更に、
    前記第1候補を評価値とし、前記符号化位置に後続する各位置をアドレスとして前記最近一致位置リストから取得した格納値と前記評価値を比較し、取得した格納値が評価値より過去の値である場合に、符号化位置からの距離が小さい順に前記第1候補に続く1又は複数の後続候補とし、前記第1候補及び後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、符号化位置の文字列との一致長の最も長い文字列を改定第1候補とする第1ステップと、
    前記改定第1候補に続く1又は複数の改定後続候補として、先行する候補をアドレスとして前記最近一致位置リストから取得した格納値を改定後続候補とする第2ステップと、
    を備え、
    前記一致検出ステップは、前記改定第1候補及び改定後続候補を起点にする文字列と符号化位置を起点にする文字列を比較し、一致長の最も長い文字列を取得して符号化させることを特徴とするプログラム。
  18. 請求の範囲10のプログラムに於いて、前記符号生成ステップは、符号化位置からの文字列を、検出された一致文字列の相対位置と一致長で符号化することを特徴とするプログラム。
  19. 被圧縮データ列から圧縮データを生成するデータ圧縮装置に於いて、
    入力バッファに被圧縮データ列を入力して保持する入力バッファと、
    前記入力バッファ中の各アドレスを起点とする所定長の各文字列が最も最近出現した位置を格納した最近一致位置リストを生成して保持する最近一致位置リスト生成部と、
    前記最近一致位置リストを用いて符号化位置の文字列が過去に出現した位置の繰返し候補を取得する候補取得部と、
    取得した繰返し候補の位置を起点にする文字列と符号化位置を起点にする文字列を比較し、前記候補位置からの一致した文字列を検出する一致検出部と、
    検出した一致文字列を符号化する符号生成部と、
    を備えたことを特徴とするデータ圧縮装置。
JP2004564417A 2002-12-26 2002-12-26 データ圧縮方法、プログラム及び装置 Expired - Lifetime JP3889762B2 (ja)

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 true JPWO2004062110A1 (ja) 2006-05-18
JP3889762B2 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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113705175B (zh) * 2021-08-18 2024-02-23 厦门海迈科技股份有限公司 一种电子表格行列精简的方法、服务器及存储介质

Families Citing this family (38)

* Cited by examiner, † Cited by third party
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
US8743683B1 (en) 2008-07-03 2014-06-03 Silver Peak Systems, Inc. Quality of service using multiple flows
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US20110181448A1 (en) * 2008-10-15 2011-07-28 Veeresh Rudrapa 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 日本電信電話株式会社 文字列圧縮及び復元システム並びに方法
CN110691250B (zh) * 2013-10-12 2022-04-08 广州中广国科测控技术有限公司 结合块匹配和串匹配的图像压缩装置
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
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
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
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
JP2021149416A (ja) 2020-03-18 2021-09-27 キオクシア株式会社 メモリシステム
CN117216023B (zh) * 2023-11-07 2024-01-26 陕西长瑞安驰信息技术集团有限公司 一种大规模网络数据存储方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
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
JP2910639B2 (ja) * 1994-10-04 1999-06-23 日本電気株式会社 データ圧縮装置
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
JP3273119B2 (ja) * 1995-09-29 2002-04-08 京セラ株式会社 データ圧縮・伸長装置
JP3540109B2 (ja) * 1996-12-24 2004-07-07 富士通株式会社 データ圧縮方法及び装置
JP4242970B2 (ja) * 1998-07-09 2009-03-25 富士通株式会社 データ圧縮方法及びデータ圧縮装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113705175B (zh) * 2021-08-18 2024-02-23 厦门海迈科技股份有限公司 一种电子表格行列精简的方法、服务器及存储介质

Also Published As

Publication number Publication date
EP1578020A4 (en) 2005-11-16
EP1578020A1 (en) 2005-09-21
EP1578020B1 (en) 2014-08-27
US20050283355A1 (en) 2005-12-22
US7536399B2 (en) 2009-05-19
JP3889762B2 (ja) 2007-03-07
WO2004062110A1 (ja) 2004-07-22

Similar Documents

Publication Publication Date Title
JP3889762B2 (ja) データ圧縮方法、プログラム及び装置
US8095526B2 (en) Efficient retrieval of variable-length character string data
CN107567621B (zh) 用于执行数字搜索的方法、系统和计算机程序产品
US7707157B1 (en) Document near-duplicate detection
US10224957B1 (en) Hash-based data matching enhanced with backward matching for data compression
US8134483B2 (en) Data processing apparatus and method
JP6447161B2 (ja) 意味構造検索プログラム、意味構造検索装置、及び意味構造検索方法
EP3422209B1 (en) Character string distance calculation method and device
JP4077409B2 (ja) 高速最長一致探索方法及び装置
JP3151730B2 (ja) データベース検索システム
US6167400A (en) Method of performing a sliding window search
JP2010225137A (ja) 検索プログラム及び検索方法
JP3728264B2 (ja) インデックス作成装置、検索システム、及び制御方法
JP3259781B2 (ja) データベース検索システムおよびデータベース検索方法
KR20190139227A (ko) K-부정합 검색을 위한 필터를 생성하는 시스템 및 방법
JP2952067B2 (ja) データ圧縮方式
JP3053656B2 (ja) データ圧縮における辞書登録方式
JP3115459B2 (ja) 文字認識辞書の構成方法及び検索方法
JP2535655B2 (ja) 辞書検索方式
JP3236747B2 (ja) データ伸長方式
JP3058711B2 (ja) データ圧縮及び復元方法
JP2015159352A (ja) データ圧縮装置、データ圧縮方法、及びプログラム
JP4061283B2 (ja) 字句をデータに変換する装置、方法及びプログラム
JPH06274701A (ja) 単語照合装置
JP2005275880A (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