(57)【要約】１組のＫ個の値の少なくとも１つの順列を決定するための方法および装置が、開示される。方法および装置は、最初に少なくとも１つの順列における次の値としてマッピングされた値を出力することと、第２のあらかじめ定義された順列関数に応じてインデックス値を次のインデックス値に設定することと、各オペレーションが少なくともＫ回実行され、Ｋ個の値の順序変更シーケンスが出力されるまで、マッピングすること、出力すること、および設定することを反復することと、に応じて、Ｋ個の値の組の内部の別の値にインデックス値をマッピングする第１の順列機能を利用する。
2009526445.tif 000002
【特許請求の範囲】
【請求項１】
Ｋ個の値の組の少なくとも１つの順列を決定するための方法であって、
Ｋ個の値の前記組の内部の設定値にインデックス値を初期化することと、
第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第１の順序変更値に前記インデックス値をマッピングすることと、
前記少なくとも１つの順列における第１の値として前記第１の順序変更値を出力することと、
第２のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成することと、
前記第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第２の順序変更値に前記次のインデックス値をマッピングすることと、
を備える方法。
【請求項２】
前記少なくとも１つの順列における第２の値として前記第２の順序変更値を出力すること、
をさらに備える請求項１に記載の方法。
【請求項３】
前記順列が前記Ｋ個の値のすべてを含むまで、次のインデックス値をマッピングすることを、さらなる順序変更値を出力することを、そしてさらなる次のインデックス値を生成することを継続すること、
をさらに備える請求項１に記載の方法。
【請求項４】
定義された数の順列についてインデックス値をマッピングするプロセスを反復することにより、前記少なくとも１つの順列の決定の後に少なくとも第２の順列を決定すること、
をさらに備える請求項３に記載の方法。
【請求項５】
前記設定値は、乱数ジェネレータによって決定される乱数である、請求項１に記載の方法。
【請求項６】
前記第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の順序変更値に前記インデックス値をマッピングすることは、ａ個の行とｂ個の列とを有するアレイにマッピングすることを含む、ただし、ａは、Ｋより小さな素数であり、ｂは、少なくともＫ／ａの値に設定される、請求項１に記載の方法。
【請求項７】
前記第１の順列関数は、Ｋ個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、のオペレーションをもたらす、請求項６に記載の方法。
【請求項８】
前記第１の順列関数は、前記アレイが、ａとｂの積がＫよりも大きいようにサイズが決められるときに、Ｋ個の値の数よりも大きな値を有するマッピングされた順序変更要素の再マッピングを、再マッピングするその要素を使用することにより、さらにおこなうこと、を含む、請求項７に記載の方法。
【請求項９】
前記第２の順列関数は、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、をもたらす、請求項６に記載の方法。
【請求項１０】
前記第２の順列は、関係Ａｎ＝（Ａｎ−１＋ｃ）モジュロ（ａ）によって定義される再帰関数であり、ここで、Ａｎは、順序変更インデックス値であり、前記値ｃは、ａよりも小さな素数であり、Ａ０の初期値は、ゼロであるように定義される、請求項６に記載の方法。
【請求項１１】
Ｋ個の値の組の少なくとも１つの順列を決定するための命令の組を含む機械読取り可能ストレージ媒体であって、命令の前記組は、
Ｋ個の値の前記組の内部の設定値にインデックス値を初期化するための命令と、
第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第１の順序変更値に前記インデックス値をマッピングするための命令と、
前記少なくとも１つの順列における第１の値として前記第１の順序変更値を出力するための命令と、
第２のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するための命令と、
前記第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第２の順序変更値に前記次のインデックス値をマッピングするための命令と、
を備える、
機械読取り可能ストレージ媒体。
【請求項１２】
命令の前記組は、
前記少なくとも１つの順列における第２の値として前記第２の順序変更値を出力するための命令、
をさらに備える、
請求項１１に記載の機械読取り可能ストレージ媒体。
【請求項１３】
命令の前記組は、
前記順列が、前記Ｋ個の値のすべてを含むまで、次のインデックス値をマッピングすること、さらなる順序変更値を出力すること、そしてさらなる次のインデックス値を生成すること、を継続するための命令、
をさらに備える、
請求項１１に記載の機械読取り可能ストレージ媒体。
【請求項１４】
命令の前記組は、
定義された数の順列についてインデックス値数をマッピングする前記のプロセスを反復することにより、前記少なくとも１つの順列の決定の後に少なくとも第２の順列を決定すること、
をさらに備える、
請求項１３に記載の機械読取り可能ストレージ媒体。
【請求項１５】
前記設定値は、乱数ジェネレータによって決定される乱数である、請求項１１に記載の機械読取り可能ストレージ媒体。
【請求項１６】
前記第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の順序変更値に前記インデックス値をマッピングするための前記命令は、ａ個の行とｂ個の列とを有するアレイにマッピングすることを含む、ただし、ａは、Ｋより小さな素数であり、ｂは、少なくともＫ／ａの値に設定される、請求項１１に記載の機械読取り可能ストレージ媒体。
【請求項１７】
前記第１の順列関数は、Ｋ個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、のオペレーションをもたらす、請求項１６に記載の機械読取り可能ストレージ媒体。
【請求項１８】
前記第１の順列関数は、前記アレイが、ａとｂの積がＫよりも大きいようにサイズが決められるときに、Ｋ個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうこと、を含む、請求項１７に記載の機械読取り可能ストレージ媒体。
【請求項１９】
前記第２の順列関数は、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、をもたらす、請求項１６に記載の機械読取り可能ストレージ媒体。
【請求項２０】
前記第２の順列は、関係Ａｎ＝（Ａｎ−１＋ｃ）モジュロ（ａ）によって定義される再帰関数であり、ここで、Ａｎは、順序変更インデックス値であり、前記値ｃは、ａよりも小さな素数であり、Ａ０の初期値は、ゼロであるように定義される、請求項１６に記載の機械読取り可能ストレージ媒体。
【請求項２１】
Ｋ個の値の組の少なくとも１つの順列を決定するための順列ジェネレータであって、
Ｋ個の値の前記組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータと、
第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第１の順序変更値に前記インデックス値をマッピングするように、そして前記少なくとも１つの順列における第１の値として前記第１の順序変更値を出力するように、構成された第１の順列ユニットと、
第２のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するように、そして前記第１の順列ジェネレータに対して前記次のインデックス値を出力するように、構成された第２の順列ユニットと、
を備える順列ジェネレータ。
【請求項２２】
前記第１の順列ユニットは、前記第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第２の順序変更値に前記受信された次のインデックス値をマッピングするように、そして前記少なくとも１つの順列における第２の値として前記第２の順序変更値を出力するように、さらに構成されている、請求項２１に記載の順列ジェネレータ。
【請求項２３】
前記第２の順列ユニットは、前記順列が、前記Ｋ個の値のすべてを含むまで、さらなる次のインデックス値を生成するように構成されており、そして、前記第１の順列ユニットは、前記第２の順列ユニットから受信される前記次のインデックス値のおのおのをマッピングすること、および、前記順列における追加の順序変更値としてこれらのマッピングされた値を出力すること、を継続するように構成されている、請求項２１に記載の順列ジェネレータ。
【請求項２４】
前記の第１および第２の順列ユニットは、定義された数の順列について前記のインデックス値をマッピングすることを反復することにより、前記少なくとも１つの順列の決定の後に少なくとも第２の順列を決定するようにさらに構成されている、請求項２３に記載の順列ジェネレータ。
【請求項２５】
前記シードインデックスジェネレータは、乱数ジェネレータによって決定される乱数に基づいて前記設定値を生成するように構成された前記乱数ジェネレータ、をさらに備える、請求項２１に記載の順列ジェネレータ。
【請求項２６】
前記第１の順列ユニットは、ａ個の行とｂ個の列とを有するアレイにマッピングすることを含めて、前記第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の前記組の内部の順序変更値に前記インデックス値をマッピングするようにさらに構成されている、ただし、ａは、Ｋより小さな素数であり、ｂは、少なくともＫ／ａの値にさらに設定される、請求項２１に記載の順列ジェネレータ。
【請求項２７】
前記第１の順列ユニットは、Ｋ個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、に相当するオペレーションをもたらすように構成されている、請求項２６に記載の順列ジェネレータ。
【請求項２８】
前記第１の順列ユニットは、前記アレイが、ａとｂの積がＫよりも大きいようにサイズが決められるときに、Ｋ個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうようにさらに構成されている、請求項２７に記載の順列ジェネレータ。
【請求項２９】
前記第２の順列ユニットは、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、に相当するオペレーションをもたらすようにさらに構成されている、請求項２６に記載の順列ジェネレータ。
【請求項３０】
前記第２の順列ユニットは、関係Ａｎ＝（Ａｎ−１＋ｃ）モジュロ（ａ）によって定義される再帰関数を実行するように構成されており、ここで、Ａｎは、順序変更インデックス値であり、前記値ｃは、ａよりも小さな素数であり、Ａ０の初期値は、ゼロであるように定義される、請求項２６に記載の順列ジェネレータ。
【請求項３１】
通信システムにおける使用のためのトランシーバであって、
少なくとも１つの順列の使用を介してワイヤレス信号を符号化する、または復号するための、エンコーダおよびデコーダのうちの少なくとも一方と、
Ｋ個の値の組の前記少なくとも１つの順列を決定するための順列ジェネレータと、
を備え、前記順列ジェネレータは、
Ｋ個の値の前記組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータと、
第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第１の順序変更値に前記インデックス値をマッピングするように、そして前記少なくとも１つの順列における第１の値として前記第１の順序変更値を出力するように、構成された第１の順列ユニットと、
第２のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するように、そして前記第１の順列ジェネレータに対して前記次のインデックス値を出力するように、構成された第２の順列ユニットと、
を備える、
トランシーバ。
【請求項３２】
前記第１の順列ユニットは、前記第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の前記組の内部の第２の順序変更値に、前記受信された次のインデックス値をマッピングするように、そして前記少なくとも１つの順列における第２の値として前記第２の順序変更値を出力するように、さらに構成されている、請求項３１に記載のトランシーバ。
【請求項３３】
前記第２の順列ユニットは、前記順列が、前記Ｋ個の値のすべてを含むまで、さらなる次のインデックス値を生成するように構成されており、そして、前記第１の順列ユニットは、前記第２の順列ユニットから受信される前記次のインデックス値のおのおのをマッピングすること、そして、前記順列における追加の順序変更値としてこれらのマッピングされた値を出力すること、を継続するように構成されている、請求項３１に記載のトランシーバ。
【請求項３４】
前記の第１および第２の順列ユニットは、定義された数の順列について前記のインデックス値をマッピングすることを反復することにより、前記少なくとも１つの順列の決定の後に少なくとも第２の順列を決定するように、さらに構成されている、請求項３３に記載のトランシーバ。
【請求項３５】
前記シードインデックスジェネレータは、乱数ジェネレータによって決定される乱数に基づいて前記設定値を生成するように構成された前記乱数ジェネレータ、をさらに備える、請求項３１に記載のトランシーバ。
【請求項３６】
前記第１の順列ユニットは、ａ個の行とｂ個の列とを有するアレイにマッピングすることを含めて、前記第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の前記組の内部の順序変更値に前記インデックス値をマッピングするようにさらに構成されている、ただし、ａは、Ｋより小さな素数であり、ｂは、少なくともＫ／ａの値に設定される、請求項３１に記載のトランシーバ。
【請求項３７】
前記第１の順列ユニットは、Ｋ個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、に相当するオペレーションをもたらすように構成されている、請求項３６に記載のトランシーバ。
【請求項３８】
前記第１の順列ユニットは、前記アレイが、ａとｂの積がＫよりも大きいようにサイズが決められるときに、Ｋ個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうようにさらに構成されている、請求項３７に記載のトランシーバ。
【請求項３９】
前記第２の順列ユニットは、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、に相当するオペレーションをもたらすように構成されている、請求項３６に記載のトランシーバ。
【請求項４０】
前記第２の順列ユニットは、関係Ａｎ＝（Ａｎ−１＋ｃ）モジュロ（ａ）によって定義される再帰関数を実行するように構成されており、ここで、Ａｎは、順序変更インデックス値であり、前記値ｃは、ａよりも小さな素数であり、Ａ０の初期値は、ゼロであるように定義される、請求項３６に記載のトランシーバ。
【請求項４１】
Ｋ個の値の組の少なくとも１つの順列を決定するための装置であって、
Ｋ個の値の前記組の内部の設定値にインデックス値を初期化するための手段と、
第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第１の順序変更値に前記インデックス値をマッピングするための手段と、
前記少なくとも１つの順列における第１の値として前記第１の順序変更値を出力するための手段と、
第２のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するための手段と、
前記第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の第２の順序変更値に前記次のインデックス値をマッピングするための手段と、
を備える装置。
【請求項４２】
前記少なくとも１つの順列における第２の値として前記第２の順序変更値を出力するための手段、
をさらに備える請求項４１に記載の装置。
【請求項４３】
前記順列が、前記Ｋ個の値のすべてを含むまで、次のインデックス値をマッピングすること、さらなる順序変更値を出力すること、そしてさらなる次のインデックス値を生成すること、を継続するための手段、
をさらに備える請求項４１に記載の装置。
【請求項４４】
定義された数の順列についてインデックス値をマッピングするプロセスを反復することにより、前記少なくとも１つの順列の決定の後に少なくとも第２の順列を決定するための手段、
をさらに備える請求項４３に記載の装置。
【請求項４５】
前記設定値は、乱数ジェネレータによって決定される乱数である、請求項４１に記載の装置。
【請求項４６】
前記第１のあらかじめ定義された順列関数に応じてＫ個の値の前記組の内部の順序変更値に前記インデックス値をマッピングすることは、ａ個の行とｂ個の列とを有するアレイにマッピングすることを含む、ただし、ａは、Ｋより小さな素数であり、ｂは、少なくともＫ／ａの値に設定される、請求項４１に記載の装置。
【請求項４７】
前記第１の順列関数は、Ｋ個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、のオペレーションをもたらす、請求項４６に記載の装置。
【請求項４８】
前記第１の順列関数は、前記アレイが、ａとｂの積がＫよりも大きいようにサイズが決められるときに、Ｋ個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうことを含む、請求項４７に記載の装置。
【請求項４９】
前記第２の順列関数は、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、をもたらす、請求項４６に記載の装置。
【請求項５０】
前記第２の順列は、関係Ａｎ＝（Ａｎ−１＋ｃ）モジュロ（ａ）によって定義される再帰関数である、ただし、Ａｎは、順序変更インデックス値であり、前記値ｃは、ａよりも小さな素数であり、Ａ０の初期値は、ゼロであるように定義される、請求項４６に記載の装置。
【発明の詳細な説明】
【背景】
【０００１】
［分野］  
本願は、順列の生成に関し、より詳細には、例えばワイヤレスシステムなどを経由して、送信されるべき情報を符号化するために使用される１組のインデックスの擬似ランダム順列(pseudo-random permutation)を生成することに関する。
【０００２】
［背景］  
ワイヤレス通信システムにおいて送信されるべき情報などの情報を符号化する際に、数字シーケンス(number sequence)の異なるランダム順列(random permutation)を生成することが知られている。順列がランダムになればなるほど、データ送信は、より堅牢になり、符号化されたデータの送信中に導入されるエラーに対して回復力に富むことになる。
【０００３】
順列がデータを符号化する際に利用される特定の例は、例として、ワイヤレスのトランスミッタまたはトランシーバにおいて利用されることができるターボエンコーダ(turbo encoder)を含んでいる。とりわけ、図１は、ワイヤレストランシーバにおいて利用されることができるターボエンコーダ１００を示している。ターボエンコーダ１００は、整数のシーケンス１０２（例えば、｛０，１，２，...，Ｋ−１｝、ここでＫは整数である）によって識別されるデータ信号の入力を受信する。システム１００において見られることができるように、シーケンスを符号化し、そして、結果として生ずる重畳的符号化シーケンス(resultant convoluntially encoded sequence)をマルチプレクサ(multiplexer)１０６に出力する上側の重畳コーダ(upper convolutional coder)１０４に、シーケンス１０２は、入力される。マルチプレクサ１０６は、非変更シーケンス１０２が送付される入力１０８も含んでいる。最後に、下側レッグ(lower leg)は、順に接続された順列ジェネレータ(permutation generator)１１０と重畳コーダ１１２とを含んでいる。
【０００４】
特に、ターボエンコーダ１００の下側レッグは、規定されたアルゴリズムまたは方法に応じて、整数シーケンス１０２によって識別されるデータ信号を、最初に順序変更することにより、その信号を生成する。知られているアルゴリズムまたは方法の例については、後で論じられる。
【０００５】
シーケンス１０２が、順列ジェネレータ１１０によって順序変更された後に、次いで重畳コードは、重畳コーダ１１２によって、この順序変更シーケンス(permuted sequence)に適用される。例のエンコーダ１００において、重畳コーダ１０４および１１２のおのおのからのデータシンボル(data symbols)と、Ｋ個のデータシンボル(K data symbols)１０８とは、ターボ符号化シンボル(turbo encoded symbols)１１４として出力されるようにマルチプレクサ１０６によって多重化される。
【０００６】
上記のように、順列ジェネレータ１１０は、シーケンス１０２の異なる順列を生成するための特定のアルゴリズムまたは方法を使用することができる。１つのそのようなアプローチは、順序変更シーケンスを生成するために、乱数ジェネレータ(random number generator)を使用してランダム順列を生成することである。それに応じて、エンコーダもデコーダも、同じシーケンスを生成するために同じ乱数ジェネレータと同じ初期シード数(initial seed number)とを利用することができる。しかしながら、このアプローチは、エンコーダとデコーダのおのおのが、生成された順序変更シーケンスをメモリに記憶しなければならない点で不利である。したがって、Ｋの大きな値では、そして多数の異なる順列では、そのような順列を記憶するために必要とされるメモリ容量(amount of memory)は、コストがかかるものである。
【０００７】
順列を生成することが知られている別のアプローチは、長方形アレイ(rectangular array)を使用することを含んでいる。一例として、０から９までの数字の順列が望ましいことが仮定される。これらの数字は、２行×５列（２×５）のサイズの長方形アレイの形に書き込まれることができる。次いで、数字ゼロから９が順において行へと挿入され、列から読み取られる。例示の結果として生ずるアレイは、次のように示される。
【表１】
2009526445.tif 000003
【０００８】
上のアレイから分かるように、列によって数字を読み取ることにより生成されることになる順序変更シーケンスは、｛０，５，１，６，２，７，３，８，４，９｝である。行数と列数のアレイを選択することにより、異なる順列が生成されることができることが当業者により理解されるであろう。しかしながら、このアプローチの短所は、結果として生ずるシーケンスが、十分なランダム性の程度を有しない可能性があり、それ故に堅牢な順列を提供しないことである。
【０００９】
知られているシーケンスの順列を生成するために使用されるさらなる方法は、線形合同技法(linear congruential technique)の使用を含んでいる。とりわけ、そのような技法においては、数字Ａ０は、０とＫ−１との間で選択される。次に、再帰関数(recursive function)は、Ａｎが、ｎ＝１、２、...、Ｋ−１の値について（ａＡｎ−１＋ｂ）ｍｏｄＫに等しくなるように定義され、ここでｎは、整数である。この定義された関数と一緒に、いくつかの条件が満たされる必要もある。第１の条件は、値ａとｂとが、Ｋよりも小さいことである。さらに、ｂは、Ｋと互いに素(relatively prime)である必要がある。さらに、値（ａ−１）は、Ｋを割り算するあらゆる素数(prime number)pに対して、ｐの倍数(multiple of p)である必要がある。さらに、値（ａ−１）は、もし値Ｋが４の倍数であるならば、同様に４の倍数である。最後に、ａは、Ｋと互いに素であることが望ましい。
【００１０】
この技法の一例として、値Ｋ＝９であり、素因数(prime factor)ｐが３であり、そして、ａの値は（ａ−１）＝３ｘであるように選択される、と仮定される。それに応じて、もし、ａが４に等しく、ｂが７に等しく、Ａ０が５に等しい場合には、生成される順序変更シーケンスは、｛５，０，７，８，３，１，２，６，４｝になるであろう。しかしながら、このアプローチに対する欠点は、Ｋの素の値(prime value)に対して、選択される(picked)ことができるａの唯一の値は１であることである。したがって、異なる順列は、Ａ０とｂの値においてのみ異なり、達成され得るランダム性を制限している。
【００１１】
順列を利用した技法において知られているエンコーダのタイプの別の例として、図２は、低密度ジェネレータ行列エンコーダ(Low Density Generator Matrix encoder)を利用したエンコーダ２００を示している。図に示されるように、システムは、マルチプレクサ２０４に直接に送付される入力シーケンス２０２、ならびに低密度ジェネレータ行列エンコーダ２０８から出力される順序変更シーケンス２０６を受信する。低密度ジェネレータ行列エンコーダ２０８内で、符号化シンボルが、コードの並列連接(parallel concatenation)によって生成され、それは、その結果として、Ｋ個のデータシンボルの順列と、順序変更シーケンスのブロックを符号化するブロックコードと、から成っている(consist of)。これらのブロックコードシンボルは、低密度ジェネレータ行列２０８から並列２０６に出力された後に、マルチプレクサ２０４によって一緒に組み合わせられる。この場合にも、低密度ジェネレータ行列２０８によって実行される順列は、上記の知られているアルゴリズムまたは方法のうちのどれによってももたらせられる(effected)かもしれない。したがって、論じられた順列のアルゴリズムまたは方法のおのおのは欠点を有するので、低密度ジェネレータ行列２０８は、それに応じて同じ欠点を受ける。
【発明の開示】
【概要】
【００１２】
本開示の一態様によれば、１組のＫ個の値の少なくとも１つの順列を決定するための方法が開示される。本方法は、Ｋ個の値の組の内部の設定値(set value)にインデックス値を初期化すること(initializing)と、第１のあらかじめ定義された順列関数(permutation function)に応じて、Ｋ個の値の組の内部の第１の順序変更値(permuted value)にインデックス値(index value)をマッピングすること(mapping)と、を含む。本方法は、少なくとも１つの順列における第１の値として第１の順序変更値を出力することと、第２のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成することと、第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の組の内部の第２の順序変更値に次のインデックス値をマッピングすることと、をさらに含む。
【００１３】
別の態様によれば、１組のＫ個の値の少なくとも１つの順列を決定するための１組の命令を含む機械読取り可能ストレージ媒体(machine-readable storage medium)が、開示される。命令の組は、Ｋ個の値の組の内部の設定値にインデックス値を初期化するための命令を含んでいる。その組は、第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の組の内部の第１の順序変更値にインデックス値をマッピングするための命令と、少なくとも１つの順列における第１の値として第１の順序変更値を出力するための命令と、をさらに含む。また、第２のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するための命令と、第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の組の内部の第２の順序変更値に次のインデックス値をマッピングするための命令も、含まれている。
【００１４】
さらに別の態様においては、１組のＫ個の値の少なくとも１つの順列を決定するための順列ジェネレータ(permutation generator)が、開示される。本ジェネレータは、Ｋ個の値の組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータ(seed index generator)と、第１のあらかじめ定義された順列関数に応じてＫ個の値の組の内部の第１の順序変更値にインデックス値をマッピングするように、そして少なくとも１つの順列における第１の値として第１の順序変更値を出力するように構成された第１の順列ユニット(first permutation unit)と、を含む。本ジェネレータは、第２のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するように、そして第１の順列ジェネレータに対して次のインデックス値を出力するように構成された第２の順列ユニット、も含んでいる。
【００１５】
さらに別の態様によれば、通信システムにおける使用のためのトランシーバ(transceiver)が、開示される。本トランシーバは、少なくとも１つの順列の使用を介してワイヤレス信号を符号化し、または復号するためのエンコーダおよびデコーダのうちの少なくとも一方と、１組のＫ個の値の少なくとも１つの順列を決定するための順列ジェネレータと、を含む。順列ジェネレータは、特に、Ｋ個の値の組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータと、第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の組の内部の第１の順序変更値にインデックス値をマッピングするように、そして少なくとも１つの順列における第１の値として第１の順序変更値を出力するように構成された第１の順列ユニットと、第２のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するように、そして第１の順列ジェネレータに対して次のインデックス値を出力するように構成された第２の順列ユニットと、をさらに含む。
【００１６】
さらにもう１つの態様によれば、１組のＫ個の値の少なくとも１つの順列を決定するための装置(apparatus)が、開示される。本装置は、Ｋ個の値の組の内部の設定値にインデックス値を初期化するための手段と、第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の組の内部の第１の順序変更値にインデックス値をマッピングするための手段と、少なくとも１つの順列における第１の値として第１の順序変更値を出力するための手段と、第２のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するための手段と、第１のあらかじめ定義された順列関数に応じて、Ｋ個の値の組の内部の第２の順序変更値に次のインデックス値をマッピングするための手段と、を含む。
【詳細な説明】
【００１７】
本開示は、擬似ランダムであり、任意の長さのシーケンスのためのものでもあり得る順列、を生成するための方法および装置を開示している。今開示される方法および装置は、大きな値のＫと異なる順列の大きな数についてさえも最小のメモリ容量を利用しながら、堅牢な符号化を提供するために十分なランダム性を有する順列の反復(iteration)を提供する。これは、入力インデックスに基づいて順序変更値を決定する第１の順列ジェネレータと、第１の順列ジェネレータに入力される後続の各インデックス値について使用されるべき次のインデックス値の順序変更シーケンスを提供する第２の順列ジェネレータとを利用することによって達成される。
【００１８】
図３は、本開示に応じて順列を生成するためのプロシージャを示している。図に示されるように、プロセス３００は、ブロック３０２において初期化される。フローは、ブロック３０４へと進み、ここでインデックスは、ゼロとＫ−１との間の何らかのランダム値に初期化される。「シード(seed)」と称されるこの値は、乱数ジェネレータ(random number generator)または類似したファンクションを用いて導き出されることができる。さらに、図３の方法は、生成される乱数ではなくて、その代わりに固定シード値(fixed seed value)を利用することもできることに注意すべきである。
【００１９】
初期インデックスがブロック３０４において決定された後に、フローは、ブロック３０６へと進み、ここで順序変更値は、ブロック３０６において指し示されるようにインデックスのマッピングされた値に等しく設定される。順序変更値を設定するために使用される特定のマッピング関数(mapping function)については、以下で詳細に論じられることになる。次いでフローは、ブロック３０８へと進み、ここで順序変更値は、ゼロからＫ−１個の数の元のシーケンスの順序変更シーケンスにおける第１のインデックスとして出力される。
【００２０】
順序変更値がブロック３０８において出力された後に、フローは、ブロック３１０へと進み、ここでインデックスは、ブロック３１０において示されるように現在のインデックスに基づいて再帰的に決定される次のインデックスに等しくインデックスの値を設定することによりアップデートされる。このインデックス関数については、以下でさらに詳細に説明されることになる。インデックス値が設定された後に、フローは、判断ブロック(decision block)３１２へと進む。
【００２１】
ブロック３１２において、ブロック３０６、３０８、および３１０において行われた(effected)プロセスのＫ回の反復が実行されているかどうかについての決定が行われる。実行されていない場合、フローは、順序変更シーケンスのさらなる値を得るために、ブロック３０６、３０８、および３１０のプロセスを反復するためにブロック３０６へと進む。ひとたび、ブロック３１０において決定されるようにＫ回の反復が実行された後には、順列は、完成している。次いでフローは、Ｍ個の順列が生成されているかどうかについての決定のために、判断ブロック３１４へと進む。望ましい順列の数（Ｍ）は、ユーザの好みまたはシステム要件だけに応じて、１以上とすることができることに注意すべきである。Ｍ個の順列が生成された後に、ブロック３１４において決定されるように、プロセス３００は、終了ブロック３１６において終了される。
【００２２】
図３のプロセスは、元のシーケンス、ゼロからＫ−１の１組の異なる順序変更シーケンスを生成するために任意の望ましい回数実行されることができることに注意すべきである。ランダムシード値を利用することにより、各順列は、独立に生成される。さらに、後続の各マッピングについてのインデックス値をアップデートすることは、メモリなど、かなりのシステムリソースを利用する必要なしに堅牢でランダムな順列を確立するための方法を提供する。
【００２３】
図３のブロック３０６のマッピング関数に関して、ゼロからＫ−１の数を長方形アレイに行方向に挿入する順列を生成するための一技法がある。これは、本開示において以前に論じられたように、アレイ中のエントリが、次いで元のシーケンスの順列を生成するために列方向に読み取られることを可能にする。長方形アレイの高さは、高さａがＫより小さい何らかの素数であることを保証することにより制約されるだけである。したがって、「ｂ」によって示される長方形アレイの幅は、ｂが、ａによって除算されるＫに等しい（
【数１】
2009526445.tif 000004
【００２４】
）点において制約されるだけである。Ｋと、剰余(remainder)を有する幅の値ｂを与えるａの値では、値ｂは、アレイを作成するために次の整数値まで単に端数が切り上げられ、このアレイは、本質的に整数値の行および列を有する。
【００２５】
元のシーケンスの要素（すなわち、ゼロからＫ−１）は、次いで長方形アレイに行方向に挿入される。一例として、Ｋの値は、１０に等しく、高さａは、３行に等しく、幅ｂは、４列に等しいことが仮定される。結果として生ずる長方形アレイは、次の表１におけるように見えるであろう。
【表２】
2009526445.tif 000005
【００２６】
次に、それらの要素は、次いで（０、４、８、１、５、９、２、６、１０、３、７、１１）である結果として生ずるシーケンスと共に、列に沿って読み取られる。それ故に、元のシーケンスからの１対１のマップは、次の表２によって与えられることができる。
【表３】
2009526445.tif 000006
【００２７】
しかしながら、上の例においては、元のシーケンスの要素（０から９）は、この組を超えた値（すなわち、１０および１１）にマッピングすることに注意すべきである。それにもかかわらず、元のアレイの要素１０は、７という順序変更インデックスにマッピングし、これは、元のシーケンスの数の必要とされる範囲内にあることに注意すべきである。したがって、マッピング関数は、要素をマッピングしたインデックス値に等しいインデックス値（以上の表２における要素）を参照し、次いで元の数の内部に含まれる、その要素のマッピングからもたらされるマッピングされた要素を使用することにより、元のシーケンスの数の範囲外にあるマッピングされた要素を再マッピングするように定義されることができる。その例における一例証として、最初に１０の値にマッピングする８という値を有する要素が、アレイの中の１０というインデックス値からもたらされるマッピングされた要素の値であり、０から９までの必要とされる範囲内にある、７という値に再マッピングされることが規定される。したがって、本例についての関数をマッピングするためにこのスキームを使用することは、下の表３に与えられる。
【表４】
2009526445.tif 000007
【００２８】
このマッピング関数のさらなる一例として、Ｃ＋コードで書かれた、以下の擬似コードは、上記のマップ関数(map function)を実行するために使用されることができる例示の１つのインプリメンテーションである。
【数２】
2009526445.tif 000008
【００２９】
ここでｒｖは、入力インデックス値について戻される順序変更値である。以上のコードは、その値が、値Ｋに等しいか、または値Ｋを超過することがない限り、ｒｖ値を戻すことに注意すべきである。そのような場合には、マップ関数は、新しい入力されたインデックスではなくて、計算されたｒｖ値をインデックス値として利用してもう一度実行される。この機能は、それ故に、戻される順序変更値が、０からＫ−１の値の範囲外に出なくなるように保証する。
【００３０】
図３に戻って参照すると、この関数は、順序変更値を出力する（すなわち、ｒｖを戻す）ためにブロック３０６において一度実行され、シードインデックス値は、ブロック３０６におけるマッピングされた関数の実行に先立ってブロック３１０において実行される次のインデックス関数によって変更されることになり、これについては以下で詳細に説明されることになることに注意すべきである。図３のブロック３１０において実行されるｎｅｘｔ＿ｉｎｄｅｘ関数に関して、以下の例は、マップ関数の各反復についてインデックスの変更を実現する例示の一方法を提供する。我々の第１の例においては、ｎｅｘｔ＿ｉｎｄｅｘ関数は、単にｎｅｘｔ＿ｆｕｎｃｔｉｏｎ（例えば、ｎｅｘｔ＿ｉｎｄｅｘ＝（ｉｎｄｅｘ＋１）モジュロ(modulo)（Ｋ））の各実行について１の値の増分となる可能性がある。
【００３１】
しかしながら、この第１の例示の順列生成の方法（例えば、以上のマッピング関数）だけを使用することは、必ずしも最良品質のランダム順列を与えるとは限らない。したがって、さらなる第２の順列が、マッピング関数の次の実行についての新しいインデックスを決定するために、第１の例示の順列生成によって生成されるこれらの各順序変更値について実行される。すなわち、この第２の順列は、長方形アレイの高さａが素数であるので、元のシーケンスの順列を使用して次のインデックスを決定すること、または生成することを含んでいる。
【００３２】
とりわけ、これは、Ａｎ＝（Ａｎ−１＋ｃ）モジュロ（ａ）などの再帰を使用して行われることができ、ここで値ｃは、ａよりも小さな何らかの素数であり、Ａ０の初期値は、ゼロに等しい。したがって、Ｋが１０に等しく、ａが３に等しく、ｂが４に等しく、数字ｃが２の値に設定される場合の以上の例を使用して、シーケンス｛０，１，...（ａ−１）｝の結果として生じる順列は、シーケンス｛０，１，２｝から｛２，１，０｝への順列になる。この順列は、事実上、長方形アレイの行の結果として生ずる順列である。すなわち、行０は、行２に順序変更され、行１は、行１に順序変更され、行２は、行０に順序変更される。このスキームを使用して、Ｋ＝１０、ａ＝３、およびｂ＝４を有する一例を使用したこの順列の結果として生ずるマッピングは、下の表４に示される。
【表５】
2009526445.tif 000009
【００３３】
同様に、長方形アレイの列は、シーケンス｛０，１，...（ｂ−１）｝の順列によって順序変更されることができる。したがって、列ゼロと列３は、変更されないままであるのに対して、列１と２は、それらが、下の表５において与えられる長方形アレイの結果として生ずるマッピングを用いて並べられるように、順序変更される。
【表６】
2009526445.tif 000010
【００３４】
長方形アレイの行と列の両方についての順列の後に、さらなるランダム性は、結果として生ずるアレイのエントリを斜めに読み取ることにより、ある可能性がある。すなわち、読み取ることは、行ゼロと列ゼロから開始され、列プラス１モジュロｂだけ増分された列において、行プラス１モジュロａだけ行が増分される。これは、結果として、以上の例を仮定すると、｛８，６，１，１１，４，２，９，７，０，１０，５，３｝のシーケンスとなる。値Ｋ以上であるエントリは意味がないので、これらのエントリは、結果として生ずるシーケンス｛８，６，１，４，２，９，７，０，５，３｝を与えるようにスキップされる。
【００３５】
次の表６は、インデックスの結果として生ずる順序変更シーケンスを示している。
【表７】
2009526445.tif 000011
【００３６】
この上記のインデックス関数は、Ｃ＋言語における以下のコードによって実行されることができる。
【数３】
2009526445.tif 000012
【００３７】
図３のプロセスは、各順列が、たった２つの数字ａと、初期のランダムに決定されたシード「インデックス」値によって定義される能力を提供する。しかしながら、上記のように、初期インデックス値は、あらかじめ決定されることもでき、それ故に各順列は、１つの数字ａによって簡単に定義されることができるが、ランダムに決定されたシードは、より堅牢でランダムな順列を提供することができる。ａについての値は、素である数によって制約されるだけであるが、それにもかかわらず、ａは、素数の表からランダムに選択されることができる。さらに、ａの値は、値Ｋよりも小さいものとして制約される。追加の品質度は、数字ｂが、ａと互いに素であることが保証される場合に、取得されることもできる。当業者によって理解されることができるように、上記のマッピング関数と、次のインデックス関数は、単なる例示であるにすぎず、多数の異なる関数と、コードシーケンスとが、両方のマッピングされた値を順序変更するために、そして使用されるべき次のインデックス値を決定するために利用されることができる。初期のシードインデックス値と、選択された値ａだけを必要とすることにより、これら２つの値だけが、順序変更シーケンスから初期シーケンスを決定するためにその中のデコーダによる使用のためにトランスミッタからレシーバへと通信される必要があるにすぎないので、以上の方法は、通信システムにおいて有用である。
【００３８】
図３のプロセスが、実際の順序変更シーケンスをどのようにして決定するかについての一例証として、以下の例が提供される。この例においては、以前に使用される値および表が、簡単にするために使用されることになる。上記の例では、Ｋの値は、１０に設定され、ａの値は、３に設定された。マップ関数の順序変更シーケンスの結果は、以上に提示された表３において見られることができる。ｎｅｘｔ＿ｉｎｄｅｘ関数の結果の一例が、入力インデックスに基づいて戻される新しいインデックスを示す表６によって以上に示される。
【００３９】
一例として、ランダムに生成されようが、あるいは故意に選択されようが、初期シードまたはインデックスが、７であることを仮定すると、上記され、図３に示されるようなマッピング関数と次のインデックス関数は、堅牢な擬似ランダム性を有する順列シーケンスを与える。結果として生ずる生成された順序変更シーケンスの一例として、下の表７において見られることができるように、初期インデックスは、７である。
【表８】
2009526445.tif 000013
【００４０】
マッピング関数（図３のブロック３０６）に入力されるときに、値の出力は、６であり、これは、そのときには出力される順序変更シーケンスにおける第１の値（例えば、図３のブロック３０８）である。順序変更シーケンスの第１の値の出力の後に、これは、ｍａｐｐｅｄ＿ｖａｌシーケンスとしてラベル付けされた表７の中間列である。マッピング関数が第１の値を決定した後に、次のインデックス関数（例えば、図３におけるブロック３１０）は、以前のインデックス値に基づいて次のインデックスを決定する。以上の例においては、７というインデックス値がインデックス関数に入力され、このインデックス関数は、表７の第３列の第１行において見られることができるように、ゼロの出力値を与える。
【００４１】
図３のブロック３１２に示されるように、次のインデックス値が決定され、Ｋ個の順序変更値がまだ生成されていない後には、プロセスは、ブロック３１０において決定される新しいインデックス値を利用して、次のマッピングされる値（すなわち、順序変更値）を決定するために戻る。表７の第２行に示されるように、０という決定された新しいインデックス値は、マッピング関数へのインデックス値入力として使用される。０という入力値は、やはり示されるように０という順序変更出力値を与える。それ故に、生成される順列における第２の順序変更値は、０である。
【００４２】
次いで、インデックス値０が、次のインデックス関数に入力され、このインデックス関数は、次のインデックス値についての５という値を戻す。次いで、この新しいインデックスは、次には９という次の順序変更値を決定するために使用され、以下同様となる。図３において見られることができるように、マッピング関数と次のインデックス関数は、Ｋ個の値の順序変更シーケンスを与えるようにＫ回反復される。したがって、ただの一例として、初期シードまたはインデックスが、７であることを仮定すると、生成される順列は、表７に見られることができるように、｛６，０，９，１，７，２，４，５，８，３｝である。
【００４３】
図４は、図３の方法が使用されることができる例示の通信システムを示している。とりわけ、図４は、通信システム４００の中に少なくとも２つのトランシーバ４０２および４０４を有する通信システム４００を示している。トランシーバデバイス（４０２または４０４）のうちの少なくとも一方は、送信されるべき送信シンボルを符号化するためのエンコーダ４０８によって使用される順列ジェネレータ４０６を含んでいる。エンコーダ４０８は、例えば図１に開示されるようなターボエンコーダ、または図２に示されるような低密度ジェネレータ行列を使用したエンコーダとすることができる。いずれの場合にも、順列ジェネレータ４０６は、図３に示されるプロセスに応じて動作する。したがって、ワイヤレス信号送信４１０のように信号が送信されるときに、初期シードがシステム４００において知られている場合、「ａ」という値だけが、符号化された送信４１０を受信するトランシーバ４０４に送信される必要があり、あるいは代わりに、「ａ」という値と初期シードインデックス値だけが、符号化されたメッセージを復号するための他のトランシーバに通信される必要がある。これは、順列をメモリに記憶するシステムと対照的に、多くのシステムリソースを必要としない通信システム４００における符号化すること、および復号することを提供する。図に示される例においては、トランシーバのうちの一方は、符号化された送信を復号する順列ジェネレータ４１４と関連して機能するデコーダ４１２を用いて示される。ジェネレータ４１４は、ジェネレータ４０６と相補的であり、「ａ」という値と、適用可能な場合には初期シードインデックス値とを利用することにより、受信された順列から元のシーケンスを生成することができ、これらの値の両方が、符号化された送信を用いて送信されることができる。
【００４４】
図５は、図４のシステムと図１および２に示されるエンコーダにおいて利用されることができる順列ジェネレータ５００の例示のブロック図を示している。図に示されるように、ジェネレータ５００は、乱数ジェネレータなどのシードインデックスジェネレータ５０４を含むことができる。しかしながら、以前に論じられているように、このシードインデックスジェネレータは、初期シードが、順列ジェネレータを使用したすべてのデバイスに知られている場合には、オプショナルである。
【００４５】
ジェネレータ５００は、第１の順列ユニットまたはジェネレータ５０６を含み、これは、順序変更されるべき０からＫ−１の整数の元のシーケンス５０８を受信する。第１の順列ジェネレータは、上記されるようなマッピング関数を実行することができ、ここで、０からＫ−１の整数の範囲内の開始するインデックス値（シードインデックスジェネレータ５０４などからの）を仮定すると、順序変更値が取得されることができる。次いで、この値は、出力５１０に出力されることができ、この出力は、エンコーダなどのデバイスに対して順序変更シーケンスを送付することができる。
【００４６】
図５にさらに示されるように、第１の順列ジェネレータは、第２の順列ユニットまたはジェネレータ５１２に対して現在のインデックス値を送付する。このジェネレータ５１２は、上記されるようにｎｅｘｔ＿ｉｎｄｅｘ関数を使用することができ、ここでは、異なる順序変更インデックス値が、入力インデックス値から生成される。次いで、ジェネレータは、順序変更シーケンスについての次の順序変更値の決定のために第１の順列ジェネレータに対して次のインデックス値を戻す。
【００４７】
ジェネレータ５００は、値Ｋを仮定して、アレイパラメータ「ａ」および「ｂ」を決定するためのプロセッサ５１４、あるいは等価のデバイスまたは機能を含むことができ、この値Ｋは、それらのそれぞれの値を計算する際に第１および第２の順列ジェネレータによって使用されることに注意すべきである。さらに、プロセッサ５１４、あるいはジェネレータ５０６または５０８のいずれかは、シーケンス５０６における値のすべてが、順序変更されているかどうか（すなわち、すべてのＫ個の値について計算される順序変更値）について追跡することができる。ジェネレータ５００は、１つまたは複数のプロセッサ、ハードウェア、あるいはファームウェア上で実行されるソフトウェアとしてインプリメントされることができることにさらに注意すべきである。
【００４８】
図６は、本開示に従う別の順列ジェネレータの別の例示のブロック図を示している。図に示されるように、ジェネレータ６０２は、０とＫ−１との間の何らかのランダム値にインデックスまたはシードを初期化するための手段６０４を含んでいる。しかしながら、前述のように、そのような手段の使用は、あらかじめ決定された開始するインデックス値が使用される場合には、オプショナルとすることができる。手段６０４は、インデックスの関数（すなわち、ｍａｐ（ｉｎｄｅｘ））としてマッピングされた要素または順序変更値を戻すマッピング関数の結果に等しい順序変更値を決定し、または設定するための手段６０６に対してインデックス値を出力する。次いで手段６０６は、順序変更値を出力するための手段６０８に対して結果として生ずる順序変更値を送付する。さらに、手段６０６は、例えば、現在のインデックス値の関数として上記されるｎｅｘｔ＿ｉｎｄｅｘ関数を使用してインデックスをアップデートする（すなわち、新しいインデックス値を決定する）（すなわち、ｉｎｄｅｘ＝ｎｅｘｔ＿ｉｎｄｅｘ（ｉｎｄｅｘ）を設定する）ための手段６１０に現在のインデックス値を供給する。手段６１０は、Ｋ個の値の受信シーケンスにおいて次の値をマッピングする際に使用されるべき手段６０６に対して次のインデックス値を戻す。
【００４９】
ジェネレータ６０２は、Ｋ個の順序変更値が出力されているかどうかを決定するための手段６１２も含んでいる。Ｋ個の順序変更値が手段６０６によってマッピングされているときに、ジェネレータは、Ｋ個の数の次のシーケンスが入力されるまで、処理を停止する。ジェネレータ６０２の要素は、ハードウェア、ファームウェア、または機械読取り可能ストレージ媒体上に記憶される命令などのソフトウェアの形でインプリメントされることができることに注意すべきである。
【００５０】
ここにおいて開示される例に関連して説明される方法またはアルゴリズムは、ハードウェアの形で直接に、プロセッサによって実行されるソフトウェアモジュールの形で、ファームウェア、またはこれらの２つ以上の組合せの形で実施されることができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、着脱可能なディスク、ＣＤ−ＲＯＭ、あるいは当技術分野において知られている他の任意の形態のストレージ媒体の中に存在することができる。例示のストレージ媒体は、プロセッサが、ストレージ媒体から情報を読み取り、そしてストレージ媒体に情報を書き込むことができるようにプロセッサに結合される。代替案においては、ストレージ媒体は、プロセッサと一体化されていることができる。プロセッサとストレージ媒体は、ＡＳＩＣの中に存在することができる。ＡＳＩＣは、ユーザ端末の中に存在することができる。代替案においては、プロセッサとストレージ媒体は、ユーザ端末における個別コンポーネントとして存在することができる。
【００５１】
上記に説明された例は、単に例示的なものであり、当業者は、今や、ここにおいて開示される発明の概念から逸脱することなく、上記に説明された例を多数利用し、また、発展させることができる。これらの例に対する様々な修正は、当業者にとって容易に明かであり得て、ここにおいて定義される包括的な原理は、ここにおいて説明される新規な態様の精神あるいは範囲から逸脱することなく、例えば、インスタントメッセージングサービス、または汎用の任意のワイヤレスデータ通信アプリケーションにおいて、他の例に適用されることができる。それ故に、本開示の範囲は、ここにおいて示される例だけに限定されるようには意図されず、ここにおいて開示される原理および新規な特徴と整合する最も広い範囲が与えられるべきである。用語「例示の(exemplary)」は、「１つの例、インスタンス、または例証としての役割を果たすこと」を意味するように、ここにおいてはもっぱら使用される。「例示の」としてここにおいて説明されるいずれの例も、他の例よりも好ましい、あるいは有利であるとして、必ずしも解釈されるべきであるとは限らない。したがって、ここにおいて説明される新規な態様は、添付の特許請求の範囲の範囲によってのみ定義されるべきである。
【図面の簡単な説明】
【００５２】
【図１】順列ジェネレータを含むターボエンコーダのブロック図である。
【図２】次に、少なくとも１つの順列ジェネレータを利用する、低密度ジェネレータ行列を使用したエンコーダのブロック図である。
【図３】本開示に応じて、１つまたは複数の順序変更シーケンスを生成するための方法の流れ図である。
【図４】本開示に従って、少なくとも１つの順列ジェネレータを使用する通信システムのブロック図である。
【図５】システムにおいて使用されることができる本願による順列ジェネレータの例示のブロック図である。
【図６】本開示に従う別の順列ジェネレータの別の例示のブロック図である。
【図１】
2009526445.tif 000014
【図２】
2009526445.tif 000015
【図３】
2009526445.tif 000016
【図４】
2009526445.tif 000017
【図５】
2009526445.tif 000018
【図６】
2009526445.tif 000019
【国際調査報告】
2009526445.tif 000020
2009526445.tif 000021
2009526445.tif 000022