(57)【特許請求の範囲】
【請求項１】
転送元から通信チャネルを介して転送されたデータを受信する方法であって、前記データは、複数の出力シンボルとして転送され、入力ファイルの入力シンボルと冗長シンボルの混合セット内の少なくとも１つのシンボルから生成され、前記混合セット内の所与のシンボルセットのための可能性のある有効出力シンボルの数は、前記入力ファイル内の入力シンボルの数とは独立しており、前記冗長シンボルは、前記入力シンボルから生成され、該方法は、
前記通信チャネルから出力シンボルを受信することであって、前記通信チャネルは、誤りおよび／または消失を導入した可能性がある、ことと、
前記受信された出力シンボルから、前記混合セット内の少なくとも１つのシンボルのサブセットを再生することであって、前記混合セット内の前記シンボルのサブセットは、複数の再生された入力シンボルと、複数の再生された冗長シンボルとを含み、前記再生することは、出力シンボル確率分布の推定値から決定された、入力シンボル確率分布を使用し、入力シンボル確率分布は、前記受信された出力シンボルを形成するために符号化された特定の入力シンボルの確率を表し、前記出力シンボル確率分布の推定値は、与えられた受信された出力シンボルにおいて特定の出力シンボルが送信された確率から決定される、ことと
を備える、方法。
【請求項２】
通信チャネルを介して受信されたデータを処理するためのコンピュータ可読プログラムコードであって、前記データは、入力ファイルの入力シンボルと冗長シンボルの混合セットから生成された複数の出力シンボルとして転送されており、前記混合セット内の所与のシンボルセットのための可能性のある有効出力シンボルの数は、前記入力ファイル内の入力シンボルの数とは独立しており、前記冗長シンボルは、前記入力シンボルから生成され、該プログラムコードは、
誤りおよび／または消失を有する可能性がある、出力シンボルを受信するためのプログラムコードと、
前記誤りおよび／または消失の可能性を考慮して、前記受信された出力シンボルから、前記混合セット内の少なくとも１つのシンボルのサブセットを再生するためのプログラムコードであって、前記混合セット内の前記シンボルのサブセットは、複数の再生された入力シンボルと、複数の再生された冗長シンボルとを含み、前記再生するためのプログラムコードは、（ｉ）出力シンボル確率分布の推定値から、入力シンボル確率分布を決定する、ただし、入力シンボル確率分布は、前記受信された出力シンボルを形成するために符号化された特定の入力シンボルの確率を表す、（ｉｉ）与えられた受信された出力シンボルにおいて、特定の出力シンボルが送信された確率から、前記出力シンボル確率分布の推定値を決定する、ためのプログラムコードをさらに含む、
コンピュータ可読プログラムコード。
【請求項３】
受信された出力シンボルのために、前記受信された出力シンボルに関連付けられた情報量を決定するためのプログラムコードと、
複数の受信された出力シンボルに関連付けられた総情報量を累積するためのプログラムコードと、
前記累積された総情報量が、前記入力シンボルの順序セットの情報内容量に関連する所与の基準を満たすとき、１以上の再生工程をトリガするためのプログラムコードと
をさらに含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項４】
前記所与の基準は、前記累積された総情報が、前記入力シンボルの順序セットの情報内容量に少量の付加的な情報量を加えた情報量に等しくなる基準を含み、前記少量の付加的な情報量は、前記入力シンボルの順序セットの情報内容量の百分率である、請求項３に記載のコンピュータ可読プログラムコード。
【請求項５】
第１の復号フェーズにおいて、出力シンボル確率分布を粗量子化するための、粗量子化プログラムコードと、
第２の復号フェーズにおいて、出力シンボル確率分布を量子化するための微量子化プログラムコードであって、前記粗量子化は、前記微量子化よりも低い量子化レベルを有する、プログラムコードと
をさらに含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項６】
出力シンボル確率分布は、各々、２値のうち１つを採用する確率値を含み、前記値の１つは高確率を表し、他は低確率を表す、請求項２に記載のコンピュータ可読プログラムコード。
【請求項７】
ビットが転送において１または０であった確率を表す出力シンボルのビット当たりの確率を表すものとして前記出力シンボル確率分布を読み出すためのプログラムコードをさらに含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項８】
対応する推定された確率がゼロである場合、可能性のある転送されたビットまたはシンボルのエントリーを含まないデータ構造として格納される、前記入力シンボル確率分布を読み出すためのプログラムコードをさらに含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項９】
各々の出力シンボルは、キーアルファベットから選択されるキーＩと関連付けられ、前記キーアルファベットにおける可能性のあるキーの数は、前記入力ファイル内の入力シンボルの数とは独立している、請求項２に記載のコンピュータ可読プログラムコード。
【請求項１０】
前記冗長シンボルは、第１の複数の冗長シンボル、および、第２の複数の冗長シンボルを含み、少なくともいくつかの未再生入力シンボルを再生するためのプログラムコードは、
前記複数の再生された入力シンボルおよび前記第１の複数の冗長シンボルの再生された冗長シンボルから、前記第２の複数の冗長シンボルの未再生冗長シンボルおよび前記未再生入力シンボルのうちの少なくとも１つを再生するためのプログラムコードと、
前記複数の再生された入力シンボルおよび前記第１の複数の冗長シンボルの再生された冗長シンボルから再生することが、所望の精度まで前記入力シンボルを再生しない場合、前記複数の復号された入力シンボルおよび前記第２の複数の冗長シンボルの冗長シンボルから、少なくとも１つの未再生の入力シンボルを再生するためのプログラムコードと
を含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項１１】
ＬＤＰＣ復号器を使用して、前記第２の複数の冗長シンボルの未再生冗長シンボルおよび前記未再生入力シンボルのうちのいくつかを再生するためのプログラムコードと、
ハミング復号器を使用して、前記第２の複数の冗長シンボルの冗長シンボルからいくつかの入力シンボルを再生するためのプログラムコードと
をさらに含む、請求項１０に記載のコンピュータ可読プログラムコード。
【請求項１２】
所与の入力シンボルに対する２つ以上の可能性のある確率推定値を誤り訂正のために追跡し、そして、最大の確率推定値を選択するための、プログラムコードをさらに含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項１３】
確率分布が、前記受信された出力シンボルを表している通信信号の強さおよび強度に少なくとも部分的に基づく確率推定値を含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項１４】
確率分布が、受信された信号と、前記受信された信号について可能性のある値との間の距離の関数に基づいた確率推定値を含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項１５】
受信された出力シンボルにおける情報量の推定値を、可能性のある転送された出力シンボルに対する前記受信された出力シンボルの確率分布の２値エントロピーとして、計算するための計算プログラムコードをさらに含む、請求項２に記載のコンピュータ可読プログラムコード。
【請求項１６】
複数の受信された出力シンボルから入力シンボルを復号するための復号器であって、前記複数の受信された出力シンボルは、誤りおよび／または消失を導入した可能性がある通信チャネルを介して転送され、前記出力シンボルは、入力ファイルの入力シンボルおよび冗長シンボルの混合セット内の少なくとも１つのシンボルから生成され、前記混合セット内の所与のシンボルセットの、可能性のある有効な出力シンボルの数は、前記入力ファイル内の入力シンボルの数とは独立しており、前記冗長シンボルは、前記入力シンボルから生成され、該復号器は、
前記通信チャネルから出力シンボルを受信し、かつ、データユニットとして出力シンボルを格納するための受信モジュールと、
前記受信された出力シンボルから、前記混合セット内の少なくとも１つのシンボルのサブセットを再生するための復号ユニットであって、前記混合セット内の前記シンボルのサブセットは、複数の再生された入力シンボルと、複数の再生された冗長シンボルとを含み、前記再生することは、出力シンボル確率分布の推定値から決定された、入力シンボル確率分布を使用し、入力シンボル確率分布は、前記受信された出力シンボルを形成するために符号化された特定の入力シンボルの確率を表し、前記出力シンボル確率分布の推定値は、与えられた受信された出力シンボルにおいて特定の出力シンボルが送信された確率から決定される、復号ユニットと
を含む、復号器。
【請求項１７】
ダイナミック復号モジュールと、
再生された入力シンボルおよび再生された冗長シンボルのための記憶装置と、
スタティック復号モジュールと
をさらに含む、請求項１６に記載の復号器。
【請求項１８】
出力シンボル確率分布のための記憶装置をさらに含む、請求項１６に記載の復号器。
【請求項１９】
対応する推定された確率がゼロである場合に、可能性のある転送されたビットまたはシンボルのためのエントリーを含まないデータ構造として格納される、前記入力シンボル確率分布のための記憶装置をさらに含む、請求項１６に記載の復号器。
【請求項２０】
キー生成器をさらに含み、各出力シンボルは、キーアルファベットから選択されたキーＩに関連付けられ、前記キーアルファベット内の可能性のあるキーの数は、前記入力ファイル内の入力シンボルの数とは独立している、請求項１６に記載の復号器。
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願の相互参照＞  
この出願は、全ての目的のためにあたかも完全に本文書に記載するかのように本願明細書に引用したものとする、２００３年１０月６日に出願された”Error-Correcting Raptor Codes”の名称の米国暫定特許出願番号６０／５０９，３５５に基づく優先権を主張する。
【０００２】
本開示は、以下の本発明の譲受人に譲渡された出願／特許に関連がある：”Information Additive Code Generator and Decoder for Communication Systems”の名称の、マイケル Ｇ ルビーに対する米国特許番号６，３０７，４８７（以下、ルビーＩと呼ぶ）、２００１年１２月２１日に出願された”Multi-Stage Code Generator and Decoder for Communication Systems”の名称の、ショクロラヒ Ｍ アミンらの［米国特許出願番号１０／０３２，１５６］に対する米国特許番号 （以下、ショクロラヒＩと呼ぶ）、および、２００３年１０月１日に出願された”Systematic Encoding and Decoding of Chain Reaction Codes”の名称の、ショクロラヒ Ｍ アミンらの［米国特許出願番号１０／６７７，６２４］に対する米国特許番号 （以下、ＳＥＤ−ＣＲＣと呼ぶ）。全ての目的ためにあたかも完全に本文書に記載するかのように、これらの出願／特許のそれぞれの開示は本願明細書に引用したものとする。
【背景技術】
【０００３】
送り手と受け手との間で通信チャネルを介して行うファイルおよびストリームの転送は多くの文献の主題として取り上げられてきた。好ましくは、受け手は、送り手からチャネルを介して送信される正確なデータのコピーをあるレベルの確実性をもって受信することを望む。ほとんどの物理的に実現可能なシステムがそうであるように、チャネルは完全な忠実度を有していないため、転送により消失するか歪められるデータを取り扱う方法に関心が生じる。受け手は、いつ破損データが誤ってデータ受信されたかの判断を常に行えるとは限らないので、通常、破損データ（誤り）に比較し欠落データ（消去）を取扱うのは容易である。多くの誤り訂正符号は、消去および／または誤りを修正するために開発された。一般的に、データが送信されているチャネルおよび送信されているデータの性質の不忠実度に関する何らかの情報に基づいて使用する特定の符号（コード）が選択される。たとえば、チャネルが長期間の不忠実度を有することが既知の場合、そのアプリケーションのためにはバースト誤り符号が最適であり得る。短くまれな誤りだけが予想される場合、簡単なパリティ符号が最善であり得る。
【０００４】
通信チャネルを介しての上の多数の送信機および／または多数の受信機間のデータ転送は、また多くの文献の主題として取り上げられてきた。一般的に、多数の送信機からのデータ転送は、多数の送信機の中の協調が送信機が効果の重複を最小化できることを必要とする。データを受信機に送信している典型的多数の送信機システムにおいて、それらがそうするデータが送信する送信機が協調しない、そして、その代わりにちょうどファイルの部分を送信する、受信機が多くの役立たない二重の部分を受信することがありえる。同様に、異なる受信機は時間内の異なる位置に送信機から転送を接続する、懸念は受信機が送信機から受信する全てのそのデータを確保する方法が役立つということである。例えば、送信機がファイルを送信することを望んで、ほぼ同じのデータが連続発信であると仮定する。送信機がちょうどオリジナルファイルの部分を送信して、繰り返す、そして、若干の部分が消失する場合、受信機がファイルの各々の部分の１つのコピーを受信する前に多くの役立たない二重の部分を受信することはあり得る。同様に、部分が複数回誤って受信される場合、受信機に伝達される情報量は非常に受信された誤りデータの累積的な情報より少ない。しばしば、これは、結果として伝送システムの望ましくない非効率性に導く。
【０００５】
しばしば、通信チャネルを通じて送信されるデータは、等しいサイズ入力シンボルに仕切られる。入力シンボルが実はビットストリームに分解されるのであるにせよ、入力シンボルの”サイズ”はビット単位で測定されることができ、入力シンボルが２Ｍ個のシンボルのアルファベットまたは整数Ｍのための２Ｍ個のシンボル別のその他を有するアルファベットから選ばれるときに、入力シンボルはＭビットのサイズを有する。
【０００６】
符号システムは、入力シンボルから出力シンボルを作成できる。出力シンボルは、出力シンボルアルファベットの要素である。出力シンボルアルファベットは、入力シンボルのためのアルファベットと同じ特徴を有することができるかまたは有することができない。一旦出力シンボルが作成されると、それらは受信機に送信される。
【０００７】
転送の作業は、転送の特定のタイプに適しているシンボルを作成するために、出力シンボルの後処理を含むことができる。例えば、転送は無線プロバイダからワイヤレス受信機までデータを送信することを構成する、シンボルがあってもよいいくつかの出力は形式にフレームをひとまとめにした、そして、各々のフレームは振幅または位相がフレームに関連がある電波信号に変換されることができる。電波にフレームを変換する動作は変調としばしば呼ばれている。そして、変調は電波信号の情報がその位相において、またはその振幅に格納されるかどうかに依存している位相または振幅変調と更に称する。今日では、この種の調整された転送が、多くのアプリケーション（例えば、無線、衛星通信、ケーブルモデム、デジタル加入者線（ＤＳＬ）その他）で使用される。
【０００８】
それによって、指定受信者が転送の間、誤りおよび／または消去にさえかかわらずオリジナルデータの正確なコピーを回復できる場合、転送は信頼性が高いと言われる。消去された情報の回復は多くの文献の主題であった、そして、非常に効率的な符号化方法はこの場合考案された。
【０００９】
転送問題を解決するために提案された１つの解は、信頼性を増やすために前方誤り訂正（ＦＥＣ）符号（たとえばリード−ソロモン符号、トルネード符号または、さらに一般的にいえば、ＬＤＰＣ（低密度パリティチェック）符号またはターボ符号など）を使用することである。ＬＤＰＣ符号化については、送信された出力シンボルは、内容を構成するまさに入力シンボルの代わりに、内容から生成される。従来の誤り訂正符号（例えばリード−ソロモン、ＬＤＰＣまたはターボ符号）は、固定長の内容のための出力シンボルの定数を生成する。例えば、Ｋ個の入力シンボルのために、Ｎ個の出力シンボルは、生成されるかもしれない。これらのＮ個の出力シンボルは、Ｋ個のオリジナル入力シンボルおよびＮ−Ｋ個の冗長シンボルを含むことができる。記憶領域が許す場合、送信機は一度だけデータの各々の部分のための出力シンボルのセットを計算することができて、カルーセルプロトコルを用いた出力シンボルを送信できる。
【００１０】
いくらかのＦＥＣ符号に関する１つの問題は、それらが過大な演算能力またはメモリが動作することを必要とするということである。他の問題は、出力シンボルの数が符号化処理に先立ってしばしば決定されなければならないということである。エラー率が過小評価される場合シンボルのエラー率が過大に見積もられて、結果として失敗に導くことができる場合、これは結果として非効率性に導くことができる。その結果、従来のＦＥＣ方式は、しばしばメカニズムがそれらが動作する通信チャネルの信頼性を推定することを必要とする。例えば、ワイヤレス送信システムで、送信機および受信機は、ノイズの、そして、それ故、チャネルの信頼性の推定値を得るために通信チャネルを探索することを必要とするかもしれない。この種の場合、この探測は非常にしばしば繰り返されなければならない。−その理由は、次のことにある。現実騒音は通信チャネルの品質の急速で一時的な変化による移動目標である。
【００１１】
従来のＦＥＣ符号のために、生成されることができる可能な出力シンボルの数は、内容が仕切られる入力シンボルの数と同じ大きさの程度の中である。排他的にではないが、一般的に、ほとんどまたはこれらの出力シンボルの全ては、送信ステップの前に前処理ステップで生成される。これらの出力シンボルは、全ての入力シンボルが、全体で、オリジナル内容と同じ情報量を有する出力シンボルのいかなるサブセットからも再生できる特性を有する。
【００１２】
上記のように、多くの誤り訂正符号に関する１つの問題は、それらが過大な演算能力またはメモリが動作することを必要とするということである。演算能力およびメモリのその使用法でいくらか効率的である通信アプリケーションのために最近開発される１つの符号システムは、ＬＤＰＣ符号システムである。入力データがＫ個の入力シンボルにより表されて、Ｎ個の出力シンボルを決定するために用いるという点で、ＬＤＰＣ符号はリード−ソロモン符号と類似している、そこにおいて、符号化プロセスが始まる前に、Ｎは固定される。Ｎ個のＬＤＰＣ出力シンボルを作成することを必要とされる数値演算の平均数がＮ（何十ものアセンブリ符号動作時間Ｎの次数に）と比例している。そして、全データを復号化することを必要とされる数値演算の合計数がまた、Ｎと比例していながら、ＬＤＰＣ符号を有する符号化は通常、リード−ソロモン符号を有する符号化に比較し非常に急速である。
【００１３】
ＬＤＰＣ符号は、リード−ソロモン符号に勝る速度効果がある。しかしながら、ＬＤＰＣおよびリード−ソロモン符号は、いくつかの不利な点を有する。第１に、出力シンボルの数（Ｎ）は、符号化処理に先立って決定されなければならない。シンボルのエラー率が過大に見積もられる場合、これは結果として非効率性に導いて、エラー率が過小評価される場合、結果として失敗に導くことができる。これはＬＤＰＣ復号器が出力シンボルの一定数の受信がオリジナルデータを復号化して、復元することを必要とするという理由である。そして、消されたシンボルの数が符号が配給されたものより大きい場合、オリジナルデータは回復することができない。符号のレートが適切に選ばれる限り、この限定は通常、受け入れられる大多数にとって通信問題であるこれ以外の必要とする、前進はチャネルのシンボル受信のエラー率で推測する。
【００１４】
ＬＤＰＣの不利な点が符号化する他のものは、それらが符号器および復号器がグラフ構造上の若干の方法に同意することを必要とするということである。ＬＤＰＣ符号は、このグラフが組み立てられる（実質的に復号化を減速できる処理）復号器で、前処理段階を必要とする。さらにまた、グラフはデータサイズにある特定であるので、新しいグラフは使用する各々のデータサイズのために生成されることを必要とする。さらに、トルネード符号によって、必要なグラフの構築は複雑であり、最高の性能を得るためには、異なるサイズのファイルに対するパラメータの異なるカスタム設定をする必要がある。これらのグラフは、重要なサイズであってもよくて、送信機および受信機でそれらの記憶のための重要な記憶量を必要とすることができる。
【００１５】
加えて、ＬＤＰＣ符号は、固定するグラフおよび入力データに関して正確に同じ出力シンボル値を生成する。これらの出力シンボルは、Ｋ個のオリジナル入力シンボルおよびＮ−Ｋ個の冗長シンボルを含むことができる。さらにまた、Ｋ（例えば３または４回Ｋ）の少ない倍数より大きいＮの値は、実際的でない。したがって、複数の送信機から同じグラフを使用している同じ入力データから生成される出力シンボルを得ている受信機が多数の二重の出力シンボルを受信することはあり得、それは情報付加的でない。すなわち、その理由は、次のことにある。
【００１６】
１） Ｎ出力シンボルは、定刻より早く固定する、  
２） シンボルが送信されるたびに、同じＮ出力シンボルは各々の送信機から送信される、  
３） 同じＮシンボルは、受信機により受信される。そして、  
４） Ｎは、Ｋ．の若干の少ない倍数を実際に上回ることができない。
【００１７】
実質的に、組織立ってない出力シンボルが多くの送信機から受信される場合、若干の出力シンボルがすでに受信されたという確率は１／ｓｑｒｔ（Ｎ）の次数の中である、ここで、ｓｑｒｔ（Ｎ）は、Ｎの二乗根を示す。ＫはおよそＮ程度である。そして、Ｋ個の出力シンボルが必要な所で、より多くの出力シンボルが受信されながら、次の受信された出力シンボルが情報付加的であることはだんだん少なくなる。そして、それは出力シンボルの数がデータを復号化するために受信される必要はあったより、候補者の数がシンボルを出力したかどうかはそれほど大きかったという場合でない。
【００１８】
異なる送信機からの出力シンボルが異なる方法で損なわれることができる場合であっても、彼らがシステムに伝える総情報量はそれらのそれぞれの情報量の合計でない。例えば、シンボルが１つのビット長であると仮定する。そして、同じＬＤＰＣ符号ビットは２つの異なる転送元（例えば２つの衛星）から受信機により受信される。そして、両方のそのビットは不正な確率ｐを有する。更に、ビットのうちの１つが０として受信されると、他のものが１として受信されると仮定する。それから、ビットは一緒にオリジナルＬＤＰＣビットに関するいかなる情報も伝えない。その理由は、そのビットの状態は５０％の確率で０または１を有するからである。しかしながら、個々のビットはいくらかのオリジナルビットに関する情報を与える、ただし、この情報は付加的でない。
【００１９】
従って、必要なものは、それが送信機または受信機で過大な演算能力またはメモリを必要としないシンプルな誤り訂正符号である。そして、送信機および受信機の間の調整を必要とすることなく、効率的にデータを配信可能な、１以上の送信機および／または１以上の受信機を備えるシステムである。
【発明の概要】
【００２０】
本発明による通信システムの一実施例において、符号器は、複数の冗長シンボルを作成するために、データの入力ファイルを使用する、そこで、入力ファイルは各々入力アルファベットから選ばれる順序秩序ある複数の入力シンボルである。そして、冗長シンボルは冗長シンボルのアルファベットからある。与えられたキーに対し、出力シンボルは、入力シンボルおよび冗長シンボルを含むシンボルの複合のセットから生成され、キーはキーアルファベットから選ばれる。そして、出力シンボルは出力アルファベットから選ばれる。キーＩを有する出力シンボルは、生成される出力シンボルのための重みＷ（Ｉ）を決定することにより生成され、重みＷは、複数のキーの上の少なくとも２値の間を変化する自然数である、選択されたＷ（Ｉ）関数に従う出力シンボルに関連付けられた入力シンボルＩから、選択されたＷ（Ｉ）個の入力シンボルの予め定められた値関数Ｆ（Ｉ）から出力シンボルの値Ｂ（Ｉ）を生成する。場合によっては、キーは、符号器の状態に内在する。出力シンボルは通常、各々が独立している。そして、必要に応じて、出力シンボル（Ｉの解像度）の事実上無限の数を、生成できる。多くのシンボルがすでに受信されるときでも受信された出力シンボルが付加情報を復号化に提供しそうであるように、出力シンボルは情報付加的である。出力シンボルは、一セットの受信された出力シンボルが誤り訂正を支持するために見込みに基づく情報を提供できるようなものである。
【００２１】
本発明の実施例に従う復号器において、それが送信された出力シンボルの任意の部分を受信するだけのときでも、そして、受信された出力シンボルの相当な数が誤っている場合であっても、復号器は入力シンボルを正しく復号化できる。入力データは、ファイルを含んでいる入力シンボルビットの数またはわずかに大きい数の累積的な情報が等しい出力シンボルビットのいかなるセットからも復号化されることができる。
【００２２】
ある特定の復号化において、実施例は、復号器の前に、あるいは、実質的に出力シンボルの受信と同時で、受信される出力シンボルから、検査符号を算出する、各々の検査符号は一つ以上の入力シンボルおよび冗長シンボルを伴う、そして、検査符号の重みは複数の入力シンボルからのシンボルの数およびそれが伴う冗長シンボルである。そして、復号器はシンボルのための重みおよび関連記号の位置をテーブルに格納する。各々の受信された出力シンボルのために、検査符号および記憶の生成に続いて、復号器はさまざまなステップを実行し、以下を含む：  
１）受信された出力シンボルの情報量を算出するかまたは推定して、情報量の累計を更新すること、  
２）出力シンボルの、キーＩおよび出力シンボル値Ｂ（Ｉ）を識別すること、  
３）出力シンボルの重みＷ（Ｉ）を決定し、入力シンボルおよび冗長シンボルから出力シンボルに関連付けられたＷ（Ｉ）個の位置のシンボルを決定すること、  
４）重みＷ（Ｉ）および位置を格納すること。
【００２３】
回復過程において、所定数まで、全ての入力シンボルが回復されるまで、または、他の終了条件が満たされるまで、さまざまなステップが繰り返し実行される。上記は各々の入力シンボルを含む、全てまたは入力シンボルのいくつかの可能な値の分布がそうである確率を生成することは確率分布がどこで特定の可能な値を有する入力シンボルの確率を表すかについて決定した。確率分布は、前のラウンドの算出確率に基づいて、各ラウンドで更新される。入力シンボルの全てについて、多くの可能な値のうちの１つが他に比較しありえそうであるまで、この処理は繰り返される。そして、ラウンドまたは他の基準の所定数は満たされるまで繰り返され得る。更新は、すでに復号化されたシンボル、付加的な出力シンボルおよび検査シンボルを考慮できる。
【００２４】
本発明のさらにもう一つの実施例によれば、搬送波に表現されるコンピュータのデータ信号は、出力される。コンピュータのデータ信号は、誤り訂正のために有用で、複数の出力シンボルを含む。複数の出力シンボルは、シンボルが入力シンボルおよび冗長シンボルの順序集合を含んでいるシンボルの複合のセットから生成されることを表し、冗長シンボルは、入力シンボルから生成され、可能な出力シンボルの数はシンボルの複合のセットのシンボルの数非常に大きく、少なくとも一つの出力シンボルはシンボルの複合のセットの複数のシンボルから、そして、シンボルおよびデータ信号の受信機が出力シンボルのいかなる所定数からも所望の精度まで入力シンボルの順序集合を再生させることができるようなものの複合のセットのシンボルの全て少ないものから生成される。
【００２５】
多数の利点が、本発明によって達成される。例えば、特定の実施例において、チャネルを介してデータを転送のため符号化計算能力が引き下げられる。他の特定実施例において、この種のデータを復号化する計算能力は引き下げられる。実施例によって、これらの利点の一つ以上を、達成できる。これらの、そしてまた他の、利点は、本願明細書および特に下記の全体にわたって更に詳細に提供される。
【００２６】
本願明細書において、開示される本発明の性質および効果の一層の理解は、仕様および添付の図面の残りの部分を参照することで理解され得る。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施例に従う通信システムのブロック図である。
【図２】図１の符号器をより詳細に示すブロック図である。
【図３】スタティック符号化の方法の一実施例を示す簡略フローチャートである。
【図４】図２のスタティック符号器の一実施例の図である。
【図５】図２のダイナミック符号器の一実施例の簡略ブロック図である。
【図６】関連付けられた入力シンボルのセットから出力シンボルを生成する方法と装置を示す図である。
【図７】スタティック符号器の一特定実施例の簡略ブロック図である。
【図８】図７に示されるスタティック符号器の一実施例の動作を示す。
【図９】スタティック符号化処理の簡略フローチャートである。
【図１０】例えば図１の復号器のような復号器により実行され得る復号処理の簡略フローチャートである。
【図１１】他の復号器のブロック図である。
【図１２】復号の一方法を示す簡略フローチャートである。
【図１３】復号の別方法を示す簡略フローチャートである。
【図１４】復号のさらなる別方法を示す簡略フローチャートである。
【図１５】図５のダイナミック符号器により使用され得る関連付けリストを生成する処理を示すフローチャートである。
【図１６】図５の重みセレクタをより詳細に示すブロック図である。
【図１７】例えば図１６に示される重みセレクタのような重みセレクタにより、与えられた出力シンボルの重み決定のため使用され得る処理のフローチャートである。
【詳細な説明】
【００２８】
本明細書で使用するさまざまな用語の意味および範囲の説明の後に、”エラー訂正マルチステージ符号化”（ＥＣ−ＭＳ）と称される符号体系が以下の特定実施例において記載されている。ルビーＩおよびショクロラヒＩは、本発明の特定実施例に使用され得るシステム及び方法の教示を提供する。しかしながら、これらのシステム及び方法は、本発明に必須のものではなく、多くのバリエーション、変更態様または変形例を使用することが出来ることが理解されるであろう。ＥＣ−ＭＳおよびマルチステージ符号化のいくつかのバリエーションは、デジタルファウンテンＲａｐｔｏｒ符号システムとして市場に出される製品で使用されているかもしれない。
【００２９】
ＥＣ−ＭＳ符号化では、出力シンボルは、必要に応じて送信機により入力ファイルから生成される。各々の出力シンボルは、他の出力シンボルの生成方法に関係なく生成される得る。いかなる時でも、送信機は出力シンボルを生成するのを止めることができ、送信機の出力シンボル生成の停止・再開に関していかなる制約条件も必要ない。一旦生成されると、これらのシンボルは個々あるいはより大きいグループ（一つ以上の出力シンボルを含むフレーム）の一部として、それらの転送先に送信される。
【００３０】
ここで使用しているように、用語”ファイル”は、１以上の転送元で格納され、１以上の転送先に配信される単位となる任意のデータを示している。したがって、ファイルサーバまたはコンピュータ記憶装置からのドキュメント、イメージ、およびファイルはすべて、配信され得る”ファイル”の例である。ファイルは、既知のサイズ（例えばハードディスクに保存される１メガバイトの画像）でもよいし、未知のサイズ（例えばストリーミングソースの出力からのファイル）でもよい。いずれにおいても、ファイルは一連の入力シンボルであり、各々の入力シンボルは、ファイル内での位置および値を有している。
【００３１】
転送は、ファイルを配信するため、チャネルを介して１以上の送信機から１以上の受信機までデータを転送する処理である。１台の送信機が任意数の受信機と完全なチャネルにより接続している場合、全てのデータが正しく受信され、受信データは入力ファイルの正確なコピーとなる。ここでは、現実のチャネルと同様チャネルは完全でないと仮定する。または、いくつかのシステムについては、データを複数の送信機から送信すると仮定する。多くのチャネルの欠点の中での重要な欠点は、データ誤りおよびデータ不完全性である。
【００３２】
データ誤りは、チャネルが送信データを変更する際に生じる。変更態様は、例えば、衛星通信の場合には空中放電、無線通信の場合には信号強度の損失、コンパクトディスクまたは他のデジタル記憶媒体の表層のかすり傷など多くの要因に依存し得る。
【００３３】
データ不完全性は、いくつかのデータが素通りした後受信機がデータを受信し始める際、受信機が転送終了の前にデータ受信を止める際、または、受信機がデータ受信を断続的に停止し再開する際に生じる。データ不完全性の例としては、入力ファイルであるデータを送信する可動の衛星送信機があり、受信機が範囲内に入る前に転送を開始し得る。一旦受信機が範囲内に入ると衛星が範囲内から移動し出て行くまでデータを受信し得、データを受信していない期間において、範囲に入ってきた他の衛星の送信する同一の入力ファイルのデータを受信開始するため、受信機は自身の衛星アンテナを切り換えることが出来る。
【００３４】
いくつかの通信システムにおいては、受信機は、多数の送信機または複数の接続を使用する１台の送信機により生成されるデータを受信する。例えば、ダウンロード速度を上げるために、受信機は、同一ファイルに関する転送データを送信する複数の送信機に同時に接続するかもしれない。別の例として、ブロードキャスト転送で、多数のブロードキャストデータストリームが、受信機が送信機に接続しているチャネルの帯域幅を持った総伝送速度と適合させるためこれらのストリームの１以上に接続可能となるよう送信されるかもしれない。この種の全ての場合において、懸念点は全送信データの確保は受信機に独立に使用されるということである。すなわち、伝送速度が異なるストリームにおいて非常に異なる場合および誤りの任意のパターンおよび強度がある場合においても、データがそれぞれのストリーム内にある多重ソースデータはそれらの情報をシステムに加える。
【００３５】
一般に、転送は、送信機と受信機とを接続しているチャネルを介して、送信機から受信機にデータを移動する動作である。チャネルは、チャネルがデータを得ながらチャネルは送信機から受信機までデータを移動するリアルタイムチャネルでもよいし、チャネルは送信機から受信機までデータのいくつかまたは全てをその通過部分に格納する格納チャネルであるかもしれない。後者の実施例は、ディスク記憶装置または他の記憶装置である。その実施例において、データを生成するプログラムまたはデバイスが送信機として案出でき、記憶装置にデータを送信する。受信機は、記憶装置からデータを読み込むプログラムまたはデバイスである。送信機が記憶装置上へデータを得るのに利用するメカニズム、記憶装置自身、および、受信機が記憶装置からデータを得るのに利用するメカニズムは、集合的にチャネルを形成する。それらのメカニズムまたは記憶装置がデータを消失しうる可能性がある場合、チャネル内のデータ消去とみなすことができる。
【００３６】
送信機および受信機がデータエラーチャネルによって隔てられるとき、単に入力ファイルの正確なコピーを転送するのではなく、その代わりに、誤りの回復に利用可能な入力ファイルから生成される転送データを用いることが望ましい。符号器とは、そのようなタスクを処理する回路、デバイス、モジュール、またはコードセグメントである。符号器の動作の１つは、符号器が入力シンボルから出力シンボルを生成するということである。ここで、入力シンボルの値のシーケンスは入力ファイルを表す。したがって、各々の入力シンボルは、入力ファイル内での位置および値を有する。復号器は、出力シンボルのいくつかまたは相当な数が誤って受信される時においても、受信機により受信される出力シンボルから入力シンボルを復元する回路、デバイス、モジュールまたはコードセグメントである。
【００３７】
例えばマルチステージ連鎖反応符号を説明するルビーＩまたはショクロラヒＩのような連鎖反応符号は、多種多様な設定の消去の回復のための効率的な符号化方法である。連鎖反応復号化は、前方誤り訂正の形式であり、消去がある上記の問題を対処する。連鎖反応符号においては、生成され得る可能な出力シンボルのプールは、入力シンボルの数に比較し非常に大きく、ほとんどの場合、事実上無限である。そして、可能性のプールからのランダムな出力シンボルは非常にすばやく生成される。連鎖反応符号においては、出力シンボルは、送信ステップと同時に必要に応じて即座に生成される。
【００３８】
コンテンツの全ての入力シンボルは、元のコンテンツがそうであったことが利用できる累積的な情報量に等しい一組のランダムに生成された出力シンボルまたは元のコンテンツがそうであったことに関するわずかにより多くの情報のほとんど全てのサブセットから再生され得るため、等しい情報よりわずかだけ多い情報により完全な再生の確率は非常に高くなっているという性質を連鎖反応コードは有する。入力シンボルより非常に多くの出力シンボルが生成されることができるため、入力シンボルと同程度の出力シンボルのランダムサンプリングは重なることはあまりなく、それゆえ、”情報付加的”である。
【００３９】
さまざまな連鎖反応符号システムの他の説明は、２０００年９月２２日に出願された”On Demand Encoding With a Window”という名称の米国特許出願番号０９／６６８，４５２、および、２０００年１０月１８日に出願された”Generating High Weight Output symbols Using a Basis”という名称の米国特許出願番号０９／６９１，７３５に記載されていて、それぞれは全ての目的のため、本願明細書において引用したものとする。
【００４０】
連鎖反応符号システムのいくつかの実施例は、符号器および復号器を含む。データはブロックまたはストリームの形で符号器に入力され、符号器は即座にブロックまたはストリームから出力シンボルを生成し得る。例えばショクロラヒＩに記載されている実施例において、データはオフラインでスタティック符号器を使用しスタティック入力シンボルに予め符号化し、出力シンボルをオリジナルデータシンボルおよびスタティック入力シンボルの複数から生成してもよい。 連鎖反応符号システムのいくつかの実施例は、符号化および復号化処理は重みテーブルに依存する。重みテーブルは、ソースシンボルのセットにおける確率分布を記載している。すなわち、１と入力シンボル総数との間の任意の数Ｗについて、重みテーブルは固有の確率Ｐ（Ｗ）を指示する。重みテーブルが、Ｐ（Ｗ）がゼロでない重みＷについてのみ含むことが望ましい場合、Ｐ（Ｗ）は、実質的にＷの多くの値についてゼロであってもよい。
【００４１】
連鎖反応符号システムのいくつかの実施例において、出力シンボルは、以下の通りに生成される：すべての出力シンボルについて、キーをランダムに生成する。キーに基づいて加重テーブルから重みＷを計算する。Ｗ個のソースシンボルのランダムあるいは疑似ランダムなサブセットを選択する。これらのソースシンボルのＸＯＲから出力シンボルを導出する。以降で、これらのソースシンボルを、出力シンボルの隣接（neighbors）または付随物（associates）と呼ぶ。この基本的方式のさまざまな変更および拡張が可能であり、上述した特許および特許出願に記述されている。
【００４２】
一旦出力シンボルが生成されると、対応するキー、またはキーの再生方法の指示、または受信機が出力シンボルを生成した同一のキーセットを生成可能とする何らかの一般的ランダムソースと一緒に指定受信者に送信される。
【００４３】
特定のアプリケーションにおいては、出力シンボルとして入力シンボルを最初に送信し、続けて、入力シンボルから生成される出力シンボルを送信し転送を続けることが望ましい。この種の符号システムは、システマチック符号システムと呼ばれ、ショクロラヒＩに開示されている。
【００４４】
ＥＣ−ＭＳ符号化は特定の種類の入力シンボルに限定されないが、入力シンボルのタイプはしばしばアプリケーションによって指定される。一般的に、入力シンボルの値は、ある自然数Ｍについての２Ｍ個のシンボルから構成されるアルファベットから選択される。この場合、入力シンボルは、入力ファイルからデータのＭビットのシーケンスにより表される。Ｍの値は、しばしばアプリケーションおよびチャネルに基づいて決定される。例えば、１ビットベースの転送チャネルにおいては、１ビットサイズのシンボルが適当であり得る。別の例として、１チャネルあたり複数ビットを転送するために変調を使用する。この場合、各チャネルで転送されるビット数に等しいシンボルサイズを利用するのが適当であり得る。例えば、変調方式として四相位相変調（ＱＰＳＫ）が使用される場合、２ビットのシンボルサイズを選択することは有利であり得る。汎用の通信システムを使用しているＥＣ−ＭＳ符号化においては、例えば入力シンボルサイズ（すなわち、入力シンボルにより符号化されるビット数Ｍ）のようなアプリケーション特有のパラメータがアプリケーションによりセットされる変数で有り得る。
【００４５】
出力シンボルアルファベットの任意の要素に対して、各々の出力シンボルは、そのシンボルが転送前に有した値の確率を決定する確率分布に関連付けられている。これらの確率または推定値は、有効なシンボルセットからの受信シンボルの距離を算出し抽出することができる。例えば、いくつかのビットは１つのフレームに変調される場合、復調ステップは復調ステップがどれくらい正確かという推定値を提供できる。いくつかの実施態様においては、精度の推定値は２値（例えば、”正確”か”不正確”か）である。他の実施では、推定値は３、４あるいはそれより多い値から１が選択される。
【００４６】
以下で考慮する１つの好ましい実施例において、各々の出力シンボルは”キー”と呼ばれる識別子を有する。望ましくは、各々の出力シンボルのキーは、受信機がある出力シンボルと他の出力シンボルを区別可能とするために、受信機で容易に決定することができる。望ましくは、出力シンボルのキーは、他の全ての出力シンボルのキーとは区別される。また、好ましくは、転送において、受信機が受信された出力シンボルのキーを決定するためのできる限り小さなデータが含まれる。いくつかの実施形態では、出力シンボルのキーは、送信機および受信機間のクロック同期によって、また、個々の出力シンボルのキーの復元を助ける固有の共用値によって決定される。
【００４７】
いくつかのシステムにおいては、キーを複数のデータから形成することが好ましい。例えば、一つ以上の送信機から同じ入力ファイルから生成される複数のデータストリームを受信している受信機で、送信データはパケットのストリームであり、各々が１つの出力シンボルを含むシステムを考える。この種の状況において、キーはシーケンス番号とペアになった固有ストリーム識別子を含むことが望ましい。
【００４８】
可能であれば、出力シンボルの位置によるキーイングが望ましい。位置キーイングは、記憶装置、例えばＣＤ−ＲＯＭ（Compact Disk Read-Only-Memory）から読み出した出力シンボルに適切に作用し、出力シンボルのキーは、ＣＤ−ＲＯＭ上の位置（すなわち、トラック、＋セクター、＋セクター内の位置、など）である。また、位置キーイングは、送信機および受信機が同期クロックを有する伝送システムに適切に作用する。この形式のキーイングについては、受信機は、明示的にキーを送信するために必要とされるスペースなしに出力シンボルのキーを再現できる。もちろん、位置キーイングは、この種の位置情報が利用でき信頼性が高いことを必要とする。 いくつかのシステムでむしろ好まれるキーイングの他の形式は、ランダムキーイングである。これらのシステムにおいては、ランダム（または疑似ランダム）な値が生成され、各々出力シンボルのキーに使用される。他の好ましい実施形態では、送信機および受信機は、同一のランダムキーのシーケンスの復元が可能なデータの共通部分について一致させる。ランダムキーイングの１つの特性は、異なる物理的位置で異なる送信機により生成されるキーであっても、同一の値を有するキーの割合いが小さいということである（可能なキーの範囲は十分大きいと仮定する）。キーイングのこの形式は、実装をシンプルにできるため、いくつかのシステムの他の形式より有利でありえる。特に明記しない限り、本願明細書において、使用される”ランダム”値または”ランダム”数が真にランダムに生成されて、更に疑似ランダム的に生成された値または数を含むと理解されなければならない。
【００４９】
前述したように、データ誤りの発生が予想されるか、または、受信機が必ずしも転送の開始及び終了に合わせて受信を開始および終了しないことが予想される場合、ＥＣ−ＭＳ符号化は役立つ。後者の状態は、本明細書において”データ不完全性”と称する。情報付加的であるため受信されるＥＣ−ＭＳ符号化データは非常に独立しており、ＥＣ−ＭＳ符号化が使用されるとき、これらの状況は通信プロセスに悪影響を与えない。本願明細書に記載されているＥＣ−ＭＳ符号システムの場合、出力シンボルのランダムなコレクションが主に情報付加的であるのに十分独立しており、累積的な情報量が十分大きい任意の適当な数の出力シンボルが入力ファイルを回復するために用いることができる。連鎖反応符号化については、受信機は任意の特定出力シンボルセットのピックアップに制約がなく、１台の送信機からいくつかの出力シンボルを受信するか、送信機を他のものに切り替えるか、いくつかの誤りのあるシンボルを受信するか、またはいくつかのシンボルを消失するか、所与の転送の開始および終了をミスするかしても、入力ファイルを回復可能である。受信機および送信機間での協調なしに接続切断可能な能力により、通信プロセスは非常に単純化される。
【００５０】
＜システム概要＞  
図１は、ＥＣ−ＭＳ符号化を使用する通信システム１００のブロック図である。通信システム１００において、入力ファイル１０１または入力ストリーム１０５が入力シンボル生成器１１０に対して与えられる。入力シンボル生成器１１０は、入力ファイルまたはストリームから１以上の入力シンボル（ＩＳ（０）、ＩＳ（１）、ＩＳ（２）、．．．）のシーケンスを生成し、各々の入力シンボルは値および位置（図１において括弧内の整数として示す）を有する。上述の通り、各々の入力シンボル符号が入力ファイルのＭビットとなるように、入力シンボルの可能な値（すなわちアルファベット）は一般的に２Ｍ個のシンボルのアルファベットである。Ｍの値は通常、使用する通信システム１００により決定されるが、汎用システムにおいては、Ｍが多様な用途で使用可能となるように、入力シンボル生成器１１０へのシンボルサイズ入力を含み得る。入力シンボル生成器１１０の出力は、符号器１１５に提供される。
【００５１】
スタティックキー生成器１３０は、スタティックキーＳ０、Ｓ１、．．．のストリームを生成する。生成されるスタティックキーの数は通常制限されており、符号器１１５の特定実施例に依存する。スタティックキーの生成は、更に詳細に以下に記載されている。ダイナミックキー生成器１２０は、符号器１１５により生成される各々の出力シンボルに対するダイナミックキーを生成する。各々のダイナミックキーは、同一入力ファイルのダイナミックキーの大部分が固有となるように生成される。例えば、ルビーＩに利用可能なキー生成器の実施例が記載されている。ダイナミックキー生成器１２０およびスタティックキー生成器１３０の出力は、符号器１１５に提供される。スタティックキー生成器１３０の動作は、乱数生成器１３５により生成される乱数に依存し得る。
【００５２】
ダイナミックキー生成器１２０により提供される各々のキーＩに基づいて、符号器１１５は、入力シンボル生成器により提供される入力シンボルから値Ｂ（ｌ）の出力シンボルを生成する。符号器１１５の動作は、以下で更に詳細に説明する。各々の出力シンボルの値はキーに基づいて、１以上の入力シンボルおよび入力シンボルから計算された１以上の冗長シンボルの何らかの関数により生成される。ある特定の出力シンボルのもととなった入力シンボルおよび冗長シンボルのコレクションは、本明細書において、出力シンボルの”付随シンボル（associated symbols）”あるいは単に”付随物（associates）”と称する。関数（”値関数”）および付随物の選択は、以下で更に詳細に記載される処理に従って行われる。常ではないが一般的には、Ｍは入力シンボルおよび出力シンボルに対して同一である、すなわち、それら双方は同数ビットに符号化する。
【００５３】
いくつかの実施形態では、付随物の選択のため入力シンボルの数Ｋが符号器１１５によって使用される。入力がストリーミングファイルである場合のように、Ｋが前もってわかっていない場合は、Ｋは単に推定値でもよい。また、値Ｋは、符号器１１５により生成される入力シンボルおよび中間シンボルに対する記憶領域を割り当てるために、符号器１１５によって使用されるかもしれない。
【００５４】
符号器１１５は、出力シンボルを送信モジュール１４０に提供する。また、送信モジュール１４０は、ダイナミックキー生成器１２０からこの種の各々の出力シンボルのキーを提供され得る。送信モジュール１４０は、出力シンボルを送信し、使用するキーイング方法に従い、送信モジュール１４０は、受信するモジュール１５０にチャネル１４５を介して、送信された出力シンボルのキーに関する何らかのデータを送信するかもしれない。チャネル１４５は誤りチャネルであると仮定されるが、通信システム１００の動作の必要条件ではない。送信モジュール１４０が出力シンボルおよびそれらのキーに関する必要なデータをチャネル１４５に送信するのに適しており、受信モジュールがチャネル１４５からシンボルおよびそれらのキーに関する潜在的な何らかのデータを受信するのに適している限り、モジュール１４０，１４５および１５０は、いかなる適切なハードウェア構成機器、ソフトウェア構成要素、物理メディアまたはそれのいかなる組合せでもありえる。また、受信モジュール１５０は、受信された出力シンボルの値が転送時にｖであった確率の推定値を与える推定器を組み込むことができ、それぞれの出力シンボルについてｖの推定値の確率を提供する。付随物の決定に使用する場合、Ｋの値を、チャネル１４５を介して送信してもよいし、または、符号器１１５および復号器１５５の事前に一致させセットしておいてもよい。
【００５５】
チャネル１４５が誤りチャネルであると仮定され、誤りは消去にもなり得るため、通信システム１００は、受信モジュール１５０から出力される出力シンボルと送信モジュール１４０に入力される出力シンボルとの間に１対１の対応があると仮定することは出来ない。事実、チャネル１４５がパケット網を含む場合、通信システム１００は、任意の２以上パケットの相対順序がチャネル１４５で転送中に保存されることさえ仮定することができない。従って、出力シンボルのキーは上述した１以上のキーイング方式を用いて決定され、必ずしも出力シンボルが受信モジュール１５０から出力される順番で決定されるというわけではない。
【００５６】
受信モジュール１５０は、出力シンボル値Ｂ（Ｉａ），Ｂ（Ｉｂ），Ｂ（Ｉｃ）をそれらの確率の推定値Ｐ（Ｉａ），Ｐ（Ｉｂ），Ｐ（Ｉｃ），．．．と共に復号器１５５に提供する。そして、これらの出力シンボルのキーについて受信モジュール１５０が受信した任意のデータがダイナミックキー再生器１６０に提供される。確率は、通常、可能な出力シンボルのセットでの確率分布である。例えば、出力シンボルがビットを表す場合、出力ビットの確率は転送前に出力ビットがゼロビットであったという確率に等しい（１ビットである確率は、１から０ビットである確率を減じたものである）。
【００５７】
ダイナミックキー再生器１６０は、受信された出力シンボルのダイナミックキーを再生し、復号器１５５にこれらのダイナミックキーを提供する。スタティックキー生成器１６３は、スタティックキーＳ０，Ｓ１，．．．を再生させて、復号器１５５にそれらを提供する。スタティックキー生成器は、乱数生成器１６４から値を受信するか、または、符号化および復号プロセスの間使用される乱数生成器１３５にアクセスする。乱数がこの種のデバイスに生成される場合、このアクセスは同一の物理デバイスへのアクセスでもよい。または、乱数生成器１３５と同一の挙動を達成する乱数生成器１６４において乱数を生成する同一のアルゴリズムへのアクセスでもよい。復号器１５５は、対応する出力シンボルと共に、ダイナミックキー再生器１６０およびスタティックキー生成器１６３により提供されるキーを使用し、入力シンボル（ＩＳ（０），ＩＳ（１），ＩＳ（２），．．．）を回復する。復号器１５５は入力ファイル再組立器１６５に回復された入力シンボルを提供し、それは入力ファイル１０１または入力ストリーム１０５のコピー１７０を生成する。
【００５８】
＜符号器＞  
図２は、図１に示される符号器１１５のある特定実施例のブロック図である。符号器１１５は、スタティック符号器２１０、ダイナミック符号器２２０および冗長計算機２３０を備えている。スタティック符号器２１０は、以下の入力を受信する：ａ）入力シンボル生成器１１０により提供されるおよび入力シンボルバッファ２０５に格納されたオリジナル入力シンボルＩＳ（０），ＩＳ（１），．．．，ＩＳ（Ｋ−１）；ｂ）オリジナル入力シンボルの数Ｋ；ｃ）スタティックキー生成器１３０により提供されるスタティックキーＳ０，Ｓ１，．．．；そして、ｄ）冗長シンボルの数Ｒ。これらの入力を受信すると、即座に、スタティック符号器２０５は、後述するようにＲ冗長シンボルＲＥ（０），ＲＥ（１），．．．．，ＲＥ（Ｒ−１）を計算する。一般的に、冗長シンボルは、入力シンボルと同じサイズを有する。特定実施例において、スタティック符号器２１０により生成される冗長シンボルは、入力シンボルバッファ２０５に格納される。入力シンボルバッファ２０５は論理的なものであってもよい。すなわち、ファイルは物理的にある場所に格納され、シンボルバッファ２０５の入力シンボルの位置は単にオリジナルファイルのシンボルの位置のリネームでもよい。
【００５９】
ダイナミック符号器２２０は、入力シンボルおよび冗長シンボルを受信して、下記に詳述されるようにして出力シンボルを生成する。一実施例において、冗長シンボルは入力シンボルバッファ２０５に格納され、ダイナミック符号器２２０は入力シンボルおよび冗長シンボルを入力シンボルバッファ２０５から受信する。
【００６０】
冗長計算機２３０は、入力シンボルの数Ｋから、冗長シンボルの数Ｒを計算する。この計算は、下記に詳述されている。
【００６１】
出力シンボルの生成速度がクリティカルな資源である状況において、出力シンボルの転送が始まる前に、入力ファイルはスタティック符号器２１０を使用して符号化されてもよく中間デバイスに格納されてもよい。このデバイスは、例えば、ダイナミック符号器２２０と異なる物理的位置に取付けられた記憶装置でもよく、ダイナミック符号器２２０その他と同一の物理デバイスに含まれてもよい。ファイルがダイナミック符号器２２０による符号化に先立って適切にスタティック符号器２１０によって符号化された場合には、ダイナミック符号器２２０を実装する計算デバイスはリソースをスタティック符号化に充てる必要はない。したがって、入力ファイルの出力シンボルの生成速度向上、他ファイルの出力シンボル生成、他タスク、その他のためのより多くのリソースを、ダイナミック符号化に充てることができる。スタティック符号化がダイナミック符号化に先立って実行されるか否かは特定の実施例に依存する。
【００６２】
＜スタティック符号器の概要＞  
スタティック符号器２１０の一般動作を、図３および４を参照して説明する。図３は、スタティック符号化の方法の簡略フローチャートを示す図である。ステップ３０５において、どれくらいの冗長シンボルが生成されたかについて情報を保持する変数ｊはゼロにセットされる。それから、ステップ３１０で、第１の冗長シンボルＲＥ（０）は、入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）の関数Ｆ０として計算される。それから、ステップ３１５で、変数ｊはインクリメントされる。次に、ステップ３２０で、冗長シンボルの全てが生成されたかどうか（すなわち、ｊがＲ−１より大きいか？）が検査される。Ｙｅｓである場合、フローは終了する。そうでない場合、フローは、ステップ３２５へ進む。ステップ３２５において、ＲＥ（ｊ）は、入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）および前に生成された冗長シンボルＲＥ（０），．．．，ＲＥ（ｊ−１）の関数Ｆｊとして計算される。Ｒ個の冗長シンボルが計算されるまで、ステップ３１５，３２０および３２５は繰り返される。
【００６３】
再度図１および図２を参照する。実施例によっては、スタティック符号器２１０は、スタティックキー生成器１３０から１以上のスタティックキーＳ０，Ｓ１，．．．を受信する。これらの実施例では、スタティック符号器２１０は、いくつかの又は全部の関数Ｆ０，Ｆ１，．．．Ｆｊ−１を決定するために、スタティックキーを使用する。例えば、スタティックキーＳ０は関数Ｆ０を決定するために用いられ、スタティックキーＳ１は関数Ｆ１その他を決定するために用いられる。あるいは、１以上のスタティックキーＳ０，Ｓ１，．．．は関数Ｆ０を決定するために用いられ、１以上のスタティックキーＳ０，Ｓ１，．．．は関数Ｆ１その他を決定するために用いられる。他の実施態様において、スタティックキーが必要でなく、したがって、スタティックキー生成器１３０は必要でない。
【００６４】
次に図２および図３を参照する。実施例によっては、スタティック符号器２１０により生成される冗長シンボルは、入力シンボルバッファ２０５に格納される。図４は、スタティック符号器２１０の一実施例の動作の簡略図である。特に、スタティック符号器２１０は、入力シンボルバッファ２０５にから受信した入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）の関数Ｆｊとして、冗長シンボルＲＥ（ｊ）（ＲＥ（０），．．．，ＲＥ（ｊ−１））を生成する。そして、入力シンボルバッファ２０５の中へと戻してそれを格納する。関数Ｆ０，Ｆ１，．．．，ＦＲ−１の正確な形式は、特定用途に依存する。常ではないが、一般的には、関数Ｆ０，Ｆ１，．．．，ＦＲ−１は、それらの対応する引数のいくつかあるいは全ての排他的論理和を含む。上述の通り、これらの関数は、図１のスタティックキー生成器１３０により生成されるスタティックキー使用してもよいし使用しなくてもよい。例えば、後述する１つの特定実施例で、最初のいくつかの関数はハミング符号を実装し、スタティックキーＳ０，Ｓ１，．．を使用しない。ところが、残りの関数は、低密度パリティチェック符号を実装し、スタティックキーを明示的に使用する。
【００６５】
＜ダイナミック符号器の概要＞  
図２を再び参照する。ダイナミック符号器２２０は、入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）および冗長シンボルＲＥ（０），．．．，ＲＥ（Ｒ−１）を受信し、キーＩに対応する各々の出力シンボルを生成する。オリジナル入力シンボルおよび冗長シンボルを含んでいるコレクションは、今後”ダイナミック入力シンボル”のコレクションと称する。図５は、ダイナミック符号器の一実施例の簡略ブロック図である。この符号器はルビーＩに記載されている符号器の実施例と類似している。ルビーＩはこの種の符号器の動作に関する更なる詳細を記載している。
【００６６】
ダイナミック符号器５００は、重みセレクタ５１０、アソシエータ５１５、値関数セレクタ５２０および計算機５２５を含む。図５に示すように、Ｋ＋Ｒ個のダイナミック入力シンボルが、ダイナミックシンボルバッファ５０５に格納される。実施例において、ダイナミックシンボルバッファ５０５は、図２の入力シンボルバッファ２０５である。他の実施態様において、ダイナミックシンボルバッファ５０５は、入力シンボルバッファ２０５と別である。図１に示されるダイナミックキー生成器１２０により提供されるダイナミックキーＩは、重みセレクタ５１０、アソシエータ５１５および値関数セレクタ５２０へ入力される。また、ダイナミック入力シンボルの数（Ｋ＋Ｒ）は、これらの３つの構成要素５１０、５１５および５２０に提供される。計算機５２５は、重みセレクタ５１０、アソシエータ５１５および値関数セレクタ５２０からの出力を受信して、ダイナミックシンボルバッファ５０５からシンボルを受信するために接続される。計算機５２５は、出力シンボル値を生成する。図５に示される要素に対する他の等価な装置が用いられ、これが本発明による符号器の１つの実施例であると理解されなければならない。例えば、ルビーＩおよびショクロラヒＩは、本発明による他の実施例において使用可能な他の符号器を記載している。
【００６７】
動作において、Ｋ＋Ｒ個のダイナミック入力シンボルがスタティック符号器２１０から受信されて、ダイナミック入力シンボルバッファ５０５に格納される。前述したように、各々のダイナミック入力シンボルは、位置（例えば、入力シンボルの位置は入力ファイルのオリジナル位置）および値を有する。ダイナミック入力シンボルは、格納されたダイナミック入力シンボルの位置が決定可能である限り、受信された順番でダイナミック入力シンボルバッファ５０５に格納される必要はない。キーＩおよびダイナミック入力シンボルの数Ｋ＋Ｒを使用して、重みセレクタ５１０がキーＩを有する出力シンボルの”付随物”であるダイナミック入力シンボルの数Ｗ（Ｉ）を決定する。キーＩ、重みＷ（Ｉ）およびダイナミック入力シンボルの数Ｋ＋Ｒを用いて、アソシエータ５１５は出力シンボルに関連付けられたダイナミック入力シンボルの位置のリストＡＬ（Ｉ）を決定する。アソシエータ５１５が定刻より早くＷ（Ｉ）を知ることなくＡＬ（Ｉ）を生成可能な場合、Ｗ（Ｉ）が別にまたは明示的に算出される必要はないと理解されなければならない。一旦、ＡＬ（Ｉ）が生成されると、Ｗ（Ｉ）はそれがＡＬ（Ｉ）の付随物の数であることから容易に決定される。
【００６８】
アソシエータ５１５は、入力として受信されたキーＩ、数Ｎおよび数ｔをマッピングし、０およびＮ−１間の整数のリストＸ（０），．．．，Ｘ（ｔ−１）を生成する。望ましくは、これらの整数は、区別され範囲内において一様に分散される。例えば、図５のダイナミック符号器５００の場合、ＮはＫ＋Ｒに等しく、ｔはＷ（Ｉ）に等しく、そして、ＡＬ（Ｉ）はリストＸ（０），．．．，Ｘ（ｔ−１）である。
【００６９】
アソシエータ５１５によるマッピングは種々の形式になリ得る。ランダムまたは疑似ランダムのビットのソースにアクセスすることにより、その出力をランダムにすることができる。しかしながら、それは、符号器および復号器によって、同一のキーＩ、同一のＮおよび同一のｔとなる出力を生成するよう選択されなければならない。この必要条件を満たすために、擬似ランダムシーケンスがキーＩのシードとして符号器および復号器により生成されることができる。擬似ランダムシーケンスの替わりに、出力の計算のため真ランダムシーケンスが用いられるかもしれない。しかし、出力を生成するために使用されるランダムシーケンスが復号器に伝えられることが必要とされなければ役立つ。
【００７０】
再び図５を参照する。一旦Ｉ、Ｗ（Ｉ）およびＡＬ（Ｉ）が分かると、出力シンボルの値Ｂ（Ｉ）は値関数ＶＦ（Ｉ）に基づいて計算機５２５により算出される。適切な値関数の１つの特性は、ＡＬ（Ｉ）により指示される付随物の値が、出力シンボル値Ｂ（Ｉ）およびＡＬ（Ｉ）により指示される他のＷ（Ｉ）−１個の付随物の値から導出可能ということである。このステップで使用される望まれる値関数は、この特性を満たし容易に計算、逆計算が可能な、ＸＯＲ値関数である。しかしながら、他の適切な値関数が、その代わりに使われるかもしれない。例えば、ルビーＩは使用可能な他の適切な値関数を記載している。
【００７１】
使用する場合、値関数セレクタ５２０は、キーＩおよびＫ＋Ｒから値関数ＶＦ（Ｉ）を決定する。１つのバリエーションにおいて、値関数ＶＦ（Ｉ）は、全てのＩについて同一の値関数ＶＦである。このバリエーションにおいては値関数セレクタ５２０が必要でなく、計算機５２５は値関数ＶＦにより構成されることができる。例えば、値関数は、全てのＩについてＸＯＲである。出力シンボル値は、その付随物の全ての値のＸＯＲ（排他的論理和）である。
【００７２】
各々のキーＩについて、重みセレクタ５１０はＩおよびＫ＋Ｒから重みＷ（Ｉ）を決定する。１つのバリエーションにおいて、重みセレクタ５１０は、キーＩを用いてＷ（Ｉ）を最初にランダムな参照数を生成し、そうすると、Ｗ（Ｉ）の値が保存される重みセレクタ５１０内（あるいは関連付けられた）分布テーブルを参照するのにこの値を利用することができる。以下、この種の分布テーブルが形成され、アクセスされる方法のより詳細な説明について説明する。一旦重みセレクタ５１０がＷ（Ｉ）を決定すると、この値はアソシエータ５１５および計算機５２５に提供される。
【００７３】
リストＡＬ（Ｉ）、重みＷ（Ｉ）および値関数ＶＦ（Ｉ）が値関数セレクタ５２０または予め選択された値関数ＶＦを使用して、計算機５２５は、ダイナミック入力シンボルバッファ５０５内のＡＬ（Ｉ）によって指示されたＷ（Ｉ）個のダイナミック入力シンボルにアクセスし、現在の出力シンボルの値Ｂ（Ｉ）算出する。ＡＬ（Ｉ）の算出の手順の実施例は後述する、しかし、他の適切な手順がその代わりに用いられるかもしれない。望ましくは、復号器が利用可能なＡＬ（Ｉ）をすでに有しない場合、手順は各々の入力シンボルに既知の出力シンボルのための付随物として選択されるおおまかな均一な可能性を与え、復号器が複製可能な方法の選択を行う。
【００７４】
それから、ダイナミック符号器５００はＢ（Ｉ）を出力する。すなわち、実質的に、ダイナミック符号器５００は選択された入力シンボルのいくつかの値関数として出力シンボル値Ｂ（Ｉ）を生成するため、図６に示される動作を実行する。ここに示した例では、値関数はＸＯＲである、出力シンボルの重みＷ（Ｉ）は３である。そして、付随するダイナミック入力シンボル（付随物）は位置０，２およびＫ＋Ｒ−２にあって、それぞれ値としてＩＳ（０）、ＩＳ（２）およびＲＥ（Ｒ−２）を有する。したがって、以下のように出力シンボルは算出される。
【数１】
0005415471.tif 000002
【００７５】
（Ｉの値について）  
値関数ＸＯＲが使われる場合、冗長シンボルはオリジナルシンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）と同一のビット数を有し、出力シンボルを同一のビット数を有すると理解されなければならない。
【００７６】
生成された出力シンボルは、上述の通りに送受信される。本願明細書において、いくつかの出力シンボルが消失したかもしれないかまたは乱れているようにされたかもしれないか、または一つ以上の符号器により生成されたかもしれないことが、仮定される。しかしながら、受信される出力シンボルがそれらのキーの指示およびそれらの値Ｂ（Ｉ）が正確であるといういくらかの保証により受信されたことが仮定される。図１に示すように、それらの受信された出力シンボルは、ダイナミックキー再生器１６０のそれらの指示から復元されるそれらの対応するキー、値ＫおよびＲ、および、およびスタティックキー生成器１６３によって再生するスタティックキーＳ０，Ｓ１，．．．と共に、復号器１５５の入力される。復号器１５５は、送信された値Ｂ（Ｉ）の確率指示示度確率を受信し使用するかもしれない。
【００７７】
＜スタティック符号器＞  
オリジナルデータの回復が誤り得るというような方法で、スタティック符号器の主機能は冗長情報をオリジナルデータに加えることになっている。この種の冗長情報は、ダイナミック復号器が回復することができなかった入力シンボルを回復するために、復号器をアシストすることができる。代表的アプリケーションにおいて、スタティック符号器は、消去にかかわらず所望の精度に回復を保証することを必要とされる冗長シンボルの数に関して、および／または、符号化プロセスおよび／または復号プロセスの計算能力に関して効率的でなければならない。例えば、アプリケーションで、ダイナミック復号器のパフォーマンスにより示される所与の目標エラー率ｐに対して、最大でデータの割合ｐがエラーになる際、オリジナルデータの速い回復を保証しつつ、できる限り小さい冗長シンボルの数Ｒを生成する。
【００７８】
これらの必要条件を満たしている符号の種類はＬＤＰＣ符号である。そして、当業者には有名である。これらの符号は多くの場合オリジナルデータを回復できる一方、まれにそれらが少数のオリジナル入力シンボル以外のすべてを回復する場合がある。したがって、いくらかの誤りがある場合、実施例によってはＬＤＰＣ符号化の前に入力データはオリジナルデータを回復できる符号を使用して最初に符号化される。この最初の符号化は、最初の複数の冗長シンボルを生成する。この最初の符号化の後、オリジナルシンボルの複数および冗長シンボルの最初の複数個はＬＤＰＣ符号器を使用して符号化される。符号化の最初の層のための実施例はＢＣＨ符号である。そして、それは当業者には有名である。例えば２層あるいは２層以上の符号方式などの他方式もまた使用され得ると理解されることになっている。
【００７９】
図７は、本発明によるスタティック符号器の１つの特定実施例の簡略ブロック図である。スタティック符号器６００は、パラメータ計算機６０５、ＢＣＨ符号器６１０および低密度パリティチェック（ＬＤＰＣ）符号器６２０を備えている。パラメータ計算機６０５はＫ個の入力シンボルおよび生成されるＲ個の冗長シンボルを受信して、パラメータＤおよびＥを生成する。ＤはＢＣＨ符号器６１０により生成される冗長シンボルの数を示す。そして、ＥはＬＤＰＣ符号器６２０により生成される冗長シンボルの数を示す。パラメータＤはＢＣＨ符号器６１０に提供される。そして、パラメータＥはＬＤＰＣ符号器６２０に提供される。
【００８０】
ＢＣＨ符号器６１０は、入力シンボルバッファ６２５から入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）を受信するために連結され、入力シンボルの数ＫおよびパラメータＤを受信する。応えて、ＢＣＨ符号器６１０は、ＢＣＨ符号に従ってＤ＋１個の冗長シンボルＨＡ（０），ＨＡ（１），．．．，ＨＡ（Ｄ）を生成する。実施例において、入力シンボルバッファ６２５は、図２の入力シンボルバッファ２０５である。ＢＣＨを符号化している処理は、Ｄ＋１個の冗長シンボルをオリジナルのＫ個の入力シンボルに加え、Ｄはアプリケーションに依存する。符号器６１０は、誤り訂正および消去訂正符号の当業者にとって公知のいかなる方法でも行うことができる。
【００８１】
符号器６２０がそうであるＬＤＰＣは入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）を受信するために連結され、Ｋ＋Ｄ＋１個の入力シンボルおよびＢＣＨ符号化冗長シンボル、パラメータＥ、および、スタティックキーＳ０、Ｓ１，．．．を受信する。応えて、ＬＤＰＣ符号器６２０は、ＬＤＰＣ符号によりＥ個の冗長シンボルを生成する。ＬＤＰＣ符号器により算出されるＥ個の冗長シンボルは、Ｒ−Ｄ−１に等しく、Ｒは、冗長シンボルの数である。当業者に公知であるように、ＬＤＰＣ符号を使用し情報を符号化するさまざまな方法がある。ＬＤＰＣ符号は、グラフ構造により表されることができ、メッセージノードのセット、検査ノードおよびノードを点検するためにメッセージノードを接続しているエッジを含んでいる。有効なＬＤＰＣ符号語のセットは、各々のチェックのノードのためのメッセージノードの設定のセットであり、隣接したメッセージノードのＸＯＲは０である。特定のアプリケーションにおいて、符号器の実装を単純化し、更に復号器の誤り確率の算出をより容易にするため、メッセージノードが全て同じ度数を有することが望ましい。ＬＤＰＣ符号器６２０は、誤り訂正および消去訂正符号の当業者にとって公知のいかなる方法で行うこともできる。
【００８２】
図８は、図７に示されるスタティック符号器を使用する本発明の一実施例の動作である。特に、ＢＣＨ符号器６１０は、入力シンボルバッファ６２５（または図２に記載の２０５）から入力シンボルを受信し、Ｄ＋１個のＢＣＨ符号化冗長シンボルを生成し、入力シンボルバッファ６２５に格納する。それから、ＬＤＰＣ符号器６２０は、入力シンボルバッファ６２５から入力シンボルとＤ＋１個のＢＣＨ符号化冗長シンボルを受信し、Ｅ個のＬＤＰＣ符号化冗長シンボルを生成し、入力シンボルバッファ６２５に格納する。
【００８３】
上述の通り、実施例によっては、ＬＤＰＣ符号器６２０は図１のスタティックキー生成器１３０により生成されたスタティックキーＳ０、Ｓ１，．．．を受信する。ある実施例において、スタティックキー生成器１３０は、シードを受信しランダム様の数（スタティックキーＳ０、Ｓ１，．．．）を生成する乱数生成器である。シードは、種々の形式になることができる。例えば、それは、真のランダム数生成器の値であってもよい。別の例として、シードはＣＰＵクロックからの決定方法により得られるたストリングでもよい。シードがたとえ何であっても、スタティックキーの同一のシーケンスが復号器により生成可能とするため、それは復号器に伝えられなければならない。多くのアプリケーションでは、あまり大きくないシードであることが有利である。多くのアプリケーションにおいて、シードは３２ビット整数または６４ビット整数である。
【００８４】
再び図１を参照する。いくつかのアプリケーションにおいては、チャネル１４５を通じて送信されるファイルまたはストリームは小さい。例えば、入力ファイルは、短い音声メッセージ、または、数十キロバイトまたは数千バイトまたは数ビットの集合を含むウェブページのコンテンツかもしれない。上述したスタティック符号器の実施例において、この種のシナリオにおいて少なくとも良い。例えば、いくつかの上記の実施例は、結果としてメモリおよびプロセッサ速度を非効率的な使うため、データ復元が遅くなリうる。また、いくつかの上記の実施例は、システムのユーザによってセットされた信頼度パラメータでデータを復元するため、より大きい受信オーバーヘッドが必要となリ得る。さらに、いくつかの上記の実施例は、要求されるより信頼性が低いデータの復元となり得る。
【００８５】
入力シンボルの数が減少するときに、復号器の障害率が増加することが分かっている。また、これが主にオリジナルコンテンツのサイズが比較的小さい場合、符号化プロセスがオリジナルコンテンツに関する十分な情報を生成しないという理由であることも分かっている。従って、オリジナルシンボルに関する詳細な情報を伝達する冗長シンボルを生成する符号器の他の実施例は記載されている。
【００８６】
図９は、本発明の一実施例に従って符号化する符号器の処理の簡略フローチャートである。
【００８７】
図に示されるように、ステップ８０５で、変数ｉはゼロに初期化される。変数ｉは、すでに生成される冗長シンボルの数の情報を保持する。ステップ８１０において、数ｔは、Ｋ／２以上の最も少ない奇数の整数として算出される。ステップ８１５において、値Ｐ１，Ｐ２，．．．，Ｐｔは、Ｋ、ｔおよびスタティックキーＳｉに基づいて生成される。値Ｐ１，Ｐ２，．．．，Ｐｔは、入力シンボルの位置が冗長シンボルを生成するために使用される。ある特定の実施例では、図５のアソシエータ５１５のようなアソシエータは、Ｐ１，Ｐ２，．．．，Ｐｔを生成するために用いる。特に、値ｔはＷ（Ｉ）の入力として提供され、値ＫはＫ＋Ｒの入力として提供され、スタティックキーＳｉはキーＩの入力として提供される。ｔの多くの異なる値が類似した符号化効果を得る点に留意する必要があり、したがって、この特定の選択は単なる例である。
【００８８】
ステップ８２０において、ＲＥ（ｉ）の値は、値ＩＳ（Ｐ１），ＩＳ（Ｐ２），．．．，ＩＳ（Ｐｔ）のＸＯＲとして計算される。ステップ８２５において、変数ｉは次の冗長シンボルの計算を準備するために１だけインクリメントされる。そして、ステップ８３０で、全ての冗長シンボルが計算されたかどうかが判定される。Ｎｏであれば、フローはステップ８１５に戻る。
【００８９】
＜復号器＞  
図１０は本発明による復号プロセスを例示している簡略ブロック図である。そして、それは例えば図１の復号器１５５のような復号器により実装される。
【００９０】
プロセスは、ステージでダイナミック入力シンボルを復号化する。ステップ９０５において、復号器は、受信された出力シンボルの付随物のリストを準備する。これは、あらゆる出力シンボルについて、復号器が付随するダイナミック入力シンボルのセットを計算して、情報をいくつかのテーブルに格納することを意味する。そのために、Ｋ個の入力シンボルおよびＲ個の冗長スタティックシンボル関するのと同様に、復号器は、受信された出力シンボルに対応するキーにアクセスすることができる。ステップ９１０において、復号器は、出力シンボルの付随物の表に、それらの付随物と共に検査シンボルのリストを加える。本発明の好ましい実施例において、検査シンボルはダイナミック入力シンボルの依存を表す。例えば、検査シンボルの付随物がインデックス１０、１９および３２を有するダイナミック入力シンボルである場合、対応するダイナミック入力シンボルのＸＯＲがこの値は固定値になる。本発明の好ましい実施例において、この値はゼロであるが必須ではない。
【００９１】
ステップ９１５で、プロセスは、検査シンボルの値および出力シンボルのそれを初期化する。このステップにおいて、初期化は、個々の出力および検査シンボルに対する、可能な出力シンボル値と検査シンボル値のセットの確率分布の、それぞれの関連付けを意味している。この確率分布は、次のステップの計算効率を向上させるために、少ない精度で既知でもよい。また、割り当てられた確率は、出力または検査シンボルアルファベットの実質的に多くの値に対してゼロであってもよい。例えば、好ましい本発明の実施例は、検査シンボルの値は０であり、関連する確率分布が０に対し値が１であり、検査シンボルアルファベットの他のいかなる要素に対して０の値である。
【００９２】
ステップ９２０および９３０は、反復的にダイナミック入力シンボルの確率を更新する。このタスクのための、例えば、ｂｅｌｉｅｆ−ｐｒｏｐａｇａｔｉｏｎアルゴリズム、ｍｉｎ−ｓｕｍアルゴリズム、または、量子化されたｂｅｌｉｅｆ−ｐｒｏｐａｇａｔｉｏｎアルゴリズムのような若干の他のバリエーションなどの周知のアルゴリズムがある。通常、これらのアルゴリズムで、出力または検査シンボルおよびダイナミック入力シンボルとの各々の結合は２つの確率分布を保持する。そして、それは各回において更新される。これらの確率分布は、アルゴリズムの間、前後にパスするメッセージとみなすことが出来る。アルゴリズムの第１のラウンドにおいて、検査および出力シンボルは、それらの付随するダイナミック入力シンボルに自分自身の確率分布をパスする。これは、出力および検査符号およびダイナミック入力シンボルとの結合上のメッセージの１セットを指定する。次のラウンドにおいて、それが全ての他の接続に沿って受信したメッセージに基づいて、あらゆるダイナミック入力シンボルは、この種のあらゆる接続のための第２のメッセージを算出する。これに続いて、あらゆる検査または出力シンボルは、それが全ての他の接続から受信したメッセージなどに基づいてあらゆる接続上の値の第１のセットを更新する。各ラウンド終了後、ダイナミック入力シンボルは、入力される確率分布に基づいてそれらの値の最高の推測を算出して、それらがそれらの値について相当に確かか否か決定する（ステップ９３０）。全てのダイナミック入力シンボルがそれらの値について確実性が所定レベルを超えた場合、処理は終了する。
【００９３】
この種のメッセージ受渡し処理のいくつかの変更態様が可能である。例えば、プロセスの１回以上の繰り返しの間、ダイナミック入力シンボルの全てがそれらの値について十分な確実性を得るというわけではない、そして、これらの値は復号器によりセットされ、付随する出力および検査シンボルの確率分布が変化する。そして、それらのダイナミック入力シンボルは復号プロセスから取り除かれることができる。特定の場合において、この種の手順は、結果として計算リソースの相当な節約に導くことができる。他のありうる修正は、別々にダイナミック出力シンボルおよび検査シンボルを考慮して、復号化の異なるステージにおいて、それらを使用することである。いくつかの実施例において、この種の時分割は役立ち、全てのダイナミック出力シンボルを処理した後に残るスタティックシンボルを使用して誤りの回復を可能とすることが出来る。例えば、復号器は、ダイナミック出力シンボルだけを考慮して、検査および入力シンボルとの結合の値を更新しないことから始めることができる。所定の繰り返し数だけ処理が繰り返されたあと、または復号器が定常状態に達したあと、またはいくつかの他の基準に従って、これらの接続上の値が更新される。
【００９４】
上記の復号器の具体例は、次に示される。本実施例において、出力シンボルアルファベットは、０および１からなるバイナリのアルファベットである。このアルファベット上の確率分布は、したがって、１を得る確率であるために仮定される単一の負でない実数ｐにより記載されていることができる。付随するダイナミック入力シンボルおよび出力および検査シンボルの間で通過するメッセージは任意の実数であり、−Ｉｎｆは他のいかなる数よりも小さい、そして、Ｉｎｆは他のいかなる数も大きいような２つの特定のメッセージＩｎｆおよび−Ｉｎｆを付与している。この場合、あらゆる出力シンボルは、出力シンボルが転送より前の１であったという確率を記載している関連する数により受信された。ステップ９１５は、あらゆる出力シンボルに対しこれらの値を初期化して、さらに、（検査符号の値が確率１に対して０の値であることを意味する）０に検査シンボルの値を初期化する。
【００９５】
この場合の更新ルールは以下の通りである。
最初のラウンドで、あらゆる出力または検査シンボルは、その初期値をその付随するダイナミック入力シンボルに送信する。以後、あらゆるダイナミック入力シンボルは、以下の値をその関連する出力または検査シンボルＳに送信する。Ｓ以外の全ての関連シンボルのために、ダイナミック入力シンボルは、確率ｐを受信して、ｌｎ（ｐ／（１−ｐ））を算出して、数ｔを得るためにこれらの数を合計して、１／（ｅｘｐ（ｔ）＋１）をＳに送信する。ここで、ｌｎ（ｘ）は、ｘの自然対数である。そして、ｅｘｐ（ｘ）は、ｘの指数関数である。
【００９６】
次のラウンドにおいて、あらゆる出力または検査シンボルは、その付随するダイナミック入力シンボルＩに以下の値を送信する。それはＩ以外の全ての付随するダイナミック入力シンボルから全ての入って来る数を集める。そして、各この種の数に対して１−２＊ａを計算しこれらの数を掛け合わせ、この結果に１−２＊ｚを掛け合わせ値ｂを導出する。ここで、ｚは、シンボルの初期値であって、Ｉに（１−ｂ）／２を入力する。
【００９７】
上記の処理は、周知のｂｅｌｉｅｆ−ｐｒｏｐａｇａｔｉｏｎアルゴリズムを使用しているため、より詳細にここで記載する必要はない。他のバリエーションが、その代わりに使われるかもしれない。
【００９８】
復号器１５５の異なる実施例は、図１１に示される。それは、ダイナミック復号器１００５とスタティック復号器１０１０を備えている。ダイナミック復号器１００５は、図１の受信モジュール１５０から出力シンボルＢ（Ｉａ），Ｂ（Ｉｂ），．．．を受信し、ダイナミックキー再生器１６０からダイナミックキーＩａ，Ｉｂ，Ｉｃ，．．．を受信する。これらのデータを受信すると、ダイナミック復号器１００５は、入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）および冗長シンボルＲＥ（０），．．．，ＲＥ（Ｒ−１）を復元を試みる。例えば、ｂｅｌｉｅｆ−ｐｒｏｐａｇａｔｉｏｎアルゴリズムまたはその変形のいずれかを使用することによって、一般の復号器と同様に復元を行うことが出来る。本本発明の若干の実施例の１つの効果は、ダイナミック復号器１００５が入力シンボルの復号化全部を終える必要はないということである。そして、スタティック復号器１０１０は、ダイナミック復号器１００５が回復しなかった入力シンボルを復号化するために用いることができる。復号器が上で記載されている方法の時分割を使用するときにこれは特に役立つ。
【００９９】
ダイナミック復号器１００５によって、得られた入力シンボルおよび冗長シンボルに対応する確率分布は、復元バッファ１０１５に格納される。ダイナミック復号化終了後、スタティック復号器１０１０は、ダイナミック復号器１００５により回復されないいかなる入力シンボルも回復することを試みる。特に、スタティック復号器１０１０は復元バッファ１０１５から入力シンボルおよび冗長シンボルを受信する。加えて、スタティックキー生成器１６３（図１）が使われる場合、スタティック復号器１０１０はスタティックキーＳ００，Ｓ１，Ｓ２，．．．を受信する。図１を再度参照する。１つの特定実施例で、スタティックキーは、通信チャネル１４５を介してスタティックキー生成器１６３を駆動する乱数生成器１６４に乱数生成器１３５によって使用される一般的なシードを伝達することによって再生可能となる。
【０１００】
回復された入力シンボルは、入力ファイル再構成器１６５に提供される。スタティック復号器は、ここで記載されている他の復号器と同じ原理に続くことができる。しかしながら、本発明のいくつかの実施例において、スタティック復号器のためのより速い復号化アルゴリズム（例えば従来技術において、技術のそれらにとって公知のビットフリッピング復号器）を使用してもよい。ある場合には、スタティック符号化はＢＣＨ符号のような従来の符号を含む。スタティック復号プロセスは、２つの異なる復号器を含むことができ、この種の符号が用いられる場合１つはＬＤＰＣ符号および１つはＢＣＨ符号のために使用される。ＬＤＰＣ符号のための復号器はｂｅｌｉｅｆ−ｐｒｏｐａｇａｔｉｏｎ復号器またはその変形のいずれかであってもよい、または、それは他のいかなる効率的な復号化アルゴリズム（例えばビットフリッピングアルゴリズム）でもありえる。従来技術において、技術のそれらにとって公知にしながら、ＢＣＨ符号のための復号器はバーリカンプマッシーアルゴリズムを使用している標準復号器であってもよい、または、ｂｅｌｉｅｆ−ｐｒｏｐａｇａｔｉｏｎ復号器であってもよい。
【０１０１】
図１２は、本発明による復号化のための方法の簡略フローチャートを例示している。ステップ１１０５において、Ｑ個の出力シンボルが復号器により受信される。Ｑの値は、入力シンボルの数および使用するある特定のダイナミック符号器に依存する。この値は受信モジュール１５０のような受信モジュールにより送り届けられ、以下で更に詳細に説明する。Ｑの値は、また、復号器が入力シンボルを回復できる所望の精度に依存する。例えば、復号器が高確率を有する入力シンボルの全てを回復できることが要求される場合、入力シンボルの数が大きくなるよう、Ｑは選択されなければならない。特に、用途によっては、入力シンボルの数が大きいときに、Ｑは３％未満ほどオリジナル入力シンボルの数大きくなる。ほかの応用において、入力シンボルの数が少ないときに、Ｑは１０％ほど入力シンボルの数大きくなる。復号器は入力シンボルの全てを復号化することができないことが受け入れられる場合、Ｑは入力シンボルの数より少なくありえる。全体の符号システムの１つの目的は、可能な限り数Ｑを減少させることである、その一方で、復号プロセスの成功に関する良好な見込みに基づく保証を維持する。
【０１０２】
ステップ１１１０において、例えばダイナミック復号器１００５のようなダイナミック復号器はＱ個の受信した出力シンボルから入力シンボルおよび冗長シンボルを再生するさせる。ステップ１１０５および１１１０が実質的に並行して実行されることができることは、よく理解されていることになっている。例えば、ダイナミック復号器は、Ｑ個の出力シンボルを受信する前に、入力シンボルおよび冗長シンボルを再生させ始めることができる。
【０１０３】
ダイナミック復号器がＱ個の出力シンボルを処理したあと、入力シンボルが所望の精度に回復されたかどうかは判定される。所望の精度は、例えば、入力シンボルの中で全て入力シンボルのいくつかあるいは全て、パーセンテージ、その他であってもよい。入力シンボル全部より少ない場合、あるいは他の特定の確率を下回る場合、ｂｅｌｉｅｆ−ｐｒｏｐａｇａｔｉｏｎまたは他の軟判定復号化方法が用いられる。Ｙｅｓであればフローは終了する。Ｎｏの場合はフローは、ステップ１１２０へ進む。ステップ１１２０において、例えばスタティック復号器１０１０のようなスタティック復号器は、ダイナミック復号器は回復することができなかったいかなる入力シンボルも回復することを試みる。スタティック符号器が、ダイナミック符号器が回復した入力シンボルおよび冗長シンボルを処理した後フローは終了する。
【０１０４】
図１３は、本発明の態様に従って復号化のための方法の他の実施例を例示している簡略フローチャートである。この実施例は、図１２に関して記載されて、それと類似していて、共通してステップ１１０５，１１１０、１１１５および１１２５を含む。しかし、ステップ１１２５の後、フローは、ステップ１１３０へ進に、そこで、入力シンボルが所望の精度に回復されたかどうかは、決定される。Ｙｅｓの場合フローは終了する。Ｎｏの場合はフローはステップ１１３５へ進む。ステップ１１３５において、一つ以上の付加的な出力シンボルが受信される。それから、フローはステップ１１１０へ進行する。その結果、ダイナミック復号器および／またはスタティック復号器は、残った未回復の入力シンボルの回復を試みることができる。
【０１０５】
図１４は、本発明による復号化のための方法のさらにもう一つの実施例を例示している簡略フローチャートである。この実施例は、上述の時分割手順に関するものである。ステップ１１５５において、出力シンボルは復号器により受信される。そして、ステップ１１６０で、ダイナミック復号器は受信された出力シンボルから入力シンボルおよび冗長シンボルを再生させる。それから、ステップ１１６５で、ダイナミック復号化が処理を終了するかどうかが判定される。この判定は、処理した出力シンボルの数、回復される入力シンボルの数、付加的な入力シンボルが回復されているレート（率）、出力シンボルを処理することに費やされる時間、などの一つ以上に基づくことがありえる。ステップ１１５５，１１６０および１１６５が実質的に並行して実行されることができることは、よく理解されていることになっている。例えば、復号器が出力シンボルを受信し続けながら、ダイナミック復号器は入力シンボルおよび冗長シンボルを再生させ始めることができる。加えて、出力シンボルが受信されると共に、および／または出力シンボルがダイナミック復号器によって、処理している間、ダイナミック復号プロセスを止めるべきかどうかの評価が周期的に実行されることができる。
【０１０６】
ステップ１１６５において、そのダイナミック復号化が停止されることになっていないと判定される場合、フローはステップ１１５５へ進行する。しかし、ステップ１１６５において、それがダイナミック復号化が停止されると判定される場合、フローはステップ１１７０へ進む。ステップ１１７０において、入力シンボルが所望の精度に回復されたかどうかは、決定される。Ｙｅｓの場合、フローは終了する。Ｎｏの場合はフローはステップ１１７５へ進む。ステップ１１７５において、スタティック復号器は、ダイナミック復号器は回復することができなかったいかなる入力シンボルも回復することを試みる。スタティック符号器がダイナミック符号器によって回復された入力シンボルおよび冗長シンボルを処理した後、フローは終了する。
【０１０７】
＜受信モジュール＞  
図１に関して、受信モジュール１５０の主タスクはチャネルから出力シンボルを受信し、シンボルの確率分布を算出して、復号器に対する出力シンボルのキーとこの情報を送り届ける。いくつかの実施形態では、受信モジュールは受信された出力シンボルが未知の入力シンボルについて含む情報量上の推定値を算出する。そして、出力シンボルの累積的な情報が入力シンボルを回復するのに十分なときに、それは、一層の出力シンボルの受信をやめるこの推定値を用いることができる。この推定値は、非常に粗くてもよい（例えばちょうど値が”正確””不正確”かどうかの指示）か、非常に微細でもよい（例えばシンボルの値が入力アルファベットからの任意の値であるという確率）。特に、推定値が非常に粗いときには、推定値それ自身が誤りであるかもしれない。
【０１０８】
実際には、確率分布は、出力シンボルを表している通信信号の強さおよび強度に基づいて推定されることができる。例えば、この種のデータは、復調技術から得られることが可能である。例えば、あらゆる出力シンボルが２ビット（それは四相位相変調（ＱＰＳＫ）方法を使用して調整される）から成ると仮定する。そして、入って来る搬送波の位相はｚであると推定される。それから、確率分布は、転送の前に出力シンボルの値のために得られることが可能である。ここで、４値のいずれかの確率は、受信された位相ｚまたは距離のいくつかの関数から対応するＱＰＳＫコンスタレーションの距離に比例している。この確率分布は、また、信号の強度または他の物理的特性を組み込むことができる。
【０１０９】
例えばＱＰＳＫ変調スキームの２ビットのための各々の出力シンボル符号化のように、各々の出力シンボルをキャリア１つのシンボルを含ん場合最もシンプルになるが、本発明は、この種の場合に限られない。例えば、１つの出力シンボルは、例えば４つのＱＰＳＫ変調シンボルを含んでいる各々の出力シンボルのように２以上の変調シンボルに符号化してもよい。その実施例において、各々の出力シンボルは、８ビットのために符号化して、６３の値の確率分布を有することができた。ここで、受信された出力シンボルによって、符号化されることができた６４の可能なビットシーケンスを仮定して、それから１がありえるより少ないものは、一体となってその他の６３値の合計をより算出しなかった。
【０１１０】
一旦確率分布が得られると、出力シンボルの情報量がありえる推定値は確率分布のバイナリのエントロピーとして算出した。換言すれば、分布が転送の前にｐ１，ｐ２，．．．，ｐｍの質量を出力シンボルのｍ個の可能な構成に割り当てる場合、シンボルの対応する情報量は１＋ｐ１＊ｌｏｇ（ｐ１）＋ｐ２＊ｌｏｇ（ｐ２）＋．．＋Ｐｍ＊ｌｏｇ（ｐｍ）に等しい。ここで、ｌｏｇ（ｘ）は、ｘの２を底とする対数である。上述の如く、受信モジュールは、出力シンボルが入力シンボルのまわりに伝達するトータル情報量上の推定値を得るために、あらゆる入って来る出力シンボルの情報量を加えることができる。
【０１１１】
＜アソシエータの実装＞  
図５を再び参照する。アソシエータ５１５の一実施例は示される。そして、アソシエータに対する類似物はルビーＩに記載したようなものである。ここで、ＮはＫ＋Ｒであり、Ｎ入力の値は素数の数でなければならない。動作中に、この実施例がＡＬ（Ｉ）を計算するために用いるときに、入力サイズＫ＋Ｒは素数となるよう調整済みである。他の好ましい実施形態では、Ｋ＋Ｒが素数であるために、冗長シンボルの数は十分大きく選択される。ある用途では、Ｎ個の入力が素数であるという状態はむしろ拘束性がある。
【０１１２】
Ｎが素数の数である必要はないアソシエータを実装する方法は、図１５に示される。最初に、ステップ１８０５で、変数ｋは０に初期化される。それから、ステップ１８１０で、ランダムな整数Ｙが生成される。１つの特定実施例において、出力シンボルのためのキーＩは、乱数生成器にシードを与えるために用いる。ステップ１８１５において、整数Ｙは、０からＮ−１の間の数を生成するモジュロ数Ｎである。ステップ１８２０において、候補数Ｙは以前生成された他の数Ｙ（Ｘ（０），Ｘ（１），．．．）に対してテストされる。数Ｙが以前生成された場合、フローはステップ１８１０に戻る。そうでなければ、ステップ１８２５で、それらはリストＸ（０），Ｘ（１），．．に含まれる。それから、ステップ１８３０で、Ｗ（Ｉ）個の数が生成されたかどうかが判定される。Ｎｏである場合には、フローはステップ１８１０に戻る。図１５において、示されるフローの結果は、Ｗ（Ｉ）個の数Ｘ（０），Ｘ（１），．．．Ｘ（Ｗ（Ｉ）−１）のリストであり、リストの各々のナンバーＸは、０およびＮ−１間の一意な整数である。それから、ステップ１８３５で、数Ｘ（０），Ｘ（１），．．．，Ｘ（Ｗ（Ｉ）−１）としてリストＡＬ（Ｉ）はセットされる。
【０１１３】
＜重みセレクタの実装＞
符号器／復号器のパフォーマンスおよび効率は、図２に示すようにダイナミック符号器２２０により生成される出力シンボルの重みの分布に依存している。そして、いくつかの分布は他に比較しよりよい。特に、入力シンボルの数Ｋと比較して収集した出力シンボルの数の過剰を記載しているパラメータＡの選択は、主に重み分布の選択に影響を受ける。重み選択の使用可能な態様は後述する。そして、いくつかの重要な重み分布を説明する。図１６のブロック図および図１７のフローチャートは、これらの概念を例示するために用いる。
【０１１４】
図５に示される重みセレクタ５１０のタスクは、以下の通りである。 キーＩおよび長さＫ＋Ｒを受信すると、重みセレクタは０からＫ＋Ｒ−１の範囲の重みと呼ばれる整数Ｗ（Ｉ）を出力する。ランダムに一様に理想的に整数を生成するアソシエータ５１５と異なって、後述するように、重みセレクタ５１０の出力は一定でなくて、特定の重みを有する。
【０１１５】
図１６に示すように、重みセレクタ５１０は２つの処理ＷＴ＿ＩＮＩＴ １９０５を含む、そして、ＷＴ＿ＣＡＬＣ １９１０および２はＷＴ＿ＲＢＩＴＳ １９１５およびＷＴ＿ＤＩＳＴＲＩＢ １９２０を表に記入する。第１のキーがテーブルＷＴ＿ＤＩＳＴＲＩＢ １９２０を初期化するために渡されるときに、処理ＷＴ＿ＩＮＩＴ １９０５は一度だけ呼び出されなければならない。ＷＴ＿ＤＩＳＴＲＩＢ １９２０の設計は、システムの重要な態様であって、非常により多くの詳細の後述される。処理ＷＴ＿ＣＡＬＣ １９１０は、キーＩに基づいて重みＷ（Ｉ）を作成するという各々の要求に呼び出される。図１７のフローチャートに示すように、ＷＴ＿ＣＡＬＣ １９１０は、乱数Ｔ（２００５）を生成するためにテーブルＷＴ＿ＲＢＩＴＳ １９１５に格納されるキーＩおよびランダムなビットを使用する。それから、Ｔの値は、テーブルＷＴ＿ＤＩＳＴＲＩＢ １９２０の列数Ｎを選ぶために用いる。
【０１１６】
図１６に示すように、ＷＴ＿ＤＩＳＴＲＩＢ １９２０のＲＡＮＧＥ行のエントリは値ＭＡＸ＿ＶＡＬの自然数終了の増加列である。そして、ＷＴ行は値ＭＡＸ＿ＷＴの自然数終了の増加列である。Ｔのための可能な値で設定されたものは、０からＭＡＸ＿ＶＡＬ−１の間の整数である。望ましい特性は、Ｔが可能な値の範囲の任意の値である同程度に確からしいであるということである。Ｎの値は、ＲＡＮＧＥ（Ｎ−１）≦Ｔ＜ＲＡＮＧＥ（Ｎ）を満たすＮが見つかるまで、ＲＡＮＧＥ行を検索することにより決定される（２０１０）。一旦Ｎが見つかると、Ｗ（Ｉ）の値はＷＴ（Ｎ）（テーブルＷＴ＿ＤＩＳＴＲＩＢのＷＴ行のＮ−ｔｈなエントリ）に対してセットされる。そして、これは、返された重み（２０１５，２０２０）である。図１６において、示される実施例テーブルのために、Ｔが３８，５００に等しい場合、Ｎが４であるとわかる、したがって、Ｗ（Ｉ）はＷＴ（４）＝８にセットされる。
【０１１７】
＜重み分布の選択＞
符号化処理のメイン最適化パラメータは、入力ファイルが以下によって完全に復元されることができるようなものである：ａ）出来る限り少ない出力シンボル、ｂ）出来る限り少ない動作、ｃ）できる限り高い信頼性。一般的に、全てのこれらの最適化基準は、全て出力シンボルのための重み分布の正しい選択によって満たされることができる。すなわち、全てのＩについてのＷ（Ｉ）の分布、そして、出力シンボルの上の付随物の分布すなわち、全てのＩについてのＡＬ（Ｉ）のメンバシップ。復号プロセスが重み分布および付随物の選択上の分布を問わず適用されることができると共に、好ましい実施例が近い最適パフォーマンスのために特に選択される付随物の選択上の重み分布および分布を使用すると強調されなければならない。事実、選ばれた分布における小さい変化が結果としてパフォーマンスの小さい変化だけに導くことができ多くの分布は適切に実行する。
【０１１８】
熟練した人々が従来技術において精通する、１つの好ましい実施例の分布を決定するための１つの方法論は密度進化の技術を使用することである。重み分布を設計する他の方法はガウス近似を使用する。そして、設計上の問題は可解なを使用している線形計画方法である問題に変わることができる。この種の方法が、本発明の用途に、重み分布を生成する構成要素によって、使われることができた。
【０１１９】
以下、そのような重み分布について説明する。重み分布は表１に示される形式の表として与えられ、Ｐ１は重みＷ１を有する出力シンボルの確率である。Ｐ２は重みＷ２を有する出力シンボルの確率である。そして、Ｐ１，Ｐ２，．．．の合計は１である。
【表１】
0005415471.tif 000003
【０１２０】
この種の分布としては、図１６のテーブルＷＴ＿ＤＩＳＴＲＩＢ１９２０は、例えば表２に示される形式を有する。
【表２】
0005415471.tif 000004
【０１２１】
テストされるサンプル分布は、表３に示される形式を有する。
【表３】
0005415471.tif 000005
【０１２２】
表３の分布（丸めのため１．００００に等しくない）が、実際にはむしろ適切に実行される。例えば、長さ１０００の入力サイズに対し１００００回実行する、復号器が入力シンボルの復号化に失敗するのは４回だけである。使用するスタティック符号はこの場合４に等しいメッセージ度数を有するＬＤＰＣ符号であり、２項分布の度数をチェックする。このとき、スタティック符号のレートは、０．９７である。出力シンボルの最適数により分割され収集される出力シンボルの数は１．２に等しく、これは２０％の受信オーバーヘッドに相当する。
【０１２３】
１つの好ましい実施例の分布を決定するための他の方法論は、ルビーＩまたはショクロラヒＩのそれらとして同じであるか類似した程度分布を使用することである。これらの分布が誤りまたは誤りデータでない、消去だけがある伝送チャネルのために最適化された一方、それらはそれにもかかわらずシミュレーションの良好なパフォーマンスを呈する。例えば、表４の分布は、入力アルファベットが２ビットを含み、破壊が平均０および標準偏差シグマを有するガウス形確率変数によって生じる通信チャネルにおいて、Ｋ個の入力ビットに対し少なくとも１−１０（−６）の確率で完全に訂正可能である。ここで、Ｋは６５５３６以上の値であり、シグマは０から２の範囲であり、１０％未満のオーバーヘッドを有する
【表４】
0005415471.tif 000006
【０１２４】
＜ＥＣ−ＭＳ符号のシステマチック符号化＞  
ＳＥＤ−ＣＲＣの教示は、ＥＣ−ＭＳ符号のためのシステマチックな符号器を設計するために用いることができる。ここで、入力シンボルは、一連の中間の入力シンボルを生成するために一連のシステマチックなキーを使用して、最初に復号化される。次に、マルチステージ符号が出力シンボルを生成する中間の入力シンボルシーケンスに適用され、いくつかはオリジナル入力シンボルを構成する。次のステップでは、受信された出力シンボルは、中間の入力シンボルのシーケンスを回復するために本願明細書において、記載されている方法を使用して復号化される。その後で、このシーケンスは、入力シンボルのシーケンスを得るためにシステマチックなキーを使用して、再び符号化される。
【０１２５】
いくつかの実施形態では、ショクロラヒＩに記載されているようなパケットよりむしろビットに動作するマルチステージ符号器が使用されている。いくつかの他の実施例において、例えばルビーＩに示すシングルステージ符号は、受信機の確率分布蓄積によって組み合わされるかもしれない。
【０１２６】
本発明の特定実施例に関して記載した、そして、本発明が請求項の範囲内で全ての変更態様および等価物をカバーすることを目的とすると認められなければならない。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］転送元から通信チャネルを介して転送されたデータを受信する方法であって、前記データは、複数の出力シンボルとして転送され、入力シンボルと冗長シンボルの混合セット内の少なくとも１つのシンボルから生成され、少なくとも１つの出力シンボルは、前記混合セット内の２以上のシンボル、および前記混合セット内の全シンボルより少ないシンボルから生成され、前記混合セット内の所与のシンボルセットのための可能性のある有効出力シンボルの数は、任意の期待サイズの入力ファイルのための、前記入力ファイル内の入力シンボルの数に対して事実上無限であり、前記入力シンボルは、入力シンボルの順序セットからのものであり、前記冗長シンボルは、前記入力シンボルから生成され、該方法は、
前記通信チャネルから出力シンボルを受信することであって、前記通信チャネルは、挿入された誤りおよび／または消失を有する可能性がある、ことと、
少なくとも１つの前記出力シンボルのサブセットを受信するとすぐに、少なくとも出力シンボル確率分布の推定値を決定することであって、出力シンボル確率分布は、受信出力シンボルを鑑みて、特定の出力シンボルが転送された確率を表す、ことと、
前記出力シンボル確率分布の推定値から、入力シンボル確率分布を決定することであって、入力シンボル確率分布は、前記受信された出力シンボルを形成するために符号化された特定の入力シンボルの確率を表す、ことと、
前記受信された出力シンボルから、前記混合セット内の少なくとも１つのシンボルのサブセットを再生することであって、前記混合セット内の前記シンボルのサブセットは、複数の再生された入力シンボルと、複数の再生された冗長シンボルとを含む、ことと、
少なくとも１つの前記出力シンボルのサブセットを受信するとすぐに、前記出力シンボルから、前記混合セット内の少なくとも１つのシンボルのサブセットを再生することであって、前記混合セット内の前記シンボルのサブセットは、複数の再生された入力シンボルと、複数の再生された冗長シンボルとを含み、再生工程は、前記入力シンボル確率分布を使用する、ことと
を備えることを特徴とする方法。
［Ｃ２］受信された出力シンボルのために、前記受信された出力シンボルに関連付けられた情報量を決定することと、
複数の受信された出力シンボルに関連付けられた総情報量を累積することと、
前記累積された総情報量が、前記入力シンボルの順序セットの情報内容量に関連する所与の基準を満たすとき、１以上の再生工程をトリガすることと
をさらに備えることを特徴とする、Ｃ１に記載の方法。
［Ｃ３］前記所与の基準は、前記累積された総情報が、前記入力シンボルの順序セットの情報内容量に少量の付加的な情報量を加えた情報量に等しくなる基準を含むことを特徴とする、Ｃ２に記載の方法。
［Ｃ４］前記少量の付加的な情報量は、前記入力シンボルの順序セットの情報内容量の百分率であることを特徴とする、Ｃ３に記載の受信方法。
［Ｃ５］前記百分率は、１０％未満であることを特徴とする、Ｃ４に記載の方法。
［Ｃ６］前記百分率は、５％未満であることを特徴とする、Ｃ４に記載の方法。
［Ｃ７］出力シンボル確率分布は、各々、２つの可能性の各々に対する確率分布であり、単一の確率として表現可能であることを特徴とする、Ｃ１に記載の方法。
［Ｃ８］出力シンボル確率分布は、ある復号フェーズでの粗量子化、および他の復号フェーズでの微量子化を有する確率値を含むことを特徴とする、Ｃ１に記載の方法。
［Ｃ９］出力シンボル確率分布は、各々、２値のうち１つを採用する確率値を含み、前記値の１つは高確率を表し、他は低確率を表すことを特徴とする、Ｃ１に記載の方法。
［Ｃ１０］出力シンボル確率分布は、粗量子化を有する確率値を含むことを特徴とする、Ｃ１に記載の方法。
［Ｃ１１］出力シンボル確率分布は、ビットが転送において１または０であった確率を表す出力シンボルのビット当たりの確率を表すことを特徴とする、Ｃ１に記載の受信方法。
［Ｃ１２］出力シンボル確率分布は、前記出力シンボルの転送における各々の可能性のある値の確率を表す出力シンボルの全てのビットに対する確率を表すことを特徴とする、Ｃ１に記載の方法。
［Ｃ１３］出力シンボル確率分布は、出力シンボルを伝達するために用いるデータシンボル値に対する確率を表すことを特徴とする、Ｃ１に記載の方法。
［Ｃ１４］前記確率分布は、推定された確率がゼロである場合、可能性のある転送されたビット、またはシンボルのエントリーを含まないデータ構造として格納されることを特徴とする、Ｃ１に記載の方法。
［Ｃ１５］各々の出力シンボルは、キーアルファベットから選択されるキーＩと関連付けられ、前記キーアルファベットにおける可能性のあるキーの数は、任意の期待サイズの入力ファイルのための、前記入力ファイル内の入力シンボルの数と比較して事実上無限であることを特徴とする、Ｃ１に記載の方法。
［Ｃ１６］前記冗長シンボルは、第１の複数の冗長シンボル、および第２の複数の冗長シンボルを含み、少なくともいくつかの未再生入力シンボルを再生する工程は、
前記第１の複数の冗長シンボルの再生された冗長シンボル、および前記複数の再生された入力シンボルから、前記未再生入力シンボル、および前記第２の複数の冗長シンボルの未再生冗長シンボルのうち、少なくとも１つを再生することと、
前記第１の複数の冗長シンボルの再生された冗長シンボル、および前記複数の再生された入力シンボルからの再生工程が、所望の度合いの正確さに前記入力シンボルを再生しない場合、前記第２の複数の冗長シンボルの冗長シンボル、および前記複数の復号された入力シンボルから、少なくとも１つの未再生の入力シンボルを再生することと
を含むことを特徴とする、Ｃ１に記載の方法。
［Ｃ１７］前記いくつかの未再生入力シンボル、および前記第２の複数の冗長シンボルの未再生冗長シンボルは、ＬＤＰＣ復号器を使用して再生され、前記いくつかの入力シンボルは、前記第２の複数の冗長シンボルの冗長シンボルから、ハミング復号器を使用して、再生されることを特徴とする、Ｃ１６に記載の方法。
［Ｃ１８］前記所望の正確さは、前記入力シンボルの完全回復であることを特徴とする、Ｃ１６に記載の方法。
［Ｃ１９］前記所望の正確さは、高確率を有する前記入力シンボルの完全回復であることを特徴とする、Ｃ１６に記載の方法。
［Ｃ２０］少なくともいくつかの未再生入力シンボルを再生することは、前記入力シンボル全ての再生を含むことを特徴とする、Ｃ１に記載の方法。
［Ｃ２１］少なくともいくつかの未再生入力シンボルを再生することは、前記入力シンボル全てより少ない再生を含むことを特徴とする、Ｃ１に記載の方法。
［Ｃ２２］誤り訂正は、与えられた入力シンボルに対する２以上の可能性の確率推定値を追跡し続け、かつ、最大の確率推定値を選択することによりなされることを特徴とする、Ｃ１に記載の方法。
［Ｃ２３］確率分布は、より確かな確率が前記通信チャネルにおいてより低い信号対雑音比から得られるように、チャネル雑音に基づく確率推定値を含むことを特徴とする、Ｃ１に記載の方法。
［Ｃ２４］確率分布が、受信された信号と、前記受信された信号の可能性のある値との間の距離の関数に基づく確率推定値を含むことを特徴とする、Ｃ１に記載の方法。
［Ｃ２５］受信された出力シンボルの情報量の推定値は、可能性のある転送された出力シンボルに対する前記受信された出力シンボルの確率分布の２値エントロピーとして計算されることが可能であることを特徴とする、Ｃ１に記載の方法。
【図１】
0005415471.tif 000007
【図２】
0005415471.tif 000008
【図３】
0005415471.tif 000009
【図４】
0005415471.tif 000010
【図５】
0005415471.tif 000011
【図６】
0005415471.tif 000012
【図７】
0005415471.tif 000013
【図８】
0005415471.tif 000014
【図９】
0005415471.tif 000015
【図１０】
0005415471.tif 000016
【図１１】
0005415471.tif 000017
【図１２】
0005415471.tif 000018
【図１３】
0005415471.tif 000019
【図１４】
0005415471.tif 000020
【図１５】
0005415471.tif 000021
【図１６】
0005415471.tif 000022
【図１７】
0005415471.tif 000023