JP2009526445A - 順列を生成するための方法および装置 - Google Patents
順列を生成するための方法および装置 Download PDFInfo
- Publication number
- JP2009526445A JP2009526445A JP2008553537A JP2008553537A JP2009526445A JP 2009526445 A JP2009526445 A JP 2009526445A JP 2008553537 A JP2008553537 A JP 2008553537A JP 2008553537 A JP2008553537 A JP 2008553537A JP 2009526445 A JP2009526445 A JP 2009526445A
- Authority
- JP
- Japan
- Prior art keywords
- permutation
- value
- values
- reordering
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2742—Irregular interleaver wherein the permutation pattern is not obtained by a computation rule, e.g. interleaver based on random generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2703—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
- H03M13/271—Row-column interleaver with permutations, e.g. block interleaving with inter-row, inter-column, intra-row or intra-column permutations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/27—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
- H03M13/2703—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
- H03M13/2721—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions the interleaver involves a diagonal direction, e.g. by using an interleaving matrix with read-out in a diagonal direction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
1組のK個の値の少なくとも1つの順列を決定するための方法および装置が、開示される。方法および装置は、最初に少なくとも1つの順列における次の値としてマッピングされた値を出力することと、第2のあらかじめ定義された順列関数に応じてインデックス値を次のインデックス値に設定することと、各オペレーションが少なくともK回実行され、K個の値の順序変更シーケンスが出力されるまで、マッピングすること、出力すること、および設定することを反復することと、に応じて、K個の値の組の内部の別の値にインデックス値をマッピングする第1の順列機能を利用する。
Description
[分野]
本願は、順列の生成に関し、より詳細には、例えばワイヤレスシステムなどを経由して、送信されるべき情報を符号化するために使用される1組のインデックスの擬似ランダム順列(pseudo-random permutation)を生成することに関する。
本願は、順列の生成に関し、より詳細には、例えばワイヤレスシステムなどを経由して、送信されるべき情報を符号化するために使用される1組のインデックスの擬似ランダム順列(pseudo-random permutation)を生成することに関する。
[背景]
ワイヤレス通信システムにおいて送信されるべき情報などの情報を符号化する際に、数字シーケンス(number sequence)の異なるランダム順列(random permutation)を生成することが知られている。順列がランダムになればなるほど、データ送信は、より堅牢になり、符号化されたデータの送信中に導入されるエラーに対して回復力に富むことになる。
ワイヤレス通信システムにおいて送信されるべき情報などの情報を符号化する際に、数字シーケンス(number sequence)の異なるランダム順列(random permutation)を生成することが知られている。順列がランダムになればなるほど、データ送信は、より堅牢になり、符号化されたデータの送信中に導入されるエラーに対して回復力に富むことになる。
順列がデータを符号化する際に利用される特定の例は、例として、ワイヤレスのトランスミッタまたはトランシーバにおいて利用されることができるターボエンコーダ(turbo encoder)を含んでいる。とりわけ、図1は、ワイヤレストランシーバにおいて利用されることができるターボエンコーダ100を示している。ターボエンコーダ100は、整数のシーケンス102(例えば、{0,1,2,...,K−1}、ここでKは整数である)によって識別されるデータ信号の入力を受信する。システム100において見られることができるように、シーケンスを符号化し、そして、結果として生ずる重畳的符号化シーケンス(resultant convoluntially encoded sequence)をマルチプレクサ(multiplexer)106に出力する上側の重畳コーダ(upper convolutional coder)104に、シーケンス102は、入力される。マルチプレクサ106は、非変更シーケンス102が送付される入力108も含んでいる。最後に、下側レッグ(lower leg)は、順に接続された順列ジェネレータ(permutation generator)110と重畳コーダ112とを含んでいる。
特に、ターボエンコーダ100の下側レッグは、規定されたアルゴリズムまたは方法に応じて、整数シーケンス102によって識別されるデータ信号を、最初に順序変更することにより、その信号を生成する。知られているアルゴリズムまたは方法の例については、後で論じられる。
シーケンス102が、順列ジェネレータ110によって順序変更された後に、次いで重畳コードは、重畳コーダ112によって、この順序変更シーケンス(permuted sequence)に適用される。例のエンコーダ100において、重畳コーダ104および112のおのおのからのデータシンボル(data symbols)と、K個のデータシンボル(K data symbols)108とは、ターボ符号化シンボル(turbo encoded symbols)114として出力されるようにマルチプレクサ106によって多重化される。
上記のように、順列ジェネレータ110は、シーケンス102の異なる順列を生成するための特定のアルゴリズムまたは方法を使用することができる。1つのそのようなアプローチは、順序変更シーケンスを生成するために、乱数ジェネレータ(random number generator)を使用してランダム順列を生成することである。それに応じて、エンコーダもデコーダも、同じシーケンスを生成するために同じ乱数ジェネレータと同じ初期シード数(initial seed number)とを利用することができる。しかしながら、このアプローチは、エンコーダとデコーダのおのおのが、生成された順序変更シーケンスをメモリに記憶しなければならない点で不利である。したがって、Kの大きな値では、そして多数の異なる順列では、そのような順列を記憶するために必要とされるメモリ容量(amount of memory)は、コストがかかるものである。
順列を生成することが知られている別のアプローチは、長方形アレイ(rectangular array)を使用することを含んでいる。一例として、0から9までの数字の順列が望ましいことが仮定される。これらの数字は、2行×5列(2×5)のサイズの長方形アレイの形に書き込まれることができる。次いで、数字ゼロから9が順において行へと挿入され、列から読み取られる。例示の結果として生ずるアレイは、次のように示される。
上のアレイから分かるように、列によって数字を読み取ることにより生成されることになる順序変更シーケンスは、{0,5,1,6,2,7,3,8,4,9}である。行数と列数のアレイを選択することにより、異なる順列が生成されることができることが当業者により理解されるであろう。しかしながら、このアプローチの短所は、結果として生ずるシーケンスが、十分なランダム性の程度を有しない可能性があり、それ故に堅牢な順列を提供しないことである。
知られているシーケンスの順列を生成するために使用されるさらなる方法は、線形合同技法(linear congruential technique)の使用を含んでいる。とりわけ、そのような技法においては、数字A0は、0とK−1との間で選択される。次に、再帰関数(recursive function)は、Anが、n=1、2、...、K−1の値について(aAn−1+b)modKに等しくなるように定義され、ここでnは、整数である。この定義された関数と一緒に、いくつかの条件が満たされる必要もある。第1の条件は、値aとbとが、Kよりも小さいことである。さらに、bは、Kと互いに素(relatively prime)である必要がある。さらに、値(a−1)は、Kを割り算するあらゆる素数(prime number)pに対して、pの倍数(multiple of p)である必要がある。さらに、値(a−1)は、もし値Kが4の倍数であるならば、同様に4の倍数である。最後に、aは、Kと互いに素であることが望ましい。
この技法の一例として、値K=9であり、素因数(prime factor)pが3であり、そして、aの値は(a−1)=3xであるように選択される、と仮定される。それに応じて、もし、aが4に等しく、bが7に等しく、A0が5に等しい場合には、生成される順序変更シーケンスは、{5,0,7,8,3,1,2,6,4}になるであろう。しかしながら、このアプローチに対する欠点は、Kの素の値(prime value)に対して、選択される(picked)ことができるaの唯一の値は1であることである。したがって、異なる順列は、A0とbの値においてのみ異なり、達成され得るランダム性を制限している。
順列を利用した技法において知られているエンコーダのタイプの別の例として、図2は、低密度ジェネレータ行列エンコーダ(Low Density Generator Matrix encoder)を利用したエンコーダ200を示している。図に示されるように、システムは、マルチプレクサ204に直接に送付される入力シーケンス202、ならびに低密度ジェネレータ行列エンコーダ208から出力される順序変更シーケンス206を受信する。低密度ジェネレータ行列エンコーダ208内で、符号化シンボルが、コードの並列連接(parallel concatenation)によって生成され、それは、その結果として、K個のデータシンボルの順列と、順序変更シーケンスのブロックを符号化するブロックコードと、から成っている(consist of)。これらのブロックコードシンボルは、低密度ジェネレータ行列208から並列206に出力された後に、マルチプレクサ204によって一緒に組み合わせられる。この場合にも、低密度ジェネレータ行列208によって実行される順列は、上記の知られているアルゴリズムまたは方法のうちのどれによってももたらせられる(effected)かもしれない。したがって、論じられた順列のアルゴリズムまたは方法のおのおのは欠点を有するので、低密度ジェネレータ行列208は、それに応じて同じ欠点を受ける。
本開示の一態様によれば、1組のK個の値の少なくとも1つの順列を決定するための方法が開示される。本方法は、K個の値の組の内部の設定値(set value)にインデックス値を初期化すること(initializing)と、第1のあらかじめ定義された順列関数(permutation function)に応じて、K個の値の組の内部の第1の順序変更値(permuted value)にインデックス値(index value)をマッピングすること(mapping)と、を含む。本方法は、少なくとも1つの順列における第1の値として第1の順序変更値を出力することと、第2のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成することと、第1のあらかじめ定義された順列関数に応じて、K個の値の組の内部の第2の順序変更値に次のインデックス値をマッピングすることと、をさらに含む。
別の態様によれば、1組のK個の値の少なくとも1つの順列を決定するための1組の命令を含む機械読取り可能ストレージ媒体(machine-readable storage medium)が、開示される。命令の組は、K個の値の組の内部の設定値にインデックス値を初期化するための命令を含んでいる。その組は、第1のあらかじめ定義された順列関数に応じて、K個の値の組の内部の第1の順序変更値にインデックス値をマッピングするための命令と、少なくとも1つの順列における第1の値として第1の順序変更値を出力するための命令と、をさらに含む。また、第2のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するための命令と、第1のあらかじめ定義された順列関数に応じて、K個の値の組の内部の第2の順序変更値に次のインデックス値をマッピングするための命令も、含まれている。
さらに別の態様においては、1組のK個の値の少なくとも1つの順列を決定するための順列ジェネレータ(permutation generator)が、開示される。本ジェネレータは、K個の値の組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータ(seed index generator)と、第1のあらかじめ定義された順列関数に応じてK個の値の組の内部の第1の順序変更値にインデックス値をマッピングするように、そして少なくとも1つの順列における第1の値として第1の順序変更値を出力するように構成された第1の順列ユニット(first permutation unit)と、を含む。本ジェネレータは、第2のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するように、そして第1の順列ジェネレータに対して次のインデックス値を出力するように構成された第2の順列ユニット、も含んでいる。
さらに別の態様によれば、通信システムにおける使用のためのトランシーバ(transceiver)が、開示される。本トランシーバは、少なくとも1つの順列の使用を介してワイヤレス信号を符号化し、または復号するためのエンコーダおよびデコーダのうちの少なくとも一方と、1組のK個の値の少なくとも1つの順列を決定するための順列ジェネレータと、を含む。順列ジェネレータは、特に、K個の値の組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータと、第1のあらかじめ定義された順列関数に応じて、K個の値の組の内部の第1の順序変更値にインデックス値をマッピングするように、そして少なくとも1つの順列における第1の値として第1の順序変更値を出力するように構成された第1の順列ユニットと、第2のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するように、そして第1の順列ジェネレータに対して次のインデックス値を出力するように構成された第2の順列ユニットと、をさらに含む。
さらにもう1つの態様によれば、1組のK個の値の少なくとも1つの順列を決定するための装置(apparatus)が、開示される。本装置は、K個の値の組の内部の設定値にインデックス値を初期化するための手段と、第1のあらかじめ定義された順列関数に応じて、K個の値の組の内部の第1の順序変更値にインデックス値をマッピングするための手段と、少なくとも1つの順列における第1の値として第1の順序変更値を出力するための手段と、第2のあらかじめ定義された順列関数に応じて、インデックス値に基づいて次のインデックス値を生成するための手段と、第1のあらかじめ定義された順列関数に応じて、K個の値の組の内部の第2の順序変更値に次のインデックス値をマッピングするための手段と、を含む。
本開示は、擬似ランダムであり、任意の長さのシーケンスのためのものでもあり得る順列、を生成するための方法および装置を開示している。今開示される方法および装置は、大きな値のKと異なる順列の大きな数についてさえも最小のメモリ容量を利用しながら、堅牢な符号化を提供するために十分なランダム性を有する順列の反復(iteration)を提供する。これは、入力インデックスに基づいて順序変更値を決定する第1の順列ジェネレータと、第1の順列ジェネレータに入力される後続の各インデックス値について使用されるべき次のインデックス値の順序変更シーケンスを提供する第2の順列ジェネレータとを利用することによって達成される。
図3は、本開示に応じて順列を生成するためのプロシージャを示している。図に示されるように、プロセス300は、ブロック302において初期化される。フローは、ブロック304へと進み、ここでインデックスは、ゼロとK−1との間の何らかのランダム値に初期化される。「シード(seed)」と称されるこの値は、乱数ジェネレータ(random number generator)または類似したファンクションを用いて導き出されることができる。さらに、図3の方法は、生成される乱数ではなくて、その代わりに固定シード値(fixed seed value)を利用することもできることに注意すべきである。
初期インデックスがブロック304において決定された後に、フローは、ブロック306へと進み、ここで順序変更値は、ブロック306において指し示されるようにインデックスのマッピングされた値に等しく設定される。順序変更値を設定するために使用される特定のマッピング関数(mapping function)については、以下で詳細に論じられることになる。次いでフローは、ブロック308へと進み、ここで順序変更値は、ゼロからK−1個の数の元のシーケンスの順序変更シーケンスにおける第1のインデックスとして出力される。
順序変更値がブロック308において出力された後に、フローは、ブロック310へと進み、ここでインデックスは、ブロック310において示されるように現在のインデックスに基づいて再帰的に決定される次のインデックスに等しくインデックスの値を設定することによりアップデートされる。このインデックス関数については、以下でさらに詳細に説明されることになる。インデックス値が設定された後に、フローは、判断ブロック(decision block)312へと進む。
ブロック312において、ブロック306、308、および310において行われた(effected)プロセスのK回の反復が実行されているかどうかについての決定が行われる。実行されていない場合、フローは、順序変更シーケンスのさらなる値を得るために、ブロック306、308、および310のプロセスを反復するためにブロック306へと進む。ひとたび、ブロック310において決定されるようにK回の反復が実行された後には、順列は、完成している。次いでフローは、M個の順列が生成されているかどうかについての決定のために、判断ブロック314へと進む。望ましい順列の数(M)は、ユーザの好みまたはシステム要件だけに応じて、1以上とすることができることに注意すべきである。M個の順列が生成された後に、ブロック314において決定されるように、プロセス300は、終了ブロック316において終了される。
図3のプロセスは、元のシーケンス、ゼロからK−1の1組の異なる順序変更シーケンスを生成するために任意の望ましい回数実行されることができることに注意すべきである。ランダムシード値を利用することにより、各順列は、独立に生成される。さらに、後続の各マッピングについてのインデックス値をアップデートすることは、メモリなど、かなりのシステムリソースを利用する必要なしに堅牢でランダムな順列を確立するための方法を提供する。
図3のブロック306のマッピング関数に関して、ゼロからK−1の数を長方形アレイに行方向に挿入する順列を生成するための一技法がある。これは、本開示において以前に論じられたように、アレイ中のエントリが、次いで元のシーケンスの順列を生成するために列方向に読み取られることを可能にする。長方形アレイの高さは、高さaがKより小さい何らかの素数であることを保証することにより制約されるだけである。したがって、「b」によって示される長方形アレイの幅は、bが、aによって除算されるKに等しい(
)点において制約されるだけである。Kと、剰余(remainder)を有する幅の値bを与えるaの値では、値bは、アレイを作成するために次の整数値まで単に端数が切り上げられ、このアレイは、本質的に整数値の行および列を有する。
元のシーケンスの要素(すなわち、ゼロからK−1)は、次いで長方形アレイに行方向に挿入される。一例として、Kの値は、10に等しく、高さaは、3行に等しく、幅bは、4列に等しいことが仮定される。結果として生ずる長方形アレイは、次の表1におけるように見えるであろう。
次に、それらの要素は、次いで(0、4、8、1、5、9、2、6、10、3、7、11)である結果として生ずるシーケンスと共に、列に沿って読み取られる。それ故に、元のシーケンスからの1対1のマップは、次の表2によって与えられることができる。
しかしながら、上の例においては、元のシーケンスの要素(0から9)は、この組を超えた値(すなわち、10および11)にマッピングすることに注意すべきである。それにもかかわらず、元のアレイの要素10は、7という順序変更インデックスにマッピングし、これは、元のシーケンスの数の必要とされる範囲内にあることに注意すべきである。したがって、マッピング関数は、要素をマッピングしたインデックス値に等しいインデックス値(以上の表2における要素)を参照し、次いで元の数の内部に含まれる、その要素のマッピングからもたらされるマッピングされた要素を使用することにより、元のシーケンスの数の範囲外にあるマッピングされた要素を再マッピングするように定義されることができる。その例における一例証として、最初に10の値にマッピングする8という値を有する要素が、アレイの中の10というインデックス値からもたらされるマッピングされた要素の値であり、0から9までの必要とされる範囲内にある、7という値に再マッピングされることが規定される。したがって、本例についての関数をマッピングするためにこのスキームを使用することは、下の表3に与えられる。
このマッピング関数のさらなる一例として、C+コードで書かれた、以下の擬似コードは、上記のマップ関数(map function)を実行するために使用されることができる例示の1つのインプリメンテーションである。
ここでrvは、入力インデックス値について戻される順序変更値である。以上のコードは、その値が、値Kに等しいか、または値Kを超過することがない限り、rv値を戻すことに注意すべきである。そのような場合には、マップ関数は、新しい入力されたインデックスではなくて、計算されたrv値をインデックス値として利用してもう一度実行される。この機能は、それ故に、戻される順序変更値が、0からK−1の値の範囲外に出なくなるように保証する。
図3に戻って参照すると、この関数は、順序変更値を出力する(すなわち、rvを戻す)ためにブロック306において一度実行され、シードインデックス値は、ブロック306におけるマッピングされた関数の実行に先立ってブロック310において実行される次のインデックス関数によって変更されることになり、これについては以下で詳細に説明されることになることに注意すべきである。図3のブロック310において実行されるnext_index関数に関して、以下の例は、マップ関数の各反復についてインデックスの変更を実現する例示の一方法を提供する。我々の第1の例においては、next_index関数は、単にnext_function(例えば、next_index=(index+1)モジュロ(modulo)(K))の各実行について1の値の増分となる可能性がある。
しかしながら、この第1の例示の順列生成の方法(例えば、以上のマッピング関数)だけを使用することは、必ずしも最良品質のランダム順列を与えるとは限らない。したがって、さらなる第2の順列が、マッピング関数の次の実行についての新しいインデックスを決定するために、第1の例示の順列生成によって生成されるこれらの各順序変更値について実行される。すなわち、この第2の順列は、長方形アレイの高さaが素数であるので、元のシーケンスの順列を使用して次のインデックスを決定すること、または生成することを含んでいる。
とりわけ、これは、An=(An−1+c)モジュロ(a)などの再帰を使用して行われることができ、ここで値cは、aよりも小さな何らかの素数であり、A0の初期値は、ゼロに等しい。したがって、Kが10に等しく、aが3に等しく、bが4に等しく、数字cが2の値に設定される場合の以上の例を使用して、シーケンス{0,1,...(a−1)}の結果として生じる順列は、シーケンス{0,1,2}から{2,1,0}への順列になる。この順列は、事実上、長方形アレイの行の結果として生ずる順列である。すなわち、行0は、行2に順序変更され、行1は、行1に順序変更され、行2は、行0に順序変更される。このスキームを使用して、K=10、a=3、およびb=4を有する一例を使用したこの順列の結果として生ずるマッピングは、下の表4に示される。
同様に、長方形アレイの列は、シーケンス{0,1,...(b−1)}の順列によって順序変更されることができる。したがって、列ゼロと列3は、変更されないままであるのに対して、列1と2は、それらが、下の表5において与えられる長方形アレイの結果として生ずるマッピングを用いて並べられるように、順序変更される。
長方形アレイの行と列の両方についての順列の後に、さらなるランダム性は、結果として生ずるアレイのエントリを斜めに読み取ることにより、ある可能性がある。すなわち、読み取ることは、行ゼロと列ゼロから開始され、列プラス1モジュロbだけ増分された列において、行プラス1モジュロaだけ行が増分される。これは、結果として、以上の例を仮定すると、{8,6,1,11,4,2,9,7,0,10,5,3}のシーケンスとなる。値K以上であるエントリは意味がないので、これらのエントリは、結果として生ずるシーケンス{8,6,1,4,2,9,7,0,5,3}を与えるようにスキップされる。
図3のプロセスは、各順列が、たった2つの数字aと、初期のランダムに決定されたシード「インデックス」値によって定義される能力を提供する。しかしながら、上記のように、初期インデックス値は、あらかじめ決定されることもでき、それ故に各順列は、1つの数字aによって簡単に定義されることができるが、ランダムに決定されたシードは、より堅牢でランダムな順列を提供することができる。aについての値は、素である数によって制約されるだけであるが、それにもかかわらず、aは、素数の表からランダムに選択されることができる。さらに、aの値は、値Kよりも小さいものとして制約される。追加の品質度は、数字bが、aと互いに素であることが保証される場合に、取得されることもできる。当業者によって理解されることができるように、上記のマッピング関数と、次のインデックス関数は、単なる例示であるにすぎず、多数の異なる関数と、コードシーケンスとが、両方のマッピングされた値を順序変更するために、そして使用されるべき次のインデックス値を決定するために利用されることができる。初期のシードインデックス値と、選択された値aだけを必要とすることにより、これら2つの値だけが、順序変更シーケンスから初期シーケンスを決定するためにその中のデコーダによる使用のためにトランスミッタからレシーバへと通信される必要があるにすぎないので、以上の方法は、通信システムにおいて有用である。
図3のプロセスが、実際の順序変更シーケンスをどのようにして決定するかについての一例証として、以下の例が提供される。この例においては、以前に使用される値および表が、簡単にするために使用されることになる。上記の例では、Kの値は、10に設定され、aの値は、3に設定された。マップ関数の順序変更シーケンスの結果は、以上に提示された表3において見られることができる。next_index関数の結果の一例が、入力インデックスに基づいて戻される新しいインデックスを示す表6によって以上に示される。
一例として、ランダムに生成されようが、あるいは故意に選択されようが、初期シードまたはインデックスが、7であることを仮定すると、上記され、図3に示されるようなマッピング関数と次のインデックス関数は、堅牢な擬似ランダム性を有する順列シーケンスを与える。結果として生ずる生成された順序変更シーケンスの一例として、下の表7において見られることができるように、初期インデックスは、7である。
マッピング関数(図3のブロック306)に入力されるときに、値の出力は、6であり、これは、そのときには出力される順序変更シーケンスにおける第1の値(例えば、図3のブロック308)である。順序変更シーケンスの第1の値の出力の後に、これは、mapped_valシーケンスとしてラベル付けされた表7の中間列である。マッピング関数が第1の値を決定した後に、次のインデックス関数(例えば、図3におけるブロック310)は、以前のインデックス値に基づいて次のインデックスを決定する。以上の例においては、7というインデックス値がインデックス関数に入力され、このインデックス関数は、表7の第3列の第1行において見られることができるように、ゼロの出力値を与える。
図3のブロック312に示されるように、次のインデックス値が決定され、K個の順序変更値がまだ生成されていない後には、プロセスは、ブロック310において決定される新しいインデックス値を利用して、次のマッピングされる値(すなわち、順序変更値)を決定するために戻る。表7の第2行に示されるように、0という決定された新しいインデックス値は、マッピング関数へのインデックス値入力として使用される。0という入力値は、やはり示されるように0という順序変更出力値を与える。それ故に、生成される順列における第2の順序変更値は、0である。
次いで、インデックス値0が、次のインデックス関数に入力され、このインデックス関数は、次のインデックス値についての5という値を戻す。次いで、この新しいインデックスは、次には9という次の順序変更値を決定するために使用され、以下同様となる。図3において見られることができるように、マッピング関数と次のインデックス関数は、K個の値の順序変更シーケンスを与えるようにK回反復される。したがって、ただの一例として、初期シードまたはインデックスが、7であることを仮定すると、生成される順列は、表7に見られることができるように、{6,0,9,1,7,2,4,5,8,3}である。
図4は、図3の方法が使用されることができる例示の通信システムを示している。とりわけ、図4は、通信システム400の中に少なくとも2つのトランシーバ402および404を有する通信システム400を示している。トランシーバデバイス(402または404)のうちの少なくとも一方は、送信されるべき送信シンボルを符号化するためのエンコーダ408によって使用される順列ジェネレータ406を含んでいる。エンコーダ408は、例えば図1に開示されるようなターボエンコーダ、または図2に示されるような低密度ジェネレータ行列を使用したエンコーダとすることができる。いずれの場合にも、順列ジェネレータ406は、図3に示されるプロセスに応じて動作する。したがって、ワイヤレス信号送信410のように信号が送信されるときに、初期シードがシステム400において知られている場合、「a」という値だけが、符号化された送信410を受信するトランシーバ404に送信される必要があり、あるいは代わりに、「a」という値と初期シードインデックス値だけが、符号化されたメッセージを復号するための他のトランシーバに通信される必要がある。これは、順列をメモリに記憶するシステムと対照的に、多くのシステムリソースを必要としない通信システム400における符号化すること、および復号することを提供する。図に示される例においては、トランシーバのうちの一方は、符号化された送信を復号する順列ジェネレータ414と関連して機能するデコーダ412を用いて示される。ジェネレータ414は、ジェネレータ406と相補的であり、「a」という値と、適用可能な場合には初期シードインデックス値とを利用することにより、受信された順列から元のシーケンスを生成することができ、これらの値の両方が、符号化された送信を用いて送信されることができる。
図5は、図4のシステムと図1および2に示されるエンコーダにおいて利用されることができる順列ジェネレータ500の例示のブロック図を示している。図に示されるように、ジェネレータ500は、乱数ジェネレータなどのシードインデックスジェネレータ504を含むことができる。しかしながら、以前に論じられているように、このシードインデックスジェネレータは、初期シードが、順列ジェネレータを使用したすべてのデバイスに知られている場合には、オプショナルである。
ジェネレータ500は、第1の順列ユニットまたはジェネレータ506を含み、これは、順序変更されるべき0からK−1の整数の元のシーケンス508を受信する。第1の順列ジェネレータは、上記されるようなマッピング関数を実行することができ、ここで、0からK−1の整数の範囲内の開始するインデックス値(シードインデックスジェネレータ504などからの)を仮定すると、順序変更値が取得されることができる。次いで、この値は、出力510に出力されることができ、この出力は、エンコーダなどのデバイスに対して順序変更シーケンスを送付することができる。
図5にさらに示されるように、第1の順列ジェネレータは、第2の順列ユニットまたはジェネレータ512に対して現在のインデックス値を送付する。このジェネレータ512は、上記されるようにnext_index関数を使用することができ、ここでは、異なる順序変更インデックス値が、入力インデックス値から生成される。次いで、ジェネレータは、順序変更シーケンスについての次の順序変更値の決定のために第1の順列ジェネレータに対して次のインデックス値を戻す。
ジェネレータ500は、値Kを仮定して、アレイパラメータ「a」および「b」を決定するためのプロセッサ514、あるいは等価のデバイスまたは機能を含むことができ、この値Kは、それらのそれぞれの値を計算する際に第1および第2の順列ジェネレータによって使用されることに注意すべきである。さらに、プロセッサ514、あるいはジェネレータ506または508のいずれかは、シーケンス506における値のすべてが、順序変更されているかどうか(すなわち、すべてのK個の値について計算される順序変更値)について追跡することができる。ジェネレータ500は、1つまたは複数のプロセッサ、ハードウェア、あるいはファームウェア上で実行されるソフトウェアとしてインプリメントされることができることにさらに注意すべきである。
図6は、本開示に従う別の順列ジェネレータの別の例示のブロック図を示している。図に示されるように、ジェネレータ602は、0とK−1との間の何らかのランダム値にインデックスまたはシードを初期化するための手段604を含んでいる。しかしながら、前述のように、そのような手段の使用は、あらかじめ決定された開始するインデックス値が使用される場合には、オプショナルとすることができる。手段604は、インデックスの関数(すなわち、map(index))としてマッピングされた要素または順序変更値を戻すマッピング関数の結果に等しい順序変更値を決定し、または設定するための手段606に対してインデックス値を出力する。次いで手段606は、順序変更値を出力するための手段608に対して結果として生ずる順序変更値を送付する。さらに、手段606は、例えば、現在のインデックス値の関数として上記されるnext_index関数を使用してインデックスをアップデートする(すなわち、新しいインデックス値を決定する)(すなわち、index=next_index(index)を設定する)ための手段610に現在のインデックス値を供給する。手段610は、K個の値の受信シーケンスにおいて次の値をマッピングする際に使用されるべき手段606に対して次のインデックス値を戻す。
ジェネレータ602は、K個の順序変更値が出力されているかどうかを決定するための手段612も含んでいる。K個の順序変更値が手段606によってマッピングされているときに、ジェネレータは、K個の数の次のシーケンスが入力されるまで、処理を停止する。ジェネレータ602の要素は、ハードウェア、ファームウェア、または機械読取り可能ストレージ媒体上に記憶される命令などのソフトウェアの形でインプリメントされることができることに注意すべきである。
ここにおいて開示される例に関連して説明される方法またはアルゴリズムは、ハードウェアの形で直接に、プロセッサによって実行されるソフトウェアモジュールの形で、ファームウェア、またはこれらの2つ以上の組合せの形で実施されることができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、着脱可能なディスク、CD−ROM、あるいは当技術分野において知られている他の任意の形態のストレージ媒体の中に存在することができる。例示のストレージ媒体は、プロセッサが、ストレージ媒体から情報を読み取り、そしてストレージ媒体に情報を書き込むことができるようにプロセッサに結合される。代替案においては、ストレージ媒体は、プロセッサと一体化されていることができる。プロセッサとストレージ媒体は、ASICの中に存在することができる。ASICは、ユーザ端末の中に存在することができる。代替案においては、プロセッサとストレージ媒体は、ユーザ端末における個別コンポーネントとして存在することができる。
上記に説明された例は、単に例示的なものであり、当業者は、今や、ここにおいて開示される発明の概念から逸脱することなく、上記に説明された例を多数利用し、また、発展させることができる。これらの例に対する様々な修正は、当業者にとって容易に明かであり得て、ここにおいて定義される包括的な原理は、ここにおいて説明される新規な態様の精神あるいは範囲から逸脱することなく、例えば、インスタントメッセージングサービス、または汎用の任意のワイヤレスデータ通信アプリケーションにおいて、他の例に適用されることができる。それ故に、本開示の範囲は、ここにおいて示される例だけに限定されるようには意図されず、ここにおいて開示される原理および新規な特徴と整合する最も広い範囲が与えられるべきである。用語「例示の(exemplary)」は、「1つの例、インスタンス、または例証としての役割を果たすこと」を意味するように、ここにおいてはもっぱら使用される。「例示の」としてここにおいて説明されるいずれの例も、他の例よりも好ましい、あるいは有利であるとして、必ずしも解釈されるべきであるとは限らない。したがって、ここにおいて説明される新規な態様は、添付の特許請求の範囲の範囲によってのみ定義されるべきである。
Claims (50)
- K個の値の組の少なくとも1つの順列を決定するための方法であって、
K個の値の前記組の内部の設定値にインデックス値を初期化することと、
第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第1の順序変更値に前記インデックス値をマッピングすることと、
前記少なくとも1つの順列における第1の値として前記第1の順序変更値を出力することと、
第2のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成することと、
前記第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第2の順序変更値に前記次のインデックス値をマッピングすることと、
を備える方法。 - 前記少なくとも1つの順列における第2の値として前記第2の順序変更値を出力すること、
をさらに備える請求項1に記載の方法。 - 前記順列が前記K個の値のすべてを含むまで、次のインデックス値をマッピングすることを、さらなる順序変更値を出力することを、そしてさらなる次のインデックス値を生成することを継続すること、
をさらに備える請求項1に記載の方法。 - 定義された数の順列についてインデックス値をマッピングするプロセスを反復することにより、前記少なくとも1つの順列の決定の後に少なくとも第2の順列を決定すること、
をさらに備える請求項3に記載の方法。 - 前記設定値は、乱数ジェネレータによって決定される乱数である、請求項1に記載の方法。
- 前記第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の順序変更値に前記インデックス値をマッピングすることは、a個の行とb個の列とを有するアレイにマッピングすることを含む、ただし、aは、Kより小さな素数であり、bは、少なくともK/aの値に設定される、請求項1に記載の方法。
- 前記第1の順列関数は、K個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、のオペレーションをもたらす、請求項6に記載の方法。
- 前記第1の順列関数は、前記アレイが、aとbの積がKよりも大きいようにサイズが決められるときに、K個の値の数よりも大きな値を有するマッピングされた順序変更要素の再マッピングを、再マッピングするその要素を使用することにより、さらにおこなうこと、を含む、請求項7に記載の方法。
- 前記第2の順列関数は、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、をもたらす、請求項6に記載の方法。
- 前記第2の順列は、関係An=(An−1+c)モジュロ(a)によって定義される再帰関数であり、ここで、Anは、順序変更インデックス値であり、前記値cは、aよりも小さな素数であり、A0の初期値は、ゼロであるように定義される、請求項6に記載の方法。
- K個の値の組の少なくとも1つの順列を決定するための命令の組を含む機械読取り可能ストレージ媒体であって、命令の前記組は、
K個の値の前記組の内部の設定値にインデックス値を初期化するための命令と、
第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第1の順序変更値に前記インデックス値をマッピングするための命令と、
前記少なくとも1つの順列における第1の値として前記第1の順序変更値を出力するための命令と、
第2のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するための命令と、
前記第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第2の順序変更値に前記次のインデックス値をマッピングするための命令と、
を備える、
機械読取り可能ストレージ媒体。 - 命令の前記組は、
前記少なくとも1つの順列における第2の値として前記第2の順序変更値を出力するための命令、
をさらに備える、
請求項11に記載の機械読取り可能ストレージ媒体。 - 命令の前記組は、
前記順列が、前記K個の値のすべてを含むまで、次のインデックス値をマッピングすること、さらなる順序変更値を出力すること、そしてさらなる次のインデックス値を生成すること、を継続するための命令、
をさらに備える、
請求項11に記載の機械読取り可能ストレージ媒体。 - 命令の前記組は、
定義された数の順列についてインデックス値数をマッピングする前記のプロセスを反復することにより、前記少なくとも1つの順列の決定の後に少なくとも第2の順列を決定すること、
をさらに備える、
請求項13に記載の機械読取り可能ストレージ媒体。 - 前記設定値は、乱数ジェネレータによって決定される乱数である、請求項11に記載の機械読取り可能ストレージ媒体。
- 前記第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の順序変更値に前記インデックス値をマッピングするための前記命令は、a個の行とb個の列とを有するアレイにマッピングすることを含む、ただし、aは、Kより小さな素数であり、bは、少なくともK/aの値に設定される、請求項11に記載の機械読取り可能ストレージ媒体。
- 前記第1の順列関数は、K個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、のオペレーションをもたらす、請求項16に記載の機械読取り可能ストレージ媒体。
- 前記第1の順列関数は、前記アレイが、aとbの積がKよりも大きいようにサイズが決められるときに、K個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうこと、を含む、請求項17に記載の機械読取り可能ストレージ媒体。
- 前記第2の順列関数は、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、をもたらす、請求項16に記載の機械読取り可能ストレージ媒体。
- 前記第2の順列は、関係An=(An−1+c)モジュロ(a)によって定義される再帰関数であり、ここで、Anは、順序変更インデックス値であり、前記値cは、aよりも小さな素数であり、A0の初期値は、ゼロであるように定義される、請求項16に記載の機械読取り可能ストレージ媒体。
- K個の値の組の少なくとも1つの順列を決定するための順列ジェネレータであって、
K個の値の前記組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータと、
第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第1の順序変更値に前記インデックス値をマッピングするように、そして前記少なくとも1つの順列における第1の値として前記第1の順序変更値を出力するように、構成された第1の順列ユニットと、
第2のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するように、そして前記第1の順列ジェネレータに対して前記次のインデックス値を出力するように、構成された第2の順列ユニットと、
を備える順列ジェネレータ。 - 前記第1の順列ユニットは、前記第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第2の順序変更値に前記受信された次のインデックス値をマッピングするように、そして前記少なくとも1つの順列における第2の値として前記第2の順序変更値を出力するように、さらに構成されている、請求項21に記載の順列ジェネレータ。
- 前記第2の順列ユニットは、前記順列が、前記K個の値のすべてを含むまで、さらなる次のインデックス値を生成するように構成されており、そして、前記第1の順列ユニットは、前記第2の順列ユニットから受信される前記次のインデックス値のおのおのをマッピングすること、および、前記順列における追加の順序変更値としてこれらのマッピングされた値を出力すること、を継続するように構成されている、請求項21に記載の順列ジェネレータ。
- 前記の第1および第2の順列ユニットは、定義された数の順列について前記のインデックス値をマッピングすることを反復することにより、前記少なくとも1つの順列の決定の後に少なくとも第2の順列を決定するようにさらに構成されている、請求項23に記載の順列ジェネレータ。
- 前記シードインデックスジェネレータは、乱数ジェネレータによって決定される乱数に基づいて前記設定値を生成するように構成された前記乱数ジェネレータ、をさらに備える、請求項21に記載の順列ジェネレータ。
- 前記第1の順列ユニットは、a個の行とb個の列とを有するアレイにマッピングすることを含めて、前記第1のあらかじめ定義された順列関数に応じて、K個の値の前記組の内部の順序変更値に前記インデックス値をマッピングするようにさらに構成されている、ただし、aは、Kより小さな素数であり、bは、少なくともK/aの値にさらに設定される、請求項21に記載の順列ジェネレータ。
- 前記第1の順列ユニットは、K個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、に相当するオペレーションをもたらすように構成されている、請求項26に記載の順列ジェネレータ。
- 前記第1の順列ユニットは、前記アレイが、aとbの積がKよりも大きいようにサイズが決められるときに、K個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうようにさらに構成されている、請求項27に記載の順列ジェネレータ。
- 前記第2の順列ユニットは、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、に相当するオペレーションをもたらすようにさらに構成されている、請求項26に記載の順列ジェネレータ。
- 前記第2の順列ユニットは、関係An=(An−1+c)モジュロ(a)によって定義される再帰関数を実行するように構成されており、ここで、Anは、順序変更インデックス値であり、前記値cは、aよりも小さな素数であり、A0の初期値は、ゼロであるように定義される、請求項26に記載の順列ジェネレータ。
- 通信システムにおける使用のためのトランシーバであって、
少なくとも1つの順列の使用を介してワイヤレス信号を符号化する、または復号するための、エンコーダおよびデコーダのうちの少なくとも一方と、
K個の値の組の前記少なくとも1つの順列を決定するための順列ジェネレータと、
を備え、前記順列ジェネレータは、
K個の値の前記組の内部の設定値にインデックス値を初期化するように構成されたシードインデックスジェネレータと、
第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第1の順序変更値に前記インデックス値をマッピングするように、そして前記少なくとも1つの順列における第1の値として前記第1の順序変更値を出力するように、構成された第1の順列ユニットと、
第2のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するように、そして前記第1の順列ジェネレータに対して前記次のインデックス値を出力するように、構成された第2の順列ユニットと、
を備える、
トランシーバ。 - 前記第1の順列ユニットは、前記第1のあらかじめ定義された順列関数に応じて、K個の値の前記組の内部の第2の順序変更値に、前記受信された次のインデックス値をマッピングするように、そして前記少なくとも1つの順列における第2の値として前記第2の順序変更値を出力するように、さらに構成されている、請求項31に記載のトランシーバ。
- 前記第2の順列ユニットは、前記順列が、前記K個の値のすべてを含むまで、さらなる次のインデックス値を生成するように構成されており、そして、前記第1の順列ユニットは、前記第2の順列ユニットから受信される前記次のインデックス値のおのおのをマッピングすること、そして、前記順列における追加の順序変更値としてこれらのマッピングされた値を出力すること、を継続するように構成されている、請求項31に記載のトランシーバ。
- 前記の第1および第2の順列ユニットは、定義された数の順列について前記のインデックス値をマッピングすることを反復することにより、前記少なくとも1つの順列の決定の後に少なくとも第2の順列を決定するように、さらに構成されている、請求項33に記載のトランシーバ。
- 前記シードインデックスジェネレータは、乱数ジェネレータによって決定される乱数に基づいて前記設定値を生成するように構成された前記乱数ジェネレータ、をさらに備える、請求項31に記載のトランシーバ。
- 前記第1の順列ユニットは、a個の行とb個の列とを有するアレイにマッピングすることを含めて、前記第1のあらかじめ定義された順列関数に応じて、K個の値の前記組の内部の順序変更値に前記インデックス値をマッピングするようにさらに構成されている、ただし、aは、Kより小さな素数であり、bは、少なくともK/aの値に設定される、請求項31に記載のトランシーバ。
- 前記第1の順列ユニットは、K個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、に相当するオペレーションをもたらすように構成されている、請求項36に記載のトランシーバ。
- 前記第1の順列ユニットは、前記アレイが、aとbの積がKよりも大きいようにサイズが決められるときに、K個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうようにさらに構成されている、請求項37に記載のトランシーバ。
- 前記第2の順列ユニットは、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、に相当するオペレーションをもたらすように構成されている、請求項36に記載のトランシーバ。
- 前記第2の順列ユニットは、関係An=(An−1+c)モジュロ(a)によって定義される再帰関数を実行するように構成されており、ここで、Anは、順序変更インデックス値であり、前記値cは、aよりも小さな素数であり、A0の初期値は、ゼロであるように定義される、請求項36に記載のトランシーバ。
- K個の値の組の少なくとも1つの順列を決定するための装置であって、
K個の値の前記組の内部の設定値にインデックス値を初期化するための手段と、
第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第1の順序変更値に前記インデックス値をマッピングするための手段と、
前記少なくとも1つの順列における第1の値として前記第1の順序変更値を出力するための手段と、
第2のあらかじめ定義された順列関数に応じて前記インデックス値に基づいて次のインデックス値を生成するための手段と、
前記第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の第2の順序変更値に前記次のインデックス値をマッピングするための手段と、
を備える装置。 - 前記少なくとも1つの順列における第2の値として前記第2の順序変更値を出力するための手段、
をさらに備える請求項41に記載の装置。 - 前記順列が、前記K個の値のすべてを含むまで、次のインデックス値をマッピングすること、さらなる順序変更値を出力すること、そしてさらなる次のインデックス値を生成すること、を継続するための手段、
をさらに備える請求項41に記載の装置。 - 定義された数の順列についてインデックス値をマッピングするプロセスを反復することにより、前記少なくとも1つの順列の決定の後に少なくとも第2の順列を決定するための手段、
をさらに備える請求項43に記載の装置。 - 前記設定値は、乱数ジェネレータによって決定される乱数である、請求項41に記載の装置。
- 前記第1のあらかじめ定義された順列関数に応じてK個の値の前記組の内部の順序変更値に前記インデックス値をマッピングすることは、a個の行とb個の列とを有するアレイにマッピングすることを含む、ただし、aは、Kより小さな素数であり、bは、少なくともK/aの値に設定される、請求項41に記載の装置。
- 前記第1の順列関数は、K個の値の前記組を前記アレイに行方向に書き込むこと、そしてそのあと、順序変更されたマッピングされた要素の組を得るために前記アレイから前記値を列方向に読み取ること、のオペレーションをもたらす、請求項46に記載の装置。
- 前記第1の順列関数は、前記アレイが、aとbの積がKよりも大きいようにサイズが決められるときに、K個の値の数よりも大きな値を有するマッピングされた順序変更要素のさらなる再マッピングを、再マッピングするその要素を使用することにより、おこなうことを含む、請求項47に記載の装置。
- 前記第2の順列関数は、前記アレイ内の前記インデックス値の順列を生成するために、前記アレイの前記番号付けされた行の順列、および、前記アレイの前記番号付けされた列の順列、をもたらす、請求項46に記載の装置。
- 前記第2の順列は、関係An=(An−1+c)モジュロ(a)によって定義される再帰関数である、ただし、Anは、順序変更インデックス値であり、前記値cは、aよりも小さな素数であり、A0の初期値は、ゼロであるように定義される、請求項46に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/347,507 US8082479B2 (en) | 2006-02-02 | 2006-02-02 | Methods and apparatus for generating permutations |
PCT/US2007/061579 WO2007090204A1 (en) | 2006-02-02 | 2007-02-02 | Methods and apparatus for generating permutations |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009526445A true JP2009526445A (ja) | 2009-07-16 |
Family
ID=37983573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008553537A Pending JP2009526445A (ja) | 2006-02-02 | 2007-02-02 | 順列を生成するための方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8082479B2 (ja) |
EP (1) | EP1980023A1 (ja) |
JP (1) | JP2009526445A (ja) |
KR (1) | KR101006032B1 (ja) |
CN (1) | CN101379711B (ja) |
WO (1) | WO2007090204A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8289999B1 (en) * | 2009-11-05 | 2012-10-16 | L-3 Services, Inc. | Permutation mapping for ARQ-processed transmissions |
WO2012104674A1 (en) * | 2011-01-31 | 2012-08-09 | Freescale Semiconductor, Inc. | Integrated circuit device and method for determining an index of an extreme value within an array of values |
US9513918B2 (en) * | 2011-12-22 | 2016-12-06 | Intel Corporation | Apparatus and method for performing permute operations |
CN103034471B (zh) * | 2012-12-10 | 2016-06-01 | 杜海洋 | 一种随机数的生成方法及系统 |
CN103530086B (zh) * | 2013-09-26 | 2017-01-18 | 福建升腾资讯有限公司 | 一种分散机制的软件随机数生成方法 |
US20170177358A1 (en) * | 2015-12-20 | 2017-06-22 | Intel Corporation | Instruction and Logic for Getting a Column of Data |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000353965A (ja) * | 1999-02-19 | 2000-12-19 | Ntt Docomo Inc | インターリービング方法、インターリービング装置、ターボ符号化方法及びターボ符号化装置 |
JP2001196941A (ja) * | 2000-01-13 | 2001-07-19 | Matsushita Electric Ind Co Ltd | インタリーブ装置およびインタリーブ方法 |
JP2001285077A (ja) * | 2000-03-31 | 2001-10-12 | Mitsubishi Electric Corp | 通信装置および通信方法 |
JP2002190743A (ja) * | 2000-09-29 | 2002-07-05 | Samsung Electronics Co Ltd | Umtsにおけるターボ符号化器のインターリーバ及びインターリービングを遂行するための方法 |
JP2004320434A (ja) * | 2003-04-16 | 2004-11-11 | Mitsubishi Electric Corp | インターリーバ、デインターリーバおよび通信装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347385B1 (en) * | 1998-08-03 | 2002-02-12 | Nortel Networks Limited | Interleavers for turbo code |
JP4081875B2 (ja) | 1998-09-08 | 2008-04-30 | ソニー株式会社 | 符号化装置および方法、復号装置および方法、並びに提供媒体 |
US6871303B2 (en) | 1998-12-04 | 2005-03-22 | Qualcomm Incorporated | Random-access multi-directional CDMA2000 turbo code interleaver |
KR100346170B1 (ko) | 1998-12-21 | 2002-11-30 | 삼성전자 주식회사 | 통신시스템의인터리빙/디인터리빙장치및방법 |
US6442728B1 (en) * | 1999-01-11 | 2002-08-27 | Nortel Networks Limited | Methods and apparatus for turbo code |
AUPQ403399A0 (en) * | 1999-11-12 | 1999-12-09 | Canon Kabushiki Kaisha | Image compression |
US6549998B1 (en) * | 2000-01-14 | 2003-04-15 | Agere Systems Inc. | Address generator for interleaving data |
WO2004025839A1 (en) | 2002-09-09 | 2004-03-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Speed and memory optimised interleaving |
US7481212B2 (en) | 2002-10-30 | 2009-01-27 | Nektar Therapeutics | Increased dosage metered dose inhaler |
JP4265345B2 (ja) | 2003-08-22 | 2009-05-20 | 日本電気株式会社 | 携帯電話機、インターリーブパラメータ演算装置、方法及びプログラム |
US7673213B2 (en) * | 2004-02-19 | 2010-03-02 | Trellisware Technologies, Inc. | Method and apparatus for communications using improved turbo like codes |
EP1587217A1 (en) * | 2004-04-15 | 2005-10-19 | Istituto superiore Mario Boella per le Tecnologie dell'Informazione e delle Telecomunicazioni | Pruning methods for the generation of S-random interleavers |
GB2415336B (en) * | 2004-06-18 | 2006-11-08 | Toshiba Res Europ Ltd | Bit interleaver for a mimo system |
-
2006
- 2006-02-02 US US11/347,507 patent/US8082479B2/en not_active Expired - Fee Related
-
2007
- 2007-02-02 JP JP2008553537A patent/JP2009526445A/ja active Pending
- 2007-02-02 EP EP07710448A patent/EP1980023A1/en not_active Withdrawn
- 2007-02-02 WO PCT/US2007/061579 patent/WO2007090204A1/en active Application Filing
- 2007-02-02 CN CN2007800044027A patent/CN101379711B/zh not_active Expired - Fee Related
- 2007-02-02 KR KR1020087021476A patent/KR101006032B1/ko not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000353965A (ja) * | 1999-02-19 | 2000-12-19 | Ntt Docomo Inc | インターリービング方法、インターリービング装置、ターボ符号化方法及びターボ符号化装置 |
JP2001196941A (ja) * | 2000-01-13 | 2001-07-19 | Matsushita Electric Ind Co Ltd | インタリーブ装置およびインタリーブ方法 |
JP2001285077A (ja) * | 2000-03-31 | 2001-10-12 | Mitsubishi Electric Corp | 通信装置および通信方法 |
JP2002190743A (ja) * | 2000-09-29 | 2002-07-05 | Samsung Electronics Co Ltd | Umtsにおけるターボ符号化器のインターリーバ及びインターリービングを遂行するための方法 |
JP2004320434A (ja) * | 2003-04-16 | 2004-11-11 | Mitsubishi Electric Corp | インターリーバ、デインターリーバおよび通信装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2007090204A1 (en) | 2007-08-09 |
KR101006032B1 (ko) | 2011-01-06 |
US20070192655A1 (en) | 2007-08-16 |
US8082479B2 (en) | 2011-12-20 |
CN101379711A (zh) | 2009-03-04 |
CN101379711B (zh) | 2012-12-26 |
KR20080099299A (ko) | 2008-11-12 |
EP1980023A1 (en) | 2008-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4602406B2 (ja) | データをエンコード及びデコードするための方法並びに装置 | |
US6775800B2 (en) | System and method for high speed processing of turbo codes | |
RU2235424C2 (ru) | Перемежитель турбокода, использующий линейные конгруэнтные последовательности | |
JP3347335B2 (ja) | インタリービング方法、インタリービング装置、及びインタリーブパターン作成プログラムを記録した記録媒体 | |
US7178085B2 (en) | Encoder using low density parity check codes and encoding method thereof | |
ES2331876T3 (es) | Procedimiento y sistema de cuantificacion vectorial multi-velocidad de enrejado de una señal. | |
ES2673513T3 (es) | Procedimientos que emplean códigos de FEC con inactivación permanente de símbolos para procesos de codificación y decodificación | |
JP3359913B1 (ja) | 移動通信システムの直列鎖状コンボルーション符号化器に使用するためのインタリーバ及びそのインタリービング方法 | |
KR100762619B1 (ko) | 저밀도 패리티 검사 코드를 이용한 복호화 장치 및 방법 | |
JP2009526445A (ja) | 順列を生成するための方法および装置 | |
PT2165445T (pt) | Codificação convolucional computacionalmente eficiente com correspondência de taxas | |
JP2014170578A (ja) | メモリ・アクセス方法およびシステム | |
CN108400838B (zh) | 数据处理方法及设备 | |
RU2008139888A (ru) | Усовершенствованное кодирование/декодирование цифровых сигналов, в частности, при векторном квантовании с перестановочными кодами | |
JP2021119706A (ja) | ポーラ符号のレートマッチング方法及び装置 | |
KR20080041488A (ko) | 병렬 인터리빙 장치 및 방법 | |
TWI422166B (zh) | Turbo解碼器裝置及解碼turbo編碼信號的方法 | |
KR101503995B1 (ko) | 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 채널 부호화/복호화 방법 및 장치 | |
KR100468249B1 (ko) | 인터리브 어드레스 생성 장치, 터보 부호화 장치, 터보 복호화 장치, 통신 단말 장치, 기지국 장치 및 인터리브 어드레스 생성 방법 | |
US9374109B2 (en) | QPP interleaver/DE-interleaver for turbo codes | |
CN101667839B (zh) | 交织方法 | |
RU2365034C2 (ru) | Способ и устройство для кодирования и декодирования данных | |
KR101512078B1 (ko) | 특정밀도를 기반으로 하는 저밀도 역 코드를 이용한 부호화/복호화 방법 및 장치 | |
JP2008160169A (ja) | 通信装置、ターボ符号器および通信方法 | |
US7904761B1 (en) | Method and apparatus for a discrete power series generator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110705 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20111129 |