JPWO2014097359A1 - 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置 - Google Patents
圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置 Download PDFInfo
- Publication number
- JPWO2014097359A1 JPWO2014097359A1 JP2014552759A JP2014552759A JPWO2014097359A1 JP WO2014097359 A1 JPWO2014097359 A1 JP WO2014097359A1 JP 2014552759 A JP2014552759 A JP 2014552759A JP 2014552759 A JP2014552759 A JP 2014552759A JP WO2014097359 A1 JPWO2014097359 A1 JP WO2014097359A1
- Authority
- JP
- Japan
- Prior art keywords
- compression
- data
- dictionary
- file
- storage area
- 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
Links
- 238000007906 compression Methods 0.000 title claims abstract description 408
- 230000006835 compression Effects 0.000 title claims abstract description 407
- 230000006837 decompression Effects 0.000 title claims description 44
- 238000000034 method Methods 0.000 claims abstract description 147
- 238000012545 processing Methods 0.000 claims abstract description 82
- 230000003068 static effect Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000006243 chemical reaction Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 10
- WBMKMLWMIQUJDP-STHHAXOLSA-N (4R,4aS,7aR,12bS)-4a,9-dihydroxy-3-prop-2-ynyl-2,4,5,6,7a,13-hexahydro-1H-4,12-methanobenzofuro[3,2-e]isoquinolin-7-one hydrochloride Chemical compound Cl.Oc1ccc2C[C@H]3N(CC#C)CC[C@@]45[C@@H](Oc1c24)C(=O)CC[C@@]35O WBMKMLWMIQUJDP-STHHAXOLSA-N 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012795 verification Methods 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
- 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
-
- 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/60—General implementation details not specific to a particular type of compression
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一側面において、圧縮処理において動的に生成される圧縮辞書を用いつつ、部分的に伸張を実行可能な圧縮データを生成することを目的とする。本開示の圧縮プログラムが、コンピュータに、圧縮対象のファイル内に含まれるデータのうち、複数回出現するデータに対して圧縮符号を割り当てることにより、圧縮辞書の生成を行ない、生成された前記圧縮辞書に基づいて前記ファイル内のデータに対して圧縮処理を実行する、処理を実行させる。
Description
本発明は、データの圧縮技術または伸張技術の少なくとも一方に関する。
LZ77と呼ばれる圧縮アルゴリズムがあり、ZIPなどの圧縮ファイルフォーマットに採用されている。
LZ77では、圧縮対象ファイルの先頭から順次圧縮処理が行なわれる。LZ77においては、データ参照領域(スライド窓などと呼ばれる)が設定され、圧縮対象ファイルのうち、圧縮処理が行なわれたデータは、順次スライド窓に格納される。スライド窓のサイズは予め設定されており、スライド窓内に格納されるデータがスライド窓のサイズを超えると、スライド窓内に先に格納されたデータを更新しつつデータが格納される。
LZ77において順次行なわれる圧縮処理は、スライド窓内に含まれるデータのうち、圧縮対象ファイル内で圧縮処理の処理対象となるデータと最も長く一致するデータ列(最長一致データ列)に基づいて生成される圧縮符号が用いられる。圧縮符号は、スライド窓の最長一致データ列の一致長およびスライド窓内の位置を組み合わせた情報である。
LZ77によれば、最長一致データ列の一致長が長いほど、多くのデータが1つの圧縮符号(一致長と位置との組み合わせ)により表現されるので、圧縮率が向上する。一致長の長い最長一致データ列が多く抽出されれば圧縮率が向上するので、スライド窓のサイズが大きくなれば圧縮率が向上する傾向にある。これは、より多くのデータから処理対象のデータと一致するデータを探し当てることになるため、一致長が長いデータ列を特定する確率が向上するためである。
また、伸張処理においては、圧縮ファイルの先頭から順に読み出される圧縮符号毎に、スライド窓を参照して伸張されるとともに、伸張されたデータによりスライド窓内のデータが更新される。順次更新されるスライド窓内のデータに基づいて圧縮符号が伸張される。
しかしながら、LZ77によれば、動的に更新されるスライド窓を用いて圧縮データが生成されるので、伸張時には、圧縮ファイルの先頭から伸張することによりスライド窓に復元されたデータを利用することとなる。もし、その圧縮データのうち一部分のデータが必要な場合にも、部分的な伸張処理ではなく、圧縮データの始めから伸張処理を行なうことになり、伸張に多大な時間を費やすことになってしまう。
本発明の一側面において、最長一致データ列に基づく圧縮符号を用いつつ、部分的に伸張できる圧縮データを生成することを目的とする。
一態様によれば、圧縮プログラムは、コンピュータに、ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書の生成を行ない、前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう、処理を実行させる。
一態様によれば、コンピュータに、ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書の生成を行ない、前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう、ことを実行させる圧縮方法が用いられる。
一態様によれば、圧縮装置が、ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書を生成する生成部と、前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう処理部と、を含む。
一態様によれば、圧縮装置と伸張装置とを含む圧縮伸張システムであって、前記圧縮装置が、ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書を生成する生成部と、前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう処理部と、前記圧縮処理により得られた圧縮データと前記圧縮辞書とを前記伸張装置に送信する送信部と、を含み、前記伸張装置が、前記圧縮装置から受信した圧縮データを、前記圧縮辞書に基づいて伸張する伸張部、を含む。
一態様によれば、圧縮プログラムは、コンピュータに、ファイル内のデータに基づいて、静的な圧縮符号の割り当て対象を動的に生成し、生成された前記割り当て対象に圧縮符号を割り当てた圧縮辞書に基づいて、前記ファイルに対して圧縮処理を行なう、処理を実行させる。
一側面によれば、最長一致データ列に基づく圧縮符号用いつつ、部分的に伸張できる圧縮データを生成できる。
下記に図面を参照しつつ、実施形態について説明する。
図1は、圧縮処理の流れの一例を示す。圧縮処理のワークエリアとして、メモリに記憶領域A1、記憶領域A2、記憶領域A3および記憶領域A4が設けられる。圧縮対象のファイルF1が記憶領域A1にロードされ、ロードされたデータが順次読み出され、読み出された処理対象のデータに基づいて、圧縮データの生成(図1中の「照合1」など)と記憶領域A2の更新(図1中の「更新」など)とが行なわれる。生成された圧縮データは順次記憶領域A4に格納され、記憶領域A4に格納された圧縮データに基づき、圧縮ファイルF2が出力される。記憶領域A3には圧縮辞書が格納されており、処理対象のデータに記憶領域A2のデータと処理対象のデータとの照合(図1中の「照合2」など)の結果に応じて、圧縮辞書内にデータが登録される(図1中の「登録」)。例えば、照合2において得られる最長一致データ列が、所定の長さLmin以上の長さである場合に、最長一致データ列が圧縮辞書に登録される。記憶領域A1、記憶領域A2および記憶領域A3は、それぞれ符号化部、参照部および辞書部などと呼ばれる。圧縮データとして、例えば、照合1の結果に応じて、本圧縮アルゴリズムの圧縮辞書に登録された圧縮符号か、または処理対象のデータをハフマン符号化して得られるハフマン符号が用いられる。また、ハフマン符号の代わりに、処理対象のデータそのものや、他の圧縮アルゴリズムにより生成される圧縮符号が用いられてもよい。
図2は圧縮辞書の一例を示す。図2に示される圧縮辞書は、記憶領域A3と参照テーブルT3により構成される。参照テーブルT3には、図1中の「登録」により記憶領域A3内に最長一致データ列が順次格納される。また、最長一致データ列が登録されるごとに、参照テーブルT3に最長一致データ列の記憶領域A3における格納位置と長さとが格納される。最長一致データ列の格納位置および長さが登録される参照テーブルT3内の位置を示す登録番号が、最長一致データ列に対応する圧縮符号として用いられる。図1中の「照合1」により、記憶領域A3内のデータと処理対象のデータとの照合が行なわれ、照合の結果、合致するデータが得られた場合には、合致するデータの記憶領域A3内での位置及びデータの長さと参照テーブルT3により対応づけられた圧縮符号が生成される。
図1の例では、ファイルF1内に「・・・1st horse・・・2nd horse・・・3rd horse・・・」という文字列のデータが含まれる(「・・・」は不特定の文字列を示す)。ファイルF1は記憶領域A1にロードされ、ロードされたデータは順に読み出される。以下に、図1に示す圧縮データd1〜d3それぞれの生成処理の流れを説明する。
例えば、「1st horse・・・」の「h」以降が処理対象のデータである(記憶領域A1からの読出し位置が「1st horse・・・」の「h」の位置である)場合には、記憶領域A3内で「horse・・・」の最長一致データ列が探索される。処理対象のデータが「1st horse・・・」の「h」以降である場合には、図1に示す通り、記憶領域A3にはデータが格納されていない状態なので、そもそも先頭のデータである「h」と一致するデータが存在しない。そのため、所定の長さLmin以上の長さの最長一致データ列が得られないので、処理対象のデータと記憶領域A2に格納されるデータとの照合処理である「照合2」が行なわれる。「照合2」では、記憶領域A2に格納されたデータのそれぞれと処理対象のデータの先頭である「h」との照合が行われる。しかしながら、記憶領域A2内にもそもそも「h」と一致するデータが存在しない。そのため、所定の長さLmin以上の長さの最長一致データ列が存在しないので、処理対象のデータの先頭データ「h」のハフマン符号化が行なわれる。「1st horse・・・」の「h」以降が処理対象のデータとなった場合の圧縮データd1は、ハフマン符号化により得られた圧縮符号と、ハフマン符号化により生成された圧縮符号であることを示す識別子(図1の例においては「0」)とを含む。上述した通り、圧縮データd1に含まれる圧縮符号の部分は、他の圧縮アルゴリズムに基づく圧縮符号でもよいし、処理対象のデータの先頭データ(「h」)そのものでもよい。生成された圧縮データd1は記憶領域A4に書き込まれる。さらに、処理対象のデータの先頭データ(「h」)について処理が行なわれたので、記憶領域A2に「h」が格納される(図1中の「更新」)。
例えば、「2nd horse・・・」の「h」以降が処理対象のデータである(記憶領域A1からの読出し位置が「2nd horse・・・」の「h」の位置である)場合には、記憶領域A3内で「horse・・・」の最長一致データ列が探索される。図1に示す通り、記憶領域A3にはデータが格納されていない状態なので、そもそも先頭のデータである「h」と一致するデータが存在しない。すなわち、「照合1」により所定の長さLmin以上の長さの最長一致データ列が得られないので、さらに、記憶領域A2内で「horse・・・」の最長一致データ列が探索される(照合2)。記憶領域A2内には既に「・・・1st horse・・・」が格納されている。例えば、まず記憶領域A2に対して「h」の探索が行われ、探索により得られた記憶領域A2内の「h」の箇所から「o」、「r」、「s」、「e」・・・と連続しているか否か、順次照合される。図1の例では、処理対象のデータ「horse・・・」と記憶領域A2内の「・・・1st horse・・・」の「horse」の部分が一致する。図1には、一致した「horse」が最長一致データ列であり、一致長が所定の長さLmin以上である場合が例示されている。図1のように、最長一致データ列「horse」が所定の長さLmin以上である場合には、「horse」が記憶領域A3内に登録される。また、圧縮辞書への登録内容に基づいて圧縮符号が生成される。生成される圧縮符号は、圧縮辞書内での格納位置および登録された最長一致データ列のデータ長を示す。「2nd horse・・・」の「h」以降が処理対象のデータである場合の圧縮データd2は、生成された圧縮符号と、圧縮符号が圧縮辞書に基づいて生成されたことを示す識別子(図1の例においては「1」)とを含む。生成された圧縮データd2は記憶領域A4に格納される。さらに、「照合2」による最長一致データ列「horse」について処理が行なわれたので、記憶領域A2に「horse」が格納される(図1中の「更新」)。
「3rd horse・・・」の「h」以降が処理対象のデータである場合には、記憶領域A3内で「horse・・・」の最長一致データ列が探索される(「照合1」)。図1に示す通り、記憶領域A3内には既に「horse」が格納されている。例えば、まず記憶領域A3に対して「h」の探索が行われ、探索により得られた記憶領域A3内の「h」の箇所から「o」、「r」、「s」、「e」・・・と連続しているか否か、順次照合される。図1の例では、照合1によりデータ列「horse」が一致する。図1には、一致した「horse」が最長一致データ列であり、一致長が所定の長さLmin以上である場合が例示されている。図1に示すように、最長一致データ列「horse」が所定の長さLmin以上である場合は、記憶領域A3内での格納位置および一致長に対応する登録番号が参照テーブルT3から取得される。「3rd horse・・・」の「h」以降が処理対象のデータである場合の圧縮データd3は、取得された登録番号を圧縮符号として含み、さらに、圧縮符号が圧縮辞書(記憶領域A3および参照テーブルT3)に基づいて生成されたことを示す識別子(図1の例においては「1」)とを含む。さらに、「照合1」による最長一致データ列「horse」について処理が行なわれたので、記憶領域A2に「horse」が格納される(図1中の「更新」)。
図1の圧縮処理の変形例においては、例えば、圧縮データd2または圧縮データd3のように識別子「1」の圧縮データを生成した場合には図1中の「更新」が行なわれず、圧縮データd1のように識別子「0」の圧縮データを生成した場合にのみ「更新」が行なわれる。
記憶領域A1〜A4について圧縮処理でアクセスに用いられる位置の情報の管理も行なわれる。位置情報の管理については後述するが、例えば、記憶領域A1からのデータ読み出しの位置、記憶領域A2のデータ更新の位置やデータ参照の位置、記憶領域A3の登録位置やデータ参照の位置、さらには、記憶領域A4へのデータ書込みの位置が管理される。
記憶領域A2および記憶領域A3は、例えば、それぞれデータサイズが定められた(例えば数キロバイト〜数十キロバイト程度)記憶領域である。例えば、記憶領域A2に定められたデータサイズ以上のデータが格納される場合には、記憶領域A2の先頭に格納された古いデータの上から新しいデータが格納される。記憶領域A2内に格納されるデータは、例えば、データの格納に応じて更新される書込み位置からの相対的なアドレスによりその位置が示される。また、例えば、書き込み位置からの相対的なアドレスにより記憶領域A2に格納されたデータ同士での格納順序の先後が示される。記憶領域A3は、例えば、入力ファイルの大きさに応じて、データサイズが定められた(例えば、数キロバイト〜数十キロバイト程度)記憶領域である。例えば、定められたデータサイズ以上のデータが格納される場合には、新しいデータの格納は抑止される。図3は、圧縮ファイルのブロック構成例を示す。図3において、ファイルF1はn個のブロックに分割されている。ブロックは、ファイルF1を所定サイズのデータごとに分割して得られるものでもよいし、ファイルF1に含まれる区切り指定(例えば、HTML文書におけるタグ(例えば<h1>や<p>など))に基づいて分割して得られるものでもよい。例えば、ファイルF1における各ブロックの開始位置を示すアドレス情報(X0〜Xn−1)と、圧縮された状態の各ブロックの圧縮ファイルF2内での開始位置を示すアドレス情報(Y0〜Yn−1)とが、各ブロックのブロック番号に対応付けて管理テーブルT0に格納される。管理テーブルT0は、圧縮ファイルF2のトレーラ情報に含まれ、圧縮ファイルF2の部分伸張が行なわれる際に参照される。また、圧縮ファイルF2は、例えば圧縮ファイルF2の生成に用いられたハフマン符号化の符号化辞書E1をヘッダ情報に含み、圧縮辞書をトレーラ情報に含む。
トレーラ情報に含まれる圧縮辞書は、圧縮処理が完了後(例えば、後述の図7のS111の時点)のものが格納される。ヘッダ情報は、例えば、圧縮ファイルF2の生成に用いられた圧縮アルゴリズムを識別する情報や、圧縮に用いられたパラメータなどの情報を含む。また、例えば、圧縮ファイルF2内に含まれるヘッダ情報、圧縮データおよびトレーラ情報の範囲を示す情報を含む。
また、圧縮処理の変形例として、各ブロックについて圧縮辞書が生成されることとしてもよい。その場合には、管理テーブルT0に、各ブロックのブロック番号と対応付けて、各ブロックに対して生成された圧縮辞書の識別情報(図1中の辞書番号)が格納される。
図1に示す圧縮処理によれば、最長一致データ列の探索により抽出された最長一致データ列が圧縮辞書に登録される。さらに、圧縮辞書に登録されたデータ列に対応する圧縮符号が変化しないので、圧縮符号をファイルF1内のどの位置においても共通して用いることができる。これにより、LZ77のスライド窓へのデータの復元の必要性から開放され、ブロックのアドレス情報と組み合わせることで、部分的な伸張が可能となる。また、参照テーブルT3を用いることにより、最長一致データ列の格納位置および長さという2種類の情報ではなく、登録番号という1種類情報により圧縮符号が構成されるため、圧縮効率の向上を図ることができる。
上述のように、ファイル内のデータ列同士の照合によりデータ列と圧縮符号との対応関係を確定させる圧縮辞書を用いた圧縮により、長いデータ列が繰り返し出現するファイルを効率よく(圧縮率を維持しつつ)圧縮し、且つ部分伸張可能とすることができる。また、ファイルF1に対して1回のデータ読み出しで圧縮辞書の生成と圧縮処理とが行なわれる。そのため、圧縮辞書を生成してから圧縮辞書に基づいて圧縮処理を行なうよりも、メモリアクセスが抑制される。
図4は、伸張処理の流れの一例を示す。伸張処理のワークエリアとして、メモリに記憶領域B1、記憶領域B3および記憶領域B4が設けられる。記憶領域B1にロードされた圧縮ファイルF2のコンテンツ部分から順次圧縮データが読み出され、読み出された処理対象の圧縮データに基づいて伸張データの生成が行なわれる。この際、圧縮データに含まれる識別子に応じた生成処理が行なわれる。生成された伸張データは順次記憶領域B4に格納され、記憶領域B4に格納された伸張データに基づいて伸張ファイルF3が生成される。また、記憶領域B3には、圧縮ファイルF2に含まれる圧縮辞書がロードされる。記憶領域A1および記憶領域A3は、それぞれ符号化部および辞書部と呼ばれる。以下に、図4に示す圧縮データd1〜d3のそれぞれの例について伸張処理を説明する。
処理対象の圧縮データが圧縮データd1である(記憶領域B1の読出し位置に圧縮データd1が存在する)場合に、まず圧縮データd1の識別子が判断される。圧縮データd1の識別子は、ハフマン符号化による圧縮を示す(「0」である)ので、圧縮データd1に対して、ハフマン符号化アルゴリズムに基づき、復号化が行なわれる。
処理対象の圧縮データが圧縮データd2である(記憶領域B1の読出し位置に圧縮データd2が存在する)場合に、まず圧縮データd2の識別子が判断される。圧縮データd2の識別子は圧縮辞書による圧縮を示す(「1」である)ので、圧縮データd2内の圧縮符号に基づいて圧縮辞書の参照が行なわれる。具体的には、圧縮辞書に含まれる参照テーブルT3から圧縮符号に対応する記憶領域A3内の位置および長さの指定が読み出され、記憶領域A3から指定に応じたデータが読み出される。読み出されたデータが伸張データとなる。圧縮データd2内の圧縮符号は、圧縮辞書内の「horse」を示すので、伸張データとして「horse」が生成される。
処理対象の圧縮データが圧縮データd3である(記憶領域B1の読出し位置に圧縮データd3が存在する)場合に、まず圧縮データd3の識別子が判断される。圧縮データd3の識別子は圧縮辞書による圧縮を示す(「1」である)ので、圧縮データd3内の圧縮符号に基づいて圧縮辞書の参照が行なわれる。具体的には、圧縮辞書に含まれる参照テーブルT3から圧縮符号に対応する記憶領域A3内の位置および長さの指定が読み出され、記憶領域A3から指定に応じたデータが読み出される。読み出されたデータが伸張データとなる。圧縮データd3内の圧縮符号は、圧縮辞書内の「horse」を示すので、伸張データとして「horse」が生成される。
図5は、部分伸張の例を示す。圧縮ファイルF2を部分的に伸張する場合には、例えば、伸張データの範囲が指定される。例えば、ファイルの指定(ファイルF1)と、要求範囲の開始アドレスXiおよび終了アドレスXjの指定とを含む伸張要求により、伸張データの範囲が指定される。ファイルの指定に応じて部分伸張の対象ファイルが決定される。図5の例においては、圧縮ファイルF2の元となるファイルF1が指定されたことに基づいて、圧縮ファイルF2の部分伸張処理が行なわれる。
伸張要求で指定された範囲に基づいて、伸張を行なうブロックが判断される。図5の例においては、開始アドレスXiがブロック番号2の開始アドレスX1よりも大きく、ブロック番号3の開始アドレスX2よりも小さい。また、終了アドレスXjがブロック番号3の開始アドレスX2よりも大きく、ブロック番号4の開始アドレスX3よりも小さい。すなわち、伸張要求で指定された範囲は、ブロック番号2およびブロック番号3に含まれる。そのため、ブロック2およびブロック番号3のみを圧縮ファイルF2からロードし、伸張が行なわれれば、伸張を要求された範囲のデータが生成される。
またブロックごとに異なる圧縮辞書を用いて圧縮が行なわれている場合には、各ブロックの伸張処理において、管理テーブルT0の辞書番号を参照し、参照した辞書番号に対応する圧縮辞書に基づいて伸張が行なわれる。
図6は、機能構成例を示す。本実施形態の処理を実行するコンピュータ1は、圧縮部11、伸張部12および記憶部13を含む。圧縮部11は圧縮処理を行ない、伸張部12は伸張処理を行なう。記憶部13は、圧縮対象のファイルF1や、圧縮処理により得られるファイルF2や、ファイルF2を伸張して得られるファイルF3などを格納する。また、記憶部13は、圧縮部11や伸張部12のワークエリアとして用いられる。圧縮部11は、制御部111、参照部112、更新部113、参照部114および更新部115を含む。
制御部111は、圧縮処理を実行させるために参照部112、更新部113、参照部114および更新部115を制御し、各機能部の処理の実行制御を行なう。また、制御部111は、各機能部の処理に用いるデータを保持するため、記憶部13に記憶領域(例えば、図1に示す記憶領域A1および記憶領域A2)を確保する。参照部112は、記憶領域A1内の処理対象のデータに基づき、記憶領域A2内のデータの参照処理を実行する。この参照処理は、例えば、記憶領域A2内の各データと処理対象のデータとの照合により行なわれる。更新部113は、記憶領域A1の処理対象のデータの読出しに応じて、記憶領域A2内のデータを更新する。参照部114は、処理対象のデータに基づき圧縮辞書の参照処理を実行する。参照部114による圧縮辞書内の参照結果に応じて、制御部111は圧縮データを生成する。更新部115は、参照部112による記憶領域A2の参照結果に応じて、圧縮辞書を更新する。続いて、各機能部による処理の実行手順について、後述する。
図7は、圧縮処理の手順例を示す。まず、コンピュータ1内のオペレーティング・システムやアプリケーションプログラムの動作により圧縮機能が呼び出される(S101)と、制御部111は、前処理を実行する(S102)。S102の前処理は、例えば、図1に示す記憶領域A1および記憶領域A2の確保、圧縮済データを記憶する記憶領域A4の確保、各記憶領域内の位置情報の設定、圧縮辞書の格納領域の確保などである。
図8は、位置情報テーブルT1の例を示す。位置情報テーブルT1は、各記憶領域(記憶領域A1、記憶領域A2および記憶領域A4など)へのアクセス位置の管理に用いられる。位置情報テーブルT1には、ファイルF1を展開する記憶領域A1の記憶部13における開始位置P1、終了位置P2および読出し位置P3が設定される。また、位置情報テーブルT1には、さらに、記憶領域A2の記憶部13における開始位置P4、終了位置P5、参照位置P6および更新位置P7が設定される。位置情報テーブルT1には、記憶領域A4の記憶部13における開始位置P8、終了位置P9、書込み位置P10が設定される。位置情報テーブルT1に格納されるそれぞれの位置情報の初期値は、S102の前処理において制御部111により設定される。例えば、読み出し位置P3の初期値は開始位置P1と同じであり、参照位置P6および更新位置P7の初期値も開始位置P4と同じであり、書込み位置P10の初期値も開始位置P8と同じである。
S102の処理を終えると、次に、制御部111は、圧縮対象のファイルF1を記憶領域A1に展開する(S103)。次に、制御部111は、参照部114に圧縮辞書の参照処理を実行させる(S104)。参照部114は、記憶領域A1の読出し位置P3を始点とする処理対象のデータに基づいて、圧縮辞書の参照処理を実行する。S104の参照処理については、図12に基づいて後述する。S104の参照処理により、参照部114は、圧縮辞書から処理対象のデータに対応する圧縮符号か、または、対応する圧縮符号が存在しない旨を示す情報を制御部111に返す。
参照部114による参照結果が制御部111に返されると、制御部111は、参照部111に記憶領域A2の参照処理を実行させる(S105)。参照部112は、処理対象のデータに基づいて記憶領域A2を参照する。図9は、記憶領域A2の参照処理の手順例を示す。参照部112は、制御部111により記憶領域A2の参照を指示される(S200)と、記憶領域A2の参照位置P6、一致長La、最長一致位置Paをセット(例えばP6=P1、La=0、Pa=P1などと設定)する(S201)。一致長La、最長一致位置Paは、記憶部13内に記憶される。S201の処理を終えると、参照部112は、さらに、カウンタ値iのセットを行なう(S202)。カウンタ値iは、「0」にセットされる。
S202の処理を終えると、参照部112は、処理対象のデータと記憶領域A2内のデータとの照合を行なう。この照合において、参照部112は、記憶領域A1の読出し位置P3からカウンタ値iずれた位置(P3+i)のデータと、記憶領域A2の参照位置P6からカウンタ値iずれた位置(P6+i)のデータとが一致するか否かの判定(S203)を行なう。
参照部112がS203の判定においてデータ同士が一致すると判定した場合(S203:YES)には、参照部112はカウンタ値iをインクリメントする(S204)。参照部112は、続いて、S204でインクリメントされたカウンタ値iが設定値Lmax以上であるか否か判定する(S205)。カウンタ値iが設定値Lmaxよりも小さい場合(S205:NO)には、S203の判定が再度行なわれる。上記のS203〜S205の処理により、読み出し位置P3からのデータ(処理対象のデータ)と参照位置P6からのデータ列とについて、1つずつ合致しているか否かの判定が行なわれる。カウンタ値iは処理対象のデータと一致するデータの長さを示す。設定値Lmaxは予め設定された値であり、最長一致の上限値を示す。
S205の判定でカウンタ値iが設定値Lmax以上である場合(S205:YES)には、参照部112は、一致長Laをカウンタ値iに更新し(S206)、最長一致位置Paを参照位置P6に更新する(S207)。図9のS206とS207とに示す「=」は代入演算子である。S206とS207との処理順序は逆でもよい。S206およびS207で値を更新すると、参照部112は、値が代入された一致長Laおよび最長一致位置Paを制御部111に返す(S213)。
S203の判定でデータ同士が一致しないと判定された場合(S203:NO)には、参照部112は、カウンタ値iが一致長Laよりも大きいか否か判定する(S208)。カウンタ値iが一致長Laよりも大きい場合には(S208:YES)、参照部112は、一致長Laをカウンタ値iに更新し(S209)、最長一致位置Paを参照位置P6に更新する(S210)。図9のS209とS210とに示す「=」は代入演算子である。S209とS210との処理順序は逆でもよい。カウンタ値iが一致長La以下である場合(S208:NO)か、S206およびS207の処理が行なわれた場合には、参照部112は、参照位置P6のインクリメントを行なう(S211)。参照部112は、さらに、参照位置P6が記憶領域A2の終了位置P5に達しているか否かを判定する(S212)。参照位置P6が終了位置P5に達していない場合(S212:NO)には、参照部112は、再度S202の処理によりカウンタ値iをリセットし、S211でインクリメントされた参照位置P6に基づいてS203の判定を行なう。S212の判定において、参照位置P6が終了位置P5に達したと判定される場合(S212:YES)には、参照部112は、一致長Laおよび最長一致位置Paを制御部111に返して、記憶領域A2への参照処理を終了する(S213)。
次に、制御部111は、S105の記憶領域A2への参照処理の結果(一致長Laおよび最長一致位置Pa)に基づいて、更新部115に圧縮辞書の更新処理を実行させる(S106)。更新部115は図10のフローに従って圧縮辞書の更新処理を行なう。
図10は、圧縮辞書の更新処理の手順例を示す。制御部111により更新処理が指示される(S300)と、更新部115は、制御部111により指定される一致長Laおよび最長一致位置Paに基づいて記憶領域A2からデータを読み出す(S301)。すなわち、更新部115は、記憶領域A2における最長一致位置Paから一致長Laの長さのデータを読み出す。S301で読みだしたデータは、圧縮辞書に登録させる対象のデータ(登録対象データ)である。
更新部115は、参照部114に、登録対象データに基づいて圧縮辞書内を参照させる(S302)。更新部115は、S302の参照処理に基づいて、圧縮辞書内に登録対象データと重複するデータが含まれているか否かを判定する(S303)。圧縮辞書内に登録対象データと重複するデータが存在する場合(S303:Yes)には、更新部115は、登録対象データが圧縮辞書内の重複データよりも一致長が長いか否かを判定する(S304)。例えば、重複データを部分的に含むデータが圧縮辞書内に登録されている場合には、登録対象データよりも長いデータが登録されていることとなり、S304の判定でNOと判定される。
S303で重複するデータが含まれない場合(S303:NO)か、S304で登録対象データが重複データよりも一致長が長い場合(S304:YES)には、更新部115は、一致長Laが設定値Lminよりも大きいか否かを判定する(S305)。S305で一致長が設定値Lminよりも大きいと判定された場合(S305:YES)には、更新部115は、登録対象データを圧縮辞書に登録する処理を行ない(S306)、処理を終了する(S307)。S306の圧縮辞書への登録処理は、圧縮辞書の形式によって手順が異なるので、圧縮辞書の形式に応じて後述する。
S304で、登録対象データが重複データよりも一致長が長い場合(S304:YES)か、一致長Laが設定値Lmin以下である場合(S304:NO)には、更新部115は、S306を行なわずに処理を終了する(S307)。
図10において、S303およびS304は付加的な構成であり、登録対象データが圧縮辞書に登録済みのデータと完全一致でなければ、更新部115は、S305の処理を行なうこととしてもよい。また、S305の処理についても付加的な構成であり、更新部115は、S305の判定を行なわずに、S306の処理を行なってもよい。
更新部115が図10の手順を終えると、制御部111は、更新部113に記憶領域A2を更新させる(S107)。更新部113は、制御部111の指示に応じて記憶領域A2の更新処理を行なう。
図11は、記憶領域A2の更新処理の手順例を示す。制御部111から記憶領域A2の更新処理の指示を受ける(S400)と、更新部113は、記憶領域A1内の読出し位置P3から一致長Laのデータを読み出す(S401)。さらに、更新部113は、S401で読み出したデータを記憶領域A2の更新位置P7に書き込む(S402)。S402の書き込みにおいて、記憶領域A2の終了位置P5を超えてしまうデータについては、記憶領域A2の開始位置P4から書き込む。
次に、更新部113は、更新位置P7の更新を行なう(S403)。更新位置P7の初期値は記憶領域A2のS402の書き込みにおいて一致長Laのデータの書き込みを行なったので、更新位置P7は、P7+Laに更新される。図11のS403における「=」は、代入演算子である。さらに、更新部113は、更新位置P7が終了位置P5よりも大きいか否か判定し(S404)、更新位置P7が終了位置P5よりも大きい場合(S404:YES)には、更新位置P7をP7=P7−P5+P4と修正する(S405)。このS405における「=」は、代入演算子である。S405の処理を行なうか、更新位置P7が終了位置よりも大きくない場合(S404:NO)には、更新部113は処理を終了する(S406)。
更新部113が図11の手順を終了すると、制御部111は、S104における圧縮辞書の参照処理の処理結果に応じて生成された圧縮符号もしく記憶領域A1の読出し位置P3のデータを、書き込み位置P10に書き込む(S108)。P108において、制御部111は、さらに、書き込んだデータ(圧縮符号または読出し位置P3のデータ)の長さに応じて書き込み位置P10を更新する。S108が終わると、制御部111は読出し位置P3を更新する(S109)。さらに、制御部111は読出し位置P3がファイルF1の終点(終了位置P2)であるか否かを判断する(S110)。読出し位置P3が、まだ終了位置P2に到達していない場合(S110:NO)には、制御部111は、再度S104の処理を行なう。また、読出し位置P3が終了位置P2に到達した場合(S110:YES)には、制御部111は、記憶領域A4に書き込まれたデータおよび圧縮辞書を含む圧縮ファイルを生成し、ファイルクローズ処理を行なう(S111)。S111で圧縮ファイルを生成すると、制御部111は、圧縮機能の呼び出し元に圧縮処理の完了通知を行ない、処理を終了する。
次に、図7に示すS104の参照処理について説明する。図12は、圧縮辞書の参照処理の手順例を示す。参照部114は、制御部111に参照処理を指示される(S500)と、読出し位置P3を始点とするデータ(処理対象のデータ)に基づき圧縮辞書内を探索する(S501)。S501については、圧縮辞書の形式と併せて後述する。次に、参照部114は、S501の圧縮辞書内の探索の結果に基づいて、処理対象のデータと合致するデータ(合致データ)が圧縮辞書に存在するか否かを判断する(S502)。圧縮辞書内に合致データが存在する場合(S502:YES)には、参照部114は、合致データに対応する圧縮符号を生成する(S503)。
圧縮辞書内に合致データが存在しない場合(S502:NO)には、参照部114は、記憶領域A1の読出し位置P3から、データを読み出す(S504)。S504で読み出すデータは、例えば文字などの単位の情報である。この単位は、図9において用いられたカウンタ値iや参照位置P6などに用いられる単位であり、S204やS211のインクリメントによる増分と同じデータ量である。
さらに、参照部114は、S503やS504の処理において、識別子を付与する。識別子は、圧縮符号であるか否かを示し、さらには圧縮符号の種類などを示す。識別子の詳細については、圧縮辞書の具体例をとともに後述する。
S503またはS504の処理を終えると、参照部114は、S503で生成された圧縮符号、または、S504で読み出されたデータを制御部111に返し、処理を終了する(S505)。
続いて、圧縮辞書の例ごとに圧縮処理の説明を行なう。
図13は、圧縮辞書テーブルT2を示す。圧縮辞書テーブルT2は、圧縮辞書の例である。圧縮辞書テーブルT2は、データ(文字情報)のカラムを含む。また、データ(文字情報)に固定長のデータ領域(例えばmビット)が確保され、圧縮辞書テーブルT2の何番目のデータであるかを示す番号を圧縮符号に用いられる。例えば、「horse」はm×1の位置に存在するので、「00000001」などの固定長の符号(登録番号)を圧縮符号とする。変形例として、圧縮符号のカラムを設け、登録番号を圧縮符号のカラムに格納することとしてもよい。また、他の変形例として、所定のアルゴリズムにより生成された可変長の圧縮符号が圧縮符号のカラムに格納されることとしてもよい。
図10に示すS306の処理により、データと圧縮符号のセットを含むレコードが登録される。登録されるデータは、図7のS105の参照処理により定められる最長一致のデータである。図13には単語、熟語およびタグなどが例示されているが、単語の一部分である文字情報なども圧縮辞書テーブルT2に登録される。また、圧縮辞書テーブルT2に登録されるデータとして文字情報が例示されるが、文字情報に限定されるものではない。
図13に示す圧縮辞書テーブルT2は、図10に示すS302の処理やS306の処理、さらには、図12に示すS501の処理によりアクセスされる。圧縮辞書テーブルT2へのアクセスには、記憶部13における位置情報が用いられる。圧縮辞書テーブルT2の位置情報は、開始位置P11、終了位置P12、参照位置P13および更新位置P14である。
図14は、圧縮辞書テーブルT2の参照処理の手順例を示す。圧縮辞書テーブルT2の参照処理は、例えば、図10に示すS302の処理や、図12に示すS501の処理で行なわれる。参照部114は、参照処理を指示される(S600)と、まず参照位置P13を開始位置P11にセットする(S601)。次に、参照部114は、対象のデータと、参照位置P13に示されるレコード内のデータとを照合する(S602)。対象のデータとは、図10に示すS302の処理では登録対象データであり、図12に示すS501の処理では、読出し位置P3から読み出されるデータ列である。参照部114は、S602の照合の結果、合致したか否かを判断する(S603)。
S602の照合の結果、合致しない場合(S603:NO)は、参照部114は、参照位置P13を更新する(S604)。例えば、更新後の参照位置P13は、更新前の参照位置P13が示すレコードの次のレコードを示す。さらに、参照部114は、参照位置P13が終了位置P12に到達したか否かを判断する(S605)。参照位置P13が終了位置P12に到達していない場合(S605:NO)には、参照部114は、S602の照合処理を再度行なう。参照位置P13が終了位置P12に到達した場合(S605:YES)には、参照部114は、対象のデータと合致するデータが圧縮辞書テーブルT2に存在しない旨を制御部111に返す(S606)。
S602の照合の結果、合致する場合(S603:YES)には、参照部114は、参照位置P13を制御部111に返す(S607)。参照部114は、S607またはS606の処理を行なうと、参照処理を終了する(S608)。
参照部114は、図14の参照処理の結果に応じた識別子を生成する。S606の処理で合致しない旨を返した場合には、参照部114は、例えば識別子「0」を図12に示すS504の処理における単位データに付与する。また、S607で参照位置P13を返した場合には、参照部114は、例えば識別子「1」を図12に示すS503の処理における圧縮符号に付与する。伸張する際には、識別子に基づいて圧縮辞書テーブルT2の参照を行なうか否かが判断される。
図15は、圧縮辞書テーブルT2の更新処理の手順例を示す。圧縮辞書テーブルT2の更新処理は、例えば、図10に示すS306の処理で行なわれる。更新処理を指示される(S700)と、更新部115は、登録対象データを更新位置P14のレコードに書き込む(S701)。登録対象データは、図10のS301で読み出されるデータである。
S701でデータが更新位置P14のレコードに登録されると、更新部115は、圧縮符号を生成する(S702)。先に説明したように、各データに対応する圧縮符号は、例えば、各データが何番目の位置に登録されたかを示す登録番号である。更新部115は、さらに、S702で生成された圧縮符号を更新位置P14のレコードに書き込む(S703)。S703の処理は、圧縮辞書テーブルT2に圧縮符号のカラムが設けられる場合に行なわれる処理であり、レコードの位置を圧縮符号として用いる場合には行なわれない。さらに、更新部115は、更新位置P14を更新して(S704)、更新処理を終了する(S705)。更新位置P14の更新は、参照位置の更新と同様に行なわれる。すなわち、更新後の更新位置P14が示すレコードは、更新前の更新位置P14が示すレコードの次のレコードである。
上述の例の圧縮辞書(圧縮辞書テーブルT2)では、圧縮辞書がテーブル構造であるため、伸張時には、圧縮符号に基づきテーブル内の探索が行なわれる。圧縮辞書テーブルT2内の位置を示す情報を圧縮符号とすると、圧縮辞書テーブルT2から必要な情報のみを読み出すことができるので、圧縮辞書テーブルT2の探索が高速化される。
図16は、圧縮辞書D1を用いた処理の概要を示す。図1に例示した圧縮辞書D1について説明する。
図10に示すS306の処理において、登録対象データは、記憶領域A3に順次記憶される。例えば、記憶領域A2の参照により、順に登録対象データ「about」、「horse」、「race」が得られたとすると、格納位置「0」〜「4」に「about」が格納され、さらに、格納位置「4」の次の「5」から「horse」が格納される。
図1に示す照合1の処理(例えば、図12の501の処理)を行なう場合には、参照部114は、記憶領域A1の読出し位置P3からのデータと記憶領域A3内に登録された各データとの照合を行なう。照合部114は、照合1により記憶領域A3内で最長一致であるデータを抽出し、そのデータの記憶領域A3内での格納位置(最長一致位置Pb)と一致長Lbとを圧縮符号として用いる。図16の例においては、記憶領域A1の読出し位置P3からのデータ列が「horse・・・」となっている。その場合に、記憶領域A3の格納位置「5」〜「9」が最長一致であれば、例えば、圧縮符号は、最長一致位置Pb「000000000101(2進数表現)」と一致長Lb「0101(2進数表現)」で示される。さらに、圧縮符号であることを示す識別子「1」が付与される。圧縮符号でなく、読出し位置P3のデータをそのまま用いる場合には、識別子「0」が付与される。図16に示す例においては、圧縮符号は17ビットである。文字情報「horse」に使用される文字コード系が8ビットのものであったとすると40ビット必要となるので、この例においては、データ量が半分以下に低減されたこととなる。
例えば、記憶領域A3内のアドレスのデータ長は、予め定められる。また、記憶領域A3もアドレスのデータ長に対応したデータサイズとなる。上述の例では、アドレスが12ビットで表現され、1バイトで表現される文字コードが用いられているので、記憶領域A3のデータサイズは4KB程度である。
図17は、圧縮辞書D1の参照処理の手順例を示す。図12に示すS501の処理が開始される(S800)と、参照部114は、参照位置P13、一致長Lb、最長一致位置Pbの初期値をセットする(S801)。例えば、参照位置P13の初期値は、記憶領域A3の開始位置P11にセットされる。例えば、一致長Lbの初期値は、0にセットされる。また、例えば、最長一致位置Pbの初期値は、P11よりも1少ない位置(P11−1)にセットされる。さらに、参照部114は、カウンタ値jをセット(j=0)する(S802)。
参照部114は、記憶領域A1の読出し位置P3からカウンタ値jずれた位置(P3+j)のデータと、記憶領域A3の参照位置P13からカウンタ値jずれた位置(P6+j)のデータとが一致するか否かの判定(S803)を行なう。
参照部114がS803の判定においてデータ同士が一致すると判定した場合(S803:YES)には、参照部114はカウンタ値jをインクリメントする(S804)。参照部114は、続いて、S804でインクリメントされたカウンタ値jが設定値Lmax以上であるか否か判定する(S805)。カウンタ値jが設定値Lmaxよりも小さい場合(S805:NO)には、S803の判定が再度行なわれる。上記のS803〜S805の処理により、読み出し位置P3からのデータ列R1と参照位置P13からのデータ列とについて、1つずつ合致しているか否かの判定が繰り返し行なわれる。カウンタ値jはデータ列R1との一致が確認されたデータの長さを示す。設定値Lmaxは予め設定された値であり、最長一致の上限値を示す。
S805の判定でカウンタ値jが設定値Lmax以上である場合(S805:YES)には、参照部112は、一致長Lbをカウンタ値jに更新し(S806)、最長一致位置Pbを参照位置P13に更新する(S807)。図17のS806とS807とに示す「=」は代入演算子である。また、S806とS807との処理順序は逆でもよい。S806およびS807で値を更新すると、参照部114は、値が代入された一致長Lbおよび最長一致位置Pbを制御部111に返す(S813)。
S803の判定でデータ同士が一致しないと判定された場合(S803:NO)には、参照部114は、カウンタ値jが一致長Lbよりも大きいか否か判定する(S808)。カウンタ値jが一致長Lbよりも大きい場合には(S808:YES)、参照部114は、一致長Lbをカウンタ値jに更新し(S809)、最長一致位置Pbを参照位置P13に更新する(S810)。図17のS809とS810とに示す「=」は代入演算子である。また、S809とS810との処理順序は逆でもよい。
カウンタ値jが一致長Lb以下である場合(S808:NO)か、S806およびS807の処理が行なわれた場合には、参照部114は、参照位置P13を更新する(S811)。S811において、更新後の参照位置P13は、更新前の参照位置が示すデータの次のデータを示す。参照部114は、さらに、参照位置P13が記憶領域A3の終了位置P2に達しているか否かを判定する(S812)。図17のS812における「=」は等号を示す。参照位置P13が終了位置P12に達していない場合(S812:NO)には、参照部114は、再度S802の処理によりカウンタ値jをリセットし、S811でインクリメントされた参照位置P13に基づいてS803の判定を行なう。S812の判定において、参照位置P13が終了位置P12に達したと判定される場合(S812:YES)には、参照部114は、一致長Lbおよび最長一致位置Pbを制御部111に返して、圧縮辞書D1への参照処理を終了する(S812)。
図12のS502に示す通り、参照部114は、図17に示す参照処理の結果に応じて圧縮辞書D1内に合致するデータが存在したか否かを判断する。この判断は、最長一致位置Pbおよび一致長Lbに応じて判断される。例えば、一致長Lbが所定値(例えば、2バイトや3バイト)よりも小さい場合には、圧縮辞書D1内に合致するデータが存在しなかったものとしてもよい。また、所定値を1に設定した場合にも、参照位置P13が初期値のまま(例えば、開始位置P11−1などが初期値に用いられる)である場合は、圧縮辞書D1内に合致するデータが存在しなかったものとしてもよい。
また、圧縮辞書D1は、図10に示すS302の処理においても、登録対象データを重複するデータが存在するか否かを判断するために参照される。この参照処理は、図12に示すS501の処理と異なり参照すべきデータの長さが定まっている。そのため、更新部115は、図17の手順例ではなく、図14の手順例に従って圧縮辞書D1の参照処理を行なう。以下に図14に沿って、更新部115による圧縮辞書D1の参照処理を説明する。
更新部15は、登録対象データに基づく圧縮辞書D1の参照処理を指示される(S600)と、圧縮辞書D1内の参照位置P13をセットする(S601)。S601において、更新部115は、参照位置P13を例えば圧縮辞書D1(記憶領域A3)の開始位置P11にセットする。
次に、更新部115は、記憶領域A3の参照位置P13に存在するデータと登録対象データとを照合する(S602)。更新部115は、さらに、S602の照合で登録対象データと合致したか否かを判断する(S603)。S603で合致しないと判断した場合(S603:NO)には、更新部115は、参照位置P13の更新を行なう(S604)。更新後の参照位置P13は、更新前の参照位置P13が示すデータの次のデータを示す。さらに、更新部115は、参照位置P13が記憶領域A3の終了位置P12に到達したか否かを判断する(S605)。S605の判断の結果、参照位置P13が終了位置P12に到達していない場合(S605:NO)には、更新部115は、再度S602の処理を行なう。一方、S605で参照位置P13が終了位置P12に到達した場合(S605:YES)には、更新部115は、登録対象データと合致するデータが圧縮辞書D1に存在しない旨を制御部111に返す(S606)。
一方、S603で合致したと判断した場合(S603:YES)には、更新部115は、参照位置P13を制御部111に返す(S607)。S606またはS607を行なうと、更新部115は処理を終了する(S608)。
図18は、圧縮辞書D1への登録対象データの登録処理の手順例を示す。図10に示すS306の処理で登録処理が開始される(S900)と、更新部115は、圧縮辞書D1(記憶領域A3)の更新位置P14から登録対象データを書き込む(S901)。次に、更新部115は、更新位置P14を更新する(S902)。更新位置P14は、登録対象データの長さ(一致長La)だけ移動する。更新115は、S902を終えると登録処理を終了する(S903)。例えば、更新位置P14の初期値はP11であり、図18の登録処理が行なわれるたびに更新位置P14は更新される。
上述の圧縮辞書D1を用いた場合には、圧縮辞書D1内に圧縮符号そのものは含まれない。そのため、圧縮辞書D1自体のデータサイズが抑制される。
参照テーブルT3を用いた処理の概要は、前述の通り、図2に示される。図2に示す記憶領域A3および参照テーブルT3が圧縮辞書D2として用いられる。
参照テーブルT3は複数のレコードを含み、それぞれのレコードは記憶領域A3内の格納位置とデータ長との組を含む。例えば、参照テーブルT3のそれぞれのレコードは、記憶領域A3内に登録される登録対象データそれぞれの格納位置とデータ長との組を含む。また、例えば、参照テーブルT3の記憶部13内での位置(開始位置P15、終了位置P16、参照位置P17および書込み位置P18)などを示す情報が、図8に示す位置情報テーブルT1と同様のテーブルにより記憶部13内で管理される。
図16に示す圧縮辞書D1においては、最長一致位置Pbおよび一致長Lbが得られた場合に、最長一致位置Pbと一致長Lbとにより圧縮符号が生成された。圧縮辞書D2では、図17に示す参照処理により得られる最長一致位置Pbと一致長Lbとに基づいて参照テーブルT3が探索され、対応する格納位置およびデータ長を含むレコードを示す登録番号(ポインタ)を圧縮符号に用いる。この場合、図2に示すように、記憶領域A3の参照により得られた圧縮符号であることを示す識別子「1」が用いられる。
また、図17に示す参照処理により最長一致位置Pbおよび一致長Lbが得られたにも関わらず、対応する格納位置およびデータ長のレコードが存在しないこともあり得る。その場合には、処理対象のデータに対して例えばハフマン符号化が行なわれ、生成されたハフマン符号に識別子「0」が付与される。
上述の通り、図2に示す圧縮辞書D2を用いる場合にも、図17に示す参照処理が行なわれる。図17に示す参照処理により得られる最長一致位置Pbおよび一致長Lbに基づいて、参照部114は、参照テーブルT3の参照処理を行なう。これにより、参照部114は、参照テーブルT3内のポインタを取得する。
図19は、参照テーブルT3の参照処理の手順例を示す。図17の参照処理でS813の処理が実行される(S1000)と、参照部114は、参照位置P17の初期値をセットする(S1001)。参照位置P17の初期値は、例えば参照テーブルT3の開始位置P15である。次に、参照部114は、最長一致位置Pbおよび一致長Lbと、参照テーブルT3内の参照位置P17のレコードとの照合処理を行なう(S1002)。
参照部114は、S1002の照合処理の結果、参照位置P17のレコードに記憶される格納位置と最長一致位置Pbとが合致したか否かを判断する(S1003)。さらに、参照位置P17のレコードに記憶される格納位置と最長一致位置Pbとが合致した場合(S1003:YES)には、参照部114は、さらに、参照位置P17のレコードに記憶されるデータ長と一致長Lbが合致したか否か判断する(S1004)。参照位置P17のレコードに記憶されるデータ長と一致長Lbが合致した場合(S1004:YES)に、参照部114は、参照位置P17を制御部111に返す(S1005)。この場合の圧縮符号は、参照位置P17(図2に示す登録番号)に基づいて生成される。
参照位置P17のレコードに記憶される格納位置およびデータ長のいずれかが合致しない場合(S1003,S1004:NO)には、更新部114は、参照位置P17を更新する(S1006)。更新部114は、参照位置P17を示す値をインクリメントし、次のレコードを示す値にする。さらに、参照部114は、参照位置P17が参照テーブルT3の終了位置P16に到達したか否かを判断する(S1007)。S1007における「=」は等号である。
参照位置P17が終了位置P16に到達しない場合(S1007:NO)には、参照部114は、S1002の処理を行なう。一方、参照位置P17が終了位置P16に到達した場合(S1007:YES)には、参照部114は、合致するレコードが存在しない旨を制御部111に返す(S1008)。
参照部114は、S1005もしくはS1008を実行すると、参照テーブルT3の参照処理を終了し、図12に示すフローに戻る。
図20は、登録対象データの登録処理の手順例を示す。圧縮辞書D1を用いる場合と圧縮辞書D2を用いる場合とで、登録処理は一部同じ手順含む。図10に示すS306の処理で登録処理が開始される(S1100)と、更新部115は、記憶領域A3の更新位置P14から登録対象データを書き込む(S1101)。次に、更新部115は、参照テーブルT3の書込み位置P18のレコードに、更新位置P14および一致長Laを書き込む(S1102)。更新部115は、書込み位置P18のレコードの格納位置に更新位置P14を書き込み、データ長に一致長Laを書き込む。次に、更新部115は、書込み位置P18を更新する(S1103)。更新後の書込み位置P18は、更新前の書込み位置P18が示すレコードの次のレコードを示す。書込み位置P18の初期値は、例えば、開始位置P15であり、図20の登録処理が行なわれるたびに書込み位置P18は更新される。
次に、更新部115は、更新位置P14を更新する(S1104)。更新位置P14は、登録対象データの長さ(一致長La)だけ移動する。更新部115は、S1104を終えると登録処理を終了する(S1105)。例えば、更新位置P14の初期値はP11であり、図20の登録処理が行なわれるたびに更新位置P14は更新される。
上述の圧縮辞書D2を用いた場合には、圧縮符号が登録番号に集約されるため、最長一致位置Pbおよび一致長Lbによる圧縮符号を用いるよりも圧縮率の向上が見込まれる。一方で、圧縮符号により最長一致位置Pbおよび一致長Lbの位置が示され、最長一致位置Pbおよび一致長Lbにより伸張用データの位置が示されるので、圧縮辞書D1内のデータとの照合による探索を含まない。そのため、伸張速度は劣化しにくい。
下記に、本実施形態に用いられるハードウェア及びソフトウェアについて説明する。
図22は、コンピュータ1のハードウェア構成例を示す。コンピュータ1は、例えば、プロセッサ301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、ドライブ装置304、記憶媒体305、入力インターフェース(I/F)306、入力デバイス307、出力インターフェース(I/F)308、出力デバイス309、通信インターフェース(I/F)310、SAN(Storage Area Network)インターフェース(I/F)311およびバス312などを含む。それぞれのハードウェアはバス312を介して接続されている。
RAM302は読み書き可能なメモリ装置であって、例えば、SRAM(Static RAM)やDRAM(Dynamic RAM)などの半導体メモリ、またはRAMでなくてもフラッシュメモリなどが用いられる。ROM303は、PROM(Programmable ROM)なども含む。ドライブ装置304は、記憶媒体305に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体305は、ドライブ装置304によって書き込まれた情報を記憶する。記憶媒体305は、例えば、ハードディスク、SSD(Solid State Drive)などのフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ1は、複数種類の記憶媒体それぞれについて、ドライブ装置304及び記憶媒体305を設ける。
入力インターフェース306は、入力デバイス307と接続されており、入力デバイス307から受信した入力信号をプロセッサ301に伝達する回路である。出力インターフェース308は、出力デバイス309と接続されており、出力デバイス309に、プロセッサ301の指示に応じた出力を実行させる回路である。通信インターフェース310はネットワーク3を介した通信の制御を行なう回路である。通信インターフェース310は、例えばネットワークインターフェースカード(NIC)などである。SANインターフェース311は、ストレージエリアネットワークによりコンピュータ1と接続された記憶装置との通信の制御を行なう回路である。SANインターフェース311は、例えばホストバスアダプタ(HBA)などである。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、コンピュータ1の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307及び出力デバイス309として用いられる。また、入力デバイス307及び出力デバイス309は、コンピュータ1と一体になっていてもよいし、コンピュータ1に含まれず、例えば、コンピュータ1に外部から接続する装置であってもよい。
例えば、プロセッサ301は、ROM303や記憶媒体305に記憶されたプログラムをRAM302に読み出し、読み出されたプログラムの手順に従って圧縮部11の処理または伸張部12の処理を行なう。その際にRAM302はプロセッサ301のワークエリアとして用いられる。記憶部13の機能は、ROM303および記憶媒体305がプログラムファイル(後述のアプリケーションプログラム24、ミドルウェア23およびOS22など)やデータファイル(圧縮対象のファイルF1、圧縮されたファイルF2など)を記憶し、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。プロセッサ301が読み出すプログラムについては、図22を用いて説明する。
図22は、コンピュータ1で動作するプログラムの構成例を示す。コンピュータ1において、図22に示すハードウェア群21(301〜312)の制御を行なうOS(オペレーティング・システム)22が動作する。OS22に従った手順でプロセッサ301が動作して、ハードウェア群21の制御・管理が行なわれることにより、アプリケーションプログラム24やミドルウェア23に従った処理がハードウェア群21で実行される。さらに、コンピュータ1において、ミドルウェア23またはアプリケーションプログラム24が、RAM302に読み出されてプロセッサ301により実行される。
プロセッサ301が、圧縮機能が呼び出された場合に、ミドルウェア23またはアプリケーションプログラム24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア群21を制御して)圧縮部11の機能が実現される。また、プロセッサ301が、伸張機能が呼び出された場合に、ミドルウェア23またはアプリケーションプログラム24の少なくとも一部に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア群21を制御して)伸張部12の機能が実現される。圧縮機能および伸張機能は、それぞれアプリケーションプログラム24自体に含まれてもよいし、アプリケーションプログラム24に従って呼び出されることで実行されるミドルウェア23の一部であってもよい。
アプリケーションプログラム24(またはミドルウェア23)の圧縮機能により得られる圧縮ファイルF2は、圧縮ファイルF2内の圧縮辞書D1に基づいて部分的に伸張可能である。圧縮ファイルF2の途中を伸張する場合には、伸張対象の部分までの圧縮データの伸張処理が抑制されるため、プロセッサ301の負荷が抑制される。また、伸張対象の圧縮データを部分的にRAM302上に展開するので、ワークエリアも削減される。
図23は、実施形態のシステムにおける装置の構成例を示す。図23のシステムは、コンピュータ1a、コンピュータ1b、基地局2およびネットワーク3を含む。コンピュータ1aは、無線または有線の少なくとも一方により、コンピュータ1bと接続されたネットワーク3に接続している。
図6に示す圧縮部11と伸張部12とは、図23に示すコンピュータ1aとコンピュータ1bとのいずれに含まれてもよい。コンピュータ1bが圧縮部11を含み、コンピュータ1aが伸張部12を含んでもよいし、コンピュータ1bが圧縮部11を含み、コンピュータ1aが伸張部12を含んでもよい。また、コンピュータ1aとコンピュータ1bとの双方が、圧縮部11および伸張部12を備えてもよい。
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
圧縮処理の対象は、ファイル内のデータ以外にも、システムから出力される監視メッセージなどでもよい。例えば、バッファに順次格納される監視メッセージを上述の圧縮処理により圧縮し、ログファイルとして格納するなどの処理が行なわれる。また、例えば、データベース内のページ単位に圧縮が行なわれてもよいし、複数のページをまとめた単位で圧縮が行なわれてもよい。
また、上述の圧縮処理の対象となるデータは、上述の通り、文字情報に限定されるものでない。数値のみの情報であってもよいし、画像・音声などのデータに対して上述の圧縮処理を用いてもよい。例えば、音声合成により得られるデータを多量に含むファイルなどは、データ内に繰り返しを多く含むため動的辞書により圧縮率が向上することが見込まれる。当然その一部のみが利用される場合には、部分伸張により余分な伸張処理が抑制される。また、固定カメラにより撮影された動画像についても各フレームの画像が似たものになることから繰り返しが多く含まれる。そのため、上述の圧縮処理を適用することにより、文書データや音声データと同様の効果を得ることができる。
1 コンピュータ
1a コンピュータ
1b コンピュータ
2 基地局
11 圧縮部
12 伸張部
13 記憶部
111 制御部
112 参照部
113 更新部
114 参照部
115 更新部
1a コンピュータ
1b コンピュータ
2 基地局
11 圧縮部
12 伸張部
13 記憶部
111 制御部
112 参照部
113 更新部
114 参照部
115 更新部
一態様によれば、圧縮プログラムは、コンピュータに、メモリに第1記憶領域および第2記憶領域を設定し、圧縮対象ファイル内の圧縮対象データと前記第1記憶領域内のデータとを比較すること、前記圧縮対象データと前記第1記憶領域内のデータとの間に所定の一致性が検出される場合、前記第1記憶領域内のデータを示す識別子を用いて前記圧縮対象データのための第1圧縮符号を生成し、前記圧縮対象データと前記第1記憶領域内のデータとの間に前記所定の一致性が検出されない場合、前記圧縮対象データと前記第2記憶領域内のデータとを比較することであって、前記圧縮対象データは前記圧縮対象データと前記第1記憶領域内のデータとの比較の後に前記第2記憶領域に移動され、前記圧縮対象データと前記第2記憶領域内のデータとの間に所定の一致性が検出される場合、前記圧縮対象データを該圧縮対象データを示す識別子に関連付けて前記第1記憶領域に格納する、処理を実行させる。
一態様によれば、圧縮装置が、メモリと、前記メモリに第1記憶領域および第2記憶領域を設定する制御部と、圧縮対象ファイル内の圧縮対象データと前記第1記憶領域内のデータとを比較する第1参照部と、前記圧縮対象データと前記第1記憶領域内のデータとの間に所定の一致性が検出される場合、前記第1記憶領域内のデータを示す識別子を用いて前記圧縮対象データのための第1圧縮符号を生成する第1生成部と、前記圧縮対象データと前記第1記憶領域内のデータとの間に前記所定の一致性が検出されない場合、前記圧縮対象データと前記第2記憶領域内のデータとを比較する第2参照部と、前記圧縮対象データと前記第1記憶領域内のデータとの比較の後に前記圧縮対象データを前記第2記憶領域に移動する第1更新部と、前記圧縮対象データと前記第2記憶領域内のデータとの間に所定の一致性が検出される場合、前記圧縮対象データを該圧縮対象データを示す識別子に関連付けて前記第1記憶領域に格納する第2更新部と、を含む。
一態様によれば、伸張プログラムは、コンピュータに、圧縮ファイルから辞書を読み出し、前記圧縮ファイルから圧縮データを順次読み出すことであって、前記圧縮ファイルは、メモリに第1記憶領域および第2記憶領域を設定し、圧縮対象ファイル内の圧縮対象データと前記第1記憶領域内のデータとを比較すること、前記圧縮対象データと前記第1記憶領域内のデータとの間に所定の一致性が検出される場合、前記第1記憶領域内のデータを示す識別子を用いて前記圧縮対象データのための第1圧縮符号を生成し、前記圧縮対象データと前記第1記憶領域内のデータとの間に前記所定の一致性が検出されない場合、前記圧縮対象データと前記第2記憶領域内のデータとを比較することであって、前記圧縮対象データは前記圧縮対象データと前記第1記憶領域内のデータとの比較の後に前記第2記憶領域に移動され、前記圧縮対象データと前記第2記憶領域内のデータとの間に所定の一致性が検出される場合、前記圧縮対象データを該圧縮対象データを示す識別子に関連付けて前記第1記憶領域に格納し且つ前記識別子を用いて前記圧縮対象データのための第2圧縮符号を生成し、前記圧縮対象データと前記第2記憶領域内のデータとの間に所定の一致性が検出されない場合、前記第1圧縮符号および前記第2圧縮符号の符号化処理と異なる種類の符号化処理によって前記圧縮対象データのための第3圧縮符号を生成し、前記第1圧縮符号、前記第2圧縮符号、前記第3圧縮符号および前記識別子と関連付けられた前記第1記憶領域内のデータを含む前記辞書に基づいて生成されたものであり、前記読み出した圧縮データが前記第1圧縮符号であると判定される場合、前記第1圧縮符号によって示される第1識別子に応じた前記辞書内のデータに基づいて第1伸張データを生成し、前記読み出した圧縮データが前記第2圧縮符号であると判定される場合、前記第2圧縮符号によって示される第2識別子に応じた前記辞書内のデータに基づいて第2伸張データを生成し、前記読み出した圧縮データが前記第3圧縮符号であると判定される場合、前記符号化処理に対応する復号処理に基づいて前記読み出した圧縮データから第3伸張データを生成する、処理を実行させる。
一態様によれば、伸張装置が、圧縮ファイルから辞書を読み出すとともに圧縮データを順次読み出す制御部であって、前記圧縮ファイルは、メモリに第1記憶領域および第2記憶領域を設定し、圧縮対象ファイル内の圧縮対象データと前記第1記憶領域内のデータとを比較すること、前記圧縮対象データと前記第1記憶領域内のデータとの間に所定の一致性が検出される場合、前記第1記憶領域内のデータを示す識別子を用いて前記圧縮対象データのための第1圧縮符号を生成し、前記圧縮対象データと前記第1記憶領域内のデータとの間に前記所定の一致性が検出されない場合、前記圧縮対象データと前記第2記憶領域内のデータとを比較することであって、前記圧縮対象データは前記圧縮対象データと前記第1記憶領域内のデータとの比較の後に前記第2記憶領域に移動され、前記圧縮対象データと前記第2記憶領域内のデータとの間に所定の一致性が検出される場合、前記圧縮対象データを該圧縮対象データを示す識別子に関連付けて前記第1記憶領域に格納し且つ前記識別子を用いて前記圧縮対象データのための第2圧縮符号を生成し、前記圧縮対象データと前記第2記憶領域内のデータとの間に所定の一致性が検出されない場合、前記第1圧縮符号および前記第2圧縮符号の符号化処理と異なる種類の符号化処理によって前記圧縮対象データのための第3圧縮符号を生成し、前記第1圧縮符号、前記第2圧縮符号、前記第3圧縮符号および前記識別子と関連付けられた前記第1記憶領域内のデータを含む辞書に基づいて生成されたものであり、前記読み出した圧縮データが前記第1圧縮符号であると判定される場合、前記第1圧縮符号によって示される第1識別子に応じた前記辞書内のデータに基づいて第1伸張データを生成する第1生成部と、前記読み出した圧縮データが前記第2圧縮符号であると判定される場合、前記第2圧縮符号によって示される第2識別子に応じた前記辞書内のデータに基づいて第2伸張データを生成する第2生成部と、前記読み出した圧縮データが前記第3圧縮符号であると判定される場合、前記符号化処理に対応する復号処理に基づいて前記読み出した圧縮データから第3伸張データを生成する第3生成部と、を含む。
図1に示す圧縮処理によれば、最長一致データ列の探索により抽出された最長一致データ列が圧縮辞書に登録される。さらに、圧縮辞書に登録されたデータ列に対応する圧縮符号が変化しないので、圧縮符号をファイルF1内のどの位置においても共通して用いることができる。これにより、LZ77のスライド窓へのデータの復元の必要性から解放され、ブロックのアドレス情報と組み合わせることで、部分的な伸張が可能となる。また、参照テーブルT3を用いることにより、最長一致データ列の格納位置および長さという2種類の情報ではなく、登録番号という1種類情報により圧縮符号が構成されるため、圧縮効率の向上を図ることができる。
図4は、伸張処理の流れの一例を示す。伸張処理のワークエリアとして、メモリに記憶領域B1、記憶領域B3および記憶領域B4が設けられる。記憶領域B1にロードされた圧縮ファイルF2のコンテンツ部分から順次圧縮データが読み出され、読み出された処理対象の圧縮データに基づいて伸張データの生成が行なわれる。この際、圧縮データに含まれる識別子に応じた生成処理が行なわれる。生成された伸張データは順次記憶領域B4に格納され、記憶領域B4に格納された伸張データに基づいて伸張ファイルF3が生成される。また、記憶領域B3には、圧縮ファイルF2に含まれる圧縮辞書がロードされる。記憶領域B1および記憶領域B3は、それぞれ符号化部および辞書部と呼ばれる。以下に、図4に示す圧縮データd1〜d3のそれぞれの例について伸張処理を説明する。
処理対象の圧縮データが圧縮データd2である(記憶領域B1の読出し位置に圧縮データd2が存在する)場合に、まず圧縮データd2の識別子が判断される。圧縮データd2の識別子は圧縮辞書による圧縮を示す(「1」である)ので、圧縮データd2内の圧縮符号に基づいて圧縮辞書の参照が行なわれる。具体的には、圧縮辞書に含まれる参照テーブルT3から圧縮符号に対応する記憶領域B3内の位置および長さの指定が読み出され、記憶領域B3から指定に応じたデータが読み出される。読み出されたデータが伸張データとなる。圧縮データd2内の圧縮符号は、圧縮辞書内の「horse」を示すので、伸張データとして「horse」が生成される。
処理対象の圧縮データが圧縮データd3である(記憶領域B1の読出し位置に圧縮データd3が存在する)場合に、まず圧縮データd3の識別子が判断される。圧縮データd3の識別子は圧縮辞書による圧縮を示す(「1」である)ので、圧縮データd3内の圧縮符号に基づいて圧縮辞書の参照が行なわれる。具体的には、圧縮辞書に含まれる参照テーブルT3から圧縮符号に対応する記憶領域B3内の位置および長さの指定が読み出され、記憶領域B3から指定に応じたデータが読み出される。読み出されたデータが伸張データとなる。圧縮データd3内の圧縮符号は、圧縮辞書内の「horse」を示すので、伸張データとして「horse」が生成される。
さらに、参照部114は、S503やS504の処理において、識別子を付与する。識別子は、圧縮符号であるか否かを示し、さらには圧縮符号の種類などを示す。識別子の詳細については、圧縮辞書の具体例とともに後述する。
図21は、コンピュータ1のハードウェア構成例を示す。コンピュータ1は、例えば、プロセッサ301、RAM(Random Access Memory)302、ROM(Read Only Memory)303、ドライブ装置304、記憶媒体305、入力インターフェース(I/F)306、入力デバイス307、出力インターフェース(I/F)308、出力デバイス309、通信インターフェース(I/F)310、SAN(Storage Area Network)インターフェース(I/F)311およびバス312などを含む。それぞれのハードウェアはバス312を介して接続されている。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力デバイス307は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、コンピュータ1の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307及び出力デバイス309として用いられる。また、入力デバイス307及び出力デバイス309は、コンピュータ1と一体になっていてもよいし、コンピュータ1に含まれず、例えば、コンピュータ1に外部から接続する装置であってもよい。
図22は、コンピュータ1で動作するプログラムの構成例を示す。コンピュータ1において、図21に示すハードウェア群21(301〜312)の制御を行なうOS(オペレーティング・システム)22が動作する。OS22に従った手順でプロセッサ301が動作して、ハードウェア群21の制御・管理が行なわれることにより、アプリケーションプログラム24やミドルウェア23に従った処理がハードウェア群21で実行される。さらに、コンピュータ1において、ミドルウェア23またはアプリケーションプログラム24が、RAM302に読み出されてプロセッサ301により実行される。
図6に示す圧縮部11と伸張部12とは、図23に示すコンピュータ1aとコンピュータ1bとのいずれに含まれてもよい。コンピュータ1bが圧縮部11を含み、コンピュータ1aが伸張部12を含んでもよいし、コンピュータ1aが圧縮部11を含み、コンピュータ1bが伸張部12を含んでもよい。また、コンピュータ1aとコンピュータ1bとの双方が、圧縮部11および伸張部12を備えてもよい。
Claims (14)
- コンピュータに、
ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書の生成を行ない、
前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう、
処理を実行させることを特徴とする圧縮プログラム。 - 前記コンピュータに、さらに、
前記圧縮処理により得られる圧縮データと、前記圧縮辞書とを含む圧縮ファイルを生成する、
処理を実行させることを特徴とする請求項1に記載の圧縮プログラム。 - 前記圧縮データは、前記圧縮辞書を用いた伸張処理により伸張される、
ことを特徴とする請求項2に記載の圧縮プログラム。 - 前記圧縮辞書は、データと圧縮符号との組み合わせを複数含み、
前記圧縮辞書に、前記ファイルから読み出されるデータに基づいた組み合わせが順次追加され、
前記ファイルの圧縮処理は、順次組み合わせが追加される圧縮辞書に基づいて行われる、
ことを特徴とする請求項1〜3のいずれか1項に記載の圧縮プログラム。 - 前記ファイル内に複数回出現するデータは、前記ファイル内のデータ同士の照合により抽出される、
ことを特徴とする請求項1〜4のいずれか1項に記載の圧縮プログラム。 - 前記ファイル内に複数回出現するデータは、前記ファイル内のデータを変換アルゴリズムにより変換して得られた変換データ同士の照合により抽出される、
ことを特徴とする請求項1〜4のいずれか1項に記載の圧縮プログラム。 - 前記複数回出現するデータは、2以上の文字情報を含むデータ列である、
ことを特徴とする請求項1〜6のいずれか1項に記載の圧縮プログラム。 - 前記圧縮辞書は、前記複数回出現するデータを含み、
前記圧縮符号は、前記圧縮辞書における前記複数回出現するデータの格納位置およびデータ長を含む、
ことを特徴とする請求項1〜7のいずれか1項に記載の圧縮プログラム。 - 前記圧縮辞書は、前記複数回出現するデータと前記圧縮符号とを関連付けた情報を含む、
ことを特徴とする請求項1〜7のいずれか1項に記載の圧縮プログラム。 - 前記圧縮辞書は、前記複数回出現するデータを含み、
前記圧縮符号は、前記圧縮辞書における前記複数回出現するデータの格納位置およびデータ長を格納する位置を示す、
ことを特徴とする請求項1〜7のいずれか1項に記載の圧縮プログラム。 - コンピュータに、
ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書の生成を行ない、
前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう、
ことを実行させることを特徴とする圧縮方法。 - ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書を生成する生成部と、
前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう処理部と、
を含むことを特徴とする圧縮装置。 - 圧縮装置と伸張装置とを含むシステムであって、
前記圧縮装置が、
ファイル内に複数回出現するデータに対し圧縮符号を割り当てた圧縮辞書を生成する生成部と、
前記圧縮辞書に基づいて前記ファイルの圧縮処理を行なう処理部と、
前記圧縮処理により得られた圧縮データと前記圧縮辞書とを前記伸張装置に送信する送信部と、を含み、
前記伸張装置が、
前記圧縮装置から受信した圧縮データを、前記圧縮辞書に基づいて伸張する伸張部、
を含むことを特徴とするシステム。 - コンピュータに、
ファイル内のデータに基づいて、静的な圧縮符号の割り当て対象を動的に生成し、
生成された前記割り当て対象に圧縮符号を割り当てた圧縮辞書に基づいて、前記ファイルに対して圧縮処理を行なう、
処理を実行させることを特徴とする圧縮プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/008143 WO2014097359A1 (ja) | 2012-12-19 | 2012-12-19 | 圧縮プログラム、圧縮方法、圧縮装置およびシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6032292B2 JP6032292B2 (ja) | 2016-11-24 |
JPWO2014097359A1 true JPWO2014097359A1 (ja) | 2017-01-12 |
Family
ID=50977749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014552759A Expired - Fee Related JP6032292B2 (ja) | 2012-12-19 | 2012-12-19 | 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9391636B2 (ja) |
JP (1) | JP6032292B2 (ja) |
WO (1) | WO2014097359A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014097359A1 (ja) * | 2012-12-19 | 2014-06-26 | 富士通株式会社 | 圧縮プログラム、圧縮方法、圧縮装置およびシステム |
JP6686639B2 (ja) | 2016-03-31 | 2020-04-22 | 富士通株式会社 | 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法 |
JP6841074B2 (ja) * | 2017-02-16 | 2021-03-10 | 富士通株式会社 | 情報処理装置、データ圧縮方法及びデータ圧縮プログラム |
JP7003443B2 (ja) * | 2017-05-16 | 2022-01-20 | 富士通株式会社 | 符号化プログラム、符号化装置および符号化方法 |
US20190377804A1 (en) * | 2018-06-06 | 2019-12-12 | Yingquan Wu | Data compression algorithm |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0546358A (ja) * | 1991-07-15 | 1993-02-26 | Sharp Corp | テキストデータの圧縮方法 |
JPH0764765A (ja) * | 1993-08-31 | 1995-03-10 | Nec Corp | データ圧縮装置及びデータ復元装置 |
JPH08116269A (ja) * | 1994-10-17 | 1996-05-07 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
US5635932A (en) * | 1994-10-17 | 1997-06-03 | Fujitsu Limited | Lempel-ziv compression with expulsion of dictionary buffer matches |
JP2005269184A (ja) * | 2004-03-18 | 2005-09-29 | Seiko Epson Corp | データ圧縮方法及びプログラムならびにデータ復元方法及び装置 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2729424B2 (ja) | 1991-10-31 | 1998-03-18 | シャープ株式会社 | テキスト圧縮装置およびテキスト圧縮用辞書の自動構築装置 |
JPH05233312A (ja) | 1992-02-19 | 1993-09-10 | Fujitsu Ltd | 遷移規則表生成方式 |
JP3241788B2 (ja) | 1992-02-28 | 2001-12-25 | 富士通株式会社 | データ圧縮方式 |
JPH0628149A (ja) | 1992-07-10 | 1994-02-04 | Fujitsu Ltd | 複数種類データのデータ圧縮方法 |
JP3449338B2 (ja) | 1993-06-22 | 2003-09-22 | セイコーエプソン株式会社 | データ圧縮方法、データ復元方法及び情報処理装置 |
JPH07124561A (ja) | 1993-11-01 | 1995-05-16 | Brother Ind Ltd | 電解水生成機 |
JP3346626B2 (ja) | 1993-11-30 | 2002-11-18 | 京セラ株式会社 | データ圧縮装置 |
JP2693914B2 (ja) | 1994-08-30 | 1997-12-24 | 北海道日本電気ソフトウェア株式会社 | 検索システム |
US5612693A (en) | 1994-12-14 | 1997-03-18 | International Business Machines Corporation | Sliding window data compression using a toroidal bit shift register |
GB2301252A (en) * | 1995-05-23 | 1996-11-27 | Ibm | Run length data compression |
JP3499671B2 (ja) | 1996-02-09 | 2004-02-23 | 富士通株式会社 | データ圧縮装置及びデータ復元装置 |
US5861827A (en) * | 1996-07-24 | 1999-01-19 | Unisys Corporation | Data compression and decompression system with immediate dictionary updating interleaved with string search |
US6292115B1 (en) * | 1997-12-02 | 2001-09-18 | Hughes Electronics Corporation | Data compression for use with a communications channel |
JP4242970B2 (ja) * | 1998-07-09 | 2009-03-25 | 富士通株式会社 | データ圧縮方法及びデータ圧縮装置 |
US6188333B1 (en) * | 1999-08-12 | 2001-02-13 | Unisys Corporation | LZW data compression apparatus and method using look-ahead mathematical run processing |
US6307488B1 (en) * | 2000-05-04 | 2001-10-23 | Unisys Corporation | LZW data compression and decompression apparatus and method using grouped data characters to reduce dictionary accesses |
US6426711B1 (en) * | 2001-05-14 | 2002-07-30 | Unisys Corporation | Character table implemented data compression method and apparatus |
JP3913004B2 (ja) * | 2001-05-28 | 2007-05-09 | キヤノン株式会社 | データ圧縮方法及び装置及びコンピュータプログラム及び記憶媒体 |
US6707400B2 (en) * | 2001-08-02 | 2004-03-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for fast longest match search |
US6466144B1 (en) * | 2001-11-30 | 2002-10-15 | Unisys Corporation | Data decompressor for use with a data compressor implemented with limited length character tables and compact string codes |
US7114027B2 (en) * | 2003-12-03 | 2006-09-26 | International Business Machines Corporation | Content addressable data storage and compression for computer memory |
US7117204B2 (en) * | 2003-12-03 | 2006-10-03 | International Business Machines Corporation | Transparent content addressable data storage and compression for a file system |
EP1821414B1 (en) * | 2004-12-07 | 2016-06-22 | Nippon Telegraph And Telephone Corporation | Information compression-coding device, method thereof, program thereof and recording medium storing the program |
GB0513432D0 (en) * | 2005-06-30 | 2005-08-10 | Nokia Corp | Signal message compression |
US7817630B2 (en) * | 2006-12-18 | 2010-10-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages |
WO2014097359A1 (ja) * | 2012-12-19 | 2014-06-26 | 富士通株式会社 | 圧縮プログラム、圧縮方法、圧縮装置およびシステム |
-
2012
- 2012-12-19 WO PCT/JP2012/008143 patent/WO2014097359A1/ja active Application Filing
- 2012-12-19 JP JP2014552759A patent/JP6032292B2/ja not_active Expired - Fee Related
-
2015
- 2015-06-17 US US14/741,936 patent/US9391636B2/en not_active Expired - Fee Related
-
2016
- 2016-06-13 US US15/180,659 patent/US9577666B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0546358A (ja) * | 1991-07-15 | 1993-02-26 | Sharp Corp | テキストデータの圧縮方法 |
JPH0764765A (ja) * | 1993-08-31 | 1995-03-10 | Nec Corp | データ圧縮装置及びデータ復元装置 |
JPH08116269A (ja) * | 1994-10-17 | 1996-05-07 | Fujitsu Ltd | データ処理装置及びデータ処理方法 |
US5635932A (en) * | 1994-10-17 | 1997-06-03 | Fujitsu Limited | Lempel-ziv compression with expulsion of dictionary buffer matches |
JP2005269184A (ja) * | 2004-03-18 | 2005-09-29 | Seiko Epson Corp | データ圧縮方法及びプログラムならびにデータ復元方法及び装置 |
Non-Patent Citations (2)
Title |
---|
岩田 賢一 他: ""部分的な復号を可能にするZiv−Lempel符号の提案"", 電子情報通信学会技術研究報告, vol. 第94巻,第483号, JPN6013013702, 30 January 1995 (1995-01-30), JP, pages 49 - 54, ISSN: 0003404532 * |
野口 雄太 他: ""複数辞書を用いたデータ圧縮法とその誤り回復"", 電子情報通信学会技術研究報告, vol. 第106巻,第402号, JPN6013013700, 1 December 2006 (2006-12-01), JP, pages 35 - 40, ISSN: 0003404531 * |
Also Published As
Publication number | Publication date |
---|---|
US20160294411A1 (en) | 2016-10-06 |
US9577666B2 (en) | 2017-02-21 |
US20150288382A1 (en) | 2015-10-08 |
JP6032292B2 (ja) | 2016-11-24 |
US9391636B2 (en) | 2016-07-12 |
WO2014097359A1 (ja) | 2014-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6742692B2 (ja) | 符号化プログラムおよび伸長プログラム | |
CN105009067B (zh) | 管理对存储数据单元的操作 | |
CN107305586B (zh) | 索引生成方法、索引生成装置及搜索方法 | |
JP6531398B2 (ja) | プログラム | |
JP6648620B2 (ja) | 符号化プログラム、符号化装置および符号化方法 | |
JP6032292B2 (ja) | 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置 | |
JP6527462B2 (ja) | 圧縮装置、圧縮方法、記録媒体および伸張装置 | |
JP6641857B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
JP6662169B2 (ja) | 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置 | |
JP6536243B2 (ja) | 符号化プログラム、符号化装置、符号化方法、照合プログラム、照合装置および照合方法 | |
JP6834327B2 (ja) | 符号化プログラム、符号化装置および符号化方法 | |
US9479195B2 (en) | Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device | |
US11055328B2 (en) | Non-transitory computer readable medium, encode device, and encode method | |
JP6252489B2 (ja) | 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム | |
WO2014030180A1 (ja) | 格納プログラム、格納方法、格納装置、伸張プログラム、伸張方法及び伸張装置 | |
US9219497B2 (en) | Compression device, compression method, and recording medium | |
US8463759B2 (en) | Method and system for compressing data | |
JP6032291B2 (ja) | 圧縮プログラム、圧縮装置、伸張プログラム、伸張装置およびシステム | |
JP2013101470A (ja) | データベース圧縮装置 | |
JP7210130B2 (ja) | 符号化プログラム、符号化方法および符号化装置 | |
US20150193462A1 (en) | Control method and control device | |
JP2017195628A (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置 | |
US20160210304A1 (en) | Computer-readable recording medium, information processing apparatus, and conversion process method | |
JP2016171589A (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160927 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161010 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6032292 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |