(57)【要約】本発明は、全般的に損失のないデータの圧縮および圧縮解除方法およびそれを実行する装置に関する。その方法は符号文字を１以上の幾つかの予測子テーブルと比較し、予測された符号文字を連続的にカウントし、したがって出力動作数を顕著に減少させることにより処理されるデータストリームの符号文字の予測に基づいている。予測子テーブルのアドレスは１または幾つかのハッシュストリングにより実行され、ハッシュストリングはそれぞれ入力データと相関する特有のハッシュ関数により形成されている。このような方法によるデータストリームの処理は取られた符号文字長にしたがって、圧縮率限定を除去することを可能にし、したがって圧縮率を増加し、同時にデータ処理時間を十分に減少させることを可能にする。
2005521324.tif 000002
【特許請求の範囲】
【請求項１】
圧縮された出力コードストリームを得るために入力データ符号文字ストリームをコード化する方法において、
ａ）入力データ符号文字ストリームの符号文字を予測子テーブル中に記憶され、ハッシュストリングによりアドレスされる予測子と比較することにより連続して予測された符号文字をカウントし、前記予測子は入力データストリームの符号文字および／または予め定められた値であり、前記ハッシュストリングは入力データと相関するハッシュ関数により形成され、
ｂ）複数の連続的に予測された符号文字と、その連続的に予測された符号文字のすぐ後に続く予測されていない符号文字をコード化し、
ｃ）予測されていない符号文字を予測子テーブルのセルへ記憶することにより予測子テーブルを選択的に更新し、前記セルは前記ハッシュストリングによりアドレスされ、
ｄ）ハッシュストリングを更新するステップを含んでいる方法。
【請求項２】
ステップ（ｂ）はさらに、
ｉ）前記予測されていない符号文字を次の予測子テーブルに記憶された予測子と比較し、
ii）前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致するならば、複数の連続的に予測された符号文字と、前記次の予測子テーブルの識別子をコード化し、または、
iii）前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致しないならば、複数の連続的に予測された符号文字と、その符号文字のすぐ後に続く予測されていない符号文字をコード化するステップを含んでいる請求項１記載の方法。
【請求項３】
前記予測されていない符号文字が前記次の予測子テーブルに記憶された前記予測子と一致しない場合、全ての存在する予測子テーブルが使用されるまで、ステップ（ｉ）から（iii）が反復的に実行される請求項２記載の方法。
【請求項４】
２以上のハッシュストリングは種々の予測子テーブル中の予測子をアドレスするために使用され、各ハッシュストリングは入力データと相関する特有のハッシュ関数により形成されている請求項２または３記載の方法。
【請求項５】
さらに、予め決定された方法にしたがって予測子テーブルを更新する選択的なステップを含んでいる請求項２または３記載の方法。
【請求項６】
入力データストリームの符号文字は２以上の既存の予測子テーブル中に記憶された予測子と並列で比較される請求項２または３記載の方法。
【請求項７】
さらに、プロセスの開始時に前記ハッシュストリングを初期化するステップを含み、予め決定された値が前記ハッシュストリングに割当てられる請求項１記載の方法。
【請求項８】
圧縮されたコードストリームの圧縮解除方法において、
オリジナルデータストリームを得るために、前記圧縮方法のステップに適合したステップと、適切なデータ構造を含んでいる請求項１乃至７のいずれか１項記載の圧縮方法により得られる圧縮されたコードストリームの圧縮解除方法。
【請求項９】
圧縮された出力コードストリームを得るため入力データ符号文字ストリームをコード化する装置において、
ａ）入力データ符号文字ストリームの符号文字を予測子テーブルに記憶され、ハッシュストリングによりアドレスされる予測子と比較することにより連続して予測された符号文字をカウントし、前記予測子は入力データストリームの符号文字および／または予め定められた値であり、前記ハッシュストリングは入力データと相関するハッシュ関数の手段により形成されており、
ｂ）複数の連続的に予測された符号文字およびその連続的に予測された符号文字のすぐ後に続く予測されていない符号文字をコード化し、
ｃ）予測されていない符号文字を予測子テーブルのセルへ記憶することにより予測子テーブルを選択的に更新し、前記セルは前記ハッシュストリングによりアドレスされ、
ｄ）ハッシュストリングを更新するように構成された手段を含んでいる装置。
【請求項１０】
前記（ｂ）のために構成された前記手段はさらに、
ｉ）前記予測されていない符号文字を次の予測子テーブル中に記憶された予測子と比較し、
ii）前記予測されていない符号文字が前記次の予測子テーブル中に記憶された予測子と一致するならば、複数の連続的に予測された符号文字および前記次の予測子テーブルの識別子をコード化し、または、
iii）前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致しないならば、複数の連続的に予測された符号文字およびその符号文字のすぐ後に続く予測されていない符号文字をコード化するために構成された手段を含んでいる請求項９記載の装置。
【請求項１１】
前記手段は、前記予測されていない符号文字が前記次の予測子テーブルに記憶された前記予測子と一致しない場合、全ての存在する予測子テーブルが使用されるまで、ステップ（ｉ）から（iii）を反復的に実行されるように構成されている請求項１０記載の装置。
【請求項１２】
２以上のハッシュストリングが種々の予測子テーブル中の予測子をアドレスするために使用されることができ、各ハッシュストリングが入力データと相関する特有のハッシュ関数により形成されるように構成されている請求項１０または１１記載の装置。
【請求項１３】
さらに、予め決定された方法にしたがって予測子テーブルを更新する選択的な手段を含んでいる請求項１０または１１記載の装置。
【請求項１４】
さらに、入力データストリームの符号文字を２以上の既存の予測子テーブルに記憶された予測子と並列で比較する手段を含んでいる請求項１０または１１記載の装置。
【請求項１５】
さらに、予め決定された値を前記ハッシュストリングに割当てることにより、プロセスの開始時に前記ハッシュストリングを初期化する手段を具備している請求項９記載の装置。
【請求項１６】
圧縮されたコードストリームを圧縮解除する圧縮解除装置において、オリジナルデータストリームを得るために、前記圧縮手段に適合した手段を具備している請求項９乃至１５のいずれか１項記載の圧縮手段を具備している装置で得られる圧縮されたコードストリームを圧縮解除する圧縮解除装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に損失のないデータの圧縮および圧縮解除方法およびそれを実行する装置に関する。
【背景技術】
【０００２】
データ圧縮方法は速度、圧縮率、必要なメモリスペース、構成の簡単さのような幾つかの重要なパラメータにより特徴付けされる。方法の適用と解決される問題にしたがって、これらのパラメータ間での妥協を見つけることが通常、必要である。現在のＩＴ開発の段階では、圧縮速度と、ネットワークプロトコルレベルで圧縮するための圧縮方法の適切度はますます重要になっている。現在では、例えばＬＺベースおよび予測子方法のような広く使用されている幾つかの方法が知られている。
【０００３】
ＬＺベースのデータ圧縮方法の論理的背景は、Abraham LempelとJacob Zivの文献IEEE Transactions on Information Theory、IT-23-3、1977年５月、337-343頁およびIEEE Transactions on Information Theory、IT-24-5、1978年９月、530-536頁に記載されている。データ圧縮および圧縮解除システムはＬＺＷシステムとして知られ、モデムで使用される圧縮および圧縮解除において標準V.42ビスとして採択され、例えば米国特許第4,558,302号明細書に記載されている。
【０００４】
ＬＺベースの方法は良好な圧縮率を与えるが、長い処理時間を必要とする複雑なデータ構造が使用されるために、比較的低速度であることが知られている。さらに、複雑なデータ構造のために、特殊化されたチップ形態のこの方法の実行は厄介であり、比較的高いメモリ容量がその応用で必要とされることに注意しなければならない。
【０００５】
予測子による方法を使用する論理的背景は、Timo RaitaとJukka Teuholaの文献（“Text compression using prediction”、1986 ACM Conference on Research and Development in Information Retrieval、1986年９月）と、（“Predictive text compression by hashing”、The Tenth Annual International ACM SIGIR Conference on Research and Development in Information Retrieval、1987年11月）に記載されている。このデータ圧縮および圧縮解除方法はまた米国特許第5,229,768号明細書に開示されている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
予測子方法はＬＺベース方法と比較して、非常に高速度で簡単であり、必要とするメモリスペースが少ないが、圧縮率は通常低い。この方法の特有の特徴は圧縮されるデータの特性にかかわりなく、圧縮率に制限があり、これは特定の構成で選択される符号文字の長さに依存している。典型的に符号文字の長さは経歴的に形成された状態により規定された８ビットとして取られる。この場合、最大の圧縮率は圧縮されるデータの特性が明白にさらに良好な結果の実現を可能にする場合でさえも８倍である。
【０００７】
それ故、十分に一般的で、既知の方法の欠点が除去される新しい損失のないデータ圧縮および圧縮解除方法が必要とされている。
【０００８】
驚くべきことに、符号文字を１以上の予測子テーブルに記憶された予測子と比較し、予測された符号文字を連続的にカウントし、したがって出力動作数を基本的に減少することにより処理されるデータストリームの符号文字の予測に基づいて、圧縮率制限を除去することが可能であり、取られた符号文字の長さに応じて、および同時にデータ処理速度を大幅に増加することが可能であることが発見されている。
【課題を解決するための手段】
【０００９】
本発明は圧縮された出力コードストリームを得るために入力データ符号文字ストリームをコード化する改良された方法を提供し、その方法は、
ａ）入力データ符号文字ストリームの符号文字を予測子テーブル中に記憶されハッシュストリングによりアドレスされる予測子と比較することにより連続して予測された符号文字をカウントし、前記予測子は入力データストリームの符号文字および／または予め定められた値であり、前記ハッシュストリングは入力データと相関するハッシュ関数により形成され、
ｂ）複数の連続的に予測された符号文字と、その連続的に予測された符号文字のすぐ後に続く予測されていない符号文字をコード化し、
ｃ）予測されていない符号文字を予測子テーブルのセルへ記憶することにより予測子テーブルを選択的に更新し、前記セルは前記ハッシュストリングによりアドレスされ、
ｄ）ハッシュストリングを更新するステップを含んでいる。
【００１０】
さらに、特別な方法の実行により必要とされるならば、前述のステップ（ｂ）は本発明にしたがってさらに、
ｉ）前記予測されていない符号文字を次の予測子テーブルに記憶された予測子と比較し、
ii）前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致するならば、複数の連続的に予測された符号文字と、前記次の予測子テーブルの識別子をコード化し、または、
iii）前記予測されていない符号文字が前記次の予測子テーブルに記憶された予測子と一致しないならば、複数の連続的に予測された符号文字と、その符号文字のすぐ後に続く予測されていない符号文字をコード化するステップを含んでいる。
【００１１】
さらに、前記予測されていない符号文字と次の予測子テーブルに記憶された予測子とが一致しない場合（ステップiii）、本発明による方法は全ての存在する予測子テーブルが使用されるまで、ステップ（ｉ）から（iii）が反復的に実行されることができるように行われる。
【００１２】
幾つかの予測子テーブルを使用する可能性は成功した予測ケースの数を増加し、したがってデータ圧縮率、速度も同様に増加する。
【００１３】
比較速度の増加は、入力データ符号文字ストリームの符号文字と２以上の既存の予測子テーブル中に記憶された予測子との並列比較を行う可能性によりかなり促進される。
【００１４】
圧縮されるデータに対する良好な適合を行い、それによってそれらの圧縮率をさらに増加させるために、１以上のハッシュストリングが種々の予測子テーブルの予測子をアドレスするために使用され、各ハッシュストリングは入力データと相関する特有のハッシュ関数により形成される。
【００１５】
さらに、特別な問題、例えばさらに高い速度への適合またはより良好な圧縮率へ調節することが必要ならば、本発明による方法は予め決定された方法にしたがって予測子テーブルを更新する選択的なステップを含むことができる。
【００１６】
プロセスの開始時に、本発明による方法はハッシュストリングを初期化する付加的なステップを含み、予め決定された値が前記ハッシュストリングに割当てられる。
【００１７】
本発明によれば、圧縮解除方法はオリジナルデータストリームを得るために、圧縮されたコードストリームを圧縮解除するために行われ、この方法は、圧縮方法の特定の実行のステップに適合するステップを含み、適切なデータ構造を含んでいる。本発明による方法は、正確に回復された初期データ符号文字ストリームが圧縮解除により得られることを確実にする。
【００１８】
前述の圧縮および圧縮解除方法は別にして、本発明の目的を達成するために、圧縮および圧縮解除方法のそれぞれのステップを実行するように構成された手段を具備する適切な圧縮および圧縮解除装置が提供される。
【００１９】
本発明による方法および装置は、予測子テーブル数、ハッシュ関数およびそれらの数、予測子テーブルの更新方法、取られた符号文字長、構成のタイプ（ソフトウェア、ハードウェア）等を変化することにより非常に広範囲の要求に適合されることができ、別々にまたは他の装置と共に、種々の応用、例えばデータのバックアップコピーの生成、オンラインデータ伝送システムのデータ圧縮、インターネットに位置する情報の圧縮、移動体装置およびポータブル装置でのデータの圧縮で使用されることができる。
【００２０】
本発明による方法の簡単なデータ構造の使用は、高い圧縮速度の実現と必要なメモリスペースの減少を助ける。
【００２１】
以下、実施形態の例に基づいて、添付図面を参照し、本発明を詳細に説明する。  
【発明を実施するための最良の形態】
【００２２】
本発明によるデータ圧縮方法は、圧縮速度、圧縮率、必要なメモリスペース、構成の簡単さのようなこのような要求にしたがって、多かれ少なかれ複雑な方法で実現されることができる。図１から図４を参照して、以下、本発明の基本的な考えを容易に明白および理解可能にするため、本発明の実施形態の１つを説明し、これは高い圧縮速度、必要とする少ないメモリスペース、最大の容易さに関する。
【００２３】
この本発明の実施形態では、１つのハッシュ関数が入力データ符号文字ストリームからハッシュストリングを形成するために使用される。この本発明による方法の実行は最大の速度と必要とするメモリスペースを少なくすることを目的とするので、ストリングの長さが１つの符号文字の長さに等しい簡単なハッシュ関数が選択されるが、ゼロ値が最初のステップのハッシュストリングに割当てられるプロセスの開始時を除いて、その現在値は常に先に処理された符号文字に等しい（ＨＡＳＨ＝ＬａｓｔＣｈｒ）。図１は先に処理された符号文字の値120、121、122がそれぞれハッシュストリングに割当てられている連続的な処理による入力符号文字110、111、112を示している。
【００２４】
ハッシュストリングは特別な記憶領域のセル、即ち予測子テーブル100（図１）のアドレスに使用される。本発明のこの実施形態は高い圧縮速度、少ない必要なメモリスペース、簡単さを意図するものであり、１つのテーブルは予測子の記憶に使用される。データ処理システムでは１つの符号文字の長さが通常８ビットとして取られる経歴的な開発状態を考慮すると、符号文字の長さと予測子の長さは本発明の実施形態でも８ビットとして取られる。したがって、ハッシュストリングは２５６の異なる値を取ることができ、それ故、予測子テーブルでは２５６のセルをアドレスできる。それはテーブル100で必要なメモリスペースを規定し、これはこの特別なケースでは２５６バイトのみである。
【００２５】
圧縮プロセスの開始時、予測子テーブル100はセルをゼロで充填することにより開始される。入力データストリームの符号文字の処理中、これらは予測子テーブルのハッシュストリングによりアドレスされる対応する値、即ち予測子と比較される。図１では、入力符号文字110は予測子101と比較され、入力符号文字111は予測子102と比較され、入力符号文字112は予測子103と比較されることが認められる。それによって、入力符号文字の処理中、それらを予測する試みが行われる。連続的に予測された符号文字をカウントするために、ゼロ値がプロセスの開始時に割当てられるカウンタが使用される。
【００２６】
比較が結果がネガチブの場合、カウンタの現在値はイライアス（Elias）デルタコード（図３のＢ）によりコード化され、予測されない符号文字と共に出力される。予測子テーブルの内容もまた予測されない符号文字を同一のセルに記録することにより比較が行われた値で更新され、したがって入力データストリームについての情報のダイナミックな変更は予測子テーブルで累積される。
【００２７】
結果として、多数の連続的に予測された符号文字と予測されない符号文字のコード化された値を有する出力コードストリームが得られる。図３のＡは入力データ符号文字ストリーム301、各符号文字の処理により得られる対応するカウンタ値302、コード化されたカウンタ値を出力するために必要とされるビット数304の簡単な例を示している。テーブル311、312、313では、予測子テーブルの状態が示されている。この簡単な例では３つの異なる符合が入力データ符号文字ストリームを処理するために使用されるので、ハッシュストリングもしたがって３つの値しか取ることができない。圧縮プロセスで累積された予測子は既に３つの可能なアドレス下で記憶され、さらに入力符号文字がハッシュストリングによりアドレスされる予測子に一致する連続が続くことがテーブル状態311から認められる。適合段に続いて入力符号文字の予測ケースの連続が後続する態様と、本発明にしたがったデータ圧縮方法の重要な原理がここで明白に示されている。例によれば、そこに示されている入力ストリームフラグメントは１３の符号文字からなる（１３＊８＝１０４ビット）。出力ストリームは６の予測されない符号文字（６＊８＝４８ビット）とコード化されたカウンタ値（１＋１＋１＋１＋５＋３＝１２ビット）からなる。１対１の回復可能なコード化された出力ストリームの６０ビットが入力符号文字の１０４ビットから得られる圧縮プロセスの結果を明白に示している。
【００２８】
圧縮プロセスは図２で詳細に示されている。最初に、ステップ200が行われ、そこでゼロ値がハッシュストリングに割当てられる。このステップ200で、予測子テーブルはまたそのセルをゼロで充填することにより開始される。その後、ステップ210のセットが続き、多数の連続的に予測されたデータ符号文字が得られる。これは幾つかのステップからなる。ステップ211で、ゼロ値がカウンタに割当てられる。その後ステップ212の符号文字入力が続くが、ステップ213で、入力符号文字がハッシュストリングによりアドレスされる予測子値に一致するか否かがチェックされる。チェック結果がポジチブであるならば、ステップ214で、カウンタは１だけ増加され、ステップ215で使用される先に示されたハッシュ関数にしたがって、ハッシュストリングは処理されている予測された符号文字の値を割当てることにより更新される。その後、ステップ216で、次の符号文字入力が行われ、それに後続してチェックステップ213に戻される。ステップ213のチェック結果が否定的であるならば、ステップ220でカウンタ値はイライアスデルタコードによりコード化され、予測されない符号文字と共に出力され、したがって圧縮されたデータストリームを生成する。その後、ステップ230で予測子テーブルの内容は、予測されない符号文字を同じセルに記録することにより比較が行われた値で更新される。さらにステップ240で、ハッシュストリングはそれに予測されない符号文字の値を割当てることにより更新され、前述のステップ211への帰還が行われる。プロセスはループで継続し、結果として圧縮された１対１の回復可能なデータストリームが得られる。
【００２９】
圧縮解除プロセスでは、初期データストリームはカウンタ値と予測されない符号文字のストリームを処理することによりコード化に対応する復号の後に得られる。圧縮解除プロセスは図４に示されている。最初に、ステップ400が行われ、ハッシュストリングと予測子テーブルが初期化される。このステップ400では、同一値がハッシュストリングと、データ圧縮の初期ステップ200（図２）で使用された予測子テーブルのセルに割当てられ、これは本発明のこの実施形態ではゼロである。次のステップ410では、圧縮されたデータストリームは復号され、カウンタ値と予測されない符号文字が得られる。その後、ステップ421でカウンタ値がゼロに等しいか否かのチェックが行われる。チェックの結果が肯定的であるならば、ステップ430で、前記予測されない符号文字が出力される。その後、ステップ440で、予測子テーブルの内容はこの予測されない符号文字をハッシュストリングによりアドレスされたセルへ記憶することにより更新される。さらにステップ450で、ハッシュストリングは出力された予測されない符号文字の値をそれに割当てることにより更新され、前述のステップ410へ戻ることにより後続する。ステップ421のチェック結果が否定的であるならば、ステップ422でハッシュストリングによりアドレスされる予測子は予測子テーブルから出力される。ステップ432で、ハッシュストリングはそれにステップ422の予測子出力の値を割当てることにより更新される。さらにステップ424で、カウンタは１つデクリメントされ、カウンタ値をチェックするステップ421へ戻す動作が行われる。結果として、カウンタ値がゼロに到達するまで、ステップ420のセットを循環的に反復することによって、圧縮プロセスで連続的に予測された符号文字が出力される。このような方法で、初期データストリームは圧縮プロセスで予測された符号文字と予測されない符号文字とを出力することにより得られる。
【００３０】
さらに、本発明のさらに複雑な実施形態を説明し、その構成により、前述の実施形態と比較して実質的にさらに高い圧縮率が実現される。
【００３１】
図５のＡに示されているように、本発明の第１の実施形態と異なって、４つの予測子テーブル501、502、503、504は予測子の記憶に使用され、２つのハッシュ関数はハッシュストリング１（520）とハッシュストリング２（521）をそれぞれ形成するために使用される。さらにハッシュストリング１（520）は一度に３つの予測子テーブル１、２、３（それぞれ501、502、503）でのアドレスに使用されるが、ハッシュストリング２（521）は１つの予測子テーブル４（504）でのアドレスに使用される。
【００３２】
１つのハッシュストリングによりアドレスされる幾つかの予測子テーブルを使用することにより、圧縮プロセスで、予測子のバリアントは前記予測子テーブル中に累積することが実現される。処理される符号文字とこれらのテーブル中の予測子との比較が連続して行われるならば、第１のテーブルから開始して、予測子テーブルの更新の適切な方法を適用することにより、圧縮プロセスで、予測子のバリアントは通常、最も頻繁に生じる予測子がテーブル１中に記憶され、他は発生頻度にしたがって、降順にテーブル２および３に記憶される方法で分配されることが実現される。
【００３３】
図５のＢに示されているように、ハッシュ関数の１つは、１つの符合の３つの下位ビットと次の符号文字の３つの上位ビットとのＸＯＲ論理機能を行い、ゼロ値が初期化ステップのハッシュストリングに割当てられるときのプロセスの開始を除いて、その結果の１５の下位ビットを維持することにより（ＨＡＳＨ＝（ＨＡＳＨ＜＜５）^Ｌａｓｔ（Ｃｈｒ）＆０×７ＦＦＦ）、３つの先に処理された符号文字530、531、532からハッシュストリング１（540）（したがって図５のＡの520）を形成する。
【００３４】
使用される第２のハッシュ関数は本発明の第１の実施形態と同一である。そのストリング（図５のＡの521）の長さは１つの符号文字の長さに等しいが、ゼロ値が初期化ステップのハッシュストリング中に割当てられるときのプロセスの開始を除いて、その現在値は常に先に処理された符号文字に等しい（ＨＡＳＨ＝ＬａｓｔＣｈｒ）。
【００３５】
特定の入力符号文字の処理中、現在のハッシュストリングは対応する予測子テーブル中の予測子をアドレスする。図５のＡに示されているように、ハッシュストリング１（520）は予測子１（511）、予測子２（512）、予測子３（513）をアドレスし、一方、ハッシュストリング２（521）は予測子４（514）をアドレスする。本発明のこの実施形態の符号文字の長さが８ビットとして取られるので、ハッシュストリング１（520）の長さは１５ビットであるが、ハッシュストリング２（521）の長さは８ビットである。これは予測子テーブルの容量を規定し、即ち予測子テーブル１、２、３は３２キロバイトを必要とし、予測子テーブル４は２５６バイトを必要とする。
【００３６】
幾つかの異なるハッシュ関数を組合わせて使用することにより、種々のデータタイプに対するその適合速度と適切性の増加を確実にする。その結果として、これはデータストリームの高い圧縮率を得ることを可能にする。
【００３７】
段階的に圧縮プロセスの詳細が図６Ａと６Ｂに示されている。最初に、初期化ステップ600が行われ、ゼロ値がハッシュストリングに割当てられる。ステップ600では、予測子テーブルはそれらのセルをゼロで充填することにより初期化される。さらにそれに続いてステップ610で、符号文字の入力が行われ、ステップ620でハッシュストリング１によりアドレスされる予測子１および予測子２がゼロに等しいか否かがチェックされる。ステップ620のチェック結果が否定的であるならば、即ち少なくとも１つのチェックされた予測子がゼロに等しくないならば、ステップセット630が行われ、それにおいて複数の連続的に予測された入力データ符号文字はカウンタにより得られる。ステップセット630はステップ631で開始され、ゼロ値がカウンタに割当てられる。さらにステップ632で、処理されている符号文字がハッシュストリング１によりアドレスされる予測子１と一致するか否かがチェックされる。それをチェックすることにより、処理される符号文字が予測子１と一致することが発見されたならば、ステップ633が行われ、カウンタが１だけ増加される。その後ステップ634で、ハッシュストリング１とハッシュストリング２の値はしたがって前述のハッシュ関数を使用して更新される。さらにステップ635で、次の符号文字入力は入力データストリームから後続し、ステップ632への帰還が行われる。したがって多数の連続的に予測されたデータ符号文字はカウンタ中に累積される。
【００３８】
ステップ632でのチェックにより、処理される符号文字と予測子１との間の不一致が発見されたならば、カウンタ値が６よりも大きいか否かをチェックするためにステップ650が行われる。チェックによって、カウンタの値が６よりも大きいことが発見されたならば、ステップ651が行われ、そこではコード257はコード化され出力され、その後、７だけ減少されたカウント値（カウンタ−７）がコード化され、出力される。
【００３９】
その後ステップ690が行われ、処理されている符号文字とハッシュストリング２によりアドレスされる予測子４との一致がチェックされる。チェック結果が肯定的であるならば、ステップ694が後続し、そこでコード256はコード化され出力される。さらにステップ693で、予測子テーブル１、予測子テーブル２、予測子テーブル３が更新される。更新プロセスでは、予測子テーブル２からハッシュストリング１によりアドレスされた予測子２は予測子テーブル３のセルへ転送され、これはハッシュストリング１によりアドレスされる。その後、ハッシュストリング１によりアドレスされたセル中の予測子テーブル２では、処理されている符号文字が記憶され、本発明のこの実施形態で選択された更新方法にしたがって、変化されない状態に保持される。さらに、ステップ699では前述のハッシュ機能の適切な使用により、ハッシュストリング１とハッシュストリング２は更新され、符号文字入力ステップ610への帰還が行われる。
【００４０】
ステップ690で行われるチェック結果が否定的であるならば、ステップ691が行われ、処理された符号文字はコード化され、予測されない符号文字として出力される。その後ステップ692が後続し、予測子テーブル４が更新される。予測子テーブル４の更新プロセスでは、ハッシュストリング２によりアドレスされる予測子４は前記予測されない符号文字により置換される。さらに、前述のステップ693、699が連続して実行され、符号文字入力ステップ610への帰還が行われる。
【００４１】
ステップ650でのチェックにより、カウンタ値が６以下であることが発見されたならば、ステップ660が行われ、処理されている符号文字とハッシュストリング１によりアドレスされる予測子２との間の一致がチェックされる。チェック結果がイエスであるならば、ステップ661が行われ、予測子テーブル１と予測子テーブル２の内容が更新される。この更新プロセスでは、ハッシュストリング１によりアドレスされる予測子１は予測子テーブル１から予測子テーブル２のセルへ転送され、これはハッシュストリング１によりアドレスされる。次にハッシュストリング１によりアドレスされるセルへの予測子テーブル１では、処理されている符号文字が記憶される。結果として、ハッシュストリング１によりアドレスされる予測子１と予測子２の値は相互に交換される。さらにステップ662が行われ、コード２５８＋カウンタ＊３がコード化され出力される。その後、ステップ699が後続し、そこで前述のハッシュ関数を適切に使用することによって、ハッシュストリング１とハッシュストリング２が更新され、符号文字入力ステップ610への帰還が行われる。
【００４２】
ステップ660で実行されたチェック結果がノーであるならば、ステップ670が行われ、処理されている符号文字と、ハッシュストリング１によりアドレスされる予測子３との一致がチェックされる。ステップ670で行われたチェック結果がイエスであるならば、ステップ671が行われ、予測子テーブル２と予測子テーブル３の内容が更新される。この更新プロセスでは、予測子テーブル２からハッシュストリング１によりアドレスされる予測子２は予測子テーブル３と、ハッシュストリング１によりアドレスされるセルへ転送される。ハッシュストリング１によりアドレスされるセルの予測子テーブル２では、処理されている符号文字が記憶される。結果として、ハッシュストリング１によりアドレスされる予測子２と予測子３の値は相互に交換される。さらにステップ672が行われ、コード２５９＋カウンタ＊３がコード化されて出力される。これにステップ699が後続し、前述のハッシュ関数を適切に使用することにより、ハッシュストリング１とハッシュストリング２が更新され、符号文字入力ステップ610への帰還が行われる。
【００４３】
ステップ670で行われたチェック結果がノーであるならば、ステップ680が行われ、コード２６０＋カウンタ＊３がコード化され出力される。さらに前述のステップ690および連続するステップが後続する。
【００４４】
圧縮プロセスの説明では、前述のステップ620へ戻り、ここでハッシュストリング１によりアドレスされた予測子１と予測子２がゼロに等しいか否かがチェックされる。ステップ620で行われたチェック結果がイエスであるならば、ステップ640が行われ、予測子テーブル１、予測子テーブル２、予測子テーブル３は、処理されている符号文字値がハッシュストリング１によりアドレスされる予測子１に割当てられ、符号文字の値‘‘（２０Ｈ）が予測子２に割当てられ、予測子３には符号文字の値‘ｅ’（６５Ｈ）が割当てられる方法で更新される。さらに、前述のプロセス690および連続するステップが後続する。このようにして、潜在的に最も頻繁に発生する予め定められた符号文字の値は予測子テーブルのセルに割当てられ、プロセス開始の初期化後、さらなる圧縮プロセスにおいて占有されず、予測される符号文字の数を増加し、データストリームの圧縮率を改良する。
【００４５】
圧縮プロセスのステップ651、662、672、680、691、694では、情報はコード化され、出力され、したがって圧縮されたデータストリームを形成する。符号文字の長さが８ビットとして取られるとき、可能な符号文字コードは０から２５５の範囲内である。それ故、ステップ651、662、672、680、694の前述のコードでは、この範囲はコード256で開始する出力情報を形成するために使用され、したがって明白に圧縮プロセス中に行われるアクションを識別し、したがって圧縮解除プロセスで１対１でオリジナルデータストリームを再生する可能性を与える。
【００４６】
圧縮率を増加するため、処理された情報をコード化するためエントロピーコーダを使用することが有効であり、これはハフマン、距離または算術コーダ等の幾つかの広く知られているコーダの中から選択されることができる。したがって、ハフマンコーダはステップ651を除いて説明した本発明の実施形態の前述のステップでコード化のために使用される。ステップ651では、値257はハフマンコーダでコード化され、一方、値カウンタ−７はイライアスデルタコードでコード化される。これは値カウンタ−７がハフマンコーダが効率的ではなくなる大きな値に到達できるためである。ステップ650のカウンタ値のチェック（カウンタ＞６）は使用されるアルファベットを限定する機会を与え、したがってハフマンコーダによるさらに効率的なコード化に適合する。
【００４７】
圧縮解除プロセスは本発明の第１の実施形態の開示により、詳細に説明されており、この例では、特定の圧縮の実行にしたがって、類似の方法で行われる。当業者に対しては、圧縮プロセスについての情報を使用して、前述の本発明の第２の実施形態の圧縮解除プロセスの実行と、本発明にしたがった方法を使用して他の圧縮および圧縮解除の多かれ少なかれ複雑なケースの実行に問題はない。
【００４８】
本発明の説明した実施形態では、入力データストリームが完了していないか否かをチェックするステップは詳細には説明されていない。これは通常の動作であり、当業者に良く知られているので、その説明を含めることは圧縮の説明の明白で容易な理解を邪魔するだけである。
【００４９】
本発明による方法を前述の本発明の実施形態により示し、説明したが、これは種々の可能な実行と本発明の技術的範囲を限定するものではない。
【００５０】
すなわち、例えば、本発明の説明した実施形態では、予測子テーブルは圧縮プロセスで更新されるが、圧縮されるデータの構造が既に知られているケースも可能であり、予測子テーブルを更新しない方法の実行はさらに効率的である。この場合、予測子テーブルの内容は予め準備され、圧縮プロセス中に更新されない。
【００５１】
さらに、予測子テーブルが前もって処理された内容を使用して圧縮プロセスの開始時に初期化され、さらに圧縮プロセス中に更新されるような別の方法が可能である。このような方法の変化は、圧縮されるデータの構造が部分的に知られているときに効率的である。
【００５２】
幾つかの予測子テーブルが使用されるとき、異なる予測子テーブルで異なる更新方法を適用することが可能である。このように方法の使用を組合わせることは種々の目的での本発明にしたがったデータ圧縮方法の応用を可能にする。本発明の前述の第２の実施形態では、予測子テーブルの更新中、予測子値はテーブル間で転送され、これは予測子テーブルのさらに頻繁に発生する値を記憶し、その値と処理された符号文字の比較が開始される。またこのような場合に、異なる方法の適用も可能であり、これは当業者が特定の目標を実現するために必然的にこれらを実行することに対して何等の問題も生じない。
【００５３】
さらに、本発明によれば、幾つかの異なるハッシュ関数が使用されることができ、その組合わせは圧縮される異なるタイプのデータに高い適合速度と良好な適合性を与える。結果として、これは高い圧縮率へ到達することを可能にする。
【００５４】
本発明の説明した実施形態では、プロセスのステップは連続して行われるが、ステップの少なくとも一部が並列して行われる方法を実行させることが可能である。例えば、処理されている現在の符号文字と幾つかの予測子との並列比較を行うことが可能であり、これはさらに高い圧縮速度を与えることを可能にする。
【００５５】
本発明による方法は他の方法とは別に、またはそれと共に使用されることができる。さらに、動作時間の高レベルの予測能力はこの方法の卓越した特性であり、即ち入力データストリームの符号文字にかかわりなく、その処理時間が予測可能であり、固定されることが可能である場合、その実行が可能である。
【図面の簡単な説明】
【００５６】
【図１】本発明の第１の最も簡単な実施形態にしたがったデータ構造を示す図。
【図２】本発明の第１の実施形態にしたがったデータ圧縮プロセスを示すブロック図。
【図３】本発明の第１の実施形態にしたがった符号文字シーケンスのサンプルの圧縮プロセスを示すフローチャート。
【図４】本発明の第１の実施形態にしたがったデータ圧縮解除プロセスを示すブロック図。
【図５】本発明の第２の実施形態にしたがったデータ構造を示す図。
【図６Ａ】本発明の第２の実施形態にしたがったデータ圧縮プロセスを示すブロック図。
【図６Ｂ】本発明の第２の実施形態にしたがったデータ圧縮プロセスを示すブロック図。
【図１】
2005521324.tif 000003
【図２】
2005521324.tif 000004
【図３】
2005521324.tif 000005
【図４】
2005521324.tif 000006
【図５】
2005521324.tif 000007
【図６Ａ】
2005521324.tif 000008
【図６Ｂ】
2005521324.tif 000009
【国際調査報告】
2005521324.tif 000010
2005521324.tif 000011
2005521324.tif 000012
2005521324.tif 000013