JP2012119736A - 最短経路演算装置、最短経路演算方法及び検査行列生成方法 - Google Patents

最短経路演算装置、最短経路演算方法及び検査行列生成方法 Download PDF

Info

Publication number
JP2012119736A
JP2012119736A JP2010264873A JP2010264873A JP2012119736A JP 2012119736 A JP2012119736 A JP 2012119736A JP 2010264873 A JP2010264873 A JP 2010264873A JP 2010264873 A JP2010264873 A JP 2010264873A JP 2012119736 A JP2012119736 A JP 2012119736A
Authority
JP
Japan
Prior art keywords
shortest path
node
block
check matrix
path length
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.)
Granted
Application number
JP2010264873A
Other languages
English (en)
Other versions
JP5542634B2 (ja
Inventor
Kenya Sugihara
堅也 杉原
Hideo Yoshida
英夫 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2010264873A priority Critical patent/JP5542634B2/ja
Publication of JP2012119736A publication Critical patent/JP2012119736A/ja
Application granted granted Critical
Publication of JP5542634B2 publication Critical patent/JP5542634B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

【課題】容易に最短経路を求めることができ、復号性能の高いLDPC符号の検査行列の生成に寄与することができる最短経路演算装置を得る。
【解決手段】第1の最短経路算出部1は、辺vcを付加する前のノードi、j間の最短経路を求める。第2の最短経路算出部2は、ノードiからノードvへの最短経路を通って辺vcを経由しノードcからノードjへの最短経路を通る経路を求める。第3の最短経路算出部3は、ノードiからノードcへの最短経路を通って辺vcを経由しノードvからノードjへの最短経路を通る経路を求める。最短経路判定部4は、3つの経路のうちで、最も短い経路を選択することによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する。
【選択図】図10

Description

この発明は、対象をノードと辺のグラフで表した場合のノード間の最短経路やその長さを求める最短経路演算装置と、これを用いた最短経路演算方法およびパリティ検査行列を生成する検査行列生成方法に関する。
Low-Density Parity-Check符号(以下ではLDPC符号と称す)は非0要素の数が少なく疎なパリティ検査行列(以下、検査行列と称す)で定義される線形ブロック符号である。検査行列がm×n行列で、ランクが行数と等しいとき、列数nは符号長と一致し、行数mはパリティビット長と一致する。
検査行列の列に含まれる1の数を列重みと呼び、行列の列重みの分布を列重み分布と呼ぶ。同様に、行に含まれる1の数を行重みと呼び、行重みの分布を行重み分布と呼ぶ。列重み分布と行重み分布はLDPC符号の復号性能に大きく影響するが、密度発展法やその類似手法で最適な分布を探索することができる。
検査行列のグラフで表現したものをタナーグラフとよぶ。検査行列とそれに対応したタナーグラフの例を図1に示す。タナーグラフは変数ノードと検査ノードの2種類のノードからなる2部グラフで、各変数ノードは検査行列の各列に一対一に対応し、各検査ノードは検査行列の各行に一対一に対応する。タナーグラフの辺は検査行列の非0要素の位置を表しており、変数ノードと検査ノードの組のうち各々が対応する列と行の行列要素が非0の場合のみに辺が貼られている。変数ノードどうしの間や検査ノードどうしの間には辺はない。タナーグラフに存在するループのうち最も短いループの長さをgirthとよぶ。
図2は長さ6のループの例を示している。
LDPC符号の復号に広く用いられるSum-Product復号法やその簡易復号法であるMin-sum復号法は、タナーグラフのノード間で確率情報を繰り返し伝達しながら復号を行うが、タナーグラフに短いループがあると確率情報がループ内に留まってしまい復号性能に悪影響を及ぼしてしまう。そのため、タナーグラフのgirthが大きいほど復号性能が良いと言われており、特に雑音レベルの小さい領域で復号後残留ビット誤り率の低下が鈍るエラーフロア現象が発生しにくいとされる。
非特許文献1にはgirthの大きな検査行列の生成法が記されている。本文献で生成する検査行列Hは、図3に示すように小行列I(i)からなるブロック行列の構造を持っている。小行列I(i)はp×pの巡回置換行列であり、図4のように単位行列をi列シフトした行列である。このように、検査行列が巡回置換行列の小行列のブロックとなっているLDPC符号をQuasi−Cyclic LDPC符号(以下、QC LDPC符号と称す)と呼ぶ。
非特許文献1の検査行列生成法は、生成したい検査行列のgirthをgとして、図3の検査行列Hのgirthがgとなるようなpj,l(1≦j≦J−1,1≦l≦L−1)を探索する。小行列とブロック行列の構造を利用して短いループを探索するが、ループの総数は膨大にあるため、計算時間を短縮するために小行列のサイズpを素数とすることで、探索にかかる計算時間の短縮を図っている。
M.P.C.Fossorier,"Quasi-cyclic low-density parity-check codes from circulant permutation matrices," IEEE Trans. Inform. Theory, 50(8):1788-1794, Aug. 2004.
しかしながら、従来手法でgirthの大きなLDPC符号の検査行列を生成するには、検査行列を、小行列が巡回置換行列であるブロック行列とし、かつ小行列のサイズを素数とする必要があった。
この発明は上記のような課題を解決するためになされたもので、LDPC符号の復号性能の劣化を防ぐことができ、復号性能の高いLDPC符号の検査行列を生成できる最短経路演算装置、最短経路演算方法及び検査行列生成方法を得ることを目的とする。
この発明に係る最短経路演算装置は、対象をノードと辺のグラフで表した場合の2つのノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算装置であって、グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、辺vcを付加する前のノードi、j間の最短経路を求める第1の最短経路算出部と、グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、ノードiからノードvへの最短経路を通って辺vcを経由しノードcからノードjへの最短経路を通る経路を求める第2の最短経路算出部と、グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、ノードiからノードcへの最短経路を通って辺vcを経由しノードvからノードjへの最短経路を通る経路を求める第3の最短経路算出部と、第1の最短経路算出部、第2の最短経路算出部および第3の最短経路算出部が求めた3つの経路のうちで、最も短い経路を選択することによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路判定部とを備えたものである。
この発明の最短経路演算装置は、第1の最短経路算出部、第2の最短経路算出部および第3の最短経路算出部が求めた3つの経路のうちで、最も短い経路を選択することによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出するようにしたので、容易に最短経路を求めることができ、復号性能の高いLDPC符号の検査行列の生成に寄与することができる。
一般的な検査行列とそれに対応したタナーグラフの例を示す説明図である。 タナーグラフのループが長さ6の例を示す説明図である。 小行列I(i)からなるブロック行列の構造を示す説明図である。 単位行列をi列シフトした行列を示す説明図である。 この発明の実施の形態1による検査行列生成方法におけるノード間の最短経路長の説明図である。 この発明の実施の形態1による検査行列生成方法におけるループ生成の説明図である。 この発明の実施の形態1による検査行列生成方法を示すフローチャートである。 この発明の実施の形態1による検査行列生成方法におけるノード間の最短経路長の説明図である。 この発明の実施の形態1による最短経路演算方法の説明図である。 この発明の実施の形態1による最短経路演算装置の構成図である。 この発明の実施の形態2による検査行列生成方法を示すフローチャートである。 この発明の実施の形態3による検査行列生成方法におけるLDGM構造の検査行列の説明図である。 この発明の実施の形態3による検z査行列生成方法を示すフローチャートである。 この発明の実施の形態3による検査行列生成方法における初期化の説明図である。 この発明の実施の形態3による検査行列生成方法の他の例を示すフローチャートである。 この発明の実施の形態4による検査行列生成方法における検査行列を示す説明図である。 この発明の実施の形態4による検査行列生成方法におけるブロック間の最短経路長を示す説明図である。 この発明の実施の形態4による検査行列生成方法におけるブロック間の最短経路長の性質を示す説明図である。 この発明の実施の形態4による検査行列生成方法におけるブロック間のシフト量を示す説明図である。 この発明の実施の形態4による検査行列生成方法おけるブロック間のシフト量と巡回置換行列の関係を示す説明図である。 この発明の実施の形態4による検査行列生成方法における検査行列と巡回置換行列との関係を示す説明図である。 この発明の実施の形態4による検査行列生成方法におけるシフト量で最短経路長(g−1)以上のときの説明図である。 この発明の実施の形態4による検査行列生成方法における他ブロックを経由する経路がある場合の説明図である。 この発明の実施の形態4による検査行列生成方法における動作を示すフローチャートである。 この発明の実施の形態4による最短経路演算方法の説明図である。 この発明の実施の形態4による最短経路演算装置の構成図である。 この発明の実施の形態4による検査行列生成方法における長さ(g−1)以下の内部ループ発生を判定する場合の説明図である。 この発明の実施の形態4による検査行列生成方法におけるブロック間の他ブロックを経由する長さ2の経路を示す説明図である。 この発明の実施の形態4による検査行列生成方法におけるブロック間の他ブロックを経由する長さ3以上の経路を示す説明図である。 この発明の実施の形態4による検査行列生成方法における1つのブロックに複数の小行列が配置された検査行列を示す説明図である。 この発明の実施の形態4による検査行列生成方法における小行列を配置しないための制限をかけた場合の検査行列を示す説明図である。
実施の形態1.
本発明の各実施の形態では、検査行列の行列要素が0と1のみからなる2元LDPC符号を扱う。
本発明の検査行列生成方法では、まず全要素が0からなる行列Hを準備し、Hに1つずつ要素1を付加していき、最終的に検査行列Hを得る。このとき、最初に準備する全要素0の行列Hの列数nと行数mは自由に設定することができ、また、生成したい検査行列のgirth値gも最初に設定する。
行列Hに要素1を付加する際、どの行列要素hijに1を付加するか問題となる。本発明の方法のように、1つずつ要素1を付加する場合、検査行列Hに短いループが一旦生成されてしまうと、さらに要素1を付加していっても、その短いループが無くなることはない。つまり、girthがgの検査行列を生成したい場合、長さ(g−1)以下のループを一旦生成してしまうと、その検査行列のgirthはgより小さくなってしまう。そのため、本発明では、長さが(g−1)以下のループが生成されないような行列要素のみに1を付加し、その操作を繰り返していくことで検査行列のgirthがgより小さくならないことを保証する。
では、どのようにして長さ(g−1)以下のループが生成されない行列要素hijを見つけるかであるが、それにはタナーグラフの最短経路長を用いる。最短経路長とは、タナーグラフにおいて、2つのノード間の最短経路上にある辺の数である。図5において、ノード5とノードcの最短経路は、ノード5、ノードb、ノード4、ノードcと辿る経路であり、経路上にあるグラフの辺の数は3であるので、ノード5とノードcの間の最短経路長は3である。ここで、図6のように、もしノード5とノードcの間に辺eを貼ったとすると、辺eと前記最短経路とでループが生成される。このループの長さは4であり、辺eを貼る前のノード5とノードc間の最短経路長3に1を加えた値となる。タナーグラフのノード間に辺を追加することは、それらのノードに対応する行と列の要素に1を付加することと同値であるから、最短経路長が短いノード間に対応する行列の要素に1を付加すると、短いループが生成されてしまう。そのため、girthがgの検査行列を生成する場合には、最短経路長が(g−2)以下のノード間には辺を貼らなければよい。最短経路長が(g−1)以上のノード間のみに辺を貼っていくことによって、girthがgであることが常に保証される。
次に、上記の最短経路長に注目した検査行列生成法の実施の形態1を、図7のフローチャートに沿って説明する。
まず、ステップST1(初期化ステップ)で、生成したい行列の列数n、行数m、girthの値gを設定する。また、全ての要素を0に初期化したm×n行列Hを用意する。
ステップST2(最短経路長算出ステップ)で、現在のパリティ検査行列に対応するタナーグラフの最短経路長を全ノード間に関して算出する。最初、検査行列の要素は全て0であり、対応するタナーグラフに辺はないので、全てのノード間の最短経路長を無限もしくは十分に大きな値(例えばn+mなど)として、ステップST3(最短経路長判定ステップ)へ進む。後にも説明するように、本検査行列生成法はステップST2からステップST4(行列要素付加ステップ)を繰り返し行うが、2回目以降にステップST2で行う最短経路演算方法については後述し、他のステップの説明を先に行う。
ステップST3では、最短経路長が(g−1)以上である変数ノードと検査ノードの組(列と行の組)が存在するかを判定する。ステップST2において、図8のように、全てのノード間の最短経路長が算出されているが、その中で最短経路長が(g−1)以上の変数ノードと検査ノードの組があるかを判定する。なお、図8中の網掛け部分が変数ノードと検査ノード間の最短経路長を示しており、それ以外の部分、つまり変数ノード同士、検査ノード同士の最短経路長は、後に説明する最短経路長算出において用いる。もし、最短経路長が(g−1)以上の変数ノードと検査ノードの組が無い場合には検査行列Hを出力してフローチャートを終了する。もしある場合にはステップST4に進む。
ステップST4では、ステップST3で存在すると判定した、最短経路長が(g−1)以上の変数ノードと検査ノードの組(列と行の組)のうちの1つ(例えば、列v、行c)を選択し、検査行列Hの対応する行列要素(c行v列)に1を付加する。そしてステップST2に戻る。なお、列と行の組の選び方は、ランダムに選択しても良いし、列や行の番号に優先順位をつけて選んでも良いし、検査行列Hの列重みや行重みの大きさに従って計算した確率を用いて乱数を用いて選択しても良く、1つの組を決定できればどんな方法で選択してもよい。
次に、2回目以降のステップST2で行う最短経路演算方法について説明する。上述したように、ステップST2では、現在の検査行列Hに対応するタナーグラフの最短経路長を全ノード間に関して算出する。ステップST4で検査行列Hに1が付加され、それに対応してタナーグラフに辺vcが付加されると、辺vcによって最短経路長が変化する可能性がある。そのため、1が付加される度に全ノード間の最短経路長を算出する必要があり、その算出をステップST2で毎回行う必要がある。本発明では、前回算出した最短経路長(直近のステップST4で辺vcが付加される前の最短経路長)を用いることにより、効率よく最短経路長を算出する方法を次に示す。
前回繰り返しのステップST4で付加された辺をvc(変数ノードvと検査ノードcの間の辺)とする。辺vcを付加した後のタナーグラフ上において、任意のノードの組i、jの最短経路の候補として、辺vcを通らない経路のうち最短のものか、もしくは辺vcを通る経路のうちで最短のものかの2通りが考えられる。辺vcを通らない経路のうち最短のものは、前回のステップST2で算出したノードi、j間の最短経路と等しい。辺vcを通る経路は2通りが考えられ、図9に示すように、iからvへの最短経路を通って、辺vcを通り、cからjへの最短経路を通る経路、もしくはiからcへの最短経路、辺vc、vからjへの最短経路を通る経路がある。以上の3つの候補をまとめたのが次の(i)〜(iii)である。
(i)辺vcを追加する前の最短経路長
(ii)辺vc追加前のiからvへの最短経路長+1(辺vc)+辺vc追加前のjからcへの最短経路長
(iii)辺vc追加前のiからcへの最短経路長+1(辺vc)+辺vc追加前のvからjへの最短経路長
これら3つの候補のうちで最も短いものが、辺vc付加後のノードi,j間の最短経路となる。なお、これらの経路の一部もしくは全てが存在しないこともある。存在しない場合、十分大きな値(例えば、n+m)をその存在しない候補の便宜上の長さとする。
図10は、このような最短経路演算方法を実現する最短経路演算装置を示す構成図である。図中の第1の最短経路算出部1は、上記(i)の辺vcを追加する前の最短経路長を求める機能部であり、第2の最短経路算出部2は、上記(ii)の辺vc追加前のiからvへの最短経路長+1(辺vc)+辺vc追加前のjからcへの最短経路長を求める機能部、第3の最短経路算出部3は、上記(iii)の辺vc追加前のiからcへの最短経路長+1(辺vc)+辺vc追加前のvからjへの最短経路長を求める機能部である。また、最短経路判定部4は、第1の最短経路算出部1〜第3の最短経路算出部3で求めた経路のうち、最も短い経路を選択することによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する機能部である。
なお、図10に示した最短経路演算装置は、コンピュータを用いて実現され、第1の最短経路算出部1〜最短経路判定部4の各機能に対応したソフトウェアと、これらのソフトウェアを実行するためのCPUやメモリといったハードウェアから構成されている。あるいはこれら機能部の一部または全部を専用のハードウェアを用いて実現してもよい。また、本発明の各実施の形態における最短経路演算方法や検査行列生成方法もコンピュータを用いて実現されている。
このように、任意のiとj間の最短経路長は、上述した(i)〜(iii)の3値を比較するだけで算出でき、計算時間が小さい。ただし、全てのノード間の最短経路を算出する必要がある。なお、ここで算出しているのは最短経路の長さのみであって、それぞれの最短経路がどのようなノードと辺から構成されているかについては算出もしないし、記憶もしないでよい。また、ノードiからjへの最短経路長とノードjからiへの最短経路長は等しいので、どちらかを算出および記憶すればよい。
上記の最短経路長の算出法はLDPC符号の検査行列生成法にとどまらず、他にも用いることができる。対象をノードと辺のグラフで表すことができ、さらにノード間の最短経路長が既に求まっている場合において、グラフに辺を追加した後の最短経路長を求めるのに本方法を用いることができる。また、ノード間の最短経路長が予め求まっていない場合でも、辺のないグラフに1本ずつ辺を追加してグラフを構築していき、辺追加と同時に本方法により最短経路長を求めていけば、構築したグラフ上の全ノード間の最短経路長を求めることができる。また、本方法では最短経路長のみを求め最短経路は算出しなかったが、本方法と同様の方法で最短経路も求めることができる。それには、上述した(i)〜(iii)で求めた最短経路の3つの候補のうち、最も短いもの(採用したもの)のみを逐一記憶しておけばよい。
また、上記の説明において、最短経路長の定義を最短経路上の辺の数としたが、本方法の適用範囲はその限りではない。例えば、辺とノードのいずれかもしくは双方に重み(時間や距離、コストを数値化したものが考えられる)が与えられており、最短経路長を最短経路上の辺とノードのいずれかもしくは双方の重みの和と定義した場合においても、同じ方法で最短経路長を算出することができる。また、タナーグラフのような2部グラフでなくても適用でき、本方法は一般的な構造のグラフで用いることができる。本方法をLDPC符号の検査行列生成以外に適用可能な例として、カーナビゲーションシステムやその他のGPS機器の最短経路探索、列車を初めとした交通機関の最短経路探索がある。
図7に戻り、検査行列生成方法ではステップST2〜ステップST4を繰り返す。
フローチャートの繰り返し回数は、検査行列Hに付加する1の総数と一致する。本実施の形態のフローチャートでは、全ての変数ノードと検査ノードの間の最短経路長が(g−2)以下になったら終了する。辺が付加されることにより最短経路長が長くなることはなく、辺を付加することで少なくとも1組のノードの最短経路長が短くなるから、本フローチャートが終了しないという現象は発生しない。
従来技術では設定する列数と行数をある値以上の素数の倍数にしなければならず、これらが通信システムの要求に合わない場合には、要求に近い検査行列をまず生成し、その後列数と行数を調節する必要があった。しかし、本発明の方法では列数と行数を任意の値に設定可能であり、列数と行数の調節による復号性能劣化を抑えることができる。
また、本実施の形態の検査行列生成方法で生成した検査行列のgirthは、最初に設定した値gより小さくなることがなく、高い復号性能を発揮することができる。
また、最短経路長の計算はノードの組1つに対して加算と比較演算のみであり、符号長が千ビットから10万ビットの実用的なLDPC符号の検査行列生成を高速に行うことができる。
以上説明したように、実施の形態1の最短経路演算装置によれば、対象をノードと辺のグラフで表した場合の2つのノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算装置であって、グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、辺vcを付加する前のノードi、j間の最短経路を求める第1の最短経路算出部と、グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、ノードiからノードvへの最短経路を通って辺vcを経由しノードcからノードjへの最短経路を通る経路を求める第2の最短経路算出部と、グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、ノードiからノードcへの最短経路を通って辺vcを経由しノードvからノードjへの最短経路を通る経路を求める第3の最短経路算出部と、第1の最短経路算出部、第2の最短経路算出部および第3の最短経路算出部が求めた3つの経路のうちで、最も短い経路を選択することによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路判定部とを備えたので、容易に最短経路を求めることができる。
また、実施の形態1の最短経路演算方法によれば、最短経路演算装置を用いて、グラフ上の2つのノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算方法であって、グラフのノードvとノードcとを結ぶ辺vcを付加したときに、辺vcを付加する前のノードi、j間の最短経路と、ノードiからノードvへの最短経路を通って辺vcを経由しノードcからノードjへの最短経路を通る経路と、ノードiからノードcへの最短経路を通って辺vcを経由しノードvからノードjへの最短経路を通る経路のうち、最も短い経路を選択することによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出するようにしたので、容易に最短経路を求めることができる。
また、実施の形態1の検査行列生成方法によれば、生成する検査行列Hの列数、行数、girth gを設定し、検査行列Hの要素を全て0にする初期化ステップと、検査行列Hに対応するタナーグラフにおいて最短経路演算方法で最短経路長を算出する最短経路長算出ステップと、最短経路長がg−1以上の変数ノードと検査ノードの組が存在するかを調べる最短経路長判定ステップと、最短経路長判定ステップで存在を判定した変数ノードと検査ノードの組の1つを選択しその組に対応するHの要素に1を付加する行列要素付加ステップとを備え、最短経路長算出ステップと最短経路長判定ステップと行列要素付加ステップとを繰り返してパリティ検査行列を生成するようにしたので、生成する検査行列をブロック行列とする必要がなく、LDPC符号の復号性能の劣化を防ぐことができ、復号性能の高いLDPC符号の検査行列を生成することができる。
実施の形態2.
実施の形態1の方法では、girthを保証しつつタナーグラフの辺を付加していき、タナーグラフのどこにも辺を付加できなくなったら終了としていた(図7参照)。これに対し、実施の形態2の検査行列生成方法では、終了条件を変更し、生成する検査行列の列重み分布と行重み分布を考慮した構成とする。上述したように、検査行列の列重み分布と行重み分布はLDPC符号の復号性能に寄与するが、復号性能の高い列重み分布と行重み分布は密度発展法などにより算出することができる。本実施の形態では、所望の列重み分布と行重み分布をもった検査行列を生成する方法を示す。
図11に実施の形態2の検査行列生成方法のフローチャートを示す。図11に示したフローチャートのステップのうち、ステップST2とステップST4は実施の形態1における図7のフローチャートと同一の処理を行うため、これらステップの詳細な説明は省略する。
まずステップST1a(初期化ステップ)では、生成する検査行列の列数n、行数m、各列iの列重みwv(i)、各行jの行重みwc(j)、girthの値gを設定し、検査行列Hの全要素は0に初期化する。なお、wv(i)とwc(j)の値は矛盾がなく適切な値に設定する必要があり、wv(i)の全iの合計とwc(j)の全jでの合計は等しくなければならない。また、ステップST2において、全ノード間の最小経路長を算出する。
ステップST3a(最短経路長判定ステップ)において、最短経路長が(g−1)以上の列i、行jの組で、かつ、列iの列重みが生成したい検査行列の列重みwv(i)未満であり、行jの行重みが生成したい行重みwc(j)未満である組があるかを判定する。
つまり、実施の形態1のステップST3に列重みと行重みの制限を加え、列重みがwv(i)に達した列i、および行重みがwc(j)に達した行jには後のステップST4で1を付加しないようにする。もしもこのようなi、jが存在しない場合には、検査行列生成は失敗であり、終了する。存在した場合、ステップST4に進む。
ステップST4では、ステップST3aの判定をクリアした列と行の組のうち1つを選び、対応する検査行列Hの要素に1を付加する。なお、列と行の組の選び方は、ランダムに選択しても良いし、列や行の番号に優先順位をつけて選んでも良いし、検査行列Hの列重みや行重みの大きさに従って計算した確率を用いて乱数を用いて選択しても良く、1つの組を決定できればどんな方法で選択してもよい。
ステップST5(重み判定ステップ)では、前ステップST4で1が付加された後の検査行列Hに対し、全ての列iの列重みがステップST1aで設定したwv(i)に等しく、かつ全ての行jの行重みがwc(j)と等しいかを判定する。全て等しければ、検査行列Hを出力してフローチャートを終了する。このとき生成された検査行列HはステップST1aで設定した条件を全て満足している。1つでも等しくない列重み、もしくは行重みがあればステップST2に戻る。なお、フローチャートでは列重みおよび行重みについて全て等しいかを判定しているが、実際には列重みと行重みのいずれかを判定するだけでよい。ステップST1aで設定したwv(i)とwc(j)が適切な値であれば、全ての列重みがwv(i)に等しい場合には全ての行重みもwc(j)に等しく、逆も言える。
本実施の形態によれば、密度発展法などで予め求めておいた最適な列重み分布、行重み分布をもった検査行列を生成することができ、復号性能の高いLDPC符号を構成することができる。
なお、本検査行列生成法のステップST5において、列重みと行重みが設定値になれば終了としているが、他の終了条件を設定してもよい。本方法で生成中の検査行列Hのgirthは常にg以上であることが保証されており、ステップST5においてさらに終了条件を加えてもよいし、ステップST5の代わりに別の終了条件を加えてもよい。いずれにしても、生成される検査行列のgirthはg以上となり、復号性能の検査行列が生成できる。
以上説明したように、実施の形態2の検査行列生成方法によれば、生成する検査行列Hの列数、行数、girth g、列重み、行重みを設定し、検査行列Hの要素を全て0にする初期化ステップと、検査行列Hに対応するタナーグラフにおいて実施の形態1の最短経路演算方法で最短経路長を算出する最短経路長算出ステップと、最短経路長がg−1以上の変数ノードと検査ノードの組で、列重みと行重みが設定値に満たない組が存在するかを調べる最短経路長判定ステップと、最短経路長判定ステップで存在を判定した変数ノードと検査ノードの組に対応する検査行列Hの要素に1を付加する行列要素付加ステップと、検査行列Hの列重みと行重みが設定値に満たしたかを調べる重み判定ステップと、最短経路長算出ステップと最短経路長判定ステップと行列要素付加ステップと重み判定ステップとを繰り返してパリティ検査行列を生成するようにしたので、最適な列重み分布、行重み分布をもった検査行列を生成することができ、復号性能の高いLDPC符号を構成することができる。
実施の形態3.
実施の形態1、2では、LDPC符号の符号化については考慮していなかった。LDPC符号の符号化を効率的に行うためには、検査行列の構造が重要となる。符号化に適した検査行列の構造として、図12に示すLow-Density Generator Matrix(以下、LDGMと称す)構造がある。図12の検査行列は、右側部分にあるm×m部分行列が2重対角構造となっている。なお、この構造は一例であり、左側部分のm×m部分行列が2重対角構造となっているものでも符号化を効率的に行うことができる。本実施の形態では、一例として、右側部分が2重対角構造である検査行列の生成法を示す。
図13に、実施の形態1の検査行列生成方法を一部変更してLDGM構造の検査行列を生成可能とした場合のフローチャートを示す。実施の形態1のフローチャート(図7)と異なるのは、ステップST1b(第2の初期化ステップ)とステップST3b(第2の最短経路長判定ステップ)のみである。
ステップST1bで実施の形態1と異なるのは検査行列Hの初期化である。実施の形態1では全要素0と初期化したが、本実施の形態では図14に示した行列Gに初期化する。行列Gは右側m×m部分行列が2重対角線構造となっており、それ以外はすべて0の行列である。行列Gに対応のタナーグラフにはループがないため、生成したい検査行列のgirthの値gに制限が加わることはない。また、初期化する行列Gにおける全ノード間の最短経路長も求める。
ステップST3bで実施の形態1と異なるのは、列と行の組の存在判定を行う条件として、列iの範囲を0≦i≦n−mとしたことである。これは、次のステップST4において、右側のm列には1を配置しないことを示している。つまり、右側m×m行列の2重対角線構造を壊さないようにしている。
次に、実施の形態2の検査行列生成方法を変更し、LDGM構造の検査行列を生成する方法を図15に示す。実施の形態2の図11と異なるのは、ステップST1c(第3の初期化ステップ)とステップST3c(第3の最短経路長判定ステップ)である。
ステップST1cで実施の形態2と異なるのは、検査行列Hを全0で初期化するのではなく、図14の行列Gで初期化することである。また、初期化する行列のタナーグラフにおける全ノード間の最短経路長も求める。
ステップST3cで実施の形態2と異なるのは、列と行の組の存在判定を行う条件として、列iの範囲を0≦i≦n−mとしたことである。
以上のようにすれば、LDGM構造の検査行列を生成することができ、LDPC符号の符号化を効率的に行うことができる。
また、初期化に用いる行列として用いることができるのは、図14の行列Gに限らない。初期化に用いる行列に、生成したい検査行列のgirth値gよりも短いループがなければ、どんな行列を初期化に用いてもよい。
また、ステップST3bとステップST3cに変更を加えて、追加する列v、行cの組に別のどんな制限を加えてもよい。例えば、検査行列の左側m×m部分行列をLDGM構造にするのであれば、その部分に1が付加されないようにしてもよい。
また、初期化に用いる行列が、生成したい検査行列のgirth値gよりも短いループがなければ、どんな行列でもよく、1を付加する部分にどんな制限を加えてもよいということは、本実施の形態で示したLDGM構造の検査行列生成以外にも用いることができる。例えば、既に存在する検査行列に対し、行数または列数を増加させるのにも用いることができる。
以上説明したように、実施の形態3の検査行列生成方法によれば、実施の形態1の初期化ステップに代えて、生成する検査行列Hの列数、行数、girth gを設定し、検査行列Hの部分行列を2重対角構造に初期化し、初期化した検査行列Hの最短経路長を算出する第2の初期化ステップとし、かつ、実施の形態1の最短経路長判定ステップに代えて、2重対角構造とした列以外のうちで、最短経路長がg−1以上の変数ノードと検査ノードの組が存在するかを調べる第2の最短経路長判定ステップとしたので、LDPC符号の符号化を効率的に行うことができる。
また、実施の形態3の検査行列生成方法によれば、実施の形態2の初期化ステップに代えて、生成する検査行列Hの列数、行数、girth g、列重み、行重みを設定し、検査行列Hの部分行列を2重対角構造に初期化し、初期化した検査行列Hの最短経路長を算出する第3の初期化ステップとし、かつ、実施の形態2の最短経路長判定ステップに代えて、2重対角構造とした列以外のうちで、最短経路長がg−1以上の変数ノードと検査ノードの組で、列重みと行重みが設定値に満たない組が存在するかを調べる第3の最短経路長判定ステップとしたので、LDPC符号の符号化を効率的に行うことができる。
実施の形態4.
本実施の形態では、QC LDPC符号の検査行列生成法を示す。これまでの実施の形態と同様にして最短経路長を用いて、設定したgirthの検査行列を生成する方法である。
まず、図16に示すように、検査行列Hをブロックに分割したものを考える。各ブロックはp×pの正方部分行列である。列をブロックで分割したものを列ブロックとよび、同様に行をブロックで分割したものを行ブロックと呼ぶ。列ブロック数をNとし、行ブロック数をMとする。定義から明らかなように、検査行列の列数nはNpに等しく、行数mはMpに等しい。
本実施の形態の検査行列生成法は、まず検査行列Hを全0で初期化して、girthが初期設定値gより小さくならないように、巡回置換行列を1つずつブロックに配置していく。ただし、全てのブロックに巡回置換行列を配置する必要はなく、配置しない場合はブロック内の要素は全て0とする。
QC LDPC符号の検査行列は規則的な構造をしているが、最短経路長も規則的な構造を持っており、それを利用して検査行列を生成する。図17の例で、列ブロックAのノード0と行ブロックbのノード0との間の最短経路長は3である。また、列ブロックAのノード1と行ブロックbのノード1との間の最短経路長、列ブロックAのノード2と行ブロックbのノード2との間の最短経路長も3となっている。つまり、列ブロックAのノード0と行ブロックbのノード0との間の最短経路長と、列ブロックAのノードiと行ブロックbのノードiとの間の最短経路長は等しい。この性質は、ブロックのサイズがより大きい場合にも成り立つ。
また、さらに一般的な性質があり、あるブロックJとブロックK(JとKは列ブロックでも行ブロックでもよい)のノード間の最短経路長には、図18で示すように、ブロックJのノードjとブロックKのノードkとの値の最短経路長と、ブロックJのノード0とブロックKのノード(k−j mod p)との間の最短経路長とが等しいという性質がある。つまり、ブロックJとK間の最短経路長は、ブロックJのノード0とブロックKの各ノードs(0≦s≦p−1)との間のp通りを算出、および記憶すればよい。以下では、このときのブロックKのノード番号sをブロックJからKのシフト量と呼ぶ(図19を参照)。なお、ブロックの関係を逆にみた場合、すなわちブロックKからブロックJへのシフト量を考えた場合、ブロックKからJへのシフト量は((p−s) mod p)となることに注意が必要である。
次に、シフト量と巡回置換行列の関係を説明する。図20のように列ブロックVのノード0と行ブロックCのノードsの間に辺を貼り、さらに列ブロックVのノードi(1≦i≦p−1)と行ブロックのノードi+s mod pに辺を貼ることは、図21で示すように検査行列において列ブロックV、行ブロックCの位置に巡回置換行列I((p−s) mod p)を配置することと同値である。
以上を踏まえ、図22のように列ブロックVと行ブロックCとがシフト量sで最短経路長(g−1)以上のときに着目する。列ブロックVと行ブロックCに図20のようなシフト量sの辺を配置すると、長さ(g−1)以下のループが生成されないように思われる。しかし、実は図23のような他ブロックを経由する経路がある場合、長さ(g−1)以下のループが生成されてしまうことがある。この現象は、列ブロックVと行ブロックC間に貼った辺を2つ以上含むループに発生するため、このようなループを内部ループと呼ぶ。後に示す検査行列生成法では、長さ(g−1)以下の内部ループの発生を排除できるよう設計した。
図24のフローチャートに基づいて、QC LDPC符号の検査行列生成法を示す。
ステップST11(初期化ステップ)では初期化を行う。生成したい検査行列の小行列サイズp、列ブロック数N、行ブロック数M、列ブロックの列重みwv(V)、行ブロックの列重みwv(C)、girth gを設定し、検査行列Hを全要素0で初期化する。列ブロック内の各列の列重みは全て等しいため、本実施の形態では各列ブロックVに対して生成したい検査行列の列重みwv(V)を設定するとしている。行ブロックの行重みに関しても同様である。
ステップST12(最短経路長算出ステップ)では、Hに対応するタナーグラフにおいて、全てのブロック間、全てのシフト量の組み合わせの最短経路長を算出する。これまでの実施の形態と同様に、後のステップST15(小行列配置ステップ)で辺が追加される前の最短経路長を用いて、現在の検査行列Hの最短経路長を算出する。ここでは、後のステップST15で列ブロックV、行ブロックC間に辺が追加されるとして、ブロックI、J間のシフト量sの最短経路を算出する方法について示す。図25に示すように、まず最短経路の候補となるのは、ブロックV、C間に辺を追加する前のシフト量sの最短経路である。次に候補となるのは、ブロックIからVの最短経路を通り、V,C間の辺を通り、CからJへの最短経路を通る経路と、ブロックIからCへの最短経路を通り、V,C間の辺を通って、VからJへの最短経路を通る経路である。
今算出したいのは、ブロックIからJへのシフト量sの最短経路であるから、各経路のシフト量とV、C間のシフト量を考慮し、最終的にIからJへのシフト量sとなる経路を全て扱う必要がある。即ち、実施の形態4の最短経路演算方法では次の(i)〜(iii)となる。
(i)ブロックV,C間に辺を追加する前のシフト量sの最短経路長
(ii)辺追加前のiからvへのシフト量aの最短経路長+1+辺vc追加前のjからcへのシフト量bの最短経路長(s=a+t+b mod pとなる全てのa、bの組)
(iii)辺追加前のiからcへのシフト量cの最短経路長+1+辺vc追加前のvからjへのシフト量dの最短経路長(s=c−t+d mod pとなる全てのc、dの組)
上記の(ii)と(iii)は、それぞれp通りあるが、これら全ての場合の経路長を算出し、(i)とも比較して最短となるものを最短経路長に採用する。なお、上記操作を行って得られた最短経路長は内部ループを通る最短経路が考慮されていない。つまり、ブロックI→V→C→V→C→V→C→Jと通る経路である。このような経路も考慮に入れた最短経路は、上記操作(i)〜(iii)を全てのブロックI、J、シフト量sの組に対し行った後、さらに同様の操作をp回繰り返せば算出することができる。ただし、実際にはp回の繰り返しは必要ない。本ステップST12は、長さ(g−1)以下の最短経路を発見できればよいため、高々g/2回の繰り返しを行えばよい(gの値によって、必要な最小繰り返し回数は異なるが、gがどの値でもg/2で十分である)。
図26は、このような最短経路演算方法を実現する実施の形態4の最短経路演算装置を示す構成図である。図中の第1の最短経路算出部11は、上記(i)のブロックV,C間に辺を追加する前のシフト量sの最短経路長を求める演算部であり、第2の最短経路算出部12は、上記(ii)の辺追加前のiからvへのシフト量aの最短経路長+1+辺vc追加前のjからcへのシフト量bの最短経路長を求める演算部、第3の最短経路算出部13は、上記(iii)の辺追加前のiからcへのシフト量cの最短経路長+1+辺vc追加前のvからjへのシフト量dの最短経路長を求める演算部である。また、最短経路判定部14は、第1の最短経路算出部11〜第3の最短経路算出部13で求めた経路のうち、最も短い経路を選択する処理を複数回繰り返すことにより、ノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する演算部である。
また、図26に示した最短経路演算装置においても、実施の形態1の最短経路演算装置と同様にコンピュータを用いて実現され、第1の最短経路算出部11〜最短経路判定部14の各機能に対応したソフトウェアと、これらのソフトウェアを実行するためのCPUやメモリといったハードウェアから構成されている。あるいはこれら機能部の一部または全部を専用のハードウェアを用いて実現してもよい。
図24に戻り、ステップST13(最短経路長判定ステップ)では、最短経路長が(g−1)以上の列ブロックVと行ブロックC、シフト量sの組のうち、Vの列重みがwv(V)未満でかつ、Cの行重みがwc(C)未満の組が存在するかを判定する。全ての組で最短経路長が(g−1)未満の場合、どのブロックに小行列を配置しても長さg未満のループが発生するため、検査行列生成失敗でフローチャートは終了する。そうでない場合には、ステップST14(内部ループ判定ステップ)に進む。
ステップST14では、ステップST13の条件を満たす列ブロックV、行ブロックC、シフト量sの組に対して、VからCへシフト量sの辺を配置した場合に長さ(g−1)以下の内部ループが発生するかの判定を行う。もしステップST13の条件を満たす全ての組で発生する場合には、どのブロックに小行列を配置しても長さg未満のループが発生するということであり、検査行列生成失敗でフローチャートは終了する。なお、内部ループの長さは必ず6以上となり、g=6と設定している場合には本ステップは必要ない。
長さ(g−1)以下の内部ループ発生を判定するには、図27のように、列ブロックVと行ブロックC間にシフト量sの辺を1つ配置し、列ブロックVと行ブロックC内のノード間の最短経路長を実施の形態1の最短経路演算方法を用いて算出する。シフト量sの関係にあり、辺を追加していないノード間の最短経路長が(g−1)未満であれば、長さ(g−1)以下の内部ループが発生することになる。もしシフト量sの関係にあるノード間の最短経路長が(g−1)以上であれば、さらに1つ辺を追加し、同様に最短経路長を算出する。この操作は繰り返し行う必要があり、繰り返し回数はg/2回である。ただし、必要最小限の繰り返し回数はgの値により、g/2より小さくてもよいが、gの値によらずg/2回行えば十分である。なお、1つの列ブロックV、行ブロックC、シフト量sの組に対して判定が終わったら、本ステップで貼った辺を取り除き、最短経路長も本ステップ前の状態に戻す。
ステップST15では、ステップST14で内部ループが発生しないと判定された組を1つ選び、小行列を検査行列Hの当該ブロックに配置する。ステップST16(重み判定ステップ)では、検査行列Hの全ての列ブロックVの列重みがwv(V)に等しいかを判定し、等しければ検査行列Hを出力して終了する。等しくなければステップST12に戻る。
ステップST14における内部ループ発生判定の計算時間を削減する別の方法を説明する。ただし、本方法では設定したgの値ごとに個々の計算が必要であり、またgの値が大きいと必ずしも計算時間の削減とならない。
まずg=8の場合について説明する。g=8では、長さ6の内部ループが発生しうるかを判定すればよい。長さ6のループは、図28のように列ブロックどうし、行ブロックどうしのノードをそれぞれ結ぶ長さ2の経路(長さは必ず2以上になる)と、列ブロックと行ブロックの間に貼られる2辺からなる。列ブロックどうし、行ブロックどうしのノードを結ぶ経路の最短経路長は既にわかっているから、このようなループを探すことは容易である。
一方、g=10の場合、長さ8以下のループとして可能性があるのは、図28のパターンに加えて、図29のパターンがある。まず、図28のパターンについて説明する。図28では、列ブロックどうし、行ブロックどうしのノードを結ぶ経路の長さを2としているが、この2つの経路のうち片方が4の場合に長さが8のループとなる。このパターンのループで、長さ8以下のものが存在するかを調べる。次に、図29のパターンであるが、列ブロックVと行ブロックCとを、他ブロックを経由して結ぶ経路2つ(これらの長さは必ず3以上となる)と、列ブロックVと行ブロックCとを結ぶ2辺からなるループを問題とする。列ブロックVと行ブロックCとを、他ブロックを経由して結ぶ経路が長さ3のときに、長さ8のループとなるため、そのようなループがあるかを判定する。
g>10の場合も、ループが発生しうるパターンを考えることで同様に判定可能であるが、パターン数が多くなるため上のステップST14と変わらない演算量となってしまう。
本実施の形態によれば、指定したgirthのQC LDPC符号の検査行列を構成でき、また小行列サイズpには制限がない。従来技術では小行列サイズpを素数とする必要があり、列数や行数が通信システムの要求に合わない場合には、まず要求に近い検査行列を生成し、その後列数と行数を調節する必要があった。しかし、本発明の方法では列数と行数を従来技術よりも自由度高く設定可能であり、列数と行数の調節による復号性能劣化を抑えることができる。
また、本実施の形態では、実施の形態1〜3とは異なり、検査行列Hへの要素1の付加を小行列単位で行っており、フローチャートにおける繰り返しの回数が削減される。そのため、実施の形態1〜3の検査行列生成方法よりも短い時間で検査行列が生成できる。
さらに、本実施の形態では、非特許文献1で示されているような検査行列の構造以外でも生成可能である。例えば、図3のようにI(0)を並べる必要がない。また、1つのブロックに最大1つの小行列が配置された検査行列だけでなく、図30のように1つのブロックに複数の小行列が配置された検査行列も生成することができる。それにはステップST13の「まだ小行列を配置していない」という制限を削除し、新たなステップST13として置き換えればよい。このような検査行列の方がLDPC符号間の最小距離の上界が大きいと、一部の符号化率、列重み分布では示されている。なお、このような変更を加えた場合、ステップST14をg=8、10の場合に簡易的に行う前記の方法は適用できない。
また、実施の形態3と同様にして、ステップST11の検査行列の初期化を全要素0とするのではなく、長さg未満のループのない行列で初期化してもよい(第4の初期化ステップおよび第4の最短経路長判定ステップ)。ただし、ブロックサイズ、列ブロック数、行ブロック数がHと同一の行列でなければならず、また小行列は巡回置換行列でなければならない。また、初期化する行列の列ブロック、行ブロック、シフト量の全組み合わせについて最短経路長を求めておく必要があるが、それにはステップST12の方法を用いればよい。
また、小行列を配置したくないブロックには、配置されない制限をかけることができる。ステップST13の判定を、小行列を配置したくないブロックに対しては行わなければよい。
一例として、図31の行列で初期化を行い、2重対角構造に似た検査行列を生成することができる。図中のI(a)、I(b)は小行列であり、当該ブロックに小行列が配置されていることを示す。ここで、aとbの値は等しくても、異なっていてもよい。また、0は当該ブロックに小行列が配置されていないことを示しており、空欄のブロックは未定のブロックである。小行列I(a)とI(b)が既に配置されているブロックと0で示されたブロックには小行列を配置しないとステップST13で制限をして、本方法を実施すれば、空欄のブロックにのみ小行列を配置される。
さらに、生成したい列重みと行重みを設定せず、ステップST13とステップST14での判定でのみ検査行列生成を終了してもよい。それには、ステップST11において列ブロックの列重みwv(V)、行ブロックの行重みwc(C)を設定せず、ステップST13の列重み、行重みに関する判定条件を削除し、さらにステップST16を削除して、ステップST15の次にステップST12を行うようにすればよい。
なお、本検査行列生成法において、終了条件は自由に設定してよい。本方法で生成中の検査行列Hのgirthは常にg以上であることが保証されており、ステップST16においてさらに終了条件を加えてもよいし、ステップST16のかわりに別の終了条件を加えてもよい。いずれにしても、生成される検査行列のgirthはg以上となる。
以上説明したように、実施の形態4の最短経路演算装置によれば、ブロックに分割されたグラフにおいて、ブロックI,J内にある2つのノードi,jの間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算装置であって、グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、辺を付加する前のノードi、j間の最短経路を求める第1の最短経路算出部と、グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、ノードiからブロックV内のいずれかのノードへの最短経路を通ってブロックVとブロックCとの間の辺を経由しブロックCからノードjへの最短経路を通る経路を求める第2の最短経路算出部と、グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、ノードiからブロックC内のいずれかのノードへの最短経路を通ってブロックCとブロックVとの間の辺を経由しブロックVからノードjへの最短経路を通る経路を求める第3の最短経路算出部と、第1の最短経路算出部、第2の最短経路算出部および第3の最短経路算出部が求めた3つの経路のうちで、最も短い経路を選択する処理を繰り返すことによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路判定部とを備えたので、ノード間の最短経路を容易に求めることができる。
また、実施の形態4の最短経路演算方法によれば、最短経路演算装置を用いて、ブロックに分割されたグラフにおいて、ブロックI,J内にある2つのノードi,jの間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算方法であって、グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、辺を付加する前のノードi、j間の最短経路と、ノードiからブロックV内のいずれかのノードへの最短経路を通ってブロックVとブロックCとの間の辺を経由しブロックCからノードjへの最短経路を通る経路と、ノードiからブロックC内のいずれかのノードへの最短経路を通ってブロックCとブロックVとの間の辺を経由しブロックVからノードjへの最短経路を通る経路のうち、最も短い経路を選択する処理を複数回繰り返すことによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出するようにしたので、ノード間の最短経路を容易に求めることができる。
また、実施の形態4の検査行列生成方法によれば、生成する検査行列Hにおける小行列サイズ、列ブロック数、行ブロック数、girth g、列重み、行重みを設定し、検査行列Hの要素を全て0にする初期化ステップと、検査行列Hに対応するタナーグラフにおいて最短経路演算方法を用いてブロック間およびシフト量の最短経路長を算出する最短経路長算出ステップと、最短経路長がg−1以上の列ブロック、行ブロック、シフト量の組で、列重みと行重みが設定値に満たない組が存在するかを調べる最短経路長判定ステップと、最短経路長判定ステップで存在を判定した列ブロック、行ブロック、シフト量の組で、ブロックに長さg−1以下のループが発生しないかを判定する内部ループ判定ステップと、内部ループ判定ステップで存在を判定した列ブロック、行ブロック、シフト量の組の1つを選択しHのブロックにシフト量から算出した小行列を配置する小行列配置ステップと、検査行列Hの列重みと行重みが設定値に満たしたかを調べる重み判定ステップと、最短経路長算出ステップと最短経路長判定ステップと内部ループ判定ステップと小行列配置ステップと重み判定ステップとを繰り返してパリティ検査行列を生成するようにしたので、LDPC符号の復号性能の劣化を防ぐことができ、復号性能の高いLDPC符号の検査行列を生成することができると共に、短い時間で検査行列を生成することができる。
また、実施の形態4の検査行列生成方法によれば、内部ループ判定ステップを、実施の形態1の最短経路演算方法を用いて最短経路長を算出することによって、初期化ステップで設定したgirth gの値より短い内部ループ発生を判定するようにしたので、内部ループ発生の判定を確実に行うことができる。
また、実施の形態4の検査行列生成方法によれば、内部ループ判定ステップを、初期化ステップで設定したgirth gよりも短いループが発生しうるパターン全てに対し調べるようにしたので、内部ループ発生判定の計算時間の短縮を図ることができる。
また、実施の形態4の検査行列生成方法によれば、初期化ステップに代えて、生成する検査行列Hの列数、行数、girth g、列重み、行重みを設定し、検査行列Hの部分行列を2重ブロック対角構造に初期化し、初期化した検査行列Hのブロック間およびシフト量の最短経路長を算出する第4の初期化ステップとし、かつ、最短経路長判定ステップに代えて、2重ブロック対角構造とした列のうち一部もしくは全てを除いた列に対し、最短経路長がg−1以上の変数ノードと検査ノードの組で、列重みと行重みが設定値に満たない組が存在するかを調べる第4の最短経路長判定ステップとしたので、LDPC符号の符号化を効率的に行うことができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
1,11 第1の最短経路算出部、2,12 第2の最短経路算出部、3,13 第3の最短経路算出部、4,14 最短経路判定部。

Claims (12)

  1. 対象をノードと辺のグラフで表した場合の2つのノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算装置であって、
    前記グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、辺vcを付加する前のノードi、j間の最短経路を求める第1の最短経路算出部と、
    前記グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、ノードiからノードvへの最短経路を通って辺vcを経由しノードcからノードjへの最短経路を通る経路を求める第2の最短経路算出部と、
    前記グラフ上のノードvとノードcとを結ぶ辺vcを付加したときに、ノードiからノードcへの最短経路を通って辺vcを経由しノードvからノードjへの最短経路を通る経路を求める第3の最短経路算出部と、
    前記第1の最短経路算出部、第2の最短経路算出部および第3の最短経路算出部が求めた3つの経路のうちで、最も短い経路を選択することにより前記ノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路判定部とを備えた最短経路演算装置。
  2. 請求項1記載の最短経路演算装置を用いて、グラフ上の2つのノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算方法であって、
    グラフのノードvとノードcとを結ぶ辺vcを付加したときに、
    辺vcを付加する前のノードi、j間の最短経路と、
    ノードiからノードvへの最短経路を通って辺vcを経由しノードcからノードjへの最短経路を通る経路と、
    ノードiからノードcへの最短経路を通って辺vcを経由しノードvからノードjへの最短経路を通る経路のうち、最も短い経路を選択することによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算方法。
  3. 生成する検査行列Hの列数、行数、girth gを設定し、前記検査行列Hの要素を全て0にする初期化ステップと、
    前記検査行列Hに対応するタナーグラフにおいて請求項2の最短経路演算方法で最短経路長を算出する最短経路長算出ステップと、
    最短経路長がg−1以上の変数ノードと検査ノードの組が存在するかを調べる最短経路長判定ステップと、
    前記最短経路長判定ステップで存在を判定した変数ノードと検査ノードの組の1つを選択しその組に対応するHの要素に1を付加する行列要素付加ステップとを備え、
    前記最短経路長算出ステップと前記最短経路長判定ステップと前記行列要素付加ステップとを繰り返してパリティ検査行列を生成する検査行列生成方法。
  4. 初期化ステップに代えて、
    生成する検査行列Hの列数、行数、girth gを設定し、前記検査行列Hの部分行列を2重対角構造に初期化し、当該初期化した検査行列Hの最短経路長を算出する第2の初期化ステップとし、かつ、
    最短経路長判定ステップに代えて、
    前記2重対角構造とした列以外のうちで、最短経路長がg−1以上の変数ノードと検査ノードの組が存在するかを調べる第2の最短経路長判定ステップとしたことを特徴とする請求項3記載の検査行列生成方法。
  5. 生成する検査行列Hの列数、行数、girth g、列重み、行重みを設定し、前記検査行列Hの要素を全て0にする初期化ステップと、
    前記検査行列Hに対応するタナーグラフにおいて請求項2の最短経路演算方法で最短経路長を算出する最短経路長算出ステップと、
    最短経路長がg−1以上の変数ノードと検査ノードの組で、列重みと行重みが設定値に満たない組が存在するかを調べる最短経路長判定ステップと、
    前記最短経路長判定ステップで存在を判定した変数ノードと検査ノードの組に対応する前記検査行列Hの要素に1を付加する行列要素付加ステップと、
    前記検査行列Hの列重みと行重みが設定値に満たしたかを調べる重み判定ステップと、
    前記最短経路長算出ステップと前記最短経路長判定ステップと前記行列要素付加ステップと前記重み判定ステップとを繰り返してパリティ検査行列を生成する検査行列生成方法。
  6. 初期化ステップに代えて、
    生成する検査行列Hの列数、行数、girth g、列重み、行重みを設定し、前記検査行列Hの部分行列を2重対角構造に初期化し、当該初期化した検査行列Hの最短経路長を算出する第3の初期化ステップとし、かつ、
    最短経路長判定ステップに代えて、
    前記2重対角構造とした列以外のうちで、最短経路長がg−1以上の変数ノードと検査ノードの組で、列重みと行重みが設定値に満たない組が存在するかを調べる第3の最短経路長判定ステップとしたことを特徴とする請求項5記載の検査行列生成方法。
  7. ブロックに分割されたグラフにおいて、ブロックI,J内にある2つのノードi,jの間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算装置であって、
    グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、辺を付加する前のノードi、j間の最短経路を求める第1の最短経路算出部と、
    グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、ノードiからブロックV内のいずれかのノードへの最短経路を通ってブロックVとブロックCとの間の辺を経由しブロックCからノードjへの最短経路を通る経路を求める第2の最短経路算出部と、
    グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、ノードiからブロックC内のいずれかのノードへの最短経路を通ってブロックCとブロックVとの間の辺を経由しブロックVからノードjへの最短経路を通る経路を求める第3の最短経路算出部と、
    前記第1の最短経路算出部、第2の最短経路算出部および第3の最短経路算出部が求めた3つの経路のうちで、最も短い経路を選択する処理を繰り返すことにより前記ノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路判定部とを備えた最短経路演算装置。
  8. 請求項7記載の最短経路演算装置を用いて、ブロックに分割されたグラフにおいて、ブロックI,J内にある2つのノードi,jの間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算方法であって、
    グラフのブロックVとブロックCとを結ぶ辺を複数付加したときに、辺を付加する前のノードi、j間の最短経路と、ノードiからブロックV内のいずれかのノードへの最短経路を通ってブロックVとブロックCとの間の辺を経由しブロックCからノードjへの最短経路を通る経路と、ノードiからブロックC内のいずれかのノードへの最短経路を通ってブロックCとブロックVとの間の辺を経由しブロックVからノードjへの最短経路を通る経路のうち、最も短い経路を選択する処理を複数回繰り返すことによりノードi,j間の最短経路またはその長さのうち少なくともいずれかの値を算出する最短経路演算方法。
  9. 生成する検査行列Hにおける小行列サイズ、列ブロック数、行ブロック数、girth g、列重み、行重みを設定し、前記検査行列Hの要素を全て0にする初期化ステップと、
    前記検査行列Hに対応するタナーグラフにおいて請求項8の最短経路演算方法を用いてブロック間およびシフト量の最短経路長を算出する最短経路長算出ステップと、
    最短経路長がg−1以上の列ブロック、行ブロック、シフト量の組で、列重みと行重みが設定値に満たない組が存在するかを調べる最短経路長判定ステップと、
    最短経路長判定ステップで存在を判定した列ブロック、行ブロック、シフト量の組で、当該ブロックに長さg−1以下のループが発生しないかを判定する内部ループ判定ステップと、
    内部ループ判定ステップで存在を判定した列ブロック、行ブロック、シフト量の組の1つを選択しHの当該ブロックにシフト量から算出した小行列を配置する小行列配置ステップと、
    前記検査行列Hの列重みと行重みが設定値を満たしたかを調べる重み判定ステップと、
    最短経路長算出ステップと最短経路長判定ステップと内部ループ判定ステップと小行列配置ステップと重み判定ステップとを繰り返してパリティ検査行列を生成する検査行列生成方法。
  10. 内部ループ判定ステップを、請求項2の最短経路演算方法を用いて最短経路長を算出することによって、初期化ステップで設定したgirth gの値より短い内部ループ発生を判定することを特徴とする請求項9記載の検査行列生成方法。
  11. 内部ループ判定ステップを、初期化ステップで設定したgirth gよりも短いループが発生しうるパターン全てに対し調べることを特徴とする請求項9記載の検査行列生成方法。
  12. 初期化ステップに代えて、
    生成する検査行列Hの列数、行数、girth g、列重み、行重みを設定し、前記検査行列Hの部分行列を2重ブロック対角構造に初期化し、当該初期化した検査行列Hのブロック間およびシフト量の最短経路長を算出する第4の初期化ステップとし、かつ、
    最短経路長判定ステップに代えて、
    前記2重ブロック対角構造とした列のうち一部もしくは全てを除いた列に対し、最短経路長がg−1以上の変数ノードと検査ノードの組で、列重みと行重みが設定値に満たない組が存在するかを調べる第4の経路長判定ステップとしたことを特徴とする請求項9記載の検査行列生成方法。
JP2010264873A 2010-11-29 2010-11-29 最短経路演算装置、最短経路演算方法及び検査行列生成方法 Active JP5542634B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010264873A JP5542634B2 (ja) 2010-11-29 2010-11-29 最短経路演算装置、最短経路演算方法及び検査行列生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010264873A JP5542634B2 (ja) 2010-11-29 2010-11-29 最短経路演算装置、最短経路演算方法及び検査行列生成方法

Publications (2)

Publication Number Publication Date
JP2012119736A true JP2012119736A (ja) 2012-06-21
JP5542634B2 JP5542634B2 (ja) 2014-07-09

Family

ID=46502151

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010264873A Active JP5542634B2 (ja) 2010-11-29 2010-11-29 最短経路演算装置、最短経路演算方法及び検査行列生成方法

Country Status (1)

Country Link
JP (1) JP5542634B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015128331A (ja) * 2015-04-09 2015-07-09 日本電信電話株式会社 誤り訂正符号方法及びシステム
JP2017216677A (ja) * 2016-05-06 2017-12-07 インフィネオン テクノロジーズ アーゲーInfineon Technologies Ag 埋め込みパリティ行列生成器

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9722633B2 (en) * 2015-02-11 2017-08-01 Mitsubishi Electric Research Laboratories, Inc. Method and system for reliable data communications with adaptive multi-dimensional modulations for variable-iteration decoding

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508776A (ja) * 2004-07-27 2008-03-21 エルジー エレクトロニクス インコーポレイティド 低密度パリティ検査コードを用いた符号化及び復号化方法
WO2010001565A1 (ja) * 2008-07-04 2010-01-07 三菱電機株式会社 検査行列生成装置、検査行列生成方法、検査行列生成プログラム、送信装置、受信装置及び通信システム
JP2011065406A (ja) * 2009-09-17 2011-03-31 Hitachi Solutions Ltd 運賃表作成システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008508776A (ja) * 2004-07-27 2008-03-21 エルジー エレクトロニクス インコーポレイティド 低密度パリティ検査コードを用いた符号化及び復号化方法
WO2010001565A1 (ja) * 2008-07-04 2010-01-07 三菱電機株式会社 検査行列生成装置、検査行列生成方法、検査行列生成プログラム、送信装置、受信装置及び通信システム
JP2011065406A (ja) * 2009-09-17 2011-03-31 Hitachi Solutions Ltd 運賃表作成システム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JPN6014014581; Seif Shebl et al.: 'A random construction of LDPC codes using a sub-optimal search algorithm' Radio Science Conference, 2009. NRSC 2009. , 20090319 *
JPN6014014584; Nitin Chandrachoodan et al.: 'Adaptive negative cycle detection in dynamic graphs' Circuits and Systems, 2001. ISCAS 2001. The 2001 IEEE International Symposium on Vol. 5, 2001, pp.163-166 *
JPN6014014587; 大沢 裕 他: '道路網上での最短寄り道検索アルゴリズム' 電子情報通信学会技術研究報告 Vol.108, No.340, 20081204, pp.1-6 *
JPN6014014589; 稲垣 潤 他: '複数経由点指定を伴う経路探索に関する考察' 電子情報通信学会技術研究報告 Vol.97, No.429, 19971211, pp.69-74 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015128331A (ja) * 2015-04-09 2015-07-09 日本電信電話株式会社 誤り訂正符号方法及びシステム
JP2017216677A (ja) * 2016-05-06 2017-12-07 インフィネオン テクノロジーズ アーゲーInfineon Technologies Ag 埋め込みパリティ行列生成器

Also Published As

Publication number Publication date
JP5542634B2 (ja) 2014-07-09

Similar Documents

Publication Publication Date Title
KR101405962B1 (ko) Ldpc 코드를 이용한 복호화 방법
KR101789959B1 (ko) 구조적 ldpc의 인코딩 방법, 디코딩 방법, 인코딩 장치 및 디코딩 장치
JP5752317B2 (ja) 準巡回低密度パリティ検査符号を求める方法、及び準巡回低密度パリティ検査符号に基づいてデータを符号化するシステム
KR101662747B1 (ko) 높은 병렬성, 낮은 에러 플로어, 및 간단한 인코딩 원리를 갖는 리프팅된 ldpc 코드들에 대한 설계
KR100849044B1 (ko) 패리티 체크 행렬 생성 방법, 데이터 전송 시스템, 부호화장치, 복호 장치 및 패리티 체크 행렬 생성 프로그램을 저장하는 컴퓨터로 판독가능한 기록 매체
US7203897B2 (en) Method and apparatus for encoding and decoding data
JP5116735B2 (ja) 符号を構成する方法
CN103152056B (zh) 一种基于原模图的准循环ldpc码构造方法及装置
JP4602406B2 (ja) データをエンコード及びデコードするための方法並びに装置
WO2014122772A1 (ja) 誤り訂正符号の検査行列のデータ構造、並びに誤り訂正符号の符号化率可変装置および可変方法
KR20170020305A (ko) 체크 노드 계산유닛을 관리하는 방법, 장치, 및 상기 방법을 실행하기 위한 소프트웨어
EP3556021A1 (en) Efficiently decodable qc-ldpc code
CN113612486A (zh) 一种构建pbrl ldpc码的基矩阵方法、系统、装置及存储介质
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
CN107404321A (zh) 用于纠错码解码的方法和设备
WO2017105291A1 (en) Generalized quasi-cyclic ldpc convolutional codes for digital communication systems
JP5542634B2 (ja) 最短経路演算装置、最短経路演算方法及び検査行列生成方法
CN103199877A (zh) 一种结构化ldpc卷积码构造编码方法
Ostrev et al. Classical product code constructions for quantum Calderbank-Shor-Steane codes
JP2008167357A (ja) 低密度パリティ検査符号データを復号する復号方法、装置及びプログラム
TWI487288B (zh) 用於非二進制類循環低密度奇偶檢查碼之解碼裝置及其方法
Aylaj et al. Good Quasi-Cyclic Codes from Circulant Matrices Concatenation using a Heuristic Method
RU2365034C2 (ru) Способ и устройство для кодирования и декодирования данных
CN114050834A (zh) 一种ldpc码构造方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140314

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140507

R150 Certificate of patent or registration of utility model

Ref document number: 5542634

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250