(57)【要約】【課題】エントロピー・エンコーディングのシステム・レベル・テストのための方法、システム、およびコンピュータ・プログラム製品を提供する。【解決手段】一態様は、入力シンボルおよびそれらに対応するコードワードを含んでいるシンボル変換テーブル（ＳＴＴ）を受信することを含む。異なる長さのそれぞれを有しているコードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ）も受信される。ＳＴＴおよびＥＥＤのうちの１つまたは両方の内容が、テスト・ケースを生成するように変更され、エントロピー・エンコーディング・テストが実行される。この実行することは、入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびにＳＴＴおよびＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行すること、またはコードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびにＳＴＴおよびＥＥＤの内容に基づいて、データ展開プロセスを実行することを含む。エントロピー・エンコーディング・テストの結果が、期待される結果と比較される。【選択図】図６
2019534602.tif 000002
【特許請求の範囲】
【請求項１】
入力シンボルおよび前記入力シンボルそれぞれに対応する一意のコードワードを含んでいるシンボル変換テーブル（ＳＴＴ）を受信することであって、前記コードワードのうちの少なくとも２つが異なる長さを有している、前記受信することと、
前記異なる長さのそれぞれを有している前記コードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ）を受信することと、
テスト・ケースを生成するように前記ＳＴＴおよび前記ＥＥＤのうちの１つまたは両方の内容を変更することと、
エントロピー・エンコーディング・テストを実行することであって、
前記エントロピー・エンコーディング・テストがデータ圧縮テストであることに基づき、前記入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行すること、ならびに
前記エントロピー・エンコーディング・テストがデータ展開テストであることに基づき、前記コードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、データ展開プロセスを実行すること
を含んでいる、前記実行することと、
前記エントロピー・エンコーディング・テストの結果を期待される結果と比較することと、
前記比較の結果をテスターに出力することと
を含んでいる、コンピュータ実装方法。
【請求項２】
前記ＳＴＴおよび前記ＥＥＤがハフマン・ツリーを表す、請求項１に記載の方法。
【請求項３】
前記ハフマン・ツリーを生成することと、
前記ハフマン・ツリーに基づいて前記ＳＴＴおよび前記ＥＥＤを生成することと
をさらに含んでいる、請求項２に記載の方法。
【請求項４】
前記内容を変更することが、前記ＥＥＤにおいて指定された前記異なる長さのうちの１つを、前記ＥＥＤによって指定された別の前記異なる長さと交換することを含んでいる、請求項１に記載の方法。
【請求項５】
前記内容を変更することが、単一の入力シンボルに対応する２つのコードワードを含むように前記ＳＴＴを更新することを含んでいる、請求項１に記載の方法。
【請求項６】
前記内容を変更することが、同じコードワードに対応する２つの入力信号を含むように前記ＳＴＴを更新することを含んでいる、請求項１に記載の方法。
【請求項７】
前記入力シンボルのうちの１つまたは複数が第２の可逆データ圧縮プロセスからの出力に対応する、請求項１に記載の方法。
【請求項８】
前記データ展開プロセスからの出力が、さらなる展開のために第２のデータ展開プロセスに送信される、請求項１に記載の方法。
【請求項９】
コンピュータ可読命令を含んでいるメモリと、
前記コンピュータ可読命令を実行するためのプロセッサと
を備えているシステムであって、前記コンピュータ可読命令が、
入力シンボルおよび前記入力シンボルそれぞれに対応する一意のコードワードを含んでいるシンボル変換テーブル（ＳＴＴ）を受信することであって、前記コードワードのうちの少なくとも２つが異なる長さを有している、前記受信することと、
前記異なる長さのそれぞれを有している前記コードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ）を受信することと、
テスト・ケースを生成するように前記ＳＴＴおよび前記ＥＥＤのうちの１つまたは両方の内容を変更することと、
エントロピー・エンコーディング・テストを実行することであって、
前記エントロピー・エンコーディング・テストがデータ圧縮テストであることに基づき、前記入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行すること、ならびに
前記エントロピー・エンコーディング・テストがデータ展開テストであることに基づき、前記コードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、データ展開プロセスを実行すること
を含んでいる、前記実行することと、
前記エントロピー・エンコーディング・テストの結果を期待される結果と比較することと、
前記比較の結果をテスターに出力することと
を含んでいる、システム。
【請求項１０】
前記ＳＴＴおよび前記ＥＥＤがハフマン・ツリーを表す、請求項９に記載のシステム。
【請求項１１】
前記命令が、
前記ハフマン・ツリーを生成することと、
前記ハフマン・ツリーに基づいて前記ＳＴＴおよび前記ＥＥＤを生成することと
をさらに含んでいる、請求項１０に記載のシステム。
【請求項１２】
前記内容を変更することが、前記ＥＥＤにおいて指定された前記異なる長さのうちの１つを、前記ＥＥＤによって指定された別の前記異なる長さと交換することを含んでいる、請求項９に記載のシステム。
【請求項１３】
前記内容を変更することが、単一の入力シンボルに対応する２つのコードワードを含むように前記ＳＴＴを更新することを含んでいる、請求項９に記載のシステム。
【請求項１４】
前記内容を変更することが、同じコードワードに対応する２つの入力信号を含むように前記ＳＴＴを更新することを含んでいる、請求項９に記載のシステム。
【請求項１５】
前記入力シンボルのうちの１つまたは複数が第２の可逆データ圧縮プロセスからの出力に対応する、請求項９に記載のシステム。
【請求項１６】
前記データ展開プロセスからの出力が、さらなる展開のために第２のデータ展開プロセスに送信される、請求項９に記載のシステム。
【請求項１７】
プログラム命令が具現化されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラム製品であって、前記プログラム命令が、処理回路に、
入力シンボルおよび前記入力シンボルそれぞれに対応する一意のコードワードを含んでいるシンボル変換テーブル（ＳＴＴ）を受信することであって、前記コードワードのうちの少なくとも２つが異なる長さを有している、前記受信することと、
前記異なる長さのそれぞれを有している前記コードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ）を受信することと、
テスト・ケースを生成するように前記ＳＴＴおよび前記ＥＥＤのうちの１つまたは両方の内容を変更することと、
エントロピー・エンコーディング・テストを実行することであって、
前記エントロピー・エンコーディング・テストがデータ圧縮テストであることに基づき、前記入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行すること、ならびに
前記エントロピー・エンコーディング・テストがデータ展開テストであることに基づき、前記コードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、データ展開プロセスを実行すること
を含んでいる、前記実行することと、
前記エントロピー・エンコーディング・テストの結果を期待される結果と比較することと、
前記比較の結果をテスターに出力することと
を実行させるように、前記処理回路によって実行可能である、コンピュータ・プログラム製品。
【請求項１８】
前記ＳＴＴおよび前記ＥＥＤがハフマン・ツリーを表す、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
前記プログラム命令が、処理回路に、
前記ハフマン・ツリーを生成することと、
前記ハフマン・ツリーに基づいて前記ＳＴＴおよび前記ＥＥＤを生成することと
を実行させるように、前記処理回路によってさらに実行可能である、請求項１８に記載のコンピュータ・プログラム製品。
【請求項２０】
前記入力シンボルのうちの１つまたは複数が第２の可逆データ圧縮プロセスからの出力に対応する、請求項１７に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・システムに関し、より詳細には、エントロピー・エンコーディングのシステム・レベル・テストに関する。
【背景技術】
【０００２】
信号処理において、データ圧縮は、情報の元の表現よりも少ないビットを使用するように情報をエンコードすることによって、データ・ファイルのサイズを縮小することを伴う。圧縮は、不可逆圧縮または可逆圧縮のいずれかを使用して実行される。可逆圧縮は、統計的冗長性を識別して除去することによってビット数を減らし、可逆圧縮が実行された場合、情報は失われない。これに対して、不可逆圧縮は、不要な情報またはあまり重要でない情報を削除することによってビット数を減らし、不可逆圧縮が実行された場合、それらのビットが失われる可能性がある。データ圧縮は、データを格納および送信するために必要なリソースを削減するため、有用である。圧縮プロセスにおいて、および通常は圧縮プロセスの反転（展開）において、計算リソースが消費される。データ圧縮方式の設計は、圧縮の程度、（不可逆データ圧縮を使用する場合に）導入される変形の量、およびデータの圧縮および展開に必要な計算リソースなどの、さまざまな要因間のトレードオフを伴う。
【０００３】
ハフマンおよびＬｅｍｐｅｌ−Ｚｉｖは、可逆圧縮アルゴリズムの２つのタイプである。ハフマン・エンコーディングは、一意の接頭符号を作成し、入力データ内に出現する一意の各シンボルに割り当てる、エントロピー・エンコーディングのタイプである。「エントロピー・エンコーディング」という用語は、データを格納している媒体の特定の特性に依存しない可逆データ圧縮方式を指すために使用される。ハフマン・エンコーディングは、入力データ内の固定長の各入力シンボルを対応する接頭符号に置き換えることによって、データを圧縮するために使用される。各接頭符号は長さが異なっており、入力データ内の最も多く共通しているシンボルに、最も短い符号が割り当てられる。ハフマン・エンコーディングの基本的な考え方は、短いコードワードを、出現する可能性が高い入力ブロックに割り当て、長いコードワードを、出現する可能性が低い入力ブロックに割り当てるということである。ハフマン符号の設計は、情報源の統計値が先験的に知られているということを仮定して、固定ブロック長に最適である。
【０００４】
Ｌｅｍｐｅｌ−Ｚｉｖ圧縮アルゴリズムは、可変長−固定長符号を実装するために使用される。Ｌｅｍｐｅｌ−Ｚｉｖの基本的な考え方は、データの入力シーケンスを解析して、長さの異なる重複していないブロックに変換しながら、それまでに現れたブロックの辞書を構築することである。入力データデータ内のシンボルの頻度に関する推定に依存するハフマン符号とは対照的に、Ｌｅｍｐｅｌ−Ｚｉｖ符号は、いずれかの特定の内容を含んでいる入力データのために設計されるのではなく、情報源の大規模な集合のために設計される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
エントロピー・エンコーディングのシステム・レベル・テストのための方法を提供する。
【課題を解決するための手段】
【０００６】
実施形態は、エントロピー・エンコーディングのシステム・レベル・テストのための方法、システム、およびコンピュータ・プログラム製品を含む。方法は、入力シンボルおよびそれらに対応するさまざまな長さの一意のコードワードを含んでいるシンボル変換テーブル（ＳＴＴ：symbol translation table）を受信することを含む。異なる長さのそれぞれを有しているコードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ：entropy encoding descriptor）も受信される。ＳＴＴおよびＥＥＤのうちの１つまたは両方の内容が、テスト・ケースを生成するように変更され、エントロピー・エンコーディング・テストが実行される。この実行することは、エントロピー・エンコーディング・テストがデータ圧縮テストであることに基づき、入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびにＳＴＴおよびＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行することと、エントロピー・エンコーディング・テストがデータ展開テストであることに基づき、コードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびにＳＴＴおよびＥＥＤの内容に基づいて、データ展開プロセスを実行することとを含む。エントロピー・エンコーディング・テストの結果は、期待される結果と比較され、比較の結果が出力される。
【０００７】
その他の特徴および長所が、本発明の手法によって実現される。本発明のその他の実施形態および態様は、本明細書において詳細に説明され、請求される発明の一部と見なされる。本発明を長所および特徴と共によく理解するために、説明および図面を参照されたい。
【０００８】
本発明と見なされる対象は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の前述およびその他の特徴、および長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【０００９】
【図１】１つまたは複数の実施形態に記載されている、エントロピー・エンコーディングのシステム・レベル・テストのためのシステムのブロック図である。
【図２】１つまたは複数の実施形態に記載されている、圧縮テストにおいて使用するためにエントロピー・エンコーディング記述子（ＥＥＤ）およびシンボル変換テーブル（ＳＴＴ）を生成するためのブロック図である。
【図３】１つまたは複数の実施形態に記載されている、完成されたハフマン・ツリーおよびハフマン符号を示す図である。
【図４】１つまたは複数の実施形態に記載されている、圧縮テストにおいて使用するためにＥＥＤおよびＳＴＴを生成するためのブロック図である。
【図５】１つまたは複数の実施形態に記載されている、入力データの二段圧縮を実行するためのフロー図である。
【図６】１つまたは複数の実施形態に記載されている、展開されたデータを生成するためのブロック図である。
【図７】１つまたは複数の実施形態に記載されている、圧縮されたデータの二段展開を実行するためのフロー図である。
【図８】１つまたは複数の実施形態に記載されている、エントロピー・エンコーディングのシステム・レベル・テストのためのコンピュータ・システムを示す図である。
【発明を実施するための形態】
【００１０】
本明細書に記載された実施形態は、二段階の圧縮を実装するコンピュータ・システムにおけるエントロピー・エンコーディングのシステム・レベル・テストを提供する。１つまたは複数の実施形態は、疑似ランダム・テスト生成を使用して二段圧縮プロセスおよびそれに対応する展開をテストする方法を提供する。二段圧縮／展開プロセスは、第１の段階としてＬｅｍｐｅｌ−Ｚｉｖタイプの符号、および第２の段階としてハフマン圧縮手法に基づくエントロピー符号を含むことができる。１つまたは複数の実施形態に従って、圧縮および展開は、エントロピー・エンコーディングをテストするための２つの主要なコンポーネントである。圧縮の場合、ハフマン・ツリーが、入力データに基づいて、可能性のあるすべての組み合わせに関して生成され、左詰めのコードワードを含むシンボル変換テーブル（ＳＴＴ）が構築される。加えて、ＳＳＴ内のビットの数（圧縮時に使用される）およびシンボルのインデックス作成に使用される入力ビットの数（展開時に使用される）の指示を含んでいる、ハフマン・ツリーを定義するエントロピー・エンコーディング記述子（ＥＥＤ）が生成される。１つまたは複数の実施形態に従って、ＳＴＴまたはＥＥＤあるいはその両方を操作することによって、無効なコードワードを含むさまざまなコードワードが構築される。このようにして、データ例外ケースを生成してテストすることがき、プロセスが、シンボルの最大長まで増大することができ、したがって、最大ハフマン・ツリーまで増大することができる。同様の方法を展開に使用することができ、その場合、ハフマン・ツリーが入力データに基づいて構築され、ＥＥＤが、シンボルのインデックス作成に使用される入力ビットの数を見つけるために使用される。１つまたは複数の実施形態に従って、エントロピー・エンコーディングのシステム・レベル・テストを実行するために、テスト対象のデバイスの既存の圧縮符号および展開符号に対して、最小限の変更が必要である。以前に生成されたＳＴＴおよびＥＥＤを操作することによって、新しいハフマン・ツリーを構築することを必要とせずに、エントロピー・エンコーディングのシステム・レベル・テストのための多くの派生テスト・ケースを生成できる。
【００１１】
ここで図１を参照すると、１つまたは複数の実施形態に従って、エントロピー・エンコーディングのシステム・レベル・テストのためのシステムのブロック図１００が概略的に示されている。図１のブロック図１００は、システム・レベルのエントロピー・エンコーディング・テストを実行するために、テスト対象のデバイス１０４およびシミュレータ１０８に入力されるテスト・データ１０２を含んでいる。デバイスのテスト結果１０６がテスト対象のデバイス１０４から出力され、シミュレータのテスト結果１１０がシミュレータ１０８から出力されて、比較論理１１２に入力される。比較の結果が、テスト結果１１４として出力される。１つまたは複数の実施形態では、テスト・データ１０２は、圧縮または展開される入力文字列、ＳＴＴ、ＥＥＤを含む。テスト対象のデバイス１０４は、ＩＢＭのＳｙｓｔｅｍ  ｚ（Ｒ）などの、ただしこれに限定されない、任意のハフマン・タイプの符号をデータ圧縮に使用するコンピュータ・システムを含むことができる。テスト結果１１４は、デバイスのテスト結果１０６がシミュレータのテスト結果１１０（すなわち、期待されるテスト結果）に一致するかどうかを示すことができる。加えて、テスト結果１１４は、デバイスのテスト結果１０６とシミュレータのテスト結果１１０の間の差異を示すことができ、入力文字列、ＥＥＤ、またはＳＴＴ、あるいはその組み合わせに対する推奨される変更を含む追加テキストを実行するように、推奨することができる。
【００１２】
ここで図２を参照すると、１つまたは複数の実施形態に従って、データ圧縮の場合にＥＥＤおよびＳＴＴを生成するためのブロック図２００が概略的に示されている。入力Ａ２０２は、入力データ文字列の可能性のあるすべてのシンボルを含んでいる。例えば、入力データがテキストである場合、入力Ａ２０２は、アルファベット（例えば、Ａ〜Ｚ）に含まれるすべての文字および句読点のシンボルを含むことができる。１つまたは複数の実施形態では、可能性のあるすべてのシンボルに基づいてツリーを構築することによって、ハフマン・ツリー２０４が生成される。１つまたは複数の実施形態では、ハフマン・ツリー２０４は、システム・アーキテクチャに応じて、２１３（８，１９２）という多くの葉になる可能性がある。ＥＥＤ２０６およびＳＴＴ２０８は、ハフマン・ツリー２０４の内容に基づいて構築される。１つまたは複数の実施形態では、ＳＴＴ２０８は、左詰めのコードワードを含み、ＳＴＴ内の各エントリは、可能性のある各シンボルを定義する１６ビット・フィールドを含む。１つまたは複数の実施形態では、ＥＥＤ２０６は、ハフマン・ツリー２０４内の各長さの葉の数を指定する１６ビットの要素を含む。葉の数は、コードワードの長さ（ビットの数）と同じである。したがって、ＥＥＤ２０６を使用して、（圧縮の場合に）使用されるＳＴＴ２０８内のビットの数および（展開の場合に）シンボルのインデックス作成に使用される入力ビットの数を示すことができる。図２にも示されているように、入力Ｂ２１０は、Ｌｅｍｐｅｌ−Ｚｉｖ圧縮を使用して圧縮されている入力データに含まれているシンボルを含んでいる入力Ａ２０２のサブセットである。辞書２１２は、入力データ文字列に含まれているシンボルに基づいて、Ｌｅｍｐｅｌ−Ｚｉｖ圧縮プロセスによって構築される。図２に示されるように、ＥＥＤ２０６およびＳＴＴ２０８は、辞書２１２の末尾に連結される。
【００１３】
１つまたは複数の実施形態に従って、ＥＥＤ２０６は、ハフマン・ツリーを定義し、辞書２１２の末尾にある３２バイト・フィールドによって実装される。加えて、ＳＴＴ２０８がＥＥＤ２０６の末尾にあり、ＳＳＴ２０８内の各エントリは、各シンボルを定義する１６ビット・フィールドである。１つまたは複数の実施形態に従って、ＥＥＤ２０６およびＳＴＴ２０８の構築および使用は、二段圧縮機能のテストの一部である。特定のハフマン・ツリーから有効なＥＥＤ２０６が構築された後に、ＥＥＤ２０６のアーキテクチャを有効に保ちながら、ＥＥＤ２０６の内容を再配置することができる。例えば、ＥＥＤ２０６の２つ以上のエントリを交換することができ、そうすることによって、仮想ハフマン・ツリー（virtual Huffman tree）が作成され、新しいテスト・ケースの生成に使用され得る。同様に、一意のシンボルを表すＳＴＴ２０８内の各エントリの代わりに、複数のエントリを、同じ値を持つように、したがって、データのパターンを作成するように、変更することができる。行うことができる変更の別の例は、例外を引き起こすために、ＥＥＤの有効なエントリをインクリメントまたはデクリメントできることである。各エントリが変更されている間に、エントリの特定の対の合計が同じままであるように、それらのエントリの値が変更されてよい。
【００１４】
ここで図３を参照すると、１つまたは複数の実施形態に従って、完成されたハフマン・ツリーおよびハフマン符号３００が概略的に示されている。完成されたハフマン・ツリーおよびハフマン符号３００は、ハフマン・ツリー３０２、入力データ文字列内のシンボル３０４のリスト、各シンボルの頻度３０６、および各シンボル３０４に関連付けられたコードワード３０８を含んでいる。図３のハフマン・ツリー３０２の例は、入力データ文字列「ｔｏｄａｙ  ｗｅ  ａｒｅ  ｔａｌｋｉｎｇ  ａｂｏｕｔ  ｈｕｆｆｍａｎ  ａｌｇｏｒｉｔｈｍ」に基づいて構築されている。入力データ文字列は４４の入力データ長を有しており、各シンボル３０４は、図３に示されている対応する頻度３０６を有している。一意のシンボル（または文字）は、頻度に基づいて並べ替えられ、左の最も頻度の高いシンボル３０４（６の頻度を有する「−」または「スペース」および「ａ」）から開始し、右で、最も頻度の低いシンボル３０４（１の頻度を有する「ｗ」、「ｋ」、「ｙ」、「ｂ」、および「ｄ」）で終了している。ハフマン・ツリー３０２の最下位の葉は、各シンボル３０４に対応している。
【００１５】
図３に示されているハフマン・ツリー３０２の構築は、第１の２つの最小頻度（１の頻度を有する「ｂ」および１の頻度を有する「ｄ」）を、２の頻度を有するノード３１０にマージすることを含むことができる。第２の２つの最小頻度のノード（１の頻度を有する「ｋ」および１の頻度を有する「ｙ」）も、２の頻度を有するノード３１２にマージされる。第３の最小頻度のノード（１の頻度を有する「ｗ」および２の頻度を有する「ｍ」）は、３の頻度を有するノード３１４にマージされる。第４の最小頻度のノード（２の頻度を有するノード３１０および２の頻度を有するノード３１２）は、４の頻度を有するノード３１６にマージされる。最小頻度のノードを結合するこのプロセスが続行されて、図３に示されているハフマン・ツリー３０２が得られる。図３に示されている例では、「０」のコードワードのビットが、ノードの左にある葉に割り当てられ、「１」のビットが、ノードの右にある葉に割り当てられる。ハフマン・ツリーの最上位からシンボル「−」（またはスペース）までのパス３１８内の葉の数は、３である。したがって、シンボル「−」に関連付けられたコードワードの長さは３であり、この例では、割り当てられるコードワードは「０００」である。シンボル３０４がコードワード３０８に置き換えられた後の、圧縮されたサイズは、２５である。１つまたは複数の実施形態では、左に分岐するときに０の符号が割り当てられ、右に分岐するときに１の符号が割り当てられる。
【００１６】
１つまたは複数の実施形態に従って、入力データ内の各シンボル３０４（または文字）は、ビットの列（またはコードワード３０８）を使用することによってエンコードされ、コードワード３０８が連結されて、圧縮されたデータを生成する。シンボル３０４の頻度が高いほど、符号の長さが短くなる（すなわち、対応するコードワード３０８のビット数が少なくなる）。ハフマン・ツリー３０２は、接頭符号ツリーの一例である。これは、受信側が、シンボルの末尾が存在するときに、ハフマン・ツリー３０２内の有効なコードワード３０８が存在しないために、特殊なマーカーがなくても、ハフマン・ツリー３０２内のいずれかの他の有効なコードワードの接頭符号（開始）であることを見分けることができるからである。
【００１７】
１つまたは複数の実施形態に従って、図３に示されているハフマン・ツリー３０２に対応するＳＴＴは、以下のエントリを含むことができる。
【００１８】
【表１】
2019534602.tif 000003
【００１９】
１つまたは複数の実施形態に従って、図３に示されているハフマン・ツリー３０２に対応するＥＥＤは、１または２あるいは６〜１６の長さのコードワードに対応しているシンボルがなく、１個のシンボルが３の長さのコードワードに対応しており、１０個のシンボルが４の長さのコードワードに対応しており、８個のシンボルが５の長さのコードワードに対応していることを示すように、以下のエントリを含むことができる。
【００２０】
【表２】
2019534602.tif 000004
【００２１】
ここで図４を参照すると、１つまたは複数の実施形態に従って、データ圧縮の場合にＥＥＤおよびＳＴＴを生成するためのブロック図４００が概略的に示されている。図４に示されているように、ＥＥＤ４０６およびＳＴＴ４０８は、Ｌｅｍｐｅｌ−Ｚｉｖ圧縮などの第１の段階の圧縮からの可能性のある出力に基づいて構築される。入力４０２は、第１の段階の圧縮の可能性のある出力を含んでいる。辞書４０４は、第１の段階の圧縮に基づいて構築される。
【００２２】
１つまたは複数の実施形態に従って、第１の段階の圧縮は、すべてのシンボル（または１の長さの文字列）を含むように辞書４０４を初期化することと、現在の入力に一致する辞書内の最長の文字列「Ｗ」を検索することと、Ｗの辞書インデックスを出力に発行して、入力からＷを削除することと、入力内の次のシンボルが続くＷを辞書４０４に追加することと、入力データ内のすべてのシンボルについて検索、発行、および追加を繰り返すこととを含む、Ｌｅｍｐｅｌ−Ｚｉｖエンコーディング・アルゴリズムである。このようにして、すべての可能性のある入力文字に対応する単一文字の文字列を含むように、辞書４０４を初期化することができ、このアルゴリズムは、辞書４０４内にない部分文字列を検出するまで、連続的に長くなる部分文字列に関して入力文字列をスキャンすることによって、機能する。そのような文字列が検出された場合、最後の文字を含まない文字列（すなわち、辞書４０４内にある最長の部分文字列）のインデックスが辞書４０４から取り出され、出力に送信され、新しい文字列（最後の文字を含む）が、次に利用可能な符号と共に辞書４０４に追加される。その後、最後の入力文字が、部分文字列をスキャンするための次の開始点として使用される。このようにして、連続的に長くなる文字列が辞書４０４に登録され、単一の出力値としてその後のエンコーディングに利用できるようなる。このアルゴリズムは、繰返しパターンを含むデータに対して最も良く機能するため、メッセージの初期部分の圧縮は小さいが、メッセージが長くなるにつれて、圧縮率が増加する。
【００２３】
図４に示されている実施形態では、辞書４０４を使用することによって生成された（すなわち、第１の段階の圧縮が完了した後の）シンボルが、ハフマン・ツリーを生成するために使用される。この実施形態では、「ａｂｃ」の入力文字列が、「１０１０１０」としてＬｅｍｐｅｌ−Ｚｉｖアルゴリズムから出力されてよく、この出力が、ハフマン・ツリー４１０を構築するためのシンボルとして入力される。その後、ハフマン・アルゴリズムは、「００１０」のコードワードを割り当ててよい。したがって、入力データ文字列内の３つのシンボルを含んでいる「ａｂｃ」の入力文字列は、第１および第２の段階の圧縮プロセスによって、コードワード「００１０」に圧縮されてよい。ＥＥＤ４０６およびＳＴＴ４０８は、ハフマン・ツリー４１０の内容に基づいて生成され、辞書４０４の末尾に追加される。
【００２４】
ここで図５を参照すると、１つまたは複数の実施形態に従って、入力データの二段圧縮を実行するためのフロー図５００が概略的に示されている。図５に示されているフロー図５００は、単一のシンボルに対して実行することができ、プロセスは、入力データ文字列内のシンボルごとに、ブロック５０２から５１０までのフロー全体をループする。代替として、図５に示されているフロー図５００内の各ブロックは、シンボルの文字列またはシンボルのページなどの、入力シンボルのグループに対して実行することができる。ブロック５０２で、入力データが受信される（入力シンボルのグループまたは単一の入力シンボルのいずれか）。ブロック５０４で、ＩＢＭ  Ｓｙｓｔｅｍ  ｚ（Ｒ）の圧縮呼び出し命令（ＣＭＰＳＣ）または同様の圧縮方法が発行され、第１の段階の圧縮（１つまたは複数の実施形態では、Ｌｅｍｐｅｌ−Ｚｉｖ圧縮）を実行する。Ｌｅｍｐｅｌ−Ｚｉｖ圧縮からの出力５０６（圧縮されたシンボルまたはシンボルのグループ）は、第２の段階の圧縮（１つまたは複数の実施形態では、ハフマン圧縮アルゴリズム）への入力として使用される。ブロック５０８で、以前に生成されたＳＴＴを使用して一意のコードワードが入力シンボルに割り当てられ、ブロック５１０で、エントロピー・エンコードされて圧縮されたデータが出力される。
【００２５】
ここで図６を参照すると、１つまたは複数の実施形態に従って、展開されデータを生成するためのブロック図６００が概略的に示されている。図６に示されているように、圧縮されたデータを含んでいる入力データ６０２が、例えばコードワードの形態で、コードワードを対応するシンボルに置き換えるためにハフマン展開アルゴリズム６０４に入力される。二段階の圧縮が実装される１つまたは複数の実施形態では、ハフマン展開アルゴリズム６０４から出力されるシンボルは、Ｌｅｍｐｅｌ−Ｚｉｖ展開アルゴリズムなどの第２の展開アルゴリズムによって展開される必要がある圧縮されたデータ６０６である。圧縮されたデータをＥＥＤと共に使用することによって、辞書に対してインデックスを生成する。図６に示されているように、この生成は、圧縮されたデータ６０６が表す元の圧縮されていないシンボル（または文字）を決定するように、辞書６０８にインデックスを作成することによって実行できる。
【００２６】
ここで図７を参照すると、１つまたは複数の実施形態に従って、圧縮されたデータの二段展開を実行するためのフロー図７００が概略的に示されている。図７に示されているフロー図７００は、単一のコードワードに対して実行することができ、プロセスは、入力データ文字列内の圧縮されたコードワードごとに、ブロック７０２から７０８までのフロー全体をループする。代替として、図７に示されているフロー図７００内の各ブロックは、コードワードの文字列またはコードワードのページなどの、入力シンボルのグループに対して実行することができる。ブロック７０２で、入力データが受信される（圧縮されたコードワードのグループまたは単一の圧縮されたコードワードのいずれか）。ブロック７０４で、コードワードに対応する（例えば、Ｌｅｍｐｅｌ−Ｚｉｖアルゴリズムによって生成された）辞書内のインデックスを検索するために、ＥＥＤがアクセスされる。ブロック７０６で、このインデックスがＣＭＰＳＣに入力され、ＣＭＰＳＣが、辞書のインデックスに対応する展開されたデータ７０８を出力する。
【００２７】
ここで図８を参照すると、１つまたは複数の実施形態に従って、エントロピー・エンコーディングのシステム・レベル・テストのためのコンピュータ・システムが概略的に示されている。本明細書に記載された方法は、ハードウェア、ソフトウェア（例えばファームウェア）、またはハードウェアとソフトウェアの組み合わせにおいて実装され得る。実施形態例では、本明細書に記載された方法は、パーソナル・コンピュータ、ワークステーション、マイクロコンピュータ、またはメインフレーム・コンピュータなどの、専用または汎用デジタル・コンピュータのマイクロプロセッサの一部としてハードウェアにおいて実装される。したがって、システム８００は、Ｏ／Ｓの複数のインスタンスを同時に実行できる汎用コンピュータまたはメインフレーム８０１を含んでよい。
【００２８】
実施形態例では、ハードウェア・アーキテクチャに関して図８に示されているように、コンピュータ８０１は、１つまたは複数のプロセッサ８０５、メモリ・コントローラ８１５に接続されたメモリ８１０、ならびにローカル入出力コントローラ８３５を介して通信によって結合された１つまたは複数の入力または出力あるいはその両方の（Ｉ／Ｏ）デバイス８４０、８４５（または周辺機器）を含む。入出力コントローラ８３５は、例えば、１つまたは複数のバスあるいは従来技術において知られたその他の有線接続または無線接続であることができるが、これらに限定されない。入出力コントローラ８３５は、簡単にするために省略されている、通信を可能にするためのコントローラ、バッファ（キャッシュ）、ドライバ、リピータ、およびレシーバなどのその他の要素を含むことができる。さらに、ローカル・インターフェイスは、前述のコンポーネント間の適切な通信を可能にするために、アドレス、制御、またはデータ接続、あるいはその組み合わせを含んでよい。入出力コントローラ８３５は、出力デバイス８４０および８４５にアクセスするように構成された複数のサブチャネルを含んでよい。サブチャネルは、光ファイバ通信ポートを含んでよい。
【００２９】
プロセッサ８０５は、ソフトウェア、具体的には、キャッシュ・ストレージまたはメモリ８１０などの、ストレージ８２０に格納されたソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ８０５は、カスタムメイドであるか、あるいは市販されたプロセッサ、中央処理装置（ＣＰＵ）、コンピュータ８０１に関連付けられた複数のプロセッサ間の補助プロセッサ、（マイクロチップまたはチップ・セットの形態での）半導体ベースのマイクロプロセッサ、マクロプロセッサ、または一般的に、命令を実行するための任意のデバイスであることができる。
【００３０】
メモリ８１０は、揮発性メモリ素子（例えば、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどのランダム・アクセス・メモリ（ＲＡＭ））および不揮発性メモリ素子（例えば、ＲＯＭ、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電子的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、テープ、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、ディスク、フロッピー・ディスク、カートリッジ、カセットなど）のうちのいずれか１つまたは組み合わせを含むことができる。さらに、メモリ８１０は電子、磁気、光、またはその他の種類のストレージ媒体、あるいはその組み合わせを組み込んでよい。メモリ８１０が、さまざまなコンポーネントが互いに遠く離れた位置にあるが、プロセッサ８０５によってアクセスされ得る、分散アーキテクチャを含むことができるということに注意する。
【００３１】
メモリ８１０内の命令は、１つまたは複数の別々のプログラムを含むことができ、それらの各プログラムは、論理的機能を実装するための実行可能命令の順序付けられたリストを含む。図８の例では、メモリ８１０内の命令は、適切なオペレーティング・システム（ＯＳ）８１１を含む。オペレーティング・システム８１１は、基本的に他のコンピュータ・プログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータの管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。
【００３２】
メモリ８１０は、複数論理パーティション（ＬＰＡＲ）８１２を含んでよく、各論理パーティションがオペレーティング・システムのインスタンスを実行する。ＬＰＡＲ８１２はハイパーバイザによって管理されてよく、このハイパーバイザは、メモリ８１０に格納されて、プロセッサ８０５によって実行されるプログラムであってよい。
【００３３】
実施形態例では、従来のキーボード８５０およびマウス８５５が、入出力コントローラ８３５に接続され得る。Ｉ／Ｏデバイス８４０、８４５などのその他の出力デバイスは、例えば、プリンタ、スキャナ、マイクロホンなどの入力デバイスを含んでよいが、これらに限定されない。最後に、Ｉ／Ｏデバイス８４０、８４５は、例えば、ネットワーク・インターフェイス・カード（ＮＩＣ）または変調器／復調器（他のファイル、デバイス、システム、またはネットワークにアクセスするため）、無線周波（ＲＦ）またはその他のトランシーバ、電話インターフェイス、ブリッジ、ルータなどの、ただしこれらに限定されない、入力および出力の両方と通信するデバイスをさらに含んでよい。システム８００は、ディスプレイ８３０に接続されたディスプレイ・コントローラ８２５をさらに含むことができる。実施形態例では、システム８００は、ネットワーク８６５に接続するためのネットワーク・インターフェイス８６０をさらに含むことができる。ネットワーク８６５は、コンピュータ８０１と、外部サーバ、クライアントなどとの間での、ブロードバンド接続を介した通信用のＩＰベースのネットワークであり得る。ネットワーク８６５は、コンピュータ８０１と外部システムの間で、データを送受信する。実施形態例では、ネットワーク８６５は、サービス・プロバイダによって管理された管理ＩＰネットワークであり得る。ネットワーク８６５は、例えば、ＷｉＦｉ、ＷｉｎＭａｘなどの無線プロトコルおよび無線技術を使用して、無線方式で実装されてよい。ネットワーク８６５は、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット・ネットワーク、またはその他の類似する種類のネットワーク環境などの、パケット交換ネットワークであることもある。ネットワーク８６５は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク（ＬＡＮ）、無線広域ネットワーク（ＷＡＮ）、パーソナル・エリア・ネットワーク（ＰＡＮ）、仮想プライベート・ネットワーク（ＶＰＮ）、インターネット、またはその他の適切なネットワーク・システムであってよく、信号を送受信するための機器を含む。
【００３４】
コンピュータ８０１がＰＣ、ワークステーション、インテリジェント・デバイスなどである場合、メモリ８１０内の命令は、基本入出力システム（ＢＩＯＳ）（簡単にするために省略されている）をさらに含んでよい。ＢＩＯＳは、起動時にハードウェアを初期化してテストし、ＯＳ８１１を起動し、ハードウェア・デバイス間でデータの転送をサポートする、基本的なソフトウェア・ルーチンのセットである。ＢＩＯＳは、コンピュータ８０１が起動されたときにＢＩＯＳを実行できるように、ＲＯＭに格納される。
【００３５】
コンピュータ８０１が動作中であるときに、プロセッサ８０５は、メモリ８１０内に格納された命令を実行することと、データをメモリ８１０との間で通信することと、命令に従ってコンピュータ８０１の動作を全体的に制御することとを実行するように構成される。
【００３６】
実施形態例では、本明細書に記載された方法は、データ信号上で論理機能を実装するための論理ゲートを含んでいる個別の論理回路、適切な組み合わせ論理ゲートを含んでいる特定用途向け集積回路（ＡＳＩＣ）、プログラマブル・ゲート・アレイ（ＰＧＡ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの、それぞれ従来技術においてよく知られている、技術のいずれかまたは組み合わせを使用して実装され得る。
【００３７】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図していない。本明細書で使用される単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上特に明示的に示されない限り、複数形も含むことが意図されている。「備える（ｃｏｍｐｒｉｓｅ）」または「備えている（ｃｏｍｐｒｉｓｉｎｇ）」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、処理、要素、またはコンポーネント、あるいはその組み合わせの存在を示すが、１つまたは複数のその他の機能、整数、ステップ、処理、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【００３８】
下の特許請求の範囲内のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等物は、具体的に請求されるその他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。本発明の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態での発明に限定されない。本発明の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本発明の原理および実際的な適用を最も適切に説明するため、およびその他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態に関して、本発明を理解できるようにするために、実施形態が選択されて説明された。
【００３９】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【００４０】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されているコンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【００４１】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【００４２】
本発明の処理を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００４３】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００４４】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００４５】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ実装プロセスを生成すべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【００４６】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および処理を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【００４７】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【図１】
2019534602.tif 000005
【図２】
2019534602.tif 000006
【図３】
2019534602.tif 000007
【図４】
2019534602.tif 000008
【図５】
2019534602.tif 000009
【図６】
2019534602.tif 000010
【図７】
2019534602.tif 000011
【図８】
2019534602.tif 000012
【手続補正書】
【提出日】平成31年4月25日(2019.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力シンボルおよび前記入力シンボルそれぞれに対応する一意のコードワードを含んでいるシンボル変換テーブル（ＳＴＴ）を受信することであって、前記コードワードのうちの少なくとも２つが異なる長さを有している、前記受信することと、
前記異なる長さのそれぞれを有している前記コードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ）を受信することと、
テスト・ケースを生成するように前記ＳＴＴおよび前記ＥＥＤのうちの１つまたは両方の内容を変更することと、
エントロピー・エンコーディング・テストを実行することであって、
前記エントロピー・エンコーディング・テストがデータ圧縮テストであることに基づき、前記入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行すること、ならびに
前記エントロピー・エンコーディング・テストがデータ展開テストであることに基づき、前記コードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、データ展開プロセスを実行すること
を含んでいる、前記実行することと、
前記エントロピー・エンコーディング・テストの結果を期待される結果と比較することと、
前記比較の結果をテスターに出力することと
を含んでいる、コンピュータ実装方法。
【請求項２】
前記ＳＴＴおよび前記ＥＥＤがハフマン・ツリーを表す、請求項１に記載の方法。
【請求項３】
前記ハフマン・ツリーを生成することと、
前記ハフマン・ツリーに基づいて前記ＳＴＴおよび前記ＥＥＤを生成することと
をさらに含んでいる、請求項２に記載の方法。
【請求項４】
前記内容を変更することが、前記ＥＥＤにおいて指定された前記異なる長さのうちの１つを、前記ＥＥＤによって指定された別の前記異なる長さと交換することを含んでいる、請求項１に記載の方法。
【請求項５】
前記内容を変更することが、単一の入力シンボルに対応する２つのコードワードを含むように前記ＳＴＴを更新することを含んでいる、請求項１に記載の方法。
【請求項６】
前記内容を変更することが、同じコードワードに対応する２つの入力信号を含むように前記ＳＴＴを更新することを含んでいる、請求項１に記載の方法。
【請求項７】
前記入力シンボルのうちの１つまたは複数が第２の可逆データ圧縮プロセスからの出力に対応する、請求項１に記載の方法。
【請求項８】
前記データ展開プロセスからの出力が、さらなる展開のために第２のデータ展開プロセスに送信される、請求項１に記載の方法。
【請求項９】
コンピュータ可読命令を含んでいるメモリと、
前記コンピュータ可読命令を実行するためのプロセッサと
を備えているシステムであって、前記コンピュータ可読命令が、
入力シンボルおよび前記入力シンボルそれぞれに対応する一意のコードワードを含んでいるシンボル変換テーブル（ＳＴＴ）を受信することであって、前記コードワードのうちの少なくとも２つが異なる長さを有している、前記受信することと、
前記異なる長さのそれぞれを有している前記コードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ）を受信することと、
テスト・ケースを生成するように前記ＳＴＴおよび前記ＥＥＤのうちの１つまたは両方の内容を変更することと、
エントロピー・エンコーディング・テストを実行することであって、
前記エントロピー・エンコーディング・テストがデータ圧縮テストであることに基づき、前記入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行すること、ならびに
前記エントロピー・エンコーディング・テストがデータ展開テストであることに基づき、前記コードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、データ展開プロセスを実行すること
を含んでいる、前記実行することと、
前記エントロピー・エンコーディング・テストの結果を期待される結果と比較することと、
前記比較の結果をテスターに出力することと
を含んでいる、システム。
【請求項１０】
プロセッサに、
入力シンボルおよび前記入力シンボルそれぞれに対応する一意のコードワードを含んでいるシンボル変換テーブル（ＳＴＴ）を受信することであって、前記コードワードのうちの少なくとも２つが異なる長さを有している、前記受信することと、
前記異なる長さのそれぞれを有している前記コードワードの数を指定するエントロピー・エンコーディング記述子（ＥＥＤ）を受信することと、
テスト・ケースを生成するように前記ＳＴＴおよび前記ＥＥＤのうちの１つまたは両方の内容を変更することと、
エントロピー・エンコーディング・テストを実行することであって、
前記エントロピー・エンコーディング・テストがデータ圧縮テストであることに基づき、前記入力シンボルのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、可逆データ圧縮プロセスを実行すること、ならびに
前記エントロピー・エンコーディング・テストがデータ展開テストであることに基づき、前記コードワードのうちの１つまたは複数を含んでいる入力データ文字列の内容、ならびに前記ＳＴＴおよび前記ＥＥＤの内容に基づいて、データ展開プロセスを実行すること
を含んでいる、前記実行することと、
前記エントロピー・エンコーディング・テストの結果を期待される結果と比較することと、
前記比較の結果をテスターに出力することと
を実行させるためのコンピュータ・プログラム。
【国際調査報告】
2019534602.tif 000013