JP6135788B2 - 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム - Google Patents

圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム Download PDF

Info

Publication number
JP6135788B2
JP6135788B2 JP2016057691A JP2016057691A JP6135788B2 JP 6135788 B2 JP6135788 B2 JP 6135788B2 JP 2016057691 A JP2016057691 A JP 2016057691A JP 2016057691 A JP2016057691 A JP 2016057691A JP 6135788 B2 JP6135788 B2 JP 6135788B2
Authority
JP
Japan
Prior art keywords
compression
data
code
word list
decompression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016057691A
Other languages
English (en)
Other versions
JP2016149786A (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
Priority to JP2016057691A priority Critical patent/JP6135788B2/ja
Publication of JP2016149786A publication Critical patent/JP2016149786A/ja
Application granted granted Critical
Publication of JP6135788B2 publication Critical patent/JP6135788B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、データの圧縮技術または伸張技術に関する。
ZIPと呼ばれる圧縮においては、LZ77という圧縮アルゴリズムと、ハフマン符号を用いた圧縮アルゴリズムとが併用される。
LZ77は、圧縮対象のファイル内でのデータの繰り返しを利用して圧縮符号を生成する圧縮アルゴリズムである。すなわち、LZ77では、圧縮対象のデータと一致するデータが先に出現した位置(スライド窓内のアドレス)と、一致したデータの長さ(最長一致データ長)とが生成される。最長一致データ長が長いほど、多くの情報が1つの圧縮符号に変換される。ZIPでは、LZ77により生成されるスライド窓内のアドレスと最長一致データ長とに対し、さらに変換を行なうことが定められている。その変換によれば、LZ77で生成された圧縮符号に含まれる最長一致データ長およびスライド窓内のアドレスのそれぞれが、その値の大きさに応じて符号長が変化する圧縮符号に変換される。
一方、ハフマン符号化では、圧縮対象のデータは、圧縮対象のデータの出現頻度に応じて長さ(符号長)が定められた圧縮符号に変換される。ハフマン符号化では、圧縮符号に変換されるデータの単位(文字コードなど)は予め定められている。
ZIPにおいては、最長一致データ長の値に応じて、LZ77とハフマン符号化とを切り替えて圧縮符号が生成される。圧縮アルゴリズムの切り換えは、最長一致データ長に応じて行なわれ、最長一致データ長の閾値が「3(バイト)」と定められている。すなわち、ZIPにおいては、最長一致データ長が3バイト以上であればLZ77が用いられ、最長一致データ長が3バイトよりも小さければハフマン符号化が用いられる。
また、上述のとおり、ハフマン符号化においては、1バイトで表現される文字または記号に対して、その出現頻度に応じて圧縮符号が割り当てられていた。それに対し、文字を複数含む単語に対して、その出現頻度に応じてハフマン符号を割り当てる技術が存在する(例えば、特許文献1など)。
特開2012−142024号公報
APPNOTE.TXT − .ZIP File Format Specification Version 6.2.0、[Online]、2004年4月26日、PKWARE Inc.、インターネット<URL:http://www.pkware.com/documents/casestudies/APPNOTE.TXT>
上述の技術によれば、複数の文字を含む単語に対してハフマン符号が割り当てられており、単語に応じてハフマン符号の符号長が定められている。そのため、複数の文字を含む単語に対して割り当てることによりハフマン符号化の圧縮率が向上したことと、LZ77のスライド窓内のアドレスの値によっては長い符号長が割り当てられてしまうことにより、最長一致データ長が閾値以上であっても圧縮率が大きくなってしまう(圧縮効率がよくない)方の圧縮アルゴリズムが選択されてしまうことがある。
本発明の一側面において、圧縮効率を向上させることを目的とする。
一態様によれば、圧縮プログラムが、コンピュータに、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータが、それぞれが複数文字で構成された単語群を含む単語リストに登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合は、前記データを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号前記データの圧縮結果として出力し、前記データが前記単語リストに登録されていないと判定される場合は、前記第1の圧縮処理により生成された圧縮符号を前記データの前記圧縮結果として出力する、処理を実行させる。
一態様によれば、圧縮装置が、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なう第1の圧縮部と、それぞれが複数文字で構成された単語群を含む単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なう第2の圧縮部と、前記単語リストに前記データが登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合は、前記第1の圧縮部による前記第1の圧縮処理と、前記第2の圧縮部による前記第2の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データの圧縮結果として出力し、前記データが前記単語リストに登録されていないと判定される場合は、前記第1の圧縮処理により生成された圧縮符号を前記データの前記圧縮結果として出力する判断部と、を含む。
一態様によれば、伸張プログラムが、コンピュータに、識別符号を圧縮ファイルから読み出すことであって、前記識別符号は、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータが、それぞれが複数文字で構成された単語群を含む単語リストに登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合に、前記データの所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号が前記データの圧縮結果として出力された該圧縮率が小さい圧縮処理を示し、前記データが前記単語リストに登録されていないと判定される場合に、前記第1の圧縮処理により生成された圧縮符号が前記データの前記圧縮結果として出力された前記第1の圧縮処理を示し、前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の圧縮処理に対応する第1の伸張処理と、前記第2の圧縮処理に対応する第2の伸張処理とのうちいずれの伸張処理を実行するか判断する、処理を実行させる。
一態様によれば、コンピュータによって実行される伸張方法において識別符号を圧縮ファイルから読み出すことであって、前記識別符号は、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータが、それぞれが複数文字で構成された単語群を含む単語リストに登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合に、前記データの所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号が前記データの圧縮結果として出力された該圧縮率が小さい圧縮処理を示し、前記データが前記単語リストに登録されていないと判定される場合に、前記第1の圧縮処理により生成された圧縮符号が前記データの前記圧縮結果として出力された前記第1の圧縮処理を示し、前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の圧縮処理に対応する第1の伸張処理と、前記第2の圧縮処理に対応する第2の伸張処理とのうちいずれの伸張処理を実行するか判断する伸張方法を用いる。
一態様によれば、伸張装置が、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理に対応する伸張処理を実行する第1の伸張部と、それぞれが複数文字で構成された単語群を含む単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理に対応する伸張処理を実行する第2の伸張部と、圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の伸張部と、前記第2の伸張部とのうちいずれに処理を実行させるか判断する判断部と、を含み、前記識別符号は、前記データが前記単語リストに登録されていると判定される場合に、前記第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号が前記データの前記圧縮結果として出力された該圧縮率が小さい圧縮処理を示し、前記データが前記単語リストに登録されていないと判定される場合に、前記第1の圧縮処理により生成された前記圧縮符号が前記データの前記圧縮結果として出力された前記第1の圧縮処理を示す
一態様によれば、データ転送システム内の符号器は、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なう第1の圧縮部と、それぞれが複数文字で構成された単語群を含む単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なう第2の圧縮部と、前記単語リストに前記データが登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合は、前記第1の圧縮部による前記第1の圧縮処理と、前記第2の圧縮部による前記第2の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データの圧縮結果として出力し、前記データが前記単語リストに登録されていないと判定される場合は、前記第1の圧縮処理により生成された圧縮符号を前記データの前記圧縮結果として出力する第1の判断部と、を含み、前記データ転送システム内の復号器は、前記第1の圧縮処理に対応する伸張処理を実行する第1の伸張部と、前記第2の圧縮処理に対応する伸張処理を実行する第2の伸張部と、前記符号器により得られた圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の伸張部と、前記第2の伸張部とのうちいずれに処理を実行させるか判断する第2の判断部と、を含み、前記識別符号は、前記第1の判断部によって出力された前記データの前記圧縮符号を生成した前記第1の圧縮処理または前記第2の圧縮処理のいずれかを示す

一側面においては、圧縮効率が向上する。
図1は、ZIPフォーマットに基づく圧縮処理の処理手順例を示す。 図2は、最長一致データ長の変換テーブルT1およびスライド窓内のアドレスの変換テーブルT2の例を示す。 図3は、ZIPに基づいて圧縮されるデータの例を示す。 図4は、スライド窓内のアドレスの変換例を示す。 図5は、コンピュータ1の機能ブロックの構成例を示す。 図6は、コンピュータ1のハードウェアの構成例を示す。 図7は、コンピュータ1のプログラムの構成例を示す。 図8は、実施形態のシステムにおける装置の構成例を示す。 図9は、文字コードと圧縮符号との対応テーブルT3の例を示す。 図10は、単語コードと圧縮符号との対応テーブルT4の例を示す。 図11は、圧縮処理の処理手順例を示す。 図12は、対応テーブルT4のインデックスT5の例を示す。 図13は、本実施形態により圧縮されるデータの例を示す。 図14は、伸張処理の処理手順例を示す。
まず、ZIPフォーマットに基づく圧縮処理について説明する。
図1は、ZIPフォーマットに基づく圧縮処理の処理手順例を示す。ZIPフォーマットに従った圧縮ファイルは、コンピュータが図1に示す手順を実行することで生成される。あるファイルの圧縮が指示されると、圧縮機能が呼び出される(S100)。圧縮機能が呼び出されると、コンピュータは、圧縮を指示されたファイルを読み出す(S101)。次に、コンピュータは、ハフマン符号化に用いるハフマン木の生成、圧縮対象のデータの読み出し位置やスライド窓の設定などの前処理を行なう(S102)。
S102の処理後、コンピュータは、スライド窓内のデータに対して、圧縮対象のデータの最長一致文字列の探索を行なう(S103)。次に、コンピュータは、S103の処理で見つけられた最長一致文字列の一致長が3(バイト)以上であるか否かを判断する(S104)。
最長一致文字列の一致長が3以上である場合(S104:YES)、次に、コンピュータは、最長一致文字列の一致長に合わせて、圧縮対象データの読み出し位置を更新する(S105)。S105において、スライド窓に含まれるデータ範囲も更新される。コンピュータは、S103での探索により得られた一致長およびスライド窓内のアドレスに対し、再度変換を行なう(S106)。S106の変換により得られる圧縮符号は、アドレスの値が小さいほど符号長が短く、値が大きいほど符号長が長くなる。コンピュータは、S106により得られた圧縮符号をメモリに書き込む(S107)。
S104の判定で、最長一致文字列の一致長が3未満である場合(S104:NO)は、コンピュータは、圧縮対象のデータの1文字(1バイト)分に対して、ハフマン符号化を行なう(S108)。さらに、コンピュータは、圧縮対象のデータの読出し位置を1バイトずらし(S109)、スライド窓のデータ範囲を更新する。さらに、コンピュータは、S108で得られた圧縮符号をメモリに書き込む(S110)。
S107またはS110で圧縮符号がメモリに書き込まれると、コンピュータは、ファイル内に圧縮処理を行われていないデータが存在するか否か判断し(S111)、圧縮処理を行われていないデータが存在しない場合(S111:YES)には、圧縮処理を終了する(S112)。圧縮処理を行われていないデータが存在する場合(S111:NO)には、コンピュータは再度S103の処理を行なう。S111の判定は、例えば、圧縮対象のデータの読み出し位置がファイルの終点であるか否かに基づいて行なわれる。なお、1回目や2回目のS103の処理では、スライド窓内にデータが存在しないので、S104でNOと判断される。
次に、図1のS106の処理で行なわれる最長一致文字列の一致長およびアドレスの変換について説明する。図2は、最長一致文字列の一致長の変換テーブルT1およびアドレスの変換テーブルT2の例を示す。図2Aは、一致長に対応するコードと追加ビットの数とを示す変換テーブルT1である。図2Bは、アドレスに対応するコードと追加ビットの数とを示す変換テーブルT2である。
S106の処理において、一致長は、図2Aに示される「1」〜「29」までの29種類のコードのいずれかを用いて変換される。例えば、一致長が「3」である場合には、「1」というコードに変換される。例えば、一致長が「11」である場合には、「9」というコードに変換され、さらに1ビット「0」が追加されて表現される。一致長が「12」である場合にも「9」というコードが割り当てられるが、追加ビット「1」が割り当てられ、一致長「11」と一致長「12」とが識別される。同様に、例えば、一致長が「131」であれば、「25」コードが割り当てられ、さらに、追加ビット5ビット分で表現される。
一致長と同様に、スライド窓内のアドレスについてもS106の処理で変換が行なわれる。S106の処理において、スライド窓内のアドレスは、図2Bに示される「0」〜「29」までのいずれかのコードに変換される。一致長の変換と同様に、アドレスの値が大きい場合には、コードに対して追加ビットが付与される。例えば、スライド窓内のアドレスが「1」である場合には、コード「0」に変換される。例えば、スライド窓内のアドレスが「4097」である場合には、アドレスがコード「24」と11ビットの追加ビットとに変換される。
図2Aを用いて変換する場合も、図2Bを用いて変換する場合も、変換する前の値が大きいほど追加ビット数が大きくなり、結果的に変換後の符号長が長くなる。図2Aを用いて得られる一致長のコードと、図2Bを用いて得られるアドレスのコードとは、それぞれハフマン符号化される。追加ビットに対してハフマン符号化は行なわれない。
図3は、ZIPフォーマットに基づいて圧縮されるデータの例を示す。図3A〜Dは、図1のS103の最長一致文字列の探索により「she」という単語が最長一致文字列として得られた場合について、圧縮過程のデータを示す。圧縮対象のファイル内のデータがASCIIを用いて表現されている場合には、図3Aに示すように、「s」、「h」、「e」のそれぞれの文字が8ビットで表現される。例えば、図1のS103の最長一致文字列の探索で、一致長が「3」であり、アドレスが「16386」であるとすると、図3Bに示すデータが得られる。図3Bに示される一致長およびアドレスのそれぞれについて、図2Aおよび図2Bを用いて変換を行なうと、図3Cに示すデータとなる。一致長「3」はコード「1」に変換され、アドレス「16386」は、コード「28」が割り当てられ、13ビットの追加ビットで「1」が表現される。一致長のコード「1」と、アドレスのコード「28」とがさらにハフマン符号化されると、図3Dに示すデータとなる。図3Dにおいては、LZ77を用いて得られた圧縮符号であることを示す識別符号「1」が先頭に付与されている。図3Dにおいては、一致長のコード「1」がハフマン符号化されて「x1」となっており、アドレスのコード「28」がハフマン符号化されて「x2」となっている。すなわち、一例によれば、図3Dに示す通り、「she」という文字列が、識別符号および追加ビットによる14ビット以上の圧縮符号に変換される。ハフマン符号「x1」、「x2」の値によって、さらに圧縮符号は長くなる。
スライド窓内のアドレスの変換には、図2Aを用いた方法以外の方法を用いてもよい。図4は、スライド窓内のアドレスの変換例を示す。図4Aは、スライド窓内のアドレスの一例を示す。図4Aに示す通り、スライド窓内のアドレスが「45」であった場合に、スライド窓内のアドレスを示す16ビットのうちの上位10ビットが連続して「0」となっている。図4Bは、図4Aに示すアドレスを、上位から連続して値が「0」であるビットの数と、残りの下位ビットとで表現した例である。図4Bでは、10ビット連続の「0」が4ビットで表されている。さらに、上位から連続して値が「0」であるビットの数に対してハフマン符号化を行った結果の例が図4Cに示される。図4Cでは、「10」をハフマン符号化した結果が「x3」としている。図4の方法を用いた場合にも、スライド窓内のアドレスの値が大きくなると、符号長は長くなってしまう。
上述の通り、ZIPフォーマットに従った圧縮では、一致長が閾値(3バイト)以上であると、スライド窓内のアドレスの値に応じて符号長が変化する圧縮アルゴリズムが用いられる。すると、スライド窓内のアドレスの値の大きさによっては、単純にハフマン符号化を行なうよりも圧縮符号の符号長が長くなってしまう事態も生じうる。特にスライド窓内のアドレスが大きくなると、圧縮符号の符号長が長くなりやすい。一方、ハフマン符号化では、文字コード(または文字コードの組み合わせ)に対して圧縮符号が割り当てられている。そのため、圧縮符号の符号長は、文字コードに応じて定められる。
本実施形態においては、文字コードと、スライド窓内のアドレスとのように、種別の異なる情報に基づいて圧縮符号の符号長が変化する圧縮アルゴリズムを組み合わせて用いる。本実施形態において、さらに、それぞれの圧縮アルゴリズムにより生成される圧縮符号のうち、圧縮率が小さくなる方が選択的に用いられることで、圧縮率の低減が図られる。
図5は、コンピュータ1の機能ブロックの構成例を示す。コンピュータ1は、制御部11と記憶部12とを含む。制御部11は、圧縮部111と伸張部112とを含む。圧縮部111は、記憶部12に記憶されたデータファイルの圧縮処理を行なう。すなわち、圧縮部111は、データファイルを記憶部12から読み出し、読み出したデータファイルに含まれるデータを順次圧縮符号に変換し、変換して得られる圧縮符号を記憶部12に順次格納し、圧縮ファイルを生成する。伸張部112は、記憶部12に記憶された圧縮ファイルの伸張処理を行なう。すなわち、圧縮部111は、圧縮ファイルを記憶部12から読み出し、読み出した圧縮ファイルに含まれる圧縮符号を順次伸張データに変換し、変換して得られる伸張データを記憶部12に順次格納し、伸張ファイルを生成する。
圧縮部111は、判断部1111、変換部1112および変換部1113を含む。判断部1111は、記憶部12から読み出したデータファイルに含まれるデータを順次圧縮符号に変換する処理において、変換部1112により生成される圧縮符号と、変換部1113により生成される圧縮符号とのうちのいずれに変換するかの判断を行なう。
変換部1112は、第1の圧縮アルゴリズムに基づいて圧縮符号を生成する。変換部1113は、第2の圧縮アルゴリズムに基づいて圧縮符号を生成する。第1の圧縮アルゴリズム及び第2の圧縮アルゴリズムの少なくとも一方は、可変長の圧縮符号を用いる。
例えば、第1の圧縮アルゴリズムにおいては、記憶部12から読み出したデータを変換して得られる、データファイル内のデータと異なる種類のデータの値の大きさに応じて、圧縮符号の符号長が変化する。例えば、変換部1112は、記憶部12から読み出したデータに対し、LZ77に基づく変換を行なう。変換の結果、変換対象のデータがデータファイル内で先に出現した位置を示すアドレスを含む情報が得られ、変換部1112で用いられる圧縮符号の符号長は、アドレスの値の大きさに応じて変化する。例えば、アドレスの値が大きいほど長い符号を用いてもよいし、アドレスの値が小さいほど短い符号を用いてもよい。
例えば、第2の圧縮アルゴリズムにおいては、記憶部12から読み出したデータの値に応じて、圧縮符号の符号長が定められる。例えば、変換部1113は、記憶部12から読み出したデータに対し、ハフマン符号化を行なう。ハフマン符号化では、圧縮対象のデータの値に対して、出現頻度に応じて符号長と圧縮符号とが予め割り当てられているため、記憶部12から読み出したデータの値に基づいて圧縮符号の符号長が定められる。
判断部1111は、変換部1112による圧縮処理と、変換部1113による圧縮処理とのそれぞれの圧縮処理の圧縮率を算出し、いずれの圧縮処理の方が、圧縮率が良くなるか(小さい値になるか)を判断する。例えば、圧縮率とは、圧縮符号に変換される前のデータに対する圧縮符号の大きさを示す数値である。判断部1111は、変換部1112および変換部1113のうち、圧縮率が良くなる方の変換部により生成された圧縮符号を、記憶部12に格納する。例えば、判断部1111は、圧縮率に基づき判断するのでなく、圧縮符号の符号長に基づき判断することとしてもよい。例えば、判断部1111は、符号長が短いほうの圧縮符号を記憶部12に格納する。
判断部1111は、変換部1112および変換部1113のいずれで生成された圧縮符号であるかを示す識別符号も、圧縮符号と併せて記憶部12に格納する。例えば、判断部1111は、変換部1112で生成された圧縮符号には識別符号「1」を付与し、変換部1113で生成された圧縮符号には識別符号「0」を付与する。
伸張部112は、判断部1121、変換部1122および変換部1123を含む。判断部1121は、圧縮ファイル含まれる圧縮符号に付与された識別符号に基づいて、変換部1122と変換部1123とのいずれにより生成される伸張データを用いるかを判断する。例えば、判断部1121は、圧縮ファイルから読み出された圧縮符号に付与された識別符号が「1」であれば、変換部1122により生成される伸張データを用い、識別符号が「0」であれば、変換部1123により生成される伸張データを用いる。変換部1122は、第1の圧縮アルゴリズムに対応する第1の伸張アルゴリズムを用いて伸張処理を行なう。変換部1123は、第2の圧縮アルゴリズムに対応する第2の伸張アルゴリズムを用いて伸張処理を行なう。
上述の機能ブロック構成のコンピュータでは、第1の圧縮アルゴリズムと第2の圧縮アルゴリズムとが併用される。前述の通り、第1の圧縮アルゴリズムではアドレスの値の大きさに応じて圧縮符号の符号長が変化し、第2の圧縮アルゴリズムでは圧縮対象のデータの値に対して圧縮符号の符号長が定められている。LZ77で用いるスライド窓内のアドレスの値と圧縮対象のデータの値と互いに相関関係を有するわけではないので、圧縮対象のデータの値の大小にかかわらず、アドレスの値は大きい値をとり得る。アドレスの値が大きくなると符号長も長くなる傾向にあり、そういった場合には第2の圧縮アルゴリズムの方が圧縮率の値が小さくなることがある。上述の特徴を有する第1の圧縮アルゴリズムと第2の圧縮アルゴリズムとを併用することで、圧縮効率を向上させる、すなわち、よりデータ量の少ない圧縮データに圧縮することができる。
図6は、コンピュータ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を介した通信の制御を行なう。SANインターフェース311は、コンピュータ1に接続されたストレージエリアネットワークを介して記憶装置と通信の制御を行なう。
入力デバイス307は、操作に応じて入力信号を送信する装置である。入力デバイス307は、例えば、キーボードやコンピュータ1の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス309は、コンピュータ1の制御に応じて情報を出力する装置である。出力デバイス309は、例えば、ディスプレイなどの画像出力装置(表示デバイス)や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス307及び出力デバイス309として用いられる。また、入力デバイス307及び出力デバイス309は、コンピュータ1に含まれず、例えば、コンピュータ1に外部から接続する装置であってもよい。
プロセッサ301は、ROM303や記憶媒体305に記憶されたプログラムをRAM302に読み出し、読み出されたプログラムの手順に従って制御部11の処理を行なう。その際にRAM302はプロセッサ301のワークエリアとして用いられる。記憶部12の機能は、ROM303および記憶媒体305がプログラムファイル(後述のアプリケーションプログラム24、ミドルウェア23およびOS22など)やデータファイル(圧縮対象のデータファイル、圧縮ファイル、伸張対象のデータファイル、伸張ファイルなど)を記憶し、RAM302がプロセッサ301のワークエリアとして用いられることによって実現される。プロセッサ301が読み出すプログラムについては、図7を用いて説明する。
図7は、コンピュータ1のプログラムの構成例を示す。コンピュータ1において、図6に示すハードウェア群21の制御を行なうOS(オペレーティングシステム)22が動作する。OS22に従った手順でプロセッサ301が動作して、ハードウェア群21の制御・管理が行なわれることにより、アプリケーションプログラム24やミドルウェア23に従った処理がハードウェア群21で実行される。さらに、コンピュータ1において、ミドルウェア23またはアプリケーションプログラム24が、RAM302に読み出されてプロセッサ301により実行される。
プロセッサ301が、ミドルウェア23またはアプリケーションプログラム24に含まれる圧縮機能に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア21を制御して)圧縮部111の機能が実現される。また、プロセッサ301が、ミドルウェア23またはアプリケーションプログラム24に含まれる伸張機能に基づく処理を行なうことにより、(それらの処理をOS22に基づいてハードウェア21を制御して)伸張部112の機能が実現される。圧縮機能および伸張機能は、それぞれアプリケーションプログラム24自体に定義されてもよいし、アプリケーションプログラム24に従って呼び出されることで実行されるミドルウェア23の機能であってもよい。
図8は、実施形態のシステムにおける装置の構成例を示す。図8のシステムは、コンピュータ1a、コンピュータ1b、基地局2およびネットワーク3を含む。コンピュータ1aは、無線または有線の少なくとも一方により、コンピュータ1bと接続されたネットワーク3に接続している。
図5に示す圧縮部111と伸張部112とは、図8に示すコンピュータ1aとコンピュータ1bとのいずれに含まれてもよい。例えば、図8のシステムにおいて、コンピュータ1bが本実施形態の圧縮処理により圧縮したデータファイルをコンピュータ1aが取得し、コンピュータ1aがコンピュータ1bから取得した圧縮ファイルを本実施形態の伸張処理により伸張する。すなわち、コンピュータ1bが図5に示す圧縮部111を含み、コンピュータ1aが伸張部112を含む。また、例えば、図8のシステムにおいて、コンピュータ1aが本実施形態の圧縮処理により圧縮したデータファイルをコンピュータ1bが取得し、コンピュータ1bがコンピュータ1aから取得した圧縮ファイルを本実施形態の伸張処理により伸張する。すなわち、コンピュータ1aが図5に示す圧縮部111を含み、コンピュータ1bが伸張部112を含む。コンピュータ1aとコンピュータ1bとの双方が、圧縮部111および伸張部112を備えてもよい。
図9は、文字コードと圧縮符号との対応テーブルT3の例を示す。対応テーブルT3においては、文字コード、符号長、圧縮符号が対応付けられている。例えば、圧縮符号は、ハフマン符号化のアルゴリズムに基づいて定められたものである。変換部1113は、対応テーブルT3を参照して、圧縮対象の文字コードを、対応する圧縮符号に変換する。
図10は、単語コードと圧縮符号との対応テーブルT4の例を示す。対応テーブルT4においては、単語コード、符号長、圧縮符号が対応付けられている。単語コードとは、単語に含まれる各文字の文字コードを順に示したものである。変換部1113は、対応テーブルT4を参照して圧縮対象の単語コードを、対応する圧縮符号に変換する。
図11は、圧縮処理の処理手順例を示す。ファイルに対して圧縮指示が行なわれると、圧縮機能が呼び出される(S200)。圧縮部111は、圧縮対象のファイルを読み出す(S201)。次に、圧縮部111は、対応テーブルT3およびT4の読み出し、ファイルからのデータ読み出し位置の初期設定、スライド窓の初期設定などの前処理を行なう(S202)。
S202の処理を終えると、変換部1112がスライド窓内の最長一致文字列の探索を行なう(S203)。次に、判断部1111は、S203の探索により得られた一致長が閾値(3バイト)以上であるか否かを判定する(S204)。
S204の判定で、一致長が閾値以上であると判定された場合(S204:YES)は、変換部1113は単語リストを参照する(S205)。単語リストは、例えば、図10に示す対応テーブルT4である。判断部1111は、S205の単語リストの参照結果に応じて、圧縮対象のデータの読み出し位置から読み出した文字列が単語リスト内登録されているか否かを判定する(S206)。単語リスト内に該当単語がある場合(S206:YES)には、変換部1112は、S203の最長一致文字列の探索により得られた一致長と、スライド窓内のアドレスとのそれぞれを変換する(S207)。S207の変換は、例えば、図2Aおよび図2Bに示す変換テーブルに基づいて行なう。もしくは、変換部1112は、図4に示す変換方法を用いてS207の変換を行なってもよい。さらに、判断部1111は、変換部1112による変換の圧縮率と、変換部1113による変換の圧縮率とを算出する(S208)。次に、判断部1111は、S208で算出した圧縮率を比較し、変換部1112による変換の圧縮率の方が、値が小さくなるか否かを判断する(S209)。
S206で該当する単語が単語リストに無いと判定された場合(S206:NO)か、またはS209で変換部1112による変換の方が圧縮率の値が小さくなると判定された場合(S209:YES)は、変換部1112により圧縮符号の生成が行なわれる。すなわち、変換部1112は、S203で得られた一致長に応じて、圧縮対象のデータの読み出し位置を更新し(S210)、さらに、S207の変換で得られた圧縮符号をメモリに書き込む(S211)。
S209の判定で、変換部1112による変換の方が圧縮率の値が小さくならないと判定された場合(S209:NO)は、変換部1113は、S205で見つけ出した単語に対応する圧縮符号を対応テーブルT4から取得する(S212)。
S203の探索により得られた一致長が閾値(3バイト)未満である場合(S204:NO)は、変換部1113は、圧縮対象のデータの読み出し位置から1文字分のデータ(ASCIIでは1バイト)に対してハフマン符号化を行なう(S213)。S213の処理において、変換部1113は、文字コードに対応する圧縮符号を対応テーブルT3から取得する。
変換部1113は、S212またはS213の処理で圧縮符号を取得すると、圧縮対象のデータの読み出し位置の更新を行なう(S214)。変換部1113は、1文字に対応する圧縮符号を取得した場合には読出し位置を1文字分進め、単語に対応する圧縮符号を取得した場合には単語の文字数分読み出し位置を進める。さらに、変換部1113は、S212またはS213の処理で取得した圧縮符号をメモリに書き込む(S215)。
圧縮部111は、S211またはS215の処理が行なわれると、S210またはS214の処理で更新された読み出し位置がファイルの終点であるか否かを判断する。読み出し位置がファイルの終点である場合(S216:YES)には、圧縮部111は、メモリに書き込まれたデータを圧縮ファイルとしてクローズして圧縮処理を終了する(S217)。ファイルクローズの際には、圧縮部111は、ハフマン木を生成するための情報(対応テーブルT3および対応テーブルT4など)もファイルに含ませる。読み出し位置がファイルの終点でない場合(S216:NO)には、S203の処理が再度行なわれる。
上述の手順によれば、圧縮対象のデータを変換して得られる値の大きさに応じて符号長が変化する圧縮アルゴリズムと、圧縮対象のデータの値によって符号長が定められる圧縮アルゴリズムとのうち、圧縮率が小さくなる方が採用される。
図12は、対応テーブルT4のインデックスT5の例を示す。図11に示すS205の処理において、変換部1113は、例えば、図12のインデックスT5を用いて対応テーブルT4を参照する。例えば、図12のインデックスT5は、16ビットのポインタを256種類格納する領域に格納される。例えば、対応テーブルT4において単語の頭文字が同じもののうち最上位の単語の位置を示すポインタが、インデックスT5内の頭文字の文字コードに対応する位置に格納される。例えば、「a」から始まる単語が対応テーブルT4に登録されているかを確認する場合に、インデックス情報内の97×16ビット目から格納されているポインタq27に基づいて、対応テーブルT4を参照する。(「a」の文字コードは0x61であり、10進数で97である。また、ここでは各ポインタのサイズを16ビットとしている。)ポインタq27は、例えば、図10に示す対応テーブル内の“able”の単語コードが格納される位置を示す。インデックスT5を用いることで、図11に示すS205の処理において、対応テーブルT4を参照する範囲を狭めることができる。
図13は、本実施形態により圧縮されるデータの例を示す。図13Aは、「she」という文字列の圧縮前の状態を示す。各文字8ビットであり、合計24ビットである。図13bは、変換部1112の変換により生成される圧縮符号の例を示す。図13Bに示す圧縮符号は、図3Dと同様に、識別符号「1」、一致長のコードのハフマン符号(x1)、スライド窓内のアドレスのコードのハフマン符号(x2)、スライド窓内のアドレスを表現するための追加ビット(1)を含む。最長一致文字列がスライド窓内のどこに見つかるかに応じて、追加ビットに用いられるビット数が定められる。図13Cは、変換部1113の変換により得られる圧縮符号の例を示す。図13Cの圧縮符号は、識別符号「0」と、単語「she」と対応テーブルT4により対応づけられた圧縮符号(x4)とを含む。単語「she」に対して割り当てられたハフマン符号が10ビットであるので、図13Cの圧縮符号の符号長は11ビットとなる。図13Bの圧縮符号は、スライド窓内のアドレスを表現するための追加ビットに13ビット要するため、図13Cの圧縮符号の方が短く、圧縮率も小さくなる。
図14は、伸張処理の処理手順例を示す。圧縮ファイルに対し伸張が指示されると、伸張機能が呼び出される(S300)。伸張部112は、記憶部12に記憶された圧縮ファイルを読み出す(S301)。次に、伸張部112は、圧縮ファイルからの圧縮符号の読み出し位置の初期設定、スライド窓の初期設定、ハフマン木の生成などの前処理を行なう(S302)。
伸張部112は、圧縮符号の読み出し位置から1ビットの識別符号を読み出す(S303)。判断部1121は、読み出した識別符号が「1」であるか否かを判断する(S304)。識別符号が「1」である場合(S304:YES)には、変換部1122が伸張処理を実行し、識別符号が「0」である場合(S304:NO)には、変換部1123が伸張処理を実行する。
識別符号が「1」の場合には、変換部1122は、識別符号に後続する圧縮符号をさらに圧縮ファイルから読み出し、読みした圧縮符号をスライド窓内のアドレスと、一致長とに変換する(S305)。変換部1122は、スライド窓内のアドレスと、一致長とに基づいて、スライド窓内から伸張データを取得する(S306)。さらに、変換部1122は、圧縮ファイルからの読み出し位置を読み出した圧縮符号に応じて更新する(S307)。S307の処理において、スライド窓の更新も併せて行なわれる。変換部1122は、さらに、S306で取得した伸張データをメモリに書き込む(S308)。
識別符号が「0」の場合には、変換部1123は、識別符号に後続する圧縮符号をさらに圧縮ファイルから読み出し、読みした圧縮符号に基づいて、S302で生成されたハフマン木を探索する(S309)。ハフマン木の探索により、変換部1123は、圧縮符号に対応する伸張データを取得する(S310)。さらに、変換部1123は、読み出した圧縮符号の長さに応じて、圧縮符号の読み出し位置を更新する(S311)。変換部1123は、S310で取得した圧縮符号をメモリに書込む(S312)。
S308またはS312の処理が実行されると、伸張部112は、圧縮符号の読み出し位置が圧縮ファイルの終点であるか否かを判断する(S313)。読み出し位置が圧縮ファイルの終点でない場合(S313:NO)は、S303の処理が再度行なわれる。読み出し位置が圧縮ファイルの終点である場合(S313:YES)には、伸張部112は、S308およびS312の処理でメモリに書き込まれた伸張データによりファイルを生成し、伸張処理を終了する(S314)。ちなみに、上述のS307とS308との順序が逆でもよいし、S311とS312との順序が逆でもよい。
次に、圧縮符号が割り当てられる文字コードおよび単語の数と、圧縮符号の符号長との関係について説明する。ハフマン符号化においては、圧縮符号を割り当てる対象の数が多いほど、圧縮符号の種類が増えるので、圧縮符号が長くなる傾向にある。例えば、文字コードと単語とを合わせて4096種類の圧縮符号を用いたとする。それぞれの文字コードおよび単語が均等な頻度でファイル内に含まれる場合には、それぞれに対して12ビットの圧縮符号が割り当てられる。均等な出現頻度でない場合には、いずれかの文字コードもしくは単語に対して12ビットよりも短い圧縮符号が割り当てられることとなる。
一方、変換部112による第1の圧縮アルゴリズムを用いた変換では、スライド窓内のアドレスを表現するための追加ビットに13ビット要することがある。そのため、4096種類の文字コードおよび単語に対してハフマン符号を割り当てたとしても、変換部113により生成される圧縮符号の方が短くなる状況は充分に生じうる。すなわち、13ビット(一致長のコードおよびスライド窓内のアドレスのコードをハフマン符号化した分もあるので、実際は13ビット以上である)よりも符号長が小さいハフマン符号が割り当てられるのであれば、上述の実施例を適用することにより圧縮率が小さくなる可能性がある。
単一の単語以上に長い最長一致文字列がスライド窓内に見つかる場合には、一つの圧縮符号に変換されるデータ量が大きくなるので、圧縮率が小さくなる傾向にある。そういった場合にも圧縮率が小さくなる方の圧縮符号を採用するため、LZ77による利点は失われない。
上記に説明される実施形態は一例であり、発明を実施しうる範囲内で適宜変形可能である。また、上記の説明された各処理のさらに詳細な内容については、当業者に周知の技術が適宜用いられる。
1 コンピュータ
2 基地局
3 ネットワーク
1a コンピュータ
1b コンピュータ
11 制御部
12 記憶部
111 圧縮部
112 伸張部
1111 判断部
1112 変換部
1121 変換部
1121 判断部
1122 変換部
1123 変換部

Claims (13)

  1. コンピュータに、
    処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータが、それぞれが複数文字で構成された単語群を含む単語リストに登録されているか判定し、
    前記データが前記単語リストに登録されていると判定される場合は、前記データを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号前記データの圧縮結果として出力し、
    前記データが前記単語リストに登録されていないと判定される場合は、前記第1の圧縮処理により生成された圧縮符号を前記データの前記圧縮結果として出力する
    処理を実行させるための圧縮プログラム。
  2. 前記情報は、前記データを含むファイル内の指定範囲内において前記データと一致する部分の位置を示す数値と、前記一致する部分のデータ長を示す数値とを含む、
    ことを特徴とする請求項1に記載の圧縮プログラム。
  3. 前記第1の圧縮処理における符号長は、前記位置を示す数値が大きいほど長く定められる、
    ことを特徴とする請求項2に記載の圧縮プログラム。
  4. 前記データは文字コードまたは文字コードの組み合わせを示す、
    ことを特徴とする請求項1〜3のいずれか1項に記載の圧縮プログラム。
  5. 前記第2の圧縮処理において、前記文字コードの組み合わせのそれぞれに対して、それぞれの出現頻度に応じた符号長の圧縮符号が割り当てられる、
    ことを特徴とする請求項4に記載の圧縮プログラム。
  6. 前記文字コードの組み合わせのそれぞれに対して割り当てられる圧縮符号の符号長は、いずれも前記情報に基づいて定められる符号長の最大値よりも小さい、
    ことを特徴とする請求項5に記載の圧縮プログラム。
  7. 前記コンピュータに、さらに、
    前記データのデータ長と閾値とを比較し、
    前記データのデータ長が前記閾値以上の場合は、前記単語リストに前記データが登録されているか判定する処理を行ない、
    前記データのデータ長が前記閾値未満の場合は、前記データに含まれる単位データに基づいて符号長が定められる第3の圧縮処理を行ない、前記第3の圧縮処理により生成された圧縮符号を前記圧縮結果として出力する
    処理を実行させることを特徴とする請求項1〜6のいずれか1項に記載の圧縮プログラム。
  8. コンピュータに、さらに、
    前記単語リストに前記データが登録されているか判定する処理において、前記単語リストにおいて頭文字が同じ単語のうち最上位の単語の格納位置を示すポインタが前記頭文字に対応する位置に格納されたインデックス情報を前記データに基づいて参照し、
    前記インデックス情報の参照により得られるポインタに基づいて前記単語リストを参照する
    処理を実行させるための請求項1〜7のいずれか1項に記載の圧縮プログラム
  9. 処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なう第1の圧縮部と、
    それぞれが複数文字で構成された単語群を含む単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なう第2の圧縮部と、
    前記単語リストに前記データが登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合は、前記第1の圧縮部による前記第1の圧縮処理と、前記第2の圧縮部による前記第2の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データの圧縮結果として出力し、前記データが前記単語リストに登録されていないと判定される場合は、前記第1の圧縮処理により生成された圧縮符号を前記データの前記圧縮結果として出力する判断部と、
    を含むことを特徴とする圧縮装置。
  10. コンピュータに、
    識別符号を圧縮ファイルから読み出すことであって、前記識別符号は、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータが、それぞれが複数文字で構成された単語群を含む単語リストに登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合に、前記データの所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号が前記データの圧縮結果として出力された該圧縮率が小さい圧縮処理を示し、前記データが前記単語リストに登録されていないと判定される場合に、前記第1の圧縮処理により生成された圧縮符号が前記データの前記圧縮結果として出力された前記第1の圧縮処理を示し
    前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の圧縮処理に対応する第1の伸張処理と、前記第2の圧縮処理に対応する第2の伸張処理とのうちいずれの伸張処理を実行するか判断する、
    処理を実行させるための伸張プログラム。
  11. コンピュータによって実行される伸張方法において
    識別符号を圧縮ファイルから読み出すことであって、前記識別符号は、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータが、それぞれが複数文字で構成された単語群を含む単語リストに登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合に、前記データの所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号が前記データの圧縮結果として出力された該圧縮率が小さい圧縮処理を示し、前記データが前記単語リストに登録されていないと判定される場合に、前記第1の圧縮処理により生成された圧縮符号が前記データの前記圧縮結果として出力された前記第1の圧縮処理を示し
    前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の圧縮処理に対応する第1の伸張処理と、前記第2の圧縮処理に対応する第2の伸張処理とのうちいずれの伸張処理を実行するか判断する、
    こと特徴とする伸張方法。
  12. 処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理に対応する伸張処理を実行する第1の伸張部と、
    それぞれが複数文字で構成された単語群を含む単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理に対応する伸張処理を実行する第2の伸張部と、
    圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の伸張部と、前記第2の伸張部とのうちいずれに処理を実行させるか判断する判断部と、
    を含み、
    前記識別符号は、前記データが前記単語リストに登録されていると判定される場合に、前記第1の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記第2の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号が前記データの前記圧縮結果として出力された該圧縮率が小さい圧縮処理を示し、前記データが前記単語リストに登録されていないと判定される場合に、前記第1の圧縮処理により生成された前記圧縮符号が前記データの前記圧縮結果として出力された前記第1の圧縮処理を示す、
    ことを特徴とする伸張装置。
  13. 符号器及び復号器を含むデータ転送システムであって、
    前記符号器は、
    処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第1の圧縮処理を前記データに対して行なう第1の圧縮部と、
    それぞれが複数文字で構成された単語群を含む単語リストを参照し前記データに基づいて符号長が定められる第2の圧縮処理を前記データに対して行なう第2の圧縮部と、
    前記単語リストに前記データが登録されているか判定し、前記データが前記単語リストに登録されていると判定される場合は、前記第1の圧縮部による前記第1の圧縮処理と、前記第2の圧縮部による前記第2の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データの圧縮結果として出力し、前記データが前記単語リストに登録されていないと判定される場合は、前記第1の圧縮処理により生成された圧縮符号を前記データの前記圧縮結果として出力する第1の判断部と、を含み、
    前記復号器は、
    前記第1の圧縮処理に対応する伸張処理を実行する第1の伸張部と、
    前記第2の圧縮処理に対応する伸張処理を実行する第2の伸張部と、
    前記符号器により得られた圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第1の伸張部と、前記第2の伸張部とのうちいずれに処理を実行させるか判断する第2の判断部と、を含み、
    前記識別符号は、前記第1の判断部によって出力された前記データの前記圧縮符号を生成した前記第1の圧縮処理または前記第2の圧縮処理のいずれかを示す
    ことを特徴とするデータ転送システム。
JP2016057691A 2016-03-22 2016-03-22 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム Expired - Fee Related JP6135788B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016057691A JP6135788B2 (ja) 2016-03-22 2016-03-22 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016057691A JP6135788B2 (ja) 2016-03-22 2016-03-22 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014531391A Division JPWO2014030189A1 (ja) 2012-08-23 2012-08-23 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム

Publications (2)

Publication Number Publication Date
JP2016149786A JP2016149786A (ja) 2016-08-18
JP6135788B2 true JP6135788B2 (ja) 2017-05-31

Family

ID=56691412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016057691A Expired - Fee Related JP6135788B2 (ja) 2016-03-22 2016-03-22 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム

Country Status (1)

Country Link
JP (1) JP6135788B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7390251B2 (ja) * 2020-04-30 2023-12-01 株式会社日立製作所 ストレージシステム
CN115204754B (zh) * 2022-09-15 2022-12-09 山东西曼克技术有限公司 一种基于大数据的热力供需信息管理平台

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3278277B2 (ja) * 1994-01-26 2002-04-30 キヤノン株式会社 投影露光装置及びこれを用いたデバイス製造方法
JP3337633B2 (ja) * 1997-12-03 2002-10-21 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000201080A (ja) * 1999-01-07 2000-07-18 Fujitsu Ltd 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
JP2000269822A (ja) * 1999-03-12 2000-09-29 Fujitsu Ltd データ圧縮装置、及びデータ復元装置
JP3573735B2 (ja) * 2000-05-23 2004-10-06 松下電器産業株式会社 可変長符号化方法および可変長符号化装置
JP4479530B2 (ja) * 2004-12-28 2010-06-09 カシオ電子工業株式会社 データ圧縮装置、及びデータ復元装置

Also Published As

Publication number Publication date
JP2016149786A (ja) 2016-08-18

Similar Documents

Publication Publication Date Title
JP6742692B2 (ja) 符号化プログラムおよび伸長プログラム
JP6531398B2 (ja) プログラム
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP2017073094A (ja) 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
WO2014030189A1 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP6135788B2 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
US11309909B2 (en) Compression device, decompression device, and method
JP2018061166A (ja) 符号化プログラム、符号化装置および符号化方法
US9479195B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
US20150248432A1 (en) Method and system
JPWO2014097359A1 (ja) 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
WO2014030180A1 (ja) 格納プログラム、格納方法、格納装置、伸張プログラム、伸張方法及び伸張装置
US10318483B2 (en) Control method and control device
JP2017195628A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置
JP2016134808A (ja) データ圧縮プログラム、データ復元プログラム、データ圧縮装置、及びデータ復元装置
US20160210304A1 (en) Computer-readable recording medium, information processing apparatus, and conversion process method
US20230291418A1 (en) Data decompression device, memory system, and data decompression method
JP2016171589A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法及び復号化装置
JP2023128936A (ja) 情報処理装置及び初期辞書作成方法
JP2020061641A (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP2006345374A (ja) データ符号化装置,データ復号装置,データ符号化方法およびデータ復号方法
JP2013211643A (ja) 圧縮方法、復元方法、情報処理装置及びプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170410

R150 Certificate of patent or registration of utility model

Ref document number: 6135788

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees