JP2012054835A - 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置 - Google Patents

圧縮装置、圧縮方法、圧縮プログラムおよび復元装置 Download PDF

Info

Publication number
JP2012054835A
JP2012054835A JP2010196990A JP2010196990A JP2012054835A JP 2012054835 A JP2012054835 A JP 2012054835A JP 2010196990 A JP2010196990 A JP 2010196990A JP 2010196990 A JP2010196990 A JP 2010196990A JP 2012054835 A JP2012054835 A JP 2012054835A
Authority
JP
Japan
Prior art keywords
data
character string
string
data string
character
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
JP2010196990A
Other languages
English (en)
Other versions
JP5585317B2 (ja
Inventor
Hiroya Inakoshi
宏弥 稲越
Tatsuya Asai
達哉 浅井
Shinichiro Tako
真一郎 多湖
Seishi Okamoto
青史 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010196990A priority Critical patent/JP5585317B2/ja
Publication of JP2012054835A publication Critical patent/JP2012054835A/ja
Application granted granted Critical
Publication of JP5585317B2 publication Critical patent/JP5585317B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】効率よく圧縮を行うこと。
【解決手段】データ圧縮復元装置100が、文字列Sを変換する場合には、原点以降の文字を置換対象とし、置換対象となる文字の領域を制限することで計算コストを削減する。また、データ圧縮復元装置100は、置換した文字の履歴をすべて置換履歴表に格納することはせず、原点、オフセット、戻り距離のみを置換履歴表に格納する。さらに、置換履歴表の原点の情報は、オフセットと戻り距離との関係から一意に導くことができるため、データ圧縮復元装置100は、原点の情報を取り除いた置換履歴表を、記憶部140に記憶することで、記憶部140が記憶すべきデータ量を削減する。
【選択図】図1

Description

本発明は、圧縮装置、圧縮方法、圧縮プログラムおよび復元装置に関する。
従来、データ転送におけるトラフィックやデータベースに記憶するデータ量を削減することを目的として、様々なデータ圧縮技術が利用されている。例えば、このデータ圧縮技術には、LZ77(Lempel-Ziv 77)と呼ばれるものがある。
このLZ77によって文字列を圧縮する場合には、注目位置以降の文字列と一致する文字列を、注目位置以前の文字列から検出する。そして、LZ77では、注目位置以降の文字列を、注目位置以前の一致する文字列までの相対位置と文字列の長さに置き換え、更に、続く一文字を出力する。LZ77では、このような処理を注目位置を移動させつつ順次実行することで文字列を圧縮する。
図20は、従来のLZ77を説明するための図である。図20では、LZ77によって、文字列S=ababdacbadabadbbcbdcを圧縮する場合について説明する。LZ77では、上記のように、注目位置以降の文字列を、注目位置以前の一致する文字列の出現位置と文字列の長さとの組に置き換える。なお、一致する文字列が存在しない場合には、出現位置と文字列の長さとの組をそれぞれ0に設定する。
まず、LZ77では、文字列Sの先頭となる0番目の文字aの位置を注目位置とする。この場合には、注目位置以前に一致する文字列が存在しないため、文字列Sの0番目の文字aを(0,0)aとする(ステップ10)。LZ77では、文字列Sの1番目の文字bの位置を注目位置とする。この場合には、注目位置以前に一致する文字列が存在しないため、文字列Sの0番目から1番目までの文字列を(0,0)a(0,0)bとする(ステップS11)。
LZ77では、文字列Sの2番目の文字aを注目位置とする。この場合には、注目位置以降の文字列abと一致する文字列が、注目位置以前の文字列に存在する。このため、LZ77では、注目位置以降の文字列abを、注目位置以前の一致する文字列までの相対位置2と、文字列の長さ2に置き換える。このため、文字列Sの0番目から3番目までの文字列を(0,0)a(0,0)b(2,2)とする。また、4番目の文字dを追加して、(0,0)a(0,0)b(2,2)dとする(ステップS12)。
LZ77では、文字列Sの5番目の文字aを注目位置とする。この場合には、注目位置以降の文字aと一致する文字列が、注目位置以前の文字列に存在する。このため、LZ77では、注目位置以降の文字aを、注目位置以前の一致する文字列までの相対位置3と、文字列の長さ1に置き換える。このため、文字列Sの0番目から5番目までの文字列を(0,0)a(0,0)b(2,2)d(3,1)とする。また、6番目の文字cを追加して、(0,0)a(0,0)b(2,2)d(3,1)cとする(ステップS13)。
LZ77では、文字列Sの7番目の文字bを注目位置とする。この場合には、注目位置以降の文字列baと一致する文字列が、注目位置以前の文字列に存在する。このため、LZ77では、注目位置以降の文字列baを、注目位置以前の一致する文字列までの相対位置6と、文字列の長さ2に置き換える。このため、文字列Sの0番目から8番目までの文字列を(0,0)a(0,0)b(2,2)d(3,1)c(6,2)とする。また、9番目の文字dを追加して、(0,0)a(0,0)b(2,2)d(3,1)c(6,2)dとする(ステップS14)。
LZ77では、文字列Sの10番目の文字aを注目位置とする。この場合には、注目位置以降の文字列abaと一致する文字列が、注目位置以前の文字列に存在する。このため、LZ77では、注目位置以降の文字列abaを、注目位置以前の一致する文字列までの相対位置10と、文字列の長さ3に置き換える。このため、文字列Sの0番目から12番目までの文字列を(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)とする。また、13番目の文字dを追加して(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)dとする(ステップS15)。
LZ77では、文字列Sの14番目の文字bを注目位置とする。この場合には、注目位置以降の文字bと一致する文字が、注目位置以前の文字列に存在する。このため、LZ77では、注目位置以降の文字bを、注目位置以前の一致する文字列までの相対位置3と、文字の長さ1に置き換える。このため、文字列Sの0番目から14番目までの文字列は(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)d(3,1)となる。また、15番目の文字bを追加して(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)d(3,1)bとする(ステップS16)。
LZ77では、文字列Sの16番目の文字cを注目位置とする。この場合には、注目位置以降の文字列cbと一致する文字が、注目位置以降の文字列に存在する。このため、LZ77では、注目位置以降の文字列cbを、注目位置以前の一致する文字列までの相対位置10と、文字列の長さ2に置き換える。このため、文字列Sの0番目から17番目までの文字列は(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)d(3,1)b(10,2)となる。また、18番目の文字dを追加して(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)d(3,1)b(10,2)dとする(ステップS17)。
LZ77では、文字列Sの19番目の文字cを注目位置とする。この場合には、注目位置以降の文字cと一致する文字が、注目位置以前の文字列に存在する。このため、LZ77では、注目位置以降の文字列cを、注目位置以前の一致する文字列までの相対位置3と、文字の長さ1に置き換える。このため、文字列Sの0番目から19番目までの文字列は(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)d(3,1)b(10,2)d(3,1)となる(ステップS18)。
ステップS10〜S18に示したように、文字列SにLZ77を適用することで、文字列Sは、LZ77(S)に圧縮される(ステップS19)。1文字の長さを1とすると、圧縮前の文字列Sの長さは「19」である。これに対して、圧縮後の文字列LZ77(S)の長さは、相対位置と長さとの組を1文字とすると、「17」である。このため、図20に示した文字列SにLZ77を適用することで、データの長さを2だけ削減することができる。
ところで、圧縮対象となる文字列の文字の並び順がLZ77の圧縮方法に対して都合の悪い並び順となっている場合には、LZ77で圧縮するとかえってデータ量が増えてしまう場合があった。例えば、文字列S=ababbaをLZ77によって圧縮すると、文字列Sは(0,0)a(0,0)b(2,2)b(2,1)となる。圧縮前の文字列Sの長さは6であり、圧縮後のデータの長さは7となるため、圧縮前の長さよりも、圧縮後の長さの方が長くなっている。
このため、圧縮対象となる文字列を変換して、LZ77の圧縮率を高めることが求められている。上記のようにLZ77は、注目位置以降の文字列と一致する文字列を、注目位置以前の文字列から検出するものである。このため、注目位置以降の文字列と注目位置以前の文字列とがなるべく多く一致するように、文字列を変換しておけば、LZ77の圧縮率を高めることができる。
例えば、文字列S=ababbaの4番目の文字bと5番目の文字aとを置換することで文字列Sを変換し、文字列T=abababとする。そして、文字列TをLZ77によって圧縮すると、文字列Tは(0,0)a(0,0)b(2,4)となる。圧縮前の文字列Tの長さは6であり、圧縮後のデータの長さは5となる。したがって、圧縮前の長さよりも、圧縮後の長さの方が短くなり、圧縮率を高めることができる。
昌達K’z,「圧縮アルゴリズム」,ソフトバンクパブリッシング
しかしながら、変換後の文字列Tは圧縮時には都合が良いものの、解凍時には元の文字列Sに復元する必要がある。このため、文字列Tから文字列Sを復元するための変換関数πを新たに記憶する必要がある。この変換関数πは記憶コストが大きいため、文字列を変換して圧縮率を高めたとしても、変換関数πを含めた総合的なデータ量が、圧縮前のデータ量よりも大きくなってしまうという問題があった。
文字列S=ababbaを文字列T=abababに変換した場合の変換関数πの一例を示す。図21は、変換関数πの一例を示す図である。図21において、nとπ(n)は、変換前の文字列の先頭からの位置と、変換後の文字列の先頭からの位置との関係を示している。変換関数πを基にして、文字列Tを文字列Sに逆変換する。例えば、n=1とπ(n)=4とが対応しているため、変換前の文字列の1番目の文字は、変換後の文字列の先頭から4番目の文字となっていることを示す。このため、文字列Tの4番目の文字と、1番目の文字と置換すればよいことになる。
また、文字列Sを圧縮時の都合の良い文字列Tに変換する場合には、あらゆる文字を置換候補としている。このため、同一の文字が複数回置換される場合があり、計算コストが大きいという問題があった。
開示の技術は、上記に鑑みてなされたものであって、効率よくデータ列を圧縮することができる圧縮装置、圧縮方法および圧縮プログラム等を提供することを目的とする。
開示の圧縮装置は、圧縮対象のデータ列に対して予め設定された基準位置から注目位置を前記圧縮対象のデータ列の所定の方向に向かって移動させる。また、開示の圧縮装置は、前記基準位置と前記注目位置の間の第1データ列に、前記注目位置から前記注目位置の移動方向に連なる第2データ列と一致する第3データ列が存在するか否かを判定する。また、開示の圧縮装置は、第1データ列の中に第3データ列が存在する場合には、第3データ列の次のデータである第4データを特定し、該第4データを、前記圧縮対象のデータ列の第2データ列以降から検出する。また、開示の圧縮装置は、前記第2データ列以降から検出をした前記第4データと、前記第2データ列の次のデータである第5データとを入れ替える。また、開示の圧縮装置は、入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離を履歴テーブルに格納する。
開示の圧縮装置の一つの態様によれば、効率よくデータ列を圧縮することができるという効果を奏する。
図1は、本実施例にかかるデータ圧縮復元装置の構成を示す図である。 図2は、置換履歴表のデータ構造の一例を示す図(1)である。 図3は、文字列変換部の処理の概要を説明するための図である。 図4は、各種用語を説明するための図である。 図5は、文字列変換部の処理を詳細に説明するための図(1)である。 図6は、文字列変換部の処理を詳細に説明するための図(2)である。 図7は、文字列変換部の処理を詳細に説明するための図(3)である。 図8は、文字列変換部の処理を詳細に説明するための図(4)である。 図9は、文字列変換部の処理を詳細に説明するための図(5)である。 図10は、文字列変換部が一時的に保持する置換履歴表のデータ構造の一例を示す図(1)である。 図11は、文字列変換部が一時的に保持する置換履歴表のデータ構造の一例を示す図(2)である。 図12は、置換履歴表のデータ構造の一例を示す図(2)である。 図13は、原点を復元する処理を説明するための図である。 図14は、文字列逆変換部の処理を詳細に説明するための図(1)である。 図15は、文字列逆変換部の処理を詳細に説明するための図(2)である。 図16は、本実施例にかかる文字列変換部の処理手順を示すフローチャートである。 図17は、本実施例にかかる文字列逆変換部の処理手順を示すフローチャートである。 図18は、置換履歴表のデータ構造の一例を示す図(3)である。 図19は、圧縮復元プログラムを実行するコンピュータの一例を示す図である。 図20は、従来のLZ77を説明するための図である。 図21は、変換係数πの一例を示す図である。
以下に、本願の開示する圧縮装置、圧縮方法、圧縮プログラムおよび復元装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例にかかるデータ圧縮復元装置100の構成の一例について説明する。図1は、本実施例にかかるデータ圧縮復元装置の構成を示す図である。図1に示すように、このデータ圧縮復元装置100は、入力部110、出力部120、入出力制御部130、記憶部140、圧縮部150、復元部160を有する。
入力部110は、各種のデータを入力する入力装置である。この入力部110は、例えばキーボードやマウス、タッチパネルに対応する。出力部120は、圧縮部150、復元部160の処理結果等を出力する出力装置である。この出力部120は、例えば、ディスプレイなどに対応する。入出力制御部130は、入力部110、出力部120、記憶部140、圧縮部150、復元部160のデータの入出力を制御する処理部である。
記憶部140は、入力ファイル141、置換履歴表142、出力ファイル143を記憶する記憶部である。記憶部140は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
入力ファイル141は、複数の入力文字列を含むファイルである。例えば、入力文字列Sは、下記によって表される文字列となる。
S=ababadcbadabadbbcbdc
データ圧縮復元装置100は、この入力文字列Sを、LZ77の圧縮に都合の良い文字列に変換した後に、LZ77の圧縮方式に基づいて文字列を圧縮する。
置換履歴表142は、LZ77の圧縮に都合の良い文字列に変換した文字列を、変換前の文字列Sに戻す場合に利用するデータを保持するテーブルである。図2は、置換履歴表のデータ構造の一例を示す図(1)である。図2に示すように、この置換履歴表142は、オフセットと戻り距離とを対応付けて保持する。置換履歴表142に関する説明の詳細は後述する。
出力ファイル143は、LZ77の圧縮方式により圧縮した文字列を含むファイルである。例えば、LZ77の圧縮方式により圧縮した文字列LZ77(S)は、下記によって表されるデータとなる。
LZ77(S)=(0,0)a(0,0)b(2,3)d(0,0)c(4,7)b(14、3)d(9,1)
圧縮部150は、入力ファイル141に含まれる入力文字列を圧縮する処理部である。圧縮部150は、文字列変換部151と、LZ符号化部152とを有する。
文字列変換部151は、LZ77の圧縮方式にとって都合のよい並び順となるように、入力文字列Sの文字の順序を変換する処理部である。すなわち、文字列変換部151は、文字列内で同じ並びの文字列が繰り返し現れるように、入力文字列Sの文字の順序を変換する。図3は、文字列変換部の処理の概要を説明するための図である。図3の上段の文字列Sは変換対象となる文字列であり、図3の下段の文字列S’は文字列Sを変換した文字列である。
ここでは説明の便宜上、文字列Sの先頭を0番目とし、注目位置の文字を7番目の文字bとする。また、以下の説明では、注目位置の文字よりも入力文字列Sの先頭側の文字列を、注目位置より「前」と表現する。また、注目位置の文字よりも入力文字列Sの末尾側の文字列を、注目位置より「後」と表現する。
文字列変換部151は、注目位置より前の文字列と、注目位置より後の文字列とを比較して、一致する文字列を検索し、一致する文字列が長くなるように、注目位置より前の文字を置換する。図3に示す例では、注目位置より前の実線部1Aの文字列「bad」と、注目位置より後の鎖線部1Bの文字列「bad」とが一致している。
ここで、一致する文字列を長くするためには、実線部1Aの文字列「bad」の次の文字「c」にあわせて、鎖線部1Bの文字列「bad」の次の文字を「c」となるように、文字列Sの順序を変換すればよい。文字列変換部151が文字列Sの順序を変換する場合には、鎖線部1Bの文字列「bad」以降の文字列から、文字「c」を検出し、検出した文字「c」と鎖線部1Bの文字列「bad」の次の文字「a」と置換する。
図3に示す例では、文字列Sの16番目に文字「c」が存在するため、文字列変換部151は、文字列Sの16番目の文字「c」と、10番目の文字「a」とを置換する。このように、文字列変換部151が、文字列Sを置換すると、文字列S’となる。文字列S’において、実線部2Aの文字列「badcbad」と、鎖線部2Bの文字列「badcbad」とが一致している。
文字列Sと文字列S’とで一致する文字列の数を比較すると、文字列Sでは、3文字であったものが、文字列S’では7文字となっている。このため、文字列変換部151が、文字列Sを変換することで、文字列Sは文字列S’に変換され、LZ77の圧縮方式にとって都合のよい並び順となる。
続いて、文字列変換部151の処理を詳細に説明する前に、この処理を説明する場合に利用する用語について説明する。図4は、各種用語を説明するための図である。スライドバッファは、入力文字列Sの一部を格納するバッファである。文字列変換部151は、スライドバッファ内の入力文字列Sの変換が終了するたびに、未変換の入力文字列Sをスライドバッファに順次格納する。
原点oは、基準となる文字の位置を示すものである。原点は、基準位置の一例である。注目位置pは、図3の注目位置に対応するものであり、原点oから末尾に向かって移動する。オフセットmは、原点oから置換対象となる文字までの相対距離である。戻り距離nは、置換元の文字から置換先の文字までの移動距離に対応するものである。例えば、図4に示す太文字aとbとを置換する場合には、オフセットmが「6」となり、戻り距離nが「2」となる。
次に、文字列変換部151の処理を詳細に説明する。図5〜図9は、文字列変換部の処理を詳細に説明するための図である。また、図10、図11は、文字列変換部が一時的に保持する置換履歴表のデータ構造の一例を示す図である。ここでは説明の便宜上、入力文字列Sが、全てスライドバッファ内に格納できるものとする。また、入力文字列SをS=ababdacbadabadbbcbdcとする。
図5について説明する。文字列変換部151は、入力文字列Sをスライドバッファに格納する。また、文字列変換部151は、原点oおよび注目位置pを入力文字列Sの先頭の文字「a」に設定する。この場合には、原点o=0となる(ステップS20)。また、文字列変換部151は、注目位置pより前に、文字列が存在しないため、注目位置pを一つ進めて1文字目の「b」に設定する(ステップS21)。
文字変換処理部151は、注目位置pより後には、文字「b」が現れていない。このため、文字変換処理部151は、注目位置pを一つ進めて2文字目の「a」に設定する(ステップS22)。
図6の説明に移行する。文字列変換部151は、注目位置pより後の文字列と、注目位置pより前の文字列とを比較すると、鎖線部1bの文字列「ab」と、実線部1aの文字列「ab」とが一致する。文字列変換部151は、文字列「ab」を最長一致部とする(ステップS23)。ここで、最長一致部とは、注目位置pより前の文字列と一致する、注目位置pより後の文字列に対応するものである。
文字列変換部151は、鎖線部1bの最長一致部「ab」より後の文字列から、実線部1aの最長一致部「ab」の次の文字「a」を検出する。文字列変換部151は、オフセットm=5となる位置で、文字「a」を検出する。文字列変換部151は、検出した文字「a」の置換対象となる文字は、鎖線部1bの文字列「ab」の次の文字「d」となるため、戻り距離n=2となる(ステップS24)。
文字列変換部151は、ステップS24の処理が終了した時点で、原点o「0」、オフセットm「5」、戻り距離n「2」を対応付けて、置換履歴表に格納する。図10に、ステップS24が終了した時点での置換履歴表のデータの内容を示す。
図6の説明に戻る。文字列変換部151は、文字列Sの5文字目の「a」と4文字目の「d」とを置換する。これにより、注目位置pより後の文字列と、注目位置pよりも前の文字列において「aba」が一致するため、最長一致部は鎖線部2bとなる。文字列変換部151は、最長一致部2bの次の文字「d」に、原点oと注目位置pとを進める。この場合には、原点o=5となる。また、文字列変換部151は、注目位置pを更に一つ後にすすめて6文字目の「c」に設定する(ステップS25)。
図7の説明に移行する。文字列変換部151は、注目位置pよりも前に、文字「c」が現れていないため、注目位置pを一つ進めて7文字目の「b」に設定する(ステップS26)。
図8の説明に移行する。文字列変換部151は、注目位置pより後の文字列と、注目位置pより前の文字列とを比較すると、鎖線部3bの文字列「bad」と、実線部3aの文字列「bad」とが一致する。文字列変換部151は、文字列「bad」を最長一致部とする(ステップS27)。
文字列変換部151は、鎖線部3bの最長一致部「bad」より後の文字から、実線部3aの最長一致部「bad」の次の文字「c」を検出する。文字列変換部151は、オフセットm=11となる位置で、文字「c」を検出する。文字列変換部151は、検出した文字「a」の置換対象となる文字は、鎖線部3bの文字列「bad」の次の文字「a」となるため、戻り距離n=7となる(ステップS28)。
文字列変換部151は、ステップS28の処理が終了した時点で、原点o「5」、オフセットm「11」、戻り距離n「7」を対応付けて、置換履歴表に格納する。図11に、ステップS28が終了した時点での置換履歴表のデータの内容を示す。
図8の説明に戻る。文字列変換部151は、文字列Sの16文字目の「c」と10文字目の「a」とを置換する。これにより、注目位置pより後の文字列と、注目位置pより前の文字列において「badcbad」が一致するため、最長一致部は鎖線部4bとなる。文字列変換部151は、最長一致部4bの次の文字「b」に、原点oと注目位置pとを進める。この場合には、原点o=14となる。また、文字列変換部151は、注目位置pを更に一つ後にすすめて15文字目の「b」に設定する(ステップS29)。
図9の説明に以降する。文字列変換部151は、注目位置pより後の文字列と、注目位置pより前の文字列とを比較すると、鎖線部5bの文字列「bab」と、実線部5aの文字列「bab」とが一致する。文字列変換部151は、文字列「bab」を最長一致部とする(ステップS30)。
文字列変換部151は、鎖線部5bの最長一致部「bab」より後の文字列から、実線部5aの最長一致部「bab」の次の文字「a」を検出する。しかし、該当文字を検出する前に、スライドバッファの末尾に到達する。文字列変換部151は、スライドバッファに格納された文字列を、LZ符号化部152に出力する。また、図11に示した置換履歴表の原点の情報を取り除いたものを、置換履歴表142に格納する(ステップS31)。
上記のように、文字列変換部151がステップS20〜S31の処理を実行することで、入力文字列Sは、入力文字列Tに変換される。文字列変換部151は、入力文字列TをLZ符号化部152に出力する。
また、文字列変換部151は、置換履歴表をそのままの状態で記憶部140に記憶することはしない。置換履歴表の原点の情報は、オフセットと戻り距離との関係から一意に導くことができる。このため、文字列変換部151は、原点の情報を取り除いた置換履歴表を、記憶部140に記憶することで、記憶部140が記憶すべきデータ量を削減する。なお、文字列変換部151は、置換履歴表のオフセットの数値および戻り距離の数値を1バイトに詰め込む。つまり、置換履歴表の1行あたりのデータ量は1バイトとなる。
また、文字変換部151が、文字列Sを変換する場合には、原点以降の文字を置換対象とし、置換対象となる文字の領域を制限している。上記のように原点は、置換を行うたびに、最長一致部以降の文字の位置に再設定されるため、一度置換された文字が再度置換されることを防止することができ、計算コストを削減することができる。
図1の説明に戻る。LZ符号化部152は、LZ77の圧縮方式に基づいて、入力文字列Tを圧縮する処理部である。LZ符号化部152がおこなうLZ77の圧縮方式は、図20を用いて説明した従来のものと同一である。LZ符号化部152は、圧縮した入力文字列Tを出力文字列として、出力ファイル143に格納する。
例えば、LZ符号化部152は、入力文字列T=ababadcbadcbadbbabdcをLZの圧縮方式に基づいて圧縮する。これにより、入力文字列Tは、LZ77(T)=(0,0)a(0,0)b(2,3)d(0,0)c(4,7)b(14,3)d(9,1)となる。
復元部160は、出力ファイル143から入力ファイル141を復元する処理部である。復元部160は、LZ復号化部161と、文字列逆変換部162とを有する。
LZ復号化部161は、LZ77の復号方式に基づいて、出力文字列を復号する処理部である。LZ復号化部161がおこなうLZ77の復号方式は、従来のものと同一である。例えば、LZ復号化部161は、出力文字列を先頭の文字から辿っていき、相対位置と文字列の長さとの関係に基づいて、元の文字列に復号する。
例えば、LZ復号化部161は、LZ77(T)=(0,0)a(0,0)b(2,3)d(0,0)c(4,7)b(14,3)d(9,1)を、相対位置と文字列との関係から復号すると、文字列T=ababadcbadcbadbbabdcとなる。LZ復号化部161は、復号した文字列を文字列逆変換部162に出力する。
文字列逆変換部162は、LZ77の圧縮方式にとって都合がよいように変換された文字列を元の文字列に逆変換する処理部である。以下において、文字列逆変換部162の処理を具体的に説明する。文字列逆変換部162は、置換履歴表142を記憶部140から読み込み、置換履歴表142の原点の情報を復元した後に、文字列を逆変換する。なお、ここでは説明の便宜上、逆変換対象となる文字列TをT=aaccbbaaaaaaaabbaaaaとする。また、置換履歴表142のデータ構造を図12に示すものとする。図12は、置換履歴表のデータ構造の一例を示す図(2)である。
文字列逆変換部162が原点の情報を復元する処理について説明する。図13は、原点を復元する処理を説明するための図である。ここでは、図12に示した置換履歴表の原点を復元する場合について説明する。文字列逆変換部162は、n−1行目の原点に、n−1行目のオフセットの値を加算することで、n行目の原点の値を求める。ただし、1行目の原点の値を0とする。図13に示す例では、1行目の原点の値は0となる。2行目の原点の値は8となる。3行目の原点の値は9となる。
文字列逆変換部162が文字列を逆変換する処理について説明する。文字列逆変換部162は、原点を復元した置換履歴表を最後の行から一行ずつ読み出し、置換する2つの文字を判定する。置換する一方の文字は、文字列の先頭から「原点o+オフセットm」の位置に対応する文字となる。置換するもう一方の文字は、文字列の先頭から「原点o+オフセットm−戻り距離n+1」の位置に対応する文字となる。文字列逆変換部162は、置換する2つの文字を判定した後に、各文字を置換する。文字列逆変換部162は、上記処理を繰り返し実行することで、文字列を逆変換する。文字列逆変換部162は、逆変換した文字列を出力部120に出力しても良いし、記憶部140に記憶しても良い。
次に、文字列逆変換部162の処理を詳細に説明する。図14、図15は、文字列逆変換部の処理を詳細に説明するための図である。また、原点を復元した置換履歴表は、図13の右側に示すものとする。
図14について説明する。文字列逆変換部162は、変換対象となる文字列T=aaccbbaaaaaaaabbaaaaをバッファに読み込む(ステップS40)。文字列逆変換部162は、置換履歴表の3行目のデータを読み込み、置換する2つの文字を判定する。置換履歴表の3行目のデータは、原点o=9、オフセットm=7、戻り距離n=2となる。このため、置換する文字は、先頭から16番目の文字「a」と15番目の文字「b」となる。文字列逆変換部162は、先頭から16番目の文字「a」と15番目の文字「b」とを置換する(ステップS41)。
図15の説明に移行する。文字列逆変換部162は、置換履歴表の2行目のデータを読み込み、置換する2つの文字を判定する。置換履歴表の2行目のデータは、原点o=8、オフセットm=1、戻り距離n=7となる。このため、置換する文字は、先頭から9番目の文字「c」と3番目の文字「a」となる。文字列逆変換部162は、先頭から9番目の文字「c」と3番目の文字「a」とを置換する(ステップS42)。
文字列逆変換部162は、置換履歴表の1行目のデータを読み込み、置換する2つの文字を判定する。置換履歴行の1行目のデータは、原点o=0、オフセットm=8、戻り距離n=4となる。このため、置換する文字は、先頭から8番目の文字「b」と5番目の文字「a」となる。文字列逆変換部162は、先頭から8番目の文字「b」と5番目の文字「a」とを置換する(ステップS43)。ステップS43が終了した時点で、置換履歴表に対応する置換が全て終了する。
上記のように、文字列逆変換部162がステップS40〜S43の処理を実行することで、文字列T=aaccbbaaaaaaaabbaaaaは、文字列T=aacabaaabcaaaababaaaに逆変換される。この逆変換された文字列は、LZ77の圧縮方式にあわせて変換される前の文字列に対応する。
ところで、図1に示した圧縮部150および復元部160は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。または、圧縮部150および復元部160は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路に対応する。
次に、図1に示した文字列変換部151の処理手順について説明する。図16は、本実施例にかかる文字列変換部の処理手順を示すフローチャートである。図16に示す処理は、例えば、記憶部140に入力ファイル141が格納されたことを契機として実行される。
図16に示すように、文字列変換部151は、入力文字列をスライドバッファに読み込み(ステップS101)、初期化処理を行う(ステップS102)。ステップS102の初期化処理において、文字列変換部151は、原点o、注目位置pをスライドバッファの先頭にセットする。
文字列変換部151は、スライドバッファに含まれる文字列のうち、注目位置から始まる文字列と、注目位置より前の文字列とを比較して最長一致部を検索する(ステップS103)。文字列変換部151は、最長一致部が存在しない場合には(ステップS104,No)、注目位置を1つ進め(ステップS105)、ステップS103に移行する。
一方、文字列変換部151は、最長一致部が存在する場合には(ステップS104,Yes)、注目位置より前の最長一致部の直後の文字を文字yに設定する。また、文字列変換部151は、注目位置から始まる最長一致の最後の文字を文字xとする(ステップS106)。文字列変換部151は、注目位置より始まる最長一致部に対応する文字列よりも後に存在する文字yと一致する文字y’を検索する(ステップS107)。
文字列変換部151は、文字y’を見つける前にスライドバッファの末尾に到着していない場合には(ステップS108,No)、原点から文字y’までの長さをオフセットmに設定する(ステップS109)。
文字列変換部151は、文字yから文字xまでの戻り距離をnに設定し、文字yと文字xとを置換する(ステップS110)。文字列置換部151は、原点o、オフセットm、戻り距離nを対応付けて置換履歴表に登録する(ステップS111)。
文字列変換部151は、最長一致部を再計算し、原点oを最長一致部の直後に設定する(ステップS112)。文字列変換部151は、注目位置を原点oの一つ前に設定し(ステップS113)、ステップS103に移行する。
ところで、ステップS108において、文字列変換部151は、文字列y’を見つける前にスライドバッファの末尾に到達した場合には(ステップS108,Yes)、スライドバッファを更新する(ステップS114)。ステップS114において、文字列変換部151は、入力ファイルからスライドバッファに文字列を詰め込む。
文字列変換部151は、入力ファイルの末尾に到達していない場合には(ステップS115,No)、ステップS103に移行する。一方、文字列変換部151は、入力ファイルの末尾に到達した場合には(ステップS115,Yes)、スライドバッファ中の文字列を全て出力ファイルに書き出し(ステップS116)、処理を終了する。
次に、図1に示した文字列逆変換部162の処理手順について説明する。図17は、本実施例にかかる文字列逆変換部の処理手順を示すフローチャートである。例えば、図17に示す処理は、記憶部140に、置換履歴表142と出力ファイル143とが格納されたことを契機に実行される。
図17に示すように、文字列逆変換部162は、置換履歴表142を読み込み(ステップS201)、置換履歴表142の原点を復元する(ステップS202)。文字列逆変換部162は、出力文字列Tをバッファに読み込み(ステップS203)、置換履歴表の末尾から、未選択の行を選択する(ステップS204)。
文字列逆変換部162は、置換履歴表の行を全て選択した場合には(ステップS205,Yes)、文字列Tを出力し(ステップS206)、処理を終了する。一方、文字列逆変換部162は、置換履歴表の行を全て選択していない場合には(ステップS205,No)、出力文字列TにおいてT[o+m]とT[o+m−n+1]とを置換し(ステップS207)、ステップS204に移行する。ここで、oは原点、mはオフセット、nは戻り値に対応する。
次に、入力文字列SをそのままLZ77の圧縮方式により圧縮した場合のバイト数と、圧縮部150が、入力文字列Sを入力文字列Tに置換した後に圧縮した場合のバイト数との比較結果を示す。なお、入力文字列Sを入力文字列Tに置換した後に圧縮した場合のバイト数には、入力文字列Tから入力文字列Sに逆変換する場合に必要となる置換履歴表のバイト数を含める。また、1文字を1バイト、圧縮後の数値の組を1バイト、置換履歴表の各数値を1バイトとする。
入力文字列SをS=ababdacbadabadbbcbdcとする。従来のように、この入力文字列SをLZ77で圧縮すると、LZ77(S)=(0,0)a(0,0)b(2,2)d(3,1)c(6,2)d(10,3)d(3,1)b(10,2)d(3,1)となる。このため、LZ77(S)のデータ量は「17」バイトとなる。
入力文字列SをLZ77の圧縮方式にとって都合のよい並び順に変換した文字列Tを、入力文字列T=ababadcbadcbadbbabdcとする。また、文字列Tを文字列Sに逆変換するための置換履歴表を図18に示す。図18は、置換履歴表のデータ構造の一例を示す図(3)である。入力文字列TをLZ77で圧縮すると、LZ77(T)=(0,0)a(0,0)b(2,3)d(0,0)c(4,7)b(14,3)d(9,1)となる。このため、LZ77(T)のデータ量は13バイトとなる。また、図18に示した置換履歴表のデータ量は、原点の情報を省くと、2バイトとなる。このため、LZ77(T)のデータ量と置換履歴表のデータ量とを加算すると、「15」バイトとなる。
したがって、圧縮部150は、置換履歴表のデータ量を合わせた場合であっても、従来技術の圧縮方法により圧縮された文字列のデータ量と比較して、データ量を削減することができる。上記に示した例では、圧縮部150は、従来技術と比較して、2バイト削減することができる。
次に、本実施例にかかるデータ圧縮復元装置100の効果について説明する。データ圧縮復元装置100は、図21に示した従来技術のように、置換した文字の履歴をすべて置換履歴表に格納することはせず、原点、オフセット、戻り距離のみを置換履歴表に格納する。さらに、置換履歴表の原点の情報は、オフセットと戻り距離との関係から一意に導くことができるため、データ圧縮復元装置100は、原点の情報を取り除いた置換履歴表を、記憶部140に記憶することで、記憶部140が記憶すべきデータ量を削減する。具体的に文字列の長さがnの場合には、従来技術のメモリコストはO(n)である。これに対して、本発明では、スライドバッファを利用しているため、メモリコストはO(1)となり、従来技術と比較してメモリコストを削減することができる。
また、データ圧縮復元装置100は、文字列Sを変換する場合には、原点以降の文字を置換対象とし、置換対象となる文字の領域を制限している。上記のように原点は、置換を行うたびに、最長一致部以降の文字の位置に再設定されるため、一度置換された文字が再度置換されることを防止することができ、計算コストを削減することができる。具体的に文字列の長さがnの場合には、従来技術の計算コストはO(nlogn)である。これに対して本発明の計算コストはO(n)となり、従来技術と比較して計算コストを削減することができる。
また、データ圧縮復元装置100は、圧縮された文字列を復元する場合に、置換履歴表142の原点を復元し、復元した原点と、オフセット、戻り距離に基づいて、圧縮された文字列を復号化し、逆変換する。このため、置換履歴表にオフセットと戻り距離のみが記憶されている場合でも、正確に文字列を復元することができる。
ところで、図1に示したデータ圧縮復元装置100の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、データ圧縮復元装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図1に示した圧縮部150および復元部160を同一の装置が有している必要はない。別々の装置が、圧縮部150、復元部160をそれぞれ備えていても構わない。
また、データ圧縮復元装置100が圧縮を行う場合には、判定部と、検出部と、置換処理部と、基準位置移動部とを備えていればよい。判定部は、圧縮対象のデータ列に対して基準位置を設定し、当該基準位置からデータ列の末尾に向かって注目位置を移動させる。そして、判定部は、注目位置から始まる末尾側の第1データ列と、注目位置よりも先頭側に存在する第2データ列とを比較して、第1データ列と一致するデータ列が第2データ列に存在するか否かを判定する。
検出部は、第1データ列と一致するデータ列が第2データ列に存在する場合には、一致するデータ列の次のデータと同一の第1データを、注目位置よりも末尾側のデータ列から検出する。置換処理部は、第1データ列の次のデータを示す第2データと、第1データとを入れ替え、第2データが移動した距離と、第2データと基準位置との距離とを履歴テーブルに格納する。基準位置移動部は、置換処理部により入れ替えられた第2データよりも末尾側に基準位置を移動させる。この判定部、検出部、置換処理部、基準位置移動部は、図1の文字列変換部151に対応する。
また、データ圧縮復元装置100が復元を行う場合には、基準位置算出部と、データ判定部と、復元部とを備えていればよい。基準位置算出部は、履歴テーブルに含まれる第2データと基準位置との距離を基にして、基準位置を算出する。データ判定部は、基準位置と、履歴テーブルに含まれる第2データが移動した距離と、第2データと基準位置との距離とを基にして、入れ替えられた第1データと第2データとの組を判定する。復元部は、データ判定部によって判定された同一の組の第1データと第2データとを入れ替えることで、データ列を復元する。この基準位置算出部と、データ判定部と、復元部は、図1の文字列逆変換部162に対応する。
また、上述の実施例で説明したデータ圧縮復元装置100等の処理は、あらかじめ用意されたプログラムを各種のコンピュータで実行することによって実現することもできる。ここで、図19を用いて、上記の実施例で説明したデータ圧縮復元装置100による処理と同様の機能を実現する圧縮復元プログラムを実行するコンピュータの一例を説明する。図19は、圧縮復元プログラムを実行するコンピュータの一例を示す図である。
図19に示すように、データ圧縮復元装置100として機能するコンピュータ200は、各種演算処理を実行するCPU(Central Processing Unit)201と、ユーザからのデータの入力を受け付ける入力装置202と、モニタ203を有する。
また、コンピュータ200は、図19に示すように、記憶媒体からプログラム等を読取る媒体読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM(Random Access Memory)206と、ハードディスク装置207を有する。そして、各装置201〜207は、バス208に接続される。
ハードディスク装置207には、上述したデータ圧縮復元装置100の機能と同様の機能を発揮する圧縮プログラム207aと、復元プログラム207bと、各種データ207cを記憶する。各種データは、図1に示した入力ファイル141、置換履歴表142、出力ファイル143等に対応する。なお、圧縮プログラム207aと、復元プログラム207bと、各種データ207cを適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
そして、CPU201が、圧縮プログラム207aをハードディスク装置207から読み出してRAM206に展開することにより、圧縮プログラム207aは圧縮プロセス206aとして機能する。この圧縮プロセス206aは、図1に示した圧縮部150に対応する。
CPU201が、復元プログラム207bをハードディスク装置207から読み出してRAM206に展開することにより、復元プログラム207bは復元プロセス206bとして機能する。この復元プロセス206bは、図1に示した復元部160に対応する。また、CPU201は、ハードディスク装置207から各種データ207cを読み出して、RAM206に格納する。
圧縮プロセス206aは、各種データ206cに含まれる入力ファイルに対して圧縮処理を実行する。復元プロセス206bは、各種データ206cに含まれる圧縮済みの文字列を、置換履歴表に基づいて復元する。
なお、圧縮プログラム207aおよび復元プログラム207bについては、必ずしも最初からハードディスク装置207に記憶させておく必要はない。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200がこれらから各プログラムを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)圧縮対象のデータ列に対して予め設定された基準位置から注目位置を前記圧縮対象のデータ列の所定の方向に向かって移動させ、前記基準位置と前記注目位置の間の第1データ列に、前記注目位置から前記注目位置の移動方向に連なる第2データ列と一致する第3データ列が存在するか否かを判定する判定部と、
第1データ列の中に第3データ列が存在する場合には、第3データ列の次のデータである第4データを特定し、該第4データを、前記圧縮対象のデータ列の第2データ列以降から検出する検出部と、
前記検出部が前記第2データ列以降から検出をした前記第4データと、前記第2データ列の次のデータである第5データとを入れ替え、入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離を履歴テーブルに格納する置換処理部と
を備えたことを特徴とする圧縮装置。
(付記2)前記置換処理部により入れ替えられた前記第4データの次の文字の位置に前記基準位置を移動させる基準位置移動部を更に備えたことを特徴とする付記1に記載の圧縮装置。
(付記3)圧縮装置が、
圧縮対象のデータ列に対して予め設定された基準位置から注目位置を前記圧縮対象のデータ列の所定の方向に向かって移動させ、前記基準位置と前記注目位置の間の第1データ列に、前記注目位置から前記注目位置の移動方向に連なる第2データ列と一致する第3データ列が存在するか否かを判定する判定ステップと、
第1データ列の中に第3データ列が存在する場合には、第3データ列の次のデータである第4データを特定し、該第4データを、前記圧縮対象のデータ列の第2データ列以降から検出する検出ステップと、
前記検出ステップが前記第2データ列以降から検出をした前記第4データと、前記第2データ列の次のデータである第5データとを入れ替え、入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離を履歴テーブルに格納する置換処理ステップと
を実行することを特徴とする圧縮方法。
(付記4)前記置換処理ステップにより入れ替えられた前記第4データの次の文字の位置に前記基準位置を移動させる基準位置移動ステップを更に実行することを特徴とする付記3に記載の圧縮方法。
(付記5)コンピュータに、
圧縮対象のデータ列に対して予め設定された基準位置から注目位置を前記圧縮対象のデータ列の所定の方向に向かって移動させ、前記基準位置と前記注目位置の間の第1データ列に、前記注目位置から前記注目位置の移動方向に連なる第2データ列と一致する第3データ列が存在するか否かを判定する判定手順と、
第1データ列の中に第3データ列が存在する場合には、第3データ列の次のデータである第4データを特定し、該第4データを、前記圧縮対象のデータ列の第2データ列以降から検出する検出手順と、
前記検出手順が前記第2データ列以降から検出をした前記第4データと、前記第2データ列の次のデータである第5データとを入れ替え、入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離を履歴テーブルに格納する置換処理手順と
を実行させることを特徴とする圧縮プログラム。
(付記6)前記置換処理手順により入れ替えられた前記第4データの次の文字の位置に前記基準位置を移動させる基準位置移動手順を更に実行させることを特徴とする付記5に記載の圧縮プログラム。
(付記7)付記1に記載の履歴テーブルに含まれる前記基準位置から入れ替える前の前記第4データまでの距離を基にして、前記基準位置を算出する基準位置算出部と、
前記基準位置と、前記入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離とを基にして、入れ替えられた第4データと第5データとの組を判定するデータ判定部と、
前記データ判定部によって判定された同一の組の第4データと第5データとを入れ替えることで、データ列を復元する復元部と
を備えたことを特徴とする復元装置。
(付記8)復元装置が、
付記1に記載の履歴テーブルに含まれる前記基準位置から入れ替える前の前記第4データまでの距離を基にして、前記基準位置を算出する基準位置算出ステップと、
前記基準位置と、前記入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離とを基にして、入れ替えられた第4データと第5データとの組を判定するデータ判定ステップと、
前記データ判定ステップによって判定された同一の組の第4データと第5データとを入れ替えることで、データ列を復元する復元ステップと
を実行することを特徴とする復元方法。
(付記9)コンピュータに、
付記1に記載の履歴テーブルに含まれる前記基準位置から入れ替える前の前記第4データまでの距離を基にして、前記基準位置を算出する基準位置算出手順と、
前記基準位置と、前記入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離とを基にして、入れ替えられた第4データと第5データとの組を判定するデータ判定手順と、
前記データ判定ステップによって判定された同一の組の第4データと第5データとを入れ替えることで、データ列を復元する復元手順と
を実行させることを特徴とする復元プログラム。
100 データ圧縮復元装置
110 入力部
120 出力部
130 入出力制御部
140 記憶部
150 圧縮部
160 復元部

Claims (5)

  1. 圧縮対象のデータ列に対して予め設定された基準位置から注目位置を前記圧縮対象のデータ列の所定の方向に向かって移動させ、前記基準位置と前記注目位置の間の第1データ列に、前記注目位置から前記注目位置の移動方向に連なる第2データ列と一致する第3データ列が存在するか否かを判定する判定部と、
    第1データ列の中に第3データ列が存在する場合には、第3データ列の次のデータである第4データを特定し、該第4データを、前記圧縮対象のデータ列の第2データ列以降から検出する検出部と、
    前記検出部が前記第2データ列以降から検出をした前記第4データと、前記第2データ列の次のデータである第5データとを入れ替え、入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離を履歴テーブルに格納する置換処理部と
    を備えたことを特徴とする圧縮装置。
  2. 前記置換処理部により入れ替えられた前記第4データの次の文字の位置に前記基準位置を移動させる基準位置移動部を更に備えたことを特徴とする請求項1に記載の圧縮装置。
  3. 圧縮装置が、
    圧縮対象のデータ列に対して予め設定された基準位置から注目位置を前記圧縮対象のデータ列の所定の方向に向かって移動させ、前記基準位置と前記注目位置の間の第1データ列に、前記注目位置から前記注目位置の移動方向に連なる第2データ列と一致する第3データ列が存在するか否かを判定する判定ステップと、
    第1データ列の中に第3データ列が存在する場合には、第3データ列の次のデータである第4データを特定し、該第4データを、前記圧縮対象のデータ列の第2データ列以降から検出する検出ステップと、
    前記検出ステップが前記第2データ列以降から検出をした前記第4データと、前記第2データ列の次のデータである第5データとを入れ替え、入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離を履歴テーブルに格納する置換処理ステップと
    を実行することを特徴とする圧縮方法。
  4. コンピュータに、
    圧縮対象のデータ列に対して予め設定された基準位置から注目位置を前記圧縮対象のデータ列の所定の方向に向かって移動させ、前記基準位置と前記注目位置の間の第1データ列に、前記注目位置から前記注目位置の移動方向に連なる第2データ列と一致する第3データ列が存在するか否かを判定する判定手順と、
    第1データ列の中に第3データ列が存在する場合には、第3データ列の次のデータである第4データを特定し、該第4データを、前記圧縮対象のデータ列の第2データ列以降から検出する検出手順と、
    前記検出手順が前記第2データ列以降から検出をした前記第4データと、前記第2データ列の次のデータである第5データとを入れ替え、入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離を履歴テーブルに格納する置換処理手順と
    を実行させることを特徴とする圧縮プログラム。
  5. 請求項1に記載の履歴テーブルに含まれる前記基準位置から入れ替える前の前記第4データまでの距離を基にして、前記基準位置を算出する基準位置算出部と、
    前記基準位置と、前記入れ替えたデータを移動させた距離と、前記基準位置から入れ替える前の前記第4データまでの距離とを基にして、入れ替えられた第4データと第5データとの組を判定するデータ判定部と、
    前記データ判定部によって判定された同一の組の第4データと第5データとを入れ替えることで、データ列を復元する復元部と
    を備えたことを特徴とする復元装置。
JP2010196990A 2010-09-02 2010-09-02 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置 Expired - Fee Related JP5585317B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010196990A JP5585317B2 (ja) 2010-09-02 2010-09-02 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010196990A JP5585317B2 (ja) 2010-09-02 2010-09-02 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置

Publications (2)

Publication Number Publication Date
JP2012054835A true JP2012054835A (ja) 2012-03-15
JP5585317B2 JP5585317B2 (ja) 2014-09-10

Family

ID=45907694

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010196990A Expired - Fee Related JP5585317B2 (ja) 2010-09-02 2010-09-02 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置

Country Status (1)

Country Link
JP (1) JP5585317B2 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63185166A (ja) * 1987-01-27 1988-07-30 Fujitsu Ltd 階調画像デ−タ圧縮方式
JPH06274311A (ja) * 1993-03-19 1994-09-30 Fujitsu Ltd データ圧縮装置及びデータ復元装置
JPH10190476A (ja) * 1996-12-27 1998-07-21 Canon Inc データ圧縮方法及びその装置
JPH11168389A (ja) * 1997-12-05 1999-06-22 Toshiba Corp データ圧縮装置
JP2001345710A (ja) * 2000-03-31 2001-12-14 Fujitsu Ltd データ圧縮装置および方法
JP2002125127A (ja) * 2000-10-13 2002-04-26 Ricoh Co Ltd 画像データ並び替え並び戻し装置及び画像圧縮伸長装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63185166A (ja) * 1987-01-27 1988-07-30 Fujitsu Ltd 階調画像デ−タ圧縮方式
JPH06274311A (ja) * 1993-03-19 1994-09-30 Fujitsu Ltd データ圧縮装置及びデータ復元装置
JPH10190476A (ja) * 1996-12-27 1998-07-21 Canon Inc データ圧縮方法及びその装置
JPH11168389A (ja) * 1997-12-05 1999-06-22 Toshiba Corp データ圧縮装置
JP2001345710A (ja) * 2000-03-31 2001-12-14 Fujitsu Ltd データ圧縮装置および方法
JP2002125127A (ja) * 2000-10-13 2002-04-26 Ricoh Co Ltd 画像データ並び替え並び戻し装置及び画像圧縮伸長装置

Also Published As

Publication number Publication date
JP5585317B2 (ja) 2014-09-10

Similar Documents

Publication Publication Date Title
US10747737B2 (en) Altering data type of a column in a database
WO2016062251A1 (en) Parallel history search and encoding for dictionary-based compression
US8106799B1 (en) Data compression and decompression using parallel processing
Holt et al. Merging of multi-string BWTs with applications
JP5812188B2 (ja) プログラム、圧縮データ生成方法、伸張方法、情報処理装置、および記録媒体
JP6048251B2 (ja) データ圧縮装置、データ圧縮方法、およびデータ圧縮プログラム、並びにデータ復元装置、データ復元方法、およびデータ復元プログラム
CN111177476A (zh) 数据查询方法、装置、电子设备及可读存储介质
US7742645B2 (en) Encoding device and method
US8542137B2 (en) Decoding encoded data
JP5873925B2 (ja) 圧縮一致列挙
Kim et al. SBH: Super byte-aligned hybrid bitmap compression
US9685977B1 (en) Time series data compressing apparatus
WO2018078735A1 (ja) 情報処理装置、情報処理方法および情報処理プログラム
CN105279171B (zh) 在压缩的可变长度字符串上进行谓词评估的方法和设备
JP5585317B2 (ja) 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置
US9753084B2 (en) Debug circuit, semiconductor device, and debug method
JP2011244447A (ja) ハフマン木の記憶方法及びアレイでデータデコーディングする方法
JP7074989B2 (ja) データ圧縮器、データ圧縮方法、データ圧縮プログラム、データ解凍器、データ解凍方法、データ解凍プログラムおよびデータ圧縮解凍システム
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
JP2012065097A (ja) 圧縮装置、圧縮方法、圧縮プログラムおよび復元装置
JPWO2002101935A1 (ja) 復号化装置、復号化方法、ルックアップテーブルおよび復号化プログラム
US11593311B2 (en) Compression system with longest match processing for generating compressed data
US7893851B2 (en) Encoding apparatus, method, and processor
JP5808361B2 (ja) 文字列圧縮及び復元システム並びに方法
TW201348950A (zh) 主機板偵測裝置及方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140602

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140707

R150 Certificate of patent or registration of utility model

Ref document number: 5585317

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees