(57)【要約】【課題】テーブルの使用状況に応じて圧縮率を高めることを可能にする。【解決手段】圧縮装置が、入力されたシンボルが複数のエントリを有する第１テーブルに未登録の場合に、前記複数のエントリのうちの所定のエントリに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理とを行う。【選択図】図１３
2020184672.tif 000002
【特許請求の範囲】
【請求項１】
圧縮装置が、入力されたシンボルが複数のエントリを有する第１テーブルに未登録である場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理と、を行い、
解凍装置が、前記非圧縮を示す指標データ及び前記シンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、前記圧縮を示す指標データと前記位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、を行う
データの圧縮及び解凍方法。
【請求項２】
前記圧縮装置が、前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記位置情報を表現するビット数を算出し、前記ビット数で表現された前記位置情報を出力し、
前記解凍装置が、前記第２テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記位置情報を表現するビット数を算出し、前記ビット数を用いて前記解凍装置に入力されるビット列から前記位置情報を抽出する
請求項１に記載のデータの圧縮及び解凍方法。
【請求項３】
前記圧縮装置が、前記第１テーブルの前記複数のエントリの使用状況を示す情報を、前記第１テーブルの使用中のエントリ数ｋ及び下記式１を用いて算出し、
前記解凍装置が、前記第２テーブルの前記複数のエントリの使用状況を示す情報を、使用中の前記第２テーブルのエントリ数ｋ及び下記式１を用いて算出する、
請求項１又は２に記載のデータの圧縮及び解凍方法。
式１：ｃｅｉｌ（ｌｏｇ２ｋ）
【請求項４】
前記圧縮装置が、前記第１テーブルの前記複数のエントリの使用状況を示す情報を、所定数のシンボルに対する圧縮処理の結果における前記第１テーブルの使用率と、シンボルが登録されたエントリのヒット率と、下記式２とを用いて算出し、
前記解凍装置が、前記第２テーブルの前記複数のエントリの使用状況を示す情報を、前記所定数のシンボルに対する解凍処理の結果における前記第２テーブルの使用率と、シンボルが登録されたエントリのヒット率と、下記式２とを用いて算出する、
請求項１又は２に記載のデータの圧縮及び解凍方法。
式２：ｃｅｉｌ（ｌｏｇ２（（使用率／ヒット率）＊エントリ数））
【請求項５】
前記位置情報は、前記第１テーブル及び前記第２テーブルの前記複数のエントリに対して先頭のエントリから順に割り当てられたインデックス番号であり、
前記圧縮装置は、前記シンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記シンボルを前記第１テーブルの先頭のエントリに移動させるともに、前記第１テーブルの前記先頭のエントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させ、
前記解凍装置は、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記シンボルを前記第２テーブルの先頭のエントリ
に移動させるともに、前記第２テーブルの先頭のエントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させる
請求項１から４のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項６】
前記圧縮装置は、前記シンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記第１テーブルに関して、前記ヒットしたエントリに登録されていたシンボルを前記ヒットしたエントリより先頭側にある所定の移動先エントリに登録するとともに、前記移動先エントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させ、
前記解凍装置は、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記第２テーブルに関して、前記ヒットしたエントリ中のシンボルを前記ヒットしたエントリより先頭側にある所定の移動先エントリに登録するとともに、前記移動先エントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させる
請求項５に記載のデータの圧縮及び解凍方法。
【請求項７】
前記所定の移動先エントリは、前記第１テーブル及び前記第２テーブルにおける先頭のエントリである
請求項６に記載のデータの圧縮及び解凍方法。
【請求項８】
前記所定の移動先エントリは、前記第１テーブル及び前記第２テーブルにおいて、前記ヒットしたエントリから先頭方向に所定数だけ遡った位置にあるエントリであり、
前記圧縮装置及び前記解凍装置は、前記所定数だけ遡った位置が先頭を超える場合に、先頭のエントリを移動先に設定する
請求項６に記載のデータの圧縮及び解凍方法。
【請求項９】
前記圧縮装置は、前記第１テーブルの全てのエントリが使用中の状態における、前記シンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記シンボルを前記第１テーブルの先頭のエントリに登録するとともに、前記第１テーブルの前記先頭のエントリから末尾のエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させて前記末尾に登録されていたエントリ中のシンボルを削除し、
前記解凍装置は、前記第２テーブルの全てのエントリが使用中の状態における、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記シンボルを前記第２テーブルの先頭のエントリに登録するとともに、前記第２テーブルの前記先頭のエントリから末尾のエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させて前記末尾に登録されていたエントリ中のシンボルを削除する
請求項５から８のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１０】
前記圧縮装置は、前記シンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記第１テーブルにおける第１エントリが空き状態であれば、前記第１テーブルにおける第１エントリに前記シンボルを登録し、前記第１テーブルの全てのエントリが使用中であれば、前記第１テーブルにおける第１エントリに前記シンボルを上書き登録し、
前記解凍装置は、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記第２テーブルにける第１エントリが空き状態であれば、前記第２テーブルにおける第１エントリに前記シンボルを登録し、前記第２テ
ーブルの全てのエントリが使用中であれば、前記第２テーブルにおける第１エントリに前記シンボルを上書き登録する、
請求項５から８のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１１】
前記第１テーブルにおける第１エントリが前記第１テーブルの末尾のエントリであり、
前記第２テーブルにおける第１エントリが前記第２テーブルの末尾のエントリである
請求項１０に記載のデータの圧縮及び解凍方法。
【請求項１２】
前記圧縮装置は、前記第１テーブルに関して、シンボルが登録されたエントリのヒット数、又はシンボルが登録されたエントリのミスヒット数が所定値に達した場合に、シンボルを登録しているエントリのうちインデックス番号が最大のエントリ中のシンボルを削除し、
前記解凍装置は、前記第２テーブルに関して、シンボルが登録されたエントリのヒット数、又はシンボルが登録されたエントリのミスヒット数が所定値に達した場合に、シンボルを登録しているエントリのうちインデックス番号が最大のエントリ中のシンボルを削除する
請求項５から１１のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１３】
前記圧縮装置は、前記第１テーブルに関して、前記インデックス番号が最大のエントリが先頭から所定範囲にあるエントリに該当する場合には、前記インデックス番号が最大のエントリ中のシンボルを削除せず、
前記解凍装置は、前記第２テーブルに関して、前記インデックス番号が最大のエントリが先頭から所定範囲にあるエントリに該当する場合には、前記インデックス番号が最大のエントリ中のシンボルを削除しない
請求項１２に記載のデータの圧縮及び解凍方法。
【請求項１４】
前記第１テーブル及び前記第２テーブルにおける同一の所定エントリに命令を示す命令シンボルが登録されており、
前記圧縮装置は、圧縮を示す指標データと前記所定エントリを示す位置情報とを出力するとともに、前記命令シンボルが示す命令を実行し、
前記解凍装置は、前記圧縮装置から受信される、前記圧縮を示す指標データと前記所定エントリを示す位置情報とに基づいて、前記第２テーブルにおける前記所定エントリに登録された前記命令シンボルを読み出し、前記命令シンボルが示す命令を実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１５】
前記第１テーブル及び前記第２テーブルにおける同一の所定エントリに前記解凍装置に実行させる命令を示す命令シンボルが登録されており、
前記圧縮装置は、非圧縮を示す指標データと前記命令シンボルとを出力し、
前記解凍装置は、前記非圧縮を示す指標データに基づく前記命令シンボルの登録処理において前記第２テーブルに既に前記命令シンボルが登録されていることに対する例外処理として前記命令シンボルが示す命令を実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１６】
前記圧縮装置が、前記解凍装置に命令を実行させる場合に、圧縮を示す指標データと前記第１テーブルの空き状態のエントリを示す位置情報とを出力し、
前記解凍装置が、前記圧縮装置から受信された、前記圧縮を示す指標データ及び前記位置情報に基づくシンボルの読出処理において前記位置情報が示す前記第２テーブルのエントリにシンボルが登録されていないことによって生じる例外の発生時に、前記命令を示す情報を取得して実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１７】
前記圧縮装置が、前記圧縮を示す指標データ及び前記第１テーブルの空き状態のエントリを示す位置情報の出力に続いて、非圧縮を示す指標データと前記命令を示す命令シンボルとを出力し、
前記解凍装置は、前記例外の発生時に、前記命令シンボルが示す命令を実行する
請求項１６に記載のデータの圧縮及び解凍方法。
【請求項１８】
前記圧縮装置が、前記解凍装置に命令を実行させる場合に、非圧縮を示す指標データと前記第１テーブルにおいて登録中のシンボルとを出力し、
前記解凍装置が、前記圧縮装置から受信された、前記非圧縮を示す指標データに基づくシンボルの登録処理において前記第２テーブルに同一のシンボルが登録されていることによって生じる例外の発生時に、前記命令を示す情報を取得して実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１９】
前記圧縮装置が、前記非圧縮を示す指標データ及び前記第１テーブルにおいて登録中のシンボルの出力に続いて、非圧縮を示す指標データと前記命令を示す命令シンボルとを出力し、
前記解凍装置は、前記例外の発生時に、前記命令シンボルが示す命令を実行する
請求項１８に記載のデータの圧縮及び解凍方法。
【請求項２０】
前記シンボルは、前記圧縮装置の前段に位置する他の圧縮装置によって圧縮処理が施されたシンボル列をなすシンボルであり、
前記解凍装置が出力する前記シンボルが、前記シンボル列の一部として、前記解凍装置の後段にある他の解凍装置に入力される
請求項１から１９のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項２１】
前記第１テーブル及び前記第２テーブルは、テーブルの分割によって得られた複数のバンクの一つであり、前記第１テーブル及び前記第２テーブルの選択は、同一のハッシュ関数を用いて行う
請求項１から２０のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項２２】
前記圧縮装置は、前記シンボルに対する圧縮処理のために設定する複数のパラメータから選択される２以上のパラメータの組み合わせを含む共通鍵を前記解凍装置に送信し、その後、前記非圧縮を示す指標データと前記シンボルとの組み合わせ、及び前記圧縮を示す指標データと前記位置情報との組み合わせに対する、前記共通鍵を用いた暗号化を行い、前記暗号化の結果を前記解凍装置に送信し、
前記解凍装置が、前記圧縮装置から送信された前記共通鍵中の前記２以上のパラメータを、前記非圧縮を示す指標データと前記シンボルとの組み合わせ、又は前記圧縮を示す指標データと前記位置情報との組み合わせを用いて前記シンボルを出力する解凍処理のために設定し、前記暗号化の結果の復号を前記共通鍵を用いて行うとともに、復号した結果に対する前記解凍処理を行う
請求項１から２１のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項２３】
圧縮装置が、
入力されたシンボルが複数のエントリを有する第１テーブルに未登録の場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、
前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、
前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理と、
を行うデータ圧縮方法。
【請求項２４】
入力されたシンボルが複数のエントリを有する第１テーブルに未登録の場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理と、を行う圧縮器
を含むデータ圧縮装置。
【請求項２５】
入力されたシンボルが複数のエントリを有する第１テーブルに未登録の場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理と、
をコンピュータに実行させるプログラム。
【請求項２６】
解凍装置が、圧縮装置から送信された、非圧縮を示す指標データ及びシンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記圧縮装置が有する第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、圧縮を示す指標データと前記第１テーブルにおいて前記シンボルが登録されたエントリの位置を示す位置情報であって、前記第１テーブルの使用状況に応じてサイズが変更される位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、
を行うデータ解凍方法。
【請求項２７】
圧縮装置から送信された、非圧縮を示す指標データ及びシンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記圧縮装置が有する第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、圧縮を示す指標データと前記第１テーブルにおいて前記シンボルが登録されたエントリの位置を示す位置情報であって、前記第１テーブルの使用状況に応じてサイズが変更される位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、を行う解凍器
を含むデータ解凍装置。
【請求項２８】
圧縮装置から送信された、非圧縮を示す指標データ及びシンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記圧縮装置が有する第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、圧縮を示す指標データと前記第１テーブルにおいて前記シンボルが登録されたエントリの位置を示す位置情報であって、前記第１テーブルの使用状況に応じてサイズが変更される位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの圧縮及び解凍方法、データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ解凍方法、データ解凍装置、データ解凍プログラムに関する。
【背景技術】
【０００２】
従来、複数の固定長のシンボルからなる入力データ列に含まれた、連続する２以上のシンボルが登録されている場合、２以上のシンボルを１つのシンボルに変換する変換部と、変換部で２以上のシンボルが１つのシンボルに変換された場合は、当該１つのシンボルを出力し、そうでない場合は、２以上のシンボルを出力する出力部とを含むデータ圧縮器がある（例えば、特許文献１）。
【０００３】
また、以下のようなデータ圧縮方法がある。すなわち、固定長のデータであるシンボル単位でデータ列を圧縮する。そして、変換前に係る２以上のシンボルと変換後に係る１つのシンボルとの対応付けを示すエントリが登録される変換テーブルを検索し、データ列において連続する２以上のシンボルが変換前に係る２以上のシンボルとして登録されていないと判断された場合、連続する２以上のシンボルを変換前に係る２以上のシンボルとするエントリを変換テーブルに登録する。また、連続する２以上のシンボルを変換せずに出力し、データ列において連続する２以上のシンボルが変換前に係る２以上のシンボルとして変換テーブルのエントリに登録されている場合、当該エントリにおいて対応付けられている変換後に係る１つのシンボルに、連続する２以上のシンボルを変換する（例えば、特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２３６４４９号公報
【特許文献２】特開２０１６−１８４８３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した従来技術は、固定長の２シンボルを固定長の１シンボルに変換することで圧縮を行っており、テーブルの使用状況に応じて圧縮後のデータ長を可変にするという観点はなかった。
【０００６】
本発明は、上記問題に鑑みなされたものであり、テーブルの使用状況に応じてデータの圧縮率を高めることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の態様の一つは、圧縮装置が、入力されたシンボルが複数のエントリを有する第１テーブルに未登録である場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理と、を行い、
解凍装置が、前記非圧縮を示す指標データ及び前記シンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記第１テーブルと同一のデータ
構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、前記圧縮を示す指標データと前記位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、を行う
データの圧縮及び解凍方法である。
【０００８】
本発明の他の態様は、上記した圧縮装置、解凍装置、これらによるデータ圧縮方法やデータ解凍方法、コンピュータを圧縮装置や解凍装置として動作させるプログラムなどを含むことができる。
【発明の効果】
【０００９】
本発明によれば、テーブルの使用状況に応じてデータの圧縮率を高めることができる。
【図面の簡単な説明】
【００１０】
【図１】参考例に係る圧縮器及び解凍器に実装される変換テーブルを模式的に示す。
【図２】図２Ａ〜Ｃは、参考例の圧縮方法の説明図である。
【図３】図３Ａ〜Ｃは、参考例の圧縮方法の説明図である。
【図４】図４Ａ及びＢは、参考例の圧縮方法の説明図である。
【図５】図５Ａ及びＢは、参考例の圧縮方法の説明図である。
【図６】図６Ａ〜Ｃは、参考例の解凍方法の説明図である。
【図７】図７Ａ〜Ｃは、参考例の解凍方法の説明図である。
【図８】図８Ａ及びＢは、参考例の解凍方法の説明図である。
【図９】図９Ａ及びＢは、参考例の解凍方法の説明図である。
【図１０】図１０は、実施形態１における圧縮装置の構成例を示す。
【図１１】図１１は、シリアライザにおける処理例を示すフローチャートである。
【図１２】図１２は、圧縮シンボル、Cmarkビット及びデータマスクと、シリアライザの出力との関係を例示する表である。
【図１３】図１３は、圧縮器の構成例を示す。
【図１４】図１４は、変換テーブルのデータ構造例を示す。
【図１５】図１５は、圧縮器１１の処理例を示すフローチャートである。
【図１６】図１６Ａ〜Ｃは、変換テーブルの第１の操作方法を説明する図である。
【図１７】図１７Ａ〜Ｃは、変換テーブルの第２の操作方法を説明する図である。
【図１８】図１８Ａ〜Ｃは、エントロピーの第１の計算方法の例示を示す。
【図１９】図１９は、実施形態１における解凍装置の構成例を示す。
【図２０】図２０は、解凍器の構成例を示す。
【図２１】図２１は、デシリアライザの処理例を示すフローチャートである。
【図２２】図２２は、解凍器の処理例を示すフローチャートである。
【図２３】図２３Ａ〜Ｃは、圧縮装置の動作例の説明図である。
【図２４】図２４Ａ〜Ｃは、圧縮装置の動作例の説明図である。
【図２５】図２５Ａ〜Ｃは、圧縮装置の動作例の説明図である。
【図２６】図２６Ａ〜Ｃは、圧縮装置の動作例の説明図である。
【図２７】図２７Ａ〜Ｃは、圧縮装置の動作例の説明図である。
【図２８】図２８は、圧縮装置の動作例の説明図である。
【図２９】図２９Ａ〜Ｃは、解凍装置の動作例の説明図である。
【図３０】図３０Ａ〜Ｃは、解凍装置の動作例の説明図である。
【図３１】図３１Ａ〜Ｃは、解凍装置の動作例の説明図である。
【図３２】図３２Ａ〜Ｃは、解凍装置の動作例の説明図である。
【図３３】図３３Ａ〜Ｃは、解凍装置の動作例の説明図である。
【図３４】図３４は、解凍装置の動作例の説明図である。
【図３５】図３５は、実施形態２に係る、エントロピーカリングの一例を示す。
【図３６】図３６は、実験の結果を示すグラフである。
【図３７】図３７Ａ〜Ｃは、例外シンボルの説明図である。
【図３８】図３８Ａ〜Ｃは、エントリのリザーブを行わずに、コマンドを圧縮装置から解凍装置へ送る方法を示す。
【図３９】図３９は、第１〜第４の送信方法をまとめた表である。
【図４０】図４０は、例外シンボルを利用する場合のタイミングチャートを示す。
【図４１】図４１Ａ〜Ｃは、実施形態３における圧縮装置の動作例の説明図である。
【図４２】図４２Ａ〜Ｃは、実施形態３における圧縮装置の動作例の説明図である。
【図４３】図４３Ａ〜Ｃは、実施形態３における圧縮装置の動作例の説明図である。
【図４４】図４４Ａ〜Ｃは、実施形態３における圧縮装置の動作例の説明図である。
【図４５】図４５Ａ〜Ｃは、実施形態３における圧縮装置の動作例の説明図である。
【図４６】図４６Ａ及びＢは、実施形態３における圧縮装置の動作例の説明図である。
【図４７】図４７Ａ〜Ｃは、実施形態３における解凍装置の動作例の説明図である。
【図４８】図４８Ａ〜Ｃは、実施形態３における解凍装置の動作例の説明図である。
【図４９】図４９Ａ〜Ｃは、実施形態３における解凍装置の動作例の説明図である。
【図５０】図５０Ａ〜Ｃは、実施形態３における解凍装置の動作例の説明図である。
【図５１】図５１Ａ〜Ｃは、実施形態３における解凍装置の動作例の説明図である。
【図５２】図５２Ａ及びＢは、実施形態３における解凍装置の動作例の説明図である。
【図５３】図５３Ａ〜Ｃは、実施形態４における圧縮装置の動作例を示す。
【図５４】図５４Ａ〜Ｃは、実施形態４における圧縮装置の動作例を示す。
【図５５】図５５Ａ〜Ｃは、実施形態４における圧縮装置の動作例を示す。
【図５６】図５５Ａ〜Ｃは、実施形態４における圧縮装置の動作例を示す。
【図５７】図５７Ａ〜Ｃは、実施形態４における圧縮装置の動作例を示す。
【図５８】図５８は、実施形態４における圧縮装置の動作例を示す。
【図５９】図５９Ａ〜Ｃは、実施形態４における解凍装置の動作例を示す。
【図６０】図６０Ａ〜Ｃは、実施形態４における解凍装置の動作例を示す。
【図６１】図６１Ａ〜Ｃは、実施形態４における解凍装置の動作例を示す。
【図６２】図６２Ａ〜Ｃは、実施形態４における解凍装置の動作例を示す。
【図６３】図６３Ａ〜Ｃは、実施形態４における解凍装置の動作例を示す。
【図６４】図６４は、実施形態４における解凍装置の動作例を示す。
【図６５】図６５Ａ〜Ｃは、実施形態５における圧縮装置の動作例を示す。
【図６６】図６６Ａ〜Ｃは、実施形態５における圧縮装置の動作例を示す。
【図６７】図６７Ａ〜Ｃは、実施形態５における圧縮装置の動作例を示す。
【図６８】図６８Ａ〜Ｃは、実施形態５における解凍装置の動作例を示す。
【図６９】図６９Ａ〜Ｃは、実施形態５における解凍装置の動作例を示す。
【図７０】図７０Ａ〜Ｃは、実施形態５における解凍装置の動作例を示す。
【図７１】図７１は、実施形態６に係る圧縮装置を示す。
【図７２】図７２は、実施形態６に係る解凍装置を示す。
【図７３】図７３Ａ及びＢは、実施形態７の説明図である。
【図７４】図７４は、実施形態８における圧縮装置を示す。
【図７５】図７５は、実施形態８における解凍装置を示す。
【図７６】図７６は、実施形態１〜８に係る圧縮装置及び解凍装置に適用可能な端末装置の構成例を示す。
【図７７】図７７は、圧縮装置の回路構成例を示す。
【図７８】図７８は、解凍装置の回路構成例を示す。
【図７９】図７９は、実施形態１０における圧縮器の処理例を示すフローチャートである。
【図８０】図８０は、実施形態１０における解凍器の処理例を示すフローチャートである。
【図８１】図８１Ａ及びＢは、第２の計算方法の説明図である。
【図８２】図８２Ａ及びＢは、第２の計算方法の説明図である。
【図８３】図８３Ａ及びＢは、第２の計算方法の説明図である。
【図８４】図８４Ａ及びＢは、第２の計算方法の説明図である。
【図８５】図８５Ａ及びＢは、第２の計算方法の説明図である。
【図８６】図８６は、第２の計算方法の説明図である。
【図８７】図８７Ａ及びＢは、実施形態１１の説明図である。
【発明を実施するための形態】
【００１１】
実施形態に係るデータの圧縮及び解凍方法は、以下を含む。
（１）圧縮装置が、入力されたシンボルが複数のエントリを有する第１テーブルに未登録である場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理と、を行う。
（２）解凍装置が、前記非圧縮を示す指標データ及び前記シンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、前記圧縮を示す指標データと前記位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、を行う。
【００１２】
実施形態に係る圧縮装置は、第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて位置情報を表現するビット数を算出し、ビット数で表現された位置情報を出力してもよい。この場合、解凍装置は、第２テーブルの複数のエントリの使用状況を示す情報に基づいて位置情報を表現するビット数を算出し、ビット数を用いて解凍装置に入力されるビット列から位置情報を抽出するようにしてもよい。
【００１３】
実施形態に係る圧縮装置は、第１テーブルの複数のエントリの使用状況を示す情報を、第１テーブルの使用中のエントリ数ｋ及び下記式１を用いて算出し、解凍装置が、第２テーブルの前記複数のエントリの使用状況を示す情報を、使用中の第２テーブルのエントリ数ｋ及び下記式１を用いて算出する、ようにしてもよい。
式１：ｃｅｉｌ（ｌｏｇ２ｋ）
【００１４】
或いは、実施形態に係る圧縮装置は、第１テーブルの複数のエントリの使用状況を示す情報を、所定数のシンボルに対する圧縮処理の結果における第１テーブルの使用率と、シンボルが登録されたエントリのヒット率と、下記式２とを用いて算出してもよい。この場合、解凍装置は、第２テーブルの複数のエントリの使用状況を示す情報を、所定数のシンボルに対する解凍処理の結果における第１テーブルの使用率と、シンボルが登録されたエントリのヒット率と、下記式２とを用いて算出するようにしてもよい。
式２：ｃｅｉｌ（ｌｏｇ２（（使用率／ヒット率）＊エントリ数））
【００１５】
例えば、シンボルのサイズがＮビットであり、位置情報のオリジナルサイズがＭビットである場合において、複数のエントリの使用状況を示す情報に対応する有効ビット数であって前記Ｎより小さい有効ビット数を示すＭビットのデータマスクを生成し、前記データマスクに基づいて、オリジナルサイズの位置情報から無効なビットを除くことにより、前記有効ビット数により表現された位置情報を生成してもよい。
【００１６】
上述した位置情報は、例えば、第１及び第２テーブルの複数のエントリに対して先頭のエントリから順に割り当てられたインデックス番号であってもよい。この場合、圧縮装置は、シンボルの第１テーブルの検索においてシンボルが登録されたエントリがヒットした場合に、シンボルを第１テーブルの先頭のエントリに移動させるともに、第１テーブルの先頭のエントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させてもよい。この場合、解凍装置は、シンボルの第２テーブルの検索においてシンボルが登録されたエントリがヒットした場合に、シンボルを第２テーブルの先頭のエントリに移動させるとともに、第２テーブルの先頭のエントリからヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させる。先頭のエントリは、リザーブされたエントリであってもよい。
【００１７】
実施形態に係る圧縮装置は、シンボルの第１テーブルの検索においてシンボルが登録されたエントリがヒットした場合に、第１テーブルに関して、ヒットしたエントリに登録されていたシンボルをヒットしたエントリより先頭側にある所定の移動先エントリに登録するとともに、移動先エントリからヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させてもよい。この場合、解凍装置は、シンボルの第２テーブルの検索においてシンボルが登録されたエントリがヒットした場合に、第２テーブルに関して、ヒットしたエントリ中のシンボルをヒットしたエントリより先頭側にある所定の移動先エントリに登録するとともに、移動先エントリからヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させる。
【００１８】
上記した所定の移動先エントリは、第１テーブル及び前記第２テーブルにおける先頭のエントリであってもよい。また、所定の移動先エントリは、第１テーブル及び第２テーブルにおいて、ヒットしたエントリから先頭方向に所定数だけ遡った位置にあるエントリであってもよい。この場合に、圧縮装置及び解凍装置は、所定数遡った位置が先頭を超える場合には、先頭のエントリを移動先に設定してもよい。所定の移動先エントリは、リザーブされたエントリであってもよい。
【００１９】
実施形態に係る圧縮装置は、第１テーブルの全てのエントリが使用中の状態における、シンボルの第１テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、シンボルを第１テーブルの先頭のエントリに登録するとともに、第１テーブルの先頭のエントリから末尾のエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させて前記末尾に登録されていたエントリ中のシンボルを削除してもよい。この場合、解凍装置は、第２テーブルの全てのエントリが使用中の状態における、シンボルの第２テーブルの検索においてシンボルが登録されたエントリがヒットしない場合に、シンボルを第２テーブルの先頭のエントリに登録するとともに、第２テーブルの先頭のエントリから末尾のエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させて末尾に登録されていたエントリ中のシンボルを削除する。
【００２０】
実施形態に係る圧縮装置は、シンボルの第１テーブルの検索においてシンボルが登録されたエントリがヒットしない場合に、第１テーブルにおける第１エントリが空き状態であれば、第１テーブルにおける第１エントリにシンボルを登録し、第１テーブルの全てのエントリが使用中であれば、第１テーブルにおける第１エントリに前記シンボルを上書き登録してもよい。この場合、解凍装置は、シンボルの第２テーブルの検索においてシンボルが登録されたエントリがヒットしない場合に、第２テーブルにける第１エントリが空き状態であれば、第２テーブルにおける第１エントリにシンボルを登録し、第２テーブルの全
てのエントリが使用中であれば、第２テーブルにおける第１エントリに前記シンボルを上書き登録する。例えば、第１テーブルにおける第１エントリは第１テーブルの末尾のエントリであり、第２テーブルにおける第１エントリは第２テーブルの末尾のエントリである。但し、他のエントリを第１エントリにしてもよい。
【００２１】
実施形態に係る圧縮装置は、第１テーブルに関して、シンボルが登録されたエントリのヒット数、又はシンボルが登録されたエントリのミスヒット数が所定値に達した場合に、シンボルを登録しているエントリのうちインデックス番号が最大のエントリ中のシンボルを削除してもよい。この場合、解凍装置は、第２テーブルに関して、シンボルが登録されたエントリのヒット数、又はシンボルが登録されたエントリのミスヒット数が所定値に達した場合に、シンボルを登録しているエントリのうちインデックス番号が最大のエントリ中のシンボルを削除する。
【００２２】
実施形態に係る圧縮装置は、第１テーブルに関して、インデックス番号が最大のエントリが先頭から所定範囲にあるエントリに該当する場合には、インデックス番号が最大のエントリ中のシンボルを削除しなくてもよい。この場合、解凍装置は、第２テーブルに関して、インデックス番号が最大のエントリが先頭から所定範囲にあるエントリに該当する場合には、インデックス番号が最大のエントリ中のシンボルを削除しない。
【００２３】
また、実施形態において、第１テーブル及び第２テーブルにおける同一の所定エントリに命令を示す命令シンボルが登録されている場合に、圧縮装置は、圧縮を示す指標データと前記所定エントリを示す位置情報とを出力するとともに、前記命令シンボルが示す命令を実行してもよい。この場合、解凍装置は、圧縮装置から受信される、圧縮を示す指標データと所定エントリを示す位置情報とに基づいて、第２テーブルにおける所定エントリに登録された命令シンボルを読み出し、命令シンボルが示す命令を実行する。
【００２４】
実施形態において、第１テーブル及び第２テーブルにおける同一の所定エントリに解凍装置に実行させる命令を示す命令シンボルが登録されている場合に、圧縮装置は、非圧縮を示す指標データと前記命令シンボルとを出力してもよい。この場合、解凍装置は、非圧縮を示す指標データに基づく命令シンボルの登録処理において第２テーブルに既に命令シンボルが登録されていることに対する例外処理として命令シンボルが示す命令を実行する。
【００２５】
実施形態に係る圧縮装置は、前記解凍装置に命令を実行させる場合に、圧縮を示す指標データと前記第１テーブルの空き状態のエントリを示す位置情報とを出力してもよい。この場合、解凍装置が、圧縮装置から受信された、圧縮を示す指標データ及び位置情報に基づくシンボルの読出処理において位置情報が示す第２テーブルのエントリにシンボルが登録されていないことによって生じる例外の発生時に、命令を示す情報を取得して実行するようにしてもよい。
【００２６】
実施形態に係る圧縮装置は、圧縮を示す指標データ及び第１テーブルの空き状態のエントリを示す位置情報の出力に続いて、非圧縮を示す指標データと命令を示す命令シンボルとを出力してもよい。この場合、解凍装置は、例外の発生時に、命令シンボルが示す命令を実行する。
【００２７】
また、実施形態に係る圧縮装置は、解凍装置に命令を実行させる場合に、非圧縮を示す指標データと第１テーブルにおいて登録中のシンボルとを出力してもよい。この場合、解凍装置は、圧縮装置から受信された、非圧縮を示す指標データに基づくシンボルの登録処理において第２テーブルに同一のシンボルが登録されていることによって生じる例外の発生時に、命令を示す情報を取得して実行する。
【００２８】
また、実施形態に係る圧縮装置は、非圧縮を示す指標データ及び第１テーブルにおいて登録中のシンボルの出力に続いて、非圧縮を示す指標データと前記命令を示す命令シンボルとを出力してもよい。この場合、解凍装置は、例外の発生時に、命令シンボルが示す命令を実行する。
【００２９】
シンボルは、圧縮装置の前段に位置する他の圧縮装置によって圧縮処理が施されたシンボル列をなすシンボルであり、解凍装置が出力するシンボルが、シンボル列の一部として、解凍装置の後段にある他の解凍装置に入力される構成を採用できる。このように、圧縮装置や解凍装置をカスケード接続できる。
【００３０】
第１テーブル及び第２テーブルは、テーブルの分割によって得られた複数のバンクの一つであり、第１テーブル及び第２テーブルの選択は、同一のハッシュ関数を用いて行う構成を採用してもよい。
【００３１】
また、圧縮装置と解凍装置とは、以下のような暗号化に係るやりとりを行ってもよい。すなわち、圧縮装置は、シンボルに対する圧縮処理のために設定する複数のパラメータから選択される２以上のパラメータの組み合わせを含む共通鍵を解凍装置に送信する。その後、圧縮装置は、非圧縮を示す指標データとシンボルとの組み合わせ、及び圧縮を示す指標データと位置情報との組み合わせに対する、共通鍵を用いた暗号化を行い、暗号化の結果を解凍装置に送信する。解凍装置は、圧縮装置から送信された共通鍵中の２以上のパラメータを、非圧縮を示す指標データとシンボルとの組み合わせ、又は圧縮を示す指標データと位置情報との組み合わせを用いてシンボルを出力する解凍処理のために設定し、暗号化の結果の復号を前記共通鍵の使用によって行うとともに、復号した結果に対する解凍処理を行う。
【００３２】
複数のパラメータは、後述するが、シンボルのビット数Ｎ、シンボルに対する圧縮処理の結果（シンボル又は位置情報）のビット数Ｍ、圧縮装置から出力するビット数の単位を示すＫ、エントロピーカリングに用いるヒット回数又はミスヒット回数、例外シンボルの設定、スクランブル演算の種類、スクランブルキー、近接エントリ交換オフセットｋ、バンク構成（バンク数）などである。
【００３３】
また、圧縮装置からの暗号化の結果送信の前に、圧縮装置は、第１テーブルの状態を初期化する処理を行うとともに、第２テーブルの状態を初期化する情報を解凍装置に送信し、解凍装置が上記初期化する情報に基づいて第２テーブルの状態を初期化してもよい。
【００３４】
〔参考例〕
本発明の実施形態を説明する前に、参考例に係る圧縮器及び解凍器（圧縮及び解凍方法について説明する。図１は、参考例に係る圧縮器及び解凍器に実装される変換テーブルを模式的に示す。変換テーブルは、インデックスを有する複数のエントリからなる。エントリ数として、圧縮器及び解凍器について同じ数の適宜の数が決定される。エントリ数の最大値は、インデックスの最大値に１を加えた数となる。図１に示す例では、インデックス値が０〜３であり、エントリ数は４である。
【００３５】
エントリには、圧縮前のシンボルと、カウント値とが登録される。変換テーブルには、登録ポインタと削除ポインタとが設定される。登録ポインタ及び削除ポインタの初期位置はインデックス“０”である。登録ポインタは、未登録の圧縮前エントリを登録するエントリ位置を示す。登録ポインタが指すエントリにシンボルが登録されると、登録ポインタは、次の未登録のエントリを指すため、インデックス値が大きくなる方向に移動する。但し、登録ポインタの現在位置が末尾のエントリ（参考例ではインデックス“３”のエント
リ）である場合には、登録ポインタはインデックス“０”に戻った後、未登録のエントリ位置に設定される。
【００３６】
削除ポインタは、カウント値を減じるエントリを示す。カウント値は、エントリのエージング処理に使用される値である。カウント値が０になった場合に、そのエントリの登録内容（圧縮前シンボル）は削除され、エントリは未登録状態となる。エントリに圧縮前シンボルが登録される場合に、カウンタ値の初期値（図１の例では２）が設定される。削除ポインタが指すエントリのカウント値は一つ減算される。このとき、削除ポインタは、インデックス値が大きくなる方向に一つ移動する。但し、削除ポインタの現在位置が末尾のエントリ（インデックス“３”のエントリ）である場合には、インデックス０に戻る。エントリがヒットした場合、そのエントリのインデックス値が一つ加算される。削除ポインタはラウンドロビンで移動してよい。
【００３７】
＜参考例の圧縮器の動作例＞
次に、圧縮器の動作例（圧縮方法）を示す。図２Ａ〜Ｃ、図３Ａ〜Ｃ、図４Ａ及Ｂ、図５Ａ及びＢは、参考例の圧縮方法の説明図である。図２Ａには、動作例に係る変換テーブルが示されている。この変換テーブルは、図１を用いて説明した構造を有する。変換テーブルの全エントリ数は４であり、カウント値の初期値は２である。入力は、一例として、８ビット（１バイト）のデータ（シンボル）が連なるデータ列である。初期状態の変換テーブルでは、全てのエントリが未登録状態である。登録ポインタ及び削除ポインタは、変換テーブルが初期状態である場合、インデックス“０”のエントリを指す。以下の説明では、エントリをインデックス値で特定することがある（例えば、インデックス値“０”のエントリは、単にインデックス“０”と称する）。
【００３８】
変換テーブルが初期状態である場合において、圧縮器に入力された圧縮前シンボル（“オリジナルシンボル”とも称する）列“ABAC0ADBCFGDEDA1AB・・・”が入力された場合を仮定する。圧縮器は、シンボル列のうち２シンボル毎に圧縮処理を行う。図２Ａは、シンボル列のうち、最初のシンボル列“ＡＢ”の処理を示す。この場合、変換テーブルからシンボル列“ＡＢ”が検索される。しかし、変換テーブルにシンボル列“ＡＢ”は登録されていない（“ＡＢ”がヒットしない）。この場合、オリジナルシンボル列“ＡＢ”とカウント値の初期値“２”とが、登録ポインタが指すエントリ（インデックス“０”）に登録（記憶）される。このとき、圧縮器の出力（圧縮処理後のシンボル）として、オリジナルシンボル列“ＡＢ”がそのまま出力される。また、新たにシンボルが登録されたインデックス“０”に削除ポインタが設定され、登録ポインタが次の未登録エントリであるインデックス“１”に進む。
【００３９】
図２Ｂは、シンボル列“ＡＢ”に続くオリジナルシンボル列“ＡＣ”の処理を示す。シンボル“ＡＣ”は変換テーブルに登録されていない。このため、オリジナルシンボル列“ＡＣ”とカウント値“２”とを、登録ポインタが指すエントリ（インデックス“１”）に登録する。また、圧縮器からオリジナルシンボル列“ＡＣ”が出力される。また、登録ポインタが次の未登録エントリ（インデックス“２”）に進む。また、インデックス“０”のカウント値が一つ減算され（２→１）、削除ポインタが次のインデックス“１”に進む。
【００４０】
図２Ｃは、シンボル列“ＡＣ”に続くオリジナルシンボル列“ＡＢ”の処理を示す。シンボル列“ＡＢ”は登録済であるため、変換テーブルからシンボル列“ＡＢ”が検索される（ヒットする）。この場合、シンボル列“ＡＢ”が登録されたエントリのインデックス値“０”が圧縮後のシンボルとして出力される。これにより、２バイトのオリジナルシンボル列が１バイトの圧縮シンボルに圧縮される。このとき、インデックス“０”のカウント値のインクリメントが行われる（１→２）。また、削除ポインタが指すインデックス“
１”のカウント値のデクリメントが行われ（２→１）、削除ポインタがインデックス“０”に進む。また、登録ポインタが次の未登録エントリであるインデックス“２”に進む。
【００４１】
図３Ａは、シンボル列“ＡＢ”に続くオリジナルシンボル列“ＡＤ”の処理を示す。シンボル列“ＡＤ”は変換テーブルに登録されていない。このため、オリジナルシンボル列“ＡＤ”とカウント値“２”とが、登録ポインタが指すエントリ（インデックス“２”）に登録される。登録ポインタは次のインデックス“３”に進む。また、削除ポインタが指すインデックス“０”のカウント値が一つ減算され（２→１）、削除ポインタが次のインデックス“１”に進む。
【００４２】
図３Ｂは、シンボル列“ＡＤ”に続くオリジナルシンボル列“ＢＣ”の処理を示す。変換テーブルにシンボル列“ＢＣ”は登録されていない。このため、オリジナルシンボル列“ＢＣ”とカウント値“２”とが、登録ポインタが指すエントリ（インデックス“３”）に登録される。圧縮器からはオリジナルシンボル列“ＢＣ”が出力される。また、削除ポインタが指すインデックス“１”のカウント値のデクリメントが行われ、削除ポインタが次のインデックス“２”に進む。インデックス“１”では、カウント値が０となることによって、シンボル“ＡＣ”が削除され、インデックス“１”は未登録の状態となり、登録ポインタが設定される。
【００４３】
図３Ｃは、シンボル列“ＢＣ”に続くオリジナルシンボル列“ＦＧ”の処理を示す。変換テーブルにシンボル列“ＦＧ”は登録されていない。このため、オリジナルシンボル列“ＦＧ”とカウント値“２”とが、登録ポインタが指すエントリ（インデックス“１”）に登録される。圧縮器からはオリジナルシンボル列“ＦＧ”が出力される。この時点で、変換テーブルの全エントリが登録済となっている（空き状態のエントリがない）。この場合、登録ポインタは、どのエントリを指してもよい。但し、説明のため、図３Ｃに示す例では、インデックス値が大きくなる方向に一つ進むというルールに従って、次のインデックス“２”を指す。また、削除ポインタが指すインデックス“２”のカウント値のデクリメントが行われ、削除ポインタが次のインデックス“３”に進む。
【００４４】
図４Ａは、シンボル列“ＦＧ”に続くオリジナルシンボル列“ＤＥ”の処理を示す。変換テーブルにシンボル“ＤＥ”は登録されていない。しかし、変換テーブルがフル（空きエントリなし）であるため、シンボル列“ＤＥ”を登録できない。この場合、登録処理は行われず、入力シンボル列“ＤＥ”がそのまま出力される。これによりスループットが維持される。また、削除ポインタが指すエントリ（インデックス“３”）のカウント値のデクリメントが行われ、次の位置（インデックス“０”）に進む。この場合も、登録ポインタの位置はどこでもよい。図４Ａに示す例では、一例としてインデックス“３”を指している。
【００４５】
図４Ｂは、シンボル“ＤＥ”に続くオリジナルシンボル列“ＤＡ”の処理を示す。変換テーブルにシンボル列“ＤＡ”は登録されていない。しかし、変換テーブルに空きエントリがない。このため、シンボル列“ＤＡ”の登録を行うことなく、シンボル列“ＤＡ”を出力してスループットを維持する。このとき、削除ポインタが指すインデックス“０”のカウント値のデクリメントが行われ（１→０）、削除ポインタがインデックス“１”に進む。デクリメントによってインデックス“０”のカウント値が０となり、インデックス“０”は未登録状態となるとともに、登録ポインタが設定される。
【００４６】
図５Ａは、シンボル“ＤＡ”に続くオリジナルシンボル列“ＦＧ”の処理を示す。変換テーブルにシンボル“ＦＧ”は登録されている。このため、対応するエントリのインデックス値“１”が出力される。このとき、インデックス“１”のインクリメントとデクリメントとが行われ、カウント値は“２”のままとなる。このとき、削除ポインタがインデッ
クス“２”に進む。登録ポインタは移動しない。
【００４７】
図５Ｂは、シンボル列“ＦＧ”に続くオリジナルシンボル列“ＡＢ”の処理を示す。変換テーブルにシンボル“ＡＢ”は登録されていない。このため、シンボル列“ＡＢ”が出力される。また、シンボル列“ＡＢ”及びカウント値“２”がインデックス“０”に登録される。また、削除ポインタが指すインデックス“２”のカウント値が一つ減算され（１→０）、削除ポインタがインデックス“３”に進む。これによって、インデックス“２”のカウント値が０になるため、当該エントリが未登録の状態となり、登録ポインタが設定される。このようにして、圧縮器からは、圧縮後のシンボル列として、“ABAC0ADBCFGDEDA0AB・・・が出力される。
【００４８】
＜参考例の解凍器の動作例＞
次に、解凍器の動作例（解凍方法）について説明する。解凍器には、圧縮器から出力されたデータ列（シンボル列）“ABAC0ADBCFGDEDA0AB・・・”が入力される。図６Ａ〜Ｃ、図７Ａ〜Ｃ、図８Ａ及びＢ、図９Ａ及びＢは、参考例の解凍方法の説明図である。図６Ａは、解凍器が有する変換テーブルを示す。変換テーブルの構造は圧縮器が有する変換テーブルの構造と同じである。また、図６Ａは、解凍器の変換テーブルが初期状態である場合において、解凍器に入力されたシンボル列“ＡＢ”に係る処理を示す。
【００４９】
最初に、インデックス“Ａ”が変換テーブルから検索される。しかし、インデックス“Ａ”はヒットしないため、インデックス“Ａ”は、範囲外、または、登録されていないことがわかる。この場合、次の入力シンボルを読み進めてそのまま出力する。ここでは、シンボル“Ａ”とこれに続くシンボル“Ｂ”からなるシンボル列“ＡＢ”が解凍の結果として出力される。また、インデックス“０”にシンボル列“ＡＢ”及びカウント値“２”が登録される。また、インデックス“０”に削除ポインタが設定され、登録ポインタがインデックス“１”に進む。
【００５０】
図６Ｂは、後続するシンボル列“ＡＣ”に係る処理を示す。この場合も、シンボル“Ａ”に合致する変換テーブルのインデックスを検索する。しかし、対応するインデックスは見つからない。このため、次のシンボル“Ｃ”を含めたシンボル列“ＡＣ”がそのまま出力される。また、シンボル列“ＡＣ”及びカウント値“２”が、登録ポインタが指すエントリ（インデックス“１”）に登録され、登録ポインタが次のインデックス“２”に進む。また、インデックス“０”のカウント値が一つ減算された後、削除ポインタがインデックス“１”に進む。
【００５１】
図６Ｃは、後続するシンボル“０”に係る処理を示す。この場合、変換テーブルから対応するインデックス“０”が検索される。この場合、インデックス“０”のエントリに登録されているシンボル列“ＡＢ”が解凍器から出力される。このとき、インデックス“０”のカウント値に１が加算され（１→２）、削除ポインタが設定される。また、登録ポインタの位置は、インデックス“２”に止まる。
【００５２】
図７Ａは、後続するシンボル列“ＡＤ”に係る処理を示す。このとき、シンボル“Ａ”に合致する変換テーブルのインデックスはない。このため、シンボル“Ａ”とこれに続くシンボル“Ｄ”とからなるシンボル列“ＡＤ”が解凍器から出力される。また、シンボル列“ＡＤ”とカウント値“２”とが、登録ポインタが指すエントリ（インデックス“２”）に登録される。登録ポインタは次のインデックス“３”に進む。また、削除ポインタが指すインデックス“０”のカウント値が一つ減算され、削除ポインタが次のインデックス“１”に進む。
【００５３】
図７Ｂは、後続するシンボル列“ＢＣ”に係る処理を示す。この場合、シンボル“Ｂ”
に対応する変換テーブルのインデックスはない。このため、シンボル“Ｂ”と次のシンボル“Ｃ”とからシンボル列“ＢＣ”が解凍器から出力される。また、シンボル列“ＢＣ”とカウント値“２”とが、登録ポインタが指すエントリ（インデックス“３”）に登録される。また、削除ポインタが指すインデックス“１”のカウント値が一つ減算され（１→０）、削除ポインタが次のインデックス“２”に進む。インデックス“１”のカウント値が０となることによって、インデックス“１”のエントリが未登録状態となる。登録ポインタは、インデックス“１”に設定される。
【００５４】
図７Ｃは、後続するシンボル列“ＦＧ”に係る処理を示す。この場合、シンボル“Ｆ”と合致するインデックスはない。このため、シンボル“Ｆ”と次のシンボル“Ｇ”とからなるシンボル列“ＦＧ”が解凍器から出力される。また、シンボル列“ＦＧ”とカウント値“２”とが、登録ポインタが指すエントリ（インデックス“１”）に登録される。また、削除ポインタが指すインデックス“２”のカウント値が一つ減算され、削除ポインタが次のインデックス“３”に進む。登録ポインタの位置は変換テーブルがフルであるため、どこでもよい。但し、本動作例では、登録か未登録かに拘わらず、登録ポインタが一つ進む例を示す。図７Ｃは、インデックス“２”へ進んだ場合を例示する。
【００５５】
図８Ａは、後続するシンボル列“ＤＥ”に係る処理を示す。この場合、シンボル“Ｄ”に対応するインデックスはない。このため、シンボル“Ｄ”と次のシンボル“Ｅ”とからなるシンボル列“ＤＥ”が解凍器から出力される。但し、変換テーブルはフルであるため、シンボル列“ＤＥ”の登録は行われない。削除ポインタが指すインデックス“３”のカウント値が一つ減算され、削除ポインタがインデックス“０”に戻る。登録ポインタの位置はどこでもよい。図８Ａでは、登録ポインタを現在位置から１つ進めるというルールに従って、登録ポインタがインデックス“３”へ進んだ例を示す。
【００５６】
図８Ｂは、後続するシンボル列“ＤＡ”に係る処理を示す。この場合、シンボル“Ｄ”に合致するインデックスはない。このため、シンボル“Ｄ”及びシンボル“Ａ”からなるシンボル列“ＤＡ”が出力される。しかし、変換テーブルに空きエントリがないため、シンボル“ＤＡ”の登録は行われない。このとき、削除ポインタが指すインデックス“０”のカウント値が一つ減算され、削除ポインタがインデックス“１”に進む。インデックス“０”のカウント値は０となり、インデックス“０”は未登録状態となり、登録ポインタが設定される。
【００５７】
図９Ａは、後続するシンボル“１”に係る処理を示す。この場合、変換テーブルに合致するインデックス“１”がある。このため、インデックス“１”のエントリに登録されたシンボル列“ＦＧ”が解凍器から出力される。このとき、削除ポインタが指すインデックス“１”のカウント値のデクリメントと、インデックス“１”に対するカウント値のインクリメントとが行われ、インデックス“１”カウント値は“２”となる。削除カウンタは、インデックス“２”に進み、登録カウンタはインデックス“０”を指す。
【００５８】
図９Ｂに、後続するシンボル列“ＡＢ”に係る処理を示す。この場合、変換テーブルにシンボル“Ａ”は登録されていない。このため、シンボル“Ａ”と次のシンボル“Ｂ”とからなるシンボル列“ＡＢ”が解凍器から出力される。また、シンボル列“ＡＢ”とカウント値“２”とが空きエントリであるインデクス“０”に登録される。このとき、削除ポインタが指すインデックス“２”のカウント値が一つ減算され、削除ポインタがインデックス“３”に進む。インデックス“２”のエントリのカウント値が０になるため、インデックス“２”が未登録状態となり、登録ポインタが設定される。
【００５９】
以上説明した参考例では、圧縮器における変換テーブルの登録内容を示さずとも、解凍器にて圧縮器と同じ登録内容を有する変換テーブルが生成され、その変換テーブルを用い
た解凍処理を行うことができる。
【００６０】
なお、参考例の動作例では、圧縮後のシンボル（例えば“０”）を圧縮前のシンボルに使わないことを前提としている。しかし、現実的には、８ビットデータに関して全ての組合せ（２５６種類）が使用されるのが通常である。このため、オリジナルのシンボル“０”と圧縮したことを示す“０”とを区別することができない。そこで、圧縮後のシンボル又はシンボル列に対して、“Cmarkビット”と呼ぶ圧縮（変換）／非圧縮（非変換）を示
すビットを付加する。Cmarkビットの値“０”は非圧縮を示し、値“１”は圧縮を示す。
但し、逆でもよい。
【００６１】
＜参考例に係る課題＞
＜＜課題１＞＞
参考例に係る圧縮及び解凍方法では、圧縮後のシンボル長が固定長であった。例示したように、２シンボルの入力を１シンボルに変換する圧縮では、圧縮率は最大でも５０％であった。このため、さらなる圧縮率の向上が望まれていた。
【００６２】
ここで、シャノンの平均情報量（シャノン情報量、エントロピーとも呼ばれる）を考える。平均情報量は、「データの複雑さ」を表す指標であり、以下の式（１）で表現される。式（１）において、iはデータを示し、piはデータiの出現率を示す。
【００６３】
【数１】
2020184672.tif 000003
【００６４】
例えば、データシンボル列（１シンボル８ビット）が“ＡＢＡＣＡＢＡＤＢＣ”である場合、シンボル“Ａ”、“Ｂ”、“Ｃ”、及び“Ｄ”のそれぞれの出現確率は以下となる。
Ａの出現確率：４／１０＝０．４
Ｂの出現確率：３／１０＝０．３
Ｃの出現確率：２／１０＝０．２
Ｄの出現確率：１／１０＝０．１
【００６５】
上記データシンボル列についての平均情報量Ｈは、式（１）を用いて計算すると、Ｈ＝１．８４６４３９３４４６５となる。換言すれば、このデータシンボル列は、２の１．８４６４３９３４４６５乗の組み合わせからなり、１．８４６４３９３４４６５ビットで表現することができる。このデータシンボル列の各要素（シンボル）は、Ceil(1.84643934465)=2であることから、２ビットで表現することができる。
【００６６】
例えば、Ａ＝００、Ｂ＝０１、Ｃ＝１０、Ｄ＝１１と定義した場合、上記データシンボル列は“00010010000100110110”となる。８ビットのデータを２ビットに圧縮できるため、データ量は１／４になる。
【００６７】
＜＜課題２＞＞
上述した参考例に係る圧縮・解凍方法では、圧縮データの終端が不明であった。もし、特殊なコードを埋め込むことができれば、解凍器に圧縮データ列の終端を知らせることができる。
【００６８】
本願の発明者らは、上記した平均情報量（エントロピー）の考えを用いて、変換テーブルの使用率に従って、圧縮後のシンボル長を変更することで、圧縮率の向上を図ることができないかと考えた。鋭意努力の結果、発明者らは、以下の実施形態にて表される圧縮及
び解凍方法を発明するに至った。
【００６９】
〔実施形態〕
以下、図面を参照して、データの圧縮及び解凍方法、データ圧縮方法、データ圧縮装置。データ圧縮プログラム、データ解凍方法、データ解凍装置、データ解凍プログラムの実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００７０】
〔実施形態１〕
＜圧縮装置の構成＞
図１０は、実施形態１における圧縮装置の構成例を示す。図１０において、圧縮装置１０は、圧縮器１１と、シリアライザ１２とを備える。圧縮器１１には、Ｎビット（Ｎは正の整数）のオリジナルのシンボルデータが入力される。圧縮器１１は、Ｍビット（Ｍは正の整数）の圧縮シンボル）と、Cmarkビットと、Ｍビットのデータマスクとを出力する。
以下の実施形態の説明では、Ｎ＝Ｍに設定されている場合を中心に説明する。但し、Ｎ＜Ｍの場合やＮ＞Ｍの場合もあり得る。Ｍを“ｌｏｇ２(エントリ数)”とすると、エントリ数が２のＮ乗より大きいとＮ＜Ｍとなる。逆の場合はＮ＞Ｍとなる。
【００７１】
圧縮シンボルは、圧縮器１１から出力される、圧縮処理後のシンボルデータを示す。Cmarkビットは、圧縮器１１から出力されたシンボルデータが、圧縮器１１によって圧縮さ
れているか否かを示すビットである。一例として、ビット値“０”の場合に非圧縮を示し、ビット値“１”の場合に圧縮を示す。ビット値と意味は逆でもよい。データマスクは、圧縮シンボルをなすビット列のうち、有効なビットの桁又は有効なビット数を表現するために使用される。例えば、データマスクは、有効なビット桁を“１”で示す。また、データマスクは、有効なビット数を示すビット列でもよい。
【００７２】
シリアライザ１２は、圧縮シンボルと、Cmarkビットと、データマスクとを受け取り、Cmarkビットと、データマスクが示す圧縮シンボルの中の有効ビットとを直列に連ねてなるデータを出力する。出力されたデータは解凍装置へ向けて送信される伝送データとなる。圧縮器１１からの出力がＮ＞Ｍの場合でも、データマスクによって示される有効ビット数はＮまでの値とされる。よって、圧縮装置１０の出力は、Ｎビットのオリジナルシンボルについて最長Ｎ＋１ビットとなる。伝送データは、伝送路（ネットワーク）を介して解凍装置へ送られる。
【００７３】
＜＜シリアライザ＞＞
図１１は、シリアライザ１２における処理例を示すフローチャートである。Ｓ１において、シリアライザ１２は、データマスクに基づいて、圧縮シンボルから不要な（無効の）ビットを除去する。すなわち、シリアライザ１２は、データマスクにおいて“１”で示された桁に対応する部分を圧縮シンボルから切り出す。
【００７４】
Ｓ２では、シリアライザ１２は、切り出した圧縮シンボルの部分の最上位に、Cmarkビ
ットを付加する。Ｓ３では、シリアライザ１２は、Cmarkビット及び切り出し後の圧縮シ
ンボルについて、適宜のルールに従って、Ｋビット分ずつ、ビットの出力を行う。
【００７５】
図１２は、圧縮シンボル、Cmarkビット、及びデータマスクと、シリアライザの出力と
の関係を例示する表である。例えば、ビッグエンディアン（big endian）である場合において、圧縮シンボルデータ、Cmarkビット、データマスク列の夫々が、“0001000”（Ｍ＝７）、“１”、“0011111”（Ｍ＝７）である場合を仮定する。この場合、データマスク
は最下位ビット（ＬＳＢ）から５ビット目までを有効ビットとして示す。このため、シリアライザ１２において、最上位ビット（ＭＳＢ）から２ビット目までが圧縮シンボルから
除去され、Cmarkビット“１”と有効ビット列“01000”とのビット列（シリアルデータ）“101000”が出力される。
【００７６】
次の圧縮器１１からの出力が圧縮シンボルデータ“1110100”、Cmarkビット“0”、デ
ータマスク“1111111”である場合、シリアライザ１２の出力は、Cmarkビット“1”及び
有効ビット“1110100”のシリアルデータ“01110100”となる。図１２には、他の圧縮シ
ンボルとCmarkビットとの組み合わせに係るシリアライザ１２の出力も例示されている。
【００７７】
＜＜圧縮器＞＞
図１３は、圧縮器１１の構成例を示す。圧縮器１１は、シンボル変換部１１１、エントロピー計算部１１２、及びマスク生成部１１３を含む。シンボル変換部１１１は、変換テーブルを用いたシンボル変換処理を行う。
【００７８】
図１４は、圧縮装置及び解凍装置が備える変換テーブルのデータ構造例を示す。変換テーブルは、複数のエントリからなる。複数のエントリには、先頭のエントリから順に、値が大きくなるインデックス番号（インデックス値）が割り当てられている。圧縮後のシンボルの最長のビット数をＸ（Ｘは正の整数）とすると、エントリ数は２Ｘとなる。図１４に示す変換テーブルの例は、Ｘ＝２の場合を示し、エントリ数は４である。初期状態の変換テーブルでは、例えば、全エントリが空である。但し、全エントリにシンボルが設定されていてもよい。圧縮装置が備える変換テーブルは、第１テーブルの一例であり、解凍装置が備える変換テーブルの一例は、第２テーブルの一例である。インデックス番号は、エントリの位置を示す位置情報の一例である。
【００７９】
エントロピー計算部１１２は、変換テーブルの複数のエントリの使用状況を示す情報としてのエントロピーを、所定の計算方法により計算する。マスク生成部１１３は、エントロピー計算部１１２のエントロピーの計算結果を受け取り、これに対応するデータマスクを生成する。本実施形態では、１例として、Ｎ＝Ｍ＝８ビットの場合について説明する。
【００８０】
図１５は、圧縮器１１の処理例を示すフローチャートである。Ｓ１１において、シンボル変換部１１１に、オリジナルシンボル（Ｎビット）が入力される。すると、シンボル変換部１１１は、変換テーブルからオリジナルシンボルが登録されたエントリを検索する（Ｓ１２）。オリジナルシンボルが登録されている場合（エントリがヒットした場合）には、処理がＳ１３に進み、オリジナルシンボルが登録されていない場合（エントリがヒットしない場合）場合には、処理がＳ１４に進む。
【００８１】
Ｓ１３に処理が進んだ場合には、シンボル変換部１１１は、オリジナルシンボルが登録されていたエントリのインデックス値を圧縮シンボルとして出力する。その後、処理がＳ１５に進む。インデックス値は、その値に応じて表現に要するビット数が変わる。例えば、ヒットしたエントリのインデックス値が“０”や“１”の場合、インデックス値は１ビットで表現できる。本実施形態では、変換テーブルの使用状況に基づいてインデックス値を表現する有効ビット数が決定され、有効ビット数はデータマスクによって示される。シリアライザ１２において、圧縮器１１から出力されたインデックス値（Ｍビット）は、データマスクによって示される有効ビット数となる。このとき、インデックスがＮより小さいビット数に変換されることによって、データが圧縮される。
【００８２】
Ｓ１４に処理が進んだ場合には、オリジナルシンボルそのものを圧縮シンボルとして出力する。Ｓ１５では、圧縮シンボルに対応するCmarkビットをシンボル変換部１１１は出
力する。例えば、オリジナルシンボルが変換テーブルからヒットしなかった場合（変換テーブルに登録されていなかった場合）には、非圧縮を示すCmarkビット“０”をシンボル
変換部１１１は出力する。これに対し、オリジナルシンボルがヒットした場合（変換テー
ブルに登録されている場合）には、圧縮を示すCmarkビット“１”をシンボル変換部１１
１は出力する。
【００８３】
Ｓ１６では、シンボル変換部１１１が変換テーブルの更新処理を行う。変換テーブルの更新処理については後述する。Ｓ１７では、エントロピー計算部１１２がエントロピー計算を行う。Ｓ１６とＳ１７の順序は逆でもよい。Ｓ１８では、マスク生成部１１３がエントロピーの計算結果に応じたデータマスクを出力する。但し、Cmarkビットが“０”の場
合、エントロピー計算値とは無関係にオール“１”のデータマスクが出力されるようにしてもよく、データマスクが出力されない（Cmarkビットが“１”のときに出力される）よ
うにしても良い。
【００８４】
＜変換テーブルの第１の操作方法＞
図１６Ａ〜Ｃは、変換テーブルの第１の操作方法を説明する図である。図１６Ａは、オリジナルシンボルがヒットした場合を示す。図１６Ａに示すような変換テーブルへの登録状況において、オリジナルシンボル“Ｂ”が入力された場合を仮定する。この場合、シンボル“Ｂ”は変換テーブルに既登録であり、シンボル“Ｂ”がヒットする。このとき、シンボル変換部１１１は、ヒットしたシンボル“Ｂ”を先頭のエントリに移動する。また、シンボル“Ｂ”が登録されたエントリのインデックス値“１”と、圧縮を示すCmarkビッ
ト“１”とをシンボル変換部１１１は出力する。
【００８５】
図１６Ｂは、空きエントリがあってオリジナルシンボルがミスヒットする場合を示す。図１６Ｂに示すように、インデックス“３”のエントリが空きエントリである場合に、オリジナルシンボル“Ｂ”が入力された場合を仮定する。 この場合、シンボル“Ｂ”は変
換テーブルに未登録であり、シンボル“Ｂ”はミスヒットとなる。このとき、シンボル変換部１１１は、変換テーブル全体をプッシュし、既登録の各シンボル（“Ａ”、“Ｃ”、“Ｄ”）をインデックス値が１つ加算された位置へ移動させる。これによって先頭のエントリ（インデックス“０”）が空き状態となる。シンボル変換部１１１は、先頭のエントリにシンボル“Ｂ”を登録する。また、オリジナルシンボル“Ｂ”と、非圧縮を示すCmarkビット“０”とをシンボル変換部１１１は出力する。
【００８６】
図１６Ｃは、空きエントリがなくオリジナルシンボルがミスヒットする場合を示す。図１６Ｃに示すように、変換テーブルの全てのエントリにシンボルが登録されている（フルである）場合に、オリジナルシンボル“Ｂ”が入力された場合を仮定する。 この場合、
シンボル“Ｂ”は変換テーブルに未登録であり、シンボル“Ｂ”はミスヒットとなる。このとき、シンボル変換部１１１は、変換テーブル全体をプッシュして既登録の各シンボル（“Ａ”、“Ｃ”、“Ｄ”、“Ｅ”）をインデックス値が１つ加算された位置へ移動させる。但し、末尾のエントリ（インデックス“３”）に登録されていたシンボル“Ｅ”は、変換テーブルから追い出されて削除される。シンボル変換部１１１は、空き状態となった先頭のエントリにシンボル“Ｂ”を登録する。また、オリジナルシンボル“Ｂ”と、非圧縮を示すCmarkビット“０”とをシンボル変換部１１１は出力する。
【００８７】
＜変換テーブルの第２の操作方法＞
図１７Ａ〜Ｃは、変換テーブルの第２の操作方法を説明する図である。図１７Ａは、オリジナルシンボルがヒットした場合を示す。図１７Ａに示すような変換テーブルへの登録状況において、オリジナルシンボル“Ｂ”が入力された場合を仮定する。この場合、シンボル変換部１１１は、シンボル“Ｂ”がヒットしたため、シンボル“Ｂ”を先頭のエントリに移動する。また、インデックス値“１”と、Cmarkビット“１”とをシンボル変換部
１１１は出力する。これは、第１の操作方法と同じである。
【００８８】
図１７Ｂは、空きエントリがあってオリジナルシンボルがミスヒットした場合を示す。
図１７Ｂに示すように、インデックス“３”が空きエントリである場合に、オリジナルシンボル“Ｂ”が入力された場合を仮定する。 この場合、シンボル“Ｂ”は変換テーブル
に未登録であり、シンボル“Ｂ”はミスヒットとなる。このとき、シンボル変換部１１１は、空きエントリ中の予め定めた位置（例えば末尾の空きエントリ）に該当するインデックス“３”にシンボル“Ｂ”を登録する。また、オリジナルシンボル“Ｂ”と、Cmarkビ
ット“０”とをシンボル変換部１１１は出力する。
【００８９】
図１７Ｃは、空きエントリがなくオリジナルシンボルがミスヒットする場合を示す。図１７Ｃに示すように、変換テーブルがフルである場合に、オリジナルシンボル“Ｂ”が入力された場合を仮定する。 この場合、シンボル“Ｂ”はミスヒットとなる。シンボル変
換部１１１は、予め定めたエントリ（例えば末尾のインデクス“３”）にシンボル“Ｂ”を上書き登録する（シンボル“Ｅ”は結果として削除）。シンボル変換部１１１は、シンボル“Ｂ”と、Cmarkビット“０”とを出力する。
【００９０】
但し、図１７Ｂ及び図１７Ｃに示す例は一例であって、ミスヒットしたシンボルの登録位置について、圧縮器と解凍器との間で等価なルールが適用され、圧縮器の変換テーブルの登録状況の変遷を解凍器の変換テーブルで再現できるようなっていればよい。
【００９１】
シンボル変換部１１１は、第１の操作方法と第２の操作方法とのいずれを実行してもよい。なお、第１の操作方法は、プッシュ操作を行うハードウェア（回路）が複雑になるため、ソフトウェア（プロセッサ及びメモリ）を用いた実装が好ましい。これに対し、第２の操作方法は、第１の操作方法に比べて、ハードウェアによる実装が容易である。
【００９２】
＜エントロピーの計算方法（第１の計算方法）＞
圧縮器１１は、オリジナルシンボルが変換テーブルから検出された場合（オリジナルシンボルがヒットした場合）、Cmarkビット“１”を出力するとともに、エントロピー計算
の結果に従ったデータマスクを出力する。
【００９３】
第１の計算方法では、オリジナルシンボルがＮビットの場合、変換テーブルにおける使用中のエントリ数ｋの二進対数の天井関数（すなわちceil（log２k））の値だけビットを“１”に設定したＮビットのマスクを生成する。すなわち、エントロピー値Ｅを以下の式１にてにて求める。
式１：E＝ ceil（log２k）
【００９４】
例えば、変換テーブル中の使用中のエントリ数が１である場合、ceil（log２１）＝０
となる。また、使用中のエントリ数が２の場合、ceil（log２２）＝１となる。また、使
用中のエントリ数が３の場合、ceil（log２３）＝２となる。また、使用中のエントリ数
が５の場合ceil（log２５）＝３となる。
【００９５】
図１８Ａ〜Ｃは、エントロピーの第１の計算方法の例示を示す。図１８Ａ〜Ｃに示す例では、変換テーブルは、インデックス数が８（インデックス値が“０”〜“７”）のエントリを有する。
【００９６】
図１８Ａに示す例では、インデックス“０”のみにシンボルが登録されている場合、使用中のエントリ数はｋ＝１である。このため、エントロピー計算部１１２によって算出されるエントロピーの計算結果はceil（log２１）＝０となる。この場合、Ｎビットのデー
タマスクとして、“00000000”をマスク生成部１１３が生成して出力する。ｋ＝１の場合にCmarkビットが“１”であれば、必ずインデックス“０”のエントリにシンボルが登録
されていることが自明である。このため、インデックス“０”は０ビットで表され、Cmarkビットのみがシリアライザ１２から出力される。
【００９７】
図１８Ｂに示す例では、インデックス“０”〜“２”にシンボルが登録されており、使用中のエントリ数は３である。この場合、エントロピーの計算結果はceil（log２３）＝
２となり、データマスクとして、Ｎ＝８ビットのうち、最下位ビットから２桁のビットが“１”に設定された（有効ビットが下位２ビットを示す）データマスク“00000011”が出力される。図１８Ｃに示す例では、使用中のエントリ数が５であるため、エントロピーの計算結果はceil（log２５）＝３となり、データマスクとして、Ｎ＝８ビットのうち、最
下位ビットから３桁のビットが“１”に設定された（有効ビットが下位３ビットを示す）データマスク“00000111”が出力される。
【００９８】
図１８Ａ〜Ｃに示した変換テーブルでは、インデックス“０”のみにシンボルが登録されている場合、データマスク中の有効ビット数は０になる。また、インデックス“０”及び“１”にシンボルが登録されている場合、データマスク中の有効ビット数は１となる。インデックス“０”から“２”まで、又は“０”から“３”までにシンボルが登録されている場合、データマスク中の有効ビット数は２となる。インデックス“０”から“４”以降までシンボルが登録されている場合、データマスク中の有効ビット数は３となる。
【００９９】
＜解凍装置の構成＞
図１９は、実施形態１における解凍装置の構成例を示す。図１９において、解凍装置５０は、デシリアライザ５１と、解凍器５２とを備える。デシリアライザ５１には、Ｋビット毎に分けて伝送された伝送データが入力される。デシリアライザ５１は、伝送データから、Ｍビットの圧縮シンボルと、１ビットのCmarkビットを取り出し、解凍器５２に入力
する。解凍器５２は、圧縮シンボルとCmarkビットを用いて、Ｍビットのデータマスクを
出力するとともに、Ｎビットのオリジナルシンボルデータを出力する。
【０１００】
図２０は、解凍器５２の構成例を示す。解凍器５２は、シンボル変換部５２１と、エントロピー計算部５２２と、マスク生成部５２３とを有する。シンボル変換部５２１は、圧縮器１１が有する変換テーブルと同じ構成の変換テーブルを有している。シンボル変換部５２１は、圧縮シンボル及びCmarkビットを受け取り、これらと変換テーブルを用いてオ
リジナルシンボルを出力する。
【０１０１】
エントロピー計算部５２２は、変換テーブルの使用中のエントリ数を示す情報をシンボル変換部５２１から取得し、圧縮器１１のエントロピー計算部１１２が行う計算方法と同じ計算方法でエントロピーを計算し、計算結果をマスク生成部５２３に与える。マスク生成部５２３は、シンボル変換部５２１からCmarkビットを受け取り、ビット値が“０”で
あれば、全て“１”のデータマスクを出力し、ビット値が“１”であれば、エントロピー計算部５２２からのエントロピー計算結果に従った有効ビット数を有するデータマスクを出力する。データマスクは、デシリアライザ５１に入力される。
【０１０２】
図２１は、デシリアライザ５１の処理例を示すフローチャートである。Ｓ２１では、デシリアライザ５１は、入力された伝送データの最初の１ビット（Cmarkビットに該当する
）を読み出す。
【０１０３】
Ｓ２２では、デシリアライザ５１は、ビット値が“１”か“０”かを判定する。ビット値が“１”の場合、解凍器５２から入力されるデータマスクが示すビット数の伝送データを読み出し、圧縮シンボルとして出力する（Ｓ２３）。これに対し、ビット値が“０”の場合、デシリアライザ５１は、Ｎビットの伝送データを読み出し、圧縮シンボルとして出力する（Ｓ２４）。このＮビットの出力は、デシリアライザ５１にＮビット全てが有効ビットを示すデータマスク（“11111111”：Ｎ＝Ｍ＝８ビットの場合）を入力し、デシリアライザ５１が当該データマスクを参照することで行ってもよく、データマスクの値とは無
関係にＮビット出力する定義に従って行ってもよい。実施形態１では、Cmarkビット“０
”の場合にデータマスク“11111111”が入力される態様について説明する。
【０１０４】
Ｓ２５では、Ｓ２１で読み出したビットをCmarkビットとして出力する。Ｓ２５の処理
は、Ｓ２３及びＳ２４の前に実行されてもよく、Ｓ２２の前に実行されてもよい。Ｓ２６では、伝送データが終了したかを判定し、伝送データがない場合には、処理が終了する。伝送データがある場合には、処理がＳ２１に戻る。
【０１０５】
図２２は、解凍器５２の処理例を示すフローチャートである。Ｓ３１において、解凍器５２のシンボル変換部５２１は、デシリアライザ５１から入力されたCmarkビットの値が
“０”か“１”かを判定する。Cmarkビットの値が“０”の場合（Ｓ３１，０）、シンボ
ル変換部５２１は、変換テーブルに、登録対象のシンボルが既に登録されているか否かを判定する。このとき、登録対象のシンボルが既登録と判定される場合には（Ｓ３８，Ｙ）、解凍器５２は所定のエラー処理を行い（Ｓ４１）、処理を終了する。
【０１０６】
これに対し、登録対象のシンボルが登録されていないと判定される場合には（Ｓ３８，Ｎ）、シンボル変換部５２１は、圧縮シンボルを変換テーブルに登録する処理（テーブル更新）を行う（Ｓ３９）。その後、シンボル変換部５２１は、デシリアライザ５１から入力された圧縮シンボルをオリジナルシンボルとして出力する（Ｓ４０）。その後、処理がＳ３６に進む。但し、Ｓ３９の処理とＳ４０の処理順は逆でも並列でもよい。
【０１０７】
これに対し、Cmarkビットの値が“１”の場合（Ｓ３１，１）、シンボル変換部５２１
は、デシリアライザ５１から入力された圧縮シンボルの値に合致するインデックスを変換テーブルから検索する（Ｓ３２）。シンボル変換部５２１は、インデックスがヒットしたかを判定し（Ｓ３３）、ヒットしなかった場合には（Ｓ３３，Ｎ）、所定のエラー処理を行い（Ｓ４２）、図２２の処理を終了する。
【０１０８】
これに対し、インデックスがヒットした場合には（Ｓ３３，Ｙ）、シンボル変換部５２１は、インデックスに対応するエントリ中のシンボルを、オリジナルシンボルとして出力する（Ｓ３４）。Ｓ３５では、シンボル変換部５２１は、テーブル更新処理を行い、ヒットしたシンボルを所定位置（インデックス“０”）に移動させるとともに、インデックス“０”からヒットしたシンボルが登録されていたエントリより１つ前のエントリに登録されていたシンボルを、次のエントリに移動させる。Ｓ３４とＳ３５の処理順は逆でも並列でもよい。
【０１０９】
Ｓ３６において、エントロピー計算部５２２は、オリジナルシンボルの出力毎に、変換テーブルの使用状況を示す情報（使用率、ヒット率）を取得する。取得は、変換テーブルを参照して、使用率などを取得するようにしてもよく、シンボル変換部５２１から使用率などを示す情報を取得するようにしてもよい。エントロピー計算部５２２は、第１又は第２の計算方法を用いてエントロピー計算を行う。マスク生成部５２３は、エントロピー計算値を取得し、このエントロピー計算値に応じた有効ビットを有するデータマスクを生成し、デシリアライザ５１に供給する。その後、図２２の処理が終了する。なお、実施形態３において、Ｓ３８及びＳ４１の処理と、Ｓ３３及びＳ４２の処理とは、必ずしも必要でない。
【０１１０】
＜動作例＞
＜＜圧縮方法＞＞
図２３Ａ〜Ｃ、図２４Ａ〜Ｃ、図２５Ａ〜Ｃ、図２６Ａ〜Ｃ、図２７Ａ〜Ｃ、図２８は、圧縮装置１０の動作例（圧縮方法）の説明図である。図２３Ａには、動作例に係る変換テーブルが示されている。この変換テーブルは、図１８Ａ〜Ｃを用いて説明した構造を有
する。変換テーブルの全エントリ数は８（インデックス値“０”〜“７”）である。入力は、一例として、８ビットのオリジナルシンボルが連なるシンボルデータ列“ABACDABFGEFHJAB”である。初期状態の変換テーブルでは、全てのエントリが未登録状態であると仮
定する。以下の動作例では、変換テーブルの第１の操作方法により、変換テーブルの更新処理が行われる。変換テーブルの更新処理は、圧縮器１１（シンボル変換部）１１１により行われる。エントロピー計算部１１２は、第１の計算方法を用いてエントロピーを計算する。また、本動作例は、Ｎ＝Ｍ＝８ビットの場合について説明する。
【０１１１】
図２３Ｂは、入力されたオリジナルシンボル“Ａ”の処理を示す。オリジナルシンボル“Ａ”は変換テーブルに登録されていない（ミスヒットとなる）。このため、シンボル変換部１１１は、オリジナルシンボル“Ａ”を先頭のエントリ（インデックス“０”）に登録する。シンボル変換部１１１は、オリジナルシンボル“Ａ”を圧縮シンボルとして出力するとともに、非圧縮を示すCmarkビット“０”を出力する。
【０１１２】
マスク生成部１１３は、８ビットの全てが有効ビットであることを示すデータマスク“11111111”を出力する。シリアライザ１２は、図１１に示した処理を行い、データマスク“11111111”に従って、Cmarkビット“０”にシンボル“Ａ”（ＡＳＣＩＩコード：01000001）を続けた“０Ａ”のシリアルデータを出力する。但し、シンボルはＡＳＣＩＩコー
ド以外で表されてもよい。
【０１１３】
図２３Ｃは、オリジナルシンボル“Ａ”の次に入力されたオリジナルシンボル“Ｂ”の処理を示す。オリジナルシンボル“Ｂ”は未登録であるため、シンボル変換部１１１は、プッシュ処理をして、シンボル“Ｂ”をインデックス“０”に登録し、シンボル“Ａ”は、次のエントリであるインデックス“１”に登録する。シンボル変換部１１１は、シンボル“Ｂ”及びCmarkビット“０”を出力する。このとき、マスク生成部１１３は、データ
マスク“11111111”を出力する。シリアライザ１２は、データマスクに従って、Cmarkビ
ット“０”にシンボル“Ｂ”（ＡＳＣＩＩコード：01000010）を続けた“０Ｂ”のシリアルデータを出力する。
【０１１４】
図２４Ａは、オリジナルシンボル“Ｂ” の次に入力されたオリジナルシンボル“Ａ”
の処理を示す。シンボル“Ａ”はインデックス“１”に登録されている。このため、シンボル“Ａ”がヒットする。この場合、シンボル変換部１１１は、シンボル“Ａ”が登録されていたエントリのインデックス値“１”を示すビット値“１”を圧縮シンボルとして出力するとともに圧縮を示すCmarkビット“１”を出力する。また、シンボル変換部１１１
は、ヒットしたシンボル“Ａ”を先頭のエントリ（インデックス“０”）に移動する一方で、インデックス“０”に登録されていたシンボル“Ｂ”を次のエントリ（インデックス“１”）に移動させる。
【０１１５】
この場合、エントロピー計算部１１２におけるエントロピーの計算結果は、ceil(log22)=1となる。このため、マスク生成部１１３は、データマスク“00000001”を生成して出
力する。シンボルが圧縮された（シンボル変換が行われた）場合、シリアライザ１２は、Cmarkビットが“１”の場合、データマスクが示す有効ビット数（＝１）のビット“１”
を、圧縮シンボルとして出力する（図２１、Ｓ２３）。これによって、Cmarkビット“１
”に圧縮シンボル“１”が続く２ビットのシリアルデータ“１１”をシリアライザ１２は出力する。
【０１１６】
図２４Ｂは、シンボル“Ａ” の次に入力されたオリジナルシンボル“Ｃ”の処理を示
す。シンボル“Ｃ”は未登録であるため、シンボル変換部１１１は、シンボル“Ｃ”及びCmarkビット“０”を出力するとともに、シンボル“Ｃ”についてのプッシュ処理を行う
。すなわち、シンボルＣをインデックス“０”に登録し、既登録のシンボルを次のエント
リに移動する。この場合、マスク生成部１１３は、オール“１”のデータマスクを生成及び出力する。シリアライザ１２は、データマスクに従って、Cmarkビット“０”にシンボ
ル“Ｃ”（ＡＳＣＩＩコード：01000011）が続く“０Ｃ”のシリアルデータを出力する。
【０１１７】
図２４Ｃは、シンボル“Ｃ” の次に入力されたオリジナルシンボル“Ｄ”の処理を示
す。シンボル“Ｄ”は未登録であるため、シンボル変換部１１は、シンボル“Ｃ”及びCmarkビット“０”を出力するとともに、シンボル“Ｄ”についてのプッシュ処理を行う。
マスク生成部１１３は、オール“１”のデータマスクを生成及び出力する。シリアライザ１２は、データマスクに従って、Cmarkビット“０”にシンボル“Ｄ”（ＡＳＣＩＩコー
ド：01000100）が続く“０Ｄ”のシリアルデータを出力する。
【０１１８】
図２５Ａは、シンボル“Ｄ” の次に入力されたオリジナルシンボル“Ａ”の処理を示
す。シンボル“Ａ”はインデックス“２”に登録されている（図２４Ｃ）。このため、シンボル変換部１１１は、シンボル“Ａ”が登録されていたエントリのインデックス値“２”（図２４Ｃ）を示すビット値“１０”を圧縮シンボルとして出力するとともに圧縮を示すCmarkビット“１”を出力する。また、シンボル変換部１１１は、ヒットしたシンボル
“Ａ”をインデックス“０”に移動する一方で、シンボル“Ｄ”，“Ｃ”，“Ｂ”を次のエントリに移動させる。
【０１１９】
この場合、エントロピー計算部１１２におけるエントロピーの計算結果は２となる。このため、マスク生成部１１３は、データマスク“00000011”を生成して出力する。シリアライザ１２は、Cmarkビットが“１”であるため、データマスクが示す有効ビット数（＝
２）のビット“１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１
”に圧縮シンボル“１０”が続く３ビットのシリアルデータ“１１０”がシリアライザ１２から出力される。
【０１２０】
図２５Ｂは、シンボル“Ａ” の次に入力されたオリジナルシンボル“Ｂ”の処理を示
す。シンボル“Ｂ”はインデックス“３”に登録されているため（図２５Ａ）、シンボル変換部１１１は、シンボル“Ｂ”が登録されていたエントリのインデックス値“３”を示すビット値“１１”を圧縮シンボルとして出力するとともに圧縮を示すCmarkビット“１
”を出力する。また、シンボル変換部１１１は、シンボル“Ｂ”をインデックス“０”に移動する一方で、シンボル“Ａ”，“Ｄ”，“Ｃ”を次のエントリに移動させる。
【０１２１】
この場合、エントロピー計算部１１２におけるエントロピーの計算結果は２となり、マスク生成部１１３は、データマスク“00000011”を生成及び出力する。シリアライザ１２は、Cmarkビットが“１”であるため、データマスクが示す有効ビット数（＝２）のビッ
トを圧縮シンボルとして出力する。これによって、Cmarkビット“１”に圧縮シンボル“
１１”が続く３ビットのシリアルデータ“１１１”がシリアライザ１２から出力される。
【０１２２】
図２５Ｃは、シンボル“Ｂ” の次に入力されたオリジナルシンボル“Ｆ”の処理を示
す。シンボル“Ｆ”は未登録であるため、シンボル変換部１１１は、シンボル“Ｆ”及びCmarkビット“０”を出力するととともに、シンボル“Ｆ”についてのプッシュ処理を行
う。この場合、マスク生成部１１３はオール“１”のデータマスクを生成及び出力する。シリアライザ１２は、データマスクに従って、Cmarkビット“０”にシンボル“Ｆ”（Ａ
ＳＣＩＩコード：01000110）が続く“０Ｆ”のシリアルデータを出力する。
【０１２３】
図２６Ａは、シンボル“Ｆ”に続くシンボル“Ｇ”の処理を示す。シンボル“Ｇ”は未登録であるため、シンボル変換部１１１は、シンボル“Ｇ”及びCmarkビット“０”を出
力するととともに、シンボル“Ｇ”についてのプッシュ処理を行う。この場合、マスク生成部１１３はオール“１”のデータマスクを生成及び出力する。シリアライザ１２は、デ
ータマスクに従って、Cmarkビット“０”にシンボル“Ｇ”（ＡＳＣＩＩコード：01000110）が続く“０Ｇ”のシリアルデータを出力する。
【０１２４】
図２６Ｂは、シンボル“Ｇ”に続くシンボル“Ｅ”の処理を示す。シンボル“Ｅ”は未登録であるため、シンボル変換部１１１は、シンボル“Ｅ”及びCmarkビット“０”を出
力するととともに、シンボル“Ｅ”についてのプッシュ処理を行う。この場合、マスク生成部１１３はオール“１”のデータマスクを生成及び出力する。シリアライザ１２は、データマスクに従って、Cmarkビット“０”にシンボル“Ｅ”（ＡＳＣＩＩコード：01000101）が続く“０Ｅ”のシリアルデータを出力する。
【０１２５】
図２６Ｃは、シンボル“Ｅ” の次に入力されたオリジナルシンボル“Ｆ”の処理を示
す。シンボル“Ｆ”はインデックス“２”に登録されている（図２６Ｂ）。このため、シンボル変換部１１１は、インデックス値“２”を示すビット値“１０”とCmarkビット“
１”とを出力する。また、シンボル“Ｆ”をインデックス“０”に移動する一方で、シンボル“Ｅ”，“Ｇ”を次のエントリに移動させる（シンボル“Ｂ”，“Ａ”，“Ｄ”，“Ｃ”はそのままである）。
【０１２６】
この場合、エントロピー計算部１１２は、エントロピーの計算結果“３”を出力し、マスク生成部１１３は、データマスク“00000111”を生成及び出力する。シリアライザ１２は、Cmarkビットが“１”であるため、データマスクが示す有効ビット数（＝３）のビッ
ト“０１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”に圧縮
シンボル“０１０”が続く４ビットのシリアルデータ“１０１０”がシリアライザ１２から出力される。
【０１２７】
図２７Ａは、シンボル“Ｆ” の次に入力されたオリジナルシンボル“Ｈ”の処理を示
す。シンボル“Ｈ”は未登録であるため、シンボル変換部１１１は、シンボル“Ｈ”及びCmarkビット“０”を出力するととともに、シンボル“Ｈ”についてのプッシュ処理を行
う。この場合、マスク生成部１１３はオール“１”のデータマスクを生成及び出力する。シリアライザ１２は、データマスクに従って、Cmarkビット“０”にシンボル“Ｈ”（Ａ
ＳＣＩＩコード：01001000）が続く“０Ｈ”のシリアルデータを出力する。
【０１２８】
図２７Ｂは、シンボル“Ｈ”の次のシンボル“Ｊ”の処理を示す。シンボル“Ｊ”は未登録であるため、シンボル変換部１１１は、シンボル“Ｊ”及びCmarkビット“０”を出
力するととともに、シンボル“Ｊ”についてのプッシュ処理を行う。このとき、シンボル“Ｃ”は変換テーブルから追い出されて削除される。マスク生成部１１３はオール“１”のデータマスクを生成及び出力する。シリアライザ１２は、データマスクに従って、Cmarkビット“０”にシンボル“Ｊ”（ＡＳＣＩＩコード：01001010）が続く“０Ｊ”のシリ
アルデータを出力する。
【０１２９】
図２７Ｃは、シンボル“Ｊ”に続くシンボル“Ａ”の処理を示す。シンボル“Ａ”はインデックス“６”に登録されている（図２７Ｂ）。このため、シンボル変換部１１１は、インデックス値“６”を示すビット値“１１０”とCmarkビット“１”とを出力する。ま
た、シンボル“Ａ”をインデックス“０”に移動する一方で、シンボル“Ｊ”から“Ｂ”を次のエントリに移動させる。
【０１３０】
この場合、エントロピー計算部１１２は、エントロピーの計算結果“３”を出力し、マスク生成部１１３は、データマスク“00000111”を生成及び出力する。シリアライザ１２は、Cmarkビットが“１”であるため、データマスクが示す有効ビット数（＝３）のビッ
ト“１１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”に圧縮
シンボル“１１０”が続く４ビットのシリアルデータ“１１１０”がシリアライザ１２か
ら出力される。
【０１３１】
図２８は、シンボル“Ａ”に続くシンボル“Ｂ”の処理を示す。シンボル“Ｂ”はインデックス“６”に登録されている（図２７Ｃ）。このため、シンボル変換部１１１は、インデックス値“６”（ビット値“１１１”）とCmarkビット“１”とを出力する。また、
シンボル“Ｂ”をインデックス“０”に移動する一方で、シンボル“Ａ”から“Ｇ”を次のエントリに移動させる。
【０１３２】
この場合、エントロピー計算部１１２は、エントロピーの計算結果“３”を出力し、マスク生成部１１３は、データマスク“00000111”を生成及び出力する。シリアライザ１２は、Cmarkビットが“１”であるため、データマスクが示す有効ビット数（＝３）のビッ
ト“１１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”に圧縮
シンボル“１１０”が続く４ビットのシリアルデータ“１１１０”がシリアライザ１２から出力される。
【０１３３】
なお、上記した圧縮装置１０の出力では、オリジナルシンボル列“ABACDABFGEFHJAB”
（１５×８＝１２０ビット）に対するシリアライザ１２の出力は１０１ビットとなり、圧縮率は８４％となる。
【０１３４】
＜＜解凍方法＞＞
図２９Ａ〜Ｃ、図３０Ａ〜Ｃ、図３１Ａ〜Ｃ、図３２Ａ〜Ｃ、図３３Ａ〜Ｃ、図３４は、解凍装置５０の動作例（圧縮方法）の説明図である。図２９Ａには、解凍装置５０の動作例に係る変換テーブルが示されている。この変換テーブルは、図２３Ａに示した圧縮装置１０が有する変換テーブルと同じデータ構造を有する。このため、再度の説明は省略する。
【０１３５】
解凍装置５０に対する入力は、一例として、圧縮装置１０の動作例において圧縮装置１０から出力されたシリアルデータ（Cmarkビット＋圧縮シンボルの）ビット列、“０Ａ”
，“０Ｂ”，“１１”，“０Ｃ”，“０Ｄ”，“１１０”，“１１１”，“０Ｆ”，“０Ｇ”，“０Ｅ”，“１０１０”，“０Ｈ”，“０Ｊ”，“１１１０”，“１１１０”である。
【０１３６】
また、解凍器５２における初期状態の変換テーブルでは、全てのエントリが未登録状態であると仮定する。以下の動作例では、変換テーブルの第１の操作方法により、変換テーブルの更新処理が行われる。変換テーブルの更新処理は、解凍器５２（シンボル変換部５２１）により行われる。エントロピー計算部５２２は、第１の計算方法を用いてエントロピーを計算する。
【０１３７】
図２９Ｂは、解凍装置５０にシリアルデータ“０Ａ”が入力された場合の処理を示す。デシリアライザ５１によって、シリアルデータ“０Ａ”はCmarkビット“０”と圧縮シン
ボル“Ａ”とに分離され、解凍器５２に入力される。
【０１３８】
Cmarkビットが“０”であるため、シンボル変換部５２１は、圧縮シンボル“Ａ”をオ
リジナルシンボル（解凍シンボル）として出力する。エントロピー計算部５２２は、エントロピーの計算結果として０を出力し、データマスク生成部５２３は、エントロピー計算値とは無関係に全て有効ビットを示すデータマスク“11111111”を生成及び出力する。
【０１３９】
図２９Ｃは、解凍装置５０にシリアルデータ“０Ｂ”が入力された場合の処理を示す。デシリアライザ５１は、シリアルデータ“０Ｂ”をCmarkビット“０”と圧縮シンボル“
Ｂ”とに分離し、解凍器５２に入力する。Cmarkビットが“０”であるため、シンボル変
換部５２１は、圧縮シンボル“Ｂ”をオリジナルシンボルとして出力する。このとき、データマスク“11111111”を生成及び出力する。
【０１４０】
図３０Ａは、解凍装置５０にシリアルデータ“１１”が入力された場合の処理を示す。デシリアライザ５１は、シリアルデータ“１１”の最初の“１”を参照して、Cmarkビッ
ト“１”と判定する。この場合、解凍器５２からのデータマスク“00000001”に従って１ビット読み出し、圧縮シンボルとして出力する。これによって、Cmarkビット“１”と圧
縮シンボル“１”との分離が行われ、それぞれが解凍器５２に入力される。
【０１４１】
シンボル変換部５２１は、Cmarkビットが“１”であるため、圧縮シンボル“１”が示
すインデックス、すなわちインデックス“１”に登録（記憶）されたシンボル“Ａ”（図２９Ｃ）を読み出し、オリジナルシンボルとして出力する。また、シンボル変換部５２１は、シンボル“Ａ”をインデックス“０”に移動し、シンボル“Ｂ”を次のエントリ（インデックス“１”）に移動させる。エントロピー計算部５２２はエントロピーの計算結果として“１”を出力し、マスク生成部５２３がデータマスク“00000001”を生成してデシリアライザ５１に供給する。
【０１４２】
図３０Ｂは、解凍装置５０にシリアルデータ“０Ｃ”が入力された場合の処理を示す。デシリアライザ５１は、Cmarkビットが“０”と判定し、Ｎビットの出力を行う。これに
よって、圧縮シンボル“Ｃ”が出力される。デシリアライザ５１は、Cmarkビット“０”
及び圧縮シンボル“Ｃ”を解凍器５２に供給する。
【０１４３】
シンボル変換部５２１は、Cmarkビットが“０”であるため、圧縮シンボル“Ｃ”をオ
リジナルシンボルとして出力するとともに、変換テーブルに対するプッシュ処理を行い、シンボル“Ｃ”をインデックス“０”に登録する。この場合、データマスク“11111111”が生成及び出力される。
【０１４４】
図３０Ｃは、解凍装置５０にシリアルデータ“０Ｄ”が入力された場合の処理を示す。デシリアライザ５１は、Cmarkビットが“０”であるため、Ｎビットの出力により、圧縮
シンボル“Ｄ”を出力する。デシリアライザ５１は、Cmarkビット“０”及び圧縮シンボ
ル“Ｄ”を解凍器５２に供給する。
【０１４５】
シンボル変換部５２１は、Cmarkビットが“０”であるため、圧縮シンボル“Ｄ”をオ
リジナルシンボルとして出力するとともに、変換テーブルに対するプッシュ処理を行い、シンボル“Ｄ”をインデックス“０”に登録する。この場合、データマスク“11111111”が生成及び出力される。
【０１４６】
図３１Ａは、解凍装置５０にシリアルデータ“１１０”が入力された場合の処理を示す。デシリアライザ５１は、シリアルデータ“１１０”の最初の“１”を参照して、Cmark
ビット“１”と判定する。この場合、解凍器５２からのデータマスク“00000011”に従って２ビット読み出し、ビット値“１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”と圧縮シンボル“１０”とが解凍器５２に入力される。
【０１４７】
シンボル変換部５２１は、Cmarkビットが“１”であるため、圧縮シンボル“１０”が
示すインデックス、すなわちインデックス“２”に登録されたシンボル“Ａ”（図３０Ｃ）を読み出し、オリジナルシンボルとして出力する。また、シンボル変換部５２１は、シンボル“Ａ”をインデックス“０”に移動し、シンボル“Ｄ”及び“Ｃ”を次のエントリに移動させる。エントロピー計算部５２２はエントロピーの計算結果として“２”を出力し、マスク生成部５２３がデータマスク“00000011”を生成してデシリアライザ５１に供給する。
【０１４８】
図３１Ｂは、解凍装置５０にシリアルデータ“１１１”が入力された場合の処理を示す。デシリアライザ５１は、シリアルデータ“１１１”の最初の“１”を参照して、Cmark
ビット“１”と判定する。この場合、解凍器５２からのデータマスク“00000011”に従って２ビット読み出し、ビット値“１１”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”と圧縮シンボル“１１”とが解凍器５２に入力される。
【０１４９】
シンボル変換部５２１は、Cmarkビットが“１”であるため、圧縮シンボル“１１”が
示すインデックス、すなわちインデックス“３”に登録されたシンボル“Ｂ”（図３１Ａ）を読み出し、オリジナルシンボルとして出力する。また、シンボル変換部５２１は、シンボル“Ｂ”をインデックス“０”に移動し、シンボル“Ａ”，“Ｄ”，“Ｃ”を次のエントリに移動させる。エントロピー計算部５２２はエントロピーの計算結果として“２”を出力し、マスク生成部５２３がデータマスク“00000011”を生成してデシリアライザ５１に供給する。
【０１５０】
図３１Ｃは、解凍装置５０にシリアルデータ“０Ｆ”が入力された場合の処理を示す。デシリアライザ５１は、Cmarkビットが“０”であるため、Ｎビットの出力により、圧縮
シンボル“Ｆ”を出力する。デシリアライザ５１は、Cmarkビット“０”及び圧縮シンボ
ル“Ｆ”を解凍器５２に供給する。
【０１５１】
シンボル変換部５２１は、Cmarkビットが“０”であるため、圧縮シンボル“Ｆ”をオ
リジナルシンボルとして出力するとともに、変換テーブルに対するプッシュ処理を行い、シンボル“Ｆ”をインデックス“０”に登録する。この場合、データマスク“11111111”が生成及び出力される。
【０１５２】
図３２Ａは、解凍装置５０にシリアルデータ“０Ｇ”が入力された場合の処理を示す。デシリアライザ５１は、Cmarkビットが“０”であるため、Ｎビットの出力により、圧縮
シンボル“Ｇ”を出力する。デシリアライザ５１は、Cmarkビット“０”及び圧縮シンボ
ル“Ｇ”を解凍器５２に供給する。
【０１５３】
シンボル変換部５２１は、Cmarkビットが“０”であるため、圧縮シンボル“Ｇ”をオ
リジナルシンボルとして出力するとともに、変換テーブルに対するプッシュ処理を行い、シンボル“Ｇ”をインデックス“０”に登録する。この場合、データマスク“11111111”が生成及び出力される。
【０１５４】
図３２Ｂは、解凍装置５０にシリアルデータ“０Ｅ”が入力された場合の処理を示す。デシリアライザ５１は、Cmarkビットが“０”であるため、Ｎビットの出力により、圧縮
シンボル“Ｅ”を出力する。デシリアライザ５１は、Cmarkビット“０”及び圧縮シンボ
ル“Ｅ”を解凍器５２に供給する。
【０１５５】
シンボル変換部５２１は、Cmarkビットが“０”であるため、圧縮シンボル“Ｅ”をオ
リジナルシンボルとして出力するとともに、変換テーブルに対するプッシュ処理を行い、シンボル“Ｅ”をインデックス“０”に登録する。この場合、データマスク“11111111”が生成及び出力される。
【０１５６】
図３２Ｃは、解凍装置５０にシリアルデータ“１０１０”が入力された場合の処理を示す。デシリアライザ５１は、シリアルデータ“１０１０”の最初の“１”を参照して、Cmarkビット“１”と判定する。この場合、解凍器５２からのデータマスク“00000111”に
従って３ビット読み出し、ビット値“０１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”と圧縮シンボル“０１０”とが解凍器５２に入力される。
【０１５７】
シンボル変換部５２１は、Cmarkビットが“１”であるため、圧縮シンボル“０１０”
が示すインデックス、すなわちインデックス“２”に登録されたシンボル“Ｆ”（図３２Ｂ）を読み出し、オリジナルシンボルとして出力する。また、シンボル変換部５２１は、シンボル“Ｆ”をインデックス“０”に移動し、シンボル“Ｅ”，“Ｇ”を次のエントリに移動させる。エントロピー計算部５２２はエントロピーの計算結果として“３”を出力し、マスク生成部５２３がデータマスク“00000111”を生成してデシリアライザ５１に供給する。
【０１５８】
図３３Ａは、解凍装置５０にシリアルデータ“０Ｈ”が入力された場合の処理を示す。デシリアライザ５１は、Cmarkビットが“０”であるため、Ｎビットの出力により、圧縮
シンボル“Ｈ”を出力する。デシリアライザ５１は、Cmarkビット“０”及び圧縮シンボ
ル“Ｈ”を解凍器５２に供給する。
【０１５９】
シンボル変換部５２１は、Cmarkビットが“０”であるため、圧縮シンボル“Ｈ”をオ
リジナルシンボルとして出力するとともに、変換テーブルに対するプッシュ処理を行い、シンボル“Ｈ”をインデックス“０”に登録する。この場合、データマスク“11111111”が生成及び出力される。
【０１６０】
図３３Ｂは、解凍装置５０にシリアルデータ“０Ｊ”が入力された場合の処理を示す。デシリアライザ５１は、Cmarkビットが“０”であるため、Ｎビットの出力により、圧縮
シンボル“Ｊ”を出力する。デシリアライザ５１は、Cmarkビット“０”及び圧縮シンボ
ル“Ｊ”を解凍器５２に供給する。
【０１６１】
シンボル変換部５２１は、Cmarkビットが“０”であるため、圧縮シンボル“Ｊ”をオ
リジナルシンボルとして出力するとともに、変換テーブルに対するプッシュ処理を行い、シンボル“Ｊ”をインデックス“０”に登録する。このとき、シンボル“Ｃ”は変換テーブルから追い出されて削除される。エントロピー計算部５２２はエントロピー計算結果として“３”を出力し、マスク生成部５２３がデータマスク“00000111”をデシリアライザ５１に供給する。
【０１６２】
図３３Ｃは、解凍装置５０にシリアルデータ“１１１０”が入力された場合の処理を示す。デシリアライザ５１は、シリアルデータ“１１１０”の最初の“１”を参照し、Cmarkビット“１”と判定する。この場合、解凍器５２からのデータマスク“00000111”に従
って３ビット読み出し、ビット値“１１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”と圧縮シンボル“１１０”とが解凍器５２に入力される。
【０１６３】
シンボル変換部５２１は、Cmarkビットが“１”であるため、圧縮シンボル“１１０”
が示すインデックス、すなわちインデックス“６”に登録されたシンボル“Ａ”（図３３Ｂ）を読み出し、オリジナルシンボルとして出力する。また、シンボル変換部５２１は、シンボル“Ａ”をインデックス“０”に移動し、シンボル“Ｊ”から“Ｂ”を次のエントリに移動させる。エントロピー計算部５２２はエントロピーの計算結果として“３”を出力し、マスク生成部５２３がデータマスク“00000111”を生成してデシリアライザ５１に供給する。
【０１６４】
図３４は、解凍装置５０にシリアルデータ“１１１０”が入力された場合の処理を示す。デシリアライザ５１は、シリアルデータ“１１１０”の最初の“１”を参照し、Cmark
ビット“１”と判定する。この場合、解凍器５２からのデータマスク“00000111”に従って３ビット読み出し、ビット値“１１０”を圧縮シンボルとして出力する。これによって、Cmarkビット“１”と圧縮シンボル“１１０”とが解凍器５２に入力される。
【０１６５】
シンボル変換部５２１は、Cmarkビットが“１”であるため、圧縮シンボル“１１０”
が示すインデックス、すなわちインデックス“６”に登録されたシンボル“Ｂ”（図３３Ｃ）を読み出し、オリジナルシンボルとして出力する。また、シンボル変換部５２１は、シンボル“Ａ”をインデックス“０”に移動し、シンボル“Ａ”から“Ｇ”を次のエントリに移動させる。エントロピー計算部５２２はエントロピーの計算結果として“３”を出力し、マスク生成部５２３がデータマスク“00000111”を生成してデシリアライザ５１に供給する。
【０１６６】
上述した解凍方法によれば、圧縮器１１が備える変換テーブルが解凍器５２において再現され、変換テーブルを用いて、オリジナルシンボルを解凍（復元）することができる。このとき、変換テーブルの使用状況に応じて、圧縮シンボル長を可変にすることができる。従って、テーブル（複数のエントリ）の使用状況に応じて、圧縮率を高めることができる。また、圧縮装置１０と解凍装置５０との間の伝送路を流れるデータ量を減らすことができる。
【０１６７】
〔実施形態２〕
次に、実施形態２に係る圧縮装置及び解凍装置について説明する。実施形態２は実施形態１と同様の構成を含むため、同様の構成については説明を省略し、主として相違点について説明する。
【０１６８】
実施形態１では、オリジナルシンボルの種類が増えてくると、変換テーブルがフルとなり、フルの場合は、データマスクがＭビットとなり、変換テーブルからオリジナルシンボルがヒットしたとしても、圧縮シンボルはＭビットとなるため、エントロピー制御を局所的に行うことができない。このため、実施形態２では、シンボルのヒットの回数、又はミスヒットの回数に応じて、使用中のエントリのうち、最後に位置する（インデックス値がもっとも大きい）エントリ中のシンボルをクリアすることで、エントロピーの削減を図る（エントロピーカリングと呼ぶ）。
【０１６９】
図３５は、実施形態２に係る、エントロピーカリングの一例を示す。図３５の左上に示すように、圧縮装置の変換テーブルにおいて、シンボル“Ａ”〜“Ｅ”がインデックス“０”〜“４”に登録されている場合を仮定する。このとき、オリジナルシンボルとしてシンボル“Ｄ”（８ビット）が入力されると、インデックス“３”（ビット値：０１１）がヒットする。このとき、第１の計算方法によるエントロピー計算結果は３であり、これに基づくデータマスクは“00000111”となるため、圧縮装置からの出力、すなわちCmarkビ
ット及び圧縮シンボルのシリアルデータは、“１０１１”となる。
【０１７０】
シンボル“Ｄ”のヒットに基づき、第１の操作方法に従って、シンボル“Ｄ”がインデックス“０”に移動し、シンボル“Ａ”，“Ｂ”，“Ｃ”が次のエントリに移動する（図中右上の変換テーブルを参照）。
【０１７１】
その後、オリジナルシンボルとして、シンボル“Ｃ”が入力されたと仮定する。この場合も、インデックス“３”がヒットする。エントロピー値及びデータマスクに変更はないため、シリアルデータ“１０１１”が出力される。
【０１７２】
シンボル“Ｃ”のヒットに基づき、第１の操作方法に従って、シンボル“Ｃ”がインデックス“０”に移動し、シンボル“Ｄ”，“Ａ”，“Ｂ”が次のエントリに移動する（図中左下の変換テーブルを参照）。また、２回のヒットをトリガとして、使用中のエントリのうちの、インデックス値が最大のエントリ中のシンボル“Ｅ”が削除（クリア）される。
【０１７３】
その後、シンボル“Ｂ”がオリジナルシンボルとして入力されると、インデックス“４”がヒットする。ここで、シンボル“Ｅ”の削除によってエントロピーの計算結果は２となり、データマスクは“00000011”となる。従って、Cmarkビット“１”及び圧縮シンボ
ル“１１”からなるシリアルデータ“１１１”が圧縮装置から出力される。
【０１７４】
その後、シンボル“Ｂ”のヒットに基づき、第１の操作方法に従って、シンボル“Ｂ”がインデックス“０”に移動し、シンボル“Ｃ”，“Ｄ”，“Ａ”が次のエントリに移動する（図中右下の変換テーブルを参照）。その後、シンボル“Ｃ”がオリジナルシンボルとして入力されると、インデックス“１”がヒットする。この時点でのエントロピーの計算結果は２となり、データマスクは“00000011”となる。従って、Cmarkビット“１”及
び圧縮シンボル“０１”からなるシリアルデータ“１０１”が圧縮装置から出力される。
【０１７５】
解凍装置においても同様に、２回のヒットを契機として、使用中のエントリのうち、インデックス値が最大のエントリ中のシンボルがクリアされる。これによって、解凍装置における変換テーブルも、図３５に示したような遷移を行う。上記の点を除き、圧縮装置及び解凍装置の構成は、実施形態１と同様である。
【０１７６】
なお、先頭から所定の位置までにある（所定の範囲にある）エントリに登録されたシンボルはカリングによって削除されないルールを定めることができる。これによって、カリングによって登録済のシンボルが削除されすぎないようにすることができる。例えば、図３５に示した変換テーブルにおいて、インデックス“０”及び“１”のエントリに登録されたシンボルは、カリングの条件が満たされても、クリアの対象とならない構成を採用できる。所定の位置は、適宜設定可能である。
【０１７７】
また、上述した例では、２回目のヒットにより、カリングが行われる例を示したが、所定回数のミスヒットをトリガとして、カリングが実行されてもよい。回数を計数するヒット又はミスヒットの間に、ミスヒットやヒットが挟まっていてもよい（ヒット又はミスヒットの回数は連続であることを要しない）。
【０１７８】
実施形態２によれば、エントロピーカリングによって、局所的なエントロピーの制御を行うことができ、圧縮シンボルのサイズを小さくすることができる。
【０１７９】
〔実施形態３〕
次に、実施形態３に係る圧縮装置及び解凍装置について説明する。実施形態３は実施形態１と同様の構成を含むため、同様の構成については説明を省略し、主として相違点について説明する。
【０１８０】
参考例の課題２として示したように、参考例では、解凍側で圧縮シンボル列の末尾を認識することができない。そこで、変換テーブルの先頭から所定の位置までのエントリを例外シンボルによって予約（リザーブ）する。例外シンボルは、所定の命令（コマンド）が割り当てられたシンボルであり、解凍側では、例外シンボルによって示される、制御に関する命令を認識する。リザーブされたエントリに登録された例外シンボルは、上書き登録や削除の対象とならない。圧縮側では、変換テーブルを用いた変換処理をバイパスして、例外シンボルの出力を行ってもよい。また、圧縮装置からの出力において、例外シンボルの後ろに、コマンドに付随する引数を、Cmarkビット“０”且つＮビット幅で続けること
ができる。解凍側（解凍装置）ではその引数の個数は把握しているものとする。
【０１８１】
＜コマンド送信＞
図３７Ａ〜Ｃは、例外シンボルの説明図である。図３７Ａには、圧縮装置と解凍装置と
で共有する変換テーブルの一例が示されている。変換テーブルは、所定数（一例として４つ）のエントリ（インデックス“０”〜“３”）を有し、インデックス“０”がコマンド１を示す例外シンボルの登録用にリザーブされ、インデックス“１”がコマンド２を示す例外シンボルの登録用にリザーブされている。
【０１８２】
図３７Ｂは、コマンド１の送信方法（第１送信方法）の一例を示す。コマンド１を圧縮側から解凍側に送る場合、圧縮装置は、Cmarkビット“１”と、圧縮シンボルとしてのイ
ンデックス“０”とを解凍側に送る。解凍装置は、Cmarkビット“１”に従って、インデ
ックス“０”からコマンド１の例外シンボルを読み出し、コマンド１を認識して、コマンド１に応じた処理を行う。但し、第１送信方法を用いる場合には、コマンドに使用されるビット列（シンボル）はオリジナルシンボルとして出現しないことを保証することが要求される。或いは、コマンドが登録されるエントリがオリジナルエントリの登録用として使用されないようにリザーブする必要がある。
【０１８３】
図３７Ｃは、コマンド１の他の送信方法（第２送信方法）を示す。圧縮装置は、コマンド１を解凍装置へ送る場合、Cmarkビット“０”と、圧縮シンボルとしてのコマンド１の
例外シンボルとを、解凍装置へ送る。解凍装置では、Cmarkビット“０”に従って、コマ
ンド１の例外シンボルを変換テーブルに登録しようとするが、コマンド１の例外シンボルは既に登録されているため、エラー（例外）が発生する（図２２、Ｓ３８、Ｓ４１参照）。解凍装置は、この例外に対する例外処理において、例外コマンドであるコマンド１を実行する。
【０１８４】
図３８Ａ〜Ｃは、エントリのリザーブを行わずに、コマンドを圧縮装置から解凍装置へ送る方法を示す。図３８Ａには、変換テーブルの一例が示されている。変換テーブルは、所定数（一例として４つ）のエントリを有し、インデックス“０”及び“１”には、２つのシンボル“ＡＢ”と“ＣＤ”とがそれぞれ登録されている。シンボル“ＡＢ”と“ＣＤ”とは、例外シンボルではなく、通常のオリジナルシンボルである。なお、シンボルの数は例示であり、１又は３以上であってもよい。
【０１８５】
図３８Ｂは、コマンドの第３の送信方法を示す。圧縮装置と解凍装置とで、図３８Ａに示した登録内容の変換テーブルを有している状況で、Cmarkビット“１”と、圧縮シンボ
ルとしての、空エントリのインデックスであるインデックス“２”又は“３”とを送信する。解凍装置は、Cmarkビット“１”に従ってインデックス“２”又は“３”からシンボ
ルの読み出しを試行するが、空エントリであるため読み出しができず、エラーとなる（図２２、Ｓ３３、Ｓ４２参照）。このエラーの発生を、例外（コマンド実行）の発生と解凍装置は扱う。このとき、インデックス“２”であればコマンド１、インデックス“３”であればコマンド２と解釈することもできる。
【０１８６】
図３８Ｃは、コマンドの第４の送信方法を示す。圧縮装置と解凍装置とで、図３８Ａに示した登録内容の変換テーブルを有している状況で、Cmarkビット“０”と、圧縮シンボ
ルとしての、シンボル“ＡＢ”又は“ＣＤ”とを送信する。解凍装置は、Cmarkビット“
０”に従ってシンボル“ＡＢ”又は“ＣＤ”の登録を試行するが、シンボル“ＡＢ”及び“ＣＤ”は既に登録されているためエラーとなる。このエラーの発生を、例外（コマンド実行）の発生と解凍装置は扱う。このとき、シンボル“ＡＢ”であればコマンド１の実行を、シンボル“ＣＤ”であればコマンド２の実行と解釈することもできる。
【０１８７】
第１〜第４の送信方法の実行に当たって、シンボル変換部１１１は、変換テーブルに係る通常の処理を行わずに、コマンド対応のCmarkビットと圧縮シンボルとの組み合わせを
生成して送信するようにしてもよい。
【０１８８】
図３９は、第１〜第４の送信方法をまとめた表である。上述した第１及び第２の送信方法は、コマンドとしての例外シンボルを登録するためのエントリをリザーブする類型（類型１）に属する。これに対し、第３及び第４の送信方法は、コマンド（例外シンボル）用のエントリをリザーブしない類型（類型２）に属する。類型１及び類型２のそれぞれは、解凍側にエントリのインデックスを送信する類型（類型３）と、解凍側にオリジナルシンボルを送信する類型（類型４）とに分類される。
【０１８９】
第１の送信方法は、類型１と類型３との組み合わせである。上述したように、圧縮装置は、リザーブされたエントリのインデックスと、Cmarkビット“１”とを解凍装置に送信
する。解凍装置は、インデックスにより指定されたエントリに登録されたコマンドを取得して、コマンドを実行する。第１の送信方法は、ＲＥＴＩ（Reserve Entry, Transmit Index）と呼ばれる。
【０１９０】
第２の送信方法は、類型１と類型４との組み合わせである。上述したように、圧縮装置は、リザーブされたエントリに登録されたオリジナルシンボル（コマンド）と、Cmarkビ
ット“０”とを解凍装置に送る。解凍装置では、オリジナルシンボル（コマンド）が既に登録済であるためエラー（例外）が発生する。解凍装置は、この例外に対する例外処理としてコマンドを実行する。第２の送信方法は、ＲＥＴＯ（Reserve Entry, Transmit Original）と呼ばれる。
【０１９１】
第３の送信方法は、類型２と類型３との組み合わせである。上述したように、圧縮装置は、未使用のエントリのインデックスと、Cmarkビット“１”とを解凍装置に送信する。
解凍装置では、インデックスが示すエントリが未使用であるのでエラー（例外）が生じる。解凍装置は、この例外に対する例外処理として所定のコマンドを実行する。第３の送信方法は、ＦＥＴＩ（Free Entry, Transmit Index）と呼ばれる。
【０１９２】
第４の送信方法は、類型２と類型４との組み合わせである。上述したように、圧縮装置は、リザーブされたエントリに登録されたオリジナルシンボル（コマンド）と、Cmarkビ
ット“０”とを解凍装置に送る。解凍装置では、オリジナルシンボルが既に登録済であるためエラー（例外）が発生する。解凍装置は、この例外に対する例外処理として所定のコマンドを実行する。第４の送信方法は、ＦＥＴＯ（Free Entry, Transmit Original）と
呼ばれる。第３及び第４の送信方法では、圧縮装置から送られたコマンドを用いてもよく、解凍装置が例外発生時にローカルに保持されたコマンドを取得して実行してもよい。コマンドの取得経路は問わない。
【０１９３】
類型１の長所は、エントリの全検索を要しないことである。これに対し、類型１の短所は、圧縮に利用できないエントリが生じることや、コマンド登録用のエントリを事前に定義することである。類型２の長所は、エントリの全検索を要するが、全てのエントリを圧縮に利用することができる。類型２の短所としては、変換テーブルがフルの場合と空きエントリがある場合とで、第３の送信方法（ＦＥＴＩ）と、第４の送信方法（ＦＥＴＯ）とを使い分けることを要する。具体的には、変換テーブルがフルの場合はＦＥＴＯが実行される。変換テーブルに空きエントリがある場合はＦＥＴＩが実行される。これら以外では、ＦＥＴＯが実行される。
【０１９４】
図４０は、コマンド送信の一例を示すタイミングチャートである。オリジナルシンボル列に対する圧縮装置１０の圧縮処理中に、例外を入力すると、オリジナルシンボルに対する圧縮処理が停止され、所定の例外処理が実行される。例外処理として、解凍装置５０にコマンド実行用データを圧縮シンボル列間に挿入する処理が行われる。コマンド実行用データは、例えば、例外を発生させる例外シンボル（図３７Ｂ及びＣや、図３８Ｂ及びＣに示したインデックスやシンボル）、解凍装置５０に実行させるコマンドを含む。さらに、
コマンド実行用データには、コマンド実行に係る１又は２以上の引数を含むことができる。図４０ではコマンドの後に、二つの引数が挿入されている。例外処理が終わると、オリジナルシンボルに対する圧縮処理が再開される。
【０１９５】
解凍装置５０では、圧縮シンボルに対する解凍処理中に、例外シンボルを検出すると、例外が生じ、例外処理として、コマンドの実行が割り込みによって行われる。コマンドの実行の間、圧縮シンボルに対する解凍処理は停止され、例外シンボル、コマンド、引数は、解凍結果として出力されない。
【０１９６】
＜動作例＞
＜＜圧縮装置における処理＞＞
図４１Ａ〜Ｃ、図４２Ａ〜Ｃ、図４３Ａ〜Ｃ、図４４Ａ〜Ｃ、図４５Ａ〜Ｃ、図４６Ａ及びＢは、実施形態３における圧縮装置１０の動作例（圧縮方法）を説明する図である。本動作例では、８ビットのオリジナルシンボルを扱う。変換テーブルのテーブルサイズは、エントリ数８（インデックス“０”〜“７”）である（図４１Ａ参照）。例外シンボルに関して、ＦＥＴＩ（第３の送信方法）又はＦＥＴＯ（第４の送信方法）を用いた対応を行う。
【０１９７】
例外シンボルによるコマンドとして、本動作例では、ＲＥＳ(Reset Table)コマンドと
ＥＯＳ（End of Stream）コマンドとを用いる。ＲＥＳコマンドは、変換テーブルの登録
内容をリセットするコマンドである。ＲＥＳコマンドは“ＲＥＴ”と表記する。ＲＥＳコマンドはシンボル“Ｅ”により表される。ＥＯＳコマンドは、圧縮シンボル列の終端を示すコマンドであり、“ＥＯＳ”と表記する。ＥＯＳコマンドはシンボル“Ｆ”により表される。以下の説明において、コマンドの実行をシンボル変換部１１１、５２１が行う例を示すが、コマンドの実行は、シンボル変換部１１１、５２１以外によって行われてもよい。例えば、コマンドを実行するコマンド実行部を設けてもよい。
【０１９８】
圧縮装置１０に対し、オリジナルシンボル列として、“ABAC(RET)BACAGFHJK(EOS)”が
入力された場合を仮定する。図４１Ｂは、オリジナルシンボル列のうち最初のシンボル“Ａ”に対する処理を示し、図４１Ｃは、シンボル“Ａ”の次のシンボル“Ｂ”に対する処理を示す。シンボル“Ａ”及び“Ｂ”に対する処理は、実施形態１と同様であるので説明を省略する。
【０１９９】
図４２Ａは、シンボル“Ｂ”の次のシンボル“Ａ”に対する処理を示し、図４２Ｂは、シンボル“Ａ”の次のシンボル“Ｃ”に対する処理を示す。シンボル“Ａ”及び“Ｃ”に対する処理は、実施形態１と同様であるので説明を省略する。
【０２００】
図４２Ｃは、例外コマンド“ＲＥＴ”が入力された場合の処理を示す。圧縮装置１０の圧縮器１１のシンボル変換部１１１は、“ＲＥＴ”が入力されると、ＦＥＴＯ（第４の送信方法）による対応を行う。本動作例では、登録済のエントリの一例としてインデックス“０”を用い、インデックス“０”に登録されたシンボル“Ｃ”を圧縮シンボルとして出力する。シンボル変換部１１１は、このシンボル“Ｃ”に対するCmarkビットの値を“０
”に設定する。これにより、解凍装置５０でシンボル“Ｃ”に関する矛盾が生じ、例外発生のトリガとなる。続いて、ＲＥＳコマンドを意味するコマンドシンボル“Ｅ”をシンボル変換部１１１は出力する。なお、ＦＥＴＯに用いるエントリは、登録済であればインデックス“０”以外でもよい。
【０２０１】
図４３Ａは、“ＲＥＴ”に従って例外（ＲＥＳコマンド）が実行された場合を示す。圧縮器１１（シンボル変換部１１１）は、ＲＥＳコマンドの実行によって、変換テーブルのリセット（全ての登録済のシンボルのクリア）を行い、変換テーブルを初期化する。ＲＥ
Ｓコマンドによって、異なるデータストリームのためにエントロピーの履歴をリセットすることができる。
【０２０２】
図４３Ｂは、オリジナルシンボル“Ｂ”に対する処理を示し、図４３Ｃは、シンボル“Ｂ”の次のオリジナルシンボル“Ａ”に対する処理を示す。これらの処理は実施形態１と同様であるので説明を省略する。
【０２０３】
図４４Ａは、オリジナルシンボル“Ｃ”に対する処理を示し、図４４Ｂは、シンボル“Ｃ”の次のオリジナルシンボル“Ａ”に対する処理を示し、図４４Ｃは、シンボル“Ａ”の次のオリジナルシンボル“Ｇ”に対する処理を示す。これらの処理は実施形態１と同様であるので説明を省略する。
【０２０４】
図４５Ａは、オリジナルシンボル“Ｆ”に対する処理を示し、図４５Ｂは、シンボル“Ｆ”の次のオリジナルシンボル“Ｈ”に対する処理を示し、図４５Ｃは、シンボル“Ｈ”の次のオリジナルシンボル“Ｊ”に対する処理を示す。これらの処理は実施形態１と同様であるので説明を省略する。
【０２０５】
図４６Ａは、シンボル“Ｊ”の次のオリジナルシンボル“Ｋ”に対する処理を示す。これらの処理は実施形態１と同様であるので説明を省略する。図４６Ｂは、例外コマンド 
“ＥＯＳ”が入力された場合の処理を示す。圧縮装置１０の圧縮器１１のシンボル変換部１１１は、“ＥＯＳ”が入力されると、ＦＥＴＯ（第４の送信方法）による対応として、インデックス“０”に登録されたシンボル“Ｋ”を圧縮シンボルとして出力する。シンボル変換部１１１は、このシンボル“Ｋ”に対するCmarkビットの値を“０”に設定する。
これにより、解凍装置５０でシンボル“Ｃ”に関する矛盾が生じ、例外発生のトリガとなる。続いて、ＥＯＳコマンドを意味するコマンドシンボル“Ｆ”をシンボル変換部１１１は出力する。その後、圧縮装置１０では、例外コマンド“ＥＯＳ”により、オリジナルシンボル列の終端を認識し、所定の処理を行う（圧縮処理を終了してもよい）。
【０２０６】
＜＜解凍装置における処理＞＞
図４７Ａ〜Ｃ、図４８Ａ〜Ｃ、図４９Ａ〜Ｃ、図５０Ａ〜Ｃ、図５１Ａ〜Ｃ、図５２Ａ及びＢは、実施形態３における解凍装置５０の動作例（解凍方法）の一例を説明する図である。図４７Ａは、解凍装置５０の解凍器５２が有する変換テーブルを示し、圧縮装置１０が有する変換テーブルと同じ構造を有する。本動作例では、圧縮シンボルとして“AB1CCEBAC1GFHJKKF”が解凍装置５０に入力される場合について説明する。但し、各シンボル
は、その前にCmarkビットが置かれ、Cmarkビットとの組み合わせによるシリアルデータをなしている。この点は実施形態１と同じである。
【０２０７】
図４７Ｂは、シリアルデータ“０Ａ”についての処理を示す。実施形態３でも、デシリアライザ５１が、シリアルデータ“０Ａ”を、Cmarkビット“０”と圧縮シンボル“Ａ”
とに分離して解凍器５２に入力する。解凍器５２は、Cmarkビット“０”に従って圧縮シ
ンボル“Ａ”をオリジナルシンボルとして出力する。これは、実施形態１と同様の処理である。
【０２０８】
但し、実施形態３では、シンボル変換部５２１は、シンボルを変換テーブルに登録する場合、全てのエントリに関して登録対象のシンボルが登録されていないことを確認してから登録を行う。ここでは、シンボル変換部５２１は、シンボル“Ａ”が登録されていないことを確認してから、シンボル“Ａ”の登録を行う。
【０２０９】
図４７Ｃは、シリアルデータ“０Ａ”の次のシリアルデータ“０Ｂ”に対する処理を示す。図４８Ａは、シリアルデータ“０Ｂ”の次のシリアルデータ“１１”に対する処理を
示す。図４８Ｂは、シリアルデータ“１１”の次のシリアルデータ“０Ｃ”に対する処理を示す。これらの処理は、実施形態１と同様であるので説明を省略する。
【０２１０】
図４８Ｃは、シリアルデータ“０Ｃ”に対する処理を示す。シンボル変換部５２１は、Cmarkビット“０”に従って、シンボル“Ｃ”を変換テーブルに登録しようとする。とこ
ろが、シンボル“Ｃ”は既に変換テーブルに登録されている。このため、矛盾（エラー）が発生する。すると、シンボル変換部５２１は、次に入力される圧縮シンボルを参照し、シンボルの値がシンボル“Ｅ”であると、コマンド“ＲＥＴ”を実行し、変換テーブルの全てのエントリをクリアする。これにより、テーブルリセットがなされる（図４９Ａ参照）。シンボル変換部５２１は、シンボル“Ｃ”は、矛盾発生用のシンボルであり、シンボル“Ｅ”はコマンドシンボルであるため、シンボル変換部５２１は、これらに対応するオリジナルシンボル（解凍シンボル）の出力は行わない。
【０２１１】
図４９Ｂは、テーブルリセット後に入力されたシリアルデータ“０Ｂ”に対する処理を示す。図４９Ｃは、シリアルデータ“０Ｂ”の次のシリアルデータ“０Ａ”に対する処理を示す。図５０Ａは、シリアルデータ“ＯＡ”の次のシリアルデータ“０Ｃ”に対する処理を示す。図５０Ｂは、シリアルデータ“０Ｃ”の次のシリアルデータ“１１”に対する処理を示す。図５０Ｃは、シリアルデータ“１１”の次のシリアルデータ“０Ｇ”に対する処理を示す。これらの処理は実施形態１と同様であるため、説明を省略する。
【０２１２】
図５１Ａは、シリアルデータ“ＯＧ”の次のシリアルデータ“０Ｆ”に対する処理を示す。図５１Ｂは、シリアルデータ“０Ｆ”の次のシリアルデータ“０Ｈ”に対する処理を示す。図５１Ｃは、シリアルデータ“０Ｈ”の次のシリアルデータ“０Ｊ”に対する処理を示す。図５２Ａは、シリアルデータ“０Ｊ”の次のシリアルデータ“０Ｋ”に対する処理を示す。これらの処理は実施形態１と同様であるため、説明を省略する。
【０２１３】
図５２Ｂは、シリアルデータ“０Ｋ”の次に入力されたシリアルデータ“０Ｋ”に対する処理を示す。シンボル変換部５２１は、Cmarkビット“０”に従って、シンボル“Ｋ”
を変換テーブルに登録しようとする。ところが、シンボル“Ｋ”は既に変換テーブルに登録されているため、矛盾が発生する。すると、シンボル変換部５２１は、次の圧縮シンボルを参照する。次のシンボルが“Ｆ”であると、シンボル変換部はコマンド“ＥＯＳ”を実行し、オリジナルシンボル列の終端を認識（検出）する。これに伴い、所定の処理（解凍処理の終了など）を行う。
【０２１４】
実施形態３によれば、圧縮装置１０から解凍装置５０へコマンドを送り、テーブルリセットやオリジナルシンボル列の終端位置の認識などを行わせることができる。コマンドの内容は例示であり、ＲＥＴやＥＯＳ以外のコマンドを送ることもできる。
【０２１５】
〔実施形態４〕
次に、実施形態４に係る圧縮装置及び解凍装置について説明する。実施形態４は実施形態１及び実施形態３と同様の構成を含むため、同様の構成については説明を省略し、主として相違点について説明する。
【０２１６】
実施形態４は、実施形態３において説明した、変換テーブルにコマンドシンボル登録用のエントリをリザーブする形態を示す。図５３Ａ〜Ｃ、図５４Ａ〜Ｃ、図５５Ａ〜Ｃ、図５６Ａ〜Ｃ、図５７Ａ〜Ｃ、図５８は、実施形態４における圧縮装置１０の動作例（圧縮方法）を示す。図５３Ａに示すように、実施形態４では、圧縮装置１０及び解凍装置５０の各変換テーブルに、インデックス“０”及び“１”がリザーブされ、コマンド用のシンボル“Ｃ”及び“Ｆ”が予め登録される。オリジナルシンボルを登録可能なエントリは、インデックス“２”を先頭として、インデックス“２”〜“７”となる。
【０２１７】
インデックス“０”及び“１”にシンボルが登録された状態となるので、実施形態４におけるエントロピー計算値の初期値は“１”となる。その他の条件は、実施形態３と同じであり、オリジナルシンボル及び例外シンボル（コマンド）の列も、実施形態３と同じである。
【０２１８】
図５３Ｂは、オリジナルシンボル“Ａ”に対する処理を示す。シンボル変換部１１１は、シンボル“Ａ”が未登録のため、インデックス“２”にシンボル“Ａ”を登録し、Cmarkビット“０”及び圧縮シンボル“Ａ”を出力する。エントロピー計算値は２となる。デ
ータマスクはオール１となる。図５３Ｂは、オリジナルシンボル“Ｂ”に対する処理を示す。この場合、シンボル“Ｂ”がインデックス“２”に登録され、シンボル“Ａ”は次のインデックス“３”に移動する。Cmarkビット“０”及び圧縮シンボル“Ｂ”が出力され
る。エントロピー計算値は２であり、データマスクはオール１である。
【０２１９】
図５４Ａは、オリジナルシンボル“Ａ”に対する処理を示す。インデックス“３”にシンボル“Ａ”が登録されているため（図５３Ｃ）、Cmarkビット“１”とインデックス値
“３”とが出力される。このときのエントロピー計算値は２であり、データマスクは有効ビット数２を示す“00000011”となる。
【０２２０】
図５４Ｂは、オリジナルシンボル“Ｃ”に対する処理を示す。インデックス“０”にシンボルＣは登録されているため、Cmarkビット“１”とインデックス値“０”とが出力さ
れる。このように、オリジナルシンボルとしてのシンボル“Ｃ”に対しては、コマンドシンボル“Ｃ”の登録用にリザーブされたインデックス“０”が、オリジナルシンボル“Ｃ”の圧縮に使用される。この場合におけるエントロピー計算値は２であり、データマスクは“00000011”である。
【０２２１】
図５４Ｃは、コマンドシンボル“ＲＥＴ”の入力時の処理を示す。コマンドシンボル“ＲＥＴ”が入力されると、シンボル変換部１１１は、ＲＥＴＯ（第４の送信方法）を用いて、予め定められたインデックス“０”に登録されたＲＥＴのコマンドシンボル“Ｃ”を圧縮シンボルとして出力するとともに、解凍装置５０にて矛盾を引き起こすためのCmark
ビット“０”を出力する。このため、データマスクはオール１となる。シンボル変換部１１１は、コマンド“ＲＥＴ”に従って、インデックス“２”以降のエントリ中の登録済シンボルをクリアする。
【０２２２】
図５５Ａはオリジナルシンボル“Ｂ”に対する処理を示し、図５５Ｂはオリジナルシンボル“Ａ”に対する処理を示し、図５５Ｃはオリジナルシンボル“Ｃ”に対する処理を示す。図５６Ａは、オリジナルシンボル“Ａ”に対する処理を示し、図５６Ｂは、オリジナルシンボル“Ｇ”に対する処理を示す。これらは、実施形態３と同様に第１の操作方法に従って行われる。詳細な説明は省略する。
【０２２３】
図５６Ｃは、オリジナルシンボル“Ｆ”に対する処理を示す。シンボル“Ｆ”はコマンドシンボルとしてインデックス“１”に登録されている。このエントリをオリジナルシンボル“Ｆ”の圧縮用に用い、シンボル変換部１１１は、Cmarkビット“１”とインデック
ス値“１”とを出力する。このときのエントロピー計算値は３であり、データマスク“00000111”が出力される。
【０２２４】
図５７Ａはオリジナルシンボル“Ｈ”に対する処理を示し、図５７Ｂはオリジナルシンボル“Ｊ”に対する処理を示し、図５７Ｃはオリジナルシンボル“Ｋ”に対する処理を示す。これらの処理は、実施形態３と同様に、第１の操作方法に従って行われる。詳細な説明は省略する。
【０２２５】
図５８は、コマンドシンボル“ＥＯＳ”の入力時の処理を示す。コマンドシンボル“ＥＯＳ”が入力されると、シンボル変換部１１１は、ＲＥＴＯ（第４の送信方法）を用いて、予め定められたインデックス“１”に登録されたＥＯＳのコマンドシンボル“Ｆ”を圧縮シンボルとして出力するとともに、解凍装置５０にて矛盾を引き起こすためのCmarkビ
ット“０”を出力する。このため、データマスクはオール１となる。圧縮器１１（圧縮装置１０）では、コマンド“ＥＯＳ”によって、オリジナルシンボル列の終端を認識し、所定の処理を行う。
【０２２６】
図５９Ａ〜Ｃ、図６０Ａ〜Ｃ、図６１Ａ〜Ｃ、図６２Ａ〜Ｃ、図６３Ａ〜Ｃ、図６４は、実施形態４における解凍装置５０の動作例（解凍方法）を示す。図５９Ａに示すように、解凍器５２が有する変換テーブルのインデックス“０”及び“１”は、圧縮装置１０と同様にリザーブされ、シンボル“Ｃ”及び“Ｆ”が登録（記憶）されている。このため、エントロピー計算値の初期値は１である。
【０２２７】
解凍装置５０には、伝送データとして、圧縮装置１０から出力されたシリアルデータ列が入力される。シリアルデータ列は、圧縮シンボル“AB30CBA02G1HJKF”のそれぞれの前
にCmarkビットが付加されたシリアルデータの集合である。以下、解凍装置５０における
処理を、実施形態３との比較において説明する。
【０２２８】
図５９Ｂは、シリアルデータ“０Ａ”に対する処理を示す。解凍装置５０では、デシリアライザ５１がシリアルデータ“０Ａ”をCmarkビット“０”と圧縮シンボル“Ａ”とに
分離して解凍器５２に供給する。デシリアライザ５１の動作は、実施形態３と同じである、解凍器５２では、シンボル変換部５２１が実施形態３と同様の処理を行う（図２２）。但し、インデックス“０”及び“１”がリザーブされているため、圧縮シンボルを登録するためのエントリがインデックス“２”から始まること、これによって、エントロピーの計算結果が変わってくることを除き、実施形態３と同じである。
【０２２９】
図５９Ｃは、シリアルデータ“０Ｂ”に対する処理を示す。図６０Ａは、シリアルデータ“１１１”に対する処理を示す。図６０Ｂは、シリアルデータ“１００”に対する処理を示す。これらに関して、上述した登録位置及びエントロピー計算値が異なること以外は実施形態３と同じであるので説明を省略する。
【０２３０】
図６０Ｃは、シリアルデータ“０Ｃ”に対する処理を示す。解凍器５２には、Cmarkビ
ット“０”と、圧縮装置１０におけるＲＥＴＯによって圧縮シンボルとして出力されたシンボル“Ｃ”（コマンド“ＲＥＴ”のシンボル）とが入力される。シンボル変換部５２１は、Cmarkビット“０”に従って、変換テーブルを参照すると、シンボル“Ｃ”が既に登
録されているため、エラーとなる。このエラーを契機にシンボル“Ｃ”が割り当てられたコマンド“ＲＥＴ”を実行し、リザーブ領域を除いて変換テーブルの登録内容をリセットする。
【０２３１】
図６１Ａ〜Ｃは、シリアルデータ“０Ｂ”,“０Ａ”,“１００”に対する処理を示す。図６２Ａ〜Ｃは、シリアルデータ“１１０”,“０Ｇ”,“０Ｆ”に対する処理を示す。時６３Ａ〜Ｃは、シリアルデータ“０Ｈ”,“０Ｊ”,“０Ｋ”に対する処理を示す。これらは、実質的に実施形態３の動作と同じであるので説明を省略する。
【０２３２】
図６４は、シリアルデータ“０Ｆ”に対する処理を示す。解凍器５２には、Cmarkビッ
ト“０”と、圧縮装置１０がＲＥＴＯによって出力した圧縮シンボル “Ｆ”（コマンド
“ＥＯＳ”のシンボル）とが入力される。Cmarkビット“０”に従って、変換テーブルか
らシンボル“Ｆ”が検索され、シンボル“Ｆ”が既に登録されているため、エラーとなる
。このエラーを契機にシンボル“Ｆ”が割り当てられたコマンド“ＥＯＳ”が実行され、オリジナルシンボル列の終端が認識される。終端の認識に応じた所定の処理が実行されてもよい。
【０２３３】
実施形態４によれば、実施形態３と同様に、所定のコマンド（命令）を解凍装置５０に実行させることができる。
【０２３４】
〔実施形態５〕
次に、実施形態５に係る圧縮装置及び解凍装置について説明する。実施形態５の構成は、実施形態１と共通点を有するので、主として相違点について説明し、共通点については説明を省略する。
【０２３５】
実施形態１では、検索対象のシンボルが登録されたエントリがヒットした場合、ヒットしたエントリ中のシンボルがインデックス“０”のエントリに移動し、プッシュにより他のエントリに登録されたシンボルが次のエントリに移動する（図１６Ａ）。実施形態１では、ヒットしたエントリの位置（インデックス）とは無関係に、インデックス“０”への移動が行われる。しかし、このような処理をハードウェア（回路）により実装する場合、回路構成が複雑化し、回路規模の増大と動作周波数の低下を招来する可能性がある。
【０２３６】
そこで、実施形態５では、テーブル更新（図１５のＳ１６、図２３のＳ３５）において、ヒットしたエントリのインデックスｉ（ｉは０以上の整数）からｋ個遡ったエントリにヒットしたエントリ中のシンボルを移動させる。これによって、プッシュにより移動するシンボルの数を減らして、回路規模の縮小が図られるようにする。但し、ｉ−ｋ≦０の場合は、オリジナルシンボルの登録領域の先頭のエントリにシンボルを移動させる。先頭のエントリは、リザーブがなければインデックス“０”であり、リザーブがあれば、リザーブされたエントリ数＋１のインデックスが先頭のエントリとなる。
【０２３７】
図６５Ａ〜Ｃ、図６６Ａ〜Ｃ、図６７Ａ〜Ｃは、実施形態５における圧縮装置１０の動作例を示す。図６５Ａは、実施形態５における圧縮装置１０及び解凍装置５０が有する変換テーブルのデータ構造を示す。本動作例では、実施形態１と同様に、オリジナルシンボルのサイズが８ビットであり、エントリ数が８（インデックス“０”〜“７”）の変換テーブルを用いる。また、本動作例では、変換テーブルの操作に第１の操作方法を用い、エントロピーの計算に第１の計算方法を用いる。例外シンボルについては、ＲＥＴＩ（第３の送信方法）によって処理する。
【０２３８】
但し、実施形態１と異なり、エントリがヒットした場合、ヒットしたエントリ中のシンボルが、そのインデックスｉからｋ個遡ったエントリに移動する（ｋ＝２）。但し、ｋの値は、２以外の適宜の数を設定できる。また、２回のエントリのヒット時（ヒット回数（ヒットカウント＝２）の場合）に、実施形態２において説明したエントリピーカリングが行われる。
【０２３９】
図６５Ａに示すように、本動作例では、インデックス“０”がリザーブされ、コマンド１が登録されている。コマンド１のシンボル（例外シンボル）はオリジナルシンボル以外である。本動作例ではコマンド１はコマンド“ＥＯＳ”であるが、ＥＯＳ以外のコマンドでもよい。インデックス“０”のリザーブのため、オリジナルシンボルを登録用のエントリの先頭はインデックス“１”である。
【０２４０】
図６５Ｂは、オリジナルシンボル“Ａ”に対する処理を示す。図６５Ｃは、オリジナルシンボル“Ｂ”に対する処理を示す。これらの動作は、シンボル“Ａ”の登録位置が、オリジナルシンボルの登録領域の先頭であるインデックス“１”に登録される点を除き、実
施形態１と同じであるため、詳細な説明は省略する。データマスクについても、その作成方法は実施形態と同じである。
【０２４１】
図６６Ａは、オリジナルシンボル“Ａ”に対する処理を示す。この場合、シンボル“Ａ”が登録されたインデックス“２”がヒットする。但し、ｉ−ｋ＝２−２＝０（ｉ−ｋ≦０）であるため、シンボル“Ａ”は、オリジナルシンボルの登録領域の先頭であるインデックス“１”に移動する（図６６Ａの矢印参照）。なお、この場合、Cmarkビットは“１
” 、圧縮シンボルは“２”、データマスクは“00000011”となる。また、ヒット回数（
ヒットカウント）の値が１となる。
【０２４２】
図６６Ｂ及びＣは、オリジナルシンボル“Ｃ”及び“Ｄ”に対する処理を示す。これらの処理は、実施形態１における、未登録のシンボルに対する処理と同様であるので説明を省略する。
【０２４３】
図６７Ａは、オリジナルシンボル“Ｂ”に対する処理を示す。シンボル“Ｂ”はインデックス“４”に登録されているため、Cmarkビット“１”及びインデックス値“４”が圧
縮器１１から出力される。このとき、ヒットしたエントリのインデックス“４”から２個遡ったインデックス“２”にシンボル“Ｂ”が移動する。このとき、シンボル“Ａ”及び“Ｃ”がプッシュされて、それぞれ次のエントリへ移動する。これらの変換テーブルの書き換え処理は、例えば圧縮器１１（シンボル変換部１１１）によって行われるが、シンボル変換部１１１以外で行うようにしてもよい。この場合のエントロピー計算値は２、データマスクは“00000011”となる。
【０２４４】
また、ヒットカウントが２となる。このため、既登録のエントリのうち、末尾にあるエントリであるインデックス“４”に登録されたシンボル“Ａ”が、エントロピーカリングによって削除される。この処理も、圧縮器１１（シンボル変換部１１１）又はシンボル変換部１１１以外で行うことができる。カリングの実施に伴い、ヒットカウントの値はリセットされる（０となる）。
【０２４５】
図６７Ｂは、オリジナルシンボル“Ｃ”に対する処理を示す。シンボル“Ｃ”はインデックス“３”に登録されているため、Cmarkビット“１”及びインデックス値“３”が圧
縮器１１から出力される。このとき、ヒットしたエントリのインデックス“３”から２個遡ったインデックス“１”にシンボル“Ｃ”が移動する。このとき、シンボル“Ｄ”及び“Ｂ”がプッシュされて、それぞれ次のエントリへ移動する。この場合のエントロピー計算値は２、データマスクは“00000011”、ヒットカウントは１となる。
【０２４６】
図６７Ｃは、コマンドシンボル“ＥＯＳ”が入力された場合の処理を示す。この場合、ＲＥＴＩ（第１の送信方法）が行われる。すなわち、“ＥＯＳ”を示すシンボル（コマンド１）がリザーブされたインデックス“０”に登録されているため、Cmarkビット“１”
とインデックス“０”とが圧縮器１１から出力される。コマンドシンボルのヒットの場合、ヒットしたシンボルの移動は起こらない。このため、このヒットをカリングの発生条件であるヒットカウントに加えるか否かは任意であり、コマンド仕様に従う。図６７Ｃでは、ヒットの回数に加えてカリングが実行され、末尾のシンボル“Ｂ”が削除された例を示す。この場合、エントロピー計算値は２であり、データマスクは“00000011”であり、ヒットカウントが０となる。カリングが行われない場合、シンボル“Ｂ”及びヒットカウント値“１”が維持される。
【０２４７】
図６８Ａ〜Ｃ、図６９Ａ〜Ｃ、図７０Ａ〜Ｃは、実施形態５における解凍装置５０の動作例を示す。図６８Ａは、解凍器５２が有する変換テーブルを示す。変換テーブルのデータ構造は、圧縮器１１が有する変換テーブルのデータ構造と同じである。解凍装置５０に
は、オリジナルシンボル列の変換によって得られた圧縮シンボル列“AB2CD430”の各シンボルに、Cmarkビットが付加されたシリアルデータ列が入力される。
【０２４８】
図６８Ｂ及びＣは、シリアルデータ“０Ａ”及び“０Ｂ”に対する処理を示す。解凍装置５０では、デシリアライザ５１がシリアルデータをCmarkビット“０”と圧縮シンボル
“Ａ”とに分離して解凍器５２に供給する。デシリアライザ５１の動作は、実施形態３と同じである、解凍器５２では、シンボル変換部５２１が実施形態３と同様の処理を行う（図２２）。但し、インデックス“０”がリザーブされているため、圧縮シンボルを登録するためのエントリがインデックス“１”から始まること、これによって、エントロピーの計算結果が変わってくることを除き、実施形態３と同じである。
【０２４９】
図６９Ａは、シリアルデータ“１１０”に対する処理を示す。Cmarkビット“１”と、
圧縮シンボル“１０”に基づいて、インデックス“２”がヒットする。この場合、インデックス“２”に登録されたシンボル“Ａ”がインデックス“１”に移動し（ｉ−ｋ≦０が満たされるため）、インデックス“１”に登録されていたシンボル“Ｂ”がインデックス“２”に移動する。解凍シンボルとして、シンボル“Ａ”が出力される。エントロピー計算値は２であり、データマスクは“00000011”であり、ビットカウントは１となる。
【０２５０】
図６９Ｂは、シリアルデータ“０Ｃ”に対する処理を示す。Cmarkビット“０”に基づ
いて、圧縮シンボル“Ｃ”がインデックス“１”に登録され、シンボル“Ａ”及び“Ｂ”が次のエントリに移動する。解凍シンボルとしてシンボル“Ｃ”が出力される。エントロピー計算値、データマスク、ビットカウントに変化はない。
【０２５１】
図６９Ｃは、シリアルデータ“０Ｄ”に対する処理を示す。Cmarkビット“０”に基づ
いて、圧縮シンボル“Ｄ”がインデックス“１”に登録され、シンボル“Ｃ”，“Ａ”，“Ｂ”が次のエントリに移動する。解凍シンボルとしてシンボル“Ｄ”が出力される。エントロピー計算値が３となり、データマスクは“00000111”となる。ビットカウントは１のままである。
【０２５２】
図７０Ａは、シリアルデータ“１１００”に対する処理を示す。Cmarkビット“１”と
、圧縮シンボル“１００”とに基づいて、インデックス“４”がヒットする。この場合、インデックス“４”に登録されたシンボル“Ｂ”がインデックス“２”に移動し（ｋ＝２のため）、インデックス“２”及び“３”に登録されていたシンボル“Ｃ”及び“Ａ”が次のエントリに移動する。このとき、ヒットカウントが２となるため、エントロピーカリングが行われ、末尾に位置するシンボル“Ａ”が削除される。これによって、エントロピー計算値は２となり、データマスクは“00000011”となる。ヒットカウントはリセットされる。
【０２５３】
図７０Ｂは、シリアルデータ“１１１”に対する処理を示す。Cmarkビット“１”と、
圧縮シンボル“１１”とに基づいて、インデックス“３”がヒットする。この場合、インデックス“３”に登録されたシンボル“Ｃ”がインデックス“１”に移動し（ｋ＝２のため）、インデックス“１”及び“２”に登録されていたシンボル“Ｄ”及び“Ｂ”が次のエントリに移動する。このとき、ヒットカウントが１となる。解凍シンボルとして、シンボル“Ｃ”が出力される。エントロピー計算値は２であり、データマスクは“00000011”である。
【０２５４】
図７０Ｃは、シリアルデータ“１００”に対する処理を示す。Cmarkビット“１”と、
圧縮シンボル“００”とに基づいて、インデックス“０”がヒットする。この場合、インデックス“０”に登録されたシンボル“コマンド１＝コマンドＥＯＳ”が読み出される。ＥＯＳが実行され、解凍器５２は、オリジナルシンボル列の終端を認識する。この認識に
従って、所定の処理が行われてもよい。また、図７０Ｃに示す例では、エントロピーカリングによって末尾のシンボル“Ｂ”が削除された様子を示すが、削除しなくてもよい。
【０２５５】
実施形態５によれば、エントリの近接交換によって、ヒットに伴い登録内容が変更されるエントリの範囲を小規模にすることができ、変換テーブルの更新処理に係る負荷や時間を低減することができる。
【０２５６】
〔実施形態６〕
次に、実施形態６に係る圧縮装置及び解凍装置について説明する。実施形態６の構成は、実施形態１と共通点を有するので、主として相違点について説明し、共通点については説明を省略する。
【０２５７】
実施形態６として、実施形態１で説明した圧縮器１１、解凍器５２をカスケード接続する例を示す。図７１は、実施形態６に係る圧縮装置１０Ａを示す。図７１において、圧縮装置１０Ａは、複数の（図７１の例では３）の圧縮器１１ａ、１１ｂ、１１ｃと、シリアライザ１２とが直列に接続されてなる。
【０２５８】
圧縮器１１ａにはオリジナルシンボルデータ（Ｎビット）が入力される。圧縮器１１ａは、実施形態１で説明した変換テーブルを有し、オリジナルシンボルデータ（例えば“ABCDABCDABEF”）を、Ｎ＝４シンボルで、Ｎビットの圧縮シンボル“ABCD1010ABEF”に変換し、圧縮シンボルに対応するCmarkビットとともに出力する。圧縮器１１ｂも、圧縮器１
１ａと同じ構成を有する。圧縮器１１ｂは、圧縮器１１ａから入力されるＮビットの圧縮シンボルを、Ｎ＝２シンボルで、Ｎビットの圧縮シンボル“ABCD1002EF”に変換し、対応するCmarkビットともに出力する。圧縮器１１ｂは「他の圧縮装置」の一例である。
【０２５９】
圧縮器１１ｃ及びシリアライザ１２は、実施形態１において説明した圧縮器１１及びシリアライザ１２と同じ構成を有する。圧縮器１１ｃはＭビットの圧縮シンボルと、Cmark
ビット、及びデータマスクを出力する。
【０２６０】
図７２は、実施形態６に係る解凍装置５０Ａを示す。図７２において、解凍装置５０Ａは、デシリアライザ５１と、圧縮装置１０Ａが有する圧縮器の数（３つ）に応じた解凍器５２ａ、５２ｂ、５２ｃとが直列に接続されてなる。
【０２６１】
デシリアライザ５１及び解凍器５２ａは、実施形態１におけるデシリアライザ５１及び解凍器５２と同じ構成を有する。デシリアライザ５１は、圧縮装置１０Ａから送信された、Ｋビットの伝送データ（圧縮装置１０Ａ）が入力され、Ｍビットの圧縮シンボルと、圧縮シンボルに対するCmarkビットとを出力する。
【０２６２】
解凍器５２ｂには、解凍器５２ａからの解凍シンボル及びCmarkビットが入力され、解
凍器５２ｂは、Ｎビットの圧縮シンボルと対応するCmarkビットとを出力する。解凍器５
２ｂは「他の解凍装置」の一例である。
【０２６３】
解凍器５２ｃには、解凍器５２ｂからの解凍シンボル及びCmarkビットが入力され、解
凍器５２ｃは、Ｎビットのオリジナルシンボルデータを出力する。解凍器５２ａは、Ｎビットの解凍シンボル“ABCD1002EF”を出力し、解凍器５２ｂは、Ｎ＝２シンボルでの解凍を行い、解凍シンボル“ABCD1010ABEF”を出力し、解凍器５２ｃは、オリジナルシンボルデータ“ABCDABCDABEF”を出力する。
【０２６４】
実施形態６によれば、圧縮装置１０Ａ及び解凍装置５０Ａは、圧縮や解凍を行うビット幅（シンボル数）の異なる複数の圧縮器（圧縮器１１ａ〜１１ｃ）や複数の解凍器（解凍
器５２ａ〜５２ｃ）がカスケード接続された構成を有する。これによって、長いビットパターンを有するオリジナルシンボルデータの、伝送路におけるサイズを十分に小さくすることが可能となる。
【０２６５】
〔実施形態７〕
次に、実施形態７に係る圧縮装置及び解凍装置について説明する。実施形態７の構成は、実施形態１と共通点を有するので、主として相違点について説明し、共通点については説明を省略する。
【０２６６】
実施形態７では、変換テーブルを複数のバンクに分割する。分割によって、各バンクが有するエントリ数が、１つの変換テーブルが有するエントリ数より少なくなる。このため、ソフトウェアによる実装では、検索回数の削減による高速化が可能であり、ハードウェアによる実装では、周波数の向上が可能となる。
【０２６７】
分割されたテーブル（バンク）の選択は、ハッシュ関数を用いて行う。ハッシュ関数について特に制限はなく、オリジナルシンボルをなすビットの一部を用いる場合、バンク番号をラウンドロビンに指定する場合、１次ハッシュ、２次ハッシュを用いる場合、などである。
【０２６８】
図７３Ａ及びＢは、実施形態７の説明図である。図７３Ａは、圧縮装置１０の圧縮器１１が有する変換テーブルの例を示す。図７３Ａに示す例では、８つのエントリを有する変換テーブルが２つのエントリを有する４つのバンク＃０〜＃３”に分割されている。各バンクのエントリには、インデックス値“０”及び“１”が割り当てられている。ハッシュ関数として、オリジナルシンボル（Ｎビット）の下位２ビットをバンク番号としてハッシュする関数が適用される。
【０２６９】
例えば、８ビットのオリジナルシンボル“Ａ（ASCIIコード：01000010）”に対しては
、その下位２ビットの“１０”（二進数の３）に基づき、バンク＃２が選択される。バンク＃２の検索により、シンボル“Ａ”が登録されたエントリとして、インデックス“１”がヒットする。この場合、圧縮器１１は、バンク番号“１０”に、インデックス番号“１”を続けた圧縮シンボルを生成する。圧縮シンボルの前には、圧縮を示すCmarkビット“
１”が付加される。よって、オリジナルシンボル“Ａ”は、４ビットのシリアルデータ“１１０１”に圧縮され、伝送データとして解凍装置５０へ送信される。実施形態７では、圧縮装置１０、解凍装置５０のそれぞれにおいて、バンク毎にエントロピー計算が行われ、バンク毎にデータマスクが生成される。
【０２７０】
上述したように、シンボルデータは、エントリがヒットした場合、Cmarkビット“１”
＋バンク番号＋インデックス番号を示すビットからなる。但し、ハッシュ値がデータの順番により決まる場合（例えば、バンクがバンク番号に従ってラウンドロビンに決定される場合）では、バンク番号をシンボルデータに含めなくてよい。
【０２７１】
バンク番号及びインデックス番号は、図７３Ａの例ではそれぞれ２ビット、１ビットで表現されているが、バンク数やインデックス数に応じた所定のビット数で表現される。シンボルデータは、エントリがヒットしなかった場合、例えば、Cmarkビット“０”＋オリ
ジナルシンボルの組み合わせとなる。ハッシュ関数によりバンクが一意に決まるため、バンク内では、バンク化されていない場合と同じ動作をすればよいからである。解凍器では、Cmarkビット“０”以降のＮビットをオリジナルシンボルとして認識することができる
。但し、シンボルデータにおけるCmarkビット、バンク番号、インデックス番号、オリジ
ナルシンボルの位置（順序）は、解凍側で圧縮側と同じハッシュ関数を用いていれば、バンク内のエントリ使用状態から一意に決まる。
【０２７２】
図７３Ｂに示すように、解凍装置５０の解凍器５２が有する変換テーブルも、図７３Ａと同様の構成を有する。解凍器５２は、例えば、シリアルデータ“１１０１”が入力された場合、Cmarkビット“１”に基づいて、次の２ビット“１０”を用いてハッシュを行い
、バンク番号２のバンク＃２にアクセスする。また、シリアルデータの最下位ビットをインデックス番号と認識し、インデックス“１”に登録されているシンボルをオリジナルシンボルとして出力する。このようにして、オリジナルシンボル“Ａ”が出力される。
【０２７３】
なお、オリジナルシンボルを含むシリアルデータに関しては、Cmarkビットが“０”で
あるため、解凍器５２がシリアルデータの最下位からＮビットをオリジナルシンボルとしと認識する。Cmarkビット“０”に続くオリジナルシンボルに対するハッシュによってバ
ンク番号が決まり、バンクに対応するエントロピー計算によってデータマスクが決まり、バンク内部でオリジナルシンボルが登録される。
【０２７４】
圧縮シンボル中のバンク番号やインデックス番号を表すビット数は、実施形態１で用いたエントロピー計算部１１２（５２２）、マスク生成部１１３（５２３）、シリアライザ１２、及びデシリアライザ５１を用いて、バンクにおけるエントリの使用状況に応じて変動する構成を採用してもよい。
【０２７５】
〔実施形態８〕
次に、実施形態８に係る圧縮装置及び解凍装置について説明する。実施形態８の構成は、実施形態１と共通点を有するので、主として相違点について説明し、共通点については説明を省略する。
【０２７６】
実施形態１〜７で示した圧縮方法では、圧縮シンボルの一部が複雑になり、変換テーブルの構成が不明であるとオリジナルシンボルに復元できない。また、圧縮のために変換されるデータの一部は元のデータを含むため、圧縮シンボルそのままを暗号として扱うことは好ましくない。実施形態８は、このような問題を解決するものである。実施形態８では、共通鍵暗号化方式を用いて、圧縮装置から解凍装置へ送信される伝送データの暗号化を行う。
【０２７７】
図７４は、実施形態８における圧縮装置１０Ｂを示し、図７５は、実施形態８における解凍装置５０Ｂを示す。圧縮装置１０Ｂと解凍装置５０Ｂとは共通鍵暗号方式を用いて通信を行う。
【０２７８】
図７４に示すように、圧縮装置１０Ｂは、実施形態１で示した圧縮装置１０の構成に加えて、スクランブル演算部１４を含む。スクランブル演算部１４には、シリアライザ１２から出力されるデータ（Ｋビット）と、スクランブルキー（共通鍵）とが入力される。スクランブル演算部１４は、スクランブルキーを用いたスクランブル演算によりデータを暗号化し、暗号化されたデータ（暗号データ、Ｋビット）を出力する。暗号データは伝送データとして、伝送路（ネットワーク）を介して解凍装置５０Ｂに送られる。
【０２７９】
解凍装置５０Ｂは、実施形態１で示した解凍装置５０の構成に加えて、スクランブル逆演算部５３を含む。スクランブル逆演算部５３には、圧縮装置１０Ｂから送信された暗号データ（Ｋビット）と、スクランブルキー（共通鍵）とが入力される。スクランブル逆演算部５３は、スクランブルキーを用いたスクランブル逆演算により暗号データを復号したデータ（Ｋビット）を出力する。データは実施形態１における伝送データであり、デシリアライザ５１に入力される。以降の処理は実施形態１と同じである。
【０２８０】
圧縮装置１０Ｂと解凍装置５０Ｂとが暗号通信を開始するために、以下のような手順（
ステップ１〜３）が実行される。但し、ステップ２はオプションである。
（ステップ１）第１キー（共通鍵）を圧縮装置１０Ｂから解凍装置５０Ｂへ送る。
（ステップ２）第２キーを圧縮装置１０Ｂから解凍装置５０Ｂへ送る。最後にＥＯＫ（End of Key）コマンドを送信する。ＥＯＫコマンドは、鍵交換の終了を示すコマンドである。
（ステップ３）暗号化するデータ（オリジナルシンボルデータ）を圧縮装置１０Ｂに入力する。
【０２８１】
ステップ１では、シンボルに対する圧縮処理のために設定する複数のパラメータから選択される２以上のパラメータ、すなわち圧縮及び解凍に係る複数の種類のパラメータから選ばれる１又は２以上のパラメータの組み合わせを、第１キーとして圧縮装置１０に設定する。パラメータは、オリジナルシンボルのビット数Ｎ、圧縮シンボルのビット数Ｍ、シリアライザ１２からの出力に用いるビット数Ｋ、エントロピーカリングに用いるヒット回数又はミスヒット回数、例外シンボルの設定、スクランブル演算の種類、スクランブルキー、近接エントリ交換オフセットｋ、バンク構成（バンク数）である。
例えば、上記のパラメータを全て組み合わせた場合の一例としては以下となる。
（8,8,4,+2,EOK by RETI,f(x),0xA5,2,1）
【０２８２】
上記の組み合わせは、Ｎ＝８、Ｍ＝８、Ｋ＝４、２回のヒット／ミスヒットでカリングを実施、スクランブル演算に用いる関数ｆ（ｘ）、スクランブルキー、ｋ＝２、バンク数＝１（分割なし）を示す。関数ｆ(ｘ)は、例えば、“f(x)=X xor cyclic(KEY)”であり、ビット列Ｘをサイクリックキーにより排他的論理和（ＸＯＲ）演算する関数である。
【０２８３】
ステップ２において送信する第２キーは、プライベートキーであり、圧縮装置１０及び解凍装置５０にて変換テーブルの初期状態を作成するために送信される。例えば、圧縮装置１０は、実施形態５で示した“ABACDBC(EOK)”に、コマンド“ＥＯＫ”が所定回数（例えば４回）繰り返された、“ABACDBC(EOK)(EOK)(EOK)(EOK)(EOK)”を出力する動作を行う。これによって、プライベートキーは、解凍装置５０に送られる。第２キーは、「第２テーブルの状態を初期化する情報」の一例である。
【０２８４】
実施形態５において出力される圧縮シンボル列“ABACDBC(EOK)”をなすシンボルのそれぞれは、シリアライザ１２から出力される場合、“001000001”、“001000010”、“110
”、“001000011”、“001000100” 、“1100”、“111”、“100”といったシリアルデ
ータとなる。これらのシリアルデータが、スクランブル演算部１４に入力される。
【０２８５】
スクランブル演算部１４は、上記のシリアルデータを繋げたビット列をＮビット（本実施形態では８）で区切り、サイクリックキーでＸＯＲ演算した値を出力する。具体的には、以下のような演算となる。
00100000 xor 10100101 = 10000101
10010000 xor 11010010 = 01000010
10110001 xor 01101001 = 11011000
00001100 xor 10110100 = 10111000
10001001 xor 01011010 = 11010011
10011110 xor 00101101 = 10111111
01001001 xor 10010110 = 11011111
00100100 xor 01001011 = 01101111
【０２８６】
その後、スクランブル演算部１４は、スクランブル演算の結果を、Ｋビット（本実施形態では４）でシリアライズする。すなわち、４ビットで区切って出力する。この結果、スクランブル演算部１４からは、“1000”、“0101”、“0100”、“0010”、“1101”、“
1000”、“1011”、“1000”、“1101”、“0011”、“1011”、“1111”、“1101”、“1111”、“0110”、“1111”といったシリアルデータが暗号データとして出力される。
【０２８７】
解凍装置５０Ｂでは、ステップ１における第１キーを受け取り解凍装置５０に設定する。第１キーは、解凍装置５０において復号に用いる共通鍵（スクランブルキー）として扱われる。また、解凍装置５０は、第１キーに含まれるパラメータ群に従って、圧縮装置１０から受信されるデータの解凍処理を行うためのデシリアライザ５１及び解凍器５２の仕様設定（コンフィグ設定）を行う。第１キーは、上述した例に従えば以下となる。
（8,8,4,+2,EOK by RETI,f-1(x),0xA5,2,1）
但し、ｆ-１（x）は、スクランブル演算に用いる関数ｆ（x）の逆関数であり、“f-1(x)=X xor cyclic(KEY)”である。
【０２８８】
上記した暗号データは，解凍装置５０のスクランブル逆演算部５３に入力される。スクランブル逆演算部５３は、Ｋビット（Ｋ＝４）からＭビット（Ｍ＝８）へのデシリアライズを行い、ｆ-１（ｘ）を用いた演算を行う。演算を以下に示す。
10000101 xor 10100101 = 00100000
01000010 xor 11010010 = 10010000
11011000 xor 01101001 = 00100001
10111000 xor 10110100 = 00000100
11010011 xor 01011010 = 00001000
10111111 xor 00101101 = 00001100
11011111 xor 10010110 = 00000000
01101111 xor 01001011 = 00000000
【０２８９】
スクランブル逆演算部５３は、演算の結果を１つなぎにまとめ、Cmarkビット＋圧縮シ
ンボルの形式に区切る。この結果、シリアライザ１２の出力と同じシリアルデータ、“001000001”、“001000010”、“110”、“001000011”、“001000100” 、“1100”、“111”、“100”が得られる。すなわち、暗号データの復号がなされる。このようなシリアルデータ群を用いて、解凍器５２における変換テーブルの初期状態が生成される。解凍装置５０では、コマンド“ＥＯＫ”の繰り返しを検出することで、変換テーブルの初期状態を作成するシンボル列の終端を検出する。
【０２９０】
以上のようにして、第１キーに基づいて、圧縮装置１０と解凍装置５０とで、共通の仕様を有する状態への設定が行われ、第２キーに基づいて、圧縮装置１０は、圧縮装置１０の変換テーブルを初期化する処理を行い、解凍装置５０は圧縮装置１０から送信された第２キーを用いて解凍装置５０の変換テーブルを初期化する。これによって、圧縮装置１０と解凍装置５０の間で同期のとられた変換テーブルの初期状態が生成される。その後、圧縮装置１０は、オリジナルシンボル列の圧縮結果を第１キーで暗号化し、伝送データとして伝送路へ送る。解凍装置５０は伝送路から受信される伝送データを第１キーを用いて復号し、解凍処理を行う。実施形態８によれば、伝送路を流れるデータを暗号化することができる。
【０２９１】
〔実施形態９〕
実施形態１〜８に示した圧縮装置及び解凍装置は、ソフトウェアによって実装されてもよく、ハードウェアによって実装されてもよい。
【０２９２】
＜ソフトウェアによる実装例＞
図７６は、実施形態１〜８に係る圧縮装置及び解凍装置に適用可能な端末装置の構成例を示す。端末装置３０は、汎用又は専用のコンピュータ（情報処理装置）である、汎用のコンピュータとして、例えば、パーソナルコンピュータ（ＰＣ）やワークステーションを
適用できる。専用コンピュータとして、例えばサーバマシンを適用できる。また、端末装置３０は、固定端末でも無線端末であってもよい。無線端末は、スマートフォンやタブレット端末のようなスマートデバイスを含む。また、端末装置３０は、カーナビゲーション装置やゲーム装置なども含み得る。
【０２９３】
端末装置３０は、図１に示すように、例えば、ＣＰＵ３１にバスを介して接続された記憶装置３２，入力装置３３，出力装置３４，及び通信インタフェース（通信ＩＦ）３５を含む。
【０２９４】
記憶装置３２は、主記憶装置と補助記憶装置とを含む。主記憶装置は、ＣＰＵ３１の作業領域，プログラムやデータの記憶領域，通信データのバッファ領域として使用される。主記憶装置は、いわゆるメモリであり、例えば、Random Access Memory（ＲＡＭ），或いはＲＡＭとRead Only Memory（ＲＯＭ）との組み合わせで形成される。
【０２９５】
補助記憶装置は、ＣＰＵ３１によって実行されるプログラム，及びプログラムの実行に際して使用されるデータを記憶する。補助記憶装置は、例えば、ハードディスクドライブ（ＨＤＤ），Solid State Drive（ＳＳＤ），フラッシュメモリ，Electrically Erasable
Programmable Read-Only Memory（ＥＥＰＲＯＭ）などである。また、補助記憶装置は、情報処理装置に対して着脱自在な可搬性記憶媒体を含む。可搬性記憶媒体は、例えばUniversal Serial Bus(ＵＳＢ)メモリである。
【０２９６】
入力装置３３は、端末装置３０に情報やデータを入力するために使用される。入力装置３３は、例えば、ボタン、キー、マウスなどのポインティングデバイス，タッチパネルなどを含む。入力装置３３は、マイクロフォンのような音声入力装置を含み得る。また、入力装置３３は、カメラやイメージスキャナのような撮像装置や、センシングデータを取得するセンサなども含み得る。
【０２９７】
出力装置３４は、情報やデータを出力する。出力装置は、例えばディスプレイ装置である。出力装置３４は、スピーカのような音声出力装置を含み得る。通信ＩＦ３５は、データの伝送路（ネットワーク）に接続される。通信ＩＦ３５は、例えばLocal Area Network（ＬＡＮ）カードである。通信ＩＦ３５は、無線通信用の無線回路を含み得る。無線通信規格に制限はなく、例えば、３Ｇ（Ｗ−ＣＤＭＡなど）、Long Term Evolution(ＬＴＥ)
、無線ＬＡＮ(IEEE802.11シリーズやWi-Fi)、Bluetooth（登録商標）、ＢＬＥなどを適用し得る。但し、通信規格はこれらに制限されない。
【０２９８】
ＣＰＵ３１は、プロセッサの一例であり、記憶装置３２に記憶されたプログラムをロードして実行する。記憶装置３２には、オペレーティングシステム（ＯＳ）及びアプリケーションプログラムがインストールされている。ＣＰＵ３１がプログラムを実行することによって、端末装置３０は、実施形態１〜９に示したような、圧縮装置１０、１０Ａ、１０Ｂ、解凍装置５０、５０Ａ、５０Ｂとして動作する。
【０２９９】
すなわち、ＣＰＵ３１は、圧縮器１１（圧縮器１１ａ〜１１ｃ）、シリアライザ１２として動作することできる。換言すれば、図１１や図１５に示した動作例の主体となり得る。また、ＣＰＵ３１は、デシリアライザ５１、解凍器５２（解凍器５２ａ〜５２ｃ）として動作する。換言すれば図２１及び図２２に示した動作例の主体となり得る。また、ＣＰＵ３１は、コマンドの認識やコマンドの実行主体となり得る。
【０３００】
変換テーブルは、記憶装置３２に記憶される。但し、記憶装置３２以外にて記憶されてもよい。オリジナルシンボルデータは、入力装置３３からの入力や通信ＩＦ３５による受信によって取得される。通信ＩＦ３５は、伝送データの送信や受信に使用される。出力装
置３４は、解凍によって得られたオリジナルシンボルデータの出力や表示に使用することができる。
【０３０１】
なお、ＣＰＵ３１で実行される処理は、複数のＣＰＵ（プロセッサ）によって実行されても良い。ＣＰＵ１１で実行される処理の少なくとも一部は、例えばDigital Signal Processor（ＤＳＰ）などのＣＰＵ以外のプロセッサによって実行されても良い。また、ＣＰＵ３１で実行される処理の少なくとも一部は、上述したように、ハードウェアによって実行されてもよい。ハードウェアは、例えば、Field Programmable Gate Array（ＦＰＧＡ
）、ＩＣ，ＬＳＩ，Application Specific Integrated Circuit（ＡＳＩＣ）などの集積
回路を含む。また、圧縮装置及び解凍装置は、ＭＣＵ（Micro Control Unit）やＳｏＣ（System-on-a-Chip）のような回路とプロセッサの組み合わせにより実装されてもよい。
【０３０２】
＜ハードウェアによる実装例＞
＜＜圧縮装置の回路構成＞＞
図７７は、圧縮装置１０の回路構成例を示す。図７７において、圧縮装置１０は、解凍装置オリジナルシンボルデータを保持するフリップフロップ（Ｆ／Ｆ）６１と、テーブル回路６２と、変換テーブルの操作回路６３と、圧縮／非圧縮の判定回路６４と、エントロピー計算部１１２及びマスク生成部１１３として動作する回路６５と、シリアライザ１２として動作するバレルシフタ６６とを含む。
【０３０３】
テーブル回路６２は、ｎ個（インデックス“０”〜“ｎ−１”、図７７の例はｎ＝４）の記憶領域６２１を有しており、記憶領域の６２１のそれぞれは変換テーブルのエントリとして使用される。記憶領域６２１に図示する“ｖ”は、エントリが使用中か否か（オリジナルシンボルが記憶されているか否か）を示す情報（ビット）である。例えばｖビットが“０”のとき空を示し、ｖビットが“１”のときに使用中を示す。
【０３０４】
判定回路６４は、比較器６４１と、セレクタ６４２とを含む。比較器６４１には、記憶領域６２１のそれぞれからの出力と、Ｆ／Ｆ６１からの出力（オリジナルシンボル）とが入力される。比較器６４１は、オリジナルシンボルの値と記憶領域６２１のそれぞれからの値とを比較し、一致する記憶領域６２１が無かった場合には、Cmarkビット“０”を出
力する。これに対し、オリジナルシンボルと同じ値を出力した記憶領域６２１がある場合には、Cmarkビット“１”と、その記憶領域６２１のインデックス値（INDEX）とを出力する。
【０３０５】
セレクタ６４２には、Ｆ／Ｆ６１のオリジナルシンボルと、比較器６４１からのインデックス値とが入力される入力端子を有する。また、セレクタ６４２は、Cmarkビットが入
力される制御端子と、Cmarkビットが“０”のときにオリジナルシンボルを圧縮シンボル
として出力し、Cmarkビットが“１”のときにインデックス値を圧縮シンボルとして出力
する出力端子とを有する。
【０３０６】
操作回路６３は、セレクタ６３１と、セレクタ６３２とを有する。セレクタ６３２は、インデックス“１”〜“ｎ−１”に記憶されたシンボルが入力される入力端子と、オリジナルシンボルと同じシンボルが登録されていた記憶領域６２１（エントリ）のインデックス値が入力される制御端子と、インデックス値に合致するシンボルをセレクタ６３１に入力する出力端子とを有する。
【０３０７】
セレクタ６３１は、セレクタ６３２からの出力と、Ｆ／Ｆ６１からのオリジナルシンボルとが入力される入力端子と、Cmarkビットが入力される制御端子とを有する。また、セ
レクタ６３１は、Cmarkビットが“０”のときにオリジナルシンボルを先頭の（インデッ
クス“０”の）記憶領域６２１に出力し、Cmarkビットが“１”のときにセレクタ６３２
からのシンボルをインデックス“０”の記憶領域６２１に出力する出力端子を有する。
【０３０８】
記憶領域６２１のそれぞれは、インデックス値が大きくなる方向において、次の記憶領域６２１と接続されており、Cmarkビット“１”を受けたとき、その記憶領域６２１にシ
ンボルが記憶されていれば、そのシンボルを次の記憶領域６２１に移動させる。但し、インデックス“ｎ−１”の記憶領域６２１に対しては、シンボルの値が上書きされる。
【０３０９】
また、記憶領域６２１には、比較器６４１からのインデックス値が入力されるようになっている。記憶領域６２１は、例えば大小の比較器を有し、入力されたインデックス値が自身のそのインデックス値より大きい場合に、記憶しているシンボル値をセレクタ６３２に入力する。但し、シンボルを記憶している場合（ｖビット値が“１”の場合）に限る。このようにして、エントリがヒットした場合における、先頭エントリへのシンボル移動や、次のエントリへの移動（プッシュ動作）が行われる。
【０３１０】
回路６５には、インデックス値と、Cmarkビットと、記憶領域６２１のそれぞれからの
ｖビットとが入力される。ｖビットにより、変換テーブルの使用率がわかる。回路６５は、Cmarkビットが“１”の場合に、第１又は第２の計算方法によるエントロピー計算を行
う。回路６５は、エントロピー計算値に応じたデータマスクを生成し、バレルシフタ６６に入力する。
【０３１１】
なお、実施形態９では、テーブル回路６２、判定回路６４、操作回路６３が、シンボル変換部１１１としての動作を行う。なお、ｖビットの代わりに、記憶領域６２１（エントリ）の使用数を示すカウンタを用いてもよい。
【０３１２】
バレルシフタ６６には、Cmarkビットと、セレクタ６４２からの圧縮シンボルと、回路
６５からのデータマスクとが入力される。バレルシフタ６６は、Cmarkビット＋圧縮シン
ボルを、Ｋビット単位で出力する。バレルシフタ６６の出力は、伝送データとして解凍装置５０へ送信される。
【０３１３】
なお、Cmarkビットが“０”のとき、エントロピー計算値に関わらず、回路６５からデ
ータマスク“11111111”がバレルシフタに入力されるように回路を構成する。或いは、Cmarkビットが“０”のとき、回路６５はデータマスクを出力せず、バレルシフタ６６が、
圧縮シンボルについてはCmarkビットに続けてそのまま出力するようにしてもよい。
【０３１４】
＜＜解凍装置の回路構成＞＞
図７８は、解凍装置５０の回路構成例を示す。図７８に示す解凍装置５０は、図７７に示した圧縮装置１０に対応した構成を有する。解凍装置５０は、デシリアライザ５１として動作するバレルシフタ７６と、回路７５と、ＡＮＤ回路７７と、Ｆ／Ｆ７１と、テーブル回路７２と、変換テーブルの操作回路７３と、解凍要否の判定回路７４とを有する。
【０３１５】
バレルシフタ７６には、伝送路を通って送られてきた伝送データが入力される。バレルシフタは、Cmarkビットと圧縮シンボルとを分離して出力する。Cmarkビットは回路７５に入力され、圧縮シンボルはＡＮＤ回路７７の入力端に入力される。
【０３１６】
テーブル回路７２は、テーブル回路６２と同様の構成を有し、複数の（ｎ個の）シンボルの記憶領域７２１（エントリ）を有している。記憶領域７２１のそれぞれには、上述したｖビットが設定されており、記憶領域７２１のそれぞれのｖビットの状態は、変換テーブルの使用状況を示す情報として回路７５に入力される。
【０３１７】
回路７５は、エントロピー計算部５２２及びマスク生成部５２３として動作し、エント
ロピー計算と、その計算結果に応じたデータマスクの生成とを行う。そして、回路７５は、データマスクをＡＮＤ回路７７の入力端に入力する。なお、バレルシフタ７６からＡＮＤ回路７７に入力される圧縮シンボルのビット数は、データマスクに示される有効ビット数で決まる。
【０３１８】
ＡＮＤ回路７７は、圧縮シンボルとデータマスクとのＡＮＤ演算を行い、その結果をＦ／Ｆに出力する。回路７５は、Cmarkビットが“１”のとき、エントロピー計算値に応じ
た有効ビット数を示すデータマスクを出力する。Cmarkビットが“０”のとき、エントロ
ピー計算値に関わらず、全ビットが有効であることを示すデータマスク“11111111”を出力する。但し、Cmarkビットが“０”のとき、回路７５はデータマスクを出力せず、バレ
ルシフタ６６から出力される圧縮シンボルがそのままＦ／Ｆ７１に入力される構成を採用してもよい。
【０３１９】
判定回路７４は、セレクタ７４１と、セレクタ７４２とを含む。セレクタ７４１には、記憶領域６２１のそれぞれからの出力と、Ｆ／Ｆ７１からの出力とが入力される。セレクタ７４１は、Ｆ／Ｆ７１から出力され、セレクタ７４１の制御端に入力される圧縮シンボルがオリジナルシンボルである場合、セレクタ７４１からセレクタ７４２への出力を停止する。これに対し、制御端から入力される圧縮シンボルがインデックス値である場合、セレクタ７４１は、インデックス値に対応する記憶領域７２１から読み出したオリジナルシンボルをセレクタ７４２に入力する。
【０３２０】
セレクタ７４２は、セレクタ７４１からの入力があれば、その入力を出力し、セレクタ７４１からの入力がない場合、Ｆ／Ｆ７１からの入力を出力する。これによって、Ｆ／Ｆ７１からの出力がオリジナルシンボルである場合、そのオリジナルシンボルがセレクタ７４２から出力される。これに対し、Ｆ／Ｆ７１からの出力がインデックス値である場合、セレクタ７４１から出力されたオリジナルシンボルがセレクタ７４２から出力される。
【０３２１】
操作回路７３は、セレクタ７３１と、セレクタ７３２とを有する。セレクタ７３２は、インデックス“１”〜“ｎ−１”に記憶されたシンボルが入力される入力端子と、オリジナルシンボルと同じシンボルが登録されていた記憶領域６２１（エントリ）のインデックス値が入力される制御端子と、インデックス値に合致するシンボルをセレクタ７３１に入力する出力端子とを有する。
【０３２２】
セレクタ７３１は、セレクタ７３２からの出力と、Ｆ／Ｆ７１からのオリジナルシンボルとが入力される入力端子と、Cmarkビットが入力される制御端子とを有する。また、セ
レクタ６３１は、Cmarkビットが“０”のときにオリジナルシンボルを先頭の（インデッ
クス“０”の）記憶領域６２１に出力し、Cmarkビットが“１”のときにセレクタ７３２
からのシンボルをインデックス“０”の記憶領域７２１に出力する出力端子を有する。
【０３２３】
記憶領域７２１のそれぞれは、インデックス値が大きくなる方向において、次の記憶領域７２１と接続されており、Cmarkビット“１”を受けたとき、その記憶領域７２１にシ
ンボルが記憶されていれば、そのシンボルを次の記憶領域７２１に移動させる。但し、インデックス“ｎ−１”の記憶領域６２１に対しては、シンボルの値が上書きされる。
【０３２４】
また、記憶領域７２１には、Ｆ／Ｆ７１からのインデックス値が入力されるようになっている。記憶領域７２１は、例えば大小の比較器を有し、入力されたインデックス値が自身のそのインデックス値より大きい場合に、記憶しているシンボル値をセレクタ７３２に入力する。但し、シンボルを記憶している場合（ｖビット値が“１”の場合）に限る。このようにして、エントリがヒットした場合における、先頭エントリへのシンボル移動や、次のエントリへの移動（プッシュ動作）が行われる。
【０３２５】
実施形態９に示すように、圧縮装置及び解凍装置は、ソフトウェアによる実装でもハードウェアによる実装でもよい。
【０３２６】
〔実施形態１０〕
実施形態１０として、実施形態１で説明したエントロピー計算方法（第１の計算方法）と異なるエントロピーの第２の計算方法について説明する。エントロピーの第２の計算方法では、過去Ｔシンボルに対する圧縮処理における変換テーブルの使用率及びエントリのヒット率を用いてエントロピーを算出する。例えば、第１の計算方法におけるceil（log
２k）の代わりに、以下の式２を用いてエントロピー値Ｅを求める。
式２：E＝ceil（log2((使用率/ヒット率)＊エントリ数））
【０３２７】
使用率及びヒット率は、過去Ｔ（Ｔは正の整数）シンボルの圧縮結果に対する変換テーブルの使用率及びヒット率を示す。但し、エントロピー値Ｅの範囲は、０≦Ｅ≦Ｍである。Ｍは圧縮器・解凍器のデータマスクの最大ビット長である。また、Ｅが負数の場合は０とする。
【０３２８】
第２の計算方法は、過去のヒット率、テーブル使用率の統計値に依存するため、圧縮の際にオリジナルシンボルがヒットするインデックスが、式２を用いたエントロピーの計算によって得られた数値が示すインデックスの範囲を越える場合がある（例えばＥ＝２である場合に、インデックス“７”がヒットする場合など）。このため、実施形態１と異なる方法で圧縮・解凍処理を行う。
【０３２９】
図７９は、実施形態１０に係る、第２の計算方法を用いる圧縮器の処理例を示すフローチャートである。実施形態１０に係る圧縮器１１の処理は、実施形態１における圧縮器の処理（図１５）との比較において、Ｓ１２とＳ１３との間にＳ１２Ａの処理が設けられている点において、実施形態１と異なる。
【０３３０】
Ｓ１２Ａにおいて、圧縮器１１は、Ｓ１２でヒットしたエントリのインデックス値が２のＥ乗以上であるか否かを判定する。インデックス値が２のＥ乗以上でない（２のＥ乗未満）と判定される場合、Ｓ１３に処理が進み、実施形態１と同様の動作となる。これに対し、インデックス値が２のＥ乗以上と判定される場合、圧縮器１１は、Ｓ１４の処理を行い、Ｓ１５の処理においてCmarkビット“０”を出力する。すなわち、インデックス値が
２のＥ乗以上であれば、ミスヒット（未登録）として扱う。
【０３３１】
図８０は、実施形態１０に係る、第２の計算方法を用いる解凍器の処理例を示すフローチャートである。実施形態１０に係る解凍器５２の処理は、実施形態１における解凍器の処理（図２２）との比較において、Ｓ３８，Ｓ３９，Ｓ４０，Ｓ４１の代わりに、Ｓ３８Ａ，Ｓ３８Ｂ，Ｓ３８Ｃ，Ｓ３８Ｄの処理が設けられている点において、実施形態１と異なる。
【０３３２】
Ｓ３１において、Cmarkビット“０”と判定された場合、解凍器５２は、変換テーブル
の、インデックス値が２のＥ乗以降のエントリに関して、圧縮シンボルの検索を行う（Ｓ３８Ａ）。圧縮シンボルがヒットしたと判定される場合（Ｓ３８Ｂ、Ｙ）、解凍器５２は、第１の操作方法のヒット時の動作（図１６Ｃ参照）を行う（Ｓ３８Ｃ）、すなわち、ヒットした圧縮シンボルをオリジナルシンボル（解凍シンボル）として出力するとともに、圧縮シンボルを所定位置（例えばエントリの先頭）に移動し、先頭エントリからヒットしたエントリの一つ前のエントリのそれぞれに登録されたシンボルを次のエントリに移動する。
【０３３３】
これに対し、圧縮シンボルがヒットしなかった（ミスヒット）と判定される場合（Ｓ３８Ｂ、Ｎ）、解凍器５２は、第１の操作方法のミスヒット時の動作（図１６（Ｂ））を行う（図３８Ｄ）。すなわち、解凍器５２は、圧縮シンボルを先頭エントリに登録し、先頭エントリ以降のエントリに登録されているシンボルを次のエントリへ移動する。Ｓ３８Ｃ又はＳ３８Ｄの処理が終了すると、処理がＳ３６に進む。図７９及び図８０の処理の説明は、上述した点を除いて、図１５及び図２２に示した処理と同じであるので、同じ処理については説明を省略する。
【０３３４】
図８１Ａ及びＢ、図８１Ａ及びＢ、図８２Ａ及びＢ、図８３Ａ及びＢ、図８４Ａ及びＢ、並びに図８５は、エントロピーの第２の計算方法の例を示す。過去Ｔ＝５回のシンボルの入力（圧縮処理）における使用率及びヒット率を用いてエントロピー値を計算する。なお、この計算例では、エントリがヒットすることによる登録位置の変更や、ヒット数又はミスヒット数に伴うエントリの削除は行われないものとする。エントロピー値Ｅの計算式は、式２、すなわちＥ＝ceil(log2((使用率/ヒット率)*エントリ数))である。Ｅの範囲は０≦Ｅ≦Ｍであり、Ｍはデータマスクの最長ビット数である。
【０３３５】
図８１Ａは、計算例における初期状態を示す。入力データの例として“ABCABABDAB”のシンボル列が入力される場合を仮定する。図７９Ａの左上に示すように、初期状態の変換テーブル（エントリ数＝４、インデックス“０”〜“３”、従ってＭ＝２）には、シンボルは登録されていないものとする。図８１Ａの下側に示した表は、過去に入力された５つのシンボル（４入力前、３入力前、２入力前、現在）のそれぞれについての変換テーブルの使用率及びヒット率、並びに平均値を示す。図７９Ａに示す例では、使用率の平均の初期値を“０／２０”とし、ヒット率の平均の初期値を“５／５”としている。但し、使用率の平均の初期値を“４／４”とし、ヒット率の平均の初期値を“０”に設定してもよい。この場合、エントロピー値Ｅは０となる。
【０３３６】
図８１Ｂは、シンボル“Ａ”が入力され、変換テーブルに登録された場合の計算例を示す。現在の使用率は“１／４”となり、その平均値は“１／２０”となる。また、ヒット率の平均値は“４／５”となる。そして、式２によるエントロピーの計算値は“−２”となる。計算結果がＥのとり得る範囲より小さいため、エントロピー値Ｅはその範囲の下限である０とされる。
【０３３７】
図８２Ａは、シンボル“Ａ”の次のシンボル“Ｂ”が入力され、変換テーブルに登録された場合の計算例を示す。現在の使用率は“２／４”となり、その平均値は“３／２０”となる。また、ヒット率の平均値は“３／５”となる。このときのエントロピーの計算値及びＥの値はともに“０”である。なお、このときのシンボル“Ｂ”に対する圧縮処理では、シンボル“Ｂ”はミスヒットとなり、シンボル“Ｂ”が圧縮シンボルとして出力されるため、データマスクは使用されない。使用エントリ数が２である一方、データマスクが示す有効ビット数は０ビットとなるが、データマスクが使用されないため、解凍側で齟齬が生じない。
【０３３８】
図８２Ｂは、シンボル“Ｂ”の次のシンボル“Ｃ”が入力され、変換テーブルに登録された場合の計算例を示す。現在の使用率は“３／４”となり、その平均値は“６／２０”となる。また、ヒット率の平均値は“２／５”となる。このときのエントロピーの計算値は“１．５８”であり、エントロピー値Ｅは２となる。
【０３３９】
図８３Ａは、シンボル“Ｃ”の次のシンボル“Ａ”が入力され、インデックス“２”がヒットした場合の計算例を示す。現在の使用率は“３／４”となり、その平均値は“９／２０”となる。また、ヒット率の平均値は“２／５”となる。このときのエントロピーの計算値は“２．１６”であるが、Ｅの範囲の上限値“２”を超えるため、Ｅの値は上限値
“２”とされる。
【０３４０】
図８３Ｂは、シンボル“Ａ”の次のシンボル“Ｂ”が入力され、インデックス“１”がヒットした場合の計算例を示す。現在の使用率は“３／４”となり、その平均値は“１２／２０”となる。また、ヒット率の平均値は“２／５”となる。このときのエントロピーの計算値は“２．５８”であるが、Ｅの範囲の上限値“２”を超えるため、Ｅの値は上限値“２”とされる。
【０３４１】
図８４Ａは、シンボル“Ｂ”の次のシンボル“Ａ”が入力され、インデックス“２”がヒットした場合の計算例を示す。現在の使用率は“３／４”となり、その平均値は“１４／２０”となる。また、ヒット率の平均値は“３／５”となる。このときのエントロピーの計算値は“２．２２”であるが、Ｅの範囲の上限値“２”を超えるため、Ｅの値は上限値“２”とされる。
【０３４２】
図８４Ｂは、シンボル“Ａ”の次のシンボル“Ｂ”が入力され、インデックス“１”がヒットした場合の計算例を示す。現在の使用率は“３／４”となり、その平均値は“１５／２０”となる。また、ヒット率の平均値は“４／５”となる。このときのエントロピーの計算値は“１．９０”であり、エントロピー値Ｅは２となる。
【０３４３】
図８５Ａは、シンボル“Ｂ”の次のシンボル“Ｄ”が入力され、シンボルが登録された場合の計算例を示す。現在の使用率は“４／４”となり、その平均値は“１６／２０”となる。また、ヒット率の平均値は“４／５”となる。このときのエントロピーの計算値及びＥの値は“２”である。
【０３４４】
図８５Ｂは、シンボル“Ｄ”の次のシンボル“Ａ”が入力され、インデックス“３”がヒットした場合の計算例を示す。現在の使用率は“４／４”となり、その平均値は“１７／２０”となる。また、ヒット率の平均値は“４／５”となる。このときのエントロピーの計算値は“２．０８”であるが、Ｅの範囲の上限値“２”を超えるため、Ｅの値は上限値“２”とされる。
【０３４５】
図８６は、シンボル“Ａ”の次のシンボル“Ｂ”が入力され、インデックス“２”がヒットした場合の計算例を示す。現在の使用率は“４／４”となり、その平均値は“１８／２０”となる。また、ヒット率の平均値は“４／５”となる。このときのエントロピーの計算値は“２．１７”であるが、Ｅの範囲の上限値“２”を超えるため、Ｅの値は上限値“２”とされる。
【０３４６】
〔計算方法の性能評価〕
実施形態１〜１０で説明したエントロピー計算がシャノンの平均情報量を正しく表現できているかを実験的に証明する。実施形態１で説明した圧縮装置１０を用いて、上述したエントロピーの第１の計算方法及び第２の計算方法を用いて、オリジナルシンボルが入力される毎に、エントロピーを計算して記録し、オリジナルシンボル列全体の処理が終わった場合における第１及び第２の計算方法による計算結果の平均値の夫々と、オリジナルシンボル列全体のシャノンの平均情報量とを比較する。
【０３４７】
実験において、圧縮装置１０の構成に関して、第２の計算方法（実施形態１０）における、過去のシンボル数Ｔは１００とした。また、変換テーブルのエントリ数は２５６とした。但し、４回のヒットをトリガにエントロピーカリングを実施した。また、実験では、ｋ＝８の設定を採用した。このため、エントリがヒットした場合に、そのエントリのインデックスから８つ遡ったインデックス位置にエントリの登録内容が移動し、その移動後の位置から、ヒットしたエントリ位置までにあるエントリの内容を一つずつずらす。
【０３４８】
１〜２５６の中から種類数を選択可能なデータに関して、種類数を決定する（例えば１２８（０〜１２７）種類）。種類数が１２８のデータに関して、ランダムにデータ（オリジナルシンボル）を出現させたときのオリジナルシンボル列に関して、オリジナルシンボルの出現毎の、エントロピー計算を行い、その全体の平均値を求める。また、上記オリジナルシンボル列に関してシャノンの平均情報量を求め、比較を行う。
【０３４９】
図３６は、実験の結果を示すグラフであり、縦軸がエントロピー値を示し、横軸はデータ（シンボル）の種類数を示す。点線がシャノンの平均情報量を示すグラフであり、太線が第１の計算方法（式１）を用いた場合のグラフであり、細線が第２の計算方法（式２）を用いた場合のグラフを示す。破線は、データの種類数が６４種類の場合を示す。
【０３５０】
６４種類のデータが出現する場合、６ビットで表現可能であるため、シャノンの平均情報量のグラフと、第２の計算方法のグラフとの値はほぼ６となる。これより、式２を用いる第２の計算方法から得られる値は、エントロピーの理論値に一致しているといえる。第１の計算方法のグラフでは、エントロピー値は５．６６となり、ほぼ理論値となる。もっとも、理論値よりやや低くなるため、少ないビット数で圧縮シンボルを表現可能であることを示している。
【０３５１】
〔実施形態１１〕
実施形態１１について説明する。実施形態１１は、実施形態４及び実施形態５の変形例にあたる。実施形態４及び５では、変換テーブルのリザーブされたエントリ領域については、登録されたシンボルが固定され、エントリのヒット／ミスヒットに伴うテーブル更新の対象となっていない（図５４Ａ、図６６Ａを参照）。
【０３５２】
しかし、ＲＥＲＩ、ＲＥＴＯを行う場合において、リザーブされたエントリが空にならないように制御すれば、エントリがヒットしたときの交換対象とすることも可能である。例えば、図５３Ｃの状態において、実施形態４で説明した図５４Ａに示す処理を行う代わりに、図８７Ａに示す処理を行ってもよい。すなわち、シンボル“Ａ”が入力され、インデックス“３”がヒットした場合に、圧縮器１１が、シンボル“Ａ”を先頭のインデックス“０”に移動し、シンボル“Ｃ”，“Ｆ”及び“Ｂ”のそれぞれを次のエントリに移動させてもよい。
【０３５３】
或いは、図６５Ｃの状態において、実施形態４で説明した図５４Ａに示す処理を行う代わりに、図８７Ａに示す処理を行ってもよい。すなわち、シンボル“Ａ”が入力され、インデックス“２”がヒットした場合に、圧縮器１１が、シンボル“Ａ”を先頭のインデックス“０”に移動し、シンボル“コマンド１”，及び“Ｂ”のそれぞれを次のエントリに移動させてもよい。
【０３５４】
この場合、“コマンド１”は、オリジナルシンボルとして扱われ、“コマンド１”のエントリ内容はコマンドとして意味を成さなくなるが、圧縮・解凍は正しく動作する。従って、リザーブエントリの内容は書き換わるが、ＲＥＴＩ、ＲＥＴＯは実現できる。但し、テーブルリセットコマンドやエントロピーカリングでリザーブされたエントリを空にしないことが条件となる。このような制御をした方が、リザーブされたエントリを犠牲にしないため、圧縮率が良くなると考えられる。
【０３５５】
上述した実施形態の構成は、適宜組み合わせることができる。実施形態２以降に示す構成は、オプションであって、必須の構成要件ではない。逆に言えば、実施形態２以降で説明した構成、特に、実施形態３及び４にて説明したコマンドを圧縮側から解凍側へ送るための構成は、エントロピー計算によってインデックスの有効ビット数を可変にする圧縮装
置及び解凍装置以外に適用可能である。例えば、参考例に示した圧縮装置及び解凍装置に適用が可能である。
【符号の説明】
【０３５６】
１０・・・圧縮装置
１１・・・圧縮器
１２・・・シリアライザ
５０・・・解凍装置
５１・・・デシリアライザ
５２・・・解凍器
１１１，５２１・・・シンボル変換部
１１２，５２２・・・エントロピー計算部
１１３，５２３・・・マスク生成部
【図１】
2020184672.tif 000004
【図２】
2020184672.tif 000005
【図３】
2020184672.tif 000006
【図４】
2020184672.tif 000007
【図５】
2020184672.tif 000008
【図６】
2020184672.tif 000009
【図７】
2020184672.tif 000010
【図８】
2020184672.tif 000011
【図９】
2020184672.tif 000012
【図１０】
2020184672.tif 000013
【図１１】
2020184672.tif 000014
【図１２】
2020184672.tif 000015
【図１３】
2020184672.tif 000016
【図１４】
2020184672.tif 000017
【図１５】
2020184672.tif 000018
【図１６】
2020184672.tif 000019
【図１７】
2020184672.tif 000020
【図１８】
2020184672.tif 000021
【図１９】
2020184672.tif 000022
【図２０】
2020184672.tif 000023
【図２１】
2020184672.tif 000024
【図２２】
2020184672.tif 000025
【図２３】
2020184672.tif 000026
【図２４】
2020184672.tif 000027
【図２５】
2020184672.tif 000028
【図２６】
2020184672.tif 000029
【図２７】
2020184672.tif 000030
【図２８】
2020184672.tif 000031
【図２９】
2020184672.tif 000032
【図３０】
2020184672.tif 000033
【図３１】
2020184672.tif 000034
【図３２】
2020184672.tif 000035
【図３３】
2020184672.tif 000036
【図３４】
2020184672.tif 000037
【図３５】
2020184672.tif 000038
【図３６】
2020184672.tif 000039
【図３７】
2020184672.tif 000040
【図３８】
2020184672.tif 000041
【図３９】
2020184672.tif 000042
【図４０】
2020184672.tif 000043
【図４１】
2020184672.tif 000044
【図４２】
2020184672.tif 000045
【図４３】
2020184672.tif 000046
【図４４】
2020184672.tif 000047
【図４５】
2020184672.tif 000048
【図４６】
2020184672.tif 000049
【図４７】
2020184672.tif 000050
【図４８】
2020184672.tif 000051
【図４９】
2020184672.tif 000052
【図５０】
2020184672.tif 000053
【図５１】
2020184672.tif 000054
【図５２】
2020184672.tif 000055
【図５３】
2020184672.tif 000056
【図５４】
2020184672.tif 000057
【図５５】
2020184672.tif 000058
【図５６】
2020184672.tif 000059
【図５７】
2020184672.tif 000060
【図５８】
2020184672.tif 000061
【図５９】
2020184672.tif 000062
【図６０】
2020184672.tif 000063
【図６１】
2020184672.tif 000064
【図６２】
2020184672.tif 000065
【図６３】
2020184672.tif 000066
【図６４】
2020184672.tif 000067
【図６５】
2020184672.tif 000068
【図６６】
2020184672.tif 000069
【図６７】
2020184672.tif 000070
【図６８】
2020184672.tif 000071
【図６９】
2020184672.tif 000072
【図７０】
2020184672.tif 000073
【図７１】
2020184672.tif 000074
【図７２】
2020184672.tif 000075
【図７３】
2020184672.tif 000076
【図７４】
2020184672.tif 000077
【図７５】
2020184672.tif 000078
【図７６】
2020184672.tif 000079
【図７７】
2020184672.tif 000080
【図７８】
2020184672.tif 000081
【図７９】
2020184672.tif 000082
【図８０】
2020184672.tif 000083
【図８１】
2020184672.tif 000084
【図８２】
2020184672.tif 000085
【図８３】
2020184672.tif 000086
【図８４】
2020184672.tif 000087
【図８５】
2020184672.tif 000088
【図８６】
2020184672.tif 000089
【図８７】
2020184672.tif 000090
【手続補正書】
【提出日】令和1年9月30日(2019.9.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
圧縮装置が、入力されたシンボルが複数のエントリを有する第１テーブルに未登録である場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、を行い、
解凍装置が、前記非圧縮を示す指標データ及び前記シンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、前記圧縮を示す指標データと前記位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、を行い、
前記圧縮装置が、前記圧縮を示す指標データと前記位置情報を出力する場合に、前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第１のビット数で表現された前記位置情報を出力し、
前記解凍装置が、前記非圧縮を示す指標データ及び前記シンボルを受信して前記シンボルを前記第２テーブルに登録した場合に、前記第２テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１のビット数の算出方法と同じ算出方法により算出される、前記第２テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第２のビット数を用いて、前記圧縮装置から送信され前記解凍装置に入力されるビット列から前記位置情報を抽出する
データの圧縮及び解凍方法。
【請求項２】
前記圧縮装置が、前記第１のビット数を、前記第１テーブルの使用中のエントリ数ｋ及び下記式１を用いて算出し、
前記解凍装置が、前記第２のビット数を、使用中の前記第２テーブルのエントリ数ｋ及び下記式１を用いて算出する、
請求項１に記載のデータの圧縮及び解凍方法。
式１：ｃｅｉｌ（ｌｏｇ２ｋ）
【請求項３】
前記圧縮装置が、前記第１のビット数を、所定数のシンボルに対する圧縮処理の結果における前記第１テーブルの使用率と、シンボルが登録されたエントリのヒット率と、下記式２とを用いて算出し、
前記解凍装置が、前記第２のビット数を、前記所定数のシンボルに対する解凍処理の結果における前記第２テーブルの使用率と、シンボルが登録されたエントリのヒット率と、下記式２とを用いて算出する、
請求項１に記載のデータの圧縮及び解凍方法。
式２：ｃｅｉｌ（ｌｏｇ２（（使用率／ヒット率）＊エントリ数））
【請求項４】
前記位置情報は、前記第１テーブル及び前記第２テーブルの前記複数のエントリに対して先頭のエントリから順に割り当てられたインデックス番号である
請求項１から３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項５】
前記圧縮装置は、前記シンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記シンボルを前記第１テーブルの先頭のエントリに移動させるともに、前記第１テーブルの前記先頭のエントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させ、
前記解凍装置は、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記シンボルを前記第２テーブルの先頭のエントリに移動させるともに、前記第２テーブルの先頭のエントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させる
請求項１から４のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項６】
前記圧縮装置は、前記シンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記第１テーブルに関して、前記ヒットしたエントリに登録されていたシンボルを前記ヒットしたエントリより先頭側にある所定の移動先エントリに登録するとともに、前記移動先エントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させ、
前記解凍装置は、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットした場合に、前記第２テーブルに関して、前記ヒットしたエントリ中のシンボルを前記ヒットしたエントリより先頭側にある所定の移動先エントリに登録するとともに、前記移動先エントリから前記ヒットしたエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させる
請求項１から４のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項７】
前記所定の移動先エントリは、前記第１テーブル及び前記第２テーブルにおける先頭のエントリである
請求項６に記載のデータの圧縮及び解凍方法。
【請求項８】
前記所定の移動先エントリは、前記第１テーブル及び前記第２テーブルにおいて、前記ヒットしたエントリから先頭方向に所定数だけ遡った位置にあるエントリであり、
前記圧縮装置及び前記解凍装置は、前記所定数だけ遡った位置が先頭を超える場合に、先頭のエントリを移動先に設定する
請求項６に記載のデータの圧縮及び解凍方法。
【請求項９】
前記圧縮装置は、前記第１テーブルの全てのエントリが使用中の状態における、前記シ
ンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記シンボルを前記第１テーブルの先頭のエントリに登録するとともに、前記第１テーブルの前記先頭のエントリから末尾のエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させて前記末尾に登録されていたエントリ中のシンボルを削除し、
前記解凍装置は、前記第２テーブルの全てのエントリが使用中の状態における、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記シンボルを前記第２テーブルの先頭のエントリに登録するとともに、前記第２テーブルの前記先頭のエントリから末尾のエントリの１つ前にあるエントリまでの間にあるエントリに登録されているシンボルを次のエントリに移動させて前記末尾に登録されていたエントリ中のシンボルを削除する
請求項１から８のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１０】
前記圧縮装置は、前記シンボルの前記第１テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記第１テーブルにおける第１エントリが空き状態であれば、前記第１テーブルにおける第１エントリに前記シンボルを登録し、前記第１テーブルの全てのエントリが使用中であれば、前記第１テーブルにおける第１エントリに前記シンボルを上書き登録し、
前記解凍装置は、前記シンボルの前記第２テーブルの検索において前記シンボルが登録されたエントリがヒットしない場合に、前記第２テーブルにける第１エントリが空き状態であれば、前記第２テーブルにおける第１エントリに前記シンボルを登録し、前記第２テーブルの全てのエントリが使用中であれば、前記第２テーブルにおける第１エントリに前記シンボルを上書き登録する、
請求項１から８のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１１】
前記第１テーブルにおける第１エントリが前記第１テーブルの末尾のエントリであり、
前記第２テーブルにおける第１エントリが前記第２テーブルの末尾のエントリである
請求項１０に記載のデータの圧縮及び解凍方法。
【請求項１２】
前記圧縮装置は、前記第１テーブルに関して、シンボルが登録されたエントリのヒット数、又はシンボルが登録されたエントリのミスヒット数が所定値に達した場合に、シンボルを登録しているエントリのうちインデックス番号が最大のエントリ中のシンボルを削除し、
前記解凍装置は、前記第２テーブルに関して、シンボルが登録されたエントリのヒット数、又はシンボルが登録されたエントリのミスヒット数が所定値に達した場合に、シンボルを登録しているエントリのうちインデックス番号が最大のエントリ中のシンボルを削除する
請求項１から１１のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１３】
前記圧縮装置は、前記第１テーブルに関して、前記インデックス番号が最大のエントリが先頭から所定範囲にあるエントリに該当する場合には、前記インデックス番号が最大のエントリ中のシンボルを削除せず、
前記解凍装置は、前記第２テーブルに関して、前記インデックス番号が最大のエントリが先頭から所定範囲にあるエントリに該当する場合には、前記インデックス番号が最大のエントリ中のシンボルを削除しない
請求項１２に記載のデータの圧縮及び解凍方法。
【請求項１４】
前記第１テーブル及び前記第２テーブルにおける同一の所定エントリに命令を示す命令シンボルが登録されており、
前記圧縮装置は、圧縮を示す指標データと前記所定エントリを示す位置情報とを出力す
るとともに、前記命令シンボルが示す命令を実行し、
前記解凍装置は、前記圧縮装置から受信される、前記圧縮を示す指標データと前記所定エントリを示す位置情報とに基づいて、前記第２テーブルにおける前記所定エントリに登録された前記命令シンボルを読み出し、前記命令シンボルが示す命令を実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１５】
前記第１テーブル及び前記第２テーブルにおける同一の所定エントリに前記解凍装置に実行させる命令を示す命令シンボルが登録されており、
前記圧縮装置は、非圧縮を示す指標データと前記命令シンボルとを出力し、
前記解凍装置は、前記非圧縮を示す指標データに基づく前記命令シンボルの登録処理において前記第２テーブルに既に前記命令シンボルが登録されていることに対する例外処理として前記命令シンボルが示す命令を実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１６】
前記圧縮装置が、前記解凍装置に命令を実行させる場合に、圧縮を示す指標データと前記第１テーブルの空き状態のエントリを示す位置情報とを出力し、
前記解凍装置が、前記圧縮装置から受信された、前記圧縮を示す指標データ及び前記位置情報に基づくシンボルの読出処理において前記位置情報が示す前記第２テーブルのエントリにシンボルが登録されていないことによって生じる例外の発生時に、前記命令を示す情報を取得して実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１７】
前記圧縮装置が、前記圧縮を示す指標データ及び前記第１テーブルの空き状態のエントリを示す位置情報の出力に続いて、非圧縮を示す指標データと前記命令を示す命令シンボルとを出力し、
前記解凍装置は、前記例外の発生時に、前記命令シンボルが示す命令を実行する
請求項１６に記載のデータの圧縮及び解凍方法。
【請求項１８】
前記圧縮装置が、前記解凍装置に命令を実行させる場合に、非圧縮を示す指標データと前記第１テーブルにおいて登録中のシンボルとを出力し、
前記解凍装置が、前記圧縮装置から受信された、前記非圧縮を示す指標データに基づくシンボルの登録処理において前記第２テーブルに同一のシンボルが登録されていることによって生じる例外の発生時に、前記命令を示す情報を取得して実行する
請求項１から１３のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項１９】
前記圧縮装置が、前記非圧縮を示す指標データ及び前記第１テーブルにおいて登録中のシンボルの出力に続いて、非圧縮を示す指標データと前記命令を示す命令シンボルとを出力し、
前記解凍装置は、前記例外の発生時に、前記命令シンボルが示す命令を実行する
請求項１８に記載のデータの圧縮及び解凍方法。
【請求項２０】
前記シンボルは、前記圧縮装置の前段に位置する他の圧縮装置によって圧縮処理が施されたシンボル列をなすシンボルであり、
前記解凍装置が出力する前記シンボルが、前記シンボル列の一部として、前記解凍装置の後段にある他の解凍装置に入力される
請求項１から１９のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項２１】
前記第１テーブル及び前記第２テーブルは、テーブルの分割によって得られた複数のバンクの一つであり、前記第１テーブル及び前記第２テーブルの選択は、同一のハッシュ関数を用いて行う
請求項１から２０のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項２２】
前記圧縮装置は、前記シンボルに対する圧縮処理のために設定する複数のパラメータから選択される２以上のパラメータの組み合わせを含む共通鍵を前記解凍装置に送信し、その後、前記非圧縮を示す指標データと前記シンボルとの組み合わせ、及び前記圧縮を示す指標データと前記位置情報との組み合わせに対する、前記共通鍵を用いた暗号化を行い、前記暗号化の結果を前記解凍装置に送信し、
前記解凍装置が、前記圧縮装置から送信された前記共通鍵中の前記２以上のパラメータを、前記非圧縮を示す指標データと前記シンボルとの組み合わせ、又は前記圧縮を示す指標データと前記位置情報との組み合わせを用いて前記シンボルを出力する解凍処理のために設定し、前記暗号化の結果の復号を前記共通鍵を用いて行うとともに、復号した結果に対する前記解凍処理を行う
請求項１から２１のいずれか一項に記載のデータの圧縮及び解凍方法。
【請求項２３】
圧縮装置が、
入力されたシンボルが複数のエントリを有する第１テーブルに未登録の場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、
前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、
前記複数のエントリの使用状況に応じて前記位置情報のサイズを変更する処理と、
を行い、
前記圧縮を示す指標データと前記位置情報を出力する処理において、前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数で表現された前記位置情報を出力する、
データ圧縮方法。
【請求項２４】
入力されたシンボルが複数のエントリを有する第１テーブルに未登録の場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、を行う圧縮器
を含み、
前記圧縮器は、前記圧縮を示す指標データと前記位置情報を出力する処理において、前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数で表現された前記位置情報を出力する、
データ圧縮装置。
【請求項２５】
入力されたシンボルが複数のエントリを有する第１テーブルに未登録の場合に、前記複数のエントリの一つに前記シンボルを登録するとともに、非圧縮を示す指標データと前記シンボルとを出力する処理と、前記シンボルが前記テーブルに登録済みの場合に、圧縮を示す指標データと、前記シンボルが登録されているエントリの位置を示すとともに前記シンボルのサイズより小さいサイズを有する位置情報とを出力する処理と、をコンピュータに実行させ、
前記圧縮を示す指標データと前記位置情報を出力する処理において、前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数で表現された前記位置情報を出力する
、
プログラム。
【請求項２６】
解凍装置が、圧縮装置から送信された、非圧縮を示す指標データ及びシンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記圧縮装置が有する第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、圧縮を示す指標データと前記第１テーブルにおいて前記シンボルが登録されたエントリの位置を示す位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、
を行い、
前記位置情報は、前記圧縮装置が前記圧縮を示す指標データと前記位置情報を出力する場合に前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて算出される、前記第１テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第１のビット数で表現されており、
前記解凍装置は、前記非圧縮を示す指標データ及び前記シンボルを受信して前記シンボルを前記第２テーブルに登録した場合に前記第２テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１のビット数の算出方法と同じ算出方法により算出される、前記第２テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第２のビット数を用いて、前記圧縮装置から送信され前記解凍装置に入力されるビット列から前記位置情報を抽出する
データ解凍方法。
【請求項２７】
圧縮装置から送信された、非圧縮を示す指標データ及びシンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記圧縮装置が有する第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、圧縮を示す指標データと前記第１テーブルにおいて前記シンボルが登録されたエントリの位置を示す位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と、を行う解凍器
を含み、
前記位置情報は、前記圧縮装置が前記圧縮を示す指標データと前記位置情報を出力する場合に前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて算出される、前記第１テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第１のビット数で表現されており、
前記解凍器は、前記非圧縮を示す指標データ及び前記シンボルを受信して前記シンボルを前記第２テーブルに登録した場合に前記第２テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１のビット数の算出方法と同じ算出方法により算出される、前記第２テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第２のビット数を用いて、前記圧縮装置から送信され前記解凍装置に入力されるビット列から前記位置情報を抽出する
データ解凍装置。
【請求項２８】
圧縮装置から送信された、非圧縮を示す指標データ及びシンボルを受信した場合に、前記圧縮装置における前記シンボルの登録方法と同一の方法で前記圧縮装置が有する第１テーブルと同一のデータ構造を有する第２テーブルに前記シンボルを登録するとともに前記シンボルを出力する処理と、圧縮を示す指標データと前記第１テーブルにおいて前記シンボルが登録されたエントリの位置を示す位置情報であって、前記第１テーブルの使用状況に応じてサイズが変更される位置情報とを受信した場合に、前記位置情報によって示される前記第２テーブル中のエントリに登録された前記シンボルを読み出して出力する処理と
、をコンピュータに実行させ、
前記位置情報は、前記圧縮装置が前記圧縮を示す指標データと前記位置情報を出力する場合に前記第１テーブルの前記複数のエントリの使用状況を示す情報に基づいて算出される、前記第１テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第１のビット数で表現されており、
前記非圧縮を示す指標データ及び前記シンボルを受信して前記シンボルを前記第２テーブルに登録した場合に前記第２テーブルの前記複数のエントリの使用状況を示す情報に基づいて前記第１のビット数の算出方法と同じ算出方法により算出される、前記第２テーブルにおける使用中のエントリの位置情報を表現可能な最小のビット数である第２のビット数を用いて、前記圧縮装置から送信され前記解凍装置に入力されるビット列から前記位置情報を抽出するプログラム。