(57)【要約】  一側面において、圧縮効率を向上させることを目的とする。  圧縮プログラムにより、コンピュータに、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率の値が小さい圧縮処理により生成された圧縮符号に前記データを変換する、処理を実行させる。
2014030189.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、
処理を実行させることを特徴とする圧縮プログラム。
【請求項２】
前記情報は、前記データを含むファイル内の指定範囲内において前記データと一致する部分の位置を示す数値と、前記一致する部分のデータ長を示す数値とを含む、
ことを特徴とする請求項１に記載の圧縮プログラム。
【請求項３】
前記第１の圧縮処理において、前記位置を示す数値が大きいほど符号長を長く定められる、
ことを特徴とする請求項２に記載の圧縮プログラム。
【請求項４】
前記データは文字コードまたは文字コードの組み合わせを示す、
ことを特徴とする請求項１〜３のいずれか１項に記載の圧縮プログラム。
【請求項５】
前記第２の圧縮処理において、前記文字コードおよび前記文字コードの組み合わせのそれぞれに対して、それぞれの出現頻度に応じた符号長の圧縮符号が割り当てられる、
ことを特徴とする請求項４に記載の圧縮プログラム。
【請求項６】
前記文字コードおよび前記文字コードの組み合わせのそれぞれに対して割り当てられる圧縮符号の符号長は、いずれも前記情報に基づいて定められる符号長の最大値よりも小さい、
ことを特徴とする請求項５に記載の圧縮プログラム。
【請求項７】
前記コンピュータに、さらに、
前記データを変換して得られる圧縮符号に、前記第１の圧縮処理により生成された圧縮符号であるか、前記第２の圧縮処理により生成された圧縮符号であるかを示す識別符号を付与する、
処理を実行させることを特徴とする請求項１〜６のいずれか１項に記載の圧縮プログラム。
【請求項８】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、
処理を実行させることを特徴とする圧縮方法。
【請求項９】
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、
前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、
前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする判断部と、
を含むことを特徴とする圧縮装置。
【請求項１０】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、
前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、
処理を実行させることを特徴とする伸張プログラム。
【請求項１１】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、
前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、
ことを実行させることを特徴とする伸張方法。
【請求項１２】
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、
前記データに基づいて符号長が定められる第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、
圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する判断部と、
を含むことを特徴とする伸張装置。
【請求項１３】
符号器及び復号器を含むデータ転送システムであって、
前記符号器は、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、
前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、
前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする第１の判断部と、を含み、
前記復号器は、
前記第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、
前記第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、
前記符号器により得られた圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する第２の判断部と、を含む、
ことを特徴とするデータ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの圧縮技術または伸張技術に関する。
【背景技術】
【０００２】
ＺＩＰと呼ばれる圧縮においては、ＬＺ７７という圧縮アルゴリズムと、ハフマン符号を用いた圧縮アルゴリズムとが併用される。【０００３】
ＬＺ７７は、圧縮対象のファイル内でのデータの繰り返しを利用して圧縮符号を生成する圧縮アルゴリズムである。すなわち、ＬＺ７７では、圧縮対象のデータと一致するデータが先に出現した位置（スライド窓内のアドレス）と、一致したデータの長さ（最長一致データ長）とが生成される。最長一致データ長が長いほど、多くの情報が１つの圧縮符号に変換される。ＺＩＰでは、ＬＺ７７により生成されるスライド窓内のアドレスと最長一致データ長とに対し、さらに変換を行なうことが定められている。その変換によれば、ＬＺ７７で生成された圧縮符号に含まれる最長一致データ長およびスライド窓内のアドレスのそれぞれが、その値の大きさに応じて符号長が変化する圧縮符号に変換される。【０００４】
一方、ハフマン符号化では、圧縮対象のデータは、圧縮対象のデータの出現頻度に応じて長さ（符号長）が定められた圧縮符号に変換される。ハフマン符号化では、圧縮符号に変換されるデータの単位（文字コードなど）は予め定められている。【０００５】
ＺＩＰにおいては、最長一致データ長の値に応じて、ＬＺ７７とハフマン符号化とを切り替えて圧縮符号が生成される。圧縮アルゴリズムの切り換えは、最長一致データ長に応じて行なわれ、最長一致データ長の閾値が「３（バイト）」と定められている。すなわち、ＺＩＰにおいては、最長一致データ長が３バイト以上であればＬＺ７７が用いられ、最長一致データ長が３バイトよりも小さければハフマン符号化が用いられる。【０００６】
また、上述のとおり、ハフマン符号化においては、１バイトで表現される文字または記号に対して、その出現頻度に応じて圧縮符号が割り当てられていた。それに対し、文字を複数含む単語に対して、その出現頻度に応じてハフマン符号を割り当てる技術が存在する（例えば、特許文献１など）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１４２０２４号公報
【非特許文献】
【０００８】
【非特許文献１】ＡＰＰＮＯＴＥ．ＴＸＴ  −  ．ＺＩＰ  Ｆｉｌe  Ｆｏｒｍａｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  ６．２．０、［Ｏｎｌｉｎｅ］、２００４年４月２６日、ＰＫＷＡＲＥ  Ｉｎｃ．、インターネット＜ＵＲＬ：http://www.pkware.com/documents/casestudies/APPNOTE.TXT＞
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述の技術によれば、複数の文字を含む単語に対してハフマン符号が割り当てられており、単語に応じてハフマン符号の符号長が定められている。そのため、複数の文字を含む単語に対して割り当てることによりハフマン符号化の圧縮率が向上したことと、ＬＺ７７のスライド窓内のアドレスの値によっては長い符号長が割り当てられてしまうことにより、最長一致データ長が閾値以上であっても圧縮率が大きくなってしまう（圧縮効率がよくない）方の圧縮アルゴリズムが選択されてしまうことがある。【００１０】
本発明の一側面において、圧縮効率を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
一態様によれば、圧縮プログラムが、コンピュータに、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、処理を実行させる。【００１２】
一態様によれば、コンピュータに、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、処理を実行させる圧縮方法を用いる。【００１３】
一態様によれば、圧縮装置が、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする判断部と、を含む。【００１４】
一態様によれば、伸張プログラムが、コンピュータに、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、処理を実行させる。【００１５】
一態様によれば、コンピュータに、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、ことを実行させる伸張方法を用いる。【００１６】
一態様によれば、伸張装置が、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、前記データに基づいて符号長が定められる第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する判断部と、を含む。【００１７】
一態様によれば、データ転送システム内の符号器は、圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする第１の判断部と、を含み、前記データ転送システム内の復号器は、前記第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、前記第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、前記符号器により得られた圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する第２の判断部と、を含む。
【発明の効果】
【００１８】
一側面においては、圧縮効率を向上させることを目的とする。
【図面の簡単な説明】
【００１９】
【図１】図１は、ＺＩＰフォーマットに基づく圧縮処理の処理手順例を示す。
【図２】図２は、最長一致データ長の変換テーブルＴ１およびスライド窓内のアドレスの変換テーブルＴ２の例を示す。
【図３】図３は、ＺＩＰに基づいて圧縮されるデータの例を示す。
【図４】図４は、スライド窓内のアドレスの変換例を示す。
【図５】図５は、コンピュータ１の機能ブロックの構成例を示す。
【図６】図６は、コンピュータ１のハードウェアの構成例を示す。
【図７】図７は、コンピュータ１のプログラムの構成例を示す。
【図８】図８は、実施形態のシステムにおける装置の構成例を示す。
【図９】図９は、文字コードと圧縮符号との対応テーブルＴ３の例を示す。
【図１０】図１０は、単語コードと圧縮符号との対応テーブルＴ４の例を示す。
【図１１】図１１は、圧縮処理の処理手順例を示す。
【図１２】図１２は、対応テーブルＴ４のインデックスＴ５の例を示す。
【図１３】図１３は、本実施形態により圧縮されるデータの例を示す。
【図１４】図１４は、伸張処理の処理手順例を示す。
【発明を実施するための形態】
【００２０】
まず、ＺＩＰフォーマットに基づく圧縮処理について説明する。
【００２１】
図１は、ＺＩＰフォーマットに基づく圧縮処理の処理手順例を示す。ＺＩＰフォーマットに従った圧縮ファイルは、コンピュータが図１に示す手順を実行することで生成される。あるファイルの圧縮が指示されると、圧縮機能が呼び出される（Ｓ１００）。圧縮機能が呼び出されると、コンピュータは、圧縮を指示されたファイルを読み出す（Ｓ１０１）。次に、コンピュータは、ハフマン符号化に用いるハフマン木の生成、圧縮対象のデータの読み出し位置やスライド窓の設定などの前処理を行なう（Ｓ１０２）。
【００２２】
Ｓ１０２の処理後、コンピュータは、スライド窓内のデータに対して、圧縮対象のデータの最長一致文字列の探索を行なう（Ｓ１０３）。次に、コンピュータは、Ｓ１０３の処理で見つけられた最長一致文字列の一致長が３（バイト）以上であるか否かを判断する（Ｓ１０４）。
【００２３】
最長一致文字列の一致長が３以上である場合（Ｓ１０４：ＹＥＳ）、次に、コンピュータは、最長一致文字列の一致長に合わせて、圧縮対象データの読み出し位置を更新する（Ｓ１０５）。Ｓ１０５において、スライド窓含まれるデータ範囲も更新される。コンピュータは、Ｓ１０３での探索により得られた一致長およびスライド窓内のアドレスに対し、再度変換を行なう（Ｓ１０６）。Ｓ１０６の変換により得られる圧縮符号は、アドレスの値が小さいほど符号長が短く、値が大きいほど符号長が長くなる。コンピュータは、Ｓ１０６により得られた圧縮符号がメモリに書き込む（Ｓ１０７）。
【００２４】
Ｓ１０４の判定で、最長一致文字列の一致長が３未満である場合（Ｓ１０４：ＮＯ）は、コンピュータは、圧縮対象のデータの１文字（１バイト）分に対して、ハフマン符号化を行なう（Ｓ１０８）。さらに、コンピュータは、圧縮対象のデータの読出し位置を１バイトずらし（Ｓ１０９）、スライド窓のデータ範囲を更新する。さらに、コンピュータは、Ｓ１０８で得られた圧縮符号をメモリに書き込む（Ｓ１１０）。
【００２５】
Ｓ１０７またはＳ１１０で圧縮符号がメモリに書き込まれると、コンピュータは、ファイル内に圧縮処理を行われていないデータが存在するか否か判断し（Ｓ１１１）、圧縮処理を行われていないデータが存在しない場合（Ｓ１１１：ＹＥＳ）には、圧縮処理を終了する（Ｓ１１２）。圧縮処理を行われていないデータが存在する場合（Ｓ１１１：ＮＯ）には、コンピュータは再度Ｓ１０３の処理を行なう。Ｓ１１１の判定は、例えば、圧縮対象のデータの読み出し位置がファイルの終点であるか否かに基づいて行なわれる。なお、１回目や２回目のＳ１０３の処理では、スライド窓内にデータが存在しないので、Ｓ１０４でＮＯと判断される。
【００２６】
次に、図１のＳ１０６の処理で行なわれる最長一致文字列の一致長およびアドレスの変換について説明する。図２は、最長一致文字列の一致長の変換テーブルＴ１およびアドレスの変換テーブルＴ２の例を示す。図２Ａは、一致長に対応するコードと追加ビットの数とを示す変換テーブルＴ１である。図２Ｂは、アドレスに対応するコードと追加ビットの数とを示す変換テーブルＴ２である。
【００２７】
Ｓ１０６の処理において、一致長は、図２Ａに示される「１」〜「２９」までの２９種類のコードのいずれかを用いて変換される。例えば、一致長が「３」である場合には、「１」というコードに変換される。例えば、一致長が「１１」である場合には、「９」というコードに変換され、さらに１ビット「０」が追加されて表現される。一致長が「１２」である場合にも「９」というコードが割り当てられるが、追加ビット「１」が割り当てられ、一致長「１１」と一致長「１２」とが識別される。同様に、例えば、一致長が「１３１」であれば、「２５」コードが割り当てられ、さらに、追加ビット５ビット分で表現される。
【００２８】
一致長と同様に、スライド窓内のアドレスについてもＳ１０６の処理で変換が行なわれる。Ｓ１０６の処理において、スライド窓内のアドレスは、図２Ｂに示される「０」〜「２９」までのいずれかのコードに変換される。一致長の変換と同様に、アドレスの値が大きい場合には、コードに対して追加ビットが付与される。例えば、スライド窓内のアドレスが「１」である場合には、コード「０」に変換される。例えば、スライド窓内のアドレスが「４０９７」である場合には、アドレスがコード「２４」と１１ビットの追加ビットとに変換される。
【００２９】
図２Ａを用いて変換する場合も、図２Ｂを用いて変換する場合も、変換する前の値が大きいほど追加ビット数が大きくなり、結果的に変換後の符号長が長くなる。図２Ａを用いて得られる一致長のコードと、図２Ｂを用いて得られるアドレスのコードとは、それぞれハフマン符号化される。追加ビットに対してハフマン符号化は行なわれない。
【００３０】
図３は、ＺＩＰフォーマットに基づいて圧縮されるデータの例を示す。図３Ａ〜Ｄは、図１のＳ１０３の最長一致文字列の探索により「ｓｈｅ」という単語が最長一致文字列として得られた場合について、圧縮過程のデータを示す。圧縮対象のファイル内のデータがＡＳＣＩＩを用いて表現されている場合には、図３Ａに示すように、「ｓ」、「ｈ」、「ｅ」のそれぞれの文字が８ビットで表現される。例えば、図１のＳ１０３の最長一致文字列の探索で、一致長が「３」であり、アドレスが「１６３８６」であるとすると、図３Ｂに示すデータが得られる。図３Ｂに示される一致長およびアドレスのそれぞれについて、図２Ａおよび図２Ｂを用いて変換を行なうと、図３Ｃに示すデータとなる。一致長「３」はコード「１」に変換され、アドレス「１６３８６」は、コード「２８」が割り当てられ、１３ビットの追加ビットで「１」が表現される。一致長のコード「１」と、アドレスのコード「２８」とがさらにハフマン符号化されると、図３Ｄに示すデータとなる。図３Ｄにおいては、ＬＺ７７を用いて得られた圧縮符号であることを示す識別符号「１」が先頭に付与されている。図３Ｄにおいては、一致長のコード「１」がハフマン符号化されて「ｘ１」となっており、アドレスのコード「２８」がハフマン符号化されて「ｘ２」となっている。すなわち、一例によれば、図３Ｄに示す通り、「ｓｈｅ」という文字列が、識別符号および追加ビットによる１４ビット以上の圧縮符号に変換される。ハフマン符号「ｘ１」、「ｘ２」の値によって、さらに圧縮符号は長くなる。
【００３１】
スライド窓内のアドレスの変換には、図２Ａを用いた方法以外の方法を用いてもよい。図４は、スライド窓内のアドレスの変換例を示す。図４Ａは、スライド窓内のアドレスの一例を示す。図４Ａに示す通り、スライド窓内のアドレスが「４５」であった場合に、スライド窓内のアドレスを示す１６ビットのうちの上位１０ビットが連続して「０」となっている。図４Ｂは、図４Ａに示すアドレスを、上位から連続して値が「０」であるビットの数と、残りの下位ビットとで表現した例である。図４Ｂでは、１０ビット連続の「０」が４ビットで表されている。さらに、上位から連続して値が「０」であるビットの数に対してハフマン符号化を行った結果の例が図４Ｃに示される。図４Ｃでは、「１０」をハフマン符号化した結果が「ｘ３」としている。図４の方法を用いた場合にも、スライド窓内のアドレスの値が大きくなると、符号長は長くなってしまう。
【００３２】
上述の通り、ＺＩＰフォーマットに従った圧縮では、一致長が閾値（３バイト）以上であると、スライド窓内のアドレスの値に応じて符号長が変化する圧縮アルゴリズムが用いられる。すると、スライド窓内のアドレスの値の大きさによっては、単純にハフマン符号化を行なうよりも圧縮符号の符号長が長くなってしまう事態も生じうる。特にスライド窓内のアドレスが大きくなると、圧縮符号の符号長が長くなりやすい。一方、ハフマン符号化では、文字コード（または文字コードの組み合わせ）に対して圧縮符号が割り当てられている。そのため、圧縮符号の符号長は、文字コードに応じて定められる。
【００３３】
本実施形態においては、文字コードと、スライド窓内のアドレスとのように、種別の異なる情報に基づいて圧縮符号の符号長が変化する圧縮アルゴリズムを組み合わせて用いる。本実施形態において、さらに、それぞれの圧縮アルゴリズムにより生成される圧縮符号のうち、圧縮率が小さくなる方が選択的に用いられることで、圧縮率の低減が図られる。
【００３４】
図５は、コンピュータ１の機能ブロックの構成例を示す。コンピュータ１は、制御部１１と記憶部１２とを含む。制御部１１は、圧縮部１１１と伸張部１１２とを含む。圧縮部１１１は、記憶部１２に記憶されたデータファイルの圧縮処理を行なう。すなわち、圧縮部１１１は、データファイルを記憶部１２から読み出し、読み出したデータファイルに含まれるデータを順次圧縮符号に変換し、変換して得られる圧縮符号を記憶部１２に順次格納し、圧縮ファイルを生成する。伸張部１１２は、記憶部１２に記憶された圧縮ファイルの伸張処理を行なう。すなわち、圧縮部１１１は、圧縮ファイルを記憶部１２から読み出し、読み出した圧縮ファイルに含まれる圧縮符号を順次伸張データに変換し、変換して得られる伸張データを記憶部１２に順次格納し、伸張ファイルを生成する。
【００３５】
圧縮部１１１は、判断部１１１１、変換部１１１２および変換部１１１３を含む。判断部１１１１は、記憶部１２から読み出したデータファイルに含まれるデータを順次圧縮符号に変換する処理において、変換部１１１２により生成される圧縮符号と、変換部１１１３により生成される圧縮符号とのうちのいずれに変換するかの判断を行なう。
【００３６】
変換部１１１２は、第１の圧縮アルゴリズムに基づいて圧縮符号を生成する。変換部１１１３は、第２の圧縮アルゴリズムに基づいて圧縮符号を生成する。第１の圧縮アルゴリズム及び第２の圧縮アルゴリズムの少なくとも一方は、可変長の圧縮符号を用いる。
例えば、第１の圧縮アルゴリズムにおいては、記憶部１２から読み出したデータを変換して得られる、データファイル内のデータと異なる種類のデータの値の大きさに応じて、圧縮符号の符号長が変化する。例えば、変換部１１１２は、記憶部１２から読み出したデータに対し、ＬＺ７７に基づく変換を行なう。変換の結果、変換対象のデータがデータファイル内で先に出現した位置を示すアドレスを含む情報が得られ、変換部１１１２で用いられる圧縮符号の符号長は、アドレスの値の大きさに応じて変化する。例えば、アドレスの値が大きいほど長い符号を用いてもよいし、アドレスの値が小さいほど短い符号を用いてもよい。
【００３７】
例えば、第２の圧縮アルゴリズムにおいては、記憶部１２から読み出したデータの値に応じて、圧縮符号の符号長が定められる。例えば、変換部１１１３は、記憶部１２から読み出したデータに対し、ハフマン符号化を行なう。ハフマン符号化では、圧縮対象のデータの値に対して、出現頻度に応じて符号長と圧縮符号とが予め割り当てられているため、記憶部１２から読み出したデータの値に基づいて圧縮符号の符号長が定められる。
【００３８】
判断部１１１１は、変換部１１１２による圧縮処理と、変換部１１１３による圧縮処理とのそれぞれの圧縮処理の圧縮率を算出し、いずれの圧縮処理の方が、圧縮率が良くなるか（小さい値になるか）を判断する。例えば、圧縮率とは、圧縮符号に変換される前のデータに対する圧縮符号の大きさを示す数値である。判断部１１１１は、変換部１１１２および変換部１１１３のうち、圧縮率が良くなる方の変換部により生成された圧縮符号を、記憶部１２に格納する。例えば、判断部１１１１は、圧縮率に基づき判断するのでなく、圧縮符号の符号長に基づき判断することとしてもよい。例えば、判断部１１１１は、符号長が短いほうの圧縮符号を記憶部１２に格納する。
【００３９】
判断部１１１１は、変換部１１１２および変換部１１１３のいずれで生成された圧縮符号であるかを示す識別符号も、圧縮符号と併せて記憶部１２に格納する。例えば、判断部１１１１は、変換部１１１２で生成された圧縮符号には識別符号「１」を付与し、変換部１１１３で生成された圧縮符号には識別符号「０」を付与する。
【００４０】
伸張部１１２は、判断部１１２１、変換部１１２２および変換部１１２３を含む。判断部１１２１は、圧縮ファイル含まれる圧縮符号に付与された識別符号に基づいて、変換部１１２２と変換部１１２３とのいずれにより生成される伸張データを用いるかを判断する。例えば、判断部１１２１は、圧縮ファイルから読み出された圧縮符号に付与された識別符号が「１」であれば、変換部１１２２により生成される伸張データを用い、識別符号が「０」であれば、変換部１１２３により生成される伸張データを用いる。変換部１１２２は、第１の圧縮アルゴリズムに対応する第１の伸張アルゴリズムを用いて伸張処理を行なう。変換部１１２３は、第２の圧縮アルゴリズムに対応する第２の伸張アルゴリズムを用いて伸張処理を行なう。
【００４１】
上述の機能ブロック構成のコンピュータでは、第１の圧縮アルゴリズムと第２の圧縮アルゴリズムとが併用される。前述の通り、第１の圧縮アルゴリズムではアドレスの値の大きさに応じて圧縮符号の符号長が変化し、第２の圧縮アルゴリズムでは圧縮対象のデータの値に対して圧縮符号の符号長が定められている。ＬＺ７７で用いるスライド窓内のアドレスの値と圧縮対象のデータの値と互いに相関関係を有するわけではないので、圧縮対象のデータの値の大小にかかわらず、アドレスの値は大きい値をとり得る。アドレスの値が大きくなると符号長も長くなる傾向にあり、そういった場合には第２の圧縮アルゴリズムの方が圧縮率の値が小さくなることがある。上述の特徴を有する第１の圧縮アルゴリズムと第２の圧縮アルゴリズムとを併用することで、圧縮効率を向上させる、すなわち、よりデータ量の少ない圧縮データに圧縮することができる。
【００４２】
図６は、コンピュータ１のハードウェア構成例を示す。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【００４３】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【００４４】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる。通信インターフェース３１０はネットワーク３を介した通信の制御を行なう。ＳＡＮインターフェース３１１は、コンピュータ１に接続されたストレージエリアネットワークを介して記憶装置と通信の制御を行なう。
【００４５】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であってもよい。
【００４６】
プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って制御部１１の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１２の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（圧縮対象のデータファイル、圧縮ファイル、伸張対象のデータファイル、伸張ファイルなど）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図７を用いて説明する。
【００４７】
図７は、コンピュータ１のプログラムの構成例を示す。コンピュータ１において、図６に示すハードウェア群２１の制御を行なうＯＳ（オペレーションシステム）２２が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ハードウェア２１の制御・管理が行なわれることにより、アプリケーションプログラム２４やミドルウェア２３に従った処理がハードウェア群２１で実行される。さらに、コンピュータ１において、ミドルウェア２３またはアプリケーションプログラム２４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【００４８】
プロセッサ３０１が、ミドルウェア２３またはアプリケーションプログラム２４に含まれる圧縮機能に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア２１を制御して）圧縮部１１１の機能が実現される。また、プロセッサ３０１が、ミドルウェア２３またはアプリケーションプログラム２４に含まれる伸張機能に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア２１を制御して）伸張部１１２の機能が実現される。圧縮機能および伸張機能は、それぞれアプリケーションプログラム２４自体に定義されてもよいし、アプリケーションプログラム２４に従って呼び出されることで実行されるミドルウェア２３の機能であってもよい。
【００４９】
図８は、実施形態のシステムにおける装置の構成例を示す。図８のシステムは、コンピュータ１ａ、コンピュータ１ｂ、基地局２およびネットワーク３を含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。
【００５０】
図５に示す圧縮部１１１と伸張部１１２とは、図８に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれてもよい。例えば、図８のシステムにおいて、コンピュータ１ｂが本実施形態の圧縮処理により圧縮したデータファイルをコンピュータ１ａが取得し、コンピュータ１ａがコンピュータ１ｂから取得した圧縮ファイルを本実施形態の伸張処理により伸張する。すなわち、コンピュータ１ｂが図５に示す圧縮部１１１を含み、コンピュータ１ａが伸張部１１２を含む。また、例えば、図８のシステムにおいて、コンピュータ１ａが本実施形態の圧縮処理により圧縮したデータファイルをコンピュータ１ｂが取得し、コンピュータ１ｂがコンピュータ１ａから取得した圧縮ファイルを本実施形態の伸張処理により伸張する。すなわち、コンピュータ１ｂが図５に示す圧縮部１１１を含み、コンピュータ１ａが伸張部１１２を含む。コンピュータ１ａとコンピュータ１ｂとの双方が、圧縮部１１１および伸張部１１２を備えてもよい。
【００５１】
図９は、文字コードと圧縮符号との対応テーブルＴ３の例を示す。対応テーブルＴ３においては、文字コード、符号長、圧縮符号が対応付けられている。例えば、圧縮符号は、ハフマン符号化のアルゴリズムに基づいて定められたものである。変換部１１１３は、対応テーブルＴ３を参照して、圧縮対象の文字コードを、対応する圧縮符号に変換する。
【００５２】
図１０は、単語コードと圧縮符号との対応テーブルＴ４の例を示す。対応テーブルＴ４においては、単語コード、符号長、圧縮符号が対応付けられている。単語コードとは、単語に含まれる各文字の文字コードを順に示したものである。変換部１１１３は、対応テーブルＴ４を参照して圧縮対象の単語コードを、対応する圧縮符号に変換する。
【００５３】
図１１は、圧縮処理の処理手順例を示す。ファイルに対して圧縮指示が行なわれると、圧縮機能が呼び出される（Ｓ２００）。圧縮部１１１は、圧縮対象のファイルを読み出す（Ｓ２０１）。次に、圧縮部は、対応テーブルＴ３およびＴ４の読み出し、ファイルからのデータ読み出し位置の初期設定、スライド窓の初期設定などの前処理を行なう（Ｓ２０２）。
【００５４】
Ｓ２０２の処理を終えると、変換部１１１２がスライド窓内の最長一致文字列の探索を行なう（Ｓ２０３）。次に、判断部１１１１は、Ｓ２０３の探索により得られた一致長が閾値（３バイト）以上であるか否かを判定する（Ｓ２０４）。
【００５５】
Ｓ２０４の判定で、一致長が閾値以上であると判定された場合（Ｓ２０４：ＹＥＳ）は、変換部１１１３は単語リストを参照する（Ｓ２０５）。単語リストは、例えば、図１０に示す対応テーブルＴ４である。判断部１１１１は、Ｓ２０５の単語リストの参照結果に応じて、圧縮対象のデータの読み出し位置から読み出した文字列が単語リスト内登録されているか否かを判定する（Ｓ２０６）。単語リスト内に該当単語がある場合に（Ｓ２０６：ＹＥＳ）には、変換部１１１２は、Ｓ２０３の最長一致文字列の探索により得られた一致長と、スライド窓内のアドレスとのそれぞれを変換する（Ｓ２０７）。Ｓ２０７の変換は、例えば、図２Ａおよび図２Ｂに示す変換テーブルに基づいて行なう。もしくは、変換部１１１２は、図４に示す変換方法を用いてＳ２０７の変換を行なってもよい。さらに、判断部１１１１は、変換部１１１２による変換の圧縮率と、変換部１１１３の変換による圧縮率とを算出する（Ｓ２０８）。次に、判断部１１１１は、Ｓ２０８で算出した圧縮率を比較し、変換部１１１２により変換の圧縮率の方が、値が小さくなるか否かを判断する（Ｓ２０９）。
【００５６】
Ｓ２０６で該当する単語が単語リストに無いと判定された場合（Ｓ２０６：ＮＯ）か、またはＳ２０９で変換部１１１２による変換の方が圧縮率の値が小さくなると判定された場合（Ｓ２０９：ＹＥＳ）は、変換部１１１２により圧縮符号の生成が行なわれる。すなわち、変換部１１１２は、Ｓ２０３で得られた一致長に応じて、圧縮対象のデータの読み出し位置を更新し（Ｓ２１０）、さらに、Ｓ２０７の変換で得られた圧縮符号をメモリに書き込む（Ｓ２１１）。
【００５７】
Ｓ２０９の判定で、変換部１１１２による変換の方が圧縮率の値が小さくならないと判定された場合（Ｓ２０９：ＮＯ）は、変換部１１１３は、Ｓ２０５で見つけ出した単語に対応する圧縮符号を対応テーブルＴ４から取得する（Ｓ２１２）。
【００５８】
Ｓ２０３の探索により得られた一致長が閾値（３バイト）未満である場合（Ｓ２０４：ＮＯ）は、変換部１１１３は、圧縮対象のデータの読み出し位置から１文字分のデータ（ＡＳＣＩＩでは１バイト）に対してハフマン符号化を行なう（Ｓ２１３）。Ｓ２１３の処理において、変換部１１１３は、文字コードに対応する圧縮符号を対応テーブルＴ３から取得する。
【００５９】
変換部１１１３は、Ｓ２１２またはＳ２１３の処理で圧縮符号を取得すると、圧縮対象のデータの読み出し位置の更新を行なう（Ｓ２１４）。変換部１１１３は、１文字に対応する圧縮符号を取得した場合には読出し位置を１文字分進め、単語に対応する圧縮符号を取得した場合には単語の文字数分読み出し位置を進める。さらに、変換部１１１３は、Ｓ２１２またはＳ２１３の処理で取得した圧縮符号をメモリに書き込む（Ｓ２１５）。
【００６０】
圧縮部１１１は、Ｓ２１１またはＳ２１５の処理が行なわれると、Ｓ２１０またはＳ２１４の処理で更新された読み出し位置がファイルの終点であるか否かを判断する。読み出し位置がファイルの終点である場合（Ｓ２１６：ＹＥＳ）には、圧縮部１１１は、メモリに書き込まれたデータを圧縮ファイルとしてクローズして圧縮処理を終了する（Ｓ２１７）。ファイルクローズの際には、圧縮部１１１は、ハフマン木を生成するための情報（対応テーブルＴ３および対応テーブルＴ４など）もファイルに含ませる。読み出し位置がファイルの終点でない場合（Ｓ２１６：ＮＯ）には、Ｓ２０３の処理が再度行なわれる。
【００６１】
上述の手順によれば、圧縮対象のデータを変換して得られる値の大きさに応じて符号長が変化する圧縮アルゴリズムと、圧縮対象のデータの値によって符号長が定められる圧縮アルゴリズムとのうち、圧縮率が小さくなる方が採用される。
【００６２】
図１２は、対応テーブルＴ４のインデックスＴ５の例を示す。図１１に示すＳ２０５の処理において、変換部１１１３は、例えば、図１２のインデックスＴ５を用いて対応テーブルＴ４を参照する。例えば、図１２のインデックスＴ５は、１６ビットのポインタを２５６種類格納する領域に格納される。例えば、対応テーブルＴ４において単語の頭文字が同じもののうち最上位の単語の位置を示すポインタが、インデックスＴ５内の頭文字の文字コードに対応する位置に格納される。例えば、「ａ」から始まる単語が対応テーブルＴ４に登録されているかを確認する場合に、インデックス情報内の９７×１６ビット目から格納されているポインタｑ０に基づいて、対応テーブルＴ４を参照する。（「ａ」の文字コードは０ｘ６１であり、１０進数で９７である。また、ここでは各ポインタのサイズを１６ビットとしている。）ポインタｑ０は、例えば、図１０に示す対応テーブル内の“ａｂｌｅ”の単語コードが格納される位置を示す。インデックスＴ５を用いることで、図１１に示すＳ２０５の処理において、対応テーブルＴ４を参照する範囲を狭めることができる。
【００６３】
図１３は、本実施形態により圧縮されるデータの例を示す。図１３Ａは、「ｓｈｅ」という文字列の圧縮前の状態を示す。各文字８ビットであり、合計２４ビットである。
図１３ｂは、変換部１１１２の変換により生成される圧縮符号の例を示す。図１３Ｂに示す圧縮符号は、図３Ｄと同様に、識別符号「１」、一致長のコードのハフマン符号（ｘ１）、スライド窓内のアドレスのコードのハフマン符号（ｘ２）、スライド窓内のアドレスを表現するための追加ビット（１）を含む。最長一致文字列がスライド窓内のどこに見つかるかに応じて、追加ビットに用いられるビット数が定められる。図１３Ｃは、変換部１１１３の変換により得られる圧縮符号の例を示す。図１３Ｃの圧縮符号は、識別符号「０」と、単語「ｓｈｅ」と対応テーブルＴ４により対応づけられた圧縮符号（ｘ４）とを含む。単語「ｓｈｅ」に対して割り当てられたハフマン符号が１０ビットであるので、図１３Ｃの圧縮符号の符号長は１３ビットとなる。図１３Ｂの圧縮符号は、スライド窓内のアドレスを表現するための追加ビットに１３ビット要するため、図１３Ｃの圧縮符号の方が短く、圧縮率も小さくなる。
【００６４】
図１４は、伸張処理の処理手順例を示す。圧縮ファイルに対し伸張が指示されると、伸張機能が呼び出される（Ｓ３００）。伸張部１１２は、記憶部１２に記憶された圧縮ファイルを読み出す（Ｓ３０１）。次に、伸張部１１２は、圧縮ファイルからの圧縮符号の読み出し位置の初期設定、スライド窓の初期設定、ハフマン木の生成などの前処理を行なう（Ｓ３０２）。
【００６５】
伸張部１１２は、圧縮符号の読み出し位置から１ビットの識別符号を読み出す（Ｓ３０３）。判断部１１２１は、読み出した識別符号が「１」であるか否かを判断する（Ｓ３０４）。識別符号が「１」である場合（Ｓ３０４：ＹＥＳ）には、変換部１１２２が伸張処理を実行し、識別符号が「０」である場合（Ｓ３０４：ＮＯ）には、変換部１１２３が伸張処理を実行する。
【００６６】
識別符号が「１」の場合には、変換部１１２２は、識別符号に後続する圧縮符号をさらに圧縮ファイルから読み出し、読みした圧縮符号をスライド窓内のアドレスと、一致長とに変換する（Ｓ３０５）。変換部１１２２は、スライド窓内のアドレスと、一致長とに基づいて、スライド窓内から伸張データを取得する（Ｓ３０６）。さらに、変換部１１２２は、圧縮ファイルからの読み出し位置を読み出した圧縮符号に応じて更新する（Ｓ３０７）。Ｓ３０７の処理において、スライド窓の更新も併せて行なわれる。変換部１１２２は、さらに、Ｓ３０６で取得した伸張データをメモリに書き込む（Ｓ３０８）。
【００６７】
識別符号が「０」の場合には、変換部１１２３は、識別符号に後続する圧縮符号をさらに圧縮ファイルから読み出し、読みした圧縮符号に基づいて、Ｓ３０２で生成されたハフマン木を探索する（Ｓ３０９）。ハフマン木の探索により、変換部１１２３は、圧縮符号に対応する伸張データを取得する（Ｓ３１０）。さらに、変換部１１２３は、読み出した圧縮符号の長さに応じて、圧縮符号の読み出し位置を更新する（Ｓ３１１）。変換部１１２３は、Ｓ３１０で取得した圧縮符号をメモリに書込む（Ｓ３１２）。
【００６８】
Ｓ３０８またはＳ３１２の処理が実行されると、伸張部１１２は、圧縮符号の読み出し位置が圧縮ファイルの終点であるか否かを判断する（Ｓ３１３）。読み出し位置が圧縮ファイルの終点でない場合（Ｓ３１３：ＮＯ）は、Ｓ３０３の処理が再度行なわれる。読み出し位置が圧縮ファイルの終点である場合（Ｓ３１３：ＹＥＳ）には、伸張部１１２は、Ｓ３０８およびＳ３１２の処理でメモリに書き込まれた伸張データによりファイルを生成し、伸張処理を終了する（Ｓ３１４）。ちなみに、上述のＳ３０７とＳ３０８との順序が逆でもよいし、Ｓ３１１とＳ３１２との順序が逆でもよい。
【００６９】
次に、圧縮符号が割り当てられる文字コードおよび単語の数と、圧縮符号の符号長との関係について説明する。ハフマン符号化においては、圧縮符号を割り当てる対象の数が多いほど、圧縮符号の種類が増えるので、圧縮符号が長くなる傾向にある。例えば、文字コードと単語とを合わせて４０９６種類用いたとする。それぞれの文字コードおよび単語が均等な頻度でファイル内に含まれる場合には、それぞれに対して１２ビットの圧縮符号が割り当てられる。均等な出現頻度でない場合には、いずれかの文字コードもしくは単語に対して１２ビットよりも短い圧縮符号が割り当てられることとなる。
【００７０】
一方、変換部１１２による第１の圧縮アルゴリズムを用いた変換では、スライド窓内のアドレスを表現するための追加ビットに１３ビット要することがある。そのため、４０９６種類の文字コードおよび単語に対してハフマン符号を割り当てたとしても、変換部１１３により生成される圧縮符号の方が短くなる状況は充分に生じうる。すなわち、１３ビット（一致長のコードおよびスライド窓内のアドレスのコードをハフマン符号化した分もあるので、実際は１３ビット以上である）よりも符号長が小さいハフマン符号が割り当てられるのであれば、上述の実施例を適用することにより圧縮率が小さくなる可能性がある。
【００７１】
単一の単語以上に長い最長一致文字列がスライド窓内に見つかる場合には、一つの圧縮符号に変換されるデータ量が大きくなるので、圧縮率が小さくなる傾向にある。そういった場合にも圧縮率が小さくなる方の圧縮符号を採用するため、ＬＺ７７による利点は失われない。
【００７２】
上記に説明される実施形態は一例であり、発明を実施しうる範囲内で適宜変形可能である。また、上記の説明された各処理のさらに詳細な内容については、当業者に周知の技術が適宜用いられる。
【符号の説明】
【００７３】
１        コンピュータ
２        基地局
３        ネットワーク
１ａ      コンピュータ
１ｂ      コンピュータ
１１      制御部
１２      記憶部
１１１    圧縮部
１１２    伸張部
１１１１  判断部
１１１２  変換部
１１２１  変換部
１１２１  判断部
１１２２  変換部
１１２３  変換部
【図１】
2014030189.tif 000003
【図２】
2014030189.tif 000004
【図３】
2014030189.tif 000005
【図４】
2014030189.tif 000006
【図５】
2014030189.tif 000007
【図６】
2014030189.tif 000008
【図７】
2014030189.tif 000009
【図８】
2014030189.tif 000010
【図９】
2014030189.tif 000011
【図１０】
2014030189.tif 000012
【図１１】
2014030189.tif 000013
【図１２】
2014030189.tif 000014
【図１３】
2014030189.tif 000015
【図１４】
2014030189.tif 000016
【手続補正書】
【提出日】平成27年5月14日(2015.5.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、
処理を実行させることを特徴とする圧縮プログラム。
【請求項２】
前記情報は、前記データを含むファイル内の指定範囲内において前記データと一致する部分の位置を示す数値と、前記一致する部分のデータ長を示す数値とを含む、
ことを特徴とする請求項１に記載の圧縮プログラム。
【請求項３】
前記第１の圧縮処理における符号長は、前記位置を示す数値が大きいほど長く定められる、
ことを特徴とする請求項２に記載の圧縮プログラム。
【請求項４】
前記データは文字コードまたは文字コードの組み合わせを示す、
ことを特徴とする請求項１〜３のいずれか１項に記載の圧縮プログラム。
【請求項５】
前記第２の圧縮処理において、前記文字コードおよび前記文字コードの組み合わせのそれぞれに対して、それぞれの出現頻度に応じた符号長の圧縮符号が割り当てられる、
ことを特徴とする請求項４に記載の圧縮プログラム。
【請求項６】
前記文字コードおよび前記文字コードの組み合わせのそれぞれに対して割り当てられる圧縮符号の符号長は、いずれも前記情報に基づいて定められる符号長の最大値よりも小さい、
ことを特徴とする請求項５に記載の圧縮プログラム。
【請求項７】
前記コンピュータに、さらに、
前記データを変換して得られる圧縮符号に、前記第１の圧縮処理により生成された圧縮符号であるか、前記第２の圧縮処理により生成された圧縮符号であるかを示す識別符号を付与する、
処理を実行させることを特徴とする請求項１〜６のいずれか１項に記載の圧縮プログラム。
【請求項８】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、
処理を実行させることを特徴とする圧縮方法。
【請求項９】
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、
前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、
前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする判断部と、
を含むことを特徴とする圧縮装置。
【請求項１０】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、
前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、
処理を実行させることを特徴とする伸張プログラム。
【請求項１１】
コンピュータに、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、
前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、
ことを実行させることを特徴とする伸張方法。
【請求項１２】
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、
前記データに基づいて符号長が定められる第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、
圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する判断部と、
を含むことを特徴とする伸張装置。
【請求項１３】
符号器及び復号器を含むデータ転送システムであって、
前記符号器は、
圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、
前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、
前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする第１の判断部と、を含み、
前記復号器は、
前記第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、
前記第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、
前記符号器により得られた圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する第２の判断部と、を含む、
ことを特徴とするデータ転送システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
最長一致文字列の一致長が３以上である場合（Ｓ１０４：ＹＥＳ）、次に、コンピュータは、最長一致文字列の一致長に合わせて、圧縮対象データの読み出し位置を更新する（Ｓ１０５）。Ｓ１０５において、スライド窓に含まれるデータ範囲も更新される。コンピュータは、Ｓ１０３での探索により得られた一致長およびスライド窓内のアドレスに対し、再度変換を行なう（Ｓ１０６）。Ｓ１０６の変換により得られる圧縮符号は、アドレスの値が小さいほど符号長が短く、値が大きいほど符号長が長くなる。コンピュータは、Ｓ１０６により得られた圧縮符号をメモリに書き込む（Ｓ１０７）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４５
【補正方法】変更
【補正の内容】
【００４５】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力デバイス３０７は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であってもよい。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
図７は、コンピュータ１のプログラムの構成例を示す。コンピュータ１において、図６に示すハードウェア群２１の制御を行なうＯＳ（オペレーティングシステム）２２が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ハードウェア群２１の制御・管理が行なわれることにより、アプリケーションプログラム２４やミドルウェア２３に従った処理がハードウェア群２１で実行される。さらに、コンピュータ１において、ミドルウェア２３またはアプリケーションプログラム２４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
図５に示す圧縮部１１１と伸張部１１２とは、図８に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれてもよい。例えば、図８のシステムにおいて、コンピュータ１ｂが本実施形態の圧縮処理により圧縮したデータファイルをコンピュータ１ａが取得し、コンピュータ１ａがコンピュータ１ｂから取得した圧縮ファイルを本実施形態の伸張処理により伸張する。すなわち、コンピュータ１ｂが図５に示す圧縮部１１１を含み、コンピュータ１ａが伸張部１１２を含む。また、例えば、図８のシステムにおいて、コンピュータ１ａが本実施形態の圧縮処理により圧縮したデータファイルをコンピュータ１ｂが取得し、コンピュータ１ｂがコンピュータ１ａから取得した圧縮ファイルを本実施形態の伸張処理により伸張する。すなわち、コンピュータ１ａが図５に示す圧縮部１１１を含み、コンピュータ１ｂが伸張部１１２を含む。コンピュータ１ａとコンピュータ１ｂとの双方が、圧縮部１１１および伸張部１１２を備えてもよい。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００５３
【補正方法】変更
【補正の内容】
【００５３】
図１１は、圧縮処理の処理手順例を示す。ファイルに対して圧縮指示が行なわれると、圧縮機能が呼び出される（Ｓ２００）。圧縮部１１１は、圧縮対象のファイルを読み出す（Ｓ２０１）。次に、圧縮部１１１は、対応テーブルＴ３およびＴ４の読み出し、ファイルからのデータ読み出し位置の初期設定、スライド窓の初期設定などの前処理を行なう（Ｓ２０２）。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
Ｓ２０４の判定で、一致長が閾値以上であると判定された場合（Ｓ２０４：ＹＥＳ）は、変換部１１１３は単語リストを参照する（Ｓ２０５）。単語リストは、例えば、図１０に示す対応テーブルＴ４である。判断部１１１１は、Ｓ２０５の単語リストの参照結果に応じて、圧縮対象のデータの読み出し位置から読み出した文字列が単語リスト内登録されているか否かを判定する（Ｓ２０６）。単語リスト内に該当単語がある場合（Ｓ２０６：ＹＥＳ）には、変換部１１１２は、Ｓ２０３の最長一致文字列の探索により得られた一致長と、スライド窓内のアドレスとのそれぞれを変換する（Ｓ２０７）。Ｓ２０７の変換は、例えば、図２Ａおよび図２Ｂに示す変換テーブルに基づいて行なう。もしくは、変換部１１１２は、図４に示す変換方法を用いてＳ２０７の変換を行なってもよい。さらに、判断部１１１１は、変換部１１１２による変換の圧縮率と、変換部１１１３による変換の圧縮率とを算出する（Ｓ２０８）。次に、判断部１１１１は、Ｓ２０８で算出した圧縮率を比較し、変換部１１１２による変換の圧縮率の方が、値が小さくなるか否かを判断する（Ｓ２０９）。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
図１３は、本実施形態により圧縮されるデータの例を示す。図１３Ａは、「ｓｈｅ」という文字列の圧縮前の状態を示す。各文字は８ビットであり、合計２４ビットである。
図１３Ｂは、変換部１１１２の変換により生成される圧縮符号の例を示す。図１３Ｂに示す圧縮符号は、図３Ｄと同様に、識別符号「１」、一致長のコードのハフマン符号（ｘ１）、スライド窓内のアドレスのコードのハフマン符号（ｘ２）、スライド窓内のアドレスを表現するための追加ビット（１）を含む。最長一致文字列がスライド窓内のどこに見つかるかに応じて、追加ビットに用いられるビット数が定められる。図１３Ｃは、変換部１１１３の変換により得られる圧縮符号の例を示す。図１３Ｃの圧縮符号は、識別符号「０」と、単語「ｓｈｅ」と対応テーブルＴ４により対応づけられた圧縮符号（ｘ４）とを含む。単語「ｓｈｅ」に対して割り当てられたハフマン符号が１０ビットであるので、図１３Ｃの圧縮符号の符号長は１３ビットとなる。図１３Ｂの圧縮符号は、スライド窓内のアドレスを表現するための追加ビットに１３ビット要するため、図１３Ｃの圧縮符号の方が短く、圧縮率も小さくなる。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６９
【補正方法】変更
【補正の内容】
【００６９】
次に、圧縮符号が割り当てられる文字コードおよび単語の数と、圧縮符号の符号長との関係について説明する。ハフマン符号化においては、圧縮符号を割り当てる対象の数が多いほど、圧縮符号の種類が増えるので、圧縮符号が長くなる傾向にある。例えば、文字コードと単語とを合わせて４０９６種類の圧縮符号を用いたとする。それぞれの文字コードおよび単語が均等な頻度でファイル内に含まれる場合には、それぞれに対して１２ビットの圧縮符号が割り当てられる。均等な出現頻度でない場合には、いずれかの文字コードもしくは単語に対して１２ビットよりも短い圧縮符号が割り当てられることとなる。
【手続補正書】
【提出日】平成27年10月13日(2015.10.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、
処理を実行させることを特徴とする圧縮プログラム。
【請求項２】
前記情報は、前記データを含むファイル内の指定範囲内において前記データと一致する部分の位置を示す数値と、前記一致する部分のデータ長を示す数値とを含む、
ことを特徴とする請求項１に記載の圧縮プログラム。
【請求項３】
前記第１の圧縮処理における符号長は、前記位置を示す数値が大きいほど長く定められる、
ことを特徴とする請求項２に記載の圧縮プログラム。
【請求項４】
前記データは文字コードまたは文字コードの組み合わせを示す、
ことを特徴とする請求項１〜３のいずれか１項に記載の圧縮プログラム。
【請求項５】
前記第２の圧縮処理において、前記文字コードの組み合わせのそれぞれに対して、それぞれの出現頻度に応じた符号長の圧縮符号が割り当てられる、
ことを特徴とする請求項４に記載の圧縮プログラム。
【請求項６】
前記文字コードの組み合わせのそれぞれに対して割り当てられる圧縮符号の符号長は、いずれも前記情報に基づいて定められる符号長の最大値よりも小さい、
ことを特徴とする請求項５に記載の圧縮プログラム。
【請求項７】
前記コンピュータに、さらに、
前記データを変換して得られる圧縮符号に、前記第１の圧縮処理により生成された圧縮符号であるか、前記第２の圧縮処理により生成された圧縮符号であるかを示す識別符号を付与する、
処理を実行させることを特徴とする請求項１〜６のいずれか１項に記載の圧縮プログラム。
【請求項８】
コンピュータに、
処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、
処理を実行させることを特徴とする圧縮方法。
【請求項９】
処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、
単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、
前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする判断部と、
を含むことを特徴とする圧縮装置。
【請求項１０】
コンピュータに、
処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、
前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、
処理を実行させることを特徴とする伸張プログラム。
【請求項１１】
コンピュータに、
処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、
前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、
ことを実行させることを特徴とする伸張方法。
【請求項１２】
処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、
単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、
圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する判断部と、
を含むことを特徴とする伸張装置。
【請求項１３】
符号器及び復号器を含むデータ転送システムであって、
前記符号器は、
処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、
単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、
前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする第１の判断部と、を含み、
前記復号器は、
前記第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、
前記第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、
前記符号器により得られた圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する第２の判断部と、を含む、
ことを特徴とするデータ転送システム。 
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
一態様によれば、圧縮プログラムが、コンピュータに、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、処理を実行させる。 
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
一態様によれば、コンピュータに、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なった場合の圧縮結果と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なった場合の圧縮結果とに基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号に前記データを変換する、処理を実行させる圧縮方法を用いる。 
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
一態様によれば、圧縮装置が、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする判断部と、を含む。 
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
一態様によれば、伸張プログラムが、コンピュータに、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、処理を実行させる。 
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
一態様によれば、コンピュータに、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理とのうちのいずれかを示す識別符号を、圧縮ファイルから読み出し、前記識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の圧縮処理に対応する第１の伸張処理と、前記第２の圧縮処理に対応する第２の伸張処理とのうちいずれの伸張処理を実行するか判断する、ことを実行させる伸張方法を用いる。 
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
一態様によれば、伸張装置が、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する判断部と、を含む。 
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
一態様によれば、データ転送システム内の符号器は、処理対象データのなかから最長一致文字列探索によって特定された圧縮対象のデータを所定のアルゴリズムにより変換して得られる、前記データと種別の異なる情報に基づいて符号長が定められる第１の圧縮処理を前記データに対して行なう第１の圧縮部と、単語リストを参照し前記データに基づいて符号長が定められる第２の圧縮処理を前記データに対して行なう第２の圧縮部と、前記第１の圧縮部による前記第１の圧縮処理と、前記第２の圧縮部による前記第２の圧縮処理との圧縮結果に基づいて、圧縮率が小さい圧縮処理により生成された圧縮符号を、前記データと変換させる圧縮符号とする第１の判断部と、を含み、前記データ転送システム内の復号器は、前記第１の圧縮処理に対応する伸張処理を実行する第１の伸張部と、前記第２の圧縮処理に対応する伸張処理を実行する第２の伸張部と、前記符号器により得られた圧縮ファイルから読み出される識別符号に応じて、前記圧縮ファイルに含まれる前記識別符号に後続する圧縮符号に対して、前記第１の伸張部と、前記第２の伸張部とのうちいずれに処理を実行させるか判断する第２の判断部と、を含む。 
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
図１２は、対応テーブルＴ４のインデックスＴ５の例を示す。図１１に示すＳ２０５の処理において、変換部１１１３は、例えば、図１２のインデックスＴ５を用いて対応テーブルＴ４を参照する。例えば、図１２のインデックスＴ５は、１６ビットのポインタを２５６種類格納する領域に格納される。例えば、対応テーブルＴ４において単語の頭文字が同じもののうち最上位の単語の位置を示すポインタが、インデックスＴ５内の頭文字の文字コードに対応する位置に格納される。例えば、「ａ」から始まる単語が対応テーブルＴ４に登録されているかを確認する場合に、インデックス情報内の９７×１６ビット目から格納されているポインタｑ２７に基づいて、対応テーブルＴ４を参照する。（「ａ」の文字コードは０ｘ６１であり、１０進数で９７である。また、ここでは各ポインタのサイズを１６ビットとしている。）ポインタｑ２７は、例えば、図１０に示す対応テーブル内の“ａｂｌｅ”の単語コードが格納される位置を示す。インデックスＴ５を用いることで、図１１に示すＳ２０５の処理において、対応テーブルＴ４を参照する範囲を狭めることができる。 
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
図１３は、本実施形態により圧縮されるデータの例を示す。図１３Ａは、「ｓｈｅ」という文字列の圧縮前の状態を示す。各文字８ビットであり、合計２４ビットである。図１３ｂは、変換部１１１２の変換により生成される圧縮符号の例を示す。図１３Ｂに示す圧縮符号は、図３Ｄと同様に、識別符号「１」、一致長のコードのハフマン符号（ｘ１）、スライド窓内のアドレスのコードのハフマン符号（ｘ２）、スライド窓内のアドレスを表現するための追加ビット（１）を含む。最長一致文字列がスライド窓内のどこに見つかるかに応じて、追加ビットに用いられるビット数が定められる。図１３Ｃは、変換部１１１３の変換により得られる圧縮符号の例を示す。図１３Ｃの圧縮符号は、識別符号「０」と、単語「ｓｈｅ」と対応テーブルＴ４により対応づけられた圧縮符号（ｘ４）とを含む。単語「ｓｈｅ」に対して割り当てられたハフマン符号が１０ビットであるので、図１３Ｃの圧縮符号の符号長は１１ビットとなる。図１３Ｂの圧縮符号は、スライド窓内のアドレスを表現するための追加ビットに１３ビット要するため、図１３Ｃの圧縮符号の方が短く、圧縮率も小さくなる。
【国際調査報告】
2014030189.tif 000017
2014030189.tif 000018
2014030189.tif 000019
2014030189.tif 000020