"LDGM構造を持つ検査行列に含まれる各列ブロックに対して、前記各列ブロックにおける非零要素の位置決めのために、当該列ブロックに含まれる列内に含まれるべき非零要素の数を示す列重みに相当する個数の初期値を割り当てる際に、前記各列ブロックに割り当てられる初期値の組み合わせそれぞれに含まれる当該列ブロックに対応する前記列重みに相当する個数の初期値が、パリティ長以下の自然数であって、前記検査行列において隣接する列間における非零要素の行位置の差を示すシフト数qを法とする剰余が互いに異なり、かつ、前記各列ブロックに割り当てられる組み合わせに含まれる初期値が互いに異なるように割り当て対象の初期値を選択し、前記各列ブロックに対して割り当てられた組み合わせに含まれる初期値に基づいて、当該列ブロックに含まれる各列の非零要素の位置を特定することによって前記検査行列を作成することを特徴とする検査行列作成方法。請求項1に記載の検査行列作成方法において、前記各列ブロックに初期値の組み合わせを割り当てる手順は、前記シフト数qに等しい個数の互いに前記シフト数qを法とする剰余が異なる自然数R1~Rqと、これらの自然数R1~Rqに前記シフト数qとn通りの整数c1~cnとの積を加算して得られるq×n個の自然数R1q×c1~Rqq×cnとを、前記各列ブロックに割り当てる初期値の候補として保持する初期値テーブルを作成し、前記初期値テーブルから、前記各列ブロックについて、当該列ブロックに対応する列重みで示される個数の初期値の候補を選択することを特徴とする検査行列作成方法。請求項2に記載の検査行列作成方法において、前記初期値の候補を選択する手順は、前記初期値テーブルに含まれる前記初期値の候補をランダムに並べ替え、前記初期値テーブルから前記初期値テーブルにおける配列順に従って前記初期値の候補を読み出し、前記初期値テーブルから新たに初期値の候補が読み出されるごとに、前記読み出された初期値の候補の前記シフト数qを法とする剰余とそれまでに同一の列ブロックに対応して読み出された初期値の候補の前記シフト数qを法とする剰余とが一致するか否かを判断し、前記剰余が一致すると判断された初期値の候補に代えて、当該初期値の候補の次の順序に従って前記初期値テーブルに配列された別の初期値の候補を読み出すことを特徴とする検査行列作成方法。請求項2に記載の検査行列作成方法において、前記初期値の候補を選択する手順は、前記初期値テーブルに含まれる前記初期値の候補をランダムに並べ替え、前記各列ブロックに対応して、前記初期値テーブルから前記初期値テーブルにおける配列順に従って、当該列ブロックの前記列重みで示される個数の前記初期値の候補を読み出し、前記各列ブロックに対応して読み出された前記初期値の候補組み合わせに、前記シフト数qを法とする剰余が同一である初期値の候補の組が含まれているか否かを判断し、前記剰余が同一である初期値の候補の組が含まれていると判断された場合に、前記初期値テーブルにおける前記初期値の候補の配列順序を変更し、前記各列ブロックに対応して、前記初期値テーブルから前記初期値テーブルにおける配列順に従って、当該列ブロックに対応する前記列重みで示される個数の前記初期値の候補を再び読み出す、ことを特徴とする検査行列作成方法。LDGM構造を持つ検査行列に含まれる各列ブロックに対して、前記各列ブロックにおける非零要素の位置決めのために、当該列ブロックに含まれる列内に含まれるべき非零要素の数を示す列重みに相当する個数の初期値を割り当てる割り当て部と、前記割り当て部によって前記各列ブロックに対して割り当てられた初期値の組み合わせに基づいて、前記検査行列の対応する列ブロックに含まれる各列の非ゼロ成分の位置を特定することによって前記検査行列を生成する作成部と、前記検査行列を用いて送信信号を符号化する符号化部とを備え、前記割り当て部は、前記各列ブロックに割り当てられる初期値の組み合わせそれぞれに含まれる当該列ブロックに対応する前記列重みに相当する個数の初期値が、パリティ長以下の自然数であって、前記検査行列において隣接する列間における非零要素の行位置の差を示すシフト数qを法とする剰余が互いに異なり、かつ、前記各列ブロックに割り当てられる組み合わせに含まれる初期値が互いに異なるように割り当て対象の初期値を選択することを特徴とする符号化器。請求項1に記載した検査行列作成方法で作成された検査行列の行および列を所定の規則に従って入れ替ることによって、前記検査行列を前記シフト数qに等しい数の階層に分割可能なように変形する変形部と、前記検査行列作成方法で作成された検査行列を用いて符号化された符号語と前記変形部による変形後の検査行列とついて、前記階層ごとに事後確率を算出する処理を繰り返すことにより前記符号語の復号を行う繰り返し復号部と、を備え、前記変形部は、前記検査行列の各行を、当該行を示す行番号を前記シフト数qで除した際の剰余に従って入れ替える行操作部と、前記検査行列に含まれるパリティ部分行列の各列を、前記パリティ部分行列内で当該列を示す列番号を前記シフト数qで除した際の剰余に従って入れ替える列操作部とを備えることを特徴とする復号器。ところで、階層的復号アルゴリズムは、階層内に含まれる複数の行についての事後確率の計算処理を並行して行う。このため、階層内に同一の列に非零要素を含む行が複数存在すると、データ衝突が発生し、算出された事後確率に誤差が発生することが報告されている。本件開示は、データ衝突を発生させない検査行列を作成可能な検査行列作成方法および符号化器並びに復号器を提供することを目的とする。一つの観点による検査行列作成方法は、LDGM構造を持つ検査行列に含まれる各列ブロックに対して、前記各列ブロックにおける非零要素の位置決めのために、当該列ブロックに含まれる列内に含まれるべき非零要素の数を示す列重みに相当する個数の初期値を割り当てる際に、前記各列ブロックに割り当てられる初期値の組み合わせそれぞれに含まれる当該列ブロックに対応する前記列重みに相当する個数の初期値が、パリティ長以下の自然数であって、前記検査行列において隣接する列間における非零要素の行位置の差を示すシフト数qを法とする剰余が互いに異なり、かつ、前記各列ブロックに割り当てられる組み合わせに含まれる初期値が互いに異なるように割り当て対象の初期値を選択し、前記各列ブロックに対して割り当てられた組み合わせに含まれる初期値に基づいて、当該列ブロックに含まれる各列の非零要素の位置を特定することによって前記検査行列を作成する。また、別の観点による符号化器は、LDGM構造を持つ検査行列に含まれる各列ブロックに対して、前記各列ブロックにおける非零要素の位置決めのために、当該列ブロックに含まれる列内に含まれるべき非零要素の数を示す列重みに相当する個数の初期値を割り当てる割り当て部と、前記割り当て部によって前記各列ブロックに対して割り当てられた初期値の組み合わせに基づいて、前記検査行列の対応する列ブロックに含まれる各列の非ゼロ成分の位置を特定することによって前記検査行列を生成する作成部と、前記検査行列を用いて送信信号を符号化する符号化部とを備え、前記割り当て部は、前記各列ブロックに割り当てられる初期値の組み合わせそれぞれに含まれる当該列ブロックに対応する前記列重みに相当する個数の初期値が、パリティ長以下の自然数であって、前記検査行列において隣接する列間における非零要素の行位置の差を示すシフト数qを法とする剰余が互いに異なり、かつ、前記各列ブロックに割り当てられる組み合わせに含まれる初期値が互いに異なるように割り当て対象の初期値を選択する。更に、別の観点による復号器は、本件開示の検査行列作成方法で作成された検査行列の行および列を所定の規則に従って入れ替ることによって、前記検査行列を前記シフト数qに等しい数の階層に分割可能なように変形する変形部と、前記検査行列作成方法で作成された検査行列を用いて符号化された符号語と前記変形部による変形後の検査行列とついて、前記階層ごとに事後確率を算出する処理を繰り返すことにより前記符号語の復号を行う繰り返し復号部と、を備え、前記変形部は、前記検査行列の各行を、当該行を示す行番号を前記シフト数qで除した際の剰余に従って入れ替える行操作部と、前記検査行列に含まれるパリティ部分行列の各列を、前記パリティ部分行列内で当該列を示す列番号を前記シフト数qで除した際の剰余に従って入れ替える列操作部とを備える。本件開示の検査行列作成方法および符号化器並びに復号器によれば、データ衝突を発生させない検査行列を作成し、LDPC符号化およびLDPC復号化に利用することができる。本件開示の検査行列作成方法および符号化器並びに復号器の実施形態の説明に先立って、階層的復号アルゴリズムを適用する際にデータ衝突を発生させる検査行列が作成される原因を分析する。まず、階層的復号アルゴリズムを適用する際に、LDGM構造を持つ検査行列に対して施される変形処理について説明する。図1に、LDGM構造を持つ検査行列の一例を示す。また、図2に、検査行列に対する変形処理を説明する図を示す。図1は、非特許文献1に開示された方法に従って作成された検査行列の一例である。図1に示した符号HA、HBは、それぞれ情報部分行列およびパリティ部分行列を示す。情報部分行列HAは、それぞれ所定数Nbの列を含む列ブロックごとに作成される。また、情報部分行列HAは、列重みが大きい列ブロックと列重みが小さい列ブロックを組み合わせて含む。なお、列重みが大きい列ブロックとは、3より大きい列重みを持つ列ブロックを指す場合が多い。一方、列重みが小さい列ブロックとは、列重みが3である列ブロックを指す場合が多い。各列ブロックにおける非零の要素の位置は、初期値テーブルに含まれる乱数から列重みに応じて選ばれた初期値に基づいて特定される。なお、図1の例では、図の煩雑化を避けるために、列重みが3の列ブロックと列重みが2の列ブロックとを組み合わせて情報部分行列HAを作成する場合を説明する。番号1の列ブロックを含む情報部分行列HAの左側に位置するいくつかの列ブロックに列重み3が割り当てられている。そして、例えば、図1に示した列ブロックCB1には、初期値テーブルから選択された列重みと同数、すなわち、3つの乱数が初期値r11、r12、r13として割り当てられる。一方、番号4の列ブロックを含む情報部分行列HAの右側に位置するいくつかの列ブロックに列重み2が割り当てられている。そして、同様に、列ブロックCB4には、初期値テーブルから選択された列重みと同数、すなわち、2つの乱数が初期値r41、r42として割り当てられる。図1に示した例では、列ブロックCB1に割り当てられた3つの初期値のうち、初期値r11および初期値r13に基づいて、各列に含まれる非零の要素の位置が特定される様子を示した。図1からわかるように、列ブロックCB1に含まれる列番号0の列においては、初期値r11、r12、r13で示される行の要素が非零の値を持つ要素となる。そして、列ブロックCB1に含まれる列番号1の列においては、列番号0の列に配置された非零の要素を行方向にq行シフトさせた位置に非零の値を持つ要素が配置される。更に、列ブロックCB1に含まれる列番号2の列においては、列番号1の列に配置された非零の要素を行方向にq行シフトさせた位置に非零の値を持つ要素が配置される。つまり、列ブロックCB1のk番目の列において、非零の要素は、初期値r11、r12、r13と行方向へのシフト数qとを用いて、それぞれ行番号r11k×q、r12k×q、r13k×qで示される位置に配置される。なお、初期値r11、r12、r13とシフト数qおよび列番号kを用いて求めた行番号がパリティ長Mを超える場合に、非零の要素は、それぞれの行番号からパリティ長Mを減算した値で示される行位置に配置される。例えば、第k列において非零要素が初期値r11に基づいて配置される行番号を示す値r11k×qがパリティ長Mを超えた場合は、行番号r11k×q-Mに非零要素が配置される。同様に、列ブロックCB4の最初の列においては、初期値r41、r42で示される行の要素が非零の値を持つ要素となる。そして、列ブロックCB4に含まれる以降の各列における非零の要素の位置は、上述した列ブロックCB1と同様に、左隣の列に配置された非零の要素を行方向にq行シフトさせた位置に配置される。つまり、列ブロックCB4のk番目の列において、非零の要素は、初期値r41、r42と行方向へのシフト数qとを用いて、それぞれ行番号r41k×q、r42k×qで示される位置に配置される。なお、初期値r41、r42とシフト数qおよび列番号kを用いて求めた行番号がパリティ長Mを超える場合に、非零の要素は、それぞれの行番号からパリティ長Mを減算した値で示される行位置に配置される。このようにして作成された検査行列は、階層復号アルゴリズムを適用した復号処理に用いる際に、次のようにして、上述したシフト数qに等しい数の階層に分割可能な構造に変形される。検査行列に含まれる各行は、図2に示すように、行番号を上述したシフト数qで除算した際の剰余に応じて並べ替えられる。この並べ替えにより、剰余がそれぞれ0~q-1である行番号を持つ行を含む各階層L1~Lqが形成される。また、パリティ部分行列に対しては、更に、列番号をシフト数qで除算した際の剰余に応じて並べ替える操作が行われる。図2に示した例では、各階層L1~Lqを各階層の行数Pに対応するP列×P行のサブブロックに区切って示した。また、図2において、各サブブロックにおいて、対角線に平行に並んだ非零要素を太い実線で示した。一方、図2において、非零要素の配置を示す線が示されていないサブブロックは、いずれも零行列である。図2から分かるように、上述した並べ替え操作により、検査行列に含まれる非零要素は、ごく一部のサブブロックの対角線に平行に並ぶ位置に集約される。例えば、図2に符号SB1で示したサブブロックSB1は、シフト数qより小さい初期値に基づいて配置された非零要素が、対角成分として集約されたサブブロックの例である。一方、図2に符号SB2で示したサブブロックSB2は、シフト数q以上の初期値に基づいて配置された非零要素が、対角線に平行に並ぶサブブロックの例である。図3に、階層的復号アルゴリズムにおける事後確率の計算順序を説明する図を示す。図3に示した符号T1,T2,T3,は、それぞれ階層1、階層2、階層3,に属する各行に基づく行列演算が行われるタイミングを示している。階層的復号アルゴリズムでは、各階層に属するP行についての行列演算が並列に行われる。そして、前の階層についての行列演算で得られた結果を利用して、次の階層についての行列演算が行われる。つまり、j番目の階層Ljについての行列演算で得られる第n列の事後確率Sumは、階層Ljについての行列演算に関する所定の関数fと階層Lj-1の第n列の事後確率Sumを用いて式のように表される。Sum=f2このようにして、各階層についての行列演算を行っていき、最後の階層Lqについての行列演算が終了したときに得られる事後確率Sumを用いて、パリティ検査による誤り訂正処理が行われる。ところで、各階層についての行列演算を進めていく過程で、一つの階層に属するP行の中に第n列に非零の要素を持つ行が複数行存在する場合に、データ衝突が発生する。図4に、データ衝突を説明する図を示す。図4において、各階層を示す矩形の右側に示した数式は、対応する階層について、式に示した処理を行うことによって得られる第n列の事後確率を示す。図4に示した階層Lj-2および階層Lj-1のように、第n列に含まれる非零の要素の数が1である場合は、それぞれの階層の右側に示した数式に従って、各階層までの部分についての第n列の事後確率を求めることができる。一方、図4に示した階層Ljには、第n列に非零の要素が配置された複数の行が含まれている。この場合に、非零の要素を含む各行についての演算処理で、階層Lj-1について得られたSumを共通して用いると、正しい結果を得ることができない。なぜなら、図4において、符号E2で示した非零要素を含む行についての演算は、階層Lj-1について得られたSumではなく、符号E1で示した非零要素を含む行について得られるSum‐E1を用いて行うべきだからである。このように、階層に含まれるP行についての演算を並列処理するために、本来参照するべき演算結果とは異なる前の階層の処理結果を参照して行列演算処理を行ってしまうことが、データ衝突である。そして、Sumを用いて得られる非零要素E2を含む行についての演算結果と、上述したSum‐E1を用いた場合に得られる非零要素E2を含む行についての演算結果との間の誤差は、以降の各階層についての演算結果に伝播する。このため、最終的に得られる事後確率Sumにも誤差が発生するので、復号器の誤り訂正能力も影響を受けることになる。図5に、データ衝突が発生する検査行列の一例を示す。図5に示した検査行列の例は、5つの階層に分割されている。また、図5において、各サブブロックにおいて、対角線に平行に並んだ非零要素を太い実線で示した。一方、図5において、非零成分を表す線が示されていないサブブロックは、いずれも零行列である。図5に示した検査行列の例では、例えば、行番号を階層数5で除算した際の剰余が1である階層L1と同じく剰余が3である階層L4に、対角成分を複数個含むサブブロックが含まれている。このため、これらの階層においてデータ衝突が発生する。ここで、図5に示した検査行列の第0列において非零要素が配置されている行番号は、この第0列を含む列ブロックに割り当てられた初期値を示している。図5に示した例では、上述した列ブロックに割り当てられた初期値は、1,13,26,54,63である。これらの初期値は、パリティ長100で示される範囲内でランダムに分布している。しかしながら、並べ替え後の検査行列では、初期値1,26および初期値13,63がそれぞれ階層L2と階層L4に集約されてしまっている。同一の階層に集約される初期値に注目すると、これらの初期値の差は、階層数に一致するシフト数qの倍数になっていることが分かる。例えば、階層L2に集約されている初期値1と初期値26の差25は、シフト数qの5倍である。同様に、階層L4に集約されている初期値13と初期値63の差50は、シフト数qの10倍である。つまり、いずれかの列ブロックに割り当てられた初期値の組み合わせの中に、差がシフト数qの整数倍となる初期値の組があれば、変形後の検査行列のいずれかの階層において、複数の非零要素を含む列が現れる。なお、差がシフト数qの整数倍である数は、言い換えれば、シフト数qを法とする剰余が同一である数である。したがって、データ衝突を発生させる初期値の組み合わせの条件は、シフト数qを法とする剰余が同一である初期値を含むことのように言い換えることができる。逆に、各列ブロックに割り当てる初期値の組み合わせに含まれる各初期値のシフト数qを法とする剰余が互いに異なっていれば、変形後の検査行列において、同一の階層に複数の初期値に対応して配置された非零の要素が集約されることはない。つまり、検査行列を作成する際に、シフト数qを法とする剰余が互いに異なるように、各列ブロックに初期値を割り当てれば、データ衝突を防ぐことができる。なお、列ブロックに設定された列重みがシフト数qより小さい場合は、シフト数qを法とする剰余が互いに異なる初期値の組み合わせを各列ブロックに割り当てることができる。この条件が満足される場合は、以下に述べるようにして、データ衝突を発生させない検査行列を作成することが望ましい。以下、図面に基づいて、本件開示の検査行列作成方法および符号化器並びに復号器の実施形態について詳細に説明する。図6に、本件開示の検査行列作成方法の一実施形態のフローチャートを示す。送信装置に含まれる符号化器は、送信データの符号化処理に先立って、図6に示すステップ301およびステップ302の処理を行って、M行N列の検査行列を作成する。検査行列の行数Mは、送信データに付加されるパリティ長に等しい。また、検査行列の列数Nは、送信データのデータ長Ndとパリティ長Mとの和で示される。符号化器は、検査行列内のM行Nd列の情報部分行列に含まれる各列ブロックについて、それぞれに設定された列重みに等しい個数の初期値を、以下に挙げる条件を満たすように選択する。条件1:いずれかの列ブロックに割り当てられる初期値は、パリティ長M以下の値を持つ自然数であること。条件2:いずれかの列ブロックに割り当てられる初期値は互いに重複しないこと。条件3:個々の列ブロックに割り当てられる初期値の組み合わせに含まれる各初期値は、シフト数qを法とする剰余が互いに異なること。ステップ301で割り当てられた初期値の組み合わせに基づいて、符号化器は、各列ブロックにおいて非零要素を配置する位置を特定する。図6に示した検査行列作成方法によれば、検査行列に含まれる情報部分行列の各列ブロックにおいて、シフト数qを法とする剰余が互いに異なる初期値に基づいて非零要素を配置することができる。このようにして作成された検査行列に配置された非零要素は、階層的復号アルゴリズムを適用するための変形処理により、シフト数qを法とする剰余が同一の行を集めて形成される階層に集約されることはない。つまり、図6に示した検査行列作成方法により、データ衝突を発生させない検査行列を作成することができる。次に、上述したステップ301の処理を具体的に実現する方法について説明する。図7に、検査行列作成方法の別実施形態のフローチャートを示す。図7に示したフローチャートに含まれるステップ311,312は、図6に示したステップ301に相当する。なお、図7に示したステップのうち、図6に示したステップと同等のものについては、同一の符号を付して示し、その説明は省略する。符号化器は、まず、上述した条件1,2を満たす所定の個数の自然数を初期値候補として含む初期値テーブルを作成する。例えば、符号化器は、パリティ長以下の値を持つ所定の個数の乱数を発生し、発生した個々の乱数を初期値候補として初期値テーブルに保持してもよい。また、符号化器は、非特許文献1に開示された手法を用いて、シフト数qに等しい個数の乱数とこれらの乱数に基づいて生成した擬似乱数とを初期値候補として含む初期値テーブルを作成してもよい。なお、擬似乱数の生成に用いる元の乱数は、シフト数qを法とする剰余が互いに異なっていることが望ましい。次いで、符号化器は、上述したステップ311で作成された初期値テーブルから、各列ブロックに対応して、上述した条件3を満たす初期値候補の組み合わせを選択する。図7に示した検査行列作成方法によれば、望ましい初期値候補を含む初期値テーブルから条件3を満たすように、各列ブロックに割り当てる初期値の組み合わせを選択することができる。例えば、非特許文献1に開示された手法を用いて作成された初期値テーブルから初期値の組み合わせを選択することにより、検査行列において非零要素を、不規則でありながら偏りなく、しかもまばらに配置することができる。次に、非特許文献1に開示された手法を用いて作成された初期値テーブルから各列ブロックに割り当てる初期値の組み合わせを選択する処理に好適な処理手順について説明する。図8に、検査行列作成方法の別実施形態のフローチャートを示す。また、図9に、初期値の組み合わせを選択する処理を説明する図を示す。なお、図8に示したステップのうち、図7に示したステップと同等のものについては、同一の符号を付して示し、その説明は省略する。また、図8に示したフローチャートに含まれるステップ321~ステップ328は、図7に示したステップ312に相当する。図8に示したステップ311において、符号化器は、図9に示すような初期値候補を含む初期値テーブルを作成する。図9に示した初期値候補の例は、パリティ長M=100を上限として、シフト数q=5に等しい5個の乱数1,17,13,4,10それぞれについて、行重みd=4に等しい4個の擬似乱数を生成した場合を示している。なお、図9の組ID欄に示した符号G1、G2,G3,G4,G0は、それぞれ元の乱数とこの乱数に基づいて生成された擬似乱数とを含む初期値候補のグループを示す。上述したように、符号化器は、各乱数に対応する擬似乱数を、元の乱数にシフト数qの整数倍を加算して生成する。したがって、図9に示した各組IDで示されるグループに含まれる初期値候補のシフト数qを法とする剰余は、いずれも、元の乱数のシフト数qを法とする剰余に一致する。つまり、図9に組IDに対応して示した初期値候補の組み合わせは、それぞれ同一の剰余系に属する。このようにして生成された初期値候補を含む初期値テーブルについて、符号化器は、初期値テーブルに含まれるq×d個の初期値候補をランダムに並べ替える処理を行う。符号化器は、例えば、図9に示すように、図9に示した20個の初期値候補を、それぞれが属するグループを区別することなく並べ替えてもよい。なお、図9において、並べ替えられた各初期値候補を示す欄の下に示した符号は、各初期値候補が属するグループを示す組IDを示す。次に、符号化器は、上述したようにして並べ替えられた配列順に従って、割り当て対象の列ブロックに対応して、初期値テーブルから一つの初期値候補を読み出す。ステップ322で読み出された初期値候補について、符号化器は、割り当て対象の列ブロックに対応して既に決定された初期値のいずれかと同一のグループに属しているか否かを判定する。符号化器は、例えば、上述した組IDに基づいて、新たに読み出された初期値候補と既に当該列ブロックに割り当てられた初期値とが属するグループが同一であるか否かを判定してもよい。図9に、図9に示した順に配列された初期値候補から、6つの列ブロックCB1~CB6に初期値を割り当てていく様子を示す。なお、図9の例では、番号1の列ブロックCB1に列重み5が、他の列ブロックCB2~CB6には列重み3が設定されている。例えば、列ブロックCB1について最初の初期値候補が読み出されたときには、未だ、既に割り当てられた初期値がない。このような場合に、符号化器は、新たに読み出した初期値候補と同一のグループに属する割り当て済みの初期値はないと判定する。この場合に、符号化器は、ステップ322で読み出した初期値候補を割り当て対象の列ブロックに割り当てる初期値の組み合わせに含める。次いで、符号化器は、初期値テーブルからの読出位置を次の初期値候補の配列順に進める。その後、符号化器は、割り当て対象の列ブロックについて、列重みで示される個数の初期値の割り当てが完了したか否かを判定する。初期値の組み合わせに含まれる初期値の数が列重み未満である場合に、符号化器は、ステップ326の否定判定として、ステップ322の処理に戻る。そして、符号化器は、初期値テーブルから新たな初期値候補を読み出す。図9のように初期値候補が並べられている場合に、符号化器は、上述した初期値候補13に続いて、図8のステップ322において、初期値候補63を読み出す。この場合に、列ブロックCB1に割り当てる初期値の組み合わせには、既に、同一の組IDで示される剰余が同一であるグループに属する初期値13が含まれている。したがって、符号化器は、新たに読み出された初期値候補63について、同一のグループに属する初期値があると判定する。この場合に、符号化器は、ステップ324をスキップしてステップ325の処理に進む。このようにして、符号化器は、既に初期値の組み合わせに含まれている初期値と同一の剰余を持つグループに属する初期値候補を、割り当て対象の列ブロックに対応する初期値の組み合わせに含めないでスキップする。そして、符号化器は、ステップ326の肯定判定を経てステップ322の処理に進んだ際に、この初期値候補に続いて初期値テーブルに配列された別の初期値候補を読み出す。図9に示した配列順に基づいて説明すると、上述した初期値候補63をスキップした後に、符号化器は、新たな初期値候補54を初期値テーブルから読み出す。新たに読み出した初期値候補54は、既に初期値の組み合わせに含まれている初期値13とは異なるグループに属している。この判定結果に応じて、符号化器は、この初期値候補54を列ブロックCB1に割り当てる初期値の組み合わせに含める処理を行う。符号化器は、上述したステップ322~ステップ326の処理を、ステップ326において、割り当て対象の列ブロックに設定された列重み分の初期値の割り当てが完了したと判定するまで繰り返す。例えば、列ブロックCB1に割り当てる初期値の組み合わせを選択する過程で、符号化器は、図9に示した初期値候補13,63,54,1,26,10,76,67を読み出す。そして、符号化器は、これらの初期値候補のうち、初期値候補63,26,76をスキップする。そして、これらのスキップされた初期値候補に代えて、符号化器は、初期値テーブルにおいてこれらの初期値候補の次に配列された初期値候補54,10,67を読み出す。図9に示した例では、スキップされた初期値候補の代わりに読み出された初期値候補54,10,67は、いずれも、既に初期値の組み合わせに含まれている他の初期値とは異なるグループに属している。このため、これらの初期値候補54,10,67は、いずれも列ブロックCB1に割り当てられる初期値の組み合わせに含められる。このようにして、符号化器は、互いにシフト数qを法とする剰余が異なるグループに属する初期値の組み合わせを、列ブロックCB1に割り当てることができる。なお、図9において、スキップされた初期値候補を、二重取り消し線を付して示した。このようにして、割り当て対象の列ブロックに設定された列重みで示される個数の初期値を含む初期値の組み合わせの選択が完了したときに、符号化器は、ステップ327の処理に進む。ステップ327で、符号化器は、全ての列ブロックについて初期値の組み合わせを選択する処理が完了したか否かを判定する。未だ初期値の組み合わせの選択が完了していない列ブロックがある場合に、符号化器は、前の列ブロックについての処理でスキップした初期値候補を初期値テーブルに戻す処理を行う。符号化器は、例えば、初期値テーブルの最後に配列された初期値候補の後に、スキップした初期値候補を配列してもよい。その後、符号化器は、ステップ328で戻された初期値候補を含む初期値テーブルから、新しく割り当て対象となった列ブロックに対して割り当てる初期値の組み合わせを選択する処理を開始する。符号化器は、ステップ327において、全ての列ブロックについて初期値の組み合わせを選択する処理が完了したと判定されるまで、ステップ322~ステップ328の処理を繰り返す。このようにして、符号化器は、各列ブロックに対してそれぞれ列重みに等しい個数の初期値の組み合わせを割り当てる。例えば、図9に列ブロックCB2に対応して示した初期値38,85,4は、図9に示した配列順に従って初期値テーブルから読み出された初期値候補である。このように、初期値テーブルから順に読み出した初期値候補38,85,4が、互いに異なるグループに属している場合に、符号化器は、読み出した初期値候補をそのまま初期値の組み合わせに含める。同様に、列ブロックCB3についての処理で、符号化器は、順に初期値テーブルから読み出した初期値候補88、29をそれぞれ初期値の組み合わせに含める。その後、初期値候補29に続いて配列された初期値候補79を読み出したときに、符号化器は、この初期値候補79を、初期値29と同一の剰余を持つグループに属することからスキップする。そして、符号化器は、この初期値候補79に代えて、次に初期値テーブルから読み出した初期値候補92を、列ブロックCB3に割り当てる初期値の組み合わせに含める。同様にして、符号化器は、列ブロックCB4に対して、初期値35,17,51を含む初期値の組み合わせを割り当てる。この過程で、符号化器は、初期値候補60,42を、それぞれ既に初期値の組み合わせに含まれている初期値35,17と同一のグループに属するとの判断に基づいてスキップする。以降に割り当てが行われる列ブロックCB5,CB6についての処理で、符号化器は、列ブロックCB1~CB4についての処理でスキップされた初期値候補の中から選択した初期値候補を初期値の組み合わせに含める。例えば、符号化器は、列ブロックCB5についての割り当て処理の過程で、列ブロックCB1についての処理でスキップされた初期値候補63,26,76を初期値テーブルから読み出す。そして、符号化器は、これらの初期値候補のうち初期値候補63,26を列ブロックCB5に割り当てる初期値の組み合わせに含める。一方、符号化器は、初期値26と同一のグループに属することから、初期値候補76を再びスキップする。そして、符号化器は、この初期値候補76に代えて、初期値テーブルから読み出した初期値候補79を、列ブロックCB5に割り当てる初期値の組み合わせに含める。列ブロックCB5についての処理過程で再びスキップされた初期値候補76は、再び初期値テーブルに戻される。そして、この初期値候補76は、列ブロックCB6についての処理で、符号化器により、列ブロックCB4についての処理過程でスキップした初期値候補60,42とともに初期値の組み合わせに含められる。このようにして、符号化器は、各列ブロックに対して、それぞれシフト数qを法とする剰余が互いに異なるグループに属する列重み等しい個数の初期値を含む初期値の組み合わせを割り当てることができる。そして、これらの初期値の組み合わせに基づいて、図8に示したステップ302において、符号化器は、検査行列に含まれる各列ブロックにおける非零要素の配置を決定する。上述したようにして作成された検査行列に含まれる個々の列ブロックに含まれる各列において、非零要素は、シフト数qを法とする剰余が互いに異なる初期値から順次にシフト数qで示される行数ずつずらして配置される。したがって、階層的復号アルゴリズムを適用するために行われる変形処理によって、任意の列ブロックに割り当てられた互いに異なる初期値に基づいて配置された非零要素は、必ず、互いに異なる階層にそれぞれ集約される。故に、図8に示した検査行列作成方法の一実施形態によれば、階層的復号アルゴリズムを適用する際にデータ衝突を発生させない検査行列を作成することができる。図10に、検査行列作成方法の別実施形態のフローチャートを示す。なお、図10に示したステップのうち、図7、8に示したステップと同等のものについては、同一の符号を付して示し、その説明は省略する。また、図10に示したフローチャートに含まれるステップ321~ステップ327およびステップ330~ステップ331は、図7に示したステップ312に相当する。図10に示した検査行列作成方法を実行する際に、符号化器は、各列ブロックを割り当て対象として、ステップ322の処理とステップ324~ステップ327の処理とを繰り返す。この過程で、符号化器は、初期値テーブルにおける配列順に従って、各列ブロックに、それぞれ列重みに等しい個数の初期値候補を割り当てる。そして、全ての列ブロックに初期値の組み合わせを割り当てる初期値の組み合わせを選択したときに、符号化部は、ステップ330の処理に進む。ステップ330において、符号化器は、各列ブロックに割り当てられた初期値の組み合わせに含まれる各初期値のシフト数qを法とする剰余が互いに異なるか否かを判定する。いずれかの列ブロックに対応する初期値の組み合わせに、シフト数qを法とする剰余が同一である初期値の組が含まれている場合に、符号化器は、ステップ330の否定判定として、ステップ331の処理に進む。ステップ331の処理で、符号化器は、全ての列ブロックに対してそれぞれ割り当てた初期値の組み合わせを廃棄する。その後、符号化器は、ステップ321の処理に戻って、初期値テーブルに含まれる初期値候補を再びランダムに並べ替える処理を行う。そして、並べ替えられた初期値テーブルから、各列ブロックに割り当てる初期値の組み合わせを選択する処理を再び開始する。つまり、ステップ330において、上述した条件3を満たさない初期値の組み合わせを検出するごとに、符号化器は、初期値テーブル内の初期値候補を並べ替えた上で、新たに各列ブロックに割り当てる初期値の組み合わせを選択する処理を行う。そして、各列ブロックに対して割り当てられた初期値の組み合わせの全てが上述した条件3を満たすときに、符号化器は、これらの初期値の組み合わせに基づいて各列の非零要素を配置する。このようにして、図10に示した検査行列作成方法の一実施形態により、階層的復号アルゴリズムを適用する際にデータ衝突を発生させない検査行列を作成することができる。なお、図7に示したステップ312を実現する方法は、図8、図10のフローチャートで示した手法に限られず、他のいかなる手法を用いてもよい。例えば、上述した初期値テーブルの並べ替えの代わりに、シフト数qを法とする剰余が同一である初期値候補を含む各グループ内で、これらの初期値候補をランダムに並べ替え、各グループから一つずつ順に初期値テーブルに配列してもよい。このようにして並べ替えられた初期値テーブルを用いれば、配列順に各列ブロックに列重み分の初期値候補を読み出すことにより、上述した条件3を満たすように、初期値の組み合わせを選択することができる。次に、本件開示の符号化器の実施形態について説明する。図11に、本件開示の符号化器の一実施形態を示す。図11において、符号化対象の送信データは、符号Dinで示した入力端子を介して符号化器に入力される。また、符号化器によって得られた符号出力は、符号Coutで示した出力端子を介して出力される。図11に示した符号化器は、割り当て部11と、作成部12と、符号化部13とを含んでいる。また、割り当て部11は、初期値テーブル作成部14と、保持部15と、選択部16と、選択制御部17とを含んでいる。初期値テーブル作成部14は、まず、シフト数qを法とする剰余が互いに異なるq個の乱数と、これらの乱数に基づいて作成した擬似乱数とを含むq×d個の初期値候補を、パリティ長以下の値の範囲で生成する。初期値テーブル作成部14は、例えば、図7に示したステップ311の処理で説明した手法を用いて、上述した条件1,2を満たす各初期値候補を生成してもよい。次いで、初期値テーブル作成部14は、これらの初期値候補をランダムに配列することにより、初期値テーブルを作成する。保持部15は、作成された初期値テーブルを保持する。選択部16は、保持部15に保持された初期値テーブルに含まれる初期値候補から各列ブロックに割り当てる初期値の組み合わせを選択する処理を、選択制御部17からの指示に従って実行する。選択部16は、例えば、図10を用いて説明したステップ322~ステップ327の処理を実行することにより、各列ブロックに割り当てる初期値の組み合わせの候補を選択してもよい。そして、選択制御部17は、例えば、図10を用いて説明したステップ330、ステップ331およびステップ321の処理を行うことにより、選択部16に上述した条件3を満たす初期値の組み合わせを選択させてもよい。このようにして、割り当て部11は、上述した3つの条件を満たす初期値の組み合わせを、各列ブロックに割り当てることができる。割り当て部11によって各列ブロックに割り当てられた初期値の組み合わせに基づいて、作成部12は、検査行列に含まれる情報部分行列の各列ブロックにおいて非零要素を配置する処理を行う。更に、作成部12は、上述したようにして非零要素が配置された情報部分行列と二重対角構造を持つパリティ部分行列とを組み合わせることにより、検査行列を作成する。符号化部13は、上述したようにして作成された検査行列Hと送信信号Txとの積がゼロ行列になるように、送信データDにMビットのパリティを付加することにより、送信データを符号化する。図11に例示した符号化器によれば、データ衝突を発生させないように非零要素が配置された検査行列を作成する検査行列作成処理を実現することができる。そして、この符号化器は、本件開示の検査行列作成法穂によって作成された検査行列を用いて、送信データの符号化を行うことができる。図12に、本件開示の符号化器を含む送信装置のハードウェア構成の一例を示す。図12に示した送信装置は、符号化器20と、送信回路25とを含む。また、符号化器20は、プロセッサ21と、メモリ22と、データ入力部23と、行列演算部24と、送信回路25とを含む。プロセッサ21と、メモリ22と、データ入力部23と、行列演算部24と、送信回路25とは、バスを介して接続される。また、送信回路25は、符号化器20によって生成される送信信号Txを、このバスを介して受け取る。そして、送信回路25は、受け取った送信信号Txを、例えば、アンテナを介して無線送信する。メモリ22には、送信装置を動作させるためのシステムプログラムおよび上述した検査行列作成処理を実行するためのアプリケーションプログラムが格納されている。アプリケーションプログラムは、本件開示の検査行列作成方法に含まれる各処理を実行するためのプログラムを含む。図12に例示した送信装置は、上述したプロセッサ21、メモリ22などのハードウェアと、システムプログラムおよびアプリケーションプログラムなどのプログラムとが有機的に協働することにより、上述した各種機能を実現する。例えば、図11に例示した初期値テーブル作成部14の機能は、プロセッサ21が、図7に示したステップ311の処理のためのプログラムを実行することによって実現してもよい。また、保持部15は、メモリ22の記憶容量の一部に初期値テーブルを表す情報を格納することによって実現してもよい。また、図11に例示した選択部16および選択制御部17の機能は、プロセッサ21が、メモリ22に格納された初期値テーブルを表す情報を用いて、図7に示したステップ312の処理のためのプログラムを実行することによって実現してもよい。なお、プロセッサ21は、ステップ312に相当する処理として、図8に示したステップ322~ステップ328の処理を実行することによって、選択部16および選択制御部17の機能を実現してもよい。同様に、プロセッサ21は、ステップ312に相当する処理として、図10に示したステップ321~ステップ331の処理を実行することによって、選択部16および選択制御部17の機能を実現してもよい。また、図11に例示した作成部12の機能は、プロセッサ21が、図6に示したステップ302の処理のためのプログラムを実行することによって実現してもよい。そして、作成された検査行列を表す情報は、メモリ22に保持される。また、図11に例示した符号化部13の機能は、プロセッサ21とメモリ22に保持された検査行列を表す情報と行列演算部24とが協働することによって実現してもよい。なお、図11に示した各部の処理過程で生成される情報は、メモリ22に格納される。次に、本件開示の復号器の実施形態について説明する。図13に、本件開示の復号器の一実施形態を示す。図13において、復号対象の受信信号は、符号Cinで示した入力端子を介して復号器に入力される。また、復号器によって得られた復号データは、符号Doutで示した出力端子を介して出力される。図13に例示した復号器は、検査行列保持部30と、変形部31と、繰り返し復号部34とを含んでいる。また、変形部31は、行操作部32と、列操作部33とを含んでいる。検査行列保持部30は、上述した検査行列作成方法によって作成された検査行列Hを表す情報を保持している。そして、変形部31は、検査行列保持部30に保持されている検査行列に対して、図2を用いて説明したようにして、階層的復号アルゴリズムを適用するための変形処理を行う。変形部31の行操作部32は、検査行列に含まれる各行を、行番号をシフト数qで除算した際の剰余に基づいて入れ替える操作を行う。列操作部33は、検査行列に含まれるパリティ部分行列に対して、このパリティ部分行列に含まれる各列を、列番号をシフト数qで除算した際の剰余に基づいて入れ替える操作を行う。繰り返し復号部34は、上述したようにして変形された検査行列を用いた階層的復号アルゴリズムに従って、入力端子Cinを介して入力される受信信号から誤り訂正された受信データを生成する。上述した検査行列作成方法によって作成された検査行列において、非零要素は、階層復号アルゴリズムを適用するための変形を行った後にデータ衝突を発生させないように配置されている。したがって、繰り返し復号部34は、各階層に含まれるP行についての行列演算を並行して行うことにより、繰り返し復号処理のそれぞれの回において、データ衝突による誤差を含まない正確な事後確率を得ることができる。つまり、本件開示の検査行列作成方法によって作成された検査行列を用いることにより、復号器によって実現可能な復号性能を向上することができる。図14に、本件開示の符号化器および復号器を有する送受信システムの性能を説明する図を示す。本出願人は、本件開示の検査行列作成方法を適用した符号化器および復号器を有する送受信システムの性能を評価するためのシミュレーションを行った。図14は、このシミュレーション結果を示している。図14において、本件開示の検査行列作成方法によって作成した3984列664行の検査行列を用いた場合のBERBitErrorRate特性を太い実線で示した。一方、図14に太い破線で示したBERBitErrorRate特性は、非特許文献1に開示された手法で作成された同じく3984列664行の検査行列を用いて実現される特性である。このシミュレーションは、最大繰返し回数を20回と設定した階層的復号アルゴリズムを用いて、計算処理は浮動小数点で行った。図14から分かるように、本件開示の検査行列作成方法で作成した検査行列を用いることにより、BER特性を向上することができる。例えば、BER10-4となるSNRは、本件開示の検査行列作成方法で作成した検査行列を用いた場合が約3.3dBであるのに対して、非特許文献1に開示された手法で作成された検査行列を用いた場合は約3.5dBである。つまり、本件開示の検査行列作成方法で作成した検査行列を用いることにより、非特許文献1に開示された手法で作成された検査行列を用いた場合に比べて約0.2dBの利得を得ることができる。このような効果は、本件開示の検査行列作成方法で作成した検査行列を用いた場合には、階層的復号アルゴリズムを適用した際に、データ衝突による誤差が発生しないことから得られる。図15に、本件開示の復号器を含む受信装置のハードウェア構成の一例を示す。図15に示した受信装置は、復号器40と、データ出力部45とを含む。また、復号器40は、プロセッサ41と、メモリ42と、受信回路43と、行列演算部44とを含む。プロセッサ41と、メモリ42と、受信回路43と、行列演算部44と、データ出力部45とは、バスを介して接続される。また、データ出力部45は、復号器40によって復号された受信データDxを、このバスを介して受け取る。そして、データ出力部45は、受け取った受信データDxを、例えば、出力端子Doutを介して出力する。メモリ42には、受信装置を動作させるためのシステムプログラムおよび上述した復号処理を実行するためのアプリケーションプログラムが格納されている。アプリケーションプログラムは、階層的復号アルゴリズムに基づく復号処理に含まれる各処理を実行するための従来のプログラムと同等である。図15に例示した受信装置は、上述したプロセッサ41、メモリ42などのハードウェアと、システムプログラムおよびアプリケーションプログラムなどのプログラムとが有機的に協働することにより、上述した各種機能を実現する。例えば、検査行列保持部30は、メモリ42の記憶容量の一部に検査行列を表す情報を格納することによって実現してもよい。また、図13に例示した変形部31の機能は、プロセッサ41が、階層的復号アルゴリズムに基づく復号処理に含まれる検査行列変形処理のためのプログラムを、メモリ42に保持された検査行列を表す情報に対して実行することによって実現してもよい。また、図11に例示した繰り返し復号部34の機能は、プロセッサ41とメモリ42に保持された検査行列Hを表す情報と行列演算部44とが協働することによって実現してもよい。上述したように、本件開示の検査行列作成方法によって作成された検査行列を用いて符号化された送信信号は、階層的復号アルゴリズムに基づく従来の復号処理と同等の復号処理によって復号することができる。したがって、既存の受信装置を、そのまま、本件開示の検査行列作成方法によって作成された検査行列を用いて符号化された送信信号を受信する受信装置として利用することができる。"