(57)【要約】  暗号化／復号又は圧縮／解凍、あるいはその両方を含む目的のために、ランダムであるか否かに関わらず、データをロスレス且つ正確なエンコーディング及びデコーディングの方式で処理するためのフレームワーク及び関連方法、スキーマ及び設計である。処理前に処理されるべきデジタル情報の仮定はない。ユニバーサルコーデックが発明され、その結果、鳩ノ巣がブラックホールに合う。【特許請求の範囲】
【請求項１】
ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、コード単位で構成され、前記コード単位は、デジタルデータセットの２進数ビットのビットコンテナの基本ユニットとして使用され、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、コード単位は、主にコード単位が収容又は表現するように定義されるデータ値の最大可能数（コード単位の値サイズ）によって分類され、ここでコード単位の各可能な固有値が同じビットサイズ又は異なるビットサイズを持つ可能性があり、且つコード単位は、後にコード単位の全ての可能な固有データ値が占めるビット数（即ち、コード単位の各可能な固有データ値が占めるビットサイズの合計）によって分類され、且つコード単位はヘッドデザイン（即ちそれが０ヘッドデザインであるか１ヘッドデザインであるか）によってさらに分類され、各実施形態によれば、ＣＨＡＮフレームワーク下で特定の値サイズのコード単位が異なる定義及びバージョンを有することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
【請求項２】
ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、処理ユニットで構成され、前記処理ユニットが、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、サブユニットとして一定数のコード単位によって構成されることを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
【請求項３】
ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、スーパー処理ユニットで構成され、前記スーパー処理ユニットが、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、サブユニットとして一定数の処理ユニットによって構成されることを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
【請求項４】
ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、エンコーディングされていないコード単位で構成され、前記エンコーディングされていないコード単位が一定数の２進数ビットで構成され、これらの２進数ビットが、１つの処理ユニットのサイズにならないため、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、エンコーディングされていないコードに保持するか又はそのまま保持することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
【請求項５】
ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、エンコーディングされていないコード単位で構成され、前記エンコーディングされていないコード単位が一定数の２進数ビットで構成され、これらの２進数ビットが、１つの処理ユニットのサイズにならないため、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、エンコーディングされていないコードに保持するか又はそのまま保持することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
【請求項６】
ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、コード単位、処理ユニット、スーパー処理ユニット及びエンコーディングされていないコード単位及びそれらの使用での組み合わせから派生された特性又は特徴又は関係で構成されることを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
【請求項７】
任意のデジタルデータセットの特性又は特徴又は関係を記述するために使用される記述言語は、コード単位、処理ユニット、スーパー処理ユニット、及びエンコーディングされていないコード単位の特性又は特徴又は関係を記述するための用語を使用することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
【請求項８】
ＣＨＡＮフレームワーク下でエンコーディング及びデコーディングを目的としてデータを処理するための技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項９】
ＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成されたＣＨＡＮコードを特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１０】
範囲を有する絶対アドレス分岐技術を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１１】
ＣＨＡＮフレームワーク下で作成されたデータ順序の処理ユニットのコード単位間の関係を表すための数式を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１２】
数式で表される値又はエンコーディングされたコード、及びコード単位、処理ユニット、スーパー処理ユニット、及びエンコーディングされていないコード単位のそれらの値又はエンコーディングされたコードを異なる位置で順に配置する配置技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１３】
０ヘッドデザイン又は１ヘッドデザイン又はその両方をペアリングするビットパターンを代表する設計で、エンコーディング及びデコーディングの目的で処理のためにデータ値を分類又はグループ化するために使用される、処理中のデジタルデータの特性又は特徴に割り当てる分類技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１４】
エンコーディング及びデコーディングの目的で処理のためにデータ値を分類又はグループ化するための処理中のデジタルデータのデータ値の順序付け及び位置に関する特性又は特徴を使用する分類技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１５】
エンコーディング及びデコーディングの目的でデジタルデータセットを処理するためにコード交換、コード再割り当て、及びコード再記入を含む技術のいずれか１つを使用することによって、固有データ値及び固有アドレスコードを分類スキームの１つのクラスから別のクラスへ再割り当てするコード再割り当てを使用する分類技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１６】
エンコーディング及びデコーディングの目的で処理するためにコード昇格、コード降格、コード省略、及びコード復元を含む技術のいずれか１つを含むコード調整技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１７】
エンコーディング及びデコーディングの目的で処理するために終了条件又は終了値を使用して処理ユニット又はスーパー処理ユニットのサイズを定義する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１８】
デジタルデータ値又はエンコーディングされたコード値のリーダーとしてコード単位定義を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項１９】
デジタルデータ値又はエンコーディングされたコード値のライターとしてコード単位定義を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項２０】
エンコーディング及びデコーディングの目的で処理するためにスーパー処理ユニットを使用して少なくとも１つのサブセクションがランダムではないデータのサブセクションにデジタルデータセットを細分化する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項２１】
特定のクラスのスーパー処理ユニットに現れる値エントリの数等の分類条件を使用して、デジタルデータセットのスーパー処理ユニットを２つ以上のクラスにさらに分類することにより、エンコーディング及びデコーディングするためにこれらのクラスの各データ割り当てに適したマッピングテーブルを設計することにより、これらのスーパー処理ユニットの各データ値のデータ割り当てに適したそれぞれのマッピングテーブルを使用することによりこれらのスーパー処理ユニットの各データ値をエンコーディング及びデコーディングし、デコーディングするためにこれらのクラスのスーパー処理ユニットを区別するためにインジケータを使用し、そのようなインジケータはこれらのスーパー処理ユニットのそれぞれのヘッダー又は単独したＣＨＡＮコードファイルのように他の場所に格納されることを特徴とする請求項２０に記載の方法。
【請求項２２】
特定のクラスのスーパー処理ユニットに現れる値エントリの数等の分類条件を使用して、デジタルデータセットのスーパー処理ユニットを２つ以上のクラスにさらに分類することにより、且つエンコーディング及びデコーディングするためにこれらのクラスの各データ割り当てに適したマッピングテーブルを設計し、これらのスーパー処理ユニットの各データ値のデータ割り当てに適したそれぞれのマッピングテーブルを使用することによりこれらのスーパー処理ユニットの各データ値をエンコーディング及びデコーディングし、そしてスーパー処理ユニットのクラスのデータ割り当てに適した基準及びエンコーディング及びデコーディング用の対応するマッピングテーブルを設定することにより、インジケータの使用が省略できるように、人工知能によるスーパー処理ユニットのクラス間での区別を行うためのエンコーディングされたコードを評価するために用いられることを特徴とする請求項２０に記載の方法。
【請求項２３】
特定のクラスのスーパー処理ユニットに現れる値エントリの数等の分類条件を使用して、デジタルデータセットのスーパー処理ユニットを２つのクラスにさらに分類することにより、且つこれらのクラスの各データ割り当てに適したマッピングテーブルを設計することによりエンコーディング及びデコーディングし、そのためこれらのマッピングテーブルのうちの少なくとも１つが機能することができ、従って、より不均一器として機能するように選択され、且つそのような不均一器がまたコード再割り当てを使用して調整し、前記コード再割り当てが少なくとも１つのクラスのスーパー処理ユニットのデータ値のデータ割り当てを利用することができ、それによりコード再割り当てによるコード調整後の不均一器マッピングテーブルが機能することができ、従って少なくとも１つのクラスのスーパー処理ユニットのコンプレッサのマッピングテーブルとして機能するように選択され、且つ１番目のサイクルに不均一器を使用して全てのスーパー処理ユニットをエンコーディングし、その後にコンプレッサを使用して少なくとも１つのクラスのスーパー処理ユニットをエンコーディングし、そのうち処理中の対応するスーパー処理ユニットのデータの圧縮が２番目のサイクルにおいて実行可能であり、即ち１番目のサイクルに不均一器を使用してエンコーディングし、且つ２番目のサイクルにコンプレッサを使用してエンコーディングし、それによりそれらの圧縮不可能なデータを含むスーパー処理ユニットが不均一器だけを使用してエンコーディングし、且つデコーディングする時に、これらのスーパー処理ユニット中の各データ値のデータ割り当てに適した対応するマッピングテーブルを使用してこれらのスーパー処理ユニット中の各データ値をデコーディングし、それにより１番目のデコーディングサイクルに、不均一器のエンコーディング及びコンプレッサのエンコーディングにより形成されたエンコーディングされたコードがデコーディングされ、コンプレッサのエンコーディング層のエンコーディングがデコーディングされる可能性があり、且つ２番目のデコーディングサイクルに、全てのスーパー処理ユニットの不均一器によってエンコーディングされたコードのみからなるエンコーディングされたコードが、不均一器のデコーダによってデコーディングされ、且つスーパー処理ユニット中の全てのクラスのデータ割り当てに適した基準とエンコーディング及びデコーディング用の対応するマッピングテーブルに適した基準を設定することにより、エンコーディングされたコードを評価し、インジケータの使用が省略できるように、人工知能を応用してスーパー処理ユニットの各クラス間での識別作業を行うことを特徴とする請求項２０に記載の方法。
【請求項２４】
マッピングテーブルを構築し、前記マッピングテーブルの固有コードアドレスを使用し、デジタルデータ入力の固有データ値を１対１マッピング方式でマッピングし、不均一器エンコーダ及び不均一器デコーダの技術を確立し、そのため固有データ値によって使用されるビット数と、対応するマッピングされてペアリングされた、対応しマッピングされた固有テーブルコードアドレスによって使用されるビット数は同じであり、エンコーディング及びデコーディングのために前記マッピングテーブルを使用することを特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項２５】
エンコーディング及びデコーディングの目的で処理するために不均一器エンコーダ及び不均一器デコーダを使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項２６】
エンコーディング及びデコーディングの目的で処理するために不均一器エンコーダ及び不均一器デコーダを均一器エンコーダ及びデコーダ又はコンプレッサ又はデコンプレッサと共に使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項２７】
データ割り当てを変更する場合に、処理中に使用される終了条件に従って、処理ユニット又はスーパー処理ユニットのサイズを動的に調整する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項２８】
処理中のデータ値のデータ割り当てパターンに基づいてコード単位定義を動的に調整する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項２９】
エンコーディング及びデコーディングの目的で処理するためにＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成された分類コード及び内容コードを特徴とするＣＨＡＮコード。
【請求項３０】
エンコーディング及びデコーディングの目的で処理するために、ＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成された分類コード、内容コード及びエンコーディングされていないコード単位を特徴とするＣＨＡＮコード。
【請求項３１】
ヘッダー、分類コード及び内容コードが、エンコーディング及びデコーディングの目的で処理するためにＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成され、それにより前記ヘッダーがＣＨＡＮコーディング技術の使用から生じるインジケータを含み、それによりエンコーディング及びデコーディングのために処理することを特徴とするＣＨＡＮコード。
【請求項３２】
ヘッダー、分類コード、内容コード及びエンコーディングされていないコード単位が、エンコーディング及びデコーディングの目的で処理するためにＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成され、それにより前記ヘッダーがＣＨＡＮコーディング技術の使用から生じるインジケータを含み、それによりエンコーディング及びデコーディングのために処理し、このインジケータが、チェック及びインジケータ、ＣＨＡＮコードファイル署名、マッピングテーブルインジケータ、サイクル数インジケータ、コード単位定義インジケータ、処理ユニット定義インジケータ、スーパー処理ユニット定義インジケータ、最後識別コードインジケータ、シナリオ設計インジケータ、不均一器／均一器インジケータ、リサイクルインジケータ、頻度インジケータ、特殊コードインジケータ、セクションサイズインジケータ、デジタルデータブラックホールタイプインジケータ及び圧縮／非圧縮データインジケータのうちのいずれか１つを含むことを特徴とするＣＨＡＮコード。
【請求項３３】
処理するためのＣＨＡＮコーディング技術が埋め込まれることを特徴とするＣＨＡＮフレームワークで設計されたエンコーダ、デコーダ及びコーダ。
【請求項３４】
処理するためのＣＨＡＮコーディング及びヘッダーインジケータ技術が埋め込まれ、このインジケータが、チェック及びインジケータ、ＣＨＡＮコードファイル署名、マッピングテーブルインジケータ、サイクル数インジケータ、コード単位定義インジケータ、処理ユニット定義インジケータ、スーパー処理ユニット定義インジケータ、最後識別コードインジケータ、シナリオ設計インジケータ、不均一器／均一器インジケータ、リサイクルインジケータ、頻度インジケータ、特殊コードインジケータ、セクションサイズインジケータ、デジタルデータブラックホールタイプインジケータ及び圧縮／非圧縮データインジケータのうちのいずれか１つを含むことを特徴とするＣＨＡＮフレームワークで設計されたエンコーダ、デコーダ及びコーダ。
【請求項３５】
ＣＨＡＮコードを含むデジタル情報ファイルであるＣＨＡＮコードファイル。
【請求項３６】
ヘッダー及びその中に含まれるインジケータを含む、ＣＨＡＮコーディング技術による使用のための追加情報を含むデジタル情報ファイルを含み、このインジケータが、チェック及びインジケータ、ＣＨＡＮコードファイル署名、マッピングテーブルインジケータ、サイクル数インジケータ、コード単位定義インジケータ、処理ユニット定義インジケータ、スーパー処理ユニット定義インジケータ、最後識別コードインジケータ、シナリオ設計インジケータ、不均一器／均一器インジケータ、リサイクルインジケータ、頻度インジケータ、特殊コードインジケータ、セクションサイズインジケータ、デジタルデータブラックホールタイプインジケータ及び圧縮／非圧縮データインジケータのうちのいずれか１つを含むＣＨＡＮコードファイル。
【請求項３７】
数学的方法の使用技術により、データ値が対応するＣＨＡＮ形状に対応する数式で記述されることが可能な順序に入れられ、デジタル情報のマージ及び分離に使用される関連する数学的計算論理及び技術を含み、この数学情報がエンコーディング及びデコーディングの目的で、ランダムであるか否かに関わらず、デジタル情報を処理する際の処理ユニットのコード単位の値を含むことを特徴とするＣＨＡＮフレームワーク下で使用されるＣＨＡＮ数学。
【請求項３８】
エンコーディング及びデコーディングの目的で、基本コンポーネント、コード単位及び派生コンポーネント（例えばＣＨＡＮコードのＲＰピースと他の派生コンポーネント）の間の特徴と関係、例えば、ランダムであるか否かに関わらず、デジタル情報を処理するための処理ユニットの基本コンポーネントの値の合計又は差を記述する方法を特徴とするＣＨＡＮフレームワーク下で使用される式であるＣＨＡＮ式。
【請求項３９】
ＣＨＡＮ点、ＣＨＡＮ直線、ＣＨＡＮ三角形、ＣＨＡＮ矩形、及びＣＨＡＮ台形、ＣＨＡＮ正方形及びＣＨＡＮバーを含み、ＣＨＡＮ式で記述する処理ユニットの基本コンポーネントの特徴及び関係を表すＣＨＡＮ形状。
【請求項４０】
数学的処理のために定数値又は値を含む変数を相補定数又は相補変数として使用して、ある値又はある範囲内又は複数の範囲内の複数の値のミラー値がＣＨＡＮ式で使用できるようにすることを特徴とする補数数学。
【請求項４１】
ＣＨＡＮフレームワーク下で設計されたコーダに処理するために、補数数学と通常の数学、又はそれらのいずれかを単独で使用したＣＨＡＮ数学。
【請求項４２】
暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮフレームワークの用途。
【請求項４３】
暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮコーディングの用途。
【請求項４４】
暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮコードの用途。
【請求項４５】
暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮコードファイルの用途。
【請求項４６】
暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮ数学の用途。
【請求項４７】
暗号化／復号、又は圧縮／解凍、又はその両方を目的とした補数数学の用途。
【請求項４８】
暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮ形状の用途。
【請求項４９】
ＣＨＡＮフレームワーク下で定義されるデータ順序の設計とスキーマを使用することを特徴とするエンコーディング及びデコーディングの目的で、デジタルデータセットに関する統計情報を収集するための、ランダムであるか否かに関わらず、デジタルデータセットを分析する方法。
【請求項５０】
ＣＨＡＮフレームワーク言語を使用することを特徴とするランダムであるか否かに関わらず、デジタルデータセットを記述する方法。
【請求項５１】
分類コードとして事後分類コード、内部分類コード、又は修正された内容コードを使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項５２】
絶対アドレス分岐コーディング技術により、ＣＨＡＮフレームワーク下で定義されたコーダのコード値を使用して他のコード値を吸収又は表現し、即ちブラックホールコードに関連する絶対アドレス分岐コードを使用して吸収されたコード値を表すデジタルデータブラックホール技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項５３】
別のコード値を連続的なステップで代用又は表現するためにＣＨＡＮフレームワーク下で定義されたコーダのコード値を使用する連続コード代用技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項５４】
絶対アドレス分岐コードの逆配置技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項５５】
ブラックホールコードとしてＣＨＡＮフレームワーク下で定義されたコーダの処理中のデータセットに欠落するコード値を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項５６】
ＣＨＡＮフレームワーク下で定義されたコーダの処理中のデータセットに欠落するコード値を、処理中のデータセットに存在するような、より長いビット長の別のコード値で代用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項５７】
ＣＨＡＮフレームワーク下で定義されるコーダを使用して、エンコーディング及びデコーディングを行い、使用される技術がデジタルデータブラックホール、絶対アドレスコーディング、インジケータビット消費削減及び連続コード代用又は非連続コード代用の技術を含み、且つ処理されているデータセットにおける欠落するコード値を同じビット長又はより長いビット長で代用する別のコード値に置き換える技術を使用し、この他のコード値が適切な場合に処理されているデータセットに存在することを特徴とするＣＨＡＮコーディング、固有コード値が欠落するか又は欠落していない場合に、ランダムデータであるか又は非ランダムデータであるかに関わらずデジタルデータを圧縮及び解凍するためのエンコーディング及びデコーディングの方法。
【請求項５８】
処理されているデジタルデータセットから生成された頻度分布特徴に基づいて、インジケータビット消費を削減する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
【請求項５９】
使用される設計に応じて、複数のビットサイズ又はビット長を有し、又は異なるビットサイズ又はビット長を有するコード単位、処理ユニット、及びスーパー処理ユニットの固有コード値を特徴とするＣＨＡＮフレームワークで設計されたコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
理解している人がその数を数える。
本発明は、本発明者により２０１６年７月２９日に提出されたＰＣＴ／ＩＢ２０１６／０５４５６２、２０１６年８月５日に提出されたＰＣＴ／ＩＢ２０１６／０５４７３２、２０１７年２月２２日に提出されたＰＣＴ／ＩＢ２０１７／０５０９８５及び２０１７年７月１日に提出されたＰＣＴ／ＩＢ２０１７／０５３９９３である４つの早期ＰＣＴ出願の優先権を要求している。本発明は上記４つのＰＣＴ出願に開示され且つ本願に改良された概念及び技術的用途に関し、圧縮／解凍及び暗号化／復号を含むエンコーディング及びデコーディングの目的で、ランダムであるか否かに関わらず、デジタルデータを順序付け、組織及び記述するためのフレームワークを提案する。本発明の単一性は、本願の記述がデジタルデータを順序付け、組織及び記述するためのフレームワークＣＨＡＮＦＲＡＭＥＷＯＲＫであるＣＨＡＮフレームワークを開示し、それにより、具体的に各種の活動用のデジタルデータの暗号化／復号及び圧縮／解凍における用途を含む各種の用途のデジタルデータを処理するために、前記デジタルデータはＣＨＡＮ、即ちＣＨＡＮフレームワークでコーディング手段（エンコーディング／デコーディング手段とも呼ばれる）、方法及び技術を開発及び使用する。ＣＨＡＮ図表の異なる成分（ＣＨＡＮ長方形、ＣＨＡＮ台形、ＣＨＡＮ正方形、ＣＨＡＮ三角形、ＣＨＡＮ直線、ＣＨＡＮ点及びＣＨＡＮバー又は２進数ビット形態のデジタルデータからなる処理ユニットの基本コンポーネントの関係及び特徴を記述するその他の形状を含む）間の関係を開示し、及び知的所有権の使用・保護の対応技術に用いるために、デジタル情報のコーディング（エンコーディング及びデコーディングを含む）を行う時には、本発明においてはデジタルデータを順序付け及び組織する方式を見つけることができ、前記知的所有権はデジタル情報の形態で表現され、デジタルデータ及び装置用の実行可能コードを含み、装置は実行可能コードを実行し又はデジタルデータを使用できるコンピュータシステム又はコンピュータで制御される装置又はオペレーティングシステムで制御される装置又はシステムを含む。以下、このような装置は装置と呼称される。
【０００２】
具体的には、本発明は、フレームワーク、方法及びそのデジタル情報装置における処理、格納、割り当て及び使用における応用に関し、前記デジタル情報は、デジタルデータ及び実行可能コード、例えばブートコード、プログラム、アプリケーションプログラム、装置ドライバー又はオペレーティングシステムを構成するこのような実行ファイルの集合を含み、前記実行ファイルは、ハードウェア（例えば全てのタイプの記憶媒体に埋め込まれ又は格納される）に埋め込まれ又は格納される実行可能コードの形態となり、前記記憶媒体は、リードオンリー又は書き換え可能又は揮発性又は不揮発性記憶媒体（以下、記憶媒体と呼称される）、例えば物理メモリ又は内部ＤＲＡＭ（ダイナミックランダムアクセスメモリ）又はハードディスク又は固体ディスク（ＳＳＤ）又はＲＯＭ（読み出し専用メモリ）、又はリードオンリー又は書き換え可能なＣＤ／ＤＶＤ／ＨＤ−ＤＶＤ／ブルーレイＤＶＤ又はハードウェアチップ又はチップセット等を含む。開示されたコーディング方法、即ちＣＨＡＮコーディングは、達成する時に、エンコーディングされたコードを発生させ、ＣＨＡＮコードは、ロスレスにデコーディングされてオリジナルコードに復元することができ、このようなコーディングが圧縮に用いられると、このような圧縮コードもその限界に達するまで、何度も再圧縮することができる。
【０００３】
本質的には、本発明は、デジタルデータを新規作成するための順序付けフレームワークを開示し、それにより、デジタル情報の圧縮／解凍又は暗号化／復号を行うために、デジタルデータを記述してその特徴を研究することができる。この関係では、知的所有権を使用及び保護する目的で、ローカルクラウド又はインターネットクラウドにより接続された装置においてデジタル情報の処理、格納、割り当て及び使用を可能にする。他の圧縮方法を使用する場合と同様に、対応する方法を使用して適切に解凍していないと、圧縮コードを正確に復元することができない。圧縮目的で使用されない場合、エンコーディングされたコードは暗号化されたコードと見なされ、正確な対応するデコーディング方法を使用し、このような暗号化されたコードもオリジナルコードにロスレスに復元することができる。ＣＨＡＮコーディング及びＣＨＡＮコード（概念、方法を含むＣＨＡＮコーディング及びＣＨＡＮコード、即ち技術の組み合わせ及び上記ＰＣＴ出願及び本願に開示されるように生成したコード）はその他の科学、工業及び商業活動等の探求される各種の応用にも用いられる。圧縮分野においては、その驚異的な使用を鮮明に示している。
【０００４】
しかし、本発明に開示されたフレームワーク、関連するスキーマ、設計、方法及びその応用は、クラウド（即ちローカルエリアネットワーク又はインターネット）によりデジタル情報を伝達又は交換することに限られず、その他の情報伝達又は交換モードにおいても使用できる。
【背景技術】
【０００５】
圧縮科学分野においては、発行されたデジタル情報を圧縮するための方法及びアルゴリズムが多数あり、ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｄａｔａ＿ｃｏｍｐｒｅｓｓｉｏｎに常用のデータ圧縮方法及びアルゴリズムの説明を見つけることができる。本発明は新型方法を記述し、前記方法はロスレスデータ圧縮（また、暗号化及びロスレス復号の目的に適用できる）及びその復元に使用できる。
上記ウィキロスレス圧縮の関連部分は、参照できるようにここに再現されている。
「ロスレスデータ圧縮アルゴリズムは通常、統計的冗長性を利用して情報を失うことなくデータを簡潔に表現し、前記プロセスを可逆的にする。ほとんどの実際のデータに統計的冗長性があるため、ロスレス圧縮は可能である。例えば、「赤色画素、赤色画素...」をコーディングする代わりに、画像は、複数の画素にわたって変化しない色の領域を有することができ、データは「２７９個の赤色画素」としてエンコーディングすることができる。これはランレングスエンコーディングの基本実例であり、冗長を解消することでファイルサイズを減少させる多くの手段が存在する。
Ｌｅｍｐｅｌ−Ｚｉｖ（ＬＺ）圧縮方法は最も一般的なロスレス格納アルゴリズムの１つである。
ＤＥＦＬＡＴＥはＬＺの変形であり、解凍速度及び圧縮比を最適化させるが、圧縮が遅くなる可能性がある。ＤＥＦＬＡＴＥは、ＰＫＺＩＰ、Ｇｚｉｐ及びＰＮＧに用いられる。ＬＺＷ（Ｌｅｍｐｅｌ−Ｚｉｖ−Ｗｅｌｃｈ）はＧＩＦ画像に用いられる。また、Ｚｉｐ方法の基礎となるＬＺＲ（Ｌｅｍｐｅｌ−Ｚｉｖ−Ｒｅｎａｕ）アルゴリズムも注目に値する。ＬＺ方法は、テーブル・ベースの圧縮モデルを使用し、データの繰り返し文字列の代わりにテーブルエントリが使用される。ほとんどのＬＺ方法では、このテーブルは入力の初期データから動的に生成されるものである。テーブルそのものは、一般的にハフマンエンコーディングされる（例えばＳＨＲＩ、ＬＺＸ）。現在ＬＺに基づき、良好に動作するコーディング手段ＬＺＸは、マイクロのＣＡＢフォーマットに用いられる。
現在の最適なロスレスコンプレッサは、部分マッチングにより予測する等の確率モデルを使用する。Ｂｕｒｒｏｗｓ−Ｗｈｅｅｌｅｒ変換は、統計モデリングの間接形態と見なすこともできる。
例えば、同じ又は関連する種の生物学的データ収集、巨大バージョンのドキュメントコレクション、インターネットアーカイブ等の反復性の高いテキストを非常に効果的に圧縮することができるため、このような文法ベースのコードは人気がある。文法ベースのコードの基本タスクは単一文字列を導出する文脈自由文法を構築することである。Ｓｅｑｕｉｔｕｒ及びＲｅ−Ｐａｉｒは共通コードの使用できる実用的な文法圧縮アルゴリズムである。
これらの技術のさらなる改良において、統計的予測は算術コーディングと呼称されるアルゴリズムに結合することができる。算術コーディングはＪｏｒｍａ  Ｒｉｓｓａｎｅｎにより発明され、Ｗｉｔｔｅｎ、Ｎｅａｌ及びＣｌｅａｒｙにより実用方法に変換され、よく知られているＨｕｆｆｍａｎアルゴリズムに対する良好な圧縮を実現し、特に予測がコンテキストに依存するアダプティブデータ圧縮タスクに適用できる。算術コーディングは二層画像圧縮基準ＪＢＩＧ及びドキュメント圧縮基準ＤｊＶｕに用いられる。テキスト入力システムＤａｓｈｅｒは逆算術エンコーダである。」
【０００６】
上記ウィキにおいて、「ＬＺ方法は、テーブル・ベースの圧縮モデルを使用し、データの繰り返し文字列の代わりにテーブルエントリが使用される」が記載されている。テーブルで変換、暗号化、圧縮及び拡張することは常用であるが、如何にテーブルをこのような目的に用いるかというのは、様々であり、ある方式又はその他の方式により新奇にする可能性がある。
【０００７】
本発明は新型方法であるＣＨＡＮコーディング法（つまりＣＨＡＮコーディング）を提案し、一度も公開されていない素晴らしい結果を生み出した。これは挑戦に成功したことを示し、情報理論における鳩ノ巣原理の神話の革命的な終結でもある。ＣＨＡＮコーディングについては、次の節には技術的課題を如何に処理・解決するかを示す。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ロスレスデータ圧縮の挑戦により提案された技術的課題は、如何に短いコードエントリにデジタルデータコードの長いエントリを示すか、及び如何にそれを復元するかということである。短いエントリは長いデータエントリを置換することに用いられるが、縮んだエントリからオリジナルの長いエントリを復元することを可能にするか又はその方法を知らせるように、デジタル形態のその他の情報を追加する必要がある。多すぎるこのようなデジタル情報を追加する必要があると、圧縮の努力が無駄になり、時には結果は圧縮ではなく拡張になってしまう。
【０００９】
このような追加情報の格納方式は圧縮過程に他の挑戦を提案する。デジタル情報の１つ又は複数のエントリに関する追加情報が圧縮データエントリに散在して格納されている場合、如何に追加情報とデジタル情報のオリジナルエントリとを区別するかというのは問題となり、復元期間にデジタル情報の圧縮エントリの分離に他の挑戦を提案し、特にデジタル情報のオリジナルエントリを異なる長さに圧縮した場合、追加情報の長さもそれに従って変化する。
【００１０】
繰り返して再圧縮した後に追加情報及び圧縮デジタルエントリを復元できると、特に問題となる。一般的に、圧縮データは再圧縮できず、再圧縮を試しても、多くの利得を取得できず、通常に結果は圧縮ではなくて拡張になってしまう。
【００１１】
圧縮されるべきデジタル情報は本質的に異なり、一部はテキストファイルであり、他の一部はグラフィック、音楽、音声又は映像ファイル等である。テキストファイルは、通常、ロスレス圧縮する必要があり、さもないとその内容が失われたりスクランブルされたりして、識別できなくなる。
【００１２】
テキストファイルはＡＳＣＩＩベースのものもあり、ＵＮＩＣＯＤＥベースのものもある。異なる言語のテキストファイルは、デジタルコードの頻度及び組み合わせに示されるような異なる特徴を有する。これは、適応力がほとんどない（即ち、可能性のある全ての場合を満たすことができない）フレームワーク及び方法が、このような全ての状況に最適に作用できないことを意味する。従って、データ圧縮へ適応性及び柔軟性が高いか又は全てを包含するフレームワーク及び方法を提供することは、課題となっている。
【課題を解決するための手段】
【００１３】
本明細書は、フレームワーク、スキーマ及びコンピュータ達成方法を開示し、前記方法はデータのロスレスエンコーディング及びデコーディングによりランダムデータを含むデジタルデータを処理することに用いられる。前記フレームワーク及び方法は、データを正確に処理し、暗号化／復号又は圧縮／解凍の目的に用いられる。前記フレームワーク及び方法はロスレスデータ圧縮、ロスレスデータ暗号化及びデータのロスレスデコーディング及び復元に用いられる。前記フレームワークがデータを処理する前に処理しようとするデジタルデータについて仮設しない。
本発明までの長い間、データ圧縮分野において、純粋にランダムな２進数データは絶対的に非圧縮性であると証明された。本発明は、異なるタイプ及び異なる言語特徴に適用し、ランダムデジタル情報を問わずにロスレス圧縮用のフレームワーク及び方法を提供することにより、ランダムデジタル情報を圧縮してそれを首尾よく復元することができる。本発明に開示されたフレームワーク（ＣＨＡＮフレームワーク）はランダムであるか否かに関わらずデジタル情報の順序付けを組織的に記述及び新規作成することが可能であり、任意のデジタル情報の特徴を発見、記述、調査及び分析することができ、デジタル情報のこのような特徴及び内容を周期的に重複するロスレス暗号化／復号及び圧縮／解凍を目的とする技術及び方法の開発に用いることができる。これは、情報理論における鳩ノ巣原理の神話を終わらせる。もちろん、それには限界がある。明らかに、１ビットだけのデジタル情報をさらに圧縮することができない。本発明に開示されるように、デジタル情報の圧縮制限は圧縮中の関連達成方式により選択されたスキーマ及び方法に伴って変化し、例えば使用するヘッダーのサイズ、処理ユニット（所定の数のコード単位を含む）のサイズ、又は使用するスーパー処理ユニット（所定の数の処理ユニットを含む）のサイズ、及び完全な処理ユニット又はスーパー処理ユニットを構成するには不十分であり、エンコーディングしていない２進数ビットコードのサイズにより確定される。従って、設計及び関連データ割り当てそのものの性質に基づき、任意のデジタル情報を圧縮する制限は数千の２進数ビット又はそれ未満に保つことができる。
【００１４】
ＣＨＡＮフレームワーク及びＣＨＡＮコーディングを使用すると、圧縮及び復元されるべきランダムデジタル情報を事前に知る必要はない。ＣＨＡＮフレームワークは、必要に応じて以下における記述中で定義される。例えば、２ビットの固定ビットサイズを用いる従来のデータエンコーダに対してデジタルデータをサンプリングすると、それは常に２ビットフォーマットのデジタルデータを示すことができ、多くとも４個の値、即ち００、０１、１０及び１１を有するので、ＣＨＡＮフレームワークにおけるデータエンコーダと比較すると、前記ＣＨＡＮデータエンコーダの使用するデータエンコーダは収容可能な最大データ値を、データを区別するための主要要因又は基準として用い、コードのビット値サイズ及びその他の基準を非主要要因又は基準とするように設計される。これは、従来のデータエンコーダがＣＨＡＮフレームワークにおけるデータエンコーダの１つの変形にすぎないことを意味し、ＣＨＡＮフレームワークに置くことができ、最大４個の値（Ｍａｘ４クラス）の数値を有する上記２ビットフォーマットの従来のデータエンコーダを実例として使用する。従って、ＣＨＡＮフレームワークにおけるＭａｘ４クラスデータエンコーダは、例えば全ての唯一４個の値用の総ビット数によりビットグループとして定義され、さらに使用するヘッダータイプにより定義される他の変形を有することができ、例えば以下の図表０に示される。
図表０
ＣＨＡＮフレームワークでグループ化された従来のデータエンコーダ
Ｍａｘ４クラス＝データ区別用の主要要因又は基準
８ビットグループ  ９ビットグループ＝非主要要因又は基準
０ヘッド          １ヘッド＝非主要要因又は基準
００              ０                １
０１              １０              ０１
１０              １１０            ００１
１１              １１１            ０００
Ｍａｘ４クラスのデータエンコーダの３つの変形のうち注目すべきことは、全ての４個の唯一コード単位値が同じ数の２進数ビット表現を有する同じビットサイズのコード単位（例えば８ビットグループ）以外、９ビットグループの他の２つの変形のコード単位のビット値サイズはいずれも異なる。このＣＨＡＮフレームワークにおける豊か且つ柔軟なデジタルデータ分類手段は、エンコーディング及びデコーディングの目的のため、データを制御するか又は示すための新型方法及び技術を開発することを可能にし、それにより情報理論における鳩ノ巣原理の神話を破る。
以下の図表は、本発明に開示された、データエンコーダでエンコーディング及びデコーディングする（即ち圧縮／解凍及び暗号化／復号目的を含む）ためのＣＨＡＮフレームワークの特徴を解釈することに用いられ、前記データエンコーダは、従来のデータエンコーダにより定義された、同じ最大可能数の唯一値を有し、例えばＭａｘ４  ８ビットグループを２ビット固定サイズの従来のデータエンコーダと等価に使用し、又はＭａｘ８  ２４ビットグループを３ビット固定サイズの従来のデータエンコーダと等価に使用する。簡略化するために、前に使用していないがＣＨＡＮフレームワークにおけるデータエンコーダを使用する人に対して、処理ユニットの構成部（コンポーネントとも呼ばれる）の概念を説明する。
図表１
処理ユニットコンポーネントの概念を説明するＣＨＡＮフレームワーク及び図解
【表１】
2019528027.tif 000002
ａ及びｂは、それぞれ１つのコード単位（０及び１の所定の数の２進数ビットコードの基本単位）を示す２つのデジタル情報である。所定の数の０及び１の２進数ビットに示されるコード単位の内容又は値は繰り返して読み取られ、例えば、ａは第１コード単位として読み取られ、ｂは第２コード単位として読み取られる。
１つのデジタル情報は１つのコード単位を構成し、図表１中の２つのこのコード単位は１つの処理ユニットを構成する（処理ユニットに含まれたコード単位の数はコーディング設計に使用されたスキーマ及び技術に応じて変化し、これはコード設計者によって決定されるため、図表１を用いる本図に使用された場合とは異なる可能性がある）。
演算の便宜及び容易さのために、各コード単位は、最適には、例えば１つのコーディング過程サイクルのビットサイズに基づき、スケール変換を行うことなく同じ数字スケールを使用する等の同じ定義を有し、エンコーディング及びデコーディングの一致性及び規則性は、エンコーディング後にロスレスにデジタル情報を首尾よく復元することに対して重要である。エンコーディング及びデコーディングの一致性及び規則性とは、デジタル情報の処理が一定の法則に従うことを意味し、そのため、デジタル情報を変換又は切り替えることができるような方法でエンコーディング及びデコーディングを論理的に行うことができることで、データ割り当てを変えることを可能にし、例えば、デジタル情報の２進数ビット０と２進数ビット１の比率を変えたり、動的コードを調整（コード昇格、コード降格、コード省略及びコード復元を含む）したりすることを可能にする。エンコーディング及びデコーディング用のこのような法則はコード単位又は処理ユニット又はスーパー処理ユニットの特徴及び内容、及び使用する関連するスキーマ、設計及びエンコーディング及びデコーディング方法によって決定される。エンコーディング及びデコーディングのこのような法則又は論理は、メインヘッダー内の２進数コード（デジタルデータ入力全体に対して）又は２進数ビットをインジケータとして用いるセクションヘッダー内（デジタルデータ入力全体は２進数ビットコードを含む複数のセクションに分けられ、各セクションのヘッダーが即ちセクションヘッダーと呼称される）に記録でき、エンコーディング及びデコーディングのスキーマ、設計及び方法の一致性及び規則性が許可できる場合、インジケータとするこのような２進数コードはエンコーダ及びデコーダに埋め込むことができる。
コード単位は、２進数スケール、８進数、１６進数等を含む任意の適切な数字スケールの選択により表現し及び示すことができる。
コード単位のサイズ、即ちコード単位サイズは、任意の適切なサイズとして選択し得、例えば、４ビット、８ビット、１６ビット、３２ビット又は６４ビットのような２進数スケール、又は任意の演算しやすいビット値サイズがいずれもコード単位サイズとすることができる（コード単位の定義は段落００５４からのＣＨＡＮフレームワークに基づいて改良される）。
各コード単位のデジタル数又はデジタル値はコード単位のデジタル内容を示し、デジタル数はコード単位の全てのビットのビットシンボルを示す。
且つ、使用するコード単位間の関係を設計、見つけ及び記述することができ、ＣＨＡＮコーディングが２つのコード単位を使用する概念及び技術として如何に使用するデモ説明するために、前記関係に使用される数式の定義は以下のとおりである。
ａ及びｂは図表１中のカレントスキーマに応用されたＣＨＡＮコーディングのうちの、１つの処理ユニットを構成する２つのコード単位であり、各コード単位は各コード単位において伝送されたデジタル情報の内容又は数値を示すデジタル数であり、ｂの前にａを読み取る。
ａはｂより大きく又は小さい値であってもよく、他の２つの変数名でこの２つのコード単位の値のランクを示すことができる。
Ａは２つのコード単位のうちの大値である。
Ｂは２つのコード単位のうちの小値である。
且つ、ａとｂの値が同じであり、まず読み取るのはＡであり、次に読み取るのはＢであり、従ってＡの値はＢ以上であり、且つａはｂに関連してその値に応じてＡ又はＢになる可能性がある。
上記場合に鑑み、必ずビット（ＲＰビット）（即ちランク及び位置ビット）で、第１コード単位が第２コード単位以上又は小さい値を有するか否かを指示し、従って、コードのこのビットコードは２つのコード単位により読み取られた値の位置とランクとの関係を示す。
ａ及びｂをエンコーディングするために、以下のように、ａ及びｂの値を１つの独立値に容易に加算し、コード単位サイズのビット値サイズに１ビットを加算することができる。
図表２
エンコーディングする前、図表２のデータは図表１に示すように、コード単位サイズが６４ビットであり、２つのコード単位を有する処理ユニットを有すると仮定する。
【表２】
2019528027.tif 000003
図表３
エンコーディングした後、生成したコード、ＣＨＡＮコードはＲＰピース及びＣＶピースからなる。
【表３】
2019528027.tif 000004
ＣＨＡＮコードのＲＰビット（１ビット）は、即ち第１ピースであり、ＲＰピース及びａとｂの組み合わせ値、Ａ＋Ｂ（６５ビット、即ち６４ビットに１を加算し、コード単位サイズのビットサイズに１ビットを加算する）は、即ち第２ピースであり、ＣＨＡＮコードのエンコーディング値ピース又は内容値ピース（ＣＶピース）は、生じたエンコーディング、ＣＨＡＮコードを構成し、さらにオリジナルデジタル情報に対して実行したエンコーディングサイクル数に必要な及び余剰コード処理に必要な関連するヘッダー情報を含むことができる。本発明者は、２０１５年８月２９日に提出された他のＰＣＴ特許出願ＰＣＴ／ＩＢ２０１５／０５６５６２においてこのようなヘッダー情報の形成及び処理を提出しているため、本明細書では繰り返さない。
デコーディングの目的で、当業者は、上記ＰＣＴ特許出願又は他の設計に記載されたヘッダー処理と得られたＣＨＡＮコード、即ちＣＨＡＮコードのＲＰピース及びＣＶピースを容易に使用できる。以下に本発明に開示されるように、このように設計されたエンコーディング及びデコーディングのスキーマ及び方法に基づき、より多くのコード単位が使用される時には、ＣＶピースをさらにサブブロックに分けることができる。
ＲＰピースは、対応するコード単位のある特性又は特徴を示し、本明細書の処理ユニットの２つの対応するコード単位間のランク及び位置の特徴を示すコードピースである。ＲＰピースは幅広いコードカテゴリーのコードのサブセットであり、特性コード又は特徴コード又は分類コードとして命名される（関連する特性又は特徴が類似した特性又は特徴を有するコード単位を分類又はグループ化するために使用されているためにこのように呼ばれる）。ＣＶピースは１つ又は複数のコード単位の内容のエンコーディングコードを示す。時には、エンコーディング及びデコーディングのスキーマ及び方法に基づき、コード単位の内容の一部は分類コードとして抽出され、ＣＶピースに残っているものはコード単位の内容に対応する残りの部分にすぎない。ＣＶピースはＣＨＡＮコードの内容コードを構成する。従って、エンコーディング及びデコーディングのスキーマ及び方法に基づき、ＣＨＡＮコードは少なくとも内容コードを含み、適切な場合に分類コードを追加し、適切な場合又は必要がある場合に、内容コードそのものに含まれる、又は内容コードそのものの内部に混在している、又はヘッダーに含まれる、例えばスーパー処理ユニットを処理する時に使用するコーディング方法又はコードマッピングテーブルを指示するその他のインジケータコードを追加する。これは、当然、本発明の説明において明らかになるであろう。
ここまで、ＣＨＡＮフレームワークは、コード単位、処理ユニット、スーパー処理ユニット、エンコーディングしていないコード単位（エンコーディングしていないコードを含む）、ヘッダーユニット（デジタル情報ファイルのヘッダーに使用され、デジタルデータファイル全体に適用されるインジケータを含む）、内容コード単位、セクション及びセクションヘッダー（デジタルデータファイル又はストリーム全体が処理のための複数のセクションに分割される）、適切な場合には分類エンコーディングユニット（以下、上記特性コード又は特徴コード単位を意味する）、及び内容コード内部と混在しているインジケータコード（例えば、対応するスーパー処理ユニットに固有）の元素を含む。前記フレームワークは適切な場合にさらに洗練されて精緻化される。
【００１５】
コンポーネント、処理ユニットの２つの基本コード単位の関係であるランクと位置、及び以上の段落００１４にリストされた合計を見つけた後、このような関係はＲＰピースに示され、ＣＨＡＮコードのＣＶピースはＣＶピースにおける最もシンプルな数式であるＡ＋Ｂを使用する。ＲＰピースは０又は１である１ビットだけを含み、それにより１つの処理ユニットで読み取られた２つのコード単位の第２値ｂと第１値ａを比較し、どれが大きい値であるか又は同じ値であるか又は小さい値であるかを指示する。
【００１６】
前の実例及び現在市場に流行っている６４ビットパーソナルコンピュータを使用することで、２進数スケールの各６４ビットコード単位が６４ビットで示されると、圧縮又は暗号化がない可能性がある。従って、各エンコーディングステップに対して必ず１つより多いコード単位を処理ユニットとして使用する。デジタル情報のデジタルファイル又はデジタルファイルの一部（デジタルファイルがさらに複数のセクションに分けられて処理すると）は必ず１つ又は複数の処理ユニット又はスーパー処理ユニットに分解されて各エンコーディングステップを行い、それにより形成する各処理ユニット又はスーパー処理ユニットのエンコーディングコードはＣＨＡＮコードの元素となり、各処理ユニットの１つのＲＰピース及び１つのＣＶピースからなり、現在のこのような場合には、ＣＨＡＮコードのユニットである。従って、ＣＨＡＮコーディングで圧縮又は暗号化した後のデジタル情報のデジタルファイル（又はデジタルファイルが分けられたセクション）は１つ又は複数のＣＨＡＮコード単位からなり、即ちＣＨＡＮコードファイルからなる。ＣＨＡＮコードファイルは、ＣＨＡＮコードを含む以外、さらに、オリジナルデジタル情報の任意の余剰のエンコーディングしていないビット、即ち１つの処理ユニット又は１つのスーパー処理ユニットを構成していない、エンコーディングしていないコード単位と、較正及び及びいつ必ずデコーディングを停止するか、又は何回のエンコーディング又は再エンコーディングのサイクルが行われたか、又はヘッダー又はフッターにおけるＩＤ番号又はインジケータに指示されたように、最初又は最後に又はどこかに存在するエンコーディングしていないオリジナルデジタル情報が何ビットであるかに関するサイン又はインジケータを含み、デジタル情報を識別するために通常使用されるヘッダー又はフッターを表すその他の追加されたデジタル情報とを含む。必要があれば、カレントエンコーディングサイクルにエンコーディングしていないこのようなデジタル情報は次のサイクル間にさらにエンコーディングすることができる。本発明では、このような追加されたデジタル情報がどのように設計され、配置され、使用されるべきかが要求されない。これらの追加されたデジタル情報がエンコーディング及びデコーディング過程に利用可能になることができる限り、使用者は自らの目的に応じて自由に自分の設計を作ることができる。これらの追加されたデジタル情報を如何に使用するかを明確にするために、必要に応じてこれらの追加されたデジタル情報の用途が言及される。従って、本発明は主にエンコーディング及びデコーディングに使用された技術及び方法（即ちＣＨＡＮフレームワーク内のＣＨＡＮコーディング）で生成したＣＨＡＮコードを含む。ＣＨＡＮコードは２つ又は複数の格納するセクションに分けることができ、例えば、ＣＨＡＮコードのサブブロックは、容易さ又は安全さのために、デコーディングに用いられ又は引渡しに用いられるように、独立したデジタルデータファイルに独立して格納できる。ＣＨＡＮコードヘッダー又はフッターも他の独立したデジタルデータファイルに格納し且つ同じ目的のため引渡すことができる。このようなＣＨＡＮコードを構成するファイル及びＣＨＡＮコードヘッダーとフッターファイルはその他の追加されたデジタル情報が存在しても存在しなくても、ＣＨＡＮコードファイルであり、これは段落００１４に定義されたＣＨＡＮフレームワークに追加する他の元素である。
【００１７】
ＣＨＡＮコードはＣＨＡＮコーディングを使用したエンコーディングコードである。ＣＨＡＮコーディングはオリジナルコードからエンコーディングコード又は派生コードを生成する。圧縮に用いられると、ＣＨＡＮコードは圧縮コードを示し（使用するスキーマ及び方法で圧縮できると）、データ割り当てがランダムであるか否かに関わらず、オリジナルコードに使用されたビット数より小さい。所定のサイズを超えるランダムデータが均一になり、即ちビット０とビット１との比率は１：１になる。ＣＨＡＮコードはＣＨＡＮコーディングの結果を示し、本実例においては、対応する数式により指定された演算、即ちＲＰピースの値及び演算やエンコーディング用の加算演算を用いて発生し、前記数式は（処理ユニット）の基本コンポーネントと、（コード単位）との関係を示し、派生コンポーネントを生成し、即ち図表３中、ＣＶピースにおけるＡ＋Ｂである。上記エンコーディング法則及び論理を使用することで、オリジナルコードに復元できる。ＲＰピースはインジケータ情報を示し、それによりエンコーダの生じた処理ユニットの２つのコード単位のランク及び位置特徴を指示し、デコーダにより完了するオリジナルコードに復元することに用いられる。デコーディング時にデコーダが従う演算法則を指定する前記インジケータは、生じたエンコーディングコードに含まれる。しかし、数式Ａ＋Ｂに示される演算法則は、エンコーディング及びデコーディングにおいて応用される一致性及び規則性のため、エンコーダ及びデコーダに埋め込まれる。派生コンポーネントは１つ又は複数の基本コンポーネントからなるコンポーネント、又は特定の演算法則（例えば数式に示される）により演算した後にその他の派生コンポーネントと組み合わせたコンポーネントであり、前記演算法則は、例えば加算、減算、乗算又は除算演算を含む。
【００１８】
以上のように、ＣＨＡＮコーディングで処理した後に取得するＣＨＡＮコードは、デジタル情報のデジタルビットを含み、前記デジタルビットは１つのユニットに組織され又はサブブロックに分解され、それによりオリジナルデジタル情報の内容を示し、オリジナルデジタル情報はデータ割り当て中にランダムであるか否かに関わらず、正確且つロスレスに復元することができる。当然、上記実例はオリジナルデジタル情報の正確且つロスレスな復元が許可されていない。例えば、例えばＡマイナスＢ及び／又はオリジナルデジタル情報に復元できる前に存在する対応する内容コードピースの１つのような他の数式を必要とする。現在、以上の実例は、ＣＨＡＮフレームワーク及びその元素の目的を記述・定義することにしか用いられない。演算用の数字スケールの選択を確定した後、コード単位のビットサイズ及び処理ユニット用のコンポーネント（即ち１つの処理ユニット用のコード単位の数、最もシンプルな場合には、上記１つの処理ユニットの２つのコード単位しか用いない）並びにそれらの関係は数式に定義されており、デジタルコンピュータに使用された実行可能コードにおいて達成され、数式を演算法則として使用する場合、コーディングのためにＣＨＡＮエンコーディングが行う作業は（使用するその他の技術は必要に応じて開示される）以下のステップを含む。（１）オリジナルデジタル情報を読み込み、（２）デジタル情報を分析してその特徴、即ち圧縮ユニットのコンポーネント及びその関係を取得し、（３）数式又は設計された式で演算する。前記式は、ＣＨＡＮコーディング分析後に取得したオリジナルデジタル情報のコンポーネントの特徴又はオリジナルデジタル情報のコンポーネント間の関係を記述し、即ちオリジナルデジタルデータの特徴はＣＨＡＮコードに示されている。圧縮すると、ＣＨＡＮコードのデジタルビットはデータ割り当てがランダムであるか否かに関わらず、オリジナルコードに使用されたデジタルビットより小さい。ＣＨＡＮコードはロスレスにエンコーディングされたコードであり、デコーディング時にオリジナルコードにロスレスに復元でき［数式を使用し、且つエンコーディングにおける関連する数学演算は、必ずしもなく圧縮を可能にするとは限らず、例えば使用するスキーマ及び方法と共に設計された式、コード単位定義及びコード配置技術に非常に依存する］、（４）ステップ（１）で読み取られたオリジナルデジタル情報に関連する対応するＣＨＡＮコードを生成する。
対応するＣＨＡＮコードを復号してデジタルオリジナルコードに復元するためにＣＨＡＮコーディングが行う作業は、以下のステップを含む。（５）対応するＣＨＡＮコードを読み込み、（６）対応するＣＨＡＮコードの特性を取得し、（７）このように設計された数式を逆様に使用する。前記式は、ＣＨＡＮコードのＣＨＡＮコーディングを分析した後に得られたオリジナルデジタル情報のコンポーネントの特徴又はコンポーネント間の関係を記述しており、通常の数学及び補数数学の使用を含む。（８）ステップ（７）を使用した後、オリジナルデジタル情報がランダムであるか否かに関わらず、オリジナルデジタル情報のオリジナルコードをロスレスに生成する。このため、復号時に、図表３のＣＨＡＮコードは図表２のオリジナルデジタルデータコードに正しく且つロスレスに復元される。これは、別の発明特徴を使用して実現することができ、その結果、コード単位の定義を広げて、より柔軟で新しいフレームワークとして、段落００１４で説明されたデジタルデータを順序付け、組織、記述するための、そして（後に段落００５４から）さらに洗練されて詳述されるＣＨＡＮフレームワークを提供する。もちろん、これまでこの独創的な特徴をさらに明らかにする前には、ＡマイナスＢを表す別のＣＶサブピースが以上の図表において存在していない場合はそうではなかった（即ち、このような場合に使用された式はオリジナルデータコードを正しく復元するのに十分ではない）。このＣＶサブピースが存在していても、従来のコード単位定義（コード単位は統一したビットサイズ又は同じビットサイズで定義されている）を使用して得られたＣＨＡＮコードのサイズがオリジナルコードより小さくなることは保証できず、それは、例えばコード単位の定義やコード配置手法、及びオリジナルデータ割り当て等、使用されるスキーマ及び方法によって異なる。しかし、対応する欠けている式又は処理ユニットコンポーネントの欠けている部分と共に、数式ＡマイナスＢの演算の結果を表すＣＶサブピースがある場合、結果として得られるＣＨＡＮコードは暗号化コードと見なすことができ、前記暗号化コードはオリジナルデジタルコードを正しくそしてロスレスに復元するために使われ得る。しかしながら、そのように生成された暗号化ＣＨＡＮコードは、必ずしも圧縮コードではなく、拡張コードであり得る。ランダムであるか否かに関わらず割り当てられるデジタルデータから圧縮コードを生成するための方法及び関連技術は、情報理論における鳩ノ巣原理の神話を終了させ、前記方法及び関連技術は、新規なコード単位定義の独創的な特徴、及びＣＨＡＮフレームワークの新規特徴を実現するのに使用される他の技法を議論した後に、必要に応じて説明される。
【００１９】
範囲の概念及びＣＨＡＮフレームワークの独創的な特徴の使用と一緒に使用されるとランダムデータを圧縮するのを助けることができる絶対アドレス分岐の技術を適用する際のその使用の理解の仕方をパスするために、以下の図表では、補数数学がどのように機能するかについて説明する。
図表４
補数数学
ＣＣ−Ａ＝Ａｃ
且つ
Ａｃ＋Ａ＝ＣＣ
又は
Ｂｃ＋Ｂ＝ＣＣ
且つ
（Ａｃ＋Ｂ）＝（ＣＣ−Ａ）＋Ｂ
ここで、ＣＣは相補定数又は変数であり、相補定数又は変数（エンコーディング及びデコーディングの異なるサイクルで異なるコード単位サイズが使用されている場合は、変数になる可能性がある）を使用するように定義されている補数数学の演算のために選択された定数値又は変数値である。これは、本発明で説明されるように、数学的計算又は加算及び減算論理を有する演算において使用される。場合によって、複数の相補定数又は変数を設計し、必要に応じて又は適切な場合には、様々な演算又は目的に使用し得る。
Ａは演算される値であり、ここで使用されている実例はランク値Ａであり、現在２つのコード単位値のみを使用する場合、Ａの値はＢの値以上であり、このため、最初の式では、
ＣＣ−Ａ＝Ａｃ
ここで、ＣＣからＡを引いたものは、Ａ補数に等しく、即ち、それぞれの相補定数又は変数を使用したＡの補数値、又はミラー値であるＡｃで示される。例えば、ＣＣをコード単位サイズの最大値の定数、例えば２５６個の値を有する８ビットとすると、ＣＣの値は２５６とある。Ａの値を１００とすると、Ａｃは２５６から１００を引いた値である１５６に相当し、従って、逆の演算はＡｃ＋Ａ＝ＣＣになり、１００＋１５６＝２５６の演算を表す。そして、第４式において、（Ａｃ＋Ｂ）＝（ＣＣ−Ａ）＋Ｂであり、そしてＢを５０とすると、Ａｃ＋Ｂ＝（２５６−１００）＋５０＝１５６＋５０＝２０６となる。
【００２０】
図表４は、後に導入される復号プロセスを作成するのに十分である、本発明者によって発明された補数数学の基本演算の論理を示す。しかしながら、補数数学の加算及び減算演算のより完全な例示のために、そのような論理は以下の図表５に定義されて説明される。
図表５
定義されたより多くの補数数学の理論：
ＣＣ−（Ａ＋Ｂ）＝（Ａ＋Ｂ）ｃ又は＝ＣＣ−Ａ−Ｂ。
且つ
ＣＣ−（Ａ−Ｂ）＝Ａｃ＋Ｂ
且つ
ＣＣ−Ａ＋Ｂは分かりにくいかもしれないが、次のように明確に表すべきである。
（ＣＣ−Ａ）＋Ｂ＝Ａｃ＋Ｂ
又は
（ＣＣ−Ｂ）＋Ａ＝Ｂｃ＋Ａ
又は
ＣＣ−（Ａ＋Ｂ）＝ＣＣ−Ａ−Ｂ。
そのため、補数数学の減算演算の上記論理をさらに説明するために、ＣＣを２５６、Ａを１００、Ｂを５０とすると、
ＣＣ−（Ａ＋Ｂ）＝（Ａ＋Ｂ）ｃ又は＝Ａｃ−Ｂ又は＝Ｂｃ−Ａ
即ち、２５６−（１００＋５０）＝（１００＋５０）ｃ＝２５６−１５０＝１０６＝Ａｃ−Ｂ＝１５６−５０＝１０６
又は
＝Ｂｃ−Ａ＝２０６−１００＝１０６
且つ
ＣＣ−（Ａ−Ｂ）＝Ａｃ＋Ｂ
即ち２５６−（１００−５０）＝２５６−（５０）＝２０６＝１５６＋５０＝２０６
且つ
（ＣＣ−Ａ）＋Ｂ＝Ａｃ＋Ｂ
即ち（２５６−１００）＋５０＝１５６＋５０＝２０６
又は
（ＣＣ−Ｂ）＋Ａ＝Ｂｃ＋Ａ
即ち（２５６−５０）＋１００＝２０６＋１００＝３０６となる。
【００２１】
従って、補数数学の加算及び減算演算の上記論理を使用して、次の図表６に補数数学がどのように機能するかについてさらに詳細を示すことができる。
図表６
補数数学を使用したデータ値又はデータ範囲に対する演算
ＣＣを２５６、Ａを１００、Ｂを５０とすると、
（１）通常の数学処理：
１５０を２で割り、即ちＡとＢの平均値を取り、
＝（Ａ＋Ｂ）／２＝１／２Ａ＋１／２Ｂ＝７５。且つＡはＡ＋Ｂのうちの大値であるため、
＝Ａ−１／２（Ａ−Ｂ）＝１００−１／２（１００−５０）＝１００−１／２（５０）＝１００−２５＝７５。
＝Ｂ＋１／２（Ａ−Ｂ）＝５０＋１／２（１００−５０）＝５０＋１／２（５０）＝５０＋２５＝７５。
（２）補数数学処理：
（ＣＣ−Ａ）＋Ｂの演算を行い、即ちＢについてではなく、ＡについてＣＣに対して演算を行い、
＝（ＣＣ−Ａ）＋Ｂ＝Ａｃ＋Ｂ＝（２５６−１００）＋５０＝１５６＋５０＝２０６。
このステップで演算を実行するには、最初にＡとＢを分離する必要があり、このステップでは補数数学の演算をここで説明する。
（３）ＣＨＡＮ数学を使用したＣＨＡＮコーディング（通常の数学処理及び補数数学処理）：
Ａ−１／２（Ａ−Ｂ）を使用して、ステップ（１）の結果をステップ（２）の結果に加算する。
＝Ａｃ＋Ｂ＋Ａ−１／２（Ａ−Ｂ）＝Ａｃ＋Ａ＋Ｂ−１／２（Ａ−Ｂ）
＝ＣＣ＋Ｂ−１／２（Ａ−Ｂ）＝２５６＋５０−１／２（１００−５０）
＝２５６＋５０−２５
＝２５６＋２５。
（４）ＣＨＡＮ数学を使用したＣＨＡＮコーディング：
ステップ（３）の結果からＣＣを引く。
＝［ＣＣ＋Ｂ−１／２（Ａ−Ｂ）］−ＣＣ＝Ｂ−１／２（Ａ−Ｂ）
＝［２５６＋５０−２５］−２５６
＝［５０−２５］。
（５）ＣＨＡＮ数学を使用したＣＨＡＮコーディング：
Ｂ＋１／２（Ａ−Ｂ）を使用して、ステップ（１）の結果をステップ（４）に加算する。
＝［Ｂ−１／２（Ａ−Ｂ）］＋［Ｂ＋１／２（Ａ−Ｂ）］
＝２Ｂ
＝［５０−２５］＋［５０＋２５］
＝２５＋７５
＝１００
（６）通常の数学処理：
２Ｂを２で割ってＢの値を得る。
＝２Ｂ／２＝Ｂ
＝１００／２＝５０
（７）通常の数学処理：
Ａ＋ＢからＢを引くことで、Ａの値を得る。
＝Ａ＋Ｂ−Ｂ
＝１５０−５０
＝１００
上記説明は、通常の数学処理、補数数学処理、及びＣＨＡＮ数学を使用したＣＨＡＮコーディングの違いを示している。
【００２２】
上記ステップ（２）で実行される補数数学は、ＡとＢが分離され事前に知られた後にのみ行われるので、別のデータ情報である（Ａ−Ｂ）（即ち、新しいコード単位定義が発明される前に、それは後で明らかにされる）が追加されなければならない。それによって、Ａ及びＢは式（Ａ＋Ｂ）＋（Ａ−Ｂ）＝２＊Ａ及び２＊Ａ／２＝Ａ並びに（Ａ＋Ｂ）＋（Ａ−Ｂ）＝２＊Ｂ及び２＊Ｂ／２＝Ｂを使用して分離することができる。ＲＰビットを使用すると、分離後のＡ及びＢは、ａ及びｂとして読み取られる第１値及び第２値の位置に正しく復元できる。そしてステップ（２）は、そのような基本コンポーネントを演算する時に補数数学がどのように機能するかを示しているだけである。
【００２３】
補数数学は、情報理論における鳩ノ巣原理の挑戦を解決するのには直接役立たない。ただし、データ値の加減算に範囲を使用するという概念と、相補定数又は値を指定したミラー値の概念を強調している。範囲が絶対アドレス分岐を使用する演算に不可欠であるか、又はデータ値又は数値がどのように表現されて定義されるかという点で潜在的であるので、情報理論における鳩ノ巣原理の挑戦は成功した結果で満たされる。
【００２４】
情報理論における鳩ノ巣原理の神話の終わりを確認する前に、本発明は、ＣＨＡＮフレームワークの下で数式を使用することがエンコーディング及びデコーディングのための無数のアルゴリズムをどのように生成できるかについてより詳細に説明する。図表７から説明し、４つの基本コンポーネントと４つのコード単位が１つの処理ユニットを構成する。
ほとんどの場合、処理ユニットの４つの基本コンポーネントは３つのアーム、即ちロングアーム、ミドルアーム、ショートアームに配置でき、２対の基本コンポーネントは対応したアームの上隅（より大きな合計を持つ１対の２つの基本コンポーネント）及び下隅（より小さな合計を持つ１対の２つの基本コンポーネント）を示す。しかし、まれに、これらの対の値がある方式で同じ値になることがあるため、３本未満のアームが存在でき、例えば２本又は１本だけ、又は点状になることもある。従って、処理ユニットの４つの基本コンポーネントの値の割り当ては、次のように異なるＣＨＡＮ形状で表すことができる。
図表７
ＣＨＡＮ形状
ＣＨＡＮ点●
これは、４つの基本コンポーネントの全てが同じ値を持つ場所である。
ＣＨＡＮ直線
以下のように２つのＣＨＡＮ直線がある。
ＣＨＡＮ直線１：３本のアームは全て、［１］＋［４］の値が上隅、［２］＋［３］の値が下隅にあるショートアームと重なり合っている。
【数１】
2019528027.tif 000005
ＣＨＡＮ直線２：３本のアームは全て、［２］＋［３］が上隅、［１］＋［４］が下隅にあるショートアームと重なり合っている。
【数２】
2019528027.tif 000006
ＣＨＡＮ三角形
ロングアームとミドルアームの２本のアームがあり、ショートアームは［１］＋［４］と［２］＋［３］の値の対が等しいので点になる。
【表４】
2019528027.tif 000007
ＣＨＡＮ長方形、台形及び正方形
ＣＨＡＮ長方形１は、４つのコード単位のデータ値の入力ストリームを順々に示す。
【表５】
2019528027.tif 000008
ＣＨＡＮ長方形２は、４つのコード単位のデータ値の入力ストリームのランク及び位置を示す。
【表６】
2019528027.tif 000009
上記ＣＨＡＮ長方形は、処理ユニットの最初のコード単位値ａがＢであり、４つのコード単位の中で２番目にランク付けされ、２番目のコード単位値ｂがＣであり、３番目にランク付けされ、３番目のコード単位値ｃがＡであり、１番目にランク付けされ、４番目のコード単位値ｄがＤであり、順位の最後であることを示している。
ＣＨＡＮ台形はＣＨＡＮ長方形の４つの基本コンポーネント間の関係を示している。
ＣＨＡＮ台形１
３本のアームの上隅は［１］＋［２］、［１］＋［３］、［１］＋［４］であり、且つ、
【表７】
2019528027.tif 000010
３本のアームの下隅は［３］＋［４］、［２］＋［４］、［２］＋［３］である。
ＣＨＡＮ台形１は、ＣＨＡＮ長方形２に示された４つのコード単位の４個の値である４つの基本コンポーネントの関係を示しており、ここで、Ａは［１］、Ｂは［２］、Ｃは［３］、Ｄは［４］で新たに表され、同様に、（Ａ＋Ｂ）＝［１］＋［２］、（Ａ−Ｂ）＝［１］−［２］等となる。処理ユニット［１］、［２］、［３］及び［４］の４つの基本コンポーネントの値は、（［１］＋［２］）−［３］＋［４］）であるロングアーム、（［１］＋［３］）−（［２］＋［４］）であるミドルアーム、（［１］＋［４］）−（［２］＋［３］）であるショートアームの３つのアームに配置できることが分かる。［１］＋［２］＋［３］＋［４］の値の合計は、３本のアーム全てで常に同じである。３本のアーム間の差はそれらの長さ、即ち３本のアームの上隅と下隅との間の値の差に反映される。
ロングアーム及びミドルアームはランク付けされた値の配列では常に同じ方法でいる。しかし、ショートアームの上隅及び下隅は、４つの基本コンポーネントの値の割り当てに応じて入れ替わる。従って、２つのシナリオがある。例えば、［１］＋［４］の値がＣＨＡＮ台形１の場合のように［２］＋［３］の方よりも大きいか、又は逆に、ＣＨＡＮ台形２で次のように表される。
ＣＨＡＮ台形２
【表８】
2019528027.tif 000011
３本のアームの上隅は［１］＋［２］、［１］＋［３］及び［１］＋［４］であり、ＣＨＡＮ台形１では３本のアームの下隅は［３］＋［４］、［２］＋［４］及び［２］＋［３］である。
ＣＨＡＮ台形１では、ロングアーム、ミドルアーム、ショートアームの値は次のように再割り当てすることができる。
ロングアーム＝（［１］＋［２］）−（［３］＋［４］）＝（［１］−［４］）＋（［２］−［３］）＝（［１］−［３］）＋（［２］−［４］）
ミドルアーム＝（［１］＋［３］）−（［２］＋［４］）＝（［１］−［４］）−（［２］−［３］）＝（［１］−［２］）＋（［３］−［４］）且つ
ショートアーム＝（［１］＋［４］）−（［２］＋［３］）＝（［１］−［３］）−（［２］−［４］）＝（［１］−［２］）−（［３］−［４］）。
ＣＨＡＮ台形２では、ロングアーム、ミドルアーム、ショートアームの各値は次のように再割り当てすることもできる。
ロングアーム＝（［１］＋［２］）−（［３］＋［４］）＝（［１］−［４］）＋（［２］−［３］）＝（［２］−［４］）＋（［１］−［３］）
ミドルアーム＝（［１］＋［３］）−（［２］＋［４］）＝（［１］−［４］）−（［２］−［３］）＝（［３］−［４］）＋（［１］−［２］）且つ
ショートアーム＝（［２］＋［３］）−（［１］＋［４］）＝（［２］−［４］）−（［１］−［３］）＝（［３］−［４］）−（［１］−［２］）。
そのため、ＣＨＡＮ台形１及び２では、ロングアームは常にミドルアーム２＊（［２］−［３］）以上である。
しかし、ショートアームの上隅と下隅の値を入れ替える２つのシナリオが考えられるため、ＣＨＡＮ台形１では、ロングアームは常にショートアーム２＊（［２］−［４］）以上であり、且つミドルアームは常にショートアーム２＊（［３］−［４］）以上である。
そしてＣＨＡＮ台形２では、ロングアームは常にショートアーム２＊（［１］−［３］）以上であり、且つミドルアームは常にショートアーム２＊（［１］−［２］）以上である。
ＣＨＡＮ台形３又はＣＨＡＮ正方形１
【表９】
2019528027.tif 000012
これは、ミドルアームがロングアームと重なる場所であり、ショートアームの上隅及び下隅がそれぞれ［１］＋［４］及び［２］＋［３］である。２本のアームの長さが等しくない場合は台形、それ以外の場合は正方形である。
ＣＨＡＮ台形４又はＣＨＡＮ正方形２
これは、ミドルアームがロングアームと重なる場所であり、ショートアームの上隅及び下隅がそれぞれ［２］＋［３］及び［１］＋［４］である。２本のアームの長さが等しくない場合は台形、それ以外の場合は正方形である。
【表１０】
2019528027.tif 000013
ＣＨＡＮ台形５又はＣＨＡＮ正方形３
これは、ショートアームがミドルアームと重なる場所であり、ショートアームの上隅及び下隅がそれぞれ［１］＋［４］及び［２］＋［３］である。２本のアームの長さが等しくない場合は台形、それ以外の場合は正方形である。
【表１１】
2019528027.tif 000014
ＣＨＡＮ台形６又はＣＨＡＮ正方形４
これは、ショートアームがミドルアームと重なる場所であり、ショートアームの上隅及び下隅がそれぞれ［２］＋［３］及び［１］＋［４］である。２本のアームの長さが等しくない場合は台形、それ以外の場合は正方形である。
【表１２】
2019528027.tif 000015
【００２５】
本図においてデータのエンコーディング及びデコーディングを可能にするために、４つの基本コンポーネントの４個の値は、次の図表８に示すように、４つの基本コンポーネントの値の位置とランクの関係を示すために使用されるＲＰピースに加えて、４つのサブピースからなる１つのＣＶピースで表されなければならない（そのような目的のために設計された４つの式の使用によって作り出される。３つ以下の式を使用しようと試みることができるが、これまでのところその努力は有望な結果を示すようには思われない。しかしながら、本発明がこの出願に示されるように、ＣＨＡＮフレームワークに新しい技術を導入する多くの機会があるので、そのような可能性を排除すべきではない）。
図表８
４つの入力基本コンポーネントの位置とランクの詳細及び結果のＣＨＡＮコードを示すＣＨＡＮ長方形Ｓ
４つのコード単位のデータ値の入力ストリームのランクと位置、及び使用される６４ビットサイズを示すＣＨＡＮ長方形３
【表１３】
2019528027.tif 000016
ＣＨＡＮ長方形４ＣＨＡＮコード、ＣＨＡＮコーディングを使用して作成されたＲＰピースとＣＶピースの詳細を示す圧縮コード
【表１４】
2019528027.tif 000017
本発明の１つの非常に際立った特徴として、ＣＶピースを構成する４つのサブピースの値の可変ビットサイズであり、且つＲＰピースそのものは４ビットから５ビットの間で変化し、また、ビットサイズが異なるにも関わらず、後で開示されるＣＨＡＮコーディング技術を使用して、関連するＣＨＡＮコードをデコーディングしてそれをオリジナル入力デジタルデータコードにロスレスに正しく復元することができる。圧縮を行う目的で、使用される可変ビットサイズは、ＣＨＡＮコーディング技術を使用することによって圧縮率をさらに上げることを目的としており、この場合は数式を使用して達成することができる圧縮率よりも優れる。
【００２６】
まず、ＲＰピースについて説明する。ＲＰピースは、処理ユニットの４つの基本コンポーネント（４つのコード単位）の４つのランク値の相対位置を示すために使用される。４つの基本コンポーネントのランクは位置によって異なる可能性があるので、４つの基本コンポーネントの値の位置とランクの関係を決定するための固定している法則がない。次の図表９に示すように、位置とランクの間には全部で２４種の組み合わせがある。
図表９
ランクと位置のコード表
４つの基本コンポーネントの位置とランクの可能な組み合わせ
【表１５】
2019528027.tif 000018
【００２７】
４つの基本コンポーネントの値のランクと位置の間には合計で２４個のバリエーションがあるので、分解時に４つの基本コンポーネントの値のランク及び位置を正しく復元できるように、これらランクと位置の２４個のバリエーションを収容して指示するために通常５ビットを使用しなければならない。即ち、基本コンポーネントの４個のランク値を、入力デジタルデータ入力におけるこれらの値の位置に対応する正しい位置に戻すことができる。ただし、絶対アドレス分岐と呼ばれる技術を使用して、スペースを無駄にしないようにすることができる。絶対アドレス分岐を使用しないのであれば、２４個のバリエーションを収容するために３２個の位置があり、８個の位置が空いて無駄になるためである。
【００２８】
最も単純なケースを使用するには、３個の値だけを持つことがある。その場合、３個の値のバリエーションに対して４個の位置を提供するには通常２ビットを使用する必要がある。しかしながら、絶対アドレス分岐が使用される場合、値＝１の場合には、１ビットのみが使用され、値＝２又は＝３の場合には、２ビットが使用されなければならない。例えば、検索プロセスは次のように作動する。（１）まず、１ビットを読み取る。（２）ビット値が０であり、値が１であることを表す場合、２番目のビットを読み取る必要はない。ビット値が１の場合、２番目のビットを読み取る必要がある。２番目のビットが０の場合、値は２であり、２番目のビットが１の場合、値は３になる。それによって、考えられる３個の値を収容するためにスペースを節約する。表示のために、１／３のケース又はバリエーションは１ビットを使用し、他の２／３のケース又はバリエーションは２ビットを使用しなければならない。
【００２９】
従って、絶対アドレス分岐を使用すると、２４個のバリエーションのうち８個のバリエーションは、収容するのに４ビットしか必要とせず、残りの１６個のバリエーションは５ビットを必要とする。つまり、４ビットでは１６個の位置しか提供されず、５ビットでは３２個の位置が提供される。また、２４個のバリエーションがある場合、４ビットで提供される位置に８個のバリエーションがあるため、４ビットで提供される１６個の位置のうち８個の位置が２つのバリエーションを表すために保留する必要がある。従って、まず４ビットを読み取ることができ、前記値が１から８の間であることが分かった場合は、停止して別のビットを読み取らなくてもよい。しかしながら、４ビットを読み取り値が９から１６の間である場合、これらの８個のバリエーションに対しては、それがどの値を表すかを決定するために別のビットを読み取らなければならない。例えば９が決定されると、それは９又は１７のような別の値を表すことができ、それから、別のビットで読まなければならず、この別のビットが０であれば、それは９のままであることを意味し、１であれば、前記値が１７であり、１７の値を持つランク位置コードを表し、それによって、［１］、［２］、［３］、［４］の値を、以上の図表９におけるランク位置コード表を参照して検索することによって、３、４、１、及び２の位置に配置する必要があるというＲＰパターンを示している。従って、絶対アドレス分岐は、アドレス（通常のように１個の値を示すのではなく）、設計によっては１つ以上の余分なビットを使用して２個以上の値を識別するために分岐することができる設計である。範囲制限、即ち、変数値がその決定のために選択される最大の可能な組み合わせ又は選択肢が知られている時に、前記絶対アドレス分岐は使用される。例えば、処理ユニットがＲＰの組み合わせのどの特定の値を持つかを指示して、［１］、［２］、［３］、［４］の値を入力デジタルデータストリームの１、２、３、４番目の位置にどのように入れるかを示すための範囲制限として使用できることが知られているため、上記ＲＰテーブルでは、ランクと位置の組み合わせは２４個しかないことが知られているため、最大の可能な組み合わせは２４個だけである。この範囲制限が既知で絶対アドレス分岐が使用されているため、平均して、これら２４個の組み合わせには通常必要な５ビットではなく、わずか４．５ビットが必要である。
【００３０】
４つの基本コンポーネントであるＡ＝［１］、Ｂ＝［２］、Ｃ＝［３］、Ｄ＝［４］のランク値を決定する。［１］、［２］、［３］及び［４］の値を決定するために、ＣＨＡＮ長方形及びＣＨＡＮ台形に関する式を使用して、４つの基本コンポーネントの基本的な関係及び特徴を表すことができ、上記段落００２９で説明されたように、ＲＰピース及びＣＶピースが全体として占めるビットサイズは、４つの入力基本コンポーネントａ、ｂ、ｃ、及びｄによって占められる合計ビットサイズより小さく、即ち、前記合計ビットサイズは、前記ＣＨＡＮ長方形及びＣＨＡＮ台形を使用して本発明において提示されるスキーマの下での処理ユニットのコード単位のサイズの４倍である。
【００３１】
ＣＨＡＮ形状で表される処理ユニットを構成する４つの基本コンポーネント間の特徴及び関係を綿密に研究した後、ＣＶピースの３つのサブピースに表される式の以下の組み合わせは、後ろで働く原理を説明するための初めての試みである。他の類似の式を見つけて使用することができる。そのため、制限はないが、ＣＨＡＮ形状を参照して以下に示す式を使用することが含まれる。従って、この初めての試みは次のとおりである。
（１）      ＝（［４］−１／２（［３］−［４］））
（２）      ＝（［１］−［４］）
（３）      ＝（（［２］−［３］）＋１／２（［３］−［４］））
ステップ（１）からステップ（３）の式で表される上記３個の値は、上記２０１６年８月５日に出願されたＰＣＴ出願ＰＣＴ／ＩＢ２０１６／０５４７３２に提示されているものとは異なる。前記ＰＣＴ出願では、ランク及び位置処理の用途と組み合わせた補数数学の使用は、情報理論における鳩ノ巣原理の神話に終止符を打つことができると主張されている。より慎重に検討した結果、このように使用された３つの式はその目的を達成するのに十分によくないことが見出された。従って、正しい式及び式の設計は、ＣＨＡＮコーディング技術を適用するために非常に重要なことである。上記ＰＣＴ出願では、ＣＨＡＮ形状で表されるように、ＣＨＡＮコーディングは、基本コンポーネント（即ち処理ユニットのコード単位）間の特徴及び関係を使用して設計された式を使用して行われる。
【００３２】
式の設計は科学というよりは芸術である。処理ユニットの様々な基本コンポーネントと派生コンポーネントの間の特徴と関係の全ての組み合わせを使い果たすことはできなかったので、新しい考え方が適切な式を正しく使用するのに役立つ。上記ＰＣＴ出願で使用されている３つの式は、３つの式を使用して、場合によってＣＨＡＮ台形又はＣＨＡＮ正方形又はＣＨＡＮ三角形又はＣＨＡＮ点又はＣＨＡＮ直線を含む関連ＣＨＡＮ形状を再現できるように、前向きな考え方に従って設計されるものである。しかし、この考え方を使用すると、前記ＰＣＴ出願に導入された技術を使用して設計された３つの式で表されるように、基本コンポーネントをそれらの派生コンポーネントから分離できないことはある（又は計算用の組み合わせがほとんど使い果たされないため容易に分離できない）ことが分かった。
【００３３】
情報理論における鳩ノ巣原理の挑戦を満たすために、上記ＰＣＴ出願には新規な考え方が欠けている。そして、ここで試みられる。物事が前向きに機能しない場合、逆の方式で機能する可能性がある。これは補数数学に関連する考え方やパラダイムでもある。そのため、正しいＣＨＡＮ形状を再現するように設計された式がよい結果をもたらさない場合、これら３つの式に差異を導入しようと試みることができる。そこで、本発明では、差異導入（異常導入とも呼ばれる）技術が開示されており、それによって、差異導入や相補コーディングのような有用な技術を利用して、ＣＨＡＮコーディングの全ての技術が鳩ノ巣原理の神話を終わらせるようにし、それによって、相補コーディングの有用性及び式設計段階での差異導入自体の有用性を示す。
【００３４】
そのため、設計段階では、最初のステップとして、通常の方法でエンコーディング用の式を設計し、設計された式を使用してＣＨＡＮ形状を再現できるようにする。例えば、上記ＰＣＴ出願に与えられた実例を使用して、ステップ（１）からステップ（３）においてＣＨＡＮコードのＣＶピースの３つのサブピースの値及びエンコーディングされたコードを導き出す３つの式は以下のとおりである。
（１）＝（［１］−［４］）
（２）＝（［２］−［３］）及び
（３）＝（［３］＋［４］）。
通常の数学によって、以下に引用する上記ＰＣＴ出願のステップ（４）からステップ（９）において、関連するＣＨＡＮ形状を以下のように再現する。
（４）＝（１）＋（２）。即ち、ステップ（１）＋ステップ（２）
＝（［１］−［４］）＋（［２］−［３］）。これら４個のランク値の再配置又は再割り当て時に、
＝（［１］＋［２］）−（［３］＋［４］）となり、ロングアームを得る。
＝（［１］−［３］）＋（［２］−［４］）。長さの違いを他のアームと比較するため。
（５）＝（１）−（２）。
＝（［１］−［４］）−（［２］−［３］）。
＝（［１］＋［３］）−（［２］＋［４］）。ミドルアームを得る。
＝（［１］−［２］）＋（［３］−［４］）。
（６）＝（１）＋（３）。
＝（［１］−［４］）＋（［３］＋［４］）。
＝（［１］＋［３］）。ミドルアームの上隅。
（７）＝（２）＋（３）。
＝（［２］−［３］）＋（［３］＋［４］）。
＝（［２］＋［４］）。ミドルアームの下隅。
（８）＝（６）＋（７）。
＝（［１］＋［３］）＋（［２］＋［４］）。［１］＋［２］＋［３］＋［４］の合計であり、ロングアームの上隅を見つけるのに非常に有用である。
＝（［１］＋［２］＋［３］＋［４］）。
（９）＝（８）−（３）。
＝（［１］＋［２］＋［３］＋［４］）−（［３］＋［４］）。ここで、［３］＋［４］＝ステップ（３）をロングアームの下隅として指定する。
＝（［１］＋［２］）。ロングアームの上隅。
【００３５】
上記ステップから、ステップ（４）からステップ（９）までの通常の数学を使用して、ロングアーム及びミドルアームの２つの隅並びにアーム自体が適切に再現されることが分かる。ただし、３つの適切な式を使用すると、基本コンポーネントは併合されると共に派生コンポーネント内で非常にうまく結合され、その結果、基本コンポーネントを互いに簡単に分離することはできない。従って、新しい世界を発見できるか否かを確認するためにさらに処理を続けるために、３つの適切に設計された式に差異を導入することを試みることができる。ごみの出し方の原則として、差異をランダムに導入すべきではない。設計された３つの適切な式に有用な情報を提供するために何が必要かに焦点を当てるべきである。
【００３６】
上記実例では、派生コンポーネントから４つの基本コンポーネントを分離するという当面の問題を解決するための追加の情報を提供するのに重要である２つの派生コンポーネントが欠けていることが容易に分かる。これら２つの派生コンポーネントは［１］−［２］と［３］−［４］であると識別される。これら２つの派生コンポーネントのいずれかを有すると、ステップ（９）で得られた（［１］−［２］）と（［１］＋［２］）及びステップ（３）で得られた（［３］−［４］）と（［３］＋［４］）の間の加減算によって基本コンポーネントを容易に分離することができる。そのため、［１］−［２］と［３］−［４］のいずれか又は両方を３つの適切な式に導入することを試みることができる。そして、必要に応じて、式をさらに調整することができる。
【００３７】
数え切れないほどの試行や錯誤を経て、これまでに概説したＣＨＡＮフレームワークの下で、段落００３１に記載の式の設計に差異導入又は異常導入の特徴を試みる場合においても、４つのコード単位を処理ユニットとして使用するスキーマでは３つの式だけを使用して正しくデコーティングする式の設計が発見されていない。従って、［１］−［２］又は［３］−［４］等の第４式、つまりステップ（４）＝［１］−［２］又はステップ（４）＝［３］−［４］は、正しいデコーティングのために導入されている。あるいは、もっと賢い人は３つの式を使うという解決策を思いつくことができるかもしれない。だからこの点でまだ希望がある。ＣＨＡＮフレームワークの革新点は、デジタルデータの順序付けや組織、デジタルデータから記述可能な順序や構造を作成するための様々な方式を可能にして、様々なデータ割り当てのデジタルデータの性質を研究してそれらの特徴の差異を比較し、デジタル情報の保護のための圧縮及び暗号化を目的としたエンコーディング及びデコーディングのために異なる技術を考案することができるように、そのようなデータ特徴の規則性（法則又は規則）を識別することを可能にする。従って、後で見られるように、実りある結果が得られ得る。
【００３８】
ＲＰピースと共に４つの式を使用して発生した４つのＣＶサブピースを使用して、オリジナルデジタル情報を正しく復元するように、デコーディングする時に４つの基本コンポーネント又は処理ユニットのコード単位の値を首尾よく分離する必要がある場合にも、式の設計やデジタル情報のデータ割り当てに応じて圧縮する機会が得られ得る。後で見られるように、スーパー処理ユニットを使用する別の技術を導入する場合は、他のＣＨＡＮコーディング技術、例えばＣＨＡＮフレームワークの下で定義されたデータエンコーダ、特にデジタルデータブラックホールの設計、作成、実現における異常導入及び絶対アドレス分岐技術の使用により、全てのデータ割り当てのデジタルデータ（ランダムデータをも含む）を圧縮しても実り多い結果をもたらす。ただし、ＣＨＡＮフレームワークで使用されている式の設計は、データ保護の目的でデジタルデータの暗号化及び復号を行うための無限の方法又はアルゴリズムを提供するのに役立つ。そして、これは暗号化及び復号を行う簡単な方法で、素人でも簡単に実行できる。それほど賢くない人には、［１］、［２］、［３］、［４］の値は、ステップ（１）から（４）で表される式と、段落００３４及び００３６において概説された他の派生ステップを使って互いに分離される。スペースの最適化のために式の調整及びステップをさらに設計することができ、適用可能であれば、以下の段落００４３及び００４４に概説されている実例に基づいてモデリングする。
【００３９】
段落００３７のステップ（Ｉ）からステップ（ＩＶ）に記載された式を使用して計算されたデータの値は、エンコーディングプロセス中にＣＨＡＮコードのＣＶピースの４つのサブピースに入れられる。エンコーディングの際に、これら４個の値は、対応するＲＰピースと共にＣＶピースの４つのサブピースとしてＣＨＡＮコードファイルに記憶される。各ＣＶサブピースの値の範囲制限は、それぞれの式を使用して出現可能な全ての値に対応するのに十分な大きさにする必要がある。デコーディング中に、絶対アドレス分岐技術を使用し、且つ、図表９に使用される関連ランク位置コード表に対して、検索値、対応する処理ユニットのランク位置コードを調べることによって、ＲＰピース及びＣＶピースを読み出してデコーディングを行い、それによって、処理ユニットの［１］、［２］、［３］及び［４］のランク値がデコーディング中にどこに配置されるべきかを決定する。［１］、［２］、［３］及び［４］のランク値は、段落００３８に概説された上記ステップに示されるように、段落００３７におけるステップ（Ｉ）からステップ（ＩＶ）で記憶された対応するＣＶピースの４つのサブピースの値を用いて決定される。ＣＶピースの４つのサブピースは、段落００４３及び００４４で開示された技術を使用して配置され、これは、ＣＶサブピースの配置の範囲制限を決定して必要に応じて設計を調整することに対して補数数学及び相補コーディングの価値を詳しく説明した。ここで、絶対アドレス分岐技術とは、省スペースを最適化するための技術である。段落００３７に記載されている４つの式で［１］、［２］、［３］及び［４］を置き換えるａ、ｂ、ｃ、ｄの単純な置き換えも、ＲＰピースを省略できる可能性を示している。これは、そのような置換によって、段落００３７及び００３８で概説された式がＲＰ処理なしでも機能できることを意味する。しかしＲＰ処理がなければ、範囲制限の使用から生じる可能性のある省スペース化の利点は失われまる。その結果、ＲＰ処理を使用する場合よりも多くのスペースが無駄になる可能性がある。
【００４０】
補数数学及び相補コーディングは、省スペースのためのＣＶサブピースの配置のための設計を行う際に非常に役立ち、そのため適切な場合にはオリジナルな式設計の調整をもたらす可能性がある。以下の図表１０は、次の図表１０と共に、段落００３１の式設計を使用して、現在の試みにおける式設計段階で補数数学及び相補コーディングを使用することによってもたらされる貢献を示している。
図表１０
ＣＨＡＮバー
相補定数ＣＣとしてコード単位サイズを用いた補数数学のパラダイムの下での範囲制限の視覚的表現
【表１６】
2019528027.tif 000019
【００４１】
以上の図表において、３つのＣＶサブピースの値を表す段落００３１の３つの式で表される範囲が、その相補範囲（未知のデータ）と一緒に示されている。Ｘ自体は知られておらず、且つ式（［２］−［３］）＋１／２（［３］−［４］）の一部としてマージされる。これらの式に導入されている異常又は差異又は調整である１／２（［３］−［４］）は、主に関連付けられたＣＨＡＮ形状をきちんと記述する［３］＋［４］及び［２］−［３］の適切に設計された式に導入される。［３］＋［４］の平均値は、（［４］＋１／２（［３］−［４］）又は（［３］−１／２（［３］−［４］）のいずれかであるため、どちらかを使用して、異常又は差異又は調整を導入できる。（［４］＋１／２（［３］−［４］）は、式の差異又は調整の導入後に修正された式と見なされ、現在の式はステップ（１）で使用されて、このような差異又は調整のバランスをとるために、それに対応して、ステップ（３）で使用されている第３式が（（［２］−［３］）＋１／２（［３］−［４］））に調整される。これは、これまで誰も憲章を作成したことのない新しい世界であるため、試行や錯誤から学ぶしかない。段落００３１で設計された式もまた上記課題に対する解決策を提供するのに成功していないので、より多くの調整が必要とされる。より賢い人であれば、ＣＨＡＮコーディングを使用して、マージデータ又は処理ユニットの基本コンポーネントとそれからの派生（又は基本コンポーネントと組み合わせる）コンポーネントとを分離するために適した他の式を設計することもできる。式の差異、式の異常、又は式の調整を導入する技術には、次のステップが含まれる。（ｉ）派生コンポーネント又は基本コンポーネントの値又は関係と特徴を再現するために使用できる式を設計する。（ｉｉ）設計された式によって表されるコンポーネントから基本コンポーネントを分離する目的のために、欠けているが追加の値を供給するために不可欠である派生コンポーネント又は基本コンポーネントを見つける。（ｉｉｉ）これらの欠けているコンポーネントを提供できる式を使用して、式の異常、式の調整、又は式の差異を設計する。そのような式の異常又は式の調整又は式の差異は、ＣＨＡＮコードのＣＶサブピースの値を取得するために使用される式に導入される。（ｉｖ）上記ステップ（ｉ）で作成した以前に設計した式に式の異常又は式の調整又は式の差異を組み込み、新しく設計され又は調整された式で表されるコンポーネントから基本コンポーネントを分離する目的で使用するのに適した新しい式のセットを作成する。
【００４２】
段落００３８で説明した４つの式を使用すると仮定すると、［１］、［２］、［３］及び［４］のランク値を決定してＲＰピースを使用した後、対応した処理ユニットのオリジナルデジタルデータ入力はロスレスにデコーディングされて、正しい位置に正しく復元されるようになる。ステップ（Ｉ）からステップ（ＩＶ）までの式によって表されるコードを、ＣＨＡＮコードのＣＶピースの４つのサブピースとして記憶するために使用される配置及びビットサイズは、検討されて、エンコーディン中にビットストレージのためにさらに最適化され得る。それには範囲制限の概念が使用される。
【００４３】
ＣＨＡＮコードのＣＶピースの４つのサブピースのどのサブピースを最初に配置するかを検討するために、記憶スペースを減少させるように１つのサブピースを配置することで他の後続のサブピースの配置に関する情報が得られるか否かを検討できる。以下の検討では、段落００３１に記載されている３つの式を使用して説明する。補数数学の価値を把握するように、段落００３１におけるステップ（１）から（３）までの自由な式（［４］＋１／２（［３］−［４］）、（［１］−［４］）及び（（［２］−［３］）＋１／２（［３］−［４］））を比較した結果、前の２つの式［４］−１／２（［３］−［４］）及び（［１］−［４］）で表される範囲が外れていることが分かり、これら範囲において一方に他方が含まれるものがない。このことから明らかなように、これらのいずれも１番目の位置に配置できる。しかし、［４］−１／２（［３］−［４］）でＣＣを使用すると、明らかなように、［４］−１／２（［３］−［４］）、つまり［４］ｃ＋１／２（［３］−［４］）は、［１］−［４］の範囲を包含できるはずであるため、［４］ｃ＋１／２（［３］−［４］）、［４］−１／２（［３］−［４］）のミラー値は、［１］−［４］の値を配置するための範囲制限として使用できる。従って、［４］−１／２（［３］−［４］）のＣＣ値が第１ＣＶサブピースとして配置されるので、式［１］−［４］の式で表される第２ＣＶサブピースは［４］−１／２（［３］−［４］）のミラー値（ＣＣ演算により起動される）を、［１］−［４］の値を格納するための範囲制限として使用できる。
【００４４】
しかしながら、まれに［４］−１／２（［３］−［４］）の値が負の値になる可能性があるので、［４］ｃ＋１／２（［３］−［４］）の値がコード単位サイズを超えている場合は、ＣＣ値、つまりコード単位サイズを［１］−［４］の値の範囲制限として使用することに戻すことができる。つまり、［４］ｃ＋１／２（［３］−［４］）とＣＣ値によって提供される２つの範囲の中から最短範囲を［１］−［４］の値の範囲制限とすることができる。他のほとんどの場合、［４］ｃ＋１／２（［３］−［４］）で表される範囲制限はＣＣ値よりも小さくなるため、ビットストレージを節約できる。［１］−［４］を（［２］−［３］）＋１／２（［３］−［４］）の範囲制限として使用することができ、それは、［１］−［４］を相補変数として使用する［２］−［３］のミラー値が［１］−［２］に［３］−［４］を加算したものであり、［３］−［４］が１／２（［３］−［４］）より大きいため、（［２］−［３］）＋１／２（［３］−［４］）が［１］−［４］の範囲内にあることが確実であるためである。従って、より多くのビットストレージを節約するために、［１］−［４］を、第３ＣＶサブピース（［２］−［３］）＋１／２（［３］−［４］）の範囲制限として使用される第２ＣＶサブピースとすることができる。これを基準として使用する前に他の範囲制限はないため、第１ＣＶサブピースを配置するための範囲制限はＣＣ値である。同様に、［４］−１／２（［３］−［４］）の値が負になる可能性があるいくつかのまれなケースに関しては、追加の符号ビットを使用する必要がある。また、前記値が半分の演算のために０．５の端数であるかもしれないので、そのような表示のために端数ビットも含まれなければならない。従って、全体ではＣＣビットサイズ＋２ビットである。従って、［１］−［４］が最大値２＾６４ではなく１，０００の場合、１，０００は（［２］−［３］）＋１／２（［３］−［４］）を格納するための範囲制限として使用できる。絶対アドレス分岐を使用して、１，０２４という制限を正確に１，０００に減らすこともできるが、この場合には節約は非常に小さくなる。使用されるビットサイズは６４ビットコード単位に通常必要とされる６４ビットの代わりに１０ビットか９ビットである。ただし、第１ＣＶサブピース［４］−１／２（［３］−［４］）の場合と同様に、第３ＣＶサブピース（［２］−［３］）＋１／２（［３］−［４］）も半分の演算のために０．５の値の端数を持つことができる。そのため、もう１つの端数ビットを［１］−［４］の値によって設定される範囲制限に割り当てる。次に、ＣＨＡＮコードのＣＶピースのこれら３つのサブピースの配置は、上記段落００３１のステップ（１）から（３）のために行うことができる。従って、範囲制限と絶対アドレス分岐の概念と技術が記憶スペースの最適化にも使用されている場合、ＣＶピースの３つのサブピース、及びそれによりＣＶピース全体のサイズが処理ユニットごとに異なる。なお、使用される範囲制限が、関連する範囲制限が使用されるように設計されているために現れる可能性のある全ての可能な値を包含できるようにするべきである。場合によっては、範囲制限はそれに数値１を加算して調整する必要がある。これは、ランク値が値自体に従ってランク付けされ、且つ値が等しい場合は、入力デジタルデータストリーム内の位置に従ってランク付けされるためである。従って、特定の値に対する範囲制限をケースバイケースで慎重に検討し、特定の値に対して設計された範囲制限が、発生する可能性のある全ての値をカバーできることを確認する必要がある。
【００４５】
例えば、ＣＨＡＮコードの以下の３つのＣＶサブピースを配置するために必要なスペース又はビットサイズ（段落００３１のものではなく、式（ＩＶ）にはコード単位の基準ビットサイズを使用すると仮定）は、例えば暗号化を目的として、次のように設計された式で表される。
式（Ｉ）＝３＊（［１］−［２］＋［３］−［４］）＋（［２］−［３］）＋（［１］＋［３］）式（ＩＩ）＝３＊（［１］−［２］＋［３］−［４］）＋（［２］−［３］）−（［２］＋［４］）及び
式（ＩＩＩ）＝［３］−［４］。
それぞれ５つのコード単位、３つのコード単位、１つのコード単位と推定される。２４種の組み合わせを提供するＲＰピースは、さらに５ビットを使い、絶対アドレス分岐が使用されている場合、一部の組み合わせは４ビットだけを使用できる。従って、コード単位サイズを６４ビットとすると、式（Ｉ）、（ＩＩ）及び（ＩＩＩ）にはそれぞれ６８ビット、６６ビット及び６４ビットが使用され、範囲制限による最適化スペースを計算しない。範囲制限を用いると、式（Ｉ）の値が式（ＩＩ）の値より大きく、式（ＩＩ）の値が式（ＩＩＩ）の値より大きいことは明らかである。そのため、式（Ｉ）を最初に配置し、次に式（ＩＩ）を配置してから式（ＩＩＩ）を配置すべきである。そのような配置技術を使用することによって、ビットストレージを最小化することができる。
【００４６】
さらに熟考した結果、補数数学は非常に有用な概念と、記憶スペースを節約するためのより技術的なツールを提供するように思われる。しかし、その重要性はむしろ、範囲処理、ミラー値、ベースシフトを含むパラダイムにあり、例えば、値のミラー値を示すためのベースとしてはＣＣ値、即ちコード単位サイズが通常の数学的処理を行う時は、値０のベースではなく、逆にカウントするためのベースとして使用される。
【００４７】
ＣＨＡＮ形状で開示された特徴及び関係を使用することによって、場合によっては通常の数学処理においてＣＨＡＮを使用している情報理論における鳩ノ巣原理の挑戦に出会う可能性があるため、処理ユニットのための異なる数のコード単位を使用して式又は他の形を設計することができる。ＣＨＡＮフレームワークの下で構築可能なコード単位と式の設計の無限の組み合わせ（及びそれと共に使用するための他の技術を追加する可能性）を考えると、誰も不可能であると断言できない。そして、これらの他の技術が式設計の特徴を使わなくても情報理論における鳩ノ巣原理の神話を終わらせることができることは後述される。
【００４８】
補数数学及び相補コーディングは、式の設計段階、エンコーディング及びデコーディングに役立つ。そのため、ＣＨＡＮ数学及びＣＨＡＮコーディングは、ＣＨＡＮ形状、及びデジタル情報のエンコーディング及びデコーディング（ランダムかを問わず）を行う際に開示された特徴及び関係に関連して、組み合わせるか又は別々に使用される通常の数学及び補数数学を含む数学処理のスーパーセットである。
【００４９】
最適化のためにさらなる検討を行う時、段落００３７及び００３８で概説された式において処理ユニットのａ、ｂ、ｃ、及びｄ値を［１］、［２］、［３］、及び［４］の値に切り替えるだけでＲＰピース及び関連するＲＰ処理を省くことができるように思われる。ただし、ＣＶサブピースの配置には、ＲＰピース及びＲＰ処理を使用した場合よりも多くのスペースが必要になる。また、ＲＰ処理の価値は、［１］、［２］、［３］及び［４］の形態の処理ユニットの４つの基本コンポーネント（ａ、ｂ、ｃ及びｄ）間の関係をより明確に示し、ＣＨＡＮ形状を使って表現する時にこれらの値を正しく理解できるようにすることにあることも理解されたい。これはさらに、本発明において概説された他のエンコーディング及びデコーディング技術を適用するための正しい式を設計するための道を開く。そのため、ＲＰピース及びＲＰ処理を使用してエンコーディング及びデコーディングを行うか否かは、ケースバイケースで決める課題である。
【００５０】
そのように設計された４つの式によって表される４つのＣＶサブピースを使用することは、暗号化のための多変量アルゴリズムを設計することを可能にする。そして、そのような暗号化されたデジタルデータは、導入される他の技術を使用して圧縮されてもよい。この方式によれば、非常に簡単で安全な暗号化／復号及び圧縮／解凍のアルゴリズム及びプロセスの両方を設計して実現することができる。暗号化／復号及び圧縮／解凍のサイクル数も結果コードに影響する。また、設計された式や実現された暗号化／復号及び圧縮／解凍のサイクル数等の情報が送信予定のデータとは別に送信されると、データセキュリティが強化され、前例のないレベルで大きく保護される。データ保護をさらに強化するために、異なるタイプのＣＨＡＮコードを別々に格納し、オリジナルデジタル情報を復元するために正しい順序で送信することができ、例えば、ＣＶサブピースの符号ビットが１つの符号ビットファイルにあり、各ＣＶサブピースが別々のＣＶサブピースファイルにあり、ＲＰピースがＲＰピースファイルにあり、ヘッダー又はフッターには、単独したヘッダーファイル又はフッターファイルにある対応するＣＨＡＮコードの処理に関する別の情報が含まれる。
【００５１】
４つのＣＶサブピースを生成する４つの式を使用しても、必ずしも圧縮が達成できないことを意味するわけではない。識別された最短範囲を選択して、圧縮のために追加される第４値の最短範囲を表す式を作ることができる。例えば、［１］がＣＣ値、即ちコード単位の最大値に非常に近い場合、ＣＣマイナス（［１］＋［２］）が、ステップ（１）からステップ（３）における最初の３つの式の処理を通じて識別される最短範囲であり、次に第４式を［１］にして、ＣＣから（［１］＋［２］）の範囲制限を減算して［１］の値を配置できる。この点に関しては、ＣＨＡＮコードの式の設計及び配置について、さらに研究を進めることができる。
【００５２】
４つのＣＶサブピースを使用しても全ての処理ユニットを圧縮することができなかったとしても、異なるタイプのデータ割り当て（個々のデータ値の頻度及び対応するデータ値、即ち存在する各値の頻度、及び存在する対応する値の数及び同一性を含む）に適した異なる式セットを設計し、ランダムデータのデジタル入力ファイル全体をランダムではないスーパー処理ユニットに分割することができる。式の設計を使用するよりもはるかに単純な他の技術が実現のためにそれに追加される時に、ランダムではないスーパー処理ユニットを使用する技術について後述する。そのような検討過程において、スーパー処理ユニットの関連概念が説明される。異なるデータ割り当てのスーパー処理ユニットに対して異なる組の式設計を使用することによって、これらの他の技術がスーパー処理ユニットと共に使用される場合と同様に、再圧縮を試みることができる。
【００５３】
従って、通常の数学処理及び補数数学を含む非常に単純なＣＨＡＮ数学の論理を使用することによって、暗号化及び復号、並びに圧縮及び解凍に関して、科学及び芸術の分野において著しい進歩がなされたことが分かった。ＰＣＴ／ＩＢ２０１６／０５４５６２で発表され、ＰＣＴ／ＩＢ２０１６／０５４７３２で確認されているように、情報理論における鳩ノ巣原理の神話を終わらせるために、他の技術が必要であり、以下のように開示されている。
【００５４】
そのような技術を開示する前に、ＣＨＡＮフレームワークはさらに微調整されなければならない。これまで、ＣＨＡＮフレームワークは次のような構造上の特徴を有する。
（ａ）コード単位（内容コード及び分類コードを含む）
（ｂ）処理ユニット
（ｃ）スーパー処理ユニット
（ｄ）エンコーディングされていないコード単位
（ｅ）（デジタルデータの全セットの）セクション
（ｆ）一部のヘッダー又はフッター
（ｇ）（デジタルデータの全セットの）メインヘッダー又はフッター
（ｈ）ＣＨＡＮファイル（上記（ａ）〜（ｇ）のデジタルコードを組み合わせるか又は単独で構成したＣＨＡＮコードを含むデジタルデータファイル）。
このようなＣＨＡＮフレームワークのスキーマ及び設計とは上記構造要素のいずれかについて選択された定義を指し、使用される場合、処理するために、様々な実施形態の下で組み合わせて使用され、本発明において開示された使用されたＣＨＡＮコーディングの選択された技術の特定のデジタルデータセットをエンコーディング及びデコーディングすることに用いられる。
【００５５】
コード単位はＣＨＡＮフレームワークの基本単位である。これまで、そのサイズ、つまりコード単位サイズは、２進数ビット数（ビットサイズ）で測定されている。そして、従来の２進数データエンコーダ（データエンコーダ、特に、本発明において開示されたようなＣＨＡＮフレームワークの下で設計されたようなデータエンコーダの特徴を持たない、その全ての固有値が同じビットサイズを有するデータエンコーダ）では、コード単位が表すことができる値の最大数（コード内容）は、コード単位のビットサイズによって制限される。例えば、コード単位は、サイズが１ビットしかない場合、２個の値だけを示し、１つの実例では、ビット値０又はビット値１である。コード単位のビットサイズが３である場合、最大８ビット値、即ち０００、００１、０１０、０１１、１００、１０１、１１０、及び１１１を表すことができる。これは、２進数ビットを用いてデータ値を表すための一般的な方式である。コード単位は、エンコーディングのためにエンコーダによってデータ入力ストリームから１つずつ読み取られるデータの基本単位である。この一般的なデータの読み取り及び表現方式によって情報の理論における鳩ノ巣原理の神話が生み出される。その詳細について、以下を参照すればよい。
ｈｔｔｐｓ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｐｉｇｅｏｎｈｏｌｅ＿ｐｒｉｎｃｉｐｌｅ
その本質は次のように説明される。
「数学では、鳩ノ巣原理によれば、ｎ＞ｍでは、ｎ個のアイテムがｍ個の容器に入れられる場合、少なくとも１つの容器に複数のアイテムが含まれている必要がある。」
言い換えれば、１つの容器が１つのアイテムしか取り込めない場合、容器が取り込めるアイテムの数は容器の数によって制限される。即ち、取り込めるアイテムの数は、アイテムを取り込むのに使用される容器の数を超えることはできない。これは、アイテムと容器の間の１対１対応関係である。
ここでのエンコーディングのためのコード単位の使用に適用すると、３ビットのビットサイズのコード単位であれば、８個のアドレスしか提供することができず、従って１回に１個の値で最大８個の固有値を表すためにしか使用できない。一般的な方式によれば、コード単位が持つことができるアドレスの数は２進数ビットサイズで測定され、コード単位に使用される２進数ビットの数が大きいほど、コード単位がコード内容値を１対１で表すために持つことができるアドレスが多くなる。従って、コード単位が有するアドレスの数は、２の（コード単位のビットサイズ（２進数ビット数）、即ちコード単位のサイズを測定する２進数ビット数）の累乗に等しい。
【００５６】
このため、これまで、圧縮を行うためのエンコーディングが可能であることは、データ割り当ての不均一な性質を利用するエンコーディング方法のためである。例えば、３ビットコード単位等の所定のビットサイズのコード単位の場合、データ入力ストリームが、０００、００１、及び１００等、３個の異なる固有コード値のみを含む場合、データ入力ストリームは圧縮され得る。あるいは、データ入力ストリームが８個の異なる固有コード値、即ち０００、００１、０１０、０１１、１００、１０１、１１０、及び１１１の全てを含む場合、これら８個のコード値の頻度分布が均一ではなく、即ち、これら８個の固有値の頻度が互いに異なる場合、依然として圧縮され得る。データ割り当ての不均一性が大きいほど、より多くの圧縮を節約できる。ランダムデータは、ランダムに現れるビット０とビット１の間の比率が均一である傾向があり、即ち、これまでいずれの規則性又は予測可能なパターンが開示されていない。そのため、ランダムデータを圧縮することはできないと思われていて、「情報理論における鳩ノ巣原理」神話が生まれた。しかし、ＣＨＡＮフレームワークがランダム割り当てを含むあらゆるタイプの割り当てのデジタルデータを記述する方式を提供するので、ランダムデータのより多くの特徴及びそれらの規則性を調査して明らかにすることができ、それによって、異なるビットサイズを使用する一意のコード単位値を収容するデータコーダ、及び異常導入やＣＨＡＮフレームワーク下で絶対アドレス分岐又はアドレスアドレス複数分岐を使用したデジタルデータブラックホール等の他のＣＨＡＮコーディング技術と共に、スーパー処理ユニットの概念及び使用を導入するにつれて、このような長い間収容されてきた神話はアンマスクされる。
【００５７】
情報理論における鳩ノ巣原理は非常に正しいが、それだけでは成り立つ。しかし、その神話は、ランダムデータを圧縮できないか、又はデータを何度も再圧縮できないというこの原理に関連する神話である。神話を終わらせるために、１つの可能な方法はランダムデータから不均一性を作ることである。不均一性を作る基本的な技術の１つは、コード単位とそのコード単位が表すために使用されるそれぞれのコード値を定義及び測定する方法を微調整することによって、不均一性を作ることである。そのため、本発明の重要な新規特徴としては、ＣＨＡＮフレームワークで使用されるコード単位の概念、ＣＨＡＮフレームワークの基本要素、コード単位及びその定義に見られる構造上の変更又は改良を再定義する。そのため、不均一性はランダムデータに容易に生じ得る。このＣＨＡＮフレームワークの構造上の変化を活用することにより、コード単位が収容すると想定される値よりも多くのアドレスを提供するスキーマを簡単に設計できる。そのため、コード値を表すのに使用できるコードアドレスの数は、ランダムデータセットを周期的に圧縮及び再圧縮するための制限要因にはならない。情報理論における鳩ノ巣原理では、デジタルデータセットの頻度分布特徴が無視される。ランダムデータセットを周期的に圧縮及び再圧縮することを可能にするために、データセットに存在するコード値の頻度分布の性質及びそれらの対応するビット長の両方にも注意を払わなければならない。ランダムデータセットを周期的に圧縮及び再圧縮するためのエンコーディング及びデコーディングにおける従来の努力に反するこれら２つの問題は、異なる固有コード値に利用可能なコードアドレスの数及びデジタルデータセットに存在する異なる固有コード値の頻度分布である。それについては、以下の説明では、１つずつ説明する。
【００５８】
まず、データセット内の異なる固有コード値に利用可能なコードアドレスの数の問題について、コード単位を再定義するという新規な特徴がＣＨＡＮフレームワークに導入されると、適切な場合には、コードフレームワークの下のコード単位は、まず、１つのコード単位が表現又は収容するために使用される異なる固有コード値の最大数により測定され、次に、コード単位全体の２進数ビット数（個々の固有コード値の可能なビットサイズに影響する）により測定され、さらにコード単位により定義されたヘッドデザインにより区別され、以上については以下の段落００６２の図表１４に示される。そのため、コード単位の命名法は、ビット数のかわりに、異なる固有コード値を保持する最大数を第１要因又は主要要因としてコード単位（もちろん１つずつ）を命名又は表現するように変化される必要があり、それによって、コード単位を指示する命名は３ビットのコード単位から８値のコード単位（又はＭａｘ８コード単位）に変わり、それに対して、ビット数はコード単位のサイズを区別するための二次的要因として使用できる。これはまた、コード単位の個々の固有コード値が同じビットサイズでしか表現できないという従来の定義に加えて、コード単位の個々の固有コード値が異なり得ることを意味する。そして、この新規な特徴は、基準のビットサイズを使用してスキーマを設計して、コード単位の全てのコード値に用いることを妨げるものではなく、従来の定義以外、コード単位の異なる固有コード値ごとに異なるビットサイズを使用してスキーマを設計する機会を提供する。それはまた、コード単位の異なる固有コード値が異なるビット値のサイズを有することができることを意味し、且つ、ビット値のサイズでコード単位の固有コード値のそれぞれに、エンコーディング及びデコーディングの特定のスキーマ及び設計の下で、コード値定義及び特定のエンコーディング及びデコーディングプロセスの時に使用される関連コード単位定義に応じて同じサイズのビット数を与えることを可能にする。例えば、８値コード単位の場合、全ての８つの固有コード値は、図表１１のように特定のスキーマ及び設計の下で３ビットの同じビットサイズを持つように定義できる。
図表１１
同じビットサイズを持つ８値コード単位のコード値の定義
Ｍａｘ８クラス
２４ビットグループ
コード値          ビット数
０００            ３
００１            ３
０１０            ３
０１１            ３
１００            ３
１０１            ３
１１０            ３
１１１            ３
あるいは、別の特定のスキーマ及び設計の下では、図表１２のように、コード単位のこれら８個の値は異なるビットサイズを持つものとして再定義できる。
図表１２
異なるビットサイズを持つ８値コード単位のコード値の定義
Ｍａｘ８クラス
３５ビットグループ
コード値          ビット数
０                １
１０              ２
１１０            ３
１１１０          ４
１１１１０        ５
１１１１１０      ６
１１１１１１０    ７
１１１１１１１    ７
【００５９】
そのため、ＣＨＡＮフレームワーク下でのコード単位は、コード単位が収容又は表現するために使用される固有コード値の最大数によって最初に測定され、コード単位の２進数ビット数は、サイズを測定するための二次的要因である。そのため、コード単位のコード値は、エンコーディング及びデコーディングに使用される特定のスキーマ及び設計における定義によって、同じビットサイズを持つことも、異なるビットサイズを持つこともできる。そのようなコード値定義又はコード単位定義はまた、ＣＨＡＮコーディングのコード調整技術を使用して、エンコーディング及びデコーディングの過程で必要且つ適切な場合には変更してもよい。
【００６０】
ＣＨＡＮフレームワーク下でのコード単位定義及びコード値定義のこの新規な特徴によれば、ランダムデータを含むデータ割り当てに不均一性を作成するための技術を簡単に設計できる。それはまた、ランダムデータの性質を調査し、且つコード値及び特定のデジタルデータ入力ストリームにおいて発生する関連頻度に応じてデータ割り当てを記述する方式を可能にし、それによって、圧縮／解凍のために、適切な技術がエンコーディング及びデコーディングに使用され得る。特定のデータセットに不均一性を作成するための技術を説明する前に、ここで３値コード単位用のスキーマ及び設計を説明して、情報理論における鳩ノ巣原理の神話を終わらせ、つまりコードアドレスの数が固有コード値の数を超えないと仮定する。コードアドレスの数が固有コード値の数以下であることは、コード単位サイズが１ビットコード単位、２ビットコード単位等のようにビットサイズで測定される場合にのみ当てはまる。コード単位が収容するように設計されているコード値の最大数の観点からコード単位を測定できる場合、これは当てはまらない。２進数ビットの数に応じてコード単位を測定する一般的な方法には、コード単位が収容できるコード値の数がコード単位に使用される２進数ビットの数によって決定されるという制限が求められる。例えば、３ビットコード単位は、最大８個の固有コード値を収容し、それぞれのコード値が３ビットで示され、それ以上でもそれ以下でもない。３ビットコード単位は、８個を超える固有コード値を収容することができない。さらに、このように一般的な定義を使用してデータを読み取る時、エンコーダ又はデコーダが存在する場合、エンコーダ又はデコーダが８個の固有コード値を全て読み取ることを避けることができない。つまり、エンコーダ又はデコーダは、３個の固有コード値だけを読み取ることができず、他の５個の固有コード値がデータセットに存在する場合は、無視又は破棄される。これは、従来のコード単位定義を使用すると、関連するエンコーダは常に同じビット長又はビットサイズのコード値を使用してデータセットを処理し、前記ビット長又はビットサイズは、コード単位定義に使用されるビットサイズより短かったり長かったりすることがない。この制限はＣＨＡＮフレームワークの下で解消される。従って、データの読み取り及び解釈の従来の設計のため、使用可能なコードアドレスの数は、設計上、コード単位が収容するように設計されているコード値の数と完全に同じである。従って、データセットに固有コード値が全て表示されると、全てのコードアドレスが使い果たされ、データセットに含まれるコード値の頻度分布の不均一性を利用するだけの技術ではランダムデータセットの圧縮が不可能になり（ＣＨＡＮコーディングの使用を除く）、ランダムデータセットに関しては、データセットの全てのコード値に対するそのような頻度分布は均一になる傾向があり、即ち、データセット全体のビット０と１との間の比率は１：１であり、コード単位の全てのコード値の頻度はほぼ同じである。従って、ランダムデータセットのコード単位のコード値の頻度分布の不均一性は、これまでに設計された従来技術の技術による圧縮を行うために利用できず（全ての固有コード値がランダムデータセットにも出現するため）、さらにデータセットに存在する固有コード値の数より多くの利用可能なコードアドレスがない。図表１３は、ＣＨＡＮフレームワークに導入されたばかりの新規な特徴（つまり、コード単位は最大コード値数で測定され、２進数ビット数はコード単位全体の２次測定として使用される）を使用した３値コード単位、Ｍａｘ３コード単位の設計を示している。
図表１３
５ビットを使用する３値コード単位のコード値の２つのバージョン定義のうち、一方は２：３、他方は３：２のビット０とビット１の比率を有する。
Ｍａｘ３クラス
５ビットグループ
０ヘッドデザイン                          １ヘッドデザイン
２：３（ビット０：ビット１の比率）        ３：２（ビット０：ビット１の比率）
０                                  １
１０                                ０１
１１                                ００
【００６１】
これ２つのバージョンの３値コード単位の定義は、コード単位のためにより多くのコードアドレスを作成でき、収容するように設計されている異なる固有コード値の数より多く、それによってデータセットに表示される固有値の数より多くのアドレスを提供するという点を示すように設計されている。３つの３値コード単位からなる処理ユニットを使用するスキーマは、データ圧縮のためにデジタルデータ入力ストリームをエンコーディング及びデコーディングするように設計されていると仮定する。前記設計では、デジタルデータ入力ストリームのコード単位を１つずつ読み取ると共に、０ヘッドデザインの定義を使用して３つの隣接するコード単位を１つのユニットである処理ユニットにエンコーディング（又はその後の復元のためにデコーディング）する。エンコーディング又はデコーディングの機能としては、０ヘッドデザインのコード単位定義をリーダーとして使用することによって３つの３値コード単位（３つずつ）を読み取り、そして３つのコード単位のコードを１つのコードブロック（１つの処理ユニットのコード）として扱うと共に別のコードブロックを使用してそれを変更し、例えば１ヘッドデザインのコード単位定義をリーダーとして使用することによってエンコーディングする時にそれをエンコーディング又は書き込み、あるいは１ヘッドデザインのコード単位定義を使用してエンコーディングコードを読み取ると共に０ヘッドデザインのコード単位定義を使用してそれを書き返し、デコーディングする時にそれをオリジナルコードに復元し、あるいは他の設計のマッピングテーブルを使用してエンコーディング及びデコーディングする。ここで使用されるコード単位には３個の固有コード値があるため、処理ユニットは表現のために最大２７個の固有値（３個の値に３つのコード単位をかけて２７個の固有値に等しい）を収容するように設計される。次の数式を使用して利用可能なアドレスの数を計算することができる。
２の（コード単位のコード値の平均ビットサイズ＊処理ユニットのコード単位数）乗
そのため、０ヘッドデザインを使用する３つの３値コード単位で構成される処理ユニットの場合、使用可能なアドレス数は次のようになる。
２の（５ビット／３値＊３単位）乗＝２の５乗＝３２
２７個の固有値に使用可能な３２個の固有アドレスがある。これが「情報理論における鳩ノ巣原理」の神話の終わりを綴る最初のサインである。この設計を使用すると、表現する必要がある固有値の数よりも多くのアドレスが存在する可能性がある。そのため、例えば２７個の異なる固有値に使用される５ビット値を４ビット値又は５ビット値に減らすことができ［例えば、絶対アドレス単一分岐を使用して、４ビットの値範囲は１６（下限値範囲）及び５ビットの値範囲は３２（上限値範囲）であり、ここでの処理ユニットの実際の値範囲は２７（実際の値範囲）である。従って、２７−１６＝１１、４ビット範囲内で単一分岐する必要がある値は１１個ある。従って、４ビットを使用する５個の値アドレスと５ビットを使用する２２個の値アドレスがあるはずである］。それでいくらかのビット節約が達成される。さらに、別の設計では、行われる特別な処理を示すための特別なアドレスとして使用するために２７個の固有アドレスの上に１個又は２個以上（最大５個）のアドレスを収容できる。例えば、エンコーディングコード内に存在する場合、２８番目のアドレスは、次の２つの処理ユニットが最後の処理ユニットと同じデータ値、さらに同じエンコーディングコードを含むことを示すことができる。このようにして、暗号化だけでなく圧縮のためにデータをエンコーディング及びデコーディングするためのより高い柔軟性を提供する。２８個のアドレス、即ち２７個の固有値アドレス及び１個の特殊処理アドレスを使用する場合、４ビットを使用する４個のアドレス［１６−１２（単一分岐用に収容する）＝４］及び５ビットを使用する２４個のアドレス［（２８−１６＝１２）＊２＝２４］が存在する。後で証拠の提供及びランダムデータセットをいかにして圧縮することができるかの実施例において、３つの３値コード単位の処理ユニット及び対応するエンコーディング及びデコーディングプロセスにおけるこのスキーマ及び設計の使用について、より詳細に詳述する。現在、特定のデータセットに不均一性を作成するための技術は、最初に次のように説明される：
【００６２】
不均一性をそれぞれのデータ割り当てに作成して圧縮可能にするためにデータセットを変更するビット０とビット１の比率を理解するために、以下、コード値の定義が異なる６値コード単位の図表１４ではコード値定義及びコード単位定義のさらなる例を示す。
図表１４ａ
２０ビット（Ｍａｘ６クラス２０ビットグループ）を使用する６値コード単位のコード値の定義：１つの多重分岐は２つのバージョンを有し、一方は５：１５、他方は１５：５のビット０とビット１の比率を有する。
Ｍａｘ６クラス
２０ビットグループ
０ヘッドデザイン                            １ヘッドデザイン
５：１５（ビット０：ビット１の比率）        １５：５（ビット０：ビット１の比率）
０                                    １
１０                                  ０１
１１０                                ００１
１１１０                              ０００１
１１１１０                            ００００１
１１１１１                            ０００００
図表１４ｂ
１６ビット（Ｍａｘ６クラス１６ビットグループ）を使用する６値コード単位のコード値の定義：３対の単一分岐は２つのバージョンを有し、一方は７：９、他方は９：７（スキュー割り当て）のビット０とビット１の比率を有する。
Ｍａｘ６クラス
１６ビットグループ
０ヘッドデザイン                          １ヘッドデザイン
７：９（ビット０：ビット１の比率）        ９：７（ビット０：ビット１の比率）
００                                １１
０１                                １０
１００                              ０１１
１０１                              ０１０
１１０                              ００１
１１１                              ０００
図表１４ｃ
１６ビット（Ｍａｘ６クラス１６ビットグループ）を使用する６値コード単位のコード値の定義：２対のノースキュー単一分岐は２つのノースキューバージョンを有し、これらのバージョンはビット０とビット１の比率が等しく、ビット０とビット１の比率がいずれも８：８（ノースキュー）である。
Ｍａｘ６クラス
１６ビットグループ
２つの０ヘッドデザイン                    ３つの１ヘッドデザイン
８：８（ビット０：ビット１の比率）        ８：８（ビット０：ビット１の比率）
００                                ０００
１１                                ００１
０１０                              ０１
０１１                              １０
１０１                              １１０
１００                              １１１
図表１４ｄ
１７ビット（Ｍａｘ６クラス１７ビットグループ）を使用する６値コード単位のコード値の定義：１対の単一分岐と１対の多重分岐は２つのバージョンを有し、一方は６：１１、他方は１１：６のビット０とビット１の比率を有する。
Ｍａｘ６クラス
１７ビットグループ
０ヘッドデザイン                          １ヘッドデザイン
６：１１（ビット０：ビット１の比率）        １１：６（ビット０：ビット１の比率）
００                                １１
０１                                １０
１０                                ０１
１１０                              ００１
１１１０                            ０００１
１１１１                            ００００
図表１４ｅ
１８ビット（Ｍａｘ６クラス１８ビットグループ）を使用する６値コード単位のコード値の定義：１対の単一分岐と１対の多重分岐は２つのバージョンを有し、一方は６：１２、他方は１２：６のビット０とビット１の比率を有する。
Ｍａｘ６クラス
１８ビットグループ
０ヘッドデザイン                            １ヘッドデザイン
６：１２（ビット０：ビット１の比率）        １２：６（ビット０：ビット１の比率）
０                                    １
１００                                ０１１
１０１                                ０１０
１１０                                ００１
１１１０                              ０００１
１１１１                              ００００
図表１４ｆ
１９ビット（Ｍａｘ６クラス１９ビットグループ）を使用する６値コード単位のコード値の定義：２対の単一分岐は２つのバージョンを有し、一方は６：１３、他方は１３：６のビット０とビット１の比率を有する。
Ｍａｘ６クラス
１９ビットグループ
０ヘッドデザイン                            １ヘッドデザイン
６：１３（ビット０：ビット１の比率）        １３：６（ビット０：ビット１の比率）
０                                    １
１０                                  ０１
１１００                              ００１１
１１０１                              ００１０
１１１０                              ０００１
１１１１                              ００００
【００６３】
図表１４から分かるように、異なるビット０とビット１の比率を有する１６ビットから２０ビットを使用することによって、６値コード単位について複数の定義があり得る。そのため、コード単位は、主にそれが収容する固定データ値の最大数によって分類され、次にビットサイズの数によって分類され、そしてヘッドデザインのバージョン（０ヘッドか１ヘッドか）によって分類される。デジタルデータセットの特性及び特徴を記述するための言語（本発明において開示されるように、ＣＨＡＮフレームワークの構造要素及びＣＨＡＮコーディング技術の特性又は特徴を記述するために使用される用語を使用するＣＨＡＮフレームワーク言語）の基本単位として使用されることに加え、コード単位を定義するこのスキーマは、デジタルデータを操作するための基本単位としてコード単位を使用する時に大きな柔軟性を可能にする。これは、ビットサイズのみに基づいてコード単位を定義する従来の方法とは異なり、従来の方法では特定のビットサイズのコード単位は１つのバージョンのコード定義しか持つことができず、ここで表現される固有値の最大の数を変えることはできず（例えば、従来の方法で定義された３ビットコード単位に対しては、表現すべき８個の固有値があり、また８つの可能な組み合わせのうち６個だけの固有値を表し、他の２個の固有値を無視して処理又は処理されないようにすることはできない。つまり、それが従来の方法で定義された３ビットコード単位を持つデータセットに表示される場合、他の２個を処理せずに６個の固有値のみを処理することができない）ヘッドデザインが異なることもない。ＣＨＡＮフレームワークのコード定義スキーマでは、コード単位定義に異なるバージョンを有する定義、コード単位の合計ビットサイズの変更、コード単位の値ビットサイズの変更、またコード単位の対応するように設計されている固有値の数の変更及び０ヘッド又は１ヘッドデザインの変更を含むことができる。
６値コード単位の異なる設計タイプのそれぞれに対して異なるスキーマとコード値の定義との間の上記違いを利用して、既存のデジタルデータセットに不均一性を作成することができ、例えばビット０とビット１の比率を変更する。例えば、図表１４ｃは１６ビット６値コード単位の２つのノースキューバージョン（即ち、０ヘッドデザイン及び１ヘッドデザイン）を提供する。特に指定がない限り、以下の説明では０ヘッドデザインバージョンを使用する。それを図表１４ｂの対応する３対のスキュー単一分岐バージョンと比較すると、ノースキューバージョン及び３対のスキュー単一分岐バージョンは両方とも１６ビットを使用して６値コード単位の６個の固有値を表す。これらは使用されるビットコードのパターン及びビット０とビット１の比率が異なるだけであり、ノースキューバージョンの比率が８：８であるが、３対のスキュード単一分岐バージョンが７：９である。ノースキューバージョンのビット１の数を増やすために、マッピング変換後の新しいデータセットのビット０とビット１の比率が８：８から７：９に変換されるように、２組の６個のコード値間でクロスマッピングを実行することができる。しかしながら、いくつかの試行をした後、エンコーディング変換を１回使用して、ランダムデータセットに対する前記比率の変更は可能であるが比較的小さいことが分かった。これはランダムデータセットにある６個の固有コード値の頻度分布の性質によるものである。図表１５は、２０１７年２月２２日に出願されたＰＣＴ出願ＰＣＴ／ＩＢ２０１６／０５４７３２に記載の、自動化プログラムを実行することによって生成された結果の一例を示し（このような自動化プログラムは優先権の主張に従って本ＰＣＴ出願に含まれているため、それらへのアクセスは上記ＰＣＴ出願を参照することによって得られ、従って本ＰＣＴ出願にはもはや記載されない。なお、自動ライブラリヘルプファイルと協働してその使用を論じる時、ランダムデータセットが圧縮され得るという最終的な証拠としてのプログラムがリストされ、それにより、ＣＨＡＮコーディング方法及び技術を使用したＣＨＡＮコード及びＣＨＡＮファイルの形成におけるＣＨＡＮフレームワークの実際の達成方式における暗号化／復号及び圧縮／解凍を目的とするように、エンコーディング及びデコーディング用のデータエンコーダをどのように構成するかは当業者には明らかに見える）、次のように８０，０００個のランダム２進数ビットを使用する。
図表１５
ノースキューバージョンに用いられる３つの０ヘッドデザインの６値コード単位の６個の固有コード値の頻度分布
コード値          頻度
０００            ３９９５
００１            ４０１９
０１              ８０７４
１０              ７９４９
１１０            ３９８０
１１１            ３９９１
【００６４】
図表１５は、このような生成の実例の１つである。それを生成する自動化プログラムを一度実行すると、このような実例が１つ生成される。各実例は他の実例とわずかに異なる。しかし、一般的に、６値コード単位の頻度分布のこのような実例は６個の固有コード値に対して毎回ほぼ同じ割合を維持する。ノースキューバージョンのコード値と６値コード単位の３対の単一分岐バージョンとのクロスマッピング及び関連計算は図表１６に示すとおりである。
図表１６
ノースキューの６個のコード値と６値コード単位の３対の単一分岐バージョンとのクロスマッピング
ノースキュー            ３対の単一分岐
コード値    頻度          コード値    ＋又は−ビット１
０００      ３９９５      １０１      ＋３９９５＊２＝７９９０個のビット１
００１      ４０１９      １００      ブレイクイーブン
０１        ８０７４      ０１        ブレイクイーブン
１０        ７９４９      ００        −７９４９個のビット１
１１０      ３９８０      １１０      ブレイクイーブン
１１１      ３９９１      １１１      ブレイクイーブン
＝＝＝＝＝＝＝
ネット得：＋４１個のビット１
それで、このようなクロスマッピングによって、ビット１の数は８００００の全２進数ビットのうち４１ビットだけ増加したことが分かる。これは比較的小さい数字である。しかしながら、ビット１を増加させるそのような傾向が続けられ得るならば、データ割り当ては徐々に乗数効果を伴ってビット１に向かってゆがめられる。スキューが大きければ大きいほど、達成可能な圧縮の節約が大きくなる。そのため、コード単位の異なる設計のコード値間のクロスマッピングのパターンをよく理解するために、より多くの実験を試みる必要がある。この場合、ノースキューと３対の単一分岐の両方のバージョンは１６ビットを使用し、そしてマッピングは２ビット値が２ビット値にマッピングされ、３ビット値が３ビット値にマッピングされるように行われ（つまり、対応するコード単位値に同じビットサイズのエンコーダを使用する）、従って、ビット使用数に変化はないが、ビット０とビット１の比率にはわずかな変化しかない。さらに、６値コード単位設計の上記の全てのバージョンに対して、１６ビットから２０ビットを使用することによって、各ビットサイズにほとんどの場合２つの対応するバージョン（つまり、０ヘッドデザイン及び１ヘッドデザイン）を有する。そのため、これら２つのバージョンのコード値間（又は図表１８のように１つのバージョン間でも）のクロスマッピングを１つのエンコーディングサイクルから別のエンコーディングサイクルに利用でき、それによって合計ビット使用数を変更せずに、ビット０とビット１の比率を変更する目的に用いられる。図表１６に示すように、最初のエンコーディングサイクルでは１６ビットの２つのバージョン間のクロスマッピングを使用でき、次のサイクルでは２０ビットバージョンを使用でき、３番目のサイクルでは１８ビットバージョンを使用できる等と仮定する。もちろん、このようなクロスマッピングを行う過程で、２つのビット値の間のビット比に従って特定のビット（ビット０又はビット１）を増やす傾向が１つのエンコーディングサイクルから別のエンコーディングサイクルまで維持されるように、コード値読み取りのための頻度分布を最初に見つけ、また最良のクロスマッピングテーブルを設計すべきである。さらに、この目的の実現は同じビットサイズの２つのバージョンのコード単位設計間のクロスマッピングを使用してもよく、図表１７に示すように、１つのバージョンのコード単位設計自体のクロスマッピングのみを使用してもよい。
図表１７
ノースキューバージョンの６値コード単位自体の６個のコード値間のクロスマッピング
ノースキュー              同様にノースキュー
コード値        頻度        コード値    ＋又は−ビット１
０００        ３９９５      １１０      ＋３９９５＊２＝７９９０個のビット１
００１        ４０１９      １１１      ＋４０１９＊２＝８０３８個のビット１
０１          ８０７４      ０１        ブレイクイーブン
１０          ７９４９      １０        ブレイクイーブン
１１０        ３９８０      ０００      −３９８０＊２＝７９６０個のビット１
１１１        ３９９１      ００１      −３９９１＊２＝７９８２個のビット１
＝＝＝＝＝＝＝
ネット得：＋８６個のビット１
上記図表から分かるように、コード単位設計自体のコード値間のクロスマッピングを使用すると、ビット０とビット１の比率も変更される可能性がある。また、図表１７に示すように、この場合の結果は、図表１６における２つのバージョンのコード単位設計の変更結果に比べてより優れる。
【００６５】
さらに、ビット０とビット１の比率を一方に傾けることを目的としたこのようなクロスマッピングは、６値コード単位設計を使用できるだけでなく、また異なるエンコーディングサイクルにおいて任意のＸ値コード単位に対するコード単位設計を使用してもよい。例えば、最初のサイクルでは６値コード単位設計を使用し、次のサイクルでは１２値コード単位設計等を使用できる。これは傾斜の傾向が維持される限りである。そのため、データ割り当てスペクトル内のビット０とビット１の比率の任意の点から始まる特定のデータセットに対して、ビット０とビット１の比率を変更する機会は無限にある。そして、このようなクロスマッピングのパターンが見つけられて記録される限り、このようなクロスマッピングの論理及びそれがデータ割り当てスペクトル内のビット０とビット１の比率の任意の点で始まるデータセットがたどる経路をエンコーダ及びデコーダに埋め込むことができる。あるいは、各エンコーディングサイクルに応用されるように、このようなクロスマッピングの論理及び経路はインジケータとしてエンコーディングコードのヘッダー内に置かれ、その結果、後でデコーディングするとオリジナルコードを正確且つロスレスに復元することができる。もちろん、エンコーダ及びデコーダにコード値のクロスマップを埋め込むというこの論理及び経路はビット使用数をさらに最小限に抑え、圧縮エンコーディング段階では圧縮することに役立つ。そのため、合計ビット使用数を変更しない場合に、別々の同一のコード単位設計又は異なるコード単位設計のコード値のクロスマッピングを使用することによって、データセットのビット０とビット１の比率を１回以上変更してデータ割り当てを変更し、データセット内に不均一性を生成する目的の中間ステップとして使用することができ、他の技術を使用して圧縮するエンコーディング段階では特定のデジタルデータセットの圧縮を可能にするか又は強化することができる。さらに、特定の段階又は任意のエンコーディングサイクルにデータセットのビットサイズを変更することはそれほど重要ではなく、重要なのは最終結果である。そのため、データ割り当てやデータセットのビット使用数を変更することは、常にエンコーディングステップに関連する。この開示の新規な特徴は、データ圧縮の目的としてビット０とビット１の比率を変えることに従って任意のデータセットのデータ割り当ての変化が一般的に一方向に傾けるべきであるようにエンコーディングが設計されるべきであることである。コード単位定義をリーダー及びライターとして使用してデジタルデータセットのビット０：ビット１の比率を変更することに加えて、処理ユニット定義は、また段落０１１５と図表５５及び段落０１１６と図表５６に示されるのと同じ目的を果たすことができる。結果ははるかに優れる。従って、より大きなサイズのコード単位又はより大きなサイズの処理ユニットを使用すると、より大きな差が特定のデータセットのデータ割り当てにおける不均一性として生成、捕捉、発生されることになる。
【００６６】
そのため、ビット０：ビット１の比率を一般的に一方向に傾けることに関して（適切な場合には特定の点まで）任意のデータセットのデータ割り当てを変更する中間段階の後に、このような割り当てのデータセットをビット０：ビット１の比率のその点で圧縮するのに適した技術を使用してデジタルデータセットを圧縮することができる。従って、まずランダムデータセットが圧縮を行うために与えられている場合、上記の段落００６２から００６４又は下記の段落０１１５及び０１１６に概説されている技術を使用して、ビット０：ビット１の比率を一方向に傾けるように変更することができる。次に、データ割り当てに応じて、圧縮を行うためにコード値のクロスマッピング技術を使用することができ、そして、例えば、現在使用している実例において同じ値サイズであるが異なるビットサイズのコード単位のコード値のクロスマッピングを使用する。２０ビットサイズの６値コード単位（又は適切な場合はその他の任意のビットサイズ）のようなビットサイズの異なる６値コード単位を使用してデータセットを読み取り、またこれらのコード値を、処理中のデータセットのコード値の頻度分布に応じて、エンコーディングの目的で１９ビットサイズ（又は適切な場合はその他の任意のビットサイズ）の６値コード単位のコード値とクロスマッピングする。つまり、コード値のクロスマッピングを行う際に、ビット０：ビット１の比率でデータ割り当てを変更するために、コードアドレスが同じビット値サイズのデータ値に１対１に対応するようにマッピングされた同じＸ値コード単位を使用する。ただし、ビット使用数を減らすためにデータ圧縮を実行するには、１対１のマッピング関係を持つ同じＸ値のコード単位を代わりに使用する必要があるが、データ値のビット値サイズは異なる。しかしながら、これは、ビット使用数を変更することと、同時にビット０とビット１の比率を変更することとの両方のために、異なるコード値サイズのコード単位を使用することを排除するものではない。このような目的で処理装置を使用する場合も同様である。
【００６７】
従って、以上から分かるように、修正されたＣＨＡＮフレームワークでは、コード単位サイズは、現在、コード値の数及び図表１４に示されている異なるビットサイズを有する６値コード値の実例で示されている２進数ビットの数で測定可能であり、特定の数の値及びビットサイズを有する任意のコード単位定義のためのコード単位の固定コード値のビット０とビット１の比率及び頻度分布等、データセットの他の特徴も研究及び発見することができる。これにより、任意のデジタルデータセットを記述し、並びにデータ暗号化やデータ圧縮をオリジナルデジタルデータの正確且つロスレスな復元と共に行う目的を含むあらゆる目的のために適切なエンコーディング及びデコーディング技術を使用するのに役立つ。
【００６８】
コード単位サイズの定義の変更に伴い、コード単位は、現在、コード単位が収容するように設計されているコードの数に基づいて、そしてコード単位を全体として使用される２進数ビットの数に基づいてサイズを決めることができる。処理ユニット（エンコーディング又は１つのエンコーディングコードブロックを書き込むためのユニット）は１つのコード単位のみで構成でき、図表１４に示すように、同数のコード値を有するコード単位は、各コード値及びコード単位全体に対して、異なるビットサイズを有するように設計することができる。そのため、コード単位は、他の読み取りユニットと組み合わせる必要なく単独で使用して処理ユニットを形成できる基本読み取りユニットであり、エンコーディングプロセス中にエンコーディングされたコードを書き込むと共にデコーディングプロセス中に読み返すために用いられる基本書き込み／読み取りユニットでもある。
【００６９】
ランダムデータは非圧縮性であると長い間考えられている。データセット内のビット０とビット１の比率を変えるため、上記ＣＨＡＮフレームワークを使用する時が来た。また、開示すべき他の技術は以下のとおりである。
【００７０】
これらの他の技術は、ＣＨＡＮフレームワークの下のＣＨＡＮコーディングで使用されるエンコーディング技術として分類することができる。ＣＨＡＮコードの分類コードを生成するため、コード単位の特性又は特徴（単一又は組み合わせのいずれかでもよい）を識別して組織することは、そのような技術の１つであり、例えば、コード単位のランク及び位置を使用してＲＰコードを生成し、又はコード単位のコード値（単一又は組み合わせ）を記述するために使用できる数式を設計し、そしてエンコーディング及びデコーディングの目的にも使用し、例えば、ＣＨＡＮコードの内容値コード、ＣＶサブブロックを作成するために使用することができる。そのため、ＣＨＡＮフレームワークの下のＣＨＡＮコードの基本部分（コード単位の特性又は特徴を説明する部分）は、分類コードと内容値コード（あるいは内容コードと略称する）に分けることができる。ＣＨＡＮコードに属すると見なされ得る他の部分は、他の識別コード又はインジケータ（例えば、ＣＨＡＮコードファイルのメインヘッダー内、又はデジタルデータファイルのセクションに使用されるセクションヘッダー内に含まれる）を含み、この識別コード又はインジケータは、ＣＨＡＮコードの基本部分をエンコーディング及びデコーディングするために使用されるクロスマッピングテーブル（マッピングテーブルインジケータ）、特定のデジタルデータ入力に対するエンコーディング及びデコーディングのサイクル数（サイクルインジケータの数）、ＣＨＡＮコードファイルについて計算されたチェックサム（チェックサムインジケータ）、任意特定のエンコーディング及びデコーディングサイクルにおけるデジタルデータ用のエンコーディングされていないコード単位（存在している場合）、及び適切且つ必要な場合でＣＨＡＮコードの識別、エンコーディング及びデコーディングを目的として使用するために設計者によって設計されたその他のインジケータを識別するために使用される。例えば、このようなインジケータの１つは、エンコーディング及びデコーディングに使用するためのスーパー処理ユニットを構成する処理ユニットの数であり得る。その他は、適切且つ必要な場合で、頻度によるＣＨＡＮコードの分類コードを調整するためのインジケータ、及び頻度によるＣＨＡＮコードの内容コードを調整するためのインジケータである（即ち、分類コード及び内容コードを使用する０ヘッド又は１ヘッドデザインを、適切な場合で処理中のデジタルデータセットのビット０：ビット１の比率のパターンの頻度インジケータ（略して頻度インジケータ）に調整する）。スーパー処理ユニットの概念と使用方法、及び頻度によるＣＨＡＮコードの調整も、以下のように開示される。
【００７１】
ＣＨＡＮコードで使用される１つの基本技術（即ち、絶対アドレス分岐）は、前述の説明のいくつかの箇所で既に説明されている。ランダムデータセットを圧縮する際に、この技術がどのように使用されるべきであるか、即ち、ランダムデータセット全体のビットストレージ使用数を減少させることについて詳しく説明する必要がある。この使用法は、コードアドレス数とコード値数との間の関係に関する問題を議論する際に、段落００６０及び００６１で簡単に触れられた。記憶をリフレッシュするため、その議論において、３つの３値コード単位からなる処理ユニットは、コードアドレスの数が、エンコーディング及びデコーディングのための処理ユニットが収容するように設計されているコード値の数よりも大きくなり得ることを開示するために使用される。これは、コード単位の新しい定義を使用して実現でき、コード単位のサイズは、コード単位が収容するコード値の数、及びコード単位に使用される異なる固有コード値のビット数並びにコード単位全体のビット数によって測定されるように設計できる。６値コード単位を使用するこの特徴の設計及び定義を図表１４に示している。また、絶対アドレス分岐技術を使用するため、この特徴を実現することもできる。
【００７２】
その議論において、処理ユニットの２７個の固有コード値がコードアドレスによってどのように表されるか、及びエンコーディング並びにデコーディングの目的で特殊な処理アドレスとしていくつかの代替アドレスを使用することについても簡単に説明される。例えば、１種の設計において、２７個の固有コード値は、５個の４ビット基本アドレス及び２２個の５ビット単一分岐アドレスによって表すことができる。従って、次の実例は、コード値がコードアドレスとどのようにクロスマッピングされるかを示している。
【００７３】
図表１８
２７個の値の分類絶対アドレス分岐コード表（ＣＡＡＢＣＴ）
実施例Ｉ
【表１７】
2019528027.tif 000020
上記の分類絶対アドレス分岐コードテーブル（ＣＡＡＢＣＴ）の実施例Ｉを使用することにより、処理ユニットの３つの３値コード単位の２７個のコード値は、クラスビット（分類コード）、ノーマルビット、分岐ビット（内容コード）を含むＣＨＡＮコードに１つずつクロスマッピングされ得る。ただし、このバージョンのＣＡＡＢＣＴの実施例Ｉを使用すると、ランダムデータの頻度分布のため、ランダムデータセットを圧縮できない可能性がある。しかしながら、デジタルデータセットを圧縮でき、デジタルデータセットの２７個の固有コード値の全ての頻度はほぼ同じか、又は、２７個の固有コード値の全ての間でほぼ均一である（例えば、特定のデータセット内の２７個の固有コード値の全ての頻度が１の場合、以下の図表２０に示すように、２７個の固有コード値の全てが合計１３５ビットを使用し、また、上記の図表１８で合計１３０ビットだけを使用してコードアドレスとクロスマッピングされた場合、９ビットの圧縮が節約されるはずである）。そのため、問題となるのはコードアドレスの数だけでなく、固有コード値の頻度分布も、ランダムデータセットを圧縮するための新たな障害となり、さてこの問題を解決しよう。
【００７４】
図表１９に示される３値コード単位の定義の性質のため、コード単位のビット０：ビット１の比率は２：３であるので、図表２０に示すように、３つの３値コード単位の処理ユニットの２７個のコード値の頻度分布は均一分布ではない。
図表１９
３値コード単位の定義：０ヘッドデザイン
ビット０：ビット１の比率＝２：３
コード値番号      コード値コード
１                    ０
２                    １０
３                    １１
図表２０
３つの３値コード単位からなる処理ユニットは、図表１９のコード単位の定義を使用して８０，０００ビットのランダムデータセットから読み取られた２７個の固有コード値の未分類頻度分布の実例
【表１８】
2019528027.tif 000021
【００７５】
別の自動化プログラムを実行して図表２０の頻度番号を生成し、結果は図表２１にリストされている。
図表２１
図表２０を生成したプログラムを使用して生成された別の結果
０−０−０：２２７３
０−０−１０：１１７５
０−０−１１：１１４９
０−１０−０：１１２３
０−１０−１０：５３１
０−１０−１１：５９３
０−１１−０：１０６０
０−１１−１０：５４８
０−１１−１１：５４２
１０−０−０：１０４５
１０−０−１０：５４２
１０−０−１１：５７６
１０−１０−０：５５１
１０−１０−１０：２７６
１０−１０−１１：２８８
１０−１１−０：５５９
１０−１１−１０：２６６
１０−１１−１１：２９４
１１−０−０：１０７２
１１−０−１０：５０８
１１−０−１１：５６１
１１−１０−０：５４０
１１−１０−１０：２７７
１１−１０−１１：２７９
１１−１１−０：５９１
１１−１１−１０：２６２
１１−１１−１１：３０４
頻度：２２７３  １１７５  １１４９  １１２３  １０７２  １０６０  １０４５  ５９３  ５９１  ５７６  ５６１  ５５９  ５５１  ５４８  ５４２  ５４２  ５４０  ５３１  ５０８  ３０４  ２９４  ２８８  ２７９  ２７７  ２７６  ２６６  ２６２
オリジナル：８０００１
表１のサイズ：８２１３３
表２ａのサイズ：８０００１
表２ｂのサイズ：８４３７３
表３のサイズ：８１４４４
本実例で使用されている３つの３値コード単位の処理ユニットの２７個の固有コード値の頻度分布は、図表２０に記載されているものと類似するか又は比例することが分かる。表１のサイズは、図表２１の２７個の固有コード値間のクロスマッピングによって生成されたビットサイズであり、コード値はビット使用によって分類され（２７個の固有コード値の分類は、下の段落００７８の図表２３にリストされている）、また、分類絶対アドレス分岐コード表（ＣＡＡＢＣＴ）にある２７個の固有コードは、段落００７３の図表１８にリストされている実施例Ｉで使用されている２７個の値に使用される。図表２１の表２ａのサイズは、以下の図表２２の実施例ＩＩに見られるように、別のＣＡＡＢＣＴを用いたクロスマッピングの結果である。
図表２２
２７個の値の分類絶対アドレス分岐コード表（ＣＡＡＢＣＴ）
実施例ＩＩ
【表１９】
2019528027.tif 000022
上記の実施例ＩＩでは、その２７個の固有テーブルコードに同じビットを使用し、例えば、処理ユニットを構成する３つのコード単位のうち、３値コード単位０ヘッドデザイン（値１＝０、値２＝１０、値３＝１１）によって読み取られたデータセットで生成された２７個の固有コード値（ビット使用で分類）で使用される場合、ビット使用結果は、生成されて図表２１にリストされたオリジナルランダムデータセットの実例と同じである。生成されて図表２１にリストされ、０ヘッドデザインの上記３つの３値コード単位を使用して読み取られたランダムデータセットは８０００１ビットを占め、そして、実施例ＩＩにおけるＣＡＡＢＣＴ（図表２３の表２ａ）のテーブルコードとのクロスマッピングにより読み取られたランダムデータセットをエンコーディングするためのビット使用は同じで、８０００１ビットである。実施例ＩＩのＣＡＡＢＣＴは、２７個の固有テーブルコードの全てに最大１３５ビットを使用し（テーブルコードあたり１カウント）、実施例ＩのＣＡＡＢＣＴでは、１３０ビットしか使用されていない。しかし、ランダムデータセット内の２７個の固有コード値の不均一な頻度分布のため（この不均一は、基準のコード単位の各値及び一致するビットサイズに対して設計された基準及び同じビットサイズでデータを読み取る従来の方法ではなく、読み取り時に３値コード単位の０ヘッドデザインが使用されるためである）、実施例ＩのＣＡＡＢＣＴ（その２７個の固有テーブルコードの１カウントごとに均一な頻度分布のために１３０ビットを使用する）は、８０００１ビットのオリジナルランダムデータセットをエンコーディングする時に、実施例ＩＩで使用されたＣＡＡＢＣＴよりも多くのビットを使用し（２７個の固有テーブルコードの１カウントごとに均一な頻度分布のために１３５ビットを使用する）、図表２３に示すように８１９８９ビットを使用し、これは圧縮ではなく拡張である。表２ａから表３の結果（表２ａは、段落００８５から００９３及び図表２９で論じたように、表２ａは、ＣＡＡＢＣＴ２を用いたクロスマッピングの結果であり、表２ｂは、ＣＡＡＢＣＴ１を用いたクロスマッピングの結果であり、そして表３は、ＣＡＡＢＣＴ０を用いたクロスマッピングの結果である）を図表２１にリストし、以下のように抽出する。
表２ａのサイズ：８０００１
表２ｂのサイズ：８４３７３
表３のサイズ：８１４４４
上記は、ランダムデータセットから読み取られたＰＵ値（ビット使用で分類される）を、以下にリストされるような他のビット使用パターンのテーブルコードとクロスマッピングした後のエンコーディングのビット使用結果を提供する。
グローバル＄マッピングテーブル１［２７］＝［４、４、４、４、４、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５、５］
グローバル＄マッピングテーブル２ａ［２７］＝［３、４、４、４、４、４、４、５、５、５、５、５、５、５、５、５、５、５、５、６、６、６、６、６、６、６、６］
グローバル＄マッピングテーブル２ｂ［２７］＝［３、５、５、５、５、５、５、６、６、６、６、４、４、４、４、４、４、６、６、４、４、４、４、６、６、６、６］
グローバル＄マッピングテーブル３［２７］＝［３、３、４、４、４、４、４、４、５、５、５、５、５、６、６、６、６、６、６、６、６、６、６、６、６、６、６］
従って、２７個の固有テーブルコードを有するコードテーブルを設計するのは難しいように思われ、ランダムデータセットから読み取られた２７個の固有コード値をエンコーディングすると、ビット使用の節約又は圧縮を達成できる。従って、ランダムデータセットを圧縮するため、そのような目的を達成するために他の技術を設計、開発及び使用しなければならない。以下に開示するように、そのような設計の１つは、スーパー処理ユニットを使用し、特別に設計されたコードテーブルを使用することによってマッピング又はエンコーディングすることである。
【００７６】
スーパー処理ユニットを使用するという概念は、ランダムデータセットが実際にはいくつかの不均一なデータサブセクションから構成されていると考えられ、また、データコード値の頻度分布の性質のため、ランダムデータセットが圧縮されない可能性がある場合、ランダムデータのデジタルデータ入力ファイル全体が不均一なデータのサブセクション（ここでは、スーパー処理ユニットと呼ばれる）に分割される可能性があり、ランダム割り当てのデジタルデータ入力全体を圧縮することを可能にするため、このような単独のスーパー処理ユニットに対して、不均一なデータ割り当てを利用して圧縮を可能にするという技術を適用できる。これは分割統治戦略である。
【００７７】
従って、デジタルデータ入力ファイル全体は、いずれかの極端箇所にランダムからひいては完全に不均一なデータ分布スペクトルの特定の点におけるデジタルデータの全ての処理ユニットからなる巨大処理ユニットと見なすことができる。圧縮科学の分野では、データセットの不均一な性質を利用することによって圧縮技術を実現することのみ可能である。そして、これまでのところ、ランダム割り当てのデータセットは非圧縮性であると考えられている。従って、ランダムデータ全体の処理ユニットからなる単一の巨大処理ユニットは、スーパー処理ユニットと呼ばれるいくつかの処理ユニットからなるサブセクションに分割することができ、それにより、これらのデータサブセクションを圧縮するための技術を設計することができる。そのため、巨大処理ユニットとは、エンコーディング及びデコーディングの対象となる全てのデータコードを含む全体単位と定義され、従って、エンコーディングされていないコード単位が除外され、コード単位は、例えば、適切な場合で１つの処理ユニット又は１つのスーパー処理ユニットのサイズにならないため、エンコーディング及びデコーディング処理をされていないデータコードからなる。巨大処理ユニットは、そのような分割又は他の目的を通じたランダムデータの圧縮等の特定の目的のために、エンコーディング及びデコーディングのためにいくつかのスーパー処理ユニットに分割することができる。スーパー処理ユニット用のデータのエンコーディング及びデコーディングは、処理ユニットに行われるエンコーディング及びデコーディングによって使用されるエンコーディング及びデコーディング技術又はプロセスに対して行われる何らかの調整を必要とし得る。従って、スーパー処理ユニットは、１つ以上の処理ユニットから構成されるデータユニットである。それは、処理ユニットに対して行われたエンコーディング及びデコーディングに対する何らかのエンコーディング調整を受ける可能性がある。
【００７８】
ランダムデータを圧縮する目的でスーパー処理ユニットがどのように使用されるかを理解するため、図表２０の０ヘッドデザインの３つの３値コード単位からなる処理ユニットの２７個の固有コード値をまず下の図表２３に分類して列挙する。
図表２３
３つの３値コード単位からなる処理ユニットは、図表１９のコード単位定義を使用して８０，０００ビットのランダムデータセットから読み取られた２７個の固有コード値の分類／未分類頻度分布の実例
【表２０】
2019528027.tif 000023
上記の図表２３の２７個の固有コード値の分類されたランク値は、ビット使用の観点から４つのグループに分類できる。グループ１の１個のコード値は３ビット、グループ２の６個のコード値は４ビット、グループ３の１２個のコード値は５ビット、そしてグループ４の８個のコード値は６ビットである。任意の時点で生成されるランダムデータの頻度分布におけるわずかな変動のため、特定のグループ内の各コード値のランクはランダムデータセットに応じてわずかに変動する可能性がある。しかしながら、ランダムデータの実例と他の実例との間の頻度に関して、コード値はあるグループから別のグループに移動しない。それらの変化が非常に大きい場合、データ割り当てはまったくランダムではない。
【００７９】
ランダムデータはそのような同様のデータコード値の頻度分布を有するので、それらとのクロスマッピングのために異なるバージョンのＣＡＡＢＣＴを設計することができ、そのようなＣＡＡＢＣＴを使用してエンコーディングした後のビット使用の結果を述べ、図表２１に示す。ＣＡＡＢＣＴのテーブルコードと、あるデータ割り当ての特定のデータセットを処理するためのＣＨＡＮフレームワークの下での処理ユニット及びコード単位の特定のスキーマ及び設計のデータコード値とのクロスマッピングに対して、２７個の固有コード値のデータコード値の頻度ランクは、ランダムデータセットのコード値とは異なり得る。そのため、ＣＡＡＢＣＴのテーブルコードと２７個の固有コード値のクロスマッピングを設計して圧縮の最良の結果が得られるため、そのような２７個の固有コード値の頻度の順序を知る必要がある。従って、この順序の固有コード値頻度は、最初に対象データセットを分析することによって得られるべきであり、そのような情報は処理のためにエンコーディング及びデコーディングに利用可能にされなければならない。この情報は、データセットごとに異なる可能性があるため、オリジナルデータセットを適切に復元するために後でデコーダに割り当てるために、エンコーディングされたコードのヘッダーに含めることができる。ランダム割り当てにおけるデータセット、及びエンコーディング及びデコーディングされたデータコード値とテーブルコード値とのクロスマッピングの割り当てについても同様である。しかしながら、ランダムデータセットのグループ内のコード値の頻度ランクにおけるわずかな変化が許容可能であると考えられる場合、そのような情報はヘッダーから省略することができる。ただし、処理するために使用されるＣＡＡＢＣＴのインジケータ（又はＣＡＡＢＣＴ全体の内容）は依然としてヘッダーに収容されているか、又は必要に応じてエンコーダ及びデコーダに利用可能又は組み込まれている。ＣＡＢＣＴがここで使用されるのは、０ヘッドデザインの３つの３値コード単位を使用して、処理ユニットの２７個の固有コード値に対するマッピングコードテーブルを設計する際にＡＡＢ技術が使用されるためである。そのため、ＡＡＢ技術を使用しない他のマッピングコードテーブルも、適切な場合に使用するように設計できる。従って、この議論の場合に使用するためのＣＡＡＢＣＴの言及は、一般にエンコーディング及びデコーディングにおけるマッピングコードテーブルの使用にも適用される。
【００８０】
ランダムデータセットの圧縮を行うためにＣＡＡＢＣＴがスーパー処理ユニットのエンコーディングにどのように使用されるかを見てみよう。スーパー処理ユニットの使用はランダムデータセットをデータのサブセクションに分割することを目的としているので、スーパー処理ユニットはランダムデータセットとは異なるデータ割り当てを持つように設計され、不均一なデータを圧縮する技術に使用することができる。例えば、フルセットの処理ユニット（本実例では２７個の固有データ値エントリ）と等しいかそれより少ない数の処理ユニットを有するスーパー処理ユニットは、不均一なデータ割り当てを有することが保証される。ただし、データの全ての不均一なサブセクションが圧縮可能であるという意味ではない。これは、あるデータ割り当てのデータを圧縮するのに役立つ圧縮技術又はマッピングコードテーブルは、他の異なるデータ割り当てのデータには適していない可能性があるためである。これは、異なるデータ割り当てのスーパー処理ユニットを圧縮する際に、複数の圧縮技術又はマッピングコードテーブルを使用しなければならないことを意味する。
【００８１】
ランダムデータセットをスーパー処理ユニットの形でデータサブセクションに分割する方法及び技術において、スーパー処理ユニットを２つのグループに分類し、ＣＡＡＢＣＴを使用して一方のグループのスーパー処理ユニットの処理ユニットをエンコーディング及びデコーディングし、別のＣＡＡＢＣＴを使用して他方のグループのスーパー処理ユニットの処理ユニットをエンコーディング及びデコーディングする。このように、２つのグループのうちのいずれかに対してＣＡＡＢＣＴが使用されるインジケータをスーパー処理ユニットに適用しなければならない。そのため、この方法を使用して圧縮を行うには、追加のビット使用が必要になる。そして、圧縮を行うために関連するＣＡＡＢＣＴを使用して実施されるエンコーディングは、各スーパー処理ユニットのＣＡＡＢＣＴビットインジケータ及び他の追加情報（ヘッダーに含まれるもの等）を使用することによってもたらされるビット使用より多いビット使用節約をもたらすはずである。これは今後の非常にやりがいのある作業である。
【００８２】
これまでにこの目的のために使用されることが示唆されている技術は以下のとおりである。
（ａ）スーパー処理ユニットの使用
（ｂ）スーパー処理ユニットをグループに分割し、ここでは、まず２つのグループに分割する。及び
（ｃ）（２グループのスーパー処理ユニットの）固有データコード値と固有テーブルコード値との間のクロスマッピングのためのＣＡＡＢＣＴ（この場合は２つ）の使用、及びＣＡＡＢＣＴインジケータの使用。
使用のために分割されるべきスーパー処理ユニットのサイズ及びスーパー処理ユニットがどのようにグループ化又は分類されるべきか、及びどのＣＡＡＢＣＴが使用されるべきであるかに関して問題が生じる。
【００８３】
これらの問題に対する答えは、図表２３の上記の議論の場合に使用されている実例で見つけられなければならず、ここで、処理ユニットは、０ヘッドデザインの３つの３値コード単位を含むように設計され、従って、約８００００ビットのランダムデータセットに対して頻度によって分類された２７個の固有コード値を有する。図表２１は、段落００７３から００７５まで説明した２つのＣＡＡＢＣＴでは、ランダムデータセットに対して圧縮を実行できない可能性があることを示している。これは、エンコーディングのためにランダムデータセットをスーパー処理ユニットに分割することであり、これはこの状況に対する解決策として提案されている。従って、スーパー処理ユニットは、それぞれがランダムデータ割り当てを持たないように分割されなければならない。従って、固定ビットサイズ又は固定範囲のビットサイズ又は固定数の処理ユニットを有するスーパー処理ユニットを使用することができ、それによって各スーパー処理ユニット内のデータ割り当てがランダムではないことが保証される。従って、段落００７３から００７５までの議論は、２７個以下の処理ユニットからなるスーパー処理ユニットは、２７個の固有コード値（全て存在するか否かに関わらず）が従来の意味で固定ビット値サイズを使用して設計されたコード単位のランダムデータセットを構成しないため、基準を満たすべきであると判断される。０ヘッドデザインの３つの３値コード単位からなる処理ユニットのスキーマ及び設計を使用して読み取る時に固定ビットサイズを使用して従来の意味で設計されたコード単位のランダムデータセットは、図表１８に示される２７個の固有値のそれぞれの頻度分布特徴の代わりに、図表２３に示される固有データ頻度分布特徴が示される。固定サイズのスーパー処理ユニットを使用すると、分割を実現できる方法の１つである。そのため、まずスーパー処理ユニットを２７個の処理ユニットのサイズに仮設定する。
【００８４】
ここで、２７個の処理ユニットのサイズを有するスーパー処理ユニットは、そのように分割されたスーパー処理ユニットのそれぞれに２７個の固有コード値のそれぞれが存在することを保証するものではない。これらのスーパー処理ユニットでは、それぞれが異なるデータ割り当てを持つことができ、２７個の固有コード値の全てを持つものもあり、一部の固有コード値が欠落しているものもあり、複数回出現するものもあり、これらは全て様々な方法で存在する。従って、簡単にするため、ここでの実例は、エンコーディング及びデコーディングの目的でこれらの異なるデータパターンを２つのグループに分割する。図表２３の８００００ビットのランダムデータセットのビット使用及び頻度分布の統計値は、下記の図表２４で次のように改善される。
図表２４
３つの３値コード単位からなる処理ユニットは、図表１９のコード単位定義を使用して８０００３ビットのランダムデータセットから読み取られた２７個の固有コード値の統計値の実例
処理ユニット
分類コード                                                カテゴリ
番号  コード値  使用したビット  頻度        頻度％（〜）  頻度％（〜）
カテゴリ１                                                  １２．１
１    ０００          ３          ２１５５    １２．１
カテゴリ２                                                  ３７．６
２    ００１１        ４          １１５４    ６．５
３    １１００        ４          １１４３    ６．４
４    ０１１０        ４          １１３２    ６．４
５    ００１０        ４          １１０１    ６．２
６    ０１００        ４          １０７８    ６．１
７    １０００        ４          １０７４    ６．０
カテゴリ３                                                  ３７．７
８    ０１１１１      ５          ６０５      ３．４
９    ０１０１０      ５          ５８７      ３．３
１０  １００１０      ５          ５７４      ３．２
１１  １００１１      ５          ５６６      ３．２
１２  １１０１０      ５          ５６６      ３．２
１３  １０１１０      ５          ５６４      ３．２
１４  １１１００      ５          ５６３      ３．２
１５  ０１１１０      ５          ５５８      ３．１
１６  １０１００      ５          ５５２      ３．１
１７  １１０１１      ５          ５３０      ３．０
１８  １１１１０      ５          ５２７      ３．０
１９  ０１０１１      ５          ５０６      ２．８
カテゴリ４                                                  １２．５
２０  １１１０１０    ６          ３０４      １．７
２１  １０１１１１    ６          ２９２      １．６
２２  １０１０１１    ６          ２９０      １．６
２３  １０１０１０    ６          ２７９      １．６
２４  １１１１１０    ６          ２７７      １．６
２５  １０１１１０    ６          ２６３      １．５
２６  １１１１１１    ６          ２６２      １．５
２７  １１１０１１    ６          ２５３      １．４
合計：１３５  ビット合計：１７７５５          合計：〜１００
【００８５】
上の図表２４から、２７個の固有値は、ビット使用又は頻度特徴の観点から４つのカテゴリに分類できることが分かる。カテゴリ１とカテゴリ２はグループ（グループ０）を構成すると、頻度の数では約４９．７％、カテゴリ３とカテゴリ４は別のグループ（グループ１）を構成すると、約５０．２％になる。これら２つのグループの頻度の数はほぼ同じである。そのため、ランダムデータセットをデータ処理が不均一になるようにスーパー処理ユニット（２７個の処理ユニットを使用）に分割することによって、いくつかのスーパー処理ユニットは、グループ１からよりもグループ０からより多くの固有コード値を有するであろうと予想されるが、他のものは代わりにそうするであろう。従って、マッピングコードテーブル（ＣＡＡＢＣＴ０）が、グループ１ではなくグループ０の固有データコード値にクロスマッピングする時に使用するビット値が少なくなるように設計でき、もう１つのマッピングコードテーブル（ＣＡＡＢＣＴ１）は反対である。そして、グループ０からのより多くの固有データコード値を有するスーパー処理ユニットは、圧縮目的のためにＣＡＡＢＣＴ０を使用してエンコーディングすることから利益を得、そして同じ目的のために、グループ１からのより多くのスーパー処理ユニットは、ＣＣＡＢＣＴ１を使用することから利益を得る。しかし、各スーパー処理ユニットの追加コストに対してどのマッピングコードテーブルが使用されるかを示すインジケータビットに関する問題がある。一方、グループ０のスーパー処理ユニット（即ち、グループ０からのデータ値がより多いスーパー処理ユニット）は、グループ１からよりもグループ０からの１つより多くのデータ値エントリを有することがある。グループ１のスーパー処理ユニットについても同様である。従って、各スーパー処理ユニットに対するマッピングテーブルインジケータビットのこの追加のコストは、前述のコード値発生パターンによって相殺される機会を依然として有する可能性がある。しかしながら、スーパー処理ユニット及びマッピングコードテーブルを使用するエンコーディング及びデコーディング技術を使用する時、より多くのビット使用を節約するのを助けるためにいくつかの他の技術を使用することができる。
【００８６】
これらの他の技術の１つは、エンコーディング及びデコーディングにおいて各スーパー処理ユニットのためにマッピングコードテーブルビットインジケータを使用することを免除する人工知能（ＡＩ）技術（又はむしろヒューマンインテリジェンス（ＨＩ）技術）の使用である。ここで使用される人工知能技術は、ＡＩ基準を確立することによって、このＡＩ基準によってエンコーディングされた各スーパー処理ユニットの内容を区別することであり、２つのマッピングコードテーブルのうちの一方を使用して対応するスーパー処理ユニットをエンコーディングする。このようにして、ＡＩ基準が適切に設定されている場合、マッピングコードテーブルビットインジケータは省略され得る。以下は、使用可能なＡＩ基準に関するいくつかの提案である。
（ａ）どのＣＡＡＢＣＴがそのエンコーディングに使用されているかを識別するために使用可能なスーパー処理ユニット内に存在するコード値（識別コード値）。従って、この基準を考慮すると、そのようなコード値は、２つの異なるＣＡＡＢＣＴによって異なるテーブルコード値にエンコーディングされる必要がある。そして、この要件は、問題となっている２つのＣＡＡＢＣＴを設計する段階で満たさなければならない。また、この要件のために、スーパー処理ユニットをエンコーディングするための１つのマッピングコードテーブルの使用を停止するための終了条件又は終了基準が変更されるべきである。例えば、まず、スーパー処理ユニットのサイズを２７個の処理ユニットコード値に設定した場合、スーパー処理ユニットに存在する２７個のコード値の中に識別コード値が必ずしも見つかるとは限らないため、終了条件は、次のように修正する必要がある。
（ｉ）識別コード値を終了値として使用し、ＣＡＡＢＣＴを使用して前の値コード及び自体をエンコーディングし、コード値の識別後に、次の識別コード値を含むコード値をエンコーディングするためにどのＣＡＡＢＣＴが必要であるかを再度評価する。この技術を使用することによって、識別コード値を含まないオリジナルコード値の最後の部分も評価することができ、２つのＣＡＡＢＣＴのいずれかを使用してエンコーディングすることができる。しかしながら、そのような方法で、識別コード値はエンコーディング後にこのセクションの終わりに加えられなければならない。そして、この最後の識別コード値が追加されたコードであるのか、又はオリジナルコード値の一部であるのかに関するインジケータがヘッダーに追加され、識別コード値がデコーディング時にデコーディングコードからデコーディング又は削除されなければならない。そして、この部分の後に、処理ユニットコード値を構成しないコードビット（もしあれば）を含むエンコーディングされていないコード単位があり得る。又は
（ｉｉ）識別コード値を含むスーパー処理ユニットを終了条件として使用する。つまり、デジタルデータ入力のヘッダーから３番目のスーパー処理ユニット（この場合は２７個のコード値）のみに識別コード値が含まれる場合、最初の３つのスーパー処理ユニットの全てのコード値は、評価中にＣＡＡＢＣＴを使用してエンコーディングされ、次のコード値のエンコーディングにどのＣＡＡＢＣＴを使用する必要があるかを評価するために新しい評価が行われ、これは、次のスーパー処理ユニットがその識別コード値を含むべきであることを意味する。そして最後に、スーパー処理ユニットを構成しないか、又は識別コード値のオリジナルコードを持たないコードの最後の部分は、上記（ｉ）のように処理されるか、又はエンコーディングされていないコード単位に含まれるために残されるだけである。
（ｂ）デコーディング失敗。ＣＡＡＢＣＴを使用してエンコーディングされたコード値は、別のＣＡＡＢＣＴを使用して正常にデコーディングされない場合がある。従って、１つのＣＡＡＢＣＴがエンコーディング用に選択されたものでなければならないため、エンコーディングされたコード値は両方のＣＡＡＢＣＴを使用してデコーディングする必要がある。デコーディングプロセスは、それをデコーディングに使用するのに成功するはずである。コーディングに使用されていない別のＣＡＡＢＣＴを使用したデコーディングは不可能な場合がある。
（ｃ）より短いエンコーディングコード。エンコーディングは圧縮を目的として使用されるため、最も短いエンコーディングコードを生成するＣＡＡＢＣＴが確実に選択される。そのため、デコーディング時に、エンコーディングに使用されていないＣＡＡＢＣＴを使用すると、全体としてビット使用が長いコードが確実に生成される。
（ｄ）再エンコーディング失敗。従って、２つの異なるＣＡＡＢＣＴを使用してデコーディングすると、２グループの異なるデコーディングコードが生成される。これら２グループのデコーディングコードは、２つのＣＡＡＢＣＴを交換可能に再使用して再エンコーディングされ、選択したもので再エンコーディングするのではなく、別のＣＡＡＢＣＴを使用することもある。特に２つの異なるＣＡＡＢＣＴでは、異なるヘッドデザインを使用するトリオ（ｔｒｉｏ）のコード値が使用される。例えば、次のように０ヘッドデザインを使用する１つのＣＡＡＢＣＴである。
０
１０
１１
サフィックスとして、そして１ヘッドデザインを使用する別のＣＡＡＢＣＴは、コード値として次のトリオを使用するサフィックスである。
１
０１
００
（この点については後で説明する）。エンコーディング失敗の別の証拠は、再エンコーディング時のデコーディングコードの最後のビットが１つのコード値に形成されず、固定ビットサイズ又は固定数の処理ユニットを有するスーパー処理ユニットを使用する場合、再エンコーディングされたコード値は、設計された固定サイズを構成せず、再エンコーディング時に固定サイズのスーパー処理ユニットよりも多い又は少ないコードを生成する。
（ｅ）必要に応じてエンコーディングコードの後に追加される追加ビット。上記のＡＩ基準を用いて評価した後でも、エンコーディングのために選択されたＣＡＡＢＣＴを識別することが依然として不可能であり、そのような区別をするためにエンコーディングコードのセクション又は単位の最後に追加ビットを追加しなければならない可能性がある。必要であれば、この追加ビットは、正しく解決されない状況をエスケーピングするための安全なエスケープとしての使用のためにのみ提供される。このエスケープは実現する必要がめったになく、従って、ビットストレージは実際にはこの目的には使用されない可能性があり、曖昧な場合には、前述のＡＩ基準の全てが最終的な答えを提供できない場合にのみ使用される可能性がある。これを考慮して、そのようなＡＩ評価は、エンコーディングプロセスの間、並びにエンコーディングの各セクション又は単位が終了した後にも行われるべきである。及び
（ｆ）適切且つ効果的な使用のために発見され設計されたその他の基準。
【００８７】
上記の説明をより明確に説明するために、２つのそのようなＣＡＡＢＣＴが図表２５と図表２６でさらに詳しく説明するために設計されている。
図表２５
２７個の値の分類絶対アドレス分岐コード表（ＣＡＡＢＣＴ０）
実施例ＩＩＩ
【表２１】
2019528027.tif 000024
図表２６
２７個の値の分類絶対アドレス分岐コード表（ＣＡＡＢＣＴ１）
実施例ＩＶ
【表２２】
2019528027.tif 000025
【００８８】
上記２つのＣＡＡＢＣＴから分かるように、テーブルコード値のグループ化は、最初の１１個のテーブルコードをグループ０にまとめ、残りをグループ１にまとめることに関して少し調整される。このグループ化調整は、より簡単なコード配置の結果である。括弧内のテーブルコード値は、トリオ内のコード値である。ＣＡＡＢＣＴ０では、トリオは１つしかないが、ＣＡＡＢＣＴ１では、トリオは６である。ＣＡＡＢＣＴ０では、トリオは０ヘッドデザインを使用し、つまり、次の形式のサフィックスが付いている。
０
１０
１１
一方、ＣＡＡＢＣＴ１では、トリオは１ヘッドデザインを使用し、次の形式のサフィックスが付いている。
１
０１
００
段落００８６（ｄ）で説明されているように、異なる設計のサフィックスの使用は、ＡＩを区別するためのものである。サフィックス設計は、ＡＡＢ技術を使用した結果として生じるもう１つの使用法である。
【００８９】
以下の図表２７は、ビットサイズに従って分類された３つの３値コード単位の処理ユニットの２７個の固有データコード値と、ＣＡＡＢＣＴ０及びＣＡＡＢＣＴ１のテーブルコード値とのクロスマッピングの統合図を示す。
図表２７
データコード値（図表２４）とＣＡＡＢＣＴ０及びＣＡＡＢＣＴ１のテーブルコード値とのクロスマッピング
【表２３】
2019528027.tif 000026
【００９０】
以上の統計データを比較すると、上記２つのＣＡＡＢＣＴを使用してランダムデータセットを圧縮することができるか否かは必ずしも明らかではない。マッピングテーブルはランダムデータセット全体には適用されず、その中のいずれか１つのＣＡＡＢＣＴに対応し、ビット使用数の点で、より優れて適切なスーパー処理ユニットに適用されるためである。ランダムデータセットを不均一なデータ割り当てのスーパー処理ユニットに分割した後のデータコード値の割り当てパターンは未だ確かめられていない。どのＣＡＡＢＣＴを選択していずれか特定のスーパー処理ユニットをエンコーディングすることは、実際のエンコーディング結果に基づくものであり、グループ０及びグループ１のデータコード値の数を数えることによることではない。それぞれのエンコーディングを実際に実現することによって生じるビット使用結果は、どのＣＡＡＢＣＴが特定のスーパー処理ユニットに最も適しているかについてのインジケータであることが分かる。
【００９１】
各実施形態によれば、例えば、１つのＣＡＡＢＣＴを使用することによって、上記技術に対する強化が可能である。前記ＣＡＡＢＣＴは、ランダムデータセットの特徴である２７個の固有データコード値割り当てを有し、ビット使用数の点で、完全に同じである。そのようなＣＡＡＢＣＴの１つがＣＡＡＢＣＴ１である。ＣＡＡＢＣＴ１を再割り当てしてクロスマッピングに用いられる目的は、図表２８に示すとおりである。
図表２８
データコード値（図表２４）とＣＡＡＢＣＴ２及びＣＡＡＢＣＴ１のテーブルコード値とのクロスマッピング
【表２４】
2019528027.tif 000027
【００９２】
ＣＡＡＢＣＴ２は、ＣＡＡＢＣＴ１と完全に同じであり、その違いは（ａ）と（ｂ）である。
（ａ）ＣＡＡＢＣＴ２は、０ヘッドデザインを用いてその６つのトリオ（即ち０、１０、１１）に用いることに対して、ＣＡＡＢＣＴ１は１ヘッドデザイン（即ち１、０１、００）を用いてそれらのそれぞれのトリオサフィックスに用いる。
（ｂ）クロスマッピングに用いられる場合、ＣＡＡＢＣＴ２の固有テーブルコード値は、全く同じビットサイズを有するランダムデータセットの固有データコード値にマッピングされ、即ち、３ビットサイズのテーブルコード値は３ビットサイズのデータコード値にマッピングされ、４ビットサイズのテーブルコード値が４ビットサイズのデータコード値にマッピングされ、５ビットサイズのテーブルコード値が５ビットサイズのデータコード値にマッピングされ、６ビットサイズのテーブルコード値が６ビットサイズのデータコード値にマッピングされる。このような方法でマッピングすると、エンコーディング後も同じビットで使用され、ランダムデータセットのデータサイズは圧縮も拡張もされない。
【００９３】
ランダムデータセットを圧縮するためのエンコーディング及びデコーディングの場合、以下に記載のように、スーパー処理ユニットを用いる際に導入された技術をわずかに調整してもよい。まず、ランダムデータセットをエンコーディングする場合、エンコーディングのためにＣＡＡＢＣＴ２でランダムデータセットのデータコード値をクロスマッピングしてもよい。即ち、０ヘッドデザインの３値コード単位の定義を用いてランダムデータセットを１つずつ読み取り、このような連続した読み取りユニットのうちの３つが、１つの処理ユニットを形成する。それによってＣＡＡＢＣＴ２と共にクロスマッピングに用いてエンコーディングを行う。上述したように、処理ユニット及びスーパー処理ユニットは、その後１つずつエンコーディングを行う。これは、未エンコーディングのコード単位の他、即ち残された１つの処理ユニットのサイズを構成せず且つエンコーディングされることが不能な少量のコードビットを除く、全てのランダムデータセットに対する全ての変換であり、それによってＣＡＡＢＣＴ２に基づく変換コードを生成する。この変換されたデータセットを圧縮し（現在ＣＡＡＢＣＴ２でクロスマッピング変換を行った後、このデータセットはこれまでのようにランダムではない）、ＣＡＡＢＣＴ１は、変換データセットから細分化されたスーパー処理ユニットに用いられ、前記スーパー処理ユニットは選定された終了条件を持ち、例えば、オリジナルコード値０００は、現在０１０、ＣＡＡＢＣＴ２の対応するテーブルコード値に変換される。従って、処理中のスーパー処理ユニットは、どこにあってもＣＡＡＢＣＴ１でエンコーディングすることができ、それによって同一スーパー処理ユニットの変換コードよりもビット使用数がより少ないエンコーディングコードを生成することができ、前記エンコーディングコードはＣＡＡＢＣＴ１でエンコーディングを行ってもよい。終了条件には、エンコーディングに用いられるＣＡＡＢＣＴテーブルコード値０１０が含まれるため、ＣＡＡＢＣＴ１でそれをエンコーディングすれば、０１０を０１１にエンコーディングする。従って、ＣＡＡＢＣＴ２及びＣＡＡＢＣＴ１でエンコーディングして得られたエンコーディングコードは、オリジナルデータコード値０００が０１０に変換され、且つその後０１１に変換される。ＣＡＡＢＣＴ１によってスーパー処理ユニットのＣＡＡＢＣＴ２のエンコーディングコードのサイズを縮小することができなければ、それらのスーパー処理ユニットのＣＡＡＢＣＴ２のエンコーディングコード値は、その後、影響されないようにされる。従って、オリジナルデータコード値０００は０１０を維持する。従って、これはＣＡＡＢＣＴ２コードとＣＡＡＢＣＴ１コードを区別するためのＡＩ基準の１つとしても使用される。ＣＡＡＢＣＴ２の６つのトリオのサフィックスはＣＡＡＢＣＴ１のサフィックスとは異なるため、従って数多くのサフィックスインジケータもＡＩを区別するために用いられる。段落００８６に記載されている全てのＡＩ操作もＣＡＡＢＣＴ１コードとＣＡＡＢＣＴ２コードを区別するためにも使用されてもよい。ＡＩを区別するためにそれをオリジナルデータコード値に変換する必要はないため、デコーディングプロセスは問題なく成功するはずである。そのため、ＣＡＡＢＣＴ２を用いて行われた全てのマッピングコード及びその後またＣＡＡＢＣＴ１を用いて選択的クロスマッピングを行って得られたエンコーディングコードをデコーディングするために、ＡＩ技術を使用し、それによって段落００８６に記載のＣＡＡＢＣＴ１コードを含むスーパー処理ユニットにＡＩ区別を行ってもよい。そして、ＣＡＡＢＣＴ１コードを含むスーパー処理ユニットが確認された後、その対応するＣＡＡＢＣＴ１コードは、ＣＡＡＢＣＴ２コードにデコーディングされる。全てのＣＡＡＢＣＴ１コードがＣＡＡＢＣＴ２コードに変換された後、ＣＡＡＢＣＴ２のコードテーブルを用いてＣＡＡＢＣＴ２コードからオリジナルデータコード値へのワンタイムデコーディングを実現することができる。このような方法で、いつでもＣＡＡＢＣＴ１を使用することによって圧縮することができるコード値を有するスーパー処理ユニットがあれば、このようなスーパー処理ユニットを含むランダムデータセットを圧縮することができると断言してもよい。あるいは、ＣＡＡＢＣＴ１の代わりにＣＡＡＢＣＴ０を用いてＣＡＡＢＣＴ２とのクロスマッピングを行い、又は適切な場合に、ＣＡＡＢＣＴ０及びＣＡＡＢＣＴ１を互換的に用いてＣＡＡＢＣＴ２とのクロスマッピングを行ってもよい。これらの場合、どのマッピングコードテーブルが任意の特定のスーパー処理ユニットに使用されるかを決定するために、ＡＩ基準を適切に調整し又は追加する必要がある。以下の図表２９は、全ての３つのＣＡＡＢＣＴを用いて完了されたクロスマッピングを示す。
図表２９
データコード値（図表２４）とＣＡＡＢＣＴ２、ＣＡＡＢＣＴ０及びＣＡＡＢＣＴ１のテーブルコード値とのクロスマッピング
【表２５】
2019528027.tif 000028
【００９４】
スーパー処理ユニットを分割するための終了条件に対する調整又は微調整が可能であるため、例えば、スーパー処理ユニットの固定サイズを２７個のデータコード値からそれより小さいもの又はもっと大きいものに変更し、又は使用する終了値を０００から別のコード値へ変更し、又は固定サイズを有するスーパー処理ユニットの終了値を使用する代わりに、終了値のみを用いてスーパー処理ユニットのサイズを決定する（このように、スーパー処理ユニットは様々なサイズを有してもよい）。あるいは、３つではなく４つの６値コード単位を用いて処理ユニットとする等、他のサイズのコード単位（６値コード単位とそれに設計されたＣＡＡＢＣＴセットを使用する等）又は他のサイズの処理ユニットを使用してもよい。ＣＨＡＮフレームワークでは、このような変形は無限に続く可能性があるため、ランダムデータセットが圧縮されることは決してないとは言えない。逆により確実である。ところで、段落００６２から段落００６６に記載されているビット０：ビット１の比率を変更する技術は、まずランダムデータセットの頻度分布を不均一なデータセットに変更するために用いられ、前記データセットは、その後不均一なデータ割り当てを利用した技術によって圧縮されるために適用する。
【００９５】
上記進歩性を有する発明は、エンコーディング及びデコーディングがランダムであるか否かに関わらないデジタルデータセットに用いられる多くの新規な技術を開示し、暗号化／復号及び圧縮／解凍に用いられる。設計者、実施者及びユーザに期待されている目的を達成するためにこれらの技術を組み合わせてもよい。ＣＨＡＮフレームワークの下で導入された構造的特徴及びエンコーディング技術を利用するために、また他の技術を設計し且つ実現してもよい。
【００９６】
単独で、又は上記で紹介した技術と組み合わせて使用することができ、より簡単で、有用な別の技術がある。これは、異なるサイズの動的処理ユニットと共に人工知能技術を用いてコード値定義を動的に調整することによるエンコーディング及びデコーディングである。スーパー処理ユニットの上記説明において、スーパー処理ユニットのサイズを決定するために終了値のみを用いると、スーパー処理ユニットのサイズが異なるようになる。即ちデジタルデータセットの異なる位置で、異なる数の処理ユニットによってスーパー処理ユニットを構成する。そのような割り当てに対して適切な終了条件を設計することによって、異なる数のコード単位を処理ユニットとして動的にエンコーディング及びデコーディングすることもできる。エンコーディング及びデコーディングの過程で、サイズ及び処理中のコード値の定義に対する動的な調整も可能である。
【００９７】
段落００９６に記載された技術について、即ちデータ割り当てを変更する状況に、異なるサイズの処理ユニット（本実施例において、３つのコード単位及び４つのコード単位の処理ユニットが説明のために使用される）を動的に使用する技術、前記技術は以下の図表３０にリストされている０ヘッドデザインの３値コード単位の設計を用いる。
図表３０
１つの３値コード単位の処理ユニット
ＰＵ          ＰＵ
値番号        コード値
値１（ｖ１）  ０
値２（ｖ２）  １０
値３（ｖ３）  １１
従って、処理ユニットは、処理中の任意点でのデータ割り当ての変化する状況に応じて、０ヘッドデザインの３つ又は４つの３値コード単位で構成される。この新しい技術は、ランダムであろうとなかろうと、あらゆるタイプのデータ割り当てのデータエンコーディング及びデコーディング処理を豊かにする。
【００９８】
この技術を設計することは、終了条件という概念を使う結果である。考えられている終了条件は、処理ユニットの終了点（ここでは０ヘッドデザインの３値コード単位が用いられる）が、３値コード単位の３つの固有コード値が全て現われたか否かに基づくことである。論理的な推論により、このような終了条件の定義に基づく場合、処理ユニットは、明らかに３値コード単位を備える３つのコード単位のサイズより小さいことはない。従って、全ての３つの固有コード値が３回連続して出現した場合、処理ユニットのサイズは３つのコード単位になる。そうでなければ、処理ユニットのサイズが３つのコード単位を超えるべきである。それは４つ、５つ又は６つ等になってもよい。そのため、終了条件（終了条件は、即ちＭａｘ３  ５ビットコード単位における全ての３つの固有コード値が現れる）が満たされていない場合、簡単に４つのコード単位を用いて別の終了点としてもよい。つまり、０ヘッドデザインの３値コード単位の定義を用いて３つの連続したコード値を読み取る場合、全ての３つの固有データコード値（即ち図表３０にリストされているｖ１、ｖ２及びｖ３）を取得することができず、終了点は読み取られた４番目のコード値に終了し、このような状況で、全ての３つの固有コード値が現れるか否かに関わらず、４つのコード単位が処理ユニットになる。３つの連続したコード値を読み取ることによって、全ての３つの固有データコード値が現れる場合、終了点は読み取られた３番目のコード値にあり、且つ処理ユニットは３つのコード単位から構成される。それで、処理ユニットのサイズは、そのコード単位の数に定められ、前記数は、処理中のデジタルデータセットのデータ割り当ての状況に応じて動的に変化する。データ割り当ての状況によれば、処理ユニットが４つのコード単位のサイズであるべき場合、これに関して２つのシナリオがある。
（ｉ）全ての３つの固有コード値が存在する。
（ｉｉ）全ての３つの固有コード値が存在するわけではない。
従って、３つのシナリオがある。
（ａ）３つのコード単位を備える処理ユニットであって、その中に全ての３つの固有コード値が存在する。
（ｂ）４つのコード単位を備える処理ユニットであって、その中に、全ての３つの固有コード値が存在する。
（ｃ）４つのコード単位を備える処理ユニットであって、その中に全ての３つの固有コード値が存在するわけではない。
【００９９】
従って、図表３１に示すように、分類コードをこれら３つのシナリオに割り当てることができる。
図表３１ａ
段落００９８に記載の３つのシナリオのシナリオ分類コード（ＣＨＡＮコードの一部）
シナリオ分類コード  シナリオ
０                （ａ）
１０              （ｂ）
１１              （ｃ）
これら３つのシナリオの頻度分布に応じて、最も高い頻度を有するシナリオを最も少ない数の２進数ビットを使用するように調整してもよい。従って、シナリオ（ｃ）は最も高い頻度を有すれば、シナリオ分類コードのシナリオ分布を図表３１ｂに示すように調整してもよい。
図表３１ｂ
段落００９８に記載の３つのシナリオのシナリオ分類コード（ＣＨＡＮコードの一部）
シナリオ分類コード  シナリオ
０                （ｃ）
１０              （ｂ）
１１              （ａ）
そのため、デジタルデータ入力ファイル全体のエンコーディング及びデコーディングについて、まずデジタルデータファイル全体を解析し、頻度が最も高いシナリオを見つけて、それを割り当てて最も短い分類コードを使用し且つ他のシナリオを下にプッシュする。従って、デコーディングが正しく行われるように、シナリオデザインインジケータ（どのシナリオ分類スキーマ又はデザインを使用するかを示す）をヘッダーに含める必要がある。
【０１００】
本発明の実施例において、ＣＨＡＮコードの分類コードをどのように使用するかを論じた後、ＣＨＡＮコーディングの別の技術（即ち動的コード調整）を使用することによって、ＣＨＡＮコードの内容コードをどのように設計し且つ操作するかが見られる。シナリオ（ａ）の場合、シナリオ分類コード＋ランク及び位置コードというエンコーディングを使用することができる。
シナリオ（ａ）は、３つのコード単位の処理ユニットであるため、その中に全ての３つの固有コード値が存在し、２ビット又は３ビット［ＣＨＡＮコーディングのＡＡＢ技術を使用して、例えばここでの実際の値範囲は６であり、即ちシナリオ（ａ）の終了条件を満たす３つのコード単位のうちの６つの固有処理ユニットを有し、下限値範囲は４値に相当する２ビットであり、上限値範囲は８値に相当する３ビットである］を用い、ランク及び位置コードが全ての６つの処理ユニットの可能な組み合わせを被覆する可能であるため、そのうち３つのコード単位はそのランク及び位置に区別される３つの固有コード値を備え、次の図表３２に示すとおりである。
図表３２
３つの固有コード値を持つ３つのコード単位の処理ユニットに対するランク及び位置の面での６つの可能な組み合わせのＲＰコード割り当て
ＲＰコード  ビット  ＋／−  ランク及び位置の面での組み合わせ  ビット
００        ２＋２  −１      ｖ１ｖ２ｖ３                      ５
０１        ２＋２  −１      ｖ１ｖ３ｖ２                      ５
１００      ２＋３            ｖ２ｖ１ｖ３                      ５
１０１      ２＋３            ｖ２ｖ３ｖ１                      ５
１１０      ２＋３            ｖ３ｖ１ｖ２                      ５
１１１      ２＋３            ｖ３ｖ２ｖ１                      ５
【０１０１】
シナリオ（ｂ）及び（ｃ）のＣＨＡＮコードの内容コードに対してＣＨＡＮコーディングを行うために、これらのシナリオの終了条件によって決定されたように、読み取られた４番目のデータコード値を使用してもよい。前記４番目のデータコード値、即ち終了値は、０ヘッドデザインの３値コード単位の定義に従って読み取られたのと全く同じようにオリジナルコードによって表され、即ちオリジナルコードを変更する必要がない。従って、シナリオ（ｂ）と（ｃ）の内容コード部分のエンコーディングには、それぞれ以下のステップが含まれる［シナリオ（ａ）は単独で処理されれば］。
（ａ）係るコード単位の定義を用いることによって４つの連続したデータコード値を読み取る。
（ｂ）４番目のデータコード値を読み取ったとおりに書き込む。
（ｃ）必要に応じてコード調整技術を用いて１番目のデータコード値を書き込む。
（ｄ）必要に応じてコード調整技術を用いて２番目のデータコード値を書き込む。
（ｅ）必要に応じてコード調整技術を用いて３番目のデータコード値を書き込む。及び
（ｆ）ステップ（ａ）で読み取られた４つの連続したコード値をエンコーディンした後に、エンコーディングされていないコード単位の開始点に戻るまで、ステップ（ａ）にループバックする。
且つ適切な場合、上記ステップ（ｃ）から（ｅ）で述べたコード調整技術は、内容コードのランク及び位置のエンコーディング、内容コードの昇格及び内容コードの省略、内容コードの降格、並びに適切な場合の内容コードの復元を含む。
【０１０２】
シナリオ（ｂ）の場合、４番目のデータコード値は、３つのデータコード値：ｖ１、ｖ２又はｖ３のうちの１つであってもよい。そのため、シナリオ（ｂ）において、サブシナリオは以下のとおりである。
図表３３
シナリオ（ｂ）における３つのサブシナリオ及びＲＰコーディング
【表２６】
2019528027.tif 000029
シナリオ（ｂ）における３つのサブシナリオのそれぞれについて、また６つの可能な組み合わせがある。
これらのサブシナリオのそれぞれにランク及び位置エンコーディング技術を用い、図表３３に示すように、それらのそれぞれの６つの可能な組み合わせに２ビット又は３ビットを用いる。
あるいは図表３４に示すように、適切な状況でコード昇格及びコード省略技術を用いてもよい。
図表３４ａ
シナリオ（ｂ）における３つのサブシナリオ及びコード昇格並びにコード省略
【表２７】
2019528027.tif 000030
又は、４番目のコード値を配置した後に配置される値は、図表３４ｂのように並べ替えることができる。
図表３４ｂ
シナリオ（ｂ）における３つのサブシナリオ及びコード昇格並びにコード省略
【表２８】
2019528027.tif 000031
コード昇格及びコード省略という技術を使用する場合、一貫性を考慮すると、このような配置は段落０１０３に説明されるシナリオ（ｃ）により適しているため、図表３４ｂにおけるコード値の配置は、図表３４ａよりも優先される可能性がある。
上記シナリオ（ｂ）のサブシナリオ（ｉ）を採用することにより、ビット使用数を減らし、コード昇格は論理推定の結果である。例えば、シナリオ（ｂ）は、読み取られた４つの連続したコード値に３つの固有コード値が全て現れなければならないシナリオであるため、図表３３ｂに用いられたシナリオ分類コードと４番目のコード値（例えばｖ１）を配置した後、エンコーディングされたコードは、図表３５に示すように変化する。
図表３５
シナリオ分類と４番目のコード値のエンコーディング
シナリオ
（ｂ）４番目のコード値  ３番目のコード値  ２番目のコード値  １番目のコード値
ｖ１
１０  ０
そして残りの３つのコード値のエンコーディングコードは記入される。シナリオ（ｂ）であるため、最初の３つのコード値、つまり１番目から３番目のコード値は、４番目のコード値と違わなければならない。シナリオ（ｂ）に設計された終了条件を満たす４番目のコード値であるためである。従って、残りの３つのコード値はｖ２又はｖ３である。且つ選択肢は２つしかないため、これら２つの異なる値の出現を表すには、ビット０又はビット１のいずれか１ビットしか必要ない。もともとｖ２とｖ３はそれぞれ１０と１１で表される。そのため、これらのコード値は、ビット使用数を節約するために、それぞれ０と１を用いるように昇格される。これはコード昇格、ＣＨＡＮコーディング技術である。また、３番目と２番目のコード値が全てｖ２であれば、最初のコード値は、シナリオ（ｂ）に対応して定義されているため、ｖ３でなければならず、そうでなければシナリオ（ｂ）の終了条件を満たすことができない。そのため、上記推論により、論理推定によってｖ３を省略してもよい。言及したＣＨＡＮコーディングのコード昇格及びコード省略技術を用いて４つのコード単位から構成される処理ユニットにエンコーディングして得られたエンコーディングコード全体は、図表３６に示すとおりである。
図表３６
ＣＨＡＮコーディングのコード昇格及びコード省略を用いてエンコーディングを行う
（ｂ）４番目のコード値  ３番目のコード値  ２番目のコード値  １番目のコード値
ｖ１              ｖ２              ｖ２              ｖ３
１０  ０                ０                ０                ［］
［コード昇格］                        ［コード省略］
コード昇格及びコード省略技術を使用することにより、図表３３においてランク及び位置コーディング技術を使用するのと同じビット使用結果（図表３４ａ及び図表３４ｂにリストされている２＊２ビット＋４＊３ビット）が得られることが分かる。この２つの技術は、得られたビットパターンの配列にのみ異なる。
【０１０３】
同様にシナリオ（ｃ）の場合、４番目のデータコード値は、ｖ１、ｖ２又はｖ３という３つのデータコード値の１つであってもよい。従って、シナリオ（ｃ）では、サブシナリオは図表３７にリストされている。
図表３７
シナリオ（ｃ）の３つのサブシナリオ及びＲＰコーディング
【表２９】
2019528027.tif 000032
シナリオ（ｃ）における３つのサブシナリオのそれぞれについて、また１５種の可能な組み合わせがある。上記図表３７に示すように、これらのサブシナリオのそれぞれにランク及び位置エンコーディング技術を使用することができ、図表３５に示すように、それらのそれぞれの１５種の可能な組み合わせに３ビット又は４ビットを使用する。
あるいは、必要に応じて、コード昇格、コード省略及びその他の形式のコード調整技術を使用することができる。図表３８は、まず４番目のコード値を配置した後に、残りの３つのコード値を３番目のコード値、２番目のコード値、１番目のコード値の順にエンコーディングすることによるコード調整方法を示す。シナリオ（ｃ）では、２つの固有コード値しか存在しないため、４番目のコード値は既に１つとする。そのため、残りの３つの位置は、４番目のコード値と同じである１つと残りの２つの固有コード値のうちの１つを書き込む必要がある。ただし、３つの選択肢に２つの選択があるため、ビット使用数を減らす時にその不確実性を排除するために、４番目のコード値以外のものを最初に決定することが最適である。そのため、残りの３つのコード値を直接エンコーディングするために、処理中のデジタルデータ入力内の処理ユニットの３番目位置のコード値をエンコーディングすることが好ましい選択であるかもしれない。これは、次々に２つ又はそれ以上の同じコード値を有する機会が２つの異なるコード値を有する機会より少ないということに基づく従来の仮定である。当然のことながら、処理中のデジタルデータ入力内の３つの固有コード値に頻度分布パターンに関する利用可能な情報が存在すれば、このような配置選択を調整してもよく、そのうち利用可能な情報が前記変更を保証できる。しかしながら、便宜上、図表３８はまず４番目、１番目、２番目及び３番目という順に配置をアレンジする。
４番目のコード値がｖ３であれば、他の３つの位置の値はｖ１、ｖ２又はｖ３のいずれか１つであってもよい。他のコード値の存在が知られていることが早ければ早いほど、コード昇格の技術を使用することによってより多くのビットが節約される。しかしながら、存在する２つのコード値のうちの１つはｖ１、ｖ２及びｖ３という３つの値のいずれか１つであり、且つそのうちの１つはｖ３であってもよいため、ｖ３の昇格は論理に合致する。即ち、まず１１から０へ、次にｖ１をｖ２に、そしてｖ２をｖ３に降格させる。そして、他の１つのコード値が出現した場合、選択肢は既に出現している２つの固有コード値に限定される可能性がある。４番目のコード値は、ビット０のコード値のｖ１ランクを採用するため、出現する２番目の固有コード値はビット１０のコード値を使用することができる。この論理を用いることにより、図表３８は次のように生成される。
図表３８
シナリオ（ｃ）における３つのサブシナリオ及び１つのビット（ビット０）を用いるシナリオ分類コードのコード調整
【表３０】
2019528027.tif 000033
ここでシナリオ（ｃ）では、コード昇格及びコード省略技術を使用してランク及び位置エンコーディング技術を使用することとほぼ同じであるビット使用結果（ここでコード昇格技術を使用し、明らかにわずかに優れている）を与えることが分かる。
上記結果から、別の観察結果は、エンコーディング後に拡張をもたらすそれらのコード値エントリは、より多くのｖ１コード値を有するエントリであるということである。そのため、データセットのデータ割り当てはビット１よりもビット０が多い場合、上記技術を使用してデジタルデータセットを読み取ってエンコーディングに用いるために、１ヘッドデザインをコード単位とする定義を使用するほうが最適である。３つの固有コード値は以下のようになる。
１
０１
００
このようにして、ビット０は、ｖ１になる代わりに、読み取り時にｖ２及びｖ３としてサンプリングされる。従って、明らかに上述したようにデジタルデータ入力の変化するデータ割り当てパターンに対応する処理ユニットのサイズに動的調整を行う技法を使用することは、エンコーディング中の動的コード調整のより高い柔軟性を可能にする。より重要なことは、データ解析段階では、シナリオ分類コードを有する３つのシナリオ（ａ）、（ｂ）、（ｃ）を整理して割り当てるための情報を収集することができ、それによって頻度の最も高いシナリオにビット数を最小にする。また、ビット０とビット１の頻度分布に応じて、コード単位の０ヘッドデザイン又は１ヘッドデザインを選択して使用される。また、段落００６２及びその後に説明されたデータセットにおけるビット０とビット１の比率を変更する技術は、圧縮されて上記説明された他の技術と共に用いられる場合、ランダムセットに応用することができる。
図表３２及び図表３４ｂにおけるシナリオ（ａ）及び（ｂ）のビット使用結果を検査することにより、処理ユニットに全ての３つの固有コード値が存在する場合、データ割り当てパターンは変化が少なく、且つ少ないビット使用数でこれらのパターンを示すため、ＲＰコーディングを使用するか、コード昇格及びコード省略によるコード調整技術を使用するかに関わらず、エンコーディングを行うことがより容易である。従って、以下の終了条件を変更することによってさらに前に言及した設計を改善することができる。当該設計は異なる数のコード単位付きの処理ユニットを使用する。
使用されるどの処理ユニットも、ｖ１、ｖ２及びｖ３の全ての３つの固有コード値（即ち０、１０、及び１１）を含むべきである。
そのため、ｖ１、ｖ２及びｖ３の３つの固有コード値が現れるまで、それを５つのコード単位又は６つのコード単位（等）サイズの処理ユニットに置き換え、且つ終了点が当該コード単位に停止させることにより、前に検討したシナリオ（ｃ）を解消し且つ代替しなければならない。前記コード単位は最後に現れる以下のトリオの固有コード値（ｖ１、ｖ２及びｖ３）を含む。そしてシナリオ分類コードは次のように変更される。
図表３９ａ
最後の固有コード値の出現に基づくサイズが異なる処理ユニットのシナリオ分類コード（ａ）
シナリオ  処理ユニットのサイズ
分類
コード
０        ３つの連続したコード単位（最後のコード単位のみがトリオにおける最後に現れる固有コード値（ｖ１、ｖ２及びｖ３）を持つ）
１０      ４つの連続したコード単位
１１０    ５つの連続したコード単位
１１１０  ６つの連続したコード単位
１１１１０  等
図表３９ｂ
最後の固有コード値の出現に基づくサイズが異なる処理ユニットのシナリオ分類コード（ｂ）
シナリオ  処理ユニットのサイズ
分類
コード
０        ４つの連続したコード単位（最後のコード単位のみがトリオにおける最後に現れる固有コード値（ｖ１、ｖ２及びｖ３）を持つ。これらのシナリオにおける頻度分布が保証されれば、ビット使用数を最小化するためにここで交換する）
１０      ３つの連続したコード単位
１１０    ５つの連続したコード単位
１１１０  ６つの連続したコード単位
１１１１０  等
上記シナリオ分類コードは全てビット０で終わる。そのように設計される場合、シナリオ分類コードはビット１で終わることはない。それ以外の場合、ビット１で終了するシナリオ分類コードはシナリオ（ｃ）と類似し、シナリオ（ｃ）の処理ユニットの数は固定であり、前記処理ユニットは前記点まで１つ又は２つの固有値しか含まない。即ちシナリオ（ｃ）の代わりに、４コード単位は３つ未満の固有値を含み、５コード単位は３つ未満の固有値を含み、６コード単位又は７コード単位も、以下同様である。シナリオコードが有する２進数ビットに依存する。
【０１０４】
従って、シナリオ（ａ）と（ｂ）のビット使用図表は、次のように修正できる。
図表４０
ランク及び位置に関する３つの固有コード値の６つの可能な組み合わせに対するＲＰコード割り当て
【表３１】
2019528027.tif 000034
図表４１
シナリオ（ｂ）の３つのサブシナリオ及びコード昇格とコード省略
【表３２】
2019528027.tif 000035
図表４０から分かるように、シナリオ（ａ）では、１つのビット０が使用されており、現在は、シナリオ３コード単位に改名されているため、エンコーディング結果は、このシナリオに対して、さらに優れる。図表４１におけるシナリオ４コード単位のビット使用結果は、以前と同じにすぎない。しかしながら、多くのサイズ（あるいは最悪の場合で、さらには無限大である）の異なる処理ユニットが存在している可能性があることを考慮すると、プログラミングが発生可能な数限りないこのシナリオに適応するようにさせるために、もっと簡単な論理が存在しなければならない。従って、そのようなシナリオを全てエンコーディングするための論理は、次のように修正できる。
（ａ）関連するコード単位の定義を使用して、記入された３つの連続したデータコード値を読み取り、且つ終了条件が満たされているか否かを判定する。終了条件は、これまでに読み取られた連続したデータコード値であり、それは、設計されたコード単位に従った全ての固有データコード値を含む［即ち、この場合、これまでに読み取られたコード単位には３つの固有コード値が全て含まれていない時に、ステップ（ｂ）に進む；そうでない場合は、ステップ（ｃ）に進む］。
（ｂ）別の１つのデータコード値を読み取り［即ち、これまでに読み取られたコード単位には、３つの固有コード値が全て含まれていない時に］、且つ読み取られたコード単位には、３つの固有コード値［即ち、この場合の終了条件］が全て含まれるまで終了条件が満たされているか否かを毎回評価する。終了条件が満たされた場合、ステップ（ｃ）に進む。
（ｃ）このように読み取られたデータコード値は、全ての固有データコード値［３値コード単位の場合には、３である］を含む時に、このように読み取られたデータコード値の数を計算し、且つ対応するシナリオによる分類コード値を決定して書き込む。次に、最後に読み取られたデータコード値を、読み取ると完全に同じように書き込む。
（ｄ）存在する他の２つの固有コード値のうちどちら［３値コード単位の場合、ビット０は、ステップ（ｃ）で読み書きされた最後の１つの固有データコード値を控除して残った２つの固有データコード値における上位ランクを有する固有データコード値に用いられ、且つビット１は、下位ランクを有する１つのコード値に用いられる。逆もまた同様であり、適切な場合では、設計によって決まる］が、第１位置から読み取られた１つのコード値を先頭から最後の位置の前のコード値に書き込む［即ち、このステップ（ｄ）で述べたビット０又はビット１を使用してそれを置換又はエンコーディングする］までかを識別するために、１ビットコードを使用して書き込む。適切な場合では、内容コード調整のための技術［適切な場合では、内容コードのランク、位置コーディング、内容コードの昇格、内容コードの省略、内容コードの降格及び内容コードの復元を含む］を使用する。
（ｅ）処理中の処理ユニットのためにエンコーディングする。即ち、ステップ（ａ）で読み取られた最後の１つの位置の前までの１つのデータコードをエンコーディングした後、エンコーディングされていないコード単位の始まる点に達するまでステップ（ａ）にループバックする。
上記で修正されたエンコーディングステップによれば、シナリオ３コード単位から始まるビット使用図表を以下のように修正できる。
図表４２
シナリオ３コード単位のエンコーディングとビット使用
【表３３】
2019528027.tif 000036
ここで、［］は、論理的な推論によるコード省略を表す。また、それは、第１位置データコード値をエンコーディングするためのビット０とビット１に使用され、適切な場合では、コード昇格を使用するコード調整である。
図表４３
シナリオ４コード単位のエンコーディングとビット使用
【表３４】
2019528027.tif 000037
上記図表から分かるように、シナリオ３コード単位は、シナリオ分類コードとして１０を使用して、シナリオ４コード単位は、シナリオ分類コードとして０を使用する場合は、全てのエントリは、いずれも均一な結果又はビット使用数が節約される結果を有する。
シナリオ５のコード単位のエンコーディングとビット使用は、長くて複雑であるため、リストに載られることが不能である。しかしながら、エンコーディングは同じ論理に従うので、ビット使用結果は以下のように簡単に説明することができる。
【０１０５】
シナリオ４コード単位は、議論の基礎としてシナリオコード１０を使用している。１８個のエンコーディングされたエントリについては、ビット使用数は６ビットが減少している（即ち、平均して節約された１０ビットから損失された４ビットを引く）。シナリオ５のコード単位がシナリオコード１１０を使用する場合、それは、各エンコーディングされたエントリに使用されるシナリオコードに１ビットを余分に使用することを意味しているが、それは、別の付加のデータコード値をエンコーディングする機会を有する。
０ヘッドデザインによる３値コード単位の３つの固有データコード値の図表４４における頻度分布は、優先権主張の下で実行されている前記ＰＣＴ出願中に言及した自動プログラムにより生成されるものである。
図表４４
８００００個のランダムビットを使用した３値コード単位の頻度分布
０：２６５３６
１０：１３１５６
１１：１３５７６
【０１０６】
ｖ２及びｖ３の頻度カウントは、５０％をわずかに上回り、即ち約半分であり、且つｖ１は、５０％をわずかに下回り、約半分であることが分かる。従って、データコード値が現れる確率の約半分はｖ１であり、残りの半分は、２５％がｖ２であり、２５％がｖ３である。従って、ｖ１が第５データコード値である場合、再び現れる付加のデータコード値はｖ２かｖ３のどちらかでなければならないので、１ビットが節約される確率は半分である。そして、ｖ２又はｖ３が第５データコード値である場合は、ｖ１又はｖ３は、ｖ２が第５データコード値である時に、それに伴って現れ、あるいは、ｖ１又はｖ２は、ｖ３が第５データコード値である時に、それに伴って現れ、この場合には、１ビットを節約できる確率は半分の半分である。従って、平均して、１ビットが節約される確率は、約３／４であり、即ち３／４ビットが節約される。同様に、第１値、第２値及び第３値が同じ固有データコード値である場合、論理的な推論によって、第４値が導き出され得る。従って、これらの場合に使用されるビット使用は、２ビット又は１ビットである。従って、全体的に言えば、シナリオの数が４つのコード単位から５つ以上のコード単位まで増えても、多くの欠落はない。シナリオ４コード単位が１０（２ビット）を使用する時に、エンコーディングされた１８個のエントリで６ビットの使用数を平均して節約するという事実、及びシナリオの数が３つのコード単位から増加し続ける時に、これらのシナリオに使用される８００００個のランダムビットの頻度分布が減少しているという事実を考えると、ランダムデータセット全体が全体的なビット使用数を節約できる可能性は非常に高い。ビット使用数を節約する最良の結果が得られるように、最も頻繁に使用される最初の３つのシナリオの分布をさらに再調整してみることができる。
【０１０７】
（ａ）、（ｂ）及び（ｃ）の順序に従って、２ビット（１０）、２ビット（１１）及び１ビット（ビット０）を有するシナリオコードを割り当てて配置する図表４２［即ち、シナリオ３コード単位又は（ａ）］、図表４３［即ち、シナリオ４コード単位又は（ｂ）］及び図表３８［即ち、シナリオ（ｃ）］を再検討することにより、シナリオ（ａ）では、６つのエンコーディングされたエントリのうち２ビットが節約され（２ビットを節約して０ビットを使用する）、シナリオ（ｂ）では、１８個のエントリのうち６ビットが節約され（１０ビットを節約して４ビットを損失する）、且つ４５個のエントリのうち３ビットが節約される（即ち、２０ビットを節約して１７ビットを損失する）ことが分かる。シナリオ（ａ）、（ｂ）、（ｃ）の３つの全ては、ビット使用数を節約しているようである。しかしながら、その結果は、これらの３つのシナリオの各々における各エンコーディングされたエントリの頻度分布に依然として依存している。しかしながら、８００００個のランダムビットを使用する３つのシナリオの図表４５における頻度分布は、優先権主張の下で実行されている前記ＰＣＴ出願にリストされた自動プログラムによって生成される。
【０１０８】
このようにして作成された図表４５は、以下のようにリストされる。
図表４５
８００００個のランダムビットを使用したシナリオの頻度分布
状況  １００００
全部：８４４９
ｃｕ３：１６０６
ｃｕ４：１５７８
ｃｕ５：１２９２
ｃｕ６：９５３
ｃｕ７：７７４
ｃｕ８：５７５
ｃｕ９：４２２
ｃｕ１０：３１１
ｃｕ１１：２３８
ｃｕ１２：１９１
ｃｕ１３：１４３
ｃｕ１４：９４
ｃｕ１５：５６
ｃｕ１６：４９
ｃｕ１７：４２
ｃｕ１８：３３
ｃｕ１９：１８
ｃｕ２０：１６
ｃｕ２１：６
ｃｕ２２：１３
ｃｕ２３：７
ｃｕ２４：７
ｃｕ２５：１０
ｃｕ２６：４
ｃｕ２７：１
ｃｕ２８：３
ｃｕ２９：２
ｃｕ３０：１
ｃｕ３１：２
ｃｕ３２：０
ｃｕ３３：０
ｃｕ３４：０
ｃｕ３５：０
ｃｕ３６：０
ｃｕ３７：０
ｃｕ３８：１
残り：１
上記図表４５から分かるように、０ヘッドデザインによる３値コード単位を使用してランダムに生成された８００００ビットを読み取る時に、使用終了条件、即ち３つの固有データコード値が処理ユニットに存在すべき終了条件では、最後の固有データコード値（終了値）が現れると、この８００００個のランダムビットにより、３つのコード単位から３８個のコード単位までのサイズの異なる処理ユニットが生成され、残りが未エンコーディングコード単位である。３から３８までのコード単位のサイズの異なるこれらの処理ユニットは、図表４５にリストされており、リストされているのは、生成された例の１つであり、８００００個のランダムビットにおけるそれらの出現頻度を示している。
処理ユニットの頻度は、一般に、処理ユニットのサイズの増加につれて減少し、且つ３つのコード単位から２０個のコード単位までかなり安定していることが分かる。８４４９個の処理ユニットでは、シナリオ３コード単位又は（ａ）及び４つのコード単位又は（ｂ）の頻度は、それぞれ１６０６及び１５７８である。従って、シナリオ（ｃ）の頻度は、８４４９−（１６０６＋１５７８＝３１８４又は３７．６８％）＝５２６５又は６２．３２％である。
８００００個のランダムビットのデータセットから生成された上記情報を考慮すると、エンコーディング設計に対して別の改善を行うことができる。例えば、データセットでは、ビット０の比率ではなく、ビット１の比率を上げたい場合である。図表４６におけるシナリオ（ａ）、（ｂ）及び（ｃ）について、シナリオ分類コード（又はシナリオコードと略称される）として以下のコードを使用することができる。
図表４６
シナリオ（ａ）、（ｂ）、（ｃ）のシナリオコード割り当て
シナリオコード  シナリオ      ％
１                （ｃ）    ６２．３２
０１              （ａ）    １９．０１
００              （ｂ）    １８．６７
シナリオ（ｃ）が処理ユニットの大部分を占めているので、最短のシナリオコードビット１が与えられるべきであり、それはビット１の比率を増加させることを意図しているので、シナリオコードの１ヘッドデザインが採用される。同じ理由で、シナリオ（ａ）とシナリオ（ｂ）には、シナリオコードビット０１とシナリオコードビット００がそれぞれ割り当てられる。
他の改善は、２つの同じデータコード値が互いに隣接していることが存在する確率は少ないと仮定した場合、反対の位置配置、即ち第４、第３、第２、及び第１の反対の位置順序でエンコーディングされたデータコードを配置することである。これは、シナリオ（ｃ）に有利であり、第４データコード値に加えて次の固有データコード値の出現確率を高める。さらに重要なことに、さらに分析した結果、エンコーディングされたデータコードは、相対位置の反対配置に従って、データコードの並べ替えにより、別の特性又は特徴（前記特性は、最後の１つのデータコード値が最後の前の１つのデータコード値と異なっているか否か）を形成でき、ビットを節約して格納する際に十分に利用されるために、前記特性又は特徴を圧縮できることを見出した。前記特徴は、終了条件の設計に関連している。簡単にするために、まず、他の同様の終了条件を使用して説明することができる。ここで、終了条件は、３つのコード単位で停止され、データコード値は、２つのグループ又は２つのクラスのみに分割され、１つは、３値コード単位の全ての固有データコード値を有する３コード単位であり、もう１つは、全ての固有データコード値を有していない３コード単位である。従って、これは、第１クラスには、３つの固有コード値があり、且つ第２クラスには、２つの固有コード値があり、ここで１つの固有コード値が欠落していることを意味している。
【０１０９】
従って、図表４５の結果によると、これらの２つのクラスは次の頻度を有している（図表４７にリストされているとおり）。
図表４７
８００００ビットのランダムデータセットにおける２つのクラスの処理ユニットの頻度分布：１つのビットは、全ての３つの固有データコード値を有しており（クラスＡ）、もう１つのビットは、３つ未満の固有データコード値（クラスＢ）を有している。
クラス    頻度        ％
Ａ      １６０６    １９
Ｂ      ６８４３    ８１
合計    ８４４９    １００
クラスＢは、圧倒的多数のデータコード値を有している。しかしながら、これらの処理ユニットは、この特徴に従って分割され、この特徴は、相対位置に対するデータコード値の反対の配置に関連する。これらのデータコード値を逆に配置するには、スキーマ及び設計の１つは、まず第３データコード値を配置し、次に第２データコード値を配置し、その後第１データコード値を配置することである。従って、全ての３つの固有データコード値を有している処理ユニットについては、第３データコード値と第２データコード値が異なる必要がある。全ての３つの固有データコード値を有していない処理ユニットについては、第３データコード値と第２データコード値が同じでも異なってもよい。この特徴を別の分類基準として使用すると、ビットストレージを節約する点でよりよい結果が得られる可能性がある。従って、シナリオコードを同様に対応して割り当てることができる。従って、サブシナリオコードのビット１を第３データコード値と第２データコード値が同じ処理ユニットに割り当てることができ、ビット０を第３データコード値と第２データコード値が異なる処理ユニットに割り当てることができる。ここでのシナリオクラス０については、追加のサブシナリオコードビットを割り当てることができ、あるいはＣＨＡＮコーディングの別の新規特徴を使用して、そのようなサブシナリオコードビットと内容コードビットとを組み合わせることができる。前記新規特徴は、事後分類の使用又はＣＨＡＮコードの内容コード内での事後分類コードの配置である。以下の図表４８にリストされるように、このＣＨＡＮコーディングのエンコーディング技術は、図表４７における終了条件を使用して３つの３値コード単位の処理ユニットにおける実際のエンコーディングを使用することにより、よりよく説明される。
図表４８
シナリオクラス０とシナリオクラス１に割り当てられたシナリオコード：エンコーディングとビット使用及びビット１／ビット０の変化に伴って変わる。
【表３５Ａ】
2019528027.tif 000038
【表３５Ｂ】
2019528027.tif 000039
【表３５Ｃ】
2019528027.tif 000040
上記から、結果が非常に近いことが分かる。図表４８におけるシナリオコード１が割り当てられたエンコーディング処理ユニットの論理は以下のとおりである。
（ａ）デジタルデータ入力からデータコード値を読み取った後、及び処理中の処理ユニットにおけるデータ割り当ての性質を決定した後、処理ユニットが第３データコード値と第２データコード値が同じクラスに属する場合、シナリオコードビット１を書き込む。
（ｂ）第３データコード値をそのまま書き込む。
（ｃ）第２データコード値を論理により省略する。第２データコード値は第３データコード値と同じであるので、論理により省略することができる。
（ｄ）コード単位の設計により読み取られた元のデータコード値を使用して第１データコード値を書き込む。処理ユニットが全ての３つの固有データコード値を有していないものであるので、それは１つ又は２つのデータコード値のみを有することができる。１つのデータコード値は既に第３値として現れているが、３つの選択肢がある。従って、第１位置の値は直接読み取り及び書き込むことしかできない（又は、第３位置にあるコード値がビット０に上げられ、他の２つの残りの値は、それらの相対的な順位に従って、ビット１０又はビット１１に調整され、その後、第１位置の値はこの調整されたコードを使用する）。
図表４８におけるシナリオコード０が割り当てられた処理ユニットは以下のようにエンコーディングされる。
（ｉ）デジタルデータ入力からデータコード値を読み取った後、及び処理中の処理ユニットのデータ割り当ての性質を決定した後、処理ユニットが第３データコード値と第２データコード値が同じではなく且つ全ての固有データコード値が存在するクラスに属する場合は、それにシナリオコードビット００を書き込む。処理ユニットが第３データコード値と第２データコード値が同じではないが、全ての固有データコード値が存在していないクラスに属する場合は、それにシナリオコードビット０１を書き込む。
（ｉｉ）第３データコード値をそのまま書き込む。
（ｉｉｉ）以下のエンコーディング論理を使用して、シナリオコード００を有する処理ユニットに、第２データコード値を書き込む。それは全ての固有データコード値を有し且つ１つのデータコード値が既に第３データコード値として現れた時に、依然として２つの選択肢がある。従って、どちらが第２データコード値として現れるかを示すために、１ビットを使用する（小さい値にはビット０、大きい値にはビット１を使用する。ここで、適切な場合には、０ヘッドデザインでは、ｖ１が最小値であり、ｖ３が最大値であるように設計することができる）。又は、次のようなエンコーディング論理を使用して、シナリオコード０１を有する処理ユニットに、第２データコード値を書き込む。全ての固有データコード値を有しなく且つ１つのデータコード値が第３データコード値として現れた時に、依然として２つの選択肢しかない（２つの固有値はまだ存在していない）。ここでは、シナリオクラス０が第３データコード値と第２データコード値が同じでないクラスとして定義されているため、１ビットを使用して、どちらが第２データコードとして現れるかを示す（ビット０は小さい値ｖ１に使用され、ビット１は大きい値ｖ３に使用される）。
（ｉｖ）シナリオコード００が割り当てられた処理ユニットについては、第１データコード値を省略することができる。シナリオコード０１が割り当てられた処理ユニットについては、次のエンコーディング論理を使用して、第１データコード値をエンコーディングして書き込むことができる。異なる２つのデータコード値が既に第３位置と第２位置に出現した時に、シナリオクラス０１には全ての３つの固有データコード値がない。つまり、第１位置におけるデータコード値は、第３位置と第２位置における２つの値のうち１つでなければならない。従って、別のビットを使用して、第１位置データコード値をエンコーディングして書き込む（ビット０は小さい値ｖ１に使用され、ビット１は大きい値ｖ３に使用される）。
【０１１０】
一形態での事後分類の使用は、ビットストレージを少しずつさらに減らすのに寄与する。この例では、事後分類コードの配置は２つの方法で完了することができる。
（ａ）シナリオコード００及び０１が割り当てられた処理ユニットについては、第２ビットは、クラスＡ（全ての固有データコード値を有するクラス）又はクラスＢ（全ての固有データコード値を有しないクラス）のどちらに属するかを区別するために使用される。シナリオコードの第２ビットは、次の内容コードを組み合わせることで省略することができる。エンコーディングクラスＡにおける第２データコード値に使用されるビットとクラスＢにおける第１データコード値に使用されるビットとを組み合わせる。これらのエンコーディングコードを表現するための組み合わせは６つあるからである。図表４９の以下ので、これら６つの組み合わせのエンコーディングコード値を書き込んだ後に、２ビット又は３ビットが使用される。
図表４９
内容コードと組み合わせたシナリオコード
００は、シナリオコード０の下のクラスＡ処理ユニットに使用され、ここで、ビット０は、第２データコード値に割り当てられる。
０１は、シナリオコード０の下のクラスＡ処理ユニットに使用され、ここで、ビット１は、第２データコード値に割り当てられる。
１００は、シナリオコード０の下のクラスＢ処理ユニットに使用され、ここで、ビット０は、第２データコード値に割り当てられ、且つビット０は、第１データコード値に割り当てられる。
１０１は、シナリオコード０の下のクラスＢ処理ユニットに使用され、ここで、ビット０は、第２データコード値に割り当てられ、且つビット１は、第１データコード値に割り当てられる。
１１０は、シナリオコード０の下のクラスＢ処理ユニットに使用され、ここで、ビット１は第２データコード値に割り当てられ、且つビット０は、第１データコード値に割り当てられる。
１１１は、シナリオコード０の下のクラスＢ処理ユニットに使用され、ここで、ビット１は、第２データコード値に割り当てられ、且つビット０は、第１データコード値に割り当てられる。
上記割り当てを使用することにより、シナリオコード００及び０１の第２ビットを削除することができ、これらの処理ユニットに対して書き込まれた第１エンコーディングコードは、シナリオコード０であり、その直後に書き込まれた第３データコード値は、読み取ったものと同じであり、これに続いて、２〜３ビットの組み合わせを使用した上記シナリオコードと内容コードを書き込む。ビットの使用に関しては、ビットの使用結果は、図表４８で作成された結果とまったく同じである。
（ｂ）しかし、次の論理を使用して、シナリオコードと内容コードを組み合わせる別の新しい方法がさらにある。
（ｉ）シナリオコード０、及びシナリオコード０の下のそれらの処理ユニットに使用される第３データコード値と第２データコード値をエンコーディングして書き込む時に（その第２ビットは取り消されるように設計される）、終了コードを作成することができる。該終了コードは、シナリオコード０の第２ビットとシナリオコード０の下のクラスＢの第１データコード値の内容コードとを組み合わせることにより形成されるものであり、次のように図表５０に示すことができる。
図表５０
事後ハイブリッド分類と内容コードを終了コードとする。
１は、シナリオコード０の下でクラスＢ処理ユニットを表す既存コードに使用される。ここで、第１データコード値は、ビット０である。
０１は、シナリオコード０の下でクラスＢ処理ユニットを表す既存コードに使用される。ここで、第１データコード値は、ビット１である。
００は、シナリオコード０の下でクラスＡ処理ユニットを表す既存コードに使用される。ここで、第３データコード値と第２データコード値がエンコーディングされて書き込まれた後に、終了する際に処理は行われない。
そのような終了コードは、元のデジタルデータ情報を正しく復元するためにデコーディング時に使用されるべきである。
これは、データ割り当てに関与する処理ユニットの頻度分布に依存している。上記技術は、よりよいビットストレージ節約のために使用され得る。８００００ビットの例で使用される前記ランダムデータセットについては、クラスＢ処理ユニットの頻度は、処理ユニットの総数の中で（図表４５にリストされているように８４４９）６８４３である。この６８４３の約半分は、シナリオ１に使用され、それらの半分は第１データコード値を有し、ビット０は、エンコーディングに使用され、この値は、現在終了コードのビット１により表され、シナリオコード０１の第２ビットは取り除かれる。従って、６８４３個の処理ユニットの半分に１ビットを節約することは、約３４２２／２、即ち約１７１１ビットを節約することに相当する。また、これら６８４３個の処理ユニットの他の半分の終了コードは、ビット０１の終了コードを使用するので、終了コードの２ビットを使用して、シナリオコード０１の元の第２ビット及び元の第１データコード値を表すためのエンコーディングコードのビット０／１を置き換える。従って、この半分のクラスＢ処理ユニットのビット使用数はロスがない。シナリオコード００の下のクラスＡ処理ユニットについては、ビット００の終了コードが使用される。現在削除されているシナリオコード００の元の第２ビットは、終了コードの２ビットのうち１ビットのみを占めることができる。その第１データコード値は論理により省略されているので、それに使用される終了コードの他のビットは、考慮されず、それはビット使用数の消費を表す。また、これらのクラスＡ処理ユニットに使用される頻度は１６０６である。クラスＢ処理ユニットのために節約した上記１７１１個のビットに対して、残りの決済は、１７１１マイナス１６０６＝１０５ビットのビット使用数の節約である。８００００個のランダムビットのうち、その新規特徴のみは、１０５個のビットを節約するのに役立つ。これまでに提示された技術は、シナリオ（ａ）、（ｂ）及び（ｃ）又はシナリオ３コード単位、４のコード単位及び残りのコード単位等の使用にも適用され得る。
【０１１１】
シナリオ０及びシナリオ１に分割されたクラスＡ処理ユニット及びクラスＢ処理ユニットの前の例は、ハイブリッド分類及び内容コードにおいてデータコード値をどのように組み合わせて分類し得るか、且つ事後的に配置し得るかを示している。これは事前位置における通常の配置と反対する。データ分類のもう１つの新規特徴は、埋め込み式分類コード又は内部分類コードにのみ使用されてもよい。図表５１は、この新規特徴を使用した結果を示している。
図表５１ａ
事前分類コードとクラスＡ処理ユニット
【表３６】
2019528027.tif 000041
これはまさに図表４８におけるクラスＡの部分である。
図表５１ｂ
第３データコード値と第２データコード値が同じ値であるか否かを基準として細分化するためのクラスＢ処理ユニットの内部分類コード又は埋め込み式分類コード
【表３７】
2019528027.tif 000042
クラスＡに関しては、６つのエントリ組み合わせでは２ビットの節約がある。また、第３データコード値と第２データコード値を有する、値が異なるクラスＢについては、１２種の組み合わせでは明らかな節約や損失はない。また、第３データコード値と第２データコード値を有する、値が同じクラスＢについては、９つのエントリ組み合わせでは明らかな３ビットの節約がある。前述のように、この例の技術を使用する前に、まずビット０：ビット１の比率を修正する技術、又はランダムデータセット全体に使用される不均一なデータを有するスーパー処理ユニットを使用する技術等の他の技術を使用することができる。これは、この例で述べた技術を使用するために設計される多くの可能なシナリオのうちのほんの一例である。
上記分類例は、分類コードの使用に基づくものである。００の４つのクラスは、クラスＡ処理ユニットに使用される。しかし、斬新なものは、０１、１０及び１１の使用についてである。実際には、それらは、内容コードそのものであり、ｖ１のビット０からビット０１までのわずかな修正だけで、これらの内容コードを分類コードとして使用するようにさせる。そして、エンコーディング処理において、内容コードの一部として使用される時、ｖ１のエンコーディングコード値、即ち０１は、より短い形式、即ち０のみに復元される。なぜなら、内容コード部分において誤解されず、エンコーディング処理ユニットのヘッドコードとして使用されている分類コードではないからである。上記例では、修正があるが、内容コードを分類コードとして使用したこの技術の有用性を鮮明に示している。これは、ＣＨＡＮコードの作成に使用されるＣＨＡＮコーディングのもう１つの技術である。
【０１１２】
以下に示すように、図表５２は、分類コードを内容コード（わずかに修正したもの）に置き換えることができることを示している。
図表５２
クラスＢ処理ユニットを分類するための分類コードとして、第３データコード値と第２データコード値が同じ値であるか否かを基準として修正した内容コードを使用する。
【表３８】
2019528027.tif 000043
【０１１３】
前記様々な分類技術を明らかにした後、どの技術が処理中のデジタルデータセットに最も有用であるかを評価することができる。また、使用するための分類技術の選択に従って、エンコーディング及びデコーディングのためのデータコード値の再分類及び再割り当ては、意図した目的に必要且つ適切であることが見出され得る。図表５３はそのような熟考の結果である。最も有用な技術は、データコード値を正しく分類するのに使用できる特性を正しく識別することである。検討されている本設計及びスキーマの下で、前の段落に提示された図表で使用するための多くの技術が開発、設計、実現されてきた。いくつかのコードエントリ組み合わせは、ビットを節約しているが、他のコードによって引き起こされるビットの損失は、これらの節約数を相殺し、さらにはこれらの節約数よりも多いことが観察され得る。従って、この特性又は特徴は、調査が必要なものである。それは、以上で説明したＣＨＡＮコーディングの様々な技術を使用してエンコーディングする時に、ビットの損失を発生させる問題のあるエントリ組み合わせを見つけることである。損失の原因となった問題のあるエントリ組み合わせを共に組み合わせ、且つ節約の原因となった友好的なエントリ組み合わせを同様に組み合わせると、成功の可能性を高めることができることは明らかである。ここでの図表５３では、これをデータ分類の主な基準として使用する。その後のエンコーディングでは、コード昇格、コード省略、コード置換を含むコード調整、及び範囲を使用した最も重要な絶対アドレス分岐技術等のＣＨＡＮコーディングの他の技術を使用する。
図表５３
コードが再割り当てされる前に、圧縮可能及び圧縮不可能なデータ値のエントリに基づくデータ分類は、使用される段落００７５における図表２１に示す頻度を有する。
【表３９Ａ】
2019528027.tif 000044
【表３９Ｂ】
2019528027.tif 000045
【０１１４】
上記図表５３から、２種のコード調整を行わなければならないことが分かる。
（ａ）コード交換：ｖ２ｖ１ｖ２及びｖ３ｖ１ｖ３は、元のコードが使用する５ビットのエンコーディングコードの代わりに、６ビットのエンコーディングコードをそれぞれ使用し、それによりビット損失が発生する。従って、それらのエンコーディングコードは、元のコードが使用する６ビットのｖ２ｖ２ｖ３及びｖ３ｖ３ｖ２ではなく、それぞれ使用する５ビットのｖ２ｖ２ｖ３及びｖ３ｖ３ｖ２と交換しなければならず、それによってビット利得が発生する。従って、これらのペアコード間でエンコーディングコードを交換することにより、ビット使用数のバランスを実現でき、それによりビット消費やビット利得が発生しない。
（ｂ）コードの再割り当て、再分布、又は再記入：同じ第３値と第２値を有する非圧縮クラスには、２つの空いているコード位置又はアドレスがある。これら２つの空いているコードアドレスであるｖ１ｖ１ｖ２とｖ１ｖ１ｖ３のエンコーディングコードは、１１００と１１０１であり、これら２つのエンコーディングコードのそれぞれは、４ビットを使用する。また、異なる第３値と第２値を有する非圧縮クラスには、４つの空いているコード位置又はアドレスがあり、これら４つの空いているコードアドレスに使用されるエンコーディングコードは、次のとおりである。ｖ１ｖ２ｖ１は、エンコーディングコードが１００００であり、５ビットを使用し、ｖ１ｖ３ｖ１は、エンコーディングコードが１００１０であり、５ビットを使用し、ｖ２ｖ１ｖ１は、エンコーディングコードが１０１０００であり、６ビットを使用し、及びｖ３ｖ１ｖ１は、エンコーディングコードが１０１１００であり、６ビットを使用する。従って、現在６つの空いているコードアドレスを再記入する必要がある。まず、２つの例外エントリ組み合わせを使用して、２つの空いているコード位置（ｖ２ｖ２ｖ２とｖ３ｖ３ｖ３）を記入することができる。従って、４つの空いているコード位置しか残っていない。２つは、４ビットを使用し、もう２つは、５ビットを使用して、圧縮クラスの６つのエントリ組み合わせの収容に使用される。ここで、処理ユニットは、５ビットを使用した３つの固有データコード値を有する。従って、全ての３つの固有データコード値を有する収容されていない５ビット処理ユニットにおける最初の２つは、２つの空いているコード位置を最初に再記入するために使用される。残りの４つの収容されていない５ビット処理ユニットは、残りの２つの４ビットコードの空きアドレスに残される。そして、図表５４は、このコードを再割り当てする時の状況を次のように示している。
図表５４
コード再割り当て時に、圧縮及び非圧縮のデータ値エントリに基づくデータ分類は、使用される段落００７５における図表２１に示す頻度を有する。
【表４０Ａ】
2019528027.tif 000046
【表４０Ｂ】
2019528027.tif 000047
【表４０Ｃ】
2019528027.tif 000048
【０１１５】
だから、これまでのところ、残りの４つの５ビット処理ユニットのうち２つを使用して残りの２つの４ビットの空いているコードアドレスを記入しなければならず、それにより各位置のために１ビットを節約する。また、まだ収容されていない残りの２つの５ビット処理ユニットについては、２つの６ビットのコードアドレス（頻度の最も低いエントリ組み合わせを選択する）を２倍にするために、ＡＡＢ技術を使用しなければならず、それらは、他の２つのエントリ組み合わせにより占められており、４つの７ビットエントリの組み合わせ及び２＊（７−５＋７−６）＝６ビットの損失をもたらす。しかしながら、それはＡＡＢ技術の適切な使用であり、新規な方法で新しいコードアドレスを作成することを目的とする。従って、ＡＡＢ技術を使用することにより、及び２つの４ビットの空きコードアドレスにもう１つのビットを追加することにより、２＊２個の５ビットの空きコードアドレスを取得でき、それにより４つの利用可能な５ビットの空きコードアドレスを構成する。それは、全ての３つの固有データコード値を有する収容されていない４つの５ビット処理ユニットを十分に包容でき、いかなるビットの損失を生じさせることはない。最終的な結果は、ビットの使用においていずれも均一である。この例では、ビット利得又はビット損失がない。これらは、次の図表５５に示されている。
図表５５
図表５３にリストされているコードアドレスとコードエントリ値を再割り当てした後、同等性が生じる。
【表４１Ａ】
2019528027.tif 000049
【表４１Ｂ】
2019528027.tif 000050
【表４１Ｃ】
2019528027.tif 000051
【０１１６】
上記「非圧縮クラス」と「圧縮クラス」の頻度はわずかに異なり、第１クラスが８８９７個の処理ユニットを有し、第２クラスが８８８８個の処理ユニットを有する。しかし、第２クラスがシナリオ１０と１１に割り当てられるため、スキューは、ビット０の比率ではなく、ビット１の比率を増やすことを目的とする。しかしながら、以上の図表５５に示すように、１サイクルをエンコーディングした後、ビット１が２９７ビットを減少するが、ビット０が２９７ビットを増加するという結果は、非常に驚くことである。そのため、エンコーディングした後にビット利得やビット損失がなくても、ビット０：ビット１の比率を変更することで、データを圧縮する可能性が非常に大きいが、現在エンコーディングした後に、ビット０：ビット１の比率の割り当てがより不均一になる。逆の方式でシナリオコードを割り当てる場合、ビット０：ビット１の利得や損失を次の図表５６に示している。
図表５６ａ
図表５５で使用されるシナリオコードと異なる逆の割り当てを使用する。
【表４２Ａ】
2019528027.tif 000052
【表４２Ｂ】
2019528027.tif 000053
【表４２Ｃ】
2019528027.tif 000054
【表４２Ｄ】
2019528027.tif 000055
事実により、８００００ビットのランダムデータセットに対して、スキューが減少し、ビット１だけに２５１を減少し、ビット０に同じ数で増加することが証明される。
上記から分かるように、ヘッダー内のインジケータは、シナリオコードがどのように割り当てられるか、またコード単位の０ヘッドデザイン又はコード単位の１ヘッドデザインを使用してデジタルデータが読み取られるか、及びデータ値が読み取られた後にどのようなヘッドデザインがエンコーディングするために用いられることを指示するように保留し、そのため、それらが同じでなくてもよい。そのような変動は、得られるＣＨＡＮコードエンコーディングにおけるビット０：ビット１の比率に影響を及ぼす可能性がある。そのようなインジケータは、最適なシナリオを選択することで、エンコーディングが要求される目的を達成する。
ビット０：ビット１の比率をさらに変更するために、図表５６ａをさらにコード単位の１ヘッドデザインに変更して使用でき、以下のように示している。
図表５６ｂ
逆の割り当てで、図表５６ａで使用される０ヘッドデザインと異なる１ヘッドデザインのコード単位の内容コードに用いられる。
【表４３Ａ】
2019528027.tif 000056
【表４３Ｂ】
2019528027.tif 000057
【表４３Ｃ】
2019528027.tif 000058
コード単位の内容コードのヘッドデザインを変更するための最も簡単な方法は、図表５６ａから変更された図表５６ｂで行われているように、内容コードのビット０をビット１に変更し、逆には同様である。上記の実例は、ＣＨＡＮコーディングがどのように不均一器エンコーダを作成することで、図表５６ａでビット１に２５１を減少してビット０に２５１を増加するか、又は図表５６ｂでビット１に１９４を増加してビット０に１９４を減少する。それは、ビット０：ビット１の比率において、より多くのビット１に向かう傾向が逆転することを示す。完全性のために、図表５６ｃは、０ヘッドシナリオコードと１ヘッド内容コードを使用して８００００ビットのオリジナルランダムデータセットをエンコーディングする結果を示すことに用いられ、以下のように示している。
図表５６ｃ
図表５６ｂで使用される１ヘッドデザインと異なる０ヘッドデザインシナリオコードを使用する逆の割り当ての使用
【表４４Ａ】
2019528027.tif 000059
【表４４Ｂ】
2019528027.tif 000060
【表４４Ｃ】
2019528027.tif 000061
そのため、図表５５、図表５６ａ、図表５６ｂ及び図表５６ｃのビット０とビット１を変更した結果、それぞれ＋２９７／−２９７、−２５１／＋２５１、−１９４／＋１９４、−１５３／＋１５３である。従って、図表５５は、より多くのビット０に向かう最大のスキューを与えることが明らかである。以上に示すように、同じデータ割り当てに対して、異なるヘッドデザイン及び分類コードと内容コードの割り当てを使用すれば、ビット０：ビット１の比率割り当てに影響を及ぼす可能性がある。このような割り当てを任意の固有データセットに対応するビット０：ビット１の異なる比率で割り当てるように調整することができ、１つの割り当て配置が特定の方向に向かってスキューを効果的に継続して行わない場合、スキュー方向を維持できるように変更するか、又は他の手段で行うように設計してもよく、当該不均一割り当ては、所定の点に達するまで、その点においてＣＨＡＮコーディングを使用することで圧縮される。
例えば、ＡＩ区別技術を使用してスーパー処理ユニットをさらに圧縮することができる。又は段落００６２で紹介された６値コード単位の異なるコード単位定義を使用し、１つの定義は、データを読み取ることに、もう１つの定義は、データをエンコーディングして書き込むことに用いられる。例えば、ビット１がビット０より多ければ、１ヘッドデザインの１７ビット６値コード単位定義は、データを読み取ることに用いられることが可能であり、一方では、エンコーディング及び書き込みに対して、同じヘッドデザインの１８ビット６値コード単位定義によって完了させることができる。１７ビット定義は、ｖ１の値に用いられる２ビットのビットコード１１を使用し、１８ビット定義は、ｖ１を表すための１ビットのビットコード１を使用するので、続いて１８ビット定義を使用して書き込む時に、読み取られた２ビットのコード１１は、１７ビット定義で読み取られたｖ１に用いられる１ビットのビットコード１にエンコーディングされ、それにより２ビットが１ビットに減少される。ビット１の頻度がビット０よりも高ければ、圧縮することに役立つ。
【０１１７】
例えば、図表５７において、１ヘッドデザインの１７ビットから１９ビットの６値コード単位を示している。
図表５７
１７、１８、１９ビットの１ヘッドデザインの６値コード単位を使用するコード値の定義
データ  １７ビット  １８ビット  １９ビット
値      読み取り    書き込み    書き込み
ｖ１    １１        １          １
ｖ２    １０        ０１１      ０１
ｖ３    ０１        ０１０      ００１１
ｖ４    ００１      ００１      ００１０
ｖ５    ０００１    ０００１    ０００１
ｖ６    ００００    ００００    ００００
以上説明するように、デジタルデータセットの有するビット１がビット０よりも多ければ、１ヘッドデザインのコード単位リーダーを使用することで、ｖ１は他の独立値よりもはるかに高い頻度を持っている。上記の３つの６値コード単位定義を比較することで、ｖ１が他のものより高い頻度を持っていれば、１７ビットをリーダーとして使用し、１８ビットのライターで書き込み、ｖ１を読み取るたびに、１ビットを節約するが、ｖ２とｖ３を読み取るたびに、それぞれ１ビットを損失し、ｖ４、ｖ５、ｖ６に対して、ビット使用がいずれも均一であり、そのため、ｖ１の頻度がｖ２とｖ３を足し合わせた頻度よりも高い限り、ビットの節約を達成する。ｖ１の頻度と比較して、ｖ２とｖ３及びｖ３とｖ４の間の頻度分布に応じて、１９ビットのライターを使用することができる。
【０１１８】
従って、データセット内のビット０：ビット１パターンのわずかな違いを利用して簡単な方式で圧縮を行うために、他の値のサイズのコード単位に用いられる様々なビットサイズの０ヘッドデザインと１ヘッドデザインコード単位定義を構築することができる。例えば、段落０１１７で使用されるリーダー及びライター又はエンコーダは、６値コード単位に基づいて作成されるもので、７−値、８−値、９−値、１０−値等のような他の値のサイズに基づいてこのようなリーダー及びライターを構築して使用することができる。コード単位定義の値が大きいほど、リーダー及びライターの取得可能なビット０：ビット１の差がより正確で、そしてビットストレージの節約になる。また、圧縮のためのエンコーディングを行う前に、数回の不均一処理（即ち、まず一方向に偏ったデジタルデータセット内のビット０：ビット１比率を数回サイクルで変更するために不均一器を使用する）を行うこともできる。不均一器が常にデータ割り当てパターンを一方向に偏らせることができない場合は、分類コードの割り当てパターンを０ヘッドから１ヘッドに変更するか、逆に同様であり、又はリーダー及びライターのヘッドデザインを１つのヘッドデザインから別のヘッドデザインに変更又は交換することができる。そのような変更を行うパスがＣＨＡＮコードのヘッダーにうまく記録されるか、又はエンコーダ及びデコーダに組み込まれて使用される限り、ビットサイズ及び値の異なるコード単位定義の異なる設計を使用することができる。さらに重要なのは、不均一器が異なる内容コードで構築できることである。例えば、段落０１１４及び図表５４で論じられた不均一器は、非圧縮クラスと圧縮クラスという２つのクラスに分けられる内容コードを使用し、そしてコード割り当ての最適化のために修正される。前記不均一器は、処理中の任意のデータ値に対するそれぞれのエンコーディングコードが対応するオリジナルデータ値のビットサイズと全く同じであるようにするため、ビット利得やビット損失も生じないように、それぞれの固有コードアドレスを同一のビットサイズを有する固有データ値にマッピングする。図表５５及び図表５６は、同じグループの内容コードの分類コードに対して割り当てる２つの異なる配置を示すが、０ヘッドデザインと１ヘッドデザインを使用することで、ビット０：ビット１割り当てパターンに関する比率が様々に変化する。しかしながら、段落０１１４に紹介された技術を使用して、類似の方式で異なる内容コードを有する他の不均一器を設計することができ、処理される処理ユニットの性質を定義するための終了条件の選択と、処理ユニットの固有値エントリにより識別される特徴や特性に従って行う分類、コード調整、コード交換及びコード再割り当てにより、図表５４から図表５６で示すことと類似の別の不均一器エンコーダを作成することができる。別の実例は、段落００９１及び図表２８においてスーパー処理ユニットについての議論から分かれる。図表２８の不均一器を使用して、データセットのビット０：ビット１の比率が図表５５又は図表５６に使用する不均一器と異なるように変更される。そのため、以上説明したように、１つの不均一器が１つの所定方向に向かってビット１とビット０の比率をこれ以上変更できない場合、そのような単方向変更は、適切に設計された別の不均一器を使用することによってさらに行うことができ、それにより類推する。従って、不均一器エンコーダの役割は、デジタルデータセットのビット０とビット１の割り当てパターンを不均一にすることである。ビット０よりも多いビット１（１：１の比率のビット０：ビット１の均一な割り当てと比較する時）の不均一器エンコーダは、ビット１不均一器と呼ばれ、ビット０をさらに増やす方向に偏ったデータ割り当てを行った後にビット０不均一器と呼ばれる不均一エンコーダと比較する（１：１の比率のビット０：ビット１の均一な割り当てと比較する時）。一方では、エンコーディング前と比較してビット０：ビット１の比率をより均一にする（即ち、ビット０：ビット１の比率を１：１方向に近づける）傾向があるこれらのエンコーダは、均一エンコーダ、又は単に均一器と呼ばれる。
【０１１９】
このように、段落０１１５から０１１７に説明されるように、圧縮するためにコード単位定義をリーダー及びライターとして使用し、ランダムであるか否かに関わらず、任意のデータセットは、いずれも本発明において解釈したように、限界までのサイクルで圧縮を受けるという終了情報理論における鳩ノ巣原理の神話の確実な証明として段落０１１８で言及された不均一器と共に使用する。
【０１２０】
デジタルデータセットを圧縮する過程でのコンプレッサは、明らかに均一器の役割を果たしているが、そうでなければ（もちろん本発明が開示するようにある限度まで）任意のデータセットを周期的に圧縮可能にすることができる。事実によると、本発明以前には、圧縮分野における方法は、ランダムであるか否かに関わらず、任意のデータ割り当てパターンのデータセットを周期的に圧縮可能であるという長い間望まれる目標を達成していないことを明らかにする。段落０１１８で議論された方式で、即ち段落０１２４で議論された周期的に又は他の方式で不均一器及び均一器を使用することによる本発明の開示により、以上の目標は明らかである。
【０１２１】
不均一器及び均一器を交互に使用してエンコーディング及びデコーディングすることで、得られたエンコーディングしたＣＨＡＮコードファイルのヘッダーは、基本的には以下の用途のインジケータを含む。
（ａ）チェックインジケータ：適切であれば存在してもよく、デコーダはそれを使用してデコーディングされるファイルが有効なＣＨＡＮコードファイルであるか否か、及びファイルが使用可能な有効ファイルであるか否かを識別し、そのため、エンコーダによって生成された対応するＣＨＡＮコードファイルに対して設計者によって設計されたインジケータを含む。
（ｂ）リサイクルビット又はインジケータ：エンコーダによってデコーダに使用されるビットを書き込むことで、デコーダに現在処理サイクルをデコーディングした後に停止しなければならないか否かを指示する。
（ｃ）（エンコーダによりエンコーディング中に使用されるか又は）現在のエンコーディングサイクルのデジタルデータ層をデコーディングすることに用いられるマッピングテーブル又はコード単位定義インジケータ：別の指示ビット（不均一器／均一器インジケータ）を用いて現在エンコーディングされたＣＨＡＮコード層が不均一器マッピングテーブル又は均一器マッピングテーブルを使用することによって完了させるか否かを区別する。
【０１２２】
ヘッダー以外に、得られるＣＨＡＮコードファイルは、さらに他の２つのユニットを含む。
（Ａ）ＣＨＡＮコード単位：エンコーディングしたＣＨＡＮコードを含み、選択されたコード単位定義のリーダーを用いて入力したデジタルデータを読み取り、デジタルデータをライターで書き込み又はエンコーダで読み取り、ライターは、ヘッダーに示されるコード単位定義又はマッピングテーブルのエンコーダを使用し、エンコードを書き込み又はコード単位定義又はマッピングテーブルを含むプログラミングロジックを実現してエンコーディングするものである。ここでエンコーディングしたＣＨＡＮコードは、適切な場合に分類コードと内容コードを含む。
（Ｂ）エンコーディングされていないコード単位：これは、デジタルデータ部分を入力する２進数ビットの部分を示し、読み取られた時にエンコーディングされず、通常には得られたＣＨＡＮコードファイルの最後に置かれる。これは、コードの一部に設計され、そのビット数が１つの処理ユニット又は１つのスーパー処理ユニットを構成するのに十分ではないため、使用されるエンコーディング技術を用いてそれをエンコーディングすることができない。
【０１２３】
以上説明したように、段落０１２１及び０１２２で識別されたそのような別々のデジタル情報は、別々のＣＨＡＮコードファイルに置かれて別々の個体として記憶される。対応する設計により、デコーダがそれらを正しく識別してデコーディングすることを可能にする。デコーディング時に、デコーダは、関連する得られるＣＨＡＮコードファイルのヘッダーに示されたコード単位定義やマッピングテーブルを使用することで、入力したエンコーディングされたＣＨＡＮコードファイルを読み取るか、又はコード単位定義やマッピングテーブルを含むデコーディングのためのプログラミングロジック（即ち、対応するコード単位定義やマッピングテーブル又は対応する内蔵されたプログラミングロジックを使用してエンコーディングされたコードを入力デジタルデータコードに変換すると共にそれを書き出すことに用いられる）を実現することに用いられる。得られるデコーディングコードは、前記エンコーディングサイクルの前の入力デジタルデータコードである。
【０１２４】
交互過程に均一器と共に使用されない場合に、不均一器を使用してデジタルデータを圧縮することができ、極端な場合には、全てのデジタル入力２進数ビットは、いずれも不均一器による不均一処理のサイクルによってビット０又はビット１に減少する。そのため、生成した（不均一処理ステップの経路の）ＣＨＡＮコードファイルは、不均一エンコーダにより取られる経路に関する情報のみであり、オリジナルデジタルデータ入力のビットサイズと、必要や適切な場合に形成される不均一処理回数の数と、各不均一サイクルのコード単位定義やマッピングテーブルとを含む。従って、不均一デコーダは、オリジナルデジタルデータを正確且つロスレスに復元するために、不均一デコーダによって採用された不均一経路のそのような情報に依存することができる。このような方式で、エンコーディングプロセスは、１つ以上の不均一エンコーディングのサイクルを含むことができるが、均一器エンコーディング又はコンプレッサエンコーディングは行われない。
不均一器を使用する別の変形は、最後の処理サイクルの前にそれを複数回使用することであり、そして最後のサイクルのエンコーディングは、コンプレッサ（又は圧縮のための均一器）によって行われる。このような方式で、エンコーディングプロセスは、コンプレッサエンコーディングの最後のサイクルの前に１つ以上の不均一エンコーディングサイクルを含む。この変形により得られるＣＨＡＮコードとＣＨＡＮコードファイルの構造は、段落０１２１から０１２３に記載されているものと同様である。均一器は、データセットのビット０：ビット１の比率をより均一にするコンプレッサであり、最後のサイクル又は最後のエンコーディング層のエンコーダとして使用される時に、このような均一器又はコンプレッサの使用の結果として、データ割り当てがそのスキューの他の方向に偏ったことは重要ではなく、予想されるように圧縮される限り、スキューはいかなる方法であってもよい。使用される用語は、即ち均一器又は均一器エンコーダが本発明のコンプレッサ又はコンプレッサエンコーダと同じであると見なされるべきである。
【０１２５】
上記で開示されたこれまでのＣＨＡＮフレームワーク及びＣＨＡＮコーディングは、少なくともコードアドレスの数を証明し、固有データ値の数と比較して、データ圧縮に課される要素ではない（以前情報理論における鳩ノ巣の原則の神話により誤解を招く）。重要なのは、入力データセットのデータ値の頻度分布である。上記段落で説明された技術で実施されるＣＨＡＮコーディング方法を使用し、ランダムであるか否かに関わらず、入力データセットをエンコーディングする時に、以下の効果を達成する。即ちエンコーディング中に、入力データの情報に入力データの特性を示す分類コードが追加され、データの分布が変更されるので、ＣＨＡＮコーディングの対応する技術を使用してエンコーディングされたコードをデコーディングする時に、入力データを正確且つロスレスに復元することができ、ある程度、対応するデジタルデータをサイクルして暗号化及び圧縮することができる。説明された制限は、使用及び実現の設計及びスキーマによって制限され、使用されるヘッダーと関連するインジケータを表すコードビットであり、１つの処理ユニット又は１つのスーパー処理ユニットのＣＨＡＮコードに置かれることに適し、そして、ある場合に、エンコーディングされていない２進数ビットのエンコーディングされていないコード単位（又はこのようなエンコーディングされていないいずれかの２進数ビットを残さない）の数は、１つの処理ユニット又は１つのスーパー処理ユニットのサイズより小さく、０より大きい。この段落では、そのように言及されているＣＨＡＮコードは、ヘッダーに含まれる他の追加情報及びインジケータ（及びエンコーダ及びデコーダに内蔵された情報及びプログラミングロジックの一部）のような、オリジナル入力データの内容又はデータ値部分に使用されるエンコーディングコードであり、ＣＨＡＮコードの中核であり、エンコーディングされていないコード単位もＣＨＡＮコードの周辺部としてＣＨＡＮコードに属し、エンコーディング及びデコーディング中にＣＨＡＮコードの中核と共に使用される結果、オリジナル入力データが完全にエンコーディングされ、エンコーディングされたコードが完全にデコーディングされてオリジナル入力データに正確且つロスレスに復元することができる。
【０１２６】
そのように使用される方法及び技術は、非ランダムデジタルデータを圧縮するために使用される。そのように設計されていれば、暗号化及び復号も同時に行うことができる。データの拡張及び伸縮を行わずに暗号化及び復号を行うには、最も簡単な方法は、任意のコード単位値に同じビットエンコーダを使用する技術を使用することである。例えば、段落００６２では、図表１４ｂ及び図表１４ｃにリストされているＭａｘ６  １６ビットエンコーダの設計がいくつか開示される。開示された４つの設計の各々は、１つの設計で読み取り且つもう１つの設計で書き込みさらにオリジナルコードを変換することにより、暗号化及び復号を行うように、同じビットサイズエンコーダとして働くことができる。その結果、暗号化コードはオリジナルコードと同じサイズを有する。他のＭａｘクラスに類似の設計を作成できるので、暗号化及び復号には無限のバリエーションがある。どのＭａｘクラス（及び特定のＭａｘクラスの下のどのビットグループ）がエンコーディングに使用されたのかを知らずに、エンコーディングされたコードを容易にデコーディングすることはできない。暗号化しない同じビットサイズのエンコーダも使用することができ、それは同じエンコードを単に使用し、前記エンコーダは、デジタルデータを読み取り、一方でそれを書き戻す。もちろん、他の技術と共に使用せずに、それを正確なデータレプリカとする以外は何も機能しない。これまでに開示された技術は、少なくとも暗号化／復号、及び処理されるデジタル情報のデータ割り当てが適切である場合に圧縮／解凍を行うためのものであると見なされる。また、異なる設計やスキーマでのＣＨＡＮコーディング技術を使用してランダムデータをどのように正確に圧縮及び復元するための方法を提案する。以下にさらに開示されるさらなる技術の発明により、以下の証拠にランダムデータを正確且つロスレスに圧縮及び復元できることが証明される。
【０１２７】
最後に、現在は、ランダムデータが圧縮可能で、デコーディングすることで正確且つロスレスに復元することを証明する明らかな証拠を提示する時期である。そのような技術の１つはデジタルデータブラックホールであり、前記技術によりコード単位値又は処理ユニット値をデジタルデータブラックホールとして機能するように識別する。デジタルデータブラックホールをどのように作成することを明らかにするために、Ｍａｘ３  ５ビット０ヘッドデザインコード単位エンコーダの実例を再使用し、処理ユニットは、Ｍａｘ３  ５ビット０ヘッドデザインコード単位エンコーダによって読み取られる３つのそのようなコード単位からなると定義される。従って、段落００７４の図表２０にあるものと同じような、２７個の固有処理ユニットコード値（ＰＵＣＶ）がある。図表２０は、これら２７個の固有ＰＵＣＶの各単一頻度分布を示し、最短のＰＵＣＶは０００であり、３ビットを有し、さらに４ビットのＰＵＣＶ、５ビットのＰＵＣＶ及び６ビットのＰＵＣＶもあることが見られる。そのため、これら２７個のＰＵＣＶもビットクラスに分けられる。また、これらの単一ＰＵＣＶの頻度は、ビットサイズが１ビット増加するにつれて約半分に減少することが分かる。３つの単一コード単位からなる処理ユニットのＭａｘ３  ５ビット０ヘッドデザインコード単位エンコーダを使用してランダムデータを読み取る時に、ランダムデータの頻度分布において一般的な規則性（又はランダム性法則）が観察される。さらに調査すると、ＣＨＡＮフレームワークの下で開発された同じスキーマ（即ち、３つの単一コード単位からなる処理ユニットを有するＭａｘ３  ５ビット０ヘッドデザインコード単位エンコーダ）を使用してランダムデータに関する別の頻度分布法則性又は規則性を発見できる。このランダムデータの頻度分布の別の特徴的な規則又は法則は、以下の図表５８に示されている。
図表５８ａ
３つの単一コード単位からなる処理ユニットを有するＭａｘ３  ５ビット０ヘッドデザインコード単位エンコーダを使用して読み取られた８００００ビットのランダムデータセットの処理ユニットの頻度分布
処理ユニットコード値
ＰＵＣＶ      頻度                              特殊コード
３ビットクラス
００      ２３１１    クラスにおいて１つだけ
４ビットクラス
１１００    １１５１    クラスにおいて最高
００１０    １１２１
０１００    １１１９
００１１    １１０３
１０００    １０８６
０１１０    １０３６    クラスにおいて最低
５ビットクラス
１１１００  ５７９      クラスにおいて最高
０１１１１  ５７４
１１０１０  ５６９
１００１１  ５６２
１０１１０  ５６１
１０１００  ５５６
０１０１１  ５５５
１００１０  ５５１
０１０１０  ５３９
１１１１０  ５２４
１１０１１  ５２４
０１１１０  ５２３      クラスにおいて最低
６ビットクラス
１１１１１１  ３１５    クラスにおいて最高
１０１０１０  ２９３
１０１０１１  ２８９
１１１０１１  ２８８
１０１１１０  ２８８
１０１１１１  ２６４
１１１１１０  ２６２
１１１０１０  ２５４    クラスにおいて最低
図表５８ｂ
３つの単一コード単位からなる処理ユニットを有するＭａｘ３  ５ビット０ヘッドデザインコード単位エンコーダを使用して読み取られた８００００ビットのランダムデータセットのスーパー処理ユニットの頻度分布−スーパー処理ユニットは２つの連続な処理ユニットからなる（選択されたＳＰＵＣＶを示す）
【表４５Ａ】
2019528027.tif 000062
【表４５Ｂ】
2019528027.tif 000063
図表５８ａ及び図表５８ｂの頻度分布統計値の実例は、以下の図表５８ｃ及び図表５９ｄにリストされている自動３プログラムにより生成される。
図表５８ｃ
図表５８ａ及び図表５８ｂに示される頻度統計値を生成する自動プログラム
；；；；；；
＃ｉｎｃｌｕｄｅ  "ｈｅｌｐｅｒ２ｂ．ａｕ３"
Ｆｕｎｃ  ｗｒｉｔｅｌｎ（＄ｖＶａｒ１  ＝  ０，  ＄ｖＶａｒ２  ＝  ０，  ＄ｖＶａｒ３  ＝  ０，  ＄ｖＶａｒ４  ＝  ０，  ＄ｖＶａｒ５  ＝  ０，  ＄ｖＶａｒ６  ＝  ０，
＄ｖＶａｒ７  ＝  ０，  ＄ｖＶａｒ８  ＝  ０，  ＄ｖＶａｒ９  ＝  ０，  ＿
＄ｖＶａｒ１０  ＝  ０，  ＄ｖＶａｒ１１  ＝  ０，  ＄ｖＶａｒ１２  ＝  ０，  ＄ｖＶａｒ１３  ＝  ０，  ＄ｖＶａｒ１４  ＝  ０，  ＄ｖＶａｒ１５  ＝  ０，
＄ｖＶａｒ１６  ＝  ０，  ＄ｖＶａｒ１７  ＝  ０，  ＄ｖＶａｒ１８  ＝  ０，  ＄ｖＶａｒ１９  ＝  ０）
＃ｆｏｒｃｅｒｅｆ  ＄ｖＶａｒ１，  ＄ｖＶａｒ２，  ＄ｖＶａｒ３，  ＄ｖＶａｒ４，  ＄ｖＶａｒ５，  ＄ｖＶａｒ６，  ＄ｖＶａｒ７，  ＄ｖＶａｒ８，  ＄ｖＶａｒ９，＄ｖＶａｒ１０
＃ｆｏｒｃｅｒｅｆ  ＄ｖＶａｒ１１，  ＄ｖＶａｒ１２，  ＄ｖＶａｒ１３，  ＄ｖＶａｒ１４，  ＄ｖＶａｒ１５，  ＄ｖＶａｒ１６，  ＄ｖＶａｒ１７，  ＄ｖＶａｒ１８，＄ｖＶａｒ１９
Ｌｏｃａｌ  ＄ｓＶａｌ  ＝  ""
Ｆｏｒ  ＄ｉ  ＝  １  Ｔｏ  ＠ＮｕｍＰａｒａｍｓ
＄ｓＶａｌ  ＆＝  Ｅｖａｌ（"ｖＶａｒ"  ＆  ＄ｉ）  ＆  "  "
Ｎｅｘｔ
ＣｏｎｓｏｌｅＷｒｉｔｅ（＄ｓＶａｌ  ＆  ＠ＣＲＬＦ）
ＥｎｄＦｕｎｃ
Ｆｕｎｃ  ＡＡＢＢｉｔｓ１Ｂａｓｅ（＄ｒａｎｇｅ，  ＄ｖａｌｕｅ）
ｉｆ  ＄ｖａｌｕｅ  ＜  １  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（'Ｉｎｖａｌｉｄ  ｉｎｐｕｔ  ０'）
ｉｆ  ＄ｖａｌｕｅ  ＞  ＄ｒａｎｇｅ  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（'Ｉｎｖａｌｉｄ  ｒａｎｇｅ'）
Ｌｏｃａｌ  ＄ｍａｘ  ＝  １
ｌｏｃａｌ  ＄ｂｉｔｓ  ＝  ０
ｗｈｉｌｅ  ＄ｍａｘ  ＜＝  ＄ｒａｎｇｅ
＄ｍａｘ  ＝  ＄ｍａｘ  ＊  ２
＄ｂｉｔｓ  ＝  ＄ｂｉｔｓ  ＋  １
Ｗｅｎｄ
＄ｍａｘ  ＝  ＄ｍａｘ  ／  ２
＄ｂｉｔｓ  ＝  ＄ｂｉｔｓ  −  １
ｌｏｃａｌ  ＄ｓｕｂ  ＝  ＄ｒａｎｇｅ  −  ＄ｍａｘ
Ｉｆ  ＄ｖａｌｕｅ  ＜＝  ＄ｍａｘ  −  ＄ｓｕｂ  Ｔｈｅｎ
Ｒｅｔｕｒｎ  ＄ｂｉｔｓ
Ｅｌｓｅ
Ｒｅｔｕｒｎ  ＄ｂｉｔｓ  ＋  １
ＥｎｄＩｆ
ＥｎｄＦｕｎｃ
Ｆｕｎｃ  ＡＡＢＢｉｔｓ０Ｂａｓｅ（＄ｒａｎｇｅ，  ＄ｖａｌｕｅ）
ｒｅｔｕｒｎ  ＡＡＢＢｉｔｓ１Ｂａｓｅ（＄ｒａｎｇｅ  ＋  １，  ＄ｖａｌｕｅ  ＋  １）
ＥｎｄＦｕｎｃ
ｌｏｃａｌ  ＄ｄａｔａ［１］
ｉｆ  ｎｏｔ  ＦｉｌｅＥｘｉｓｔｓ（'ｆｆ'）  ｔｈｅｎ  ＧｅｎｅｒａｔｅＲａｎｄｏｍＦｉｌｅ（'ｆｆ'，  １００００）
ＲｅａｄＤａｔａＦｉｌｅ（'ｆｆ'，  ＄ｄａｔａ）
ｌｏｃａｌ  ＄ｍａｐ［２７］
＄ｍａｐ［０］  ＝  '０００'
＄ｍａｐ［１］  ＝  '１１１００'
＄ｍａｐ［２］  ＝  '０１００'
＄ｍａｐ［３］  ＝  '００１１'
＄ｍａｐ［４］  ＝  '１０００'
＄ｍａｐ［５］  ＝  '００１０'
＄ｍａｐ［６］  ＝  '０１１０'
＄ｍａｐ［７］  ＝  '１１００'
＄ｍａｐ［８］  ＝  '０１０１１'
＄ｍａｐ［９］  ＝  '０１０１０'
＄ｍａｐ［１０］  ＝  '１１０１０'
＄ｍａｐ［１１］  ＝  '０１１１１'
＄ｍａｐ［１２］  ＝  '１０１１０'
＄ｍａｐ［１３］  ＝  '１００１０'
＄ｍａｐ［１４］  ＝  '０１１１０'
＄ｍａｐ［１５］  ＝  '１００１１'
＄ｍａｐ［１６］  ＝  '１０１００'
＄ｍａｐ［１７］  ＝  '１１０１１'
＄ｍａｐ［１８］  ＝  '１０１１１０'
＄ｍａｐ［１９］  ＝  '１０１０１０'
＄ｍａｐ［２０］  ＝  '１０１１１１'
＄ｍａｐ［２１］  ＝  '１０１０１１'
＄ｍａｐ［２２］  ＝  '１１１１０'
＄ｍａｐ［２３］  ＝  '１１１０１０'
＄ｍａｐ［２４］  ＝  '１１１１１０'
＄ｍａｐ［２５］  ＝  '１１１０１１'
＄ｍａｐ［２６］  ＝  '１１１１１１'
ｌｏｃａｌ  ＄ｏｂｊ［１］
ＭａｐＩｎｉｔ（＄ｏｂｊ，  ＄ｍａｐ）
ｌｏｃａｌ  ＄ｉｎｐｕｔ［１］
ＩｎｐｕｔＩｎｉｔ（＄ｉｎｐｕｔ，  ＄ｄａｔａ）
ｌｏｃａｌ  ＄ｃｏｕｎｔ［２７］［２］
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ２６
＄ｃｏｕｎｔ［＄ｉ］［０］  ＝  ０
＄ｃｏｕｎｔ［＄ｉ］［１］  ＝  ＄ｉ
ｎｅｘｔ
ｌｏｃａｌ  ＄ｎｕｍｓ［８００００００］
ｌｏｃａｌ  ＄ｎｕｍｃ  ＝  ０
ｗｈｉｌｅ  ｎｏｔ  ＩｎｐｕｔＥｎｄｅｄ（＄ｉｎｐｕｔ）
＄ｖ  ＝  ＭａｐＲｅａｄ（＄ｉｎｐｕｔ，  ＄ｏｂｊ）
＄ｎｕｍｓ［＄ｎｕｍｃ］  ＝  ＄ｖ
＄ｎｕｍｃ  ＝  ＄ｎｕｍｃ  ＋  １
＄ｃｏｕｎｔ［＄ｖ］［０］  ＝  ＄ｃｏｕｎｔ［＄ｖ］［０］  ＋  １
ｗｅｎｄ
＿ＡｒｒａｙＳｏｒｔ（＄ｃｏｕｎｔ，  １）
＄ｔ  ＝  ０
＄ｂｉｔｓ  ＝  ０
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ２６
＄ａａｂ  ＝  ＳｔｒｉｎｇＬｅｎ（＄ｍａｐ［＄ｃｏｕｎｔ［＄ｉ］［１］］）  −  ＡＡＢＢｉｔｓ０Ｂａｓｅ（２６，  ＄ｉ）
＄ｂｉｔｓ  ＝  ＄ｂｉｔｓ  ＋  ＄ｃｏｕｎｔ［＄ｉ］［０］  ＊  ＳｔｒｉｎｇＬｅｎ（＄ｍａｐ［＄ｃｏｕｎｔ［＄ｉ］［１］］）
＄ｔ  ＝  ＄ｔ  ＋  ＄ｃｏｕｎｔ［＄ｉ］［０］  ＊  ＄ａａｂ
ｗｒｉｔｅｌｎ（＄ｍａｐ［＄ｃｏｕｎｔ［＄ｉ］［１］］，  ＄ｃｏｕｎｔ［＄ｉ］［０］，  '（'，  ＄ａａｂ，  '）'）
ｎｅｘｔ
ｗｒｉｔｅｌｎ（'ｔｏｔａｌ  ｂｉｔｓ：'，  ＄ｂｉｔｓ）
ｗｒｉｔｅｌｎ（'ａａｂ  ｄｅｌｔａ：'，  ＄ｔ）
ｗｒｉｔｅｌｎ（）
ｗｒｉｔｅｌｎ（'２７ｘ２７'）
ｌｏｃａｌ  ＄ｃｏｕｎｔ２［２７  ＊  ２７］［２］
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ２７  ＊  ２７  −  １
＄ｃｏｕｎｔ２［＄ｉ］［０］  ＝  ０
＄ｃｏｕｎｔ２［＄ｉ］［１］  ＝  ＄ｉ
ｎｅｘｔ
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ２６
ｆｏｒ  ＄ｊ  ＝  ０  ｔｏ  ２６
＄ｐ  ＝  ０
ｗｈｉｌｅ  ＄ｐ  ＜  ＄ｎｕｍｃ  −  １
ｉｆ  ＄ｎｕｍｓ［＄ｐ］  ＝  ＄ｉ  ａｎｄ  ＄ｎｕｍｓ［＄ｐ  ＋  １］  ＝  ＄ｊ  ｔｈｅｎ
＄ｃｏｕｎｔ２［＄ｉ  ＊  ２７  ＋  ＄ｊ］［０］  ＝  ＄ｃｏｕｎｔ２［＄ｉ  ＊  ２７  ＋  ＄ｊ］［０］  ＋  １
＄ｐ  ＝  ＄ｐ  ＋  １
ｅｎｄｉｆ
＄ｐ  ＝  ＄ｐ  ＋  １
ｗｅｎｄ
ｎｅｘｔ
ｎｅｘｔ
＿ＡｒｒａｙＳｏｒｔ（＄ｃｏｕｎｔ２，  １）
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ２７  ＊  ２７  - １
＄ｂ  ＝  Ｍｏｄ（＄ｃｏｕｎｔ２［＄ｉ］［１］，  ２７）
＄ａ  ＝  （＄ｃｏｕｎｔ２［＄ｉ］［１］  −  ＄ｂ）  ／  ２７
ｗｒｉｔｅｌｎ（＄ｍａｐ［＄ａ］  ＆  '−'  ＆  ＄ｍａｐ［＄ｂ］，  ＄ｃｏｕｎｔ２［＄ｉ］［０］）
ｎｅｘｔ
；；；；；；
Ｄｉａｇｒａｍ  ５８ｄ
Ａｕｔｏｉｔ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｌｉｂｒａｒｙ  ｕｓｅｄ  ｂｙ  Ａｕｔｏｉｔ  Ｐｒｏｇｒａｍ  ｌｉｓｔｅｄ  ｉｎ  Ｄｉａｇｒａｍ  ５８ｃ
；；；；；；
＃ｉｎｃｌｕｄｅ  ＜Ａｒｒａｙ．ａｕ３＞
＃ｉｎｃｌｕｄｅ  ＜ＦｉｌｅＣｏｎｓｔａｎｔｓ．ａｕ３＞
ｇｌｏｂａｌ  ｃｏｎｓｔ  ＄Ｍａｓｋ［８］  ＝  ［１２８，  ６４，  ３２，  １６，  ８，  ４，  ２，  １］
ｇｌｏｂａｌ  ｃｏｎｓｔ  ＄ＢｉｔＬｅｎ  ＝  ８
ｇｌｏｂａｌ  ｃｏｎｓｔ  ＄ＭａｘＮｕｍ  ＝  ２５６
ｆｕｎｃ  ＰｒｉｎｔＥｒｒｏｒ（＄ｍｓｇ）
ＣｏｎｓｏｌｅＷｒｉｔｅ（＄ｍｓｇ  ＆  ＠ＣＲＬＦ）
ｅｘｉｔ
ｅｎｄｆｕｎｃ
；  Ｉｎｐｕｔ  ｆｕｎｃｔｉｏｎ
ｆｕｎｃ  ＩｎｐｕｔＩｎｉｔ（ｂｙｒｅｆ  ＄ｏｂｊ，  ｂｙｒｅｆ  ＄ｄａｔａ）
ｒｅｄｉｍ  ＄ｏｂｊ［５］
＄ｏｂｊ［０］  ＝  ＄ｄａｔａ
＄ｏｂｊ［１］  ＝  ＵＢｏｕｎｄ（＄ｄａｔａ）  ；  ｓｉｚｅ
＄ｏｂｊ［２］  ＝  ０  ；  ｂｙｔｅ  ｐｏｓ
＄ｏｂｊ［３］  ＝  ０  ；  ｂｉｔ  ｐｏｓ
＄ｏｂｊ［４］  ＝  ｆａｌｓｅ  ；  ｉｓ  ｅｎｄｅｄ
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＩｎｐｕｔＥｎｄｅｄ（ｂｙｒｅｆ  ＄ｏｂｊ）
ｒｅｔｕｒｎ  ＄ｏｂｊ［４］
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＩｎｐｕｔＲｅａｄＢｉｔ（ｂｙｒｅｆ  ＄ｏｂｊ）
ｉｆ  ＄ｏｂｊ［４］  ｔｈｅｎ  ｒｅｔｕｒｎ  ０
ｌｏｃａｌ  ＄ｒ
ｉｆ  ＢｉｔＡＮＤ（（＄ｏｂｊ［０］）［＄ｏｂｊ［２］］，  ＄Ｍａｓｋ［＄ｏｂｊ［３］］）  ＜＞  ０  ｔｈｅｎ
＄ｒ  ＝  １
ｅｌｓｅ
＄ｒ  ＝  ０
ｅｎｄｉｆ
＄ｏｂｊ［３］  ＝  ＄ｏｂｊ［３］  ＋  １
ｉｆ  ＄ｏｂｊ［３］  ＞＝  ＄ＢｉｔＬｅｎ  ｔｈｅｎ
＄ｏｂｊ［３］  ＝  ０
＄ｏｂｊ［２］  ＝  ＄ｏｂｊ［２］  ＋  １
ｉｆ  ＄ｏｂｊ［２］  ＞＝  ＄ｏｂｊ［１］  ｔｈｅｎ  ＄ｏｂｊ［４］  ＝  ｔｒｕｅ
ｅｎｄｉｆ
ｒｅｔｕｒｎ  ＄ｒ
ｅｎｄｆｕｎｃ
；  Ｉｎｔｅｒｎａｌ  ａｒｒａｙ  ｆｕｎｃｔｉｏｎ
ｆｕｎｃ  ＡｒｒａｙＣｒｅａｔｅ（＄ｓｉｚｅ）
ｌｏｃａｌ  ＄ａｒｒ［＄ｓｉｚｅ］
＄ａｒｒ［０］  ＝  ０
ｒｅｔｕｒｎ  ＄ａｒｒ
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＡｒｒａｙＳｅｔＤａｔａ（ｂｙｒｅｆ  ＄ａｒｒ，  ＄ｉｎｄｅｘ，  ＄ｖ）
＄ａｒｒ［＄ｉｎｄｅｘ］  ＝  ＄ｖ
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＡｒｒａｙＲｅｄｉｍ（ｂｙｒｅｆ  ＄ａｒｒ，  ＄ｓｉｚｅ）
ｒｅｄｉｍ  ＄ａｒｒ［＄ｓｉｚｅ］
ｅｎｄｆｕｎｃ
；  Ｏｕｔｐｕｔ  ｆｕｎｃｔｉｏｎ
ｆｕｎｃ  ＯｕｔｐｕｔＩｎｉｔ（ｂｙｒｅｆ  ＄ｏｂｊ）
ｒｅｄｉｍ  ＄ｏｂｊ［４］
＄ｏｂｊ［０］  ＝  ＡｒｒａｙＣｒｅａｔｅ（１０００）
＄ｏｂｊ［１］  ＝  ＵＢｏｕｎｄ（＄ｏｂｊ［０］）  ；  ｓｉｚｅ
＄ｏｂｊ［２］  ＝  ０  ；  ｂｙｔｅ  ｐｏｓ
＄ｏｂｊ［３］  ＝  ０  ；  ｂｉｔ  ｐｏｓ
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＯｕｔｐｕｔＷｒｉｔｅＢｉｔ（ｂｙｒｅｆ  ＄ｏｂｊ，  ＄ｒ）
ｉｆ  ＄ｒ  ＜＞  ０  ｔｈｅｎ  ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［０］，  ＄ｏｂｊ［２］，  ＢｉｔＯｒ（（＄ｏｂｊ［０］）［＄ｏｂｊ［２］］，
＄Ｍａｓｋ［＄ｏｂｊ［３］］））
＄ｏｂｊ［３］  ＝  ＄ｏｂｊ［３］  ＋  １
ｉｆ  ＄ｏｂｊ［３］  ＞＝  ＄ＢｉｔＬｅｎ  ｔｈｅｎ
＄ｏｂｊ［３］  ＝  ０
＄ｏｂｊ［２］  ＝  ＄ｏｂｊ［２］  ＋  １
ｉｆ  ＄ｏｂｊ［２］  ＞＝  ＄ｏｂｊ［１］  ｔｈｅｎ
＄ｏｂｊ［１］  ＝  ＄ｏｂｊ［１］  ＋  １０００
ＡｒｒａｙＲｅｄｉｍ（＄ｏｂｊ［０］，  ＄ｏｂｊ［１］）
ｅｎｄｉｆ
ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［０］，  ＄ｏｂｊ［２］，  ０）
ｅｎｄｉｆ
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＯｕｔｐｕｔＧｅｔＤａｔａ（ｂｙｒｅｆ  ＄ｏｂｊ）
＄ｏｂｊ［１］  ＝  ＄ｏｂｊ［２］
ｉｆ  ＄ｏｂｊ［３］  ＜＞  ０  ｔｈｅｎ  ＄ｏｂｊ［１］  ＝  ＄ｏｂｊ［１］  ＋  １
ｉｆ  ＄ｏｂｊ［１］  ＝  ０  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（'Ｎｏ  ｏｕｔｐｕｔ  ｄａｔａ'）
ＡｒｒａｙＲｅｄｉｍ（＄ｏｂｊ［０］，  ＄ｏｂｊ［１］）
ｒｅｔｕｒｎ  ＄ｏｂｊ［０］
ｅｎｄｆｕｎｃ
；  Ｒａｎｄｏｍ  ｄａｔａ  ｆｕｎｃｔｉｏｎ
ｆｕｎｃ  ＧｅｎｅｒａｔｅＲａｎｄｏｍＦｉｌｅ（＄ｎａｍｅ，  ＄ｓｉｚｅ）
ｌｏｃａｌ  ＄ｆｈ  ＝  ＦｉｌｅＯｐｅｎ（＄ｎａｍｅ，  ＢｉｔＯｒ（＄ＦＯ＿ＯＶＥＲＷＲＩＴＥ，  ＄ＦＯ＿ＢＩＮＡＲＹ））
ｉｆ  ＄ｆｈ  ＝  −１  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（'Ｆｉｌｅ  ｏｐｅｎ  ｆａｉｌｓ'）
ｌｏｃａｌ  ＄ｉ
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＄ｓｉｚｅ  −  １
ＦｉｌｅＷｒｉｔｅ（＄ｆｈ，  ＢｉｎａｒｙＭｉｄ（Ｂｉｎａｒｙ（Ｒａｎｄｏｍ（０，  ＄ＭａｘＮｕｍ  −  １，  １）），  １，  １））
ｎｅｘｔ
ＦｉｌｅＣｌｏｓｅ（＄ｆｈ）
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＧｅｎｅｒａｔｅＲａｎｄｏｍＤａｔａ（ｂｙｒｅｆ  ＄ａｒｒ，  ＄ｓｉｚｅ）
ｒｅｄｉｍ  ＄ａｒｒ［＄ｓｉｚｅ］
ｌｏｃａｌ  ＄ｉ
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＵＢｏｕｎｄ（＄ａｒｒ）  −  １
＄ａｒｒ［＄ｉ］  ＝  Ｒａｎｄｏｍ（０，  ＄ＭａｘＮｕｍ  −  １，  １）
ｎｅｘｔ
ｅｎｄｆｕｎｃ
；  Ｆｉｌｅ  ｒｅａｄｅｒ／ｗｒｉｔｅｒ
ｆｕｎｃ  ＲｅａｄＤａｔａＦｉｌｅ（＄ｎａｍｅ，  ｂｙｒｅｆ  ＄ａｒｒａｙ）
ｌｏｃａｌ  ＄ｆｈ  ＝  ＦｉｌｅＯｐｅｎ（＄ｎａｍｅ，  ＢｉｔＯｒ（＄ＦＯ＿ＲＥＡＤ，  ＄ＦＯ＿ＢＩＮＡＲＹ））
ｉｆ  ＄ｆｈ  ＝  −１  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（'Ｆｉｌｅ  ｏｐｅｎ  ｆａｉｌｓ'）
ｌｏｃａｌ  ＄ｄａｔａ  ＝  ＦｉｌｅＲｅａｄ（＄ｆｈ）
ｌｏｃａｌ  ＄ｌｅｎ  ＝  ＢｉｎａｒｙＬｅｎ（＄ｄａｔａ）
ｒｅｄｉｍ  ＄ａｒｒａｙ［＄ｌｅｎ］
ｌｏｃａｌ  ＄ｉ
ｆｏｒ  ＄ｉ  ＝  １  ｔｏ  ＄ｌｅｎ
＄ａｒｒａｙ［＄ｉ  −  １］  ＝  Ｉｎｔ（ＢｉｎａｒｙＭｉｄ（＄ｄａｔａ，  ＄ｉ，  １））
ｎｅｘｔ
ＦｉｌｅＣｌｏｓｅ（＄ｆｈ）
Eｎｄｆｕｎｃ
；  Ｆｉｌｅ  Ｗｒｉｔｅｒ
ｆｕｎｃ  ＷｒｉｔｅＤａｔａＦｉｌｅ（＄ｎａｍｅ，  ｂｙｒｅｆ  ＄ａｒｒａｙ）
ｌｏｃａｌ  ＄ｆｈ  ＝  ＦｉｌｅＯｐｅｎ（＄ｎａｍｅ，  ＢｉｔＯｒ（＄ＦＯ＿ＯＶＥＲＷＲＩＴＥ，  ＄ＦＯ＿ＢＩＮＡＲＹ））
ｉｆ  ＄ｆｈ  ＝  −１  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（'Ｆｉｌｅ  ｏｐｅｎ  ｆａｉｌｓ'）
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＵＢｏｕｎｄ（＄ａｒｒａｙ）  −  １
ＦｉｌｅＷｒｉｔｅ（＄ｆｈ，  ＢｉｎａｒｙＭｉｄ（Ｂｉｎａｒｙ（＄ａｒｒａｙ［＄ｉ］），  １，  １））
ｎｅｘｔ
ＦｉｌｅＣｌｏｓｅ（＄ｆｈ）
ｅｎｄｆｕｎｃ
；  Ａｒｒａｙ  ｈｅｌｐｅｒｓ
ｆｕｎｃ  ＤｕｍｐＡｒｒａｙ（ｂｙｒｅｆ  ＄ａｒｒ）
ｌｏｃａｌ  ＄ｉ
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＵＢｏｕｎｄ（＄ａｒｒ）  −  １
ＣｏｎｓｏｌｅＷｒｉｔｅ（＄ａｒｒ［＄ｉ］  ＆  '  '）
ｎｅｘｔ
ＣｏｎｓｏｌｅＷｒｉｔｅ（＠ＣＲＬＦ）
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＺｅｒｏＡｒｒａｙ（ｂｙｒｅｆ  ＄ａｒｒ）
ｌｏｃａｌ  ＄ｉ
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＵＢｏｕｎｄ（＄ａｒｒ）  −  １
＄ａｒｒ［＄ｉ］  ＝  ０
ｎｅｘｔ
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＤｕｍｐＢｉｎａｒｙＡｒｒａｙ（ｂｙｒｅｆ  ＄ｄａｔａ）
ｌｏｃａｌ  ＄ｉｎｐｕｔ［１］
ＩｎｐｕｔＩｎｉｔ（＄ｉｎｐｕｔ，  ＄ｄａｔａ）
ｌｏｃａｌ  ＄ｐｏｓ  ＝  ０
ｗｈｉｌｅ  ｎｏｔ  ＩｎｐｕｔＥｎｄｅｄ（＄ｉｎｐｕｔ）
ＣｏｎｓｏｌｅＷｒｉｔｅ（ＩｎｐｕｔＲｅａｄＢｉｔ（＄ｉｎｐｕｔ））
＄ｐｏｓ  ＝  ＄ｐｏｓ  ＋  １
ｉｆ  ＄ｐｏｓ  ＝  ８  ｔｈｅｎ
ＣｏｎｓｏｌｅＷｒｉｔｅ（'  '）
＄ｐｏｓ  ＝  ０
ｅｎｄｉｆ
ｗｅｎｄ
ＣｏｎｓｏｌｅＷｒｉｔｅ（＠ＣＲＬＦ）
ｅｎｄｆｕｎｃ
；  Ｍａｐ  ｆｕｎｃｔｉｏｎ
ｆｕｎｃ  ＭａｐＩｎｉｔ（ｂｙｒｅｆ  ＄ｏｂｊ，  ｂｙｒｅｆ  ＄ｍａｐ，  ＄ｔｉｔｌｅ  ＝  ''）
ｒｅｄｉｍ  ＄ｏｂｊ［５］
＄ｏｂｊ［０］  ＝  ＡｒｒａｙＣｒｅａｔｅ（１０）  ；  ０  ｂｒａｎｃｈ
＄ｏｂｊ［１］  ＝  ＡｒｒａｙＣｒｅａｔｅ（１０）  ；  １  ｂｒａｎｃｈ
＄ｏｂｊ［２］  ＝  ０  ；  ｉｎｄｅｘ
＄ｏｂｊ［３］  ＝  ＄ｍａｐ
＄ｏｂｊ［４］  ＝  ＡｒｒａｙＣｒｅａｔｅ（ＵＢｏｕｎｄ（＄ｍａｐ））  ；  ｆｒｅｑ
ＺｅｒｏＡｒｒａｙ（＄ｏｂｊ［４］）
ｌｏｃａｌ  ＄ｉ，  ＄ｊ，  ＄ｃ，  ＄ｐｏｓ，  ＄ｂｒａｎｃｈ，  ＄ｖ，  ＄ｌｅｎ
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＵＢｏｕｎｄ（＄ｍａｐ）  −  １
＄ｐｏｓ  ＝  ０
＄ｌｅｎ  ＝  ＳｔｒｉｎｇＬｅｎ（＄ｍａｐ［＄ｉ］）
ｆｏｒ  ＄ｊ  ＝  １  ｔｏ  ＄ｌｅｎ
＄ｃ  ＝  ＳｔｒｉｎｇＭｉｄ（＄ｍａｐ［＄ｉ］，  ＄ｊ，  １）
ｉｆ  ＄ｃ  ＝  '０'  ｔｈｅｎ
＄ｂｒａｎｃｈ  ＝  ０
ｅｌｓｅｉｆ  ＄ｃ  ＝  '１'  ｔｈｅｎ
＄ｂｒａｎｃｈ  ＝  １
ｅｌｓｅ
ＰｒｉｎｔＥｒｒｏｒ（'ｉｎｖａｌｉｄ  ｃｈａｒ  ｉｎ  ｍａｐ'）
ｅｎｄｉｆ
＄ｖ  ＝  （＄ｏｂｊ［＄ｂｒａｎｃｈ］）［＄ｐｏｓ］
ｉｆ  ＄ｖ  ＜  ０  ｔｈｅｎ
ＰｒｉｎｔＥｒｒｏｒ（＄ｔｉｔｌｅ  ＆  'ｄｕｐｌｉｃａｔｅ  ｐｒｅｆｉｘ  ａｔ  ｌｉｎｅ  '  ＆  （＄ｉ  ＋  １）  ＆  '：  '  ＆  ＄ｍａｐ［＄ｉ］）
ｅｌｓｅｉｆ  ＄ｖ  ＞  ０  ｔｈｅｎ
＄ｐｏｓ  ＝  ＄ｖ
ｅｌｓｅｉｆ  ＄ｊ  ＜  ＄ｌｅｎ  ｔｈｅｎ
＄ｏｂｊ［２］  ＝  ＄ｏｂｊ［２］  ＋  １
ｉｆ  ＄ｏｂｊ［２］  ＞＝  ＵＢｏｕｎｄ（＄ｏｂｊ［０］）  ｔｈｅｎ
ＡｒｒａｙＲｅｄｉｍ（＄ｏｂｊ［０］，  ＄ｏｂｊ［２］  ＋  １０）
ＡｒｒａｙＲｅｄｉｍ（＄ｏｂｊ［１］，  ＄ｏｂｊ［２］  ＋  １０）
ｅｎｄｉｆ
ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［０］，  ＄ｏｂｊ［２］，  ０）
ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［１］，  ＄ｏｂｊ［２］，  ０）
ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［＄ｂｒａｎｃｈ］，  ＄ｐｏｓ，  ＄ｏｂｊ［２］）
＄ｐｏｓ  ＝  ＄ｏｂｊ［２］
ｅｎｄｉｆ
ｎｅｘｔ
ｉｆ  ＄ｖ  ＜＞  ０  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（＄ｔｉｔｌｅ  ＆  'ｄｕｐｌｉｃａｔｅ  ｐｒｅｆｉｘ  ａｔ  ｌｉｎｅ  '  ＆  （＄ｉ  ＋  １）  ＆  '：  '  ＆
＄ｍａｐ［＄ｉ］）
ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［＄ｂｒａｎｃｈ］，  ＄ｐｏｓ，  −１  −  ＄ｉ）
ｎｅｘｔ
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＄ｏｂｊ［２］
ｉｆ  （＄ｏｂｊ［０］）［＄ｉ］  ＝  ０  ｏｒ  （＄ｏｂｊ［１］）［＄ｉ］  ＝  ０  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（＄ｔｉｔｌｅ  ＆  'ｉｎｃｏｍｐｌｅｔｅ'）
ｎｅｘｔ
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＭａｐＲｅａｄ（ｂｙｒｅｆ  ＄ｉｎｐｕｔ，  ｂｙｒｅｆ  ＄ｏｂｊ）
ｌｏｃａｌ  ＄ｂｉｔ，  ＄ｐｏｓ
＄ｐｏｓ  ＝  ０
ｗｈｉｌｅ  ＄ｐｏｓ  ＞＝  ０
＄ｂｉｔ  ＝  ＩｎｐｕｔＲｅａｄＢｉｔ（＄ｉｎｐｕｔ）
＄ｐｏｓ  ＝  （＄ｏｂｊ［＄ｂｉｔ］）［＄ｐｏｓ］
ｗｅｎｄ
ｒｅｔｕｒｎ  −＄ｐｏｓ  −  １
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＭａｐＣｌｅａｒＦｒｅｑ（ｂｙｒｅｆ  ＄ｏｂｊ）
ＺｅｒｏＡｒｒａｙ（＄ｏｂｊ［４］）
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＭａｐＰｒｉｎｔＦｒｅｑ（ｂｙｒｅｆ  ＄ｏｂｊ，  ｂｙｒｅｆ  ＄ｄａｔａ，  ＄ｄｅｔａｉｌ  ＝  ｆａｌｓｅ）
ｌｏｃａｌ  ＄ｉｎｐｕｔ［１］
ｌｏｃａｌ  ＄ｉｎｄｅｘ，  ＄ｉ，  ＄ｊ
ＩｎｐｕｔＩｎｉｔ（＄ｉｎｐｕｔ，  ＄ｄａｔａ）
ＭａｐＣｌｅａｒＦｒｅｑ（＄ｏｂｊ）
ｗｈｉｌｅ  ｎｏｔ  ＩｎｐｕｔＥｎｄｅｄ（＄ｉｎｐｕｔ）
＄ｉｎｄｅｘ  ＝  ＭａｐＲｅａｄ（＄ｉｎｐｕｔ，  ＄ｏｂｊ）
ｉｆ  ＄ｄｅｔａｉｌ  ｔｈｅｎ  ＣｏｎｓｏｌｅＷｒｉｔｅ（（＄ｏｂｊ［３］）［＄ｉｎｄｅｘ］  ＆  '  '）
ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［４］，  ＄ｉｎｄｅｘ，  （＄ｏｂｊ［４］）［＄ｉｎｄｅｘ］  ＋  １）
ｗｅｎｄ
ｉｆ  ＄ｄｅｔａｉｌ  ｔｈｅｎ  ＣｏｎｓｏｌｅＷｒｉｔｅ（＠ＣＲＬＦ）
ｌｏｃａｌ  ＄ｃ０  ＝  ０
ｌｏｃａｌ  ＄ｃ１  ＝  ０
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＵＢｏｕｎｄ（＄ｏｂｊ［３］）  −  １
ＣｏｎｓｏｌｅＷｒｉｔｅ（（＄ｏｂｊ［３］）［＄ｉ］  ＆  '  ：  '  ＆  （＄ｏｂｊ［４］）［＄ｉ］  ＆  ＠ＣＲＬＦ）
ｆｏｒ  ＄ｊ  ＝  １  ｔｏ  ＳｔｒｉｎｇＬｅｎ（（＄ｏｂｊ［３］）［＄ｉ］）
ｉｆ  ＳｔｒｉｎｇＭｉｄ（（＄ｏｂｊ［３］）［＄ｉ］，  ＄ｊ，  １）  ＝  '０'  ｔｈｅｎ
＄ｃ０  ＝  ＄ｃ０  ＋  （＄ｏｂｊ［４］）［＄ｉ］
ｅｌｓｅ
＄ｃ１  ＝  ＄ｃ１  ＋  （＄ｏｂｊ［４］）［＄ｉ］
ｅｎｄｉｆ
ｎｅｘｔ
ｎｅｘｔ
ＣｏｎｓｏｌｅＷｒｉｔｅ（'０：１  ＝  '  ＆  ＄ｃ０  ＆  '：'＆  ＄ｃ１  ＆  ＠ＣＲＬＦ）
ｅｎｄｆｕｎｃ
ｆｕｎｃ  ＭａｐＯｕｔｐｕｔ（ｂｙｒｅｆ  ＄ｏｂｊ，  ｂｙｒｅｆ  ＄ｄａｔａ，  ｂｙｒｅｆ  ＄ｏｕｔｍａｐ，  ＄ｏｕｔｆｉｌｅ  ＝  ''）
ｌｏｃａｌ  ＄ｉｎｐｕｔ［１］
ｌｏｃａｌ  ＄ｉｎｄｅｘ，  ＄ｉ，  ＄ｊ
ＩｎｐｕｔＩｎｉｔ（＄ｉｎｐｕｔ，  ＄ｄａｔａ）
ＭａｐＣｌｅａｒＦｒｅｑ（＄ｏｂｊ）
ｉｆ  ＵＢｏｕｎｄ（＄ｏｕｔｍａｐ）  ＜＞  ＵＢｏｕｎｄ（＄ｏｂｊ［３］）  ｔｈｅｎ  ＰｒｉｎｔＥｒｒｏｒ（'ｍａｐ  ｓｉｚｅ  ｎｏｔ  ｍａｔｃｈ'）
ｌｏｃａｌ  ＄ｏｕｔｐｕｔ［１］
ＯｕｔｐｕｔＩｎｉｔ（＄ｏｕｔｐｕｔ）
ｌｏｃａｌ  ＄ｏ０  ＝  ０
ｌｏｃａｌ  ＄ｏ１  ＝  ０
ｗｈｉｌｅ  ｎｏｔ  ＩｎｐｕｔＥｎｄｅｄ（＄ｉｎｐｕｔ）
＄ｉｎｄｅｘ  ＝  ＭａｐＲｅａｄ（＄ｉｎｐｕｔ，  ＄ｏｂｊ）
＄ｓｔｒ  ＝  ＄ｏｕｔｍａｐ［＄ｉｎｄｅｘ］
ｆｏｒ  ＄ｉ  ＝  １  ｔｏ  ＳｔｒｉｎｇＬｅｎ（＄ｓｔｒ）
ｉｆ  ＳｔｒｉｎｇＭｉｄ（＄ｓｔｒ，  ＄ｉ，  １）  ＝  '０'  ｔｈｅｎ
ＯｕｔｐｕｔＷｒｉｔｅＢｉｔ（＄ｏｕｔｐｕｔ，  ０）
＄ｏ０  ＝  ＄ｏ０  ＋  １
ｅｌｓｅ
ＯｕｔｐｕｔＷｒｉｔｅＢｉｔ（＄ｏｕｔｐｕｔ，  １）
＄ｏ１  ＝  ＄ｏ１  ＋  １
ｅｎｄｉｆ
ｎｅｘｔ
ＡｒｒａｙＳｅｔＤａｔａ（＄ｏｂｊ［４］，  ＄ｉｎｄｅｘ，  （＄ｏｂｊ［４］）［＄ｉｎｄｅｘ］  ＋  １）
ｗｅｎｄ
ｌｏｃａｌ  ＄ｃ０  ＝  ０
ｌｏｃａｌ  ＄ｃ１  ＝  ０
ｆｏｒ  ＄ｉ  ＝  ０  ｔｏ  ＵＢｏｕｎｄ（＄ｏｂｊ［３］）  −  １
ＣｏｎｓｏｌｅＷｒｉｔｅ（（＄ｏｂｊ［３］）［＄ｉ］  ＆  '−＞'  ＆  ＄ｏｕｔｍａｐ［＄ｉ］  ＆  '  ：  '  ＆  （＄ｏｂｊ［４］）［＄ｉ］  ＆  ＠ＣＲＬＦ）
ｆｏｒ  ＄ｊ  ＝  １  ｔｏ  ＳｔｒｉｎｇＬｅｎ（（＄ｏｂｊ［３］）［＄ｉ］）
ｉｆ  ＳｔｒｉｎｇＭｉｄ（（＄ｏｂｊ［３］）［＄ｉ］，  ＄ｊ，  １）  ＝  '０'  ｔｈｅｎ
＄ｃ０  ＝  ＄ｃ０  ＋  （＄ｏｂｊ［４］）［＄ｉ］
ｅｌｓｅ
＄ｃ１  ＝  ＄ｃ１  ＋  （＄ｏｂｊ［４］）［＄ｉ］
ｅｎｄｉｆ
ｎｅｘｔ
ｎｅｘｔ
ＣｏｎｓｏｌｅＷｒｉｔｅ（'ｏｌｄ  ０：１  ＝  '  ＆  ＄ｃ０  ＆  '：'＆  ＄ｃ１  ＆  ＠ＣＲＬＦ）
ＣｏｎｓｏｌｅＷｒｉｔｅ（'ｎｅｗ  ０：１  ＝  '  ＆  ＄ｏ０  ＆  '：'＆  ＄ｏ１  ＆  ＠ＣＲＬＦ）
ｉｆ  ＄ｏｕｔｆｉｌｅ  ＜＞  ''  ｔｈｅｎ
ｌｏｃａｌ  ＄ｏｕｔ  ＝  ＯｕｔｐｕｔＧｅｔＤａｔａ（＄ｏｕｔｐｕｔ）
ＷｒｉｔｅＤａｔａＦｉｌｅ（＄ｏｕｔｆｉｌｅ，  ＄ｏｕｔ）
ｅｎｄｉｆ
ｅｎｄｆｕｎｃ
；；；；；；
【０１２８】
図表５８ａは、８０，０００ビットのランダムデータセットの２７個の固有ＰＵＣＶの頻度分布を示し、図表５８ｂは、同じランダムデータセットの２７×２７個の固有ＳＰＵＣＶの頻度分布を示す。簡潔にするために、図表５８ｂに各ビットクラスの２つの最も頻繁なＳＰＵＣＶと２つの最も頻繁でないＳＰＵＣＶだけがリストされる。３つの単一コード単位からなる処理ユニット及び２つの連続した処理ユニットを有するスーパー処理ユニットを有し、ＣＨＡＮフレームワークを使用して開発されたエンコーダであるＭａｘ３  ５ビット０ヘッドデザインコード単位エンコーダによって読み取り、サンプリングする時、これは、８０，０００ビットランダムデータセットの他の頻度分布規則性又は法則性を十分に区別することができる。以上説明したように、ＣＨＡＮフレームワークは、ランダムデータを含む任意のデータ割り当てのデジタルデータの特徴及び特性を説明して調査するためのフレームワークを提供する。これまでに、ランダムデータの特徴は、より詳細且つ明確には開示されず、それはランダムであるため、それが表す値は予測不可能な方式でランダムに現れ、長期的には均一な割り当てのビット０：ビット１比率に近づく傾向を持つが、規則性がないことが分かる。現在使用しているＣＨＡＮフレームワークは、例えば、設計されたエンコーダの下で、−Ｍａｘ３  ５ビット０ヘッドデザインコード単位エンコーダは、３つの単一コード単位からなる処理ユニット及び２つの連続した処理ユニットを有するスーパー処理ユニットを有し、ランダムデータを説明することに用いられる特定の規則性又は法則性を見つけることができる。それは、ランダムデータ及び非ランダムデータを処理することに用いられる法則を作成するための基準として、ランダムデータセットに関する頻度分布の規則性又は法則性を使用することができる。図表５８ａ及び図表５８ｂには、例えば、それぞれ２７個の固有処理ユニット及び２７×２７個の固有スーパー処理ユニットについて、任意の特定コード値の頻度はそのビット長又はビットサイズ又はビットクラスの尺度、高いクラスの１つである識別可能な規則性が存在し、ビット長やサイズは１ビット短縮され、その頻度が約２倍になる。例えば、図表５８ａでは、３ビットクラスＰＵＣＶ  ０００の頻度は２３１１であり、４ビットクラスの次のＰＵＣＶ  １１００が１１５１になる。そして２７ｘ２７  ＳＰＵＣＶに対して、図表５８ｂに規則性も見られる。
しかしながら、図表５８ａ及び図表５８ｂのコード値の間の頻度範囲を比較すると、この規則的な変化を発見することができる。ビットクラス内の頻度の最も高いコード値と隣接するビットクラス内の頻度の最も低いコード値の間の頻度範囲を比較することができる。以下の図表５８ｅに異なるビットクラスにおけるコード値の頻度範囲が示される。
図表５８ｅ
【表４６】
2019528027.tif 000064
従って、それは、ビット長が値の頻度を決定する唯一の要因ではないことを明らかにし、異なるグループ内の値もそれら自体のグループに特有のそれら自体の頻度法則性を有する。例えば、ビットクラスが低くなることにつれて、高いビットクラス内の最も頻繁なコード値と低いビットクラス内の最も頻繁でないコード値との比率は、ＳＰＵＣＶグループ内で増加する傾向がある。
これに基づいて、ランダムであるか否かに関わらず、データを処理する方法及びそれに対応する法則を設計することで、目的に合わせる。ここで、本開示は、この発見が特にランダムデータを含むデジタルデータの圧縮を行うことにどのように使用されることを明らかにする。
【０１２９】
ランダムデータを圧縮することについて、段落０１２８に開示された発見を用いて、連続コード代用（ＳＣＳ）と共に絶対アドレス分岐エンコーディング（ＡＡＢＣ）を使用してデジタルブラックホール技術（ＤＢｈ）を開発することができる。物理的な世界では、ブラックホールは物質が吸収される場所である。同様に、本発明において開示されたいくつかの実施形態は、他の２進数コードが吸収されるスポットを表すための２進数デジタルコードを使用する。これは、前記役割を果たすことに有利なデジタル２進数コードを識別することに関連する。そのようなスポットを選択するために使用される基準は、人が達成しようとしている目的に依存する。そのため、設定される基準は目的に関連している。データ圧縮を行うため、明らかな基準はデジタル２進数コードの頻度に関する。そのため、デジタル２進数コードブロックが出現する頻度が高ければ高いほど、他のデジタル２進数コードを吸収する頻度が高まるため、より多くのビットを節約することができる。従って、図表５８ａ及び図表５８ｂに示すように、ＰＵＣＶグループ及びＳＰＵＣＶグループ内の各ビットクラスに存在する最も頻繁な値を識別することができる。
デジタルブラックホールの発明はＡＡＢＣの技術を使用する。図表５５に示すように、段落０１１５に記載されている説明の場合、２７個の固有ＰＵＣＶグループは、頻度が約半分の２つのサブグループに分けられる。また、段落０１１６は、わずかに異なる以上の圧縮クラスと非圧縮クラスの頻度をまとめ、ここで第１クラスは８８９７個の処理ユニットを有し、第２クラスは８８８８個の処理ユニットを有する。非圧縮クラスにおいて７個のＰＵＣＶ、圧縮クラスにおいて２０個のＰＵＣＶが含まれる。非圧縮クラスは、そのヘッドとして使用される分類コード又はシリナオコード０を含み、圧縮クラスは、１をそのヘッドとして使用する。分類コード又はシナリオコードの使用を省くことができれば、特定の頻度分布の規則性を有するため、特定の頻度分布のランダムデータに対して、データ圧縮を実現する。これは、ここで開示されたデジタルブラックホールの発明によって完了させる。任意のランダムデータセット内の任意のＰＵＣＶ又はＳＰＵＣＶの前後には、３／４／５／６ビットクラスとすることが可能な別のＰＵＣＶである。図表５５の非圧縮クラスは、３ビットクラスと４ビットクラスＰＵＣＶで、圧縮クラスは、５ビットクラスと６ビットクラスにある。分類コードビット０／１を使用しなければ、非圧縮クラス及び圧縮クラスのＰＵＣＶのための以下のＡＡＢコードを使用することができ、図表５９に示される。
図表５９ａ
非圧縮クラス３／４ビットクラスＰＵＣＶのＡＡＢコード
７つの固有ＰＵＣＶ      割り当て
００  −１              ３ビットクラスＰＵＣＶ
０１０  −１            ４ビットクラスＰＵＣＶ
０１１  −１            ４ビットクラスＰＵＣＶ
１００  −１            ４ビットクラスＰＵＣＶ
１０１  −１            ４ビットクラスＰＵＣＶ
１１０  −１            ４ビットクラスＰＵＣＶ
１１１  −１            ４ビットクラスＰＵＣＶ
図表５９ｂ
非圧縮クラス５／６ビットクラスＰＵＣＶのＡＡＢコード
２０個の固有ＰＵＣＶ      割り当て
００００  −１          ５ビットクラスＰＵＣＶ
０００１  −１          ５ビットクラスＰＵＣＶ
００１０  −１          ５ビットクラスＰＵＣＶ
００１１  −１          ５ビットクラスＰＵＣＶ
０１００  −１          ５ビットクラスＰＵＣＶ
０１０１  −１          ５ビットクラスＰＵＣＶ
０１１０  −１          ５ビットクラスＰＵＣＶ
０１１１  −１          ５ビットクラスＰＵＣＶ
１０００  −１          ５ビットクラスＰＵＣＶ
１００１  −１          ５ビットクラスＰＵＣＶ
１０１０  −１          ５ビットクラスＰＵＣＶ
１０１１  −１          ５ビットクラスＰＵＣＶ
１１０００  −１        ６ビットクラスＰＵＣＶ
１１００１  −１        ６ビットクラスＰＵＣＶ
１１０１０  −１        ６ビットクラスＰＵＣＶ
１１０１１  −１        ６ビットクラスＰＵＣＶ
１１１００  −１        ６ビットクラスＰＵＣＶ
１１１０１  −１        ６ビットクラスＰＵＣＶ
１１１１０  −１        ６ビットクラスＰＵＣＶ
１１１１１  −１        ６ビットクラスＰＵＣＶ
図表５９ａ及び図表５９ｂの両方において、上記方式で割り当てられたＰＵＣＶのそれぞれが、ＡＡＢＣの技術を使用することで１ビットを節約するのを助けることが分かる。しかし、分類又はシリナオコードがないため、これらのＡＡＢコードだけで２７個の固有ＰＵＣＶを表すことはできない。そのため、デジタルブラックホールを作成するための技術が役立つ必要がある。以上説明したように、これは、デジタル２進数コードを前のＰＵＣＶ又は後続のＰＵＣＶを吸収するブラックホールとして指定され、一旦デコーディング時に前記デジタル２進数コードが検出されると、図表５９ａ及び図表５９ｂに示されるＡＡＢコードを使用して割り当てられたＰＵＣＶコードを示す。しかし、非圧縮クラスと圧縮クラスの２つのクラスがあるため、２つのブラックホールがあるべきで、そのうち１つは、ＡＡＢコードを使用して３ビットクラスと４ビットクラスＰＵＣＶ及び他の５ビットクラスと６ビットクラスＰＵＣＶを示す（従って吸収）ことを担当する。従って、ブラックホール１（ＳＰＵＣＶ  ００１１−１１０１１、頻度１９、９ビットクラスにおける最低）と合わせ、ブラックホール０（ＳＰＵＣＶ  ００１０−１１００、頻度９１、ＳＰＵＣＶグループ中の８ビットクラスにおける最高）とペアリングすることで、それぞれブラックホール０とブラックホール１の前後に２つのハーフコード値（半分は３ビット及び４ビットクラスコード値で、残りの半分は５ビット及び６ビットクラスコード値である）を吸収することに用いられるべきである。ここでは、ＳＰＵＣＶ  ００１０−１１００及びＳＰＵＣＶ  ００１１−１１０１１は、これらが共に頻度範囲（図表５８ｃに示すように、比率が４：１より大きい）を示すため、ブラックホール０及び１として選択され、１つの特徴として、１つの形態のデジタルデータブラックホール技術に適用する。
【０１３０】
ＳＰＵＣＶグループの頻度規則性又は法則の発見は、ランダムデータのデータ圧縮のためにこのブラックホール技術を使用するための道を開くのに役立つ。そして、ＰＵＣＶグループとＳＰＵＣＶグループの頻度規則性パターンが確かめられたので、頻度振幅と任意の特定のビットクラス又はビットクラス値の頻度範囲を含むこのパターンは、後で開示されるように、他のタイプのデータ割り当てを圧縮する法則を作成するための参照としてこれを使用することができる。
【０１３１】
デジタルデータブラックホールは、ＡＡＢＣを使用して、次のキュー中の前の値、後の値又は前後の２つの値を吸収することができる。そのため、デジタルデータブラックホールの技術は、ＣＨＡＮフレームワーク下で定義されたエンコーダのコード値を使用して、ＡＡＢエンコーディングを使用して他のコード値、即ち、吸収されるコードを表すブラックホールコード値に関連付けられたＡＡＢコードを吸収又は表現するため、ブラックホールコード値が、対応するブラックホールによって吸収されるコード値を表すように、ＡＡＢコードへのインデックス又はポインタであることとして定義される。例えば、ブラックホール０は、３ビットと４ビットのＰＵＣＶが後で現れる時（後へ吸収するために用いられる）、それらを吸収するために図表５９ａ中のＡＡＢコードを使用する。そのため、ブラックホール０の約半分について（ここで使用される実例ではＳＰＵＣＶ  ００１０−１１００の）１ビットを節約する。例えば、これにより、３ビットと４ビットのＰＵＣＶの頻度と５ビットと６ビットのＰＵＣＶの頻度の比率に応じて、約４６（９１／２）ビットを節約する。図表５９ｂでＡＡＢコードを使用するブラックホール１としてＳＰＵＣＶ  ００１１−１１０１１を使用して、ＳＰＵＣＶ  ００１１−１１０１１の後に５ビット又は６ビットのＰＵＣＶが続くというパターンを表し、一方で、４５（９１／２）ビットを節約するが、他方で、４５ビットも損失するため、ＳＰＵＣＶ  ００１１−１１０１１、ブラックホール１が９ビットであり、ブラックホール０、ＳＰＵＣＶ  ００１０−１１００よりも、１ビット長い。従って、ブラックホール１を使用した結果は均一である。つまり、この技術を使用すると、それは、１ビットとＳＰＵＣＶ  ００１０−１１００頻度の約２分の１との乗算結果、即ち４６（９１／２）ビットを節約することができる。しかしながら、まだ終わっていない。ＳＰＵＣＶ  ００１１−１１０１１（代用コード０、Ｓｃｏｄｅ  ０）はＳＰＵＣＶ  ００１０−１１００（後は５／６ビットのＰＵＣＶである）を代用するために借用され、且つブラックホール１になる。従って、ブラックホール１のビット長は、ブラックホール０よりも１ビット長くしてはならず、且つその頻度は、ブラックホール０の約４分の１未満であるべきである。そうでなければ、データ圧縮を達成しない可能性がある。且つブラックホール１の位置は他のコードで代用されなければならない。データ圧縮を行うために代用コードを選択して連続コードの代用を行う基準又は法則とは、（１）コードのビット長が短いほどよく、（２）コードの頻度が低いほどよく、そして（３）コードの競合を引き起こす代用コードを選択しない（例えば、ＳＰＵＣＶ  ００１０−１１００をブラックホール０として選択すると、それを構成する部分をブラックホール１の構成部分とすることを可能な限り避けるべきである）ということである。従って、選択されたＳｃｏｄｅは代用されるコード（被代用コード）よりも頻度が少なく（頻度が少ないほどよい）、そして代用されるコードよりもビット長が１ビット長くならないようにする（代用コードが短いほどよい）。上記の法則は、ランダムデータを圧縮する汎用法則として使用す���必要がある。非ランダムデータの圧縮及び解凍について議論する時、段落０１３４（２）でより多くの内容が議論される。適切な場合に、自体の目的に適用される他の法則を作成することもできる。図表５８ｂに示すように、このコードの代用は、ＳＰＵＣＶ  ００１１−１１０１１がＳＰＵＣＶ  ００１０−１１００（その後に５／６ビットのＰＵＣＶである）を代用することから始まり、ＳＰＵＣＶ  ００１１−１１０１１（ブラックホール１及びＳｃｏｄｅ  ０）はＳｃｏｄｅ  １等によって代用されなければならない。ＳＰＵＣＶグループの最下位クラス、１２ビットクラスに停止する。このビットクラスには、決して発生しないコード値がある。従って、値が欠落したＳＰＵＣＶは、それを代用する追加のコードなしで最後のＳｃｏｄｅとして使用できる。しかしながら、デコーディングする時に、この代用のためのコード値が何であるかを知る必要があるため、Ｓｃｏｄｅインジケータを使用してそれをメインヘッダー又はセクションヘッダーに記録する必要がある。これはいくらかのビット消費を生み出す。そのため、代用はまたＳＰＵＣＶグループの特定のビットクラスで停止することができ、そのうち、そのようなビット消費がさらなる代用から生じるビット節約を超える。それが特定のビットクラスで停止する時、最低の頻度を有する次のＳＰＵＣＶがＡＡＢコードを使用してそれ自体を２つのＳｃｏｄｅに分割し、１つのＳｃｏｄｅ（最後から２番目のＳｃｏｄｅ）はこのＳｃｏｄｅチェーンの前の１つのＳｃｏｄｅを代用し、そして後のもう１つ（最後のＳｃｏｄｅ）が自体を代用する。例えば、図表５８ｂにリストされる代用コードを使用して、代用が１１ビットクラスで停止した場合、ＳＰＵＣＶ  １０１１１１−１１１１０（Ｓｃｏｄｅ  ２）は、そのクラスで次の最低頻度を有するＳＰＵＣＶ  ０１０１１−１０１０１１（Ｓｃｏｄｅ  ３ａ）で代用しなければならず、それがＳＰＵＣＶ  ０１０１１−１０１０１１−０（ＳＰＵＣＶ  ０１０１１−１０１０１１自体を代用する）とＳＰＵＣＶ  ０１０１１−１０１０１１−１（Ｓｃｏｄｅ  ２、ＳＰＵＣＶ  １０１１１１−１１１１０を代用する）に分けられる。ただし、Ｓｃｏｄｅ  ３ｂは値が欠落するコードなので、Ｓｃｏｄｅ  ２の代わりに使用する場合は、コードを分割する必要はない。従って、これらの特殊コードを使用するために必要なビット消費に応じて、どのビットクラスでそのような連続コード代用を停止するかを決定することができる。しかしながら、この実例において８０，０００ビットのランダムデータセットを使用することによって、どのコード値をブラックホール０とブラックホール１として使用するかを決定するための選択基準として４：１の頻度範囲比率を使用する場合、デジタルデータブラックホール、ＡＡＢエンコーディング、及び連続コード代用技術によるビット節約数は、使用される特殊コードのビット消費をカバーするのに十分ではない。ランダムデータセットを８００，０００ビットに増やすと、明らかに頻度範囲（即ち４：１）をより低い比率に縮小し、このデジタルデータブラックホール技術を用いても、これらのランダムデータを圧縮する可能性がない。
しかしながら、デジタルデータの高い頻度範囲比率及び少ないランダムビットにより、ビット節約数が使用される特殊コードインジケータのビット消費をカバーするのに十分である。例えば、頻度が１４である１２ビットのＳＰＵＣＶ  １１１１１１−１０１０１１、１２ビットクラスにおける最高のものを、欠落しているＳＰＵＣＶ  １１１１１１−１１１１１０とペアリングするためのブラックホール０として使用して、（例えば前方吸収を使用して）その前のＰＵＣＶを吸収する。このＤＤＢのペアを使用することは非常に簡単である。１２ビットクラスの６４個の固有コード値が存在し、２つのＤＤＢのそれぞれには、それらを識別するためのそれぞれの特殊コードインジケータとして６ビットが必要である。これは１２ビットを必要とする。ブラックホール１は欠落するコード値であるため、Ｓｃｏｄｅで代用する必要がなくなる。従って、前記８０，０００ビットのランダムデータセットに対して、ビット節約数は１４から１２ビットを減算することであり、２ビットに相当する。
これは明確なサインと実例であり、ある場合に、ランダムデータを圧縮することができるため、ランダムデータが決して圧縮できないという情報理論における鳩ノ巣の原則の神話を破る。さらに詳しく調べると、全ての場合にあらゆるサイズのランダムデータを圧縮するための法則のパターンがいくつか見つかることははっきりと言える。そして、別の実例も後の段落０１３４の、ランダムデータを圧縮する機会を増やすために別の技術をどのように使用するかの図表６０の議論に示される。従って、上記の技術の組み合わせは、圧縮に適格なデータセット、即ち４：１よりも大きい頻度範囲比率の頻度範囲要件を満たすデータセットを圧縮するために用いられ、その比率が高いほど、成功した圧縮に使用されるランダムデータセットのサイズが小さくなる。サイズが無限のランダムデータセットを使用してＣＨＡＮフレームワーク下で設計できる無制限エンコーダがあるため、上記技術を使用する（又は以上に説明された不均一データ技術及びその他の新たに発明された技術等、例えば、以下の段落０１３４の図表６０に導入される技術又は他の賢い人々が設計するそれらの技術のような他の追加技術と組み合わせて使用する）ことを試して、特定サイズの特定のランダムデータセットに対して、対応する頻度範囲比率パターンを識別して圧縮するために使用する。そのため、使用されるデータセットのサイズ（又は処理するためにそのように定義された特定サイズのセクションに分ける）及び高ビットクラスにおける最大頻度コード値と低ビットクラスにおける最小頻度コード値間の頻度範囲比率（例えば図表５８ｃに示される）は、デジタルデータセット（ランダムデジタルデータセットであるか否かに関わらず）の２つの特徴であり、前記特徴は、デジタルデータセットのパターン又は法則を識別し、上記技術の組み合わせにより成功裏に圧縮することを可能にするために用いられる。
【０１３２】
上記段落０１３１はＣＨＡＮコード技術、即ち連続代用を開示し、デジタルデータブラックホール技術と共に使用される時、ランダムデータセットが対応する頻度範囲特徴の要件を満たす場合に、ＣＨＡＮフレームワーク下で設計された適切なエンコーダの下で、情報理論における鳩ノ巣の原則の神話を破ることに役立つ。従って、適切な場合には、異なるＰＵＣＶ及びＳＰＵＣＶグループの異なるＭａｘ数及びビット数を使用することによって、本明細書で概述される方法と同じ方法を使用して他の設計されたエンコーダと同じ方法で完了することができる。さらなる実施形態は、ＣＨＡＮフレームワークを使用するエンコーダの異なる組み合わせ、異なる技術又は方法を使用する他の異なる解決手段も含むことができる。
【０１３３】
本明細書で紹介されたデジタルデータブラックホール（ＤＤＢ）は様々な形態を取ることができる。それは、ＡＡＢコードを使用して前又は後又は前後の両方からバイパスのコード値を吸収（即ち表示）することができる（例えば、ビット０又はビット１を使用して代用コードを、２つのコード値がコード値のバイパス吸収又は表示と見なされることを代表する２つの形態に分割し、そのうち分割代用コードで表されるコード値はデータセット内の任意の箇所に現れてもよい）。後のコード値を吸収するためにＤＤＢを使用する方法がより簡単である。前にコード値を吸収する場合に、２つ又は連続的な複数のＤＤＢが現れることに注意する必要がある。ＤＤＢとして指定されたコードがリンクされる時、各ＤＤＢに対応するＡＡＢコードがまず順に格納されなければならず、且つ最後のＤＤＢのＡＤＢコードを処理した後に、このようなＡＡＢコードは逆の順序で配置されなければならず（即ちＡＡＢコードの逆配置技術を使用して、デコーディング後の前のコード値が別のＤＤＢを形成することができるか否かをチェックし、且つ必要に応じて対応するコードのさらなるデコーディングを行う）、それによりデコーディングする時に、吸収されているコード値をデコーディングするためにＡＡＢコードを正しい順序で解釈することができる。また、エンコーディングコード出力ストリームの第１エンコーディングコード値として現れるＤＤＢが、前にコード値のＤＤＢを吸収したか否かを区別するために、ビットコード、即ちビット０又はビット１（関連する区分ビット）を使用する必要もある（もしそうであれば、上記の区別するビットは吸収されるコード値を表すＡＡＢコードにも従わなければならず、もしそうでなければ、上記の区別するビットは十分である）。ブラックホールが２つの方向にコード値を吸収することについて、ビット節約数はもっと多くなる可能性があり、それは２つのＡＡＢコードが使用でき、そのうち１つは前及び後に吸収される各コード値に用いられる。いくつかのＤＤＢが集まる時、より複雑になる。従って、ＤＤＢ衝突の各可能な状況又はシナリオをさらに解析し、次にエンコーディングをどのように完了するかを処理する法則を確立すべきである。例えば、何らかの理由でＡＡＢコードの逆配置を使用したくないと、例外法則が設定でき、即ち、２つのＤＤＢが連続的に現れる時、一方が、関連コード値（即ち他のＤＤＢ）を吸収しないように、対応する吸収方向で停止してＡＡＢエンコーディングを行う。この例外法則は一方向又は双方向の吸収のために設計される。ＤＤＢを使用して前又は後又は前後の両方にコード値を吸収するために、それに関連するＡＡＢコードを正確にデコーディングすることができるように、関連するヘッダーにＤＤＢタイプのインジケータも含むことができる。さらに、前又は後に表されるコード値は、対応するＤＤＢから一定の距離を置くように設計することもでき、通常、直接的に前又は後にあるコード値は、ＡＡＢエンコーディングによって吸収又は表示されるが、対応するＤＤＢの前又は後に吸収されるか又はＡＡＢエンコーディングによって表されるコード値のための一定数の位置を指定することもできる。このようにして、オリジナルのデジタルデータ入力ストリーム内で第１ＤＤＢに合ってそのような吸収又は表示を行う時、デコーディングプロセス中に任意の誤解が存在しないようにこの状況を表現するためにより詳細な法則を設計しなければならない。
【０１３４】
上記の説明により、ランダムデータと非ランダムデータの両方を圧縮するために用いられる方法又は技術又は技術の組み合わせを以下のようにまとめることができる。
（１）ランダムデータの圧縮及び解凍
（１ａ）ランダムデータセットの頻度統計値を生成するためにＣＨＡＮフレームワークで設計されたエンコーダを使用してデータを解析する。
このステップでは、ＣＨＡＮフレームワークで設計されたエンコーダを使用し、例えば、図表５８に示す頻度統計値は、Ｍａｘ３  ５ビット０ヘッドデザインコード単位エンコーダを使用して生成され、前記エンコーダは、３つの単一コード単位からなる処理ユニットと、２つの処理ユニットからなるスーパー処理ユニットとを有する。
（１ｂ）特殊コード（又は異常コード）としてコード値を指定して特別に処理し、ＡＡＢエンコーディングを使用するデジタルデータブラックホール技術、及びコード分割を使用するか使用しない連続代用技術を含む方法で新しい代用コードを形成して使用に備える。ランダムデータセットの頻度統計に基づいて、適切な頻度パターンが識別される限り、ＰＵＣＶ及びＳＰＵＣＶを、ブラックホールコード及び代用コード等の特殊コードとして選択する。この選択は、エンコーディング及びデコーディングのための基準を基とし、例えばこの場合に、これはデジタルデータ、具体的にはランダムデータの圧縮及び解凍に用いられる。この目的のためにコードをどのように選択するかを教示する説明が以上になされ、例えば簡単に言えば、ＰＵＣＶ及びＳＰＵＣＶグループ内のビットクラスに従って、それらの頻度に基づいて特殊コードを選択し、例えば、各ビットクラスの最高頻度のコード値はブラックホール０の候補であり、各ビットクラスの最低頻度のコード値は代用コードの候補であり、そのうちの１つ（例えば代用コード０）がブラックホール１として使用され、ＡＡＢエンコーディングを使用して前又は後又は前後の両方のコード値を表示（又は吸収）するためにブラックホール０のコードとペアリングされる。従って前記特別な処理は、コード分割の有無に関わらず、新しい代用コードを形成して使用するために、ＡＡＢエンコーディング及び連続的に代用されるデジタルデータブラックホールを使用する。ブラックホールコードに関連するＡＡＢコードは、単独したＡＡＢコードファイルを使用してそのようなＡＡＢコードを格納する代わりに、ブラックホールコードの後に配置してメインエンコーディングコード出力ファイルにマージすることができ、且つ単独したＡＡＢコードファイルを使用して、適切な場合にＡＡＢコードを格納するように決定することもできる。上記特殊コード用のインジケータ（特殊コードインジケータ）はブラックホールインジケータと代用コードインジケータを含み、特殊コードインジケータとセクションサイズインジケータ（下記参照）は関連するヘッダーに記述する必要がある。エンコーディングを容易にするために、その部分がこの特別な処理を行ってビット節約を生み出すのに十分に大きい限り、デジタルデータ入力全体を、少数の２進数ビット、ある一定数の２進数ビットからなるセクションに分割することができ、例えば１つのセクションとして８００００ビットを使用して処理し（例えば、１つの部分が１つの２進数ビットだけで構成されると、ビット節約が達成されない可能性があるので、この意味のない仮定は二度と起こさない）、そのセクションが小さければ小さいほど達成可能なビット節約数は少なくなるため、大きいビットサイズを使用するセクションは、その部分に対して、より多くのビット節約数が達成できることを意味し、ただし、データ解析の速度も遅くなる可能性があるため、ビット節約とエンコーディング速度のバランスを取る必要がある。そのため、セクションのサイズインジケータを使用して（対応するセクションヘッダーに書き込む）、処理中のセクションのビットサイズを示す。セクションを使用すると、セクション境界を横切るＰＵＣＶ又はＳＰＵＣＶ（例えば、８０，０００ビット）は、セクション境界の前のセクションとして処理され、又は新しいセクションとして処理され、そして、それに応じてセクション境界を調整する。
（１ｃ）ランダムデータを圧縮するためのエンコーディングプロセス：
従って、ランダムデータを圧縮するためのエンコーディングプロセスは、
（ｉ）デジタルデータ入力を読み取って解析して、ランダムデータセットの頻度統計値を生成するために、ＣＨＡＮフレームワークで設計されたエンコーダを使用するステップと、
（ｉｉ）特別に処理するために特殊コードとしてコード値を指定し、処理がＡＡＢエンコーディングを使用するデジタルデータブラックホール、及びコード分割を伴うか又は伴わない連続代用を含み、それにより新しい代用コードを形成して使用に備えるステップと、
（ｉｉｉ）コード値を読み取り、コードが通常コードか特殊コード（ブラックホール０及びその他のＳｃｏｄｅを含む）であるかを区別し、このように読み取られたコード値をエンコーディングし、適切な場合に特別な処理（本明細書の特別な処理は、ＤＤＢに合う時にＡＡＢエンコーディングを使用するデジタルデータブラックホール、又は特殊コード、即ち代用コードに用いる代用コードマッピングテーブルを含み、それにより適切な場合に連続コード代用を行う）を応用し、且つ適切な場合に上記ステップ（１ｃｉｉ）の指定、コード分割を伴うか又は伴わない連続代用の設計法則、及びＡＡＢコードテーブル法則に基づいて、エンコーディングされたコードを出力ファイルに書き込み、ブラックホールによって吸収されたコード値のためのＡＡＢコードを生成し、ＡＡＢコードは、適切な場合に、単独したＡＡＢコード出力ファイルとして書き込まれるか又はメインエンコーディングコードファイルにマージするように書き込まれるステップと、
（ｉｖ）適切な場合（エンコーダにまだ埋め込まれていない場合）に、メインヘッダー及びセクションヘッダーにインジケータを書き込み、そのようなインジケータが、適切な場合にチェック及びインジケータ、ＣＨＡＮコードファイル署名、マッピングテーブルインジケータ、周期数インジケータ、コード単位定義インジケータ、処理ユニット定義インジケータ、スーパー処理ユニット定義インジケータ、最後識別コードインジケータ、シナリオ設計インジケータ、不均一器／均一器インジケータ、リサイクルインジケータ、頻度インジケータ、特殊コードインジケータ、セクションサイズインジケータ、デジタルデータブラックホールタイプインジケータを含むステップとを含む。
（１ｄ）ランダムデータを圧縮するためのデコーディングプロセス：
ランダムデータを解凍するためのデコーディングプロセスは、
（ｉ）ＣＨＡＮフレームワークで設計されたエンコーダを使用してエンコーディングされたコードファイルを読み取り、解析するステップと、
（ｉｉ）適切な場合に、上記ステップ（１ｃｉｉ）の指定、コード分割を伴うか又は伴わない連続代用の設計法則及びＡＡＢコードテーブル法則に基づいて、コード値をデコーディングし（即ち、適切な場合にコード値用のコードマッピングテーブルを代用する）、且つデコーディングされたコードをデコーディングされたコードファイルに書き込み、ヘッダーに記録された（又はデコーダに埋め込まれた）ＡＡＢコード及びインジケータを検索して、ブラックホールによって吸収されたコード値をデコーディングし、且つそれらをデコーディングされたコードファイルにおける適切な位置に書き込むために用いられるステップとを含む。
これは、また、図表５８ｃにリストされるプログラムによって生成された７２，００３ビットのランダムデータの頻度分布の実例により、前記行を、
ｉｆ  ｎｏｔ  ＦｉｌｅＥｘｉｓｔｓ（'ｆｆ'）  ｔｈｅｎ  ＧｅｎｅｒａｔｅＲａｎｄｏｍＦｉｌｅ（'ｆｆ'，１００００）を
ｉｆ  ｎｏｔ  ＦｉｌｅＥｘｉｓｔｓ（'ｆｆ'）  ｔｈｅｎ  ＧｅｎｅｒａｔｅＲａｎｄｏｍＦｉｌｅ（'ｆｆ'，９０００）
に変更することにより、ランダムデータが圧縮可能であることを証明する。
そのような頻度分布の実例は、以下の図表６０ａにリストされる。
図表６０ａ
Ｍａｘ３  ５ビット０ヘッドデザインコード単位エンコーダによって読み取られた７２，００３ビットランダムデータセットのコード値の頻度分布
０００  ２００４  （  −１  ）
１１００  １０５９  （  ０  ）
００１１  １０３４  （  ０  ）
０１１０  １０２３  （  ０  ）
００１０  ９８７  （  ０  ）
１０００  ９８２  （  −１  ）
０１００  ９１４  （  −１  ）
１００１１  ５４６  （  ０  ）
１１１００  ５４１  （  ０  ）
１１０１０  ５２３  （  ０  ）
１０１１０  ５１７  （  ０  ）
０１１１０  ５０６  （  ０  ）
０１１１１  ５０２  （  ０  ）
０１０１１  ４９９  （  ０  ）
１００１０  ４８４  （  ０  ）
０１０１０  ４７７  （  ０  ）
１１１１０  ４７６  （  ０  ）
１１０１１  ４７０  （  ０  ）
１０１００  ４７０  （  ０  ）
１１１０１１  ２６４  （  １  ）
１０１０１０  ２６１  （  １  ）
１１１１１０  ２５９  （  １  ）
１１１０１０  ２５０  （  １  ）
１０１１１１  ２４８  （  １  ）
１０１０１１  ２４４  （  １  ）
１１１１１１  ２３７  （  １  ）
１０１１１０  ２２７  （  １  ）
合計ビット：７２００３
ａａｂ増加量：−１９１０
２７ｘ２７
０００−０００  １９９
０００−１１００  １４８
０００−０１００  １４２
…                （リストが非常に長いため関係しないコード値をジャンプする）
１１０１１−１０１００  １７
１１１１１１−１１００  １７
１０１０１０−１０１００  １７      １１ビットクラスにおける最高頻度
１０１１１１−０１００  １７
１０１１０−１０１００  １７
００１１−１１１１１０  １７
１００１０−１１１００  １７
０１１０−１１１０１１  １７
１０１００−１００１１  １７
００１０−１１１１１０  １７
１０１００−０１０１０  １７
１０００−１１１０１０  １７
０１１１０−１００１１  １７
１１１１１０−００１１  １７
０１０１０−１０１１０  １７
１１１１１０−０１１０  １７
１００１１−０１１１０  １７
０１１１１−０１０１１  １７
１１１１１０−１１００  １７
０１０１１−０１１１１  １７
０１０１０−１００１１  １７
０１０１１−１０１１０  １７
１１１１０−１００１０  １７
１１１００−１００１０  １６
１１１１０−０１１１０  １６
１０１１０−１００１１  １６
０１００−１１１０１０  １６
０１１１０−１１１１０  １６
１１０１０−１０１００  １６
１１１００−１０１００  １６
０１１０−１０１１１０  １６
１０１０１１−１０００  １６
１０１１１１−０１１０  １６
１１００−１１１０１１  １６
１１１０１０−００１１  １６
００１１−１０１０１１  １６
０１１１０−１１０１１  １６
１０１０１１−１１０１０  １６      １１ビットクラスにおける２番目に高い頻度
１０１００−１０１００  １６
０１１１０−１００１０  １６
１１１０１１−００１１  １６
０１１１１−１１１１０  １６
１１１００−０１０１１  １５
０１０１０−１１０１０  １５
１０００−１１１１１０  １５
１１０１０−１１０１０  １５
１１０１０−０１１１１  １５
１１０１１−１１１１０  １５
１０１１１１−００１０  １５
１００１１−１１０１０  １５
１１１００−１１０１０  １５
１１０１０−０１１１０  １５
１１０１１−１１０１０  １５
１１１１１１−００１０  １５
１０１０１１−１１００  １５
００１１−１１１０１１  １５
１０１０１０−００１０  １５
１１００−１１１１１０  １５
０１００−１１１０１１  １５
０１１１１−１００１０  １５
１１００−１０１０１０  １５
０１１１０−１１０１０  １５
１１１００−１１０１１  １５
１０１１１０−１００１１  １５      １１ビットクラスにおける３番目に高い頻度
１１１００−１００１１  １５
１００１１−１１０１１  １５
１０１１１０−０１１０  １４
０１１１０−１１１００  １４
１０１００−１０１１０  １４
０１１１０−１０１１０  １４
１１０１１−０１１１１  １４
１０１０１０−１０００  １４
１００１１−１０１０１０  １４
１１１０１０−１１１１０  １４
１１１０１０−０１１１１  １４
０１０１０−１１０１１  １４
０１０１１−１１１１０  １４
１１１１１０−０１００  １４
１１１１０−０１０１１  １４
０１１１１−１１１００  １４
１１０１０−１１１０１１  １４
１１１１０−１０１００  １４
１１１１０−０１１１１  １４
１１１０１１−１１１００  １４
０１００−１０１０１０  １４
０１００−１０１１１１  １４
１１１１１１−００１１  １４
１１１００−０１１１０  １４
１１１１１１−１０００  １４
００１０−１１１０１１  １４
１１１０１１−１１００  １４
００１０−１１１０１０  １４
１０００−１０１１１０  １４
００１０−１０１０１０  １４
１０１１０−１０１１０  １４
１０１１０−０１０１０  １４
１０１１０−０１０１１  １４
１０１１０−１０１０１１  １３
１０１００−１１１００  １３
１００１１−１０１００  １３
０１０１１−０１０１１  １３
０１０１１−１００１０  １３
１１１１１０−０１０１０  １３
１０１０１１−０１１０  １３
００１１−１１１１１１  １３
１００１０−１０１００  １３
０１００−１０１０１１  １３
１１０１１−１１１００  １３
１０１１１１−００１１  １３
１０１１１１−１０１１０  １３
０１１０−１０１０１０  １３
００１０−１０１０１１  １３
１０１００−１００１０  １３
１００１０−１００１１  １３
０１０１１−１１１１１１  １３
１０１０１０−００１１  １３
１１１０１０−１００１０  １３
１１１０１０−１１００  １３
０１１１１−１０１１０  １３
１１１０１０−００１０  １３
０１０１０−１１１００  １３
０１０１０−１００１０  １３
１１１１０−０１０１０  １２
０１１１１−１１０１０  １２
１１１０１１−１０１００  １２
１１１１１１−１００１１  １２
１１０１０−１１１１０  １２
１１１０１１−０１１１０  １２
１０００−１１１１１１  １２
０１１１０−１０１０１１  １２
１１１００−１１１０１０  １２
１１１００−１０１１１０  １２
１１１１１１−１０１１０  １２
１１０１１−０１０１０  １２
１０１００−１１１１０  １２
１１１００−０１１１１  １２
１００１０−１０１０１０  １２
１０１０１０−０１０１０  １２
１１００−１０１１１１  １２
０１１１０−０１１１１  １２
１１１１１０−１００１１  １２
１００１１−１１１１１０  １２
１０１１１０−０１００  １２
０１０１０−１１１１０  １２
０１１１０−０１０１１  １２
０１１１１−０１１１１  １２
１１１０１１−０１０１０  １２
０１１０−１０１０１１  １２
０１１０−１１１１１１  １２
１０１１１０−００１１  １１
１０１０１１−０１０１０  １１
１０１１１０−１０００  １１
１１１１１０−１１１００  １１
１１１１１１−０１１０  １１
１１１０１１−１０１０１０  １１        １２ビットクラスにおける最高頻度
１１０１１−１０１１１０  １１
１１１０１１−１０１１０  １１
１０１０１０−１１１００  １１
１０１０１０−１０１１０  １１
１０１０１０−１００１１  １１
１１１０１０−１０１０１１  １１    １２ビットクラスにおける２番目に高い頻度
１００１０−０１１１１  １１
１００１０−１００１０  １１
１００１０−０１１１０  １１
０１０１０−１０１０１１  １１
１０１００−０１０１１  １１
０１０１０−１０１０１０  １１
０１１１０−１１１１１０  １１
１１１００−１１１１１１  １１
０１００−１１１１１１  １１
０１０１１−１１１００  １１
１１００−１１１１１１  １１
１１００−１１１０１０  １１
１１０１０−１０１１０  １１
１１１００−０１０１０  １１
１１０１０−０１０１０  １１
１１０１０−１１０１１  １１
１０１０１１−１０１１０  １０
１１１１０−１１０１１  １０
１１１０１１−０１１０  １０
０１１１０−１０１１１１  １０
０１１０−１０１１１１  １０
００１１−１０１１１０  １０
１１０１０−１１１１１１  １０
１０００−１０１０１０  １０
１０１０１１−１００１０  １０
００１０−１０１１１１  １０
１１１１０−１１１１１１  １０
１０１１１１−１１１００  １０
１１１０１０−０１００  １０
１１１０１０−１０００  １０
１１１０１０−１１０１１  １０
１００１０−１０１０１１  １０
１０１０１０−０１１１０  １０
１１１１０−１１１１０  １０
１１１１１０−１１１１０  １０
１１１１１０−０１１１１  １０
１１１１１０−１０１１０  １０
１１０１１−１１０１１  １０
１１１１１１−０１００  １０
１１１００−１１１０１１  １０
１１１００−１０１１１１  １０
１１０１１−０１０１１  １０
１１１１１１−１１１００  １０
１０１１１０−１０１００  １０
０１００−１０１１１０  １０
１１１１０−１００１１  ９
１１１０１０−０１０１１  ９
１０１１０−１０１０１０  ９
１００１０−１１１１１０  ９
１００１１−１０１１１１  ９
１１０１０−１０１０１０  ９
１１０１０−１０１１１１  ９
１１１００−１０１０１０  ９
１１０１１−１１１０１１  ９
１０１００−１０１１１０  ９
１１１１１１−１００１０  ９
１０１１１０−１１１００  ９
０１０１１−１１１０１１  ９
１１１１１１−０１０１０  ９
１００１０−１０１１１１  ９
１０１１１０−０１１１１  ９
１０１１１０−０１０１０  ９
１１１００−１１１１１０  ９
１０１１１０−１０１１０  ９
１０１０１１−１１１１０  ９
１１１０１１−０１１１１  ９
１１１０１１−１１０１０  ９
１０１００−１１１０１１  ９
０１０１１−１１０１１  ９
１００１０−１１１０１１  ９
１１０１０−１１１１１０  ９
１０１０１０−１００１０  ９
１１１０１１−０１００  ９
１１１０１０−１１１００  ８
１１０１１−１０１０１０  ８
１１１０１０−０１０１０  ８
１０１１１１−１０１１１１  ８      １２ビットクラスにおける３番目に高い頻度
１０１０１１−１１１０１０  ８
１１０１０−１０１１１０  ８
１０１０１１−１１１００  ８
１０１０１１−１１０１１  ８
１１１１１１−１１１１０  ８
１１０１１−１０１１０  ８
１１１１０−１０１０１１  ８
１１１１１１−１１０１１  ８
０１１１１−１１１１１０  ８
１１１１１１−１０１１１１  ８
１１０１０−１１１０１０  ８
０１０１０−１１１０１０  ８
１１１１１０−１１０１１  ８
１１１００−１０１０１１  ８
０１０１１−０１０１０  ８
０１０１１−１１１０１０  ８
０１０１１−１０１０１１  ８
１００１１−１１１０１１  ８
１０１０１０−０１０１１  ８
１１１０１１−０１０１１  ８
１０１１１０−１１１１０  ８
１１１０１１−１０１１１１  ８
１００１１−１０１１１０  ８
０１１１０−０１１１０  ８
０１１１０−１１１１１１  ８
１１１０１０−１０１００  ８
１００１０−０１０１１  ８
１１１１１１−０１１１１  ８
１１１１１１−０１１１０  ８
１０１１１１−１００１０  ８
１０１１１１−０１１１１  ８
１００１１−１１１１１１  ８
１１１１１０−１０００  ８
１１１１０−１０１１１１  ７
０１１１１−１０１０１１  ７
１１１０１０−０１１１０  ７
０１１１１−１１１０１１  ７
１１１１０−１０１１１０  ７
０１１１１−０１０１０  ７
１１１１１１−１０１００  ７
１１１１１０−１１１０１０  ７
０１０１０−１０１００  ７
０１０１０−０１１１０  ７
１１１１１１−１１１０１１  ７
０１０１１−１０１０１０  ７
０１１１１−１１１１１１  ７
０１１１０−１１１０１１  ７
１０１０１０−１１１１０  ７
１１０１１−１１１１１０  ７
１０１０１１−１００１１  ７
１０１１０−１１１０１０  ７
１１０１１−１１１０１０  ７
１０１１１０−１１０１１  ７
１０１１１１−０１０１１  ７
１０１０１１−０１０１１  ７
１０１０１０−０１００  ７
１０１１１０−０１０１１  ７
１０１０１０−１１０１０  ７
１０１０１０−１１０１１  ７
１００１１−１０１０１１  ７
１０１１１１−１００１１  ７
０１１１０−１０１１１０  ７
１００１１−１１１０１０  ７
１１１０１０−１００１１  ６
１０１１１１−０１１１０  ６
１１１０１０−１１０１０  ６
０１０１０−１１１０１１  ６
１０１１１１−１０１００  ６
０１１１０−０１０１０  ６
１０１０１０−１０１１１０  ６
１００１０−１１１０１０  ６
０１０１１−１０１１１０  ６
１１１１１０−１１１１１０  ６
１１１１１０−０１１１０  ６
１０１１１０−１０１０１０  ６
１０１１１１−１１０１０  ６
１０１１１０−１１１１１１  ６
１１１１１０−１００１０  ６
０１１１０−１１１０１０  ６
１０１１０−１１１０１１  ６
１１１１０−１０１０１０  ６
１０１００−１１１１１１  ６
０１１１１−１０１０１０  ６
１０１０１１−０１１１０  ６
１０１１０−１００１０  ６
１０１１０−１１１１１０  ６
０１１１１−１０１１１０  ６
１１１１０−１１１０１０  ６
１０１０１１−１０１００  ６
１１０１１−１１１１１１  ６
０１１１１−１０１１１１  ６
１０１０１０−１１１１１０  ５
１０１００−１０１１１１  ５
１０１００−１０１０１０  ５
１１１１１０−１０１０１０  ５
１００１０−１０１１１０  ５
１０１０１０−１１１１１１  ５
１０１０１１−０１１１１  ５
１０１０１０−１０１０１０  ５
０１１１１−１１１０１０  ５
０１１１０−１０１０１０  ５
１０１０１０−１１１０１０  ５
１１１１１０−１０１００  ５
１１１１１０−０１０１１  ５
１１１１１１−１１１１１１  ５
０１０１０−１１１１１０  ５
１０１１０−１０１１１１  ５
１１１１０−１１１１１０  ５
１１１１１１−０１０１１  ５
１０１１１１−１０１０１１  ５
１１１１０−１１１０１１  ５
１０１１１０−１１０１０  ５
１０１１１１−０１０１０  ５
１１１０１１−１１１１０  ５
１０１０１１−１１１１１１  ５
１００１０−１１１１１１  ５
１１０１０−１０１０１１  ５
１１１０１１−１１１０１１  ５
１１１０１０−１０１１１０  ５
１１０１１−１０１１１１  ５
１０１００−１０１０１１  ５
１０１００−１１１０１０  ４
１０１１１０−０１１１０  ４
１１１０１１−１１１１１１  ４
１０１１１０−１００１０  ４
１１１１１１−１１０１０  ４
１１１０１１−１００１１  ４
１１１０１１−１００１０  ４
１１１０１１−１１１０１０  ４
１１１０１１−１１０１１  ４
１０１１１１−１１１１１０  ４
０１０１０−１０１１１０  ４
１０１１１１−１１１１１１  ４
０１０１１−１１１１１０  ４
１０１０１１−００１１  ４
０１０１０−１１１１１１  ４
１１１０１０−１１１０１０  ４
１１１０１０−１１１０１１  ４
１０１１１１−１１１１０  ４
１０１１１１−１０１０１０  ４
１１１１１０−１０１１１１  ４
１１１１１０−１０１０１１  ４
１１１１１０−１１０１０  ４
０１０１１−１０１１１１  ４
１０１１０−１１１１１１  ３
１０１１１１−１１０１１  ３
１０１００−１１１１１０  ３
１１１０１０−１０１１１１  ３
１１１０１０−１０１０１０  ３
１１１１１１−１１１０１０  ３
１０１０１１−１１１１１０  ３
１１１１１１−１０１０１０  ３
１１１１１１−１０１１１０  ３
１０１１１１−１１１０１１  ３
１０１０１１−１０１０１０  ３
１０１１０−１０１１１０  ３
１０１１１１−１１１０１０  ３
１０１０１０−１１１０１１  ３
１０１１１０−１０１０１１  ３
１０１１１０−１０１１１１  ３
１０１１１０−１１１１１０  ３
１１１１１０−１１１１１１  ３
１１１１１０−１１１０１１  ３
１０１０１０−０１１１１  ３
１１１０１１−１１１１１０  ３
１１１０１０−１１１１１０  ２
１１１１１１−１０１０１１  ２
１０１０１１−１０１１１０  ２
１０１０１０−１０１１１１  ２
１１１１１０−１０１１１０  ２
１１１０１０−１０１１０  ２
１１１１１１−１１１１１０  ２
１１１０１０−１１１１１１  ２
０１０１０−１０１１１１  ２
１０１０１１−１０１０１１  １
１０１０１１−１０１１１１  １
１１１０１１−１０１０１１  １
１０１１１０−１１１０１０  １
１１１０１１−１０１１１０  １
１０１１１１−１０１１１０  １
１０１０１１−１１１０１１  １
１０１０１０−１０１０１１  １
１１０１１−１０１０１１  １
１０１１１０−１１１０１１  １
１０１１１０−１０１１１０  ０      Ｂｌａｃｋｈｏｌｅ１  ブラックホール１
図表６０ｂ
図表６０ａの頻度統計値を用いた１２ビットクラスＳＰＵＣＶの頻度カウントの分布
頻度カウント        １２ビットクラスの固有ＳＰＵＣＶの数
０                      １      ＳＰＵＣＶ  １０１１１０−１０１１１０をブラックホール１とする
１                      ９
２                      ７
３                      １６
４                      ９
５                      １０
６                      ４
７                      ２
８                      ４
９                      ０
１０                    ０
１１                    ２      ＳＰＵＣＶ  １１１０１１−１０１０１０及び１１１０１０−１０１０１１のいずれかをブラックホール０とする
合計：６４個の固有コード値
上述したように、ランダムデータセットサイズを小さい値ｆｆ＝９０００に調整して図表６０ａを生成し、且つ図表６０ｂは、図表６０ａを使用する頻度統計値が１２ビットクラスにおけるＳＰＵＣＶの頻度カウントの分布である。図表６０ｂに示すように、最高頻度のカウントが１１個のコード値は２つある。ゼロ頻度カウントを有するブラックホール１とする欠落するＳＰＵＣＶ  １０１１１０−１０１１１０とペアリングするために、第１個又は第２個（即ちＳＰＵＣＶ  １１１０１１−１０１０１０及び１１１０１０−１０１０１１）をブラックホール０として選択する。任意の１つを使用すると、ビット節約数は１１ビットだけであり、且つ従来の方法を使用して計算された２つのブラックホールインジケータのビット消費は１２ビットである。それは明らかに適切な方法ではない。従って、ブラックホールインジケータに必要なビット長を短縮するために別の新しい技術を設計することができる。これも範囲の概念を使用している。
この１２ビットクラスのコード値、即ちブラックホール０である、最高頻度カウントを有するＳＰＵＣＶ  １１１０１１−１０１０１０を使用し、１２ビットクラスのＳＰＵＣＶの最高頻度のために下限値を提供する。２ビットを使用することができ（ここで使用される２進数ビットの数は、処理されているデジタルデータセットから決定される頻度パターン又は規則性に基づいて調整できる）、それにより第２最高頻度カウントの１２ビットコード値が、それに隣接しているビット長に関してどれだけ離れているかをを示すために用いられる。２ビットインジケータは４ビットのビット長スパンを与えることができる。ほとんどの場合に対して十分である。この目的のために十分ではなく、且つ最高頻度の１２ビットコード値が設計及び選択されたビット長の範囲外であると、それを非圧縮性ランダムデータと見なすことができる。従って、ビット００は１１ビット、ビット０１は１２ビット、ビット１０は１３ビット、そして、ビット１１は１４ビットのＳＰＵＣＶに用いられる。ＳＰＵＣＶ  １１１０１１−１０１０１０が１１ビットであるため、それに使用されるインジケータはビット００である。
ブラックホール０として最高頻度を有するコード値、及びブラックホール１として値が欠落するコード値を選択すると、エンコーディングした後、エンコーディングされたコードを解析し、以下の図表６０ｃに示すように１２ビットＳＰＵＣＶの頻度カウントの分布は１になる。
図表６０ｃ
図表６０ａの頻度統計値を用いたエンコーディングされたコードにおける１２ビットクラスのＳＰＵＣＶの頻度カウントの分布
頻度カウント  １２ビットクラスの固有ＳＰＵＣＶの数
０                  ０
１                  ９
２                  ７
３                  １６
４                  ９
５                  １０＋１      ＳＰＵＣＶ  １１１０１１−１０１０１０をブラックホール０とする
６                  ４＋１        ＳＰＵＣＶ  １０１１１０−１０１１１０をブラックホール１とする
７                  ２
８                  ４
９                  ０
１０                ０
１１                ２−１          ＳＰＵＣＶ  １１１０１０−１０１０１１
合計：６４個の固有コード値
この仮定は、ブラックホール０とブラックホール１の３／４ビットのＰＵＣＶと５／６ビットのＰＵＣＶの頻度カウントの分布が、オリジナルの１２ビットのＳＰＵＣＶ  １１１０１１−１０１０１０の比率を維持することを基とする。
上記の説明が正確であると仮定すると、設計された固定のブラックホール０を使用して３／４ビットのＰＵＣＶを吸収し、ブラックホール１を使用して５／６ビットのＰＵＣＶを吸収することができる。変動がないと、エンコーディングされたコードを解析して、３／４ビットのＰＵＣＶの半分と５／６ビットのＰＵＣＶの半分はどちらが大きいことを知ることができる。変更を許可すると、どの１２ビットコード値がブラックホール０であるかを示すために１つのビットを使用することができ（例えば、自然数順序で最初に現れるもの）、後にどのコード値が５つの頻度カウントと６つの頻度カウントの各グループから由来するかを決定し識別した後、ブラックホール１は自然に知られている。５つ及び６つの頻度カウントグループからこの２つのＤＤＢを識別するために、合計５５個の選択肢（即ち、１０＋１＝１１及び４＋１＝５、及び１１＊５＝５５）がある。そのため、それは５〜６ビット（ＡＡＢエンコーディングを使用する）を使用してこのような識別を行う。従って、ブラックホール０の頻度カウントを示す２ビット、どのＤＤＢコード値が値を欠落させるコード値であるかを示す１つのビット、及び２つのＤＤＢを識別するための５〜６ビット、合計８〜９ビットを使用する。従って、２〜３ビットに相当する１１ビットから８〜９ビットを引いたビット節約数が得られる。
しかしながら、２つのＤＤＢがエンコーディングされたコード内のどこ（即ち、どの頻度カウントグループ）に見つかるかについてある程度の変動を許可することができる。可能なグループは５と６個の頻度カウントグループ、４と７個の頻度カウントグループ、３と８個の頻度カウントグループ、２と９個の頻度カウントグループ、１と１０個の頻度カウントグループ、合計５個の可能なグループである。しかしながら、２／９グループ及び１／１０グループは排他的であることが極めて確実的であるため、４つの可能なグループが依然として存在する。そのため、そのような可能性を示すために２つ以上のビットを与えることができる。しかしながら、２ビットを与えることは、２つのＤＤＢが５／６と６／７の頻度カウントを超えるグループにある機会が少ないので、必要とされないことがある。且つ、それらは再び非圧縮性ランダムデータとして分類することができる。従って、１ビットを使用して、２つのＤＤＢが入る頻度カウントグループのこのような変動を可能にすることができる。
ブラックホール０及びブラックホール１の２つの特殊コードインジケータのビット消費が、異なるグループに入ることは、５／６頻度カウントグループ用の５〜６ビット、４／７頻度カウントグループ用の４〜５ビット（１０＊３）である。
従って、頻度カウントグループが２つのＤＤＢに用いられると、ビット節約数は２〜３から１〜２ビットまで１ビット削減される。グループが４／７である場合、ビット節約数は、２〜３ビットからＤＤＢの頻度カウントグループを示すための１ビットを引き、且つ２つのＤＤＢの特殊コードインジケータのビット消費の減少による１ビットの増加が発生するため、同じままである。従って、ビット節約数は、１〜２ビット又は２〜３ビットのいずれかである。
従って、これは、処理されているデジタルデータセットから収集された情報（即ち、頻度カウントグループに関する統計データ）を使用して、例えばＤＤＢ用の特殊コードインジケータ等のインジケータビット消費を削減する技術である。
圧縮データと非圧縮データを区別するためのインジケータとして使用するために１ビットを与えると、結果は損益分岐点になるか、１〜２ビットの節約になる。使用されているエンコーダによってサンプリングされたＰＵＣＶの頻度分布の規則性を考えると、２つのＤＤＢが３／８グループに分類される可能性は非常に小さいか又は低いため、２つのＤＤＢの分類の確率の順位は、まず５／６グループ、後に４／７グループ、次に３／８グループ、さらに２／９グループ又は１／１０グループに入る。そして、上記のように、ＤＤＢが５／６及び４／７の頻度カウントグループのグループに入らないと、ランダムデータセットは非圧縮データとして分類される。これらのデータは、上記圧縮／非圧縮データビットを使用する。
ｆｆ＝９，０００を用いて上記頻度分布の実例を生成することによって約８つの実例を生成し、値を欠落させていない１２ビットのコード値が１しか存在しないことが判明している。従って、これまでに紹介した技術を用いたビット節約の可能性がより高いことを意味する。
別の実施形態では、１１ビットクラスの最高頻度のコード値ＳＰＵＣＶ  １０１０１０−１０１００をブラックホール０として、ブラックホール１、ＳＰＵＣＶ  １０１１１０−１０１１１０とペアリングすると同時に、適切な場合にも同様の方法でインジケータビット消費を削減する技術を使用する。
ＣＨＡＮフレームワーク下で設計された異なるエンコーダ下でサンプリングされた異なるサイズのランダムデータの頻度分布に関するより規則的なパターンがマージされると予想され、それらの確認された規則に対して、より細かい法則及び新しい技法が開発される。これらのビットインジケータの用途及びその各自のサイズは、異なる実施形態では調整され、調整は、ランダム又は非ランダム、デジタルデータセットのサイズ、特定の頻度パターン又は規則に関わらず、ＣＨＡＮフレームワークで設計された異なるエンコーダを使用することによって確認される。
従って、本発明に導入された技術は、ランダムデータを圧縮する際にそれらの有用性を示した。また、これらの技術は、ランダムデータセットから識別された規則パターンに関する情報を参照として使用して、非ランダムデータを圧縮し、解凍することにも適用される。
（２）非ランダムデータの圧縮及び解凍
以上の（１）に示される方法を用いてランダムデータを圧縮することができるので、非ランダムデータを圧縮するために同じ方法を使用することもできる。特殊コードの指定を決定する際に、非ランダムデータの性質を考慮する必要がある。基本的には、この場合に、ビット使用節約を達成するという目的が同じであるため、特殊コードを指定するための論理は、ランダムデータを圧縮する場合と同様である。しかしながら、ランダムデータは非ランダムデータが従わないいくつかの規則性に従っており、且つ非ランダムデータセットのデータ割り当ては非常に異なる可能性があり、これは特殊コードを指定する時にいくつかのそのような変化を満たすべき原因であり、且つそのような変化に適応するためのより適切な技術の使用がより望ましい。従って、特殊コードを指定するために、適切な場合、以下の法則を作成し、それに従うことができる。
（２ａ）非ランダムデータセット内のＰＵＣＶが欠落する可能性：
非常に少ないランダム又は非ランダム２進数ビットのセクションを処理することは、ビット節約を達成することができない可能性があり、ヘッダーに記録されるインジケータに使用されるビット消費を補償することに十分ではない可能性がある。従って、同様に、非ランダムデータのセクションサイズは非常に小さいべきではない。しかしながら、非常に大きなサイズであっても、非ランダムデータセットは、データセット内に１つ以上のＰＵＣＶが欠落する可能性がある。そして、このようなＰＵＣＶが欠落した現象は、適切な場合には十分に活用することができ、その結果として、そのような欠落したＰＵＣＶを特殊コード、ブラックホール１又は他のＳｃｏｄｅｓとして指定することができる。ブラックホール１として機能するために、基準について、選択されるコード値は、選択されたブラックホール０よりも１ビット長いべきではなく、原因は、ブラックホール１が前又は後のコード値を吸収するためのＡＡＢコードを使用し１ビットだけ節約することができることである（現在の議論には、ブラックホールがコード値を単方向に吸収することを仮定し、それに応じて、ブラックホールによる双方向吸収のための規則を調整することができる）。そのため、ビット長が１ビット長いブラックホール１としてＳｃｏｄｅ  ０を使用することは、データ拡張を意味し、データ圧縮の目的を達成する方向に向けない。従って、ランダム及び非ランダムデータの両方に対してデータ圧縮を行うための法則（ブラックホールと連続コード代用技術の使用によって影響されない他のコード値が同じビットサイズのエンコーダを使用してエンコーディングされると仮定して、読み取りエンコーダ自体は同じビットサイズのエンコーダクラスの書き込みエンコーダとして使用され、上記のように、エンコーディングするために読み取りエンコーダではなく、同じビットサイズのエンコーダを使用することは、データ拡張もデータ縮小もない暗号化の形式を表す）について、ブラックホールを使用することから生じるビット利得は、代用コードの使用及びヘッダーで使用されるビット消費から生じるビット損失よりも大きくなければならない。
従って、前記トップレベル法則下で、圧縮及び解凍されるデジタルデータセットのデータ割り当て、及びデータ処理が使用されるアクティビティの目的に関する実際の状況に応じて、他の法則を緩和することができる。欠落しているＰＵＣＶがない場合を論じた後に、ＰＵＣＶが欠落する非ランダムデータセットを圧縮するために使用することができる技術についてさらに論じるべきである。
（２ｂ）非ランダムデータセットにＰＵＣＶが欠落しない：
上述したようなデジタルデータブラックホール及び連続コード代用がランダムデータの圧縮に用いられるため、このような技術を非ランダムデータの圧縮に使用することもできる。非ランダムデータは大きく変動し、予測もできないが、同じビットサイズのランダムデータセット（例えば実例に使用された８０，０００個の２進数ビット）の頻度分布統計値を参照（上記のようにＣＨＡＮフレームワークで定義されたエンコーダを使用して取得される）として使用して閲覧及び比較すると、デジタルデータブラックホール及び連続コード代用技術を使用する方法は、ＰＵＣＶを欠落させない場合に、非ランダムデータセットを圧縮するためにも使用されると結論づけ、この結論は合理的である。ＰＵＣＶが欠落していない場合、ブラックホール１として機能する追加のコード値を提供するには、コード分割の有無に関わらず連続コード代用を使用する必要があり、それによりブラックホール０と連携してＡＡＢコーディングを使用して他のコード値を吸収する。非ランダムデータセット内の任意のビットクラス内で最高頻度を有するコード値の頻度は、ランダムデータセットの同じビットクラス内の対応するコード値の頻度よりもはるかに高い可能性があると予想される。１つのビットクラスに対してそうでなければ、そのような現象は別のビットクラスにおいて見出されるであろう。頻度が最低のそれらのコード値についても同じであると言える。また、ランダムデータセットの使用から推定される参照を使用して、以下の規則に従うことができる。
（ｉ）非ランダムデータセット用の１対のブラックホール０とブラックホール１の頻度差の範囲は、同じサイズのランダムデータセットよりも大きいべきであり、又はランダムデータセット内の対応する１対の頻度差は、ブラックホール０の頻度がブラックホール１の頻度の４倍以上でなければならず、且つブラックホール１のビット長がブラックホール１のビット長よりも１ビット以上長くてはいけなく、つまり、ブラックホール１は、処理中のデータセットで発生する頻度が少ない可能性があり、本明細書における規定よりもビット長が短くなる可能性があり、これは、他のコード値がこれらの要件を満たすことが発見すると、これらのコード値がブラックホール１としても使用できることも意味する。
ブラックホール０の頻度＞＝ブラックホール１の頻度の４倍
それに加えて
ブラックホール０のビット長がブラックホール１のビット長よりも１ビット短くない
（ｉｉ）この場合に処理中のデータセットにコードが欠落しないので、ブラックホール１のコード値は、ブラックホール０を代用するための借用使用されるコード値（即ち、それ自体はＳｃｏｄｅ  ０である）であり、そのうち吸収されたコード値の半分は、対応するＡＡＢコードによって表され、あるコード値は別のコード値で代用される必要がある。上記のように、これは連続コード代用が役立つようになるべき場合である。この連続コード代用のための法則は以下のとおりである。
合計された全てのＳｃｏｄｅの合計頻度＝＜Ｓｃｏｄｅ  ０の頻度
それに加えて
各連続的なＳｃｏｄｅの頻度は＝＜代用されるコード頻度の半分であるべきである
それに加えて
各連続的なＳｃｏｄｅのビット長は、代用されるコードのビット長よりも１ビット長くなるべきではなく、それがより長く、１ビット増加すると、１ビット増加するたびに、そのような連続的なＳｃｏｄｅの頻度がさらに半分減少すべきである。
全てのＳｃｏｄｅの合計頻度が低いほど、ビット長が短いほど、以上の指定法則がよくなる。上記の法則を満たすと、他のコード値をＳｃｏｄｅとして使用することもできる。
上記のようなデジタルデータブラックホール及び連続コード代用の方法を使用して、関連する非ランダムデータセットが圧縮処理できないことは稀である。適切な場合には、これに関連して、２０１７年２月２２日に本発明の優先権主張の下に出願されたＰＣＴ／ＩＢ２０１７／０５０９８５を参照することができる。
上記の法則を使用した後、要件を満たすブラックホールを識別することができない可能性があり、発生するコード値が、特定のビットクラスにかなり集中していることは確かであり、例えば３ビットクラス及び単一コード値（即ち０００）に集中する。この場合に、ＰＵＣＶ  ０００を圧縮するために、次のＡＡＢコードテーブルを使用して選択することが検討できる。
図表６１ａ
ＰＵＣＶ  ０００に高度に集中しているコード値を生成するためのＡＡＢコードテーブル
０
１０００
１００１
１０１０
１０１１０
１０１１１
１１０００
１１００１
１１０１０
１１０１１０
１１０１１１
１１１０００
１１１００１
１１１１０００
１１１１００１
１１１１０１００
１１１１０１０１
１１１１０１１０
１１１１０１１１
１１１１１０００
１１１１１００１
１１１１１０１０
１１１１１０１１
１１１１１１００
１１１１１１０１
１１１１１１１０
１１１１１１１１
図表６１ｂ
コード値がＰＵＣＶ  ０００に集中するためのＡＡＢコードテーブルは、４ビットのＰＵＣＶで欠損が発生する時に適用され、数が少ない４ビットのＰＵＣＶを有するデータセットに適用される。
００
０１０００
０１００１
０１０１０
０１０１１
０１１００
０１１０１
０１１１０
０１１１１
１００００
１０００１
１００１０
１００１１
１０１００
１０１０１
１０１１０
１０１１１
１１０００
１１００１
１１０１０
１１０１１
１１１００
１１１０１
１１１１００
１１１１０１
１１１１１０
１１１１１１
図表６１ｃ
コード値がＰＵＣＶ  ０００に集中するためのＡＡＢコードテーブルは、５ビットのＰＵＣＶで欠損が発生する時に適用され、数が少ない５ビットのＰＵＣＶを有するデータセットに適用される。
００
０１００
０１０１
０１１０
０１１１
１０００
１００１
１０１０００
１０１００１
１０１０１０
１０１０１１
１０１１０００
１０１１００１
１０１１０１０
１０１１０１１
１０１１１００
１０１１１０１
１０１１１１０
１０１１１１１
１１１０００
１１１００１
１１１０１０
１１１０１１
１１１１００
１１１１０１
１１１１１０
１１１１１１
図表６１ｄ
コード値がＰＵＣＶ  ０００に集中するためのＡＡＢコードテーブルは、６ビットのＰＵＣＶで欠損が発生する時に適用され、数が少ない６ビットのＰＵＣＶを有するデータセットに適用される。
００
０１００
０１０１
０１１０
０１１１
１０００
１００１
１０１００
１０１０１
１０１１０
１０１１１
１１０００
１１００１
１１０１０
１１０１１
１１１００
１１１０１
１１１１００
１１１１０１
１１１１１０００
１１１１１００１
１１１１１０１０
１１１１１０１１
１１１１１１００
１１１１１１０１
１１１１１１１０
１１１１１１１１
図表６１ｅ
コード値がＰＵＣＶ  ０００に集中するためのＡＡＢコードテーブルは、残りのＰＵＣＶは頻度の減少に従って降順でコード値が割り当てられる。
００
０１００
０１０１
０１１０
０１１１
１００００
１０００１
１００１０
１００１１
１０１００
１０１０１
１０１１０
１０１１１
１１０００
１１００１
１１０１００
１１０１０１
１１０１１０
１１０１１１
１１１０００
１１１００１
１１１０１０
１１１０１１
１１１１００
１１１１０１
１１１１１０
１１１１１１
上記の５つのバージョンのＡＡＢコードテーブル設計は、コード値のデータ割り当てに応じて応用する必要があるＡＡＢコードタイプの範囲を制限するためにコード値を複数のセクション（例えば、図表６１ｂ、図表６１ｃ及び図表６１ｄでコード値ビットサイズによって分類する）に分割することができることを示す。従って、それが望ましく適切であると発見する場合には、より多くのこのようなＡＡＢコードテーブルを設計することができ、それにより上記の法則及び図表６１にリストされるＡＡＢコードテーブルを補足する。上記の法則及び図表６１は、非ランダムデータを圧縮するためにデジタルデータブラックホール及び連続コード代用技術とＡＡＢコーディング技術をどのように設計及び開発するかを証明するために作成され、それは以上の説明が網羅的であることを意味するものではなく、常に最適化するために設計及び開発し、それらを補足する。本明細書で使用されるＡＡＢコードテーブルを調整する技術は、ＤＤＢを使用して得られるビット使用利得の最大化を達成するためにＤＤＢに関連するＡＡＢコードテーブルにも適用される。設計によれば、ビットの使用数が増加するＤＤＢに応じて、それによって吸収されるために頻度がより高いコード値の半分（又は一部）を該ＤＤＢに割り当てる必要がある。これは、非ランダムデータセットに対して、コード値の不均一な割り当てのために、処理されているデータセットのコード値の現在の頻度分布に従って、各ＤＤＢペアに割り当てられる２つの半分を調整しなければならないことを意味する。従って、ＡＡＢコードテーブルもそれに応じて調整する必要がある。従って、処理されている非ランダムデータセットのデータ割り当てに従って適切に調整する上記の法則及び上記ＡＡＢコードテーブルに基づいて、ＰＵＣＶが欠落しない非ランダムデータのほぼ全ての場合をカバーするのに十分であることは明らかであり、上記のＡＡＢコードテーブルは、処理されている非ランダムデータセットのデータ割り当て場合に従って適切に調整される。また、例えば８０，０００個の２進数ビットから１０倍又は１００倍に増やす等、セクションサイズを調整することもでき、これは、よりよいビット節約の機会を確実に提供する。非ランダムデータについても、上記の最良の選択肢を使用すると１つのセクションのデータを圧縮しビット節約使用数の減少をもたらし、これはデジタルデータ入力全体にビット使用の利得が存在しないことを意味しない。そのため、法則の補足の機会とさらなる最適化のためのＡＡＢコードテーブルを考慮すると、先ほど説明された方法は、ＰＵＣＶが欠落していない非ランダムデータを圧縮するには十分である。
（２ｃ）ＰＵＣＶが欠落している非ランダムデータセット：
ＰＵＣＶが欠落している非ランダムデータセットを圧縮することは比較的簡単で、以下の技術を使用することによって常に達成することができる。
（ｉ）処理されている非ランダムデータセットに欠落するコード値をブラックホール１として使用して、前記ブラックホール１は、同じビットクラス又は１ビット減少したビットクラスでもブラックホール０とペアリングされ、該ブラックホール０が関連するクラスで最大頻度コード値を有し、コード値が欠落した発生頻度はゼロであるため、それを代用するために任意の代用コードを必要としない。
（ｉｉ）処理されている非ランダムデータセットに欠落したＰＵＣＶを、より長いビット長の別のコード値で代用し、そのような別のコード値は処理されているデータセットに存在する。
さらに、適切な場合に、ランダムデータと非ランダムデータを圧縮するために、１対以上のＤＤＢを使用することを検討する必要がある。上記の方法及び技術を使用して、関連ヘッダーで使用される特殊コードのための関連インジケータを追加するか、又は適切な場合に既に論じたように使用されるエンコーダ及びデコーダにそれらを埋め込む必要がある。エンコーディング又はデコーディングされているデータセットがランダムデータセット又は非ランダムデータセットであるか否か、またどの対のＤＤＢが使用されたか、又はどのＡＡＢコードテーブルが使用されたかを示すためにシナリオインジケータ等の他のインジケータも同じ方式で使用される。
上記の実例ではＣＨＡＮフレームワークで設計されたＭａｘ３エンコーダを使用したが、他のＭａｘ数を使用したエンコーダ設計も試みることができる。従って、他の特徴の他、最も重要な区分特徴として、ＣＨＡＮフレームワークで設計されたエンコーダと他のエンコーダを区別するための基準は、コード単位、処理ユニット及びスーパー処理ユニットの固有コード値であり、使用される設計に応じて複数のビットサイズ又はビット長を有するか、又は異なるビットサイズ又はビット長を有する。
従って、上記で概説した方法及び技術は、ランダムであるか非ランダムであるかに関わらず、あらゆるタイプのデジタルデータを周期的に圧縮することができる（数千個の２進数ビット未満のランダムデータを含まず、厳密な制限はここでは重要ではない）。従って、上記内容を参照しながら、ユニバーサルエンコーダが本明細書において発明された。
【０１３５】
要するには、結論はまた次のとおりである。
理解している人がその数を数える。
【発明の効果】
【０１３６】
入力されるデジタル情報に関する仮定がないため、ランダム数又は均一に割り当てる数を問わず、どんな数でも上記の制限を条件とするリサイクル内に暗号化又は圧縮することができる。情報が爆発する現在、割り当てについてランダムであるか否かを問わず、デジタルデータの暗号化及び圧縮を周期的に可能にする方法は、生活のあらゆる面でデジタルデータの交換及び格納を利用することに頼る人類全体に大きく貢献し、それは確かに宇宙での探索及び転居のための人間の努力に貢献する。
【発明を実施するための形態】
【０１３７】
これまで本発明に導入された最良の実施形態は、適切な場合にランダムデータ及び非ランダムデータを圧縮するためにデジタルデータをコード代用（連続又は非連続）と共に使用することである。そして、非ランダムデータについては、処理中のデジタルデータセットのデータ割り当てタイプに適応するように、他の法則及びＡＡＢコードテーブルを設計及び開発することができる。これは任意のデジタルデータセットが記述された制限に達するまで周期内にエンコーディング及びデコーディングを行うことができるという明確な証明を提供し、前記証明は、情報理論における鳩ノ巣原理の神話を終わらせ、そして今鳩ノ巣がブラックホールに合う。それは他のモードでの他のＣＨＡＮコーディング技術が同じ結果及び同じ証明を生成することができないことを意味しない。他のモードを使用しても同じ結果及び同じ証明を提供することができることが予想される。
【０１３８】
他のモードは、交互に不均一器と均一器を使用してエンコーディング及びデコーディングすること、スーパー処理ユニットを使用し、特にこのようなサブセクションのＡＩ区別を使用するための基準を設定する技術を使用することにより、ランダムデータセットを圧縮の影響を受けやすい不均一データのサブセクション又はサブユニットに分解すること、及びサイズが異なる処理ユニットを使用し、デジタルデータ値の内容の特性又は特徴に基づいて、終了条件及び分類の基準を適切に使用してエンコーディング及びデコーディングし、且つ、特に暗号化スキーマの設計を容易にするために、数式の使用及びそれらの対応する値の配置によりエンコーディング及びデコーディングを行う。
【０１３９】
最も重要なことは、上記の議論から分かるように、ＣＨＡＮフレームワークが、データがランダムであるか否かに関わらず順序を作成するために使用できるフレームワークを提供することであり、それにより該データから、統計情報を生成し、該統計情報は、処理中の特定のデータセットを記述するスキーマ［スキーマ及び設計はコード単位、処理ユニット、スーパー処理ユニットの設計（一部がより大きいサイズのスーパー処理ユニットである）、エンコーディングされていないコード単位、このタイプの情報を使用するために設計された基本インジケータを含むヘッダー、及びエンコーダ及びデコーダに内蔵されるプログラミングロジックを含み、それによりＣＨＡＮコードを生成して、ＣＨＡＮコードファイル形式のデジタル２進数ビットで表示する］に関連付けられ、且つ適切な場合には、ＣＨＡＮコーディング技術の使用を可能にし、圧縮及び暗号化のためにエンコーディング及びデコーディングする。上記のように、このような前述の統計情報は、コード単位、処理ユニット、スーパー処理ユニットのサイズを含み、それらの頻度分布、データコード値のランク及び位置、及び数式で表されるような異なるデータコード値間の関係等の他の特徴情報、終了値及び終了条件、ビット０とビット１との間の比率、データ範囲等を含む。原因は、データセットのそのような特徴又は特性は、ＣＨＡＮフレームワーク下で記述できるため、エンコーディング及びデコーディングのために関係又は派生特性を作成する。例えば、１つの特別に有用な特性は、絶対アドレス分岐コードであり、例えば、それ自体でコード単位定義として、又は内容コードとして、又はシナリオ分類コードとして、及びＡＩ区別を行うための基準として使用する内容コードのトリオのサフィックスとして使用され、特に、デジタルデータブラックホールと連続コード代用を組み合わせて使用し、それによりランダムデータの圧縮及び解凍を正確且つロスレスに行うことができる。そのため、ＣＨＡＮフレームワークは、任意のデータ割り当てに属する任意のデータセットのために順序を作成し、設計段階中に大きな柔軟性を可能にするリッチなフレームワークであり、これはフレームワーク下で記述可能にされるため、データ値間の差を捕捉するための技術が開発され、これは、例えばデータ圧縮の再循環を可能にする目的でデータ割り当ての不均一性を増加させるために、データセットのビット０とビット１との間の比率を変えるサイクルを通し、又は、対応するデジタルデータセットを（それ自体又はそれをさらに圧縮する前に）暗号化するため、処理ユニットの異なるコンポーネント間の関係を表す数式を設計することにより、真面目に操作することができる。
【０１４０】
どのモードを使用するかについて、暗号化又は圧縮、又はその両方のためのエンコーディングの主な目的によって決められる。ただし、サイクルでの再圧縮は簡単に実行できるため、区別することは重要ではない。
【０１４１】
本質的に、本発明の実施形態は以下のように特徴付けられる。
（１）ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、コード単位で構成され、前記コード単位は、デジタルデータセットの２進数ビットのビットコンテナの基本ユニットとして使用され、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、コード単位は、主にコード単位が収容又は表現するように定義されるデータ値の最大可能数（コード単位の値サイズ）によって分類され、ここでコード単位の各可能な固有値が同じビットサイズ又は異なるビットサイズを持つ可能性があり、且つコード単位は、後にコード単位の全ての可能な固有データ値が占めるビット数（即ち、コード単位の各可能な固有データ値が占めるビットサイズの合計）によって分類され、且つコード単位はヘッドデザイン（即ちそれが０ヘッドデザインであるか１ヘッドデザインであるか）によってさらに分類され、各実施形態によれば、ＣＨＡＮフレームワーク下で特定の値サイズのコード単位が異なる定義及びバージョンを有することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
（２）ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、処理ユニットで構成され、前記処理ユニットが、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、サブユニットとして一定数のコード単位によって構成されることを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
（３）ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、スーパー処理ユニットで構成され、前記スーパー処理ユニットが、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、サブユニットとして一定数の処理ユニットによって構成されることを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
（４）ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、エンコーディングされていないコード単位で構成され、前記エンコーディングされていないコード単位が一定数の２進数ビットで構成され、これらの２進数ビットが、１つの処理ユニットのサイズにならないため、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、エンコーディングされていないコードに保持するか又はそのまま保持することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
（５）ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、エンコーディングされていないコード単位で構成され、前記エンコーディングされていないコード単位が一定数の２進数ビットで構成され、これらの２進数ビットが、１つの処理ユニットのサイズにならないため、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、エンコーディングされていないコードに保持するか又はそのまま保持することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
（６）ランダムであるか否かに関わらず、任意のデジタルデータセットから作成されたデータの順序又はデータ順序又はデータ構造又はデータ組織が、エンコーディング及びデコーディングの目的で処理のために選択された設計及びスキーマに従って、コード単位、処理ユニット、スーパー処理ユニット及びエンコーディングされていないコード単位及びそれらの使用での組み合わせから派生された特性又は特徴又は関係で構成されることを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
（７）任意のデジタルデータセットの特性又は特徴又は関係を記述するために使用される記述言語は、コード単位、処理ユニット、スーパー処理ユニット、及びエンコーディングされていないコード単位の特性又は特徴又は関係を記述するための用語を使用することを特徴とするＣＨＡＮフレームワーク、ランダムであるか否かに関わらず、デジタルデータ情報から順序を作成する方法。
（８）ＣＨＡＮフレームワーク下でエンコーディング及びデコーディングを目的としてデータを処理するための技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（９）ＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成されたＣＨＡＮコードを特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１０）範囲を有する絶対アドレス分岐技術を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１１）ＣＨＡＮフレームワーク下で作成されたデータ順序の処理ユニットのコード単位間の関係を表すための数式を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１２）数式で表される値又はエンコーディングされたコード、及びコード単位、処理ユニット、スーパー処理ユニット、及びエンコーディングされていないコード単位のそれらの値又はエンコーディングされたコードを異なる位置で順に配置する配置技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１３）０ヘッドデザイン又は１ヘッドデザイン又はその両方をペアリングするビットパターンを代表する設計で、エンコーディング及びデコーディングの目的で処理のためにデータ値を分類又はグループ化するために使用される、処理中のデジタルデータの特性又は特徴に割り当てる分類技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１４）エンコーディング及びデコーディングの目的で処理のためにデータ値を分類又はグループ化するための処理中のデジタルデータのデータ値の順序付け及び位置に関する特性又は特徴を使用する分類技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１５）エンコーディング及びデコーディングの目的でデジタルデータセットを処理するためにコード交換、コード再割り当て、及びコード再記入を含む技術のいずれか１つを使用することによって、固有データ値及び固有アドレスコードを分類スキームの１つのクラスから別のクラスへ再割り当てするコード再割り当てを使用する分類技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１６）エンコーディング及びデコーディングの目的で処理するためにコード昇格、コード降格、コード省略、及びコード復元を含む技術のいずれか１つを含むコード調整技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１７）エンコーディング及びデコーディングの目的で処理するために終了条件又は終了値を使用して処理ユニット又はスーパー処理ユニットのサイズを定義する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１８）デジタルデータ値又はエンコーディングされたコード値のリーダーとしてコード単位定義を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（１９）デジタルデータ値又はエンコーディングされたコード値のライターとしてコード単位定義を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（２０）エンコーディング及びデコーディングの目的で処理するためにスーパー処理ユニットを使用して少なくとも１つのサブセクションがランダムではないデータのサブセクションにデジタルデータセットを細分化する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（２１）特定のクラスのスーパー処理ユニットに現れる値エントリの数等の分類条件を使用して、デジタルデータセットのスーパー処理ユニットを２つ以上のクラスにさらに分類することにより、エンコーディング及びデコーディングするためにこれらのクラスの各データ割り当てに適したマッピングテーブルを設計することにより、これらのスーパー処理ユニットの各データ値のデータ割り当てに適したそれぞれのマッピングテーブルを使用することによりこれらのスーパー処理ユニットの各データ値をエンコーディング及びデコーディングし、デコーディングするためにこれらのクラスのスーパー処理ユニットを区別するためにインジケータを使用し、そのようなインジケータはこれらのスーパー処理ユニットのそれぞれのヘッダー又は単独したＣＨＡＮコードファイルのように他の場所に格納されることを特徴とする（２０）に記載の方法。
（２２）特定のクラスのスーパー処理ユニットに現れる値エントリの数等の分類条件を使用して、デジタルデータセットのスーパー処理ユニットを２つ以上のクラスにさらに分類することにより、且つエンコーディング及びデコーディングするためにこれらのクラスの各データ割り当てに適したマッピングテーブルを設計し、これらのスーパー処理ユニットの各データ値のデータ割り当てに適したそれぞれのマッピングテーブルを使用することによりこれらのスーパー処理ユニットの各データ値をエンコーディング及びデコーディングし、そしてスーパー処理ユニットのクラスのデータ割り当てに適した基準及びエンコーディング及びデコーディング用の対応するマッピングテーブルを設定することにより、インジケータの使用が省略できるように、人工知能によるスーパー処理ユニットのクラス間での区別を行うためのエンコーディングされたコードを評価するために用いられることを特徴とする（２０）に記載の方法。
（２３）特定のクラスのスーパー処理ユニットに現れる値エントリの数等の分類条件を使用して、デジタルデータセットのスーパー処理ユニットを２つのクラスにさらに分類することにより、且つこれらのクラスの各データ割り当てに適したマッピングテーブルを設計することによりエンコーディング及びデコーディングし、そのためこれらのマッピングテーブルのうちの少なくとも１つが機能することができ、従って、より不均一器として機能するように選択され、且つそのような不均一器がまたコード再割り当てを使用して調整し、前記コード再割り当てが少なくとも１つのクラスのスーパー処理ユニットのデータ値のデータ割り当てを利用することができ、それによりコード再割り当てによるコード調整後の不均一器マッピングテーブルが機能することができ、従って少なくとも１つのクラスのスーパー処理ユニットのコンプレッサのマッピングテーブルとして機能するように選択され、且つ１番目のサイクルに不均一器を使用して全てのスーパー処理ユニットをエンコーディングし、その後にコンプレッサを使用して少なくとも１つのクラスのスーパー処理ユニットをエンコーディングし、そのうち処理中の対応するスーパー処理ユニットのデータの圧縮が２番目のサイクルにおいて実行可能であり、即ち１番目のサイクルに不均一器を使用してエンコーディングし、且つ２番目のサイクルにコンプレッサを使用してエンコーディングし、それによりそれらの圧縮不可能なデータを含むスーパー処理ユニットが不均一器だけを使用してエンコーディングし、且つデコーディングする時に、これらのスーパー処理ユニット中の各データ値のデータ割り当てに適した対応するマッピングテーブルを使用してこれらのスーパー処理ユニット中の各データ値をデコーディングし、それにより１番目のデコーディングサイクルに、不均一器のエンコーディング及びコンプレッサのエンコーディングにより形成されたエンコーディングされたコードがデコーディングされ、コンプレッサのエンコーディング層のエンコーディングがデコーディングされる可能性があり、且つ２番目のデコーディングサイクルに、全てのスーパー処理ユニットの不均一器によってエンコーディングされたコードのみからなるエンコーディングされたコードが、不均一器のデコーダによってデコーディングされ、且つスーパー処理ユニット中の全てのクラスのデータ割り当てに適した基準とエンコーディング及びデコーディング用の対応するマッピングテーブルに適した基準を設定することにより、エンコーディングされたコードを評価し、インジケータの使用が省略できるように、人工知能を応用してスーパー処理ユニットの各クラス間での識別作業を行うことを特徴とする（２０）に記載の方法。
（２４）マッピングテーブルを構築し、前記マッピングテーブルの固有コードアドレスを使用し、デジタルデータ入力の固有データ値を１対１マッピング方式でマッピングし、不均一器エンコーダ及び不均一器デコーダの技術を確立し、そのため固有データ値によって使用されるビット数と、対応するマッピングされてペアリングされた、対応しマッピングされた固有テーブルコードアドレスによって使用されるビット数は同じであり、エンコーディング及びデコーディングのために前記マッピングテーブルを使用することを特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（２５）エンコーディング及びデコーディングの目的で処理するために不均一器エンコーダ及び不均一器デコーダを使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（２６）エンコーディング及びデコーディングの目的で処理するために不均一器エンコーダ及び不均一器デコーダを均一器エンコーダ及びデコーダ又はコンプレッサ又はデコンプレッサと共に使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（２７）データ割り当てを変更する場合に、処理中に使用される終了条件に従って、処理ユニット又はスーパー処理ユニットのサイズを動的に調整する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（２８）処理中のデータ値のデータ割り当てパターンに基づいてコード単位定義を動的に調整する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（２９）エンコーディング及びデコーディングの目的で処理するためにＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成された分類コード及び内容コードを特徴とするＣＨＡＮコード。
（３０）エンコーディング及びデコーディングの目的で処理するために、ＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成された分類コード、内容コード及びエンコーディングされていないコード単位を特徴とするＣＨＡＮコード。
（３１）ヘッダー、分類コード及び内容コードが、エンコーディング及びデコーディングの目的で処理するためにＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成され、それにより前記ヘッダーがＣＨＡＮコーディング技術の使用から生じるインジケータを含み、それによりエンコーディング及びデコーディングのために処理することを特徴とするＣＨＡＮコード。
（３２）ヘッダー、分類コード、内容コード及びエンコーディングされていないコード単位が、エンコーディング及びデコーディングの目的で処理するためにＣＨＡＮコーディング技術を使用して任意のデジタルデータセットから作成され、それにより前記ヘッダーがＣＨＡＮコーディング技術の使用から生じるインジケータを含み、それによりエンコーディング及びデコーディングのために処理し、このインジケータが、チェック及びインジケータ、ＣＨＡＮコードファイル署名、マッピングテーブルインジケータ、サイクル数インジケータ、コード単位定義インジケータ、処理ユニット定義インジケータ、スーパー処理ユニット定義インジケータ、最後識別コードインジケータ、シナリオ設計インジケータ、不均一器／均一器インジケータ、リサイクルインジケータ、頻度インジケータ、特殊コードインジケータ、セクションサイズインジケータ、デジタルデータブラックホールタイプインジケータ及び圧縮／非圧縮データインジケータのうちのいずれか１つを含むことを特徴とするＣＨＡＮコード。
（３３）処理するためのＣＨＡＮコーディング技術が埋め込まれることを特徴とするＣＨＡＮフレームワークで設計されたエンコーダ、デコーダ及びコーダ。
（３４）処理するためのＣＨＡＮコーディング及びヘッダーインジケータ技術が埋め込まれ、このインジケータが、チェック及びインジケータ、ＣＨＡＮコードファイル署名、マッピングテーブルインジケータ、サイクル数インジケータ、コード単位定義インジケータ、処理ユニット定義インジケータ、スーパー処理ユニット定義インジケータ、最後識別コードインジケータ、シナリオ設計インジケータ、不均一器／均一器インジケータ、リサイクルインジケータ、頻度インジケータ、特殊コードインジケータ、セクションサイズインジケータ、デジタルデータブラックホールタイプインジケータ及び圧縮／非圧縮データインジケータのうちのいずれか１つを含むことを特徴とするＣＨＡＮフレームワークで設計されたエンコーダ、デコーダ及びコーダ。
（３５）ＣＨＡＮコードを含むデジタル情報ファイルであるＣＨＡＮコードファイル。
（３６）ヘッダー及びその中に含まれるインジケータを含む、ＣＨＡＮコーディング技術による使用のための追加情報を含むデジタル情報ファイルを含み、このインジケータが、チェック及びインジケータ、ＣＨＡＮコードファイル署名、マッピングテーブルインジケータ、サイクル数インジケータ、コード単位定義インジケータ、処理ユニット定義インジケータ、スーパー処理ユニット定義インジケータ、最後識別コードインジケータ、シナリオ設計インジケータ、不均一器／均一器インジケータ、リサイクルインジケータ、頻度インジケータ、特殊コードインジケータ、セクションサイズインジケータ、デジタルデータブラックホールタイプインジケータ及び圧縮／非圧縮データインジケータのうちのいずれか１つを含むＣＨＡＮコードファイル。
（３７）数学的方法の使用技術により、データ値が対応するＣＨＡＮ形状に対応する数式で記述されることが可能な順序に入れられ、デジタル情報のマージ及び分離に使用される関連する数学的計算論理及び技術を含み、この数学情報がエンコーディング及びデコーディングの目的で、ランダムであるか否かに関わらず、デジタル情報を処理する際の処理ユニットのコード単位の値を含むことを特徴とするＣＨＡＮフレームワーク下で使用されるＣＨＡＮ数学。
（３８）エンコーディング及びデコーディングの目的で、基本コンポーネント、コード単位及び派生コンポーネント（例えばＣＨＡＮコードのＲＰピースと他の派生コンポーネント）の間の特徴と関係、例えば、ランダムであるか否かに関わらず、デジタル情報を処理するための処理ユニットの基本コンポーネントの値の合計又は差を記述する方法を特徴とするＣＨＡＮフレームワーク下で使用される式であるＣＨＡＮ式。
（３９）ＣＨＡＮ点、ＣＨＡＮ直線、ＣＨＡＮ三角形、ＣＨＡＮ矩形、及びＣＨＡＮ台形、ＣＨＡＮ正方形及びＣＨＡＮバーを含み、ＣＨＡＮ式で記述する処理ユニットの基本コンポーネントの特徴及び関係を表すＣＨＡＮ形状。
（４０）数学的処理のために定数値又は値を含む変数を相補定数又は相補変数として使用して、ある値又はある範囲内又は複数の範囲内の複数の値のミラー値がＣＨＡＮ式で使用できるようにすることを特徴とする補数数学。
（４１）ＣＨＡＮフレームワーク下で設計されたコーダに処理するために、補数数学と通常の数学、又はそれらのいずれかを単独で使用したＣＨＡＮ数学。
（４２）暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮフレームワークの用途。
（４３）暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮコーディングの用途。
（４４）暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮコードの用途。
（４５）暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮコードファイルの用途。
（４６）暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮ数学の用途。
（４７）暗号化／復号、又は圧縮／解凍、又はその両方を目的とした補数数学の用途。
（４８）暗号化／復号、又は圧縮／解凍、又はその両方を目的としたＣＨＡＮ形状の用途。
（４９）ＣＨＡＮフレームワーク下で定義されるデータ順序の設計とスキーマを使用することを特徴とするエンコーディング及びデコーディングの目的で、デジタルデータセットに関する統計情報を収集するための、ランダムであるか否かに関わらず、デジタルデータセットを分析する方法。
（５０）ＣＨＡＮフレームワーク言語を使用することを特徴とするランダムであるか否かに関わらず、デジタルデータセットを記述する方法。
（５１）分類コードとして事後分類コード、内部分類コード、又は修正された内容コードを使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（５２）絶対アドレス分岐コーディング技術により、ＣＨＡＮフレームワーク下で定義されたコーダのコード値を使用して他のコード値を吸収又は表現し、即ちブラックホールコードに関連する絶対アドレス分岐コードを使用して吸収されたコード値を表すデジタルデータブラックホール技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（５３）別のコード値を連続的なステップで代用又は表現するためにＣＨＡＮフレームワーク下で定義されたコーダのコード値を使用する連続コード代用技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（５４）絶対アドレス分岐コードの逆配置技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（５５）ブラックホールコードとしてＣＨＡＮフレームワーク下で定義されたコーダの処理中のデータセットに欠落するコード値を使用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（５６）ＣＨＡＮフレームワーク下で定義されたコーダの処理中のデータセットに欠落するコード値を、処理中のデータセットに存在するような、より長いビット長の別のコード値で代用する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（５７）ＣＨＡＮフレームワーク下で定義されるコーダを使用して、エンコーディング及びデコーディングを行い、使用される技術がデジタルデータブラックホール、絶対アドレスコーディング、インジケータビット消費削減及び連続コード代用又は非連続コード代用の技術を含み、且つ処理されているデータセットにおける欠落するコード値を同じビット長又はより長いビット長で代用する別のコード値に置き換える技術を使用し、この他のコード値が適切な場合に処理されているデータセットに存在することを特徴とするＣＨＡＮコーディング、固有コード値が欠落するか又は欠落していない場合に、ランダムデータであるか又は非ランダムデータであるかに関わらずデジタルデータを圧縮及び解凍するためのエンコーディング及びデコーディングの方法。
（５８）処理されているデジタルデータセットから生成された頻度分布特徴に基づいて、インジケータビット消費を削減する技術を特徴とするＣＨＡＮコーディング、エンコーディング及びデコーディングの方法。
（５９）使用される設計に応じて、複数のビットサイズ又はビット長を有し、又は異なるビットサイズ又はビット長を有するコード単位、処理ユニット、及びスーパー処理ユニットの固有コード値を特徴とするＣＨＡＮフレームワークで設計されたコーダ。
【０１４２】
ランダムに割り当てるか否かに関わらず、あらゆるタイプのデジタルデータを含むデジタル情報を処理するための全てのコンピュータアプリケーションを含むＣＨＡＮフレームワーク及びＣＨＡＮコーディングとその関連する設計及びスキーマを有利に使用することができる多数の産業用アプリケーションがある。
【０１４３】
本明細書に記載の実施形態は、任意の適切に構成されたコンピュータハードウェア及び／又はソフトウェアを使用してシステムに実装することができる。例えば、特定の実施形態は、実行可能コード及びオペレーティングシステム及びアプリケーションプログラム、実行可能コードを実行することができるコンピュータシステム又はコンピュータ制御デバイス又はオペレーティングシステム制御デバイス又はシステムを含むネットワークに接続されているかスタンドアロンに関わらず、任意のデバイスのハードウェア、及び本明細書に記載の方法のステップを実行するのを助けるコンピュータ実行可能又はオペレーティングシステム実行可能命令又はプログラムを形成するためのコンピュータ言語及びコンパイラを使用してシステムに実装される。上述の技術的特徴の使用と組み合わせて、本明細書に開示された実施形態は、暗号化／復号、圧縮／解凍、又はその両方のために、デジタルデータ及びデジタル実行可能コードを含む関連するデジタルデータをロスレス且つ正確にエンコーディング及びデコーディングすることによって、ランダムであるか否かに関わらず、デジタル情報を処理するようにＣＨＡＮコーディングを使用してＣＨＡＮフレームワークの実装を可能にし、且つこのような関係でその特徴は、特許請求の範囲で示される。
シーケンステーブルのテキスト
【国際調査報告】
2019528027.tif 000065
2019528027.tif 000066