(57)【特許請求の範囲】
【請求項１】
有限幾何学コードの受信ワードを復号化する方法であって、
前記有限幾何学コードのパリティチェック行列を定義することと、各要素が０、１、または不確定値のいずれかである要素によって前記受信ワード中の各ビットを表すこととを有する一度限りの初期化手順と、
終了条件が真の場合に終了することと、その他の場合に、前記パリティチェック行列および前記要素の現在値に応じて各要素の票の集合を求めることと、各要素の前記票の集合および前記受信ワードに基づいて前記要素を更新することとを有する反復復号化手順と
を備え、
前記パリティチェック行列の各行は、パリティチェックに対応し、各パリティチェックは、票をＪ個の要素に送り、パリティチェックが票を送る前記要素は、前記パリティチェックに対応する行中に値１を有する前記パリティチェック行列の前記列に対応し、
票を送る関連するパリティチェックから、各要素に対する推奨および推奨の強さを求めることをさらに含む
有限幾何学コードの受信ワードを復号化する方法。
【請求項２】
（Ｎ，ｋ）有限幾何学コードを表す前記パリティチェック行列は、Ｍ行、Ｎ列、ランクＮ−ｋを有し、前記Ｍ行は、前記有限幾何学のＮ個の点に対する前記有限幾何学中の選択されたμフラットの集合の発生ベクトルであり、各行は、Ｊ個の１およびＮ−Ｊ個の０を含む請求項１に記載の方法。
【請求項３】
μフラットは、互いに循環シフトである請求項１に記載の方法。
【請求項４】
前記要素は、それぞれ、前記受信ワードのビットに対応する前記復号器の状態を表し、前記終了条件は、前記復号器の前記状態がコードワードであるときに満たされる請求項１に記載の方法。
【請求項５】
前記初期化手順および前記復号化手順は、前記終了条件が満たされ、前記復号器の前記状態がコードワードに対応しない場合、実質的により多くのパリティチェック行列を用いて再開される請求項１に記載の方法。
【請求項６】
特定のパリティチェックの特定の要素に対する前記票は、前記パリティチェックに関連するその他の前記Ｊ−ｌ個の要素の状態により決定される請求項１に記載の方法。
【請求項７】
特定のパリティチェックから特定の要素に対する前記票は、前記パリティチェックに関連するその他のＪ−１個の要素のいずれかが不確定値を有する場合に棄権であり、値１を有する前記パリティチェックに関連する他の要素の数が奇数の場合に１であり、その他の場合に０である請求項１に記載の方法。
【請求項８】
前記推奨は、前記票の過半数が０の場合に０であり、前記票の過半数が１である場合に１であり、０と１の票が等しい場合に推奨なしである請求項１に記載の方法。
【請求項９】
前記推奨の強さは、票０の数と票１の数との間の差の大きさである請求項８に記載の方法。
【請求項１０】
前記票は、前記パリティチェックの前記推奨の強さをしきい値ｂｆｌｉｐおよびしきい値ｂｕｎｃｅｒｔａｉｎと比較することにより、特定の要素の次の更新状態を求める請求項９に記載の方法。
【請求項１１】
前記特定の要素の次の更新状態は、前記パリティチェックの前記推奨が前記受信ワード中の値と一致する場合には、前記受信ワード中の前記値に等しい請求項１０に記載の方法。
【請求項１２】
前記特定の要素の次の更新状態は、前記パリティチェックの前記推奨が前記受信ワード中の値と等しくなく、かつ前記推奨の強さがしきい値ｂｕｎｃｅｒｔａｉｎ未満である場合に、前記受信ワード中の前記値に等しく、前記特定の要素の次の更新状態は、前記パリティチェックの前記推奨が前記受信ワード中の前記値と等しくなく、かつ前記推奨の強さが前記しきい値ｂｕｎｃｅｒｔａｉｎ以上であり、かつ前記しきい値ｂｆｌｉｐ未満の場合に不確定性を表す状態であり、前記特定の要素の次の更新状態は、前記推奨の強さが前記しきい値ｂｆｌｉｐよりも大きい場合に前記パリティチェックの前記推奨に一致する請求項１０に記載の方法。
【請求項１３】
前記しきい値の値を所定のスケジュールに従って各復号化サイクルの終了時に更新することをさらに含む請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的にデータ記憶およびデータ伝送の誤り訂正コードの分野に関し、特に、有限幾何学に基づいた誤り訂正コードのクラスを復号化する方法に関する。
【背景技術】
【０００２】
データの記憶および通信の分野における基本的な問題は、誤り訂正コード（ＥＣＣ）を実際に復号化する方法の開発である。Blahut著「Algebraic Codes for Data Transmission」Cambridge University Press: Cambridge, 2003およびMacWilliams等著「The Theory of Error-Correcting Codes」North-Holland: New York, NY, 1977を参照願いたい。
【０００３】
２元線形ブロック誤り訂正コード
本明細書における「コード」への言及は、いずれも、２元線形ブロック誤り訂正コードを特に意味する。こういったコードの裏にある基本的な概念は、Ｎビットのブロックを使用してｋ個の情報ビットのメッセージを符号化するというものである。但し、Ｎ＞ｋである。さらにＮ−ｋビットが、破損したメッセージの復号化および訂正に使用される。Ｎビットのブロックは、コードワードまたは単に「ワード」と呼ばれることもある。
【０００４】
破損は、記憶媒体の障害または伝送チャネルでの雑音を原因として発生する可能性がある。本明細書では、伝送路は、２元対称通信路（ＢＳＣ）としてモデリングすることができるものと仮定する。２元対称通信路では、各ビットは、ある確率ｐで独立して反転し得る。
【０００５】
コードＣは、ブロック長Ｎを有する可能な２ｋ個の「コードワード」ブロックの集合により定義される。ｋは、コードの「次元」と呼ばれることがある。コードの「レート」Ｒは、Ｒ＝ｋ／Ｎにより定義される。コードは、通常、Ｎおよびｋが大きい場合にはるかに有効である。しかし、パラメータＮおよびｋのサイズが増大するにつれ、破損したメッセージを復号化する難しさも増大する。
【０００６】
２つのワード間のハミング距離は、２つのワードで異なるビットの数として定義される。コードの距離ｄは、コード中のすべてのコードワード対の間での最小ハミング距離として定義される。ｄの値が大きいコードほど、高い誤り訂正能力を有する。パラメータＮおよびｋを有するコードは（Ｎ，ｋ）コードと呼ばれる。距離ｄもわかっている場合、コードは（Ｎ，ｋ，ｄ）コードと呼ばれる。
【０００７】
２元線形ブロック誤り訂正コードのクラスには、多種多様なサブクラスコードが含まれる。こういったサブクラスの中で最も知られているもののいくつかには、低密度パリティチェック（ＬＤＰＣ）コード、Ｂｏｓｅ，Ｃｈａｕｄｈｕｒｉ，およびＨｏｃｑｕｅｎｇｈｅｎ（ＢＨＣ）コード、およびＲｅｅｄ−Ｍｕｌｌｅｒコード等、有限幾何学に基づいたコードがある。
【０００８】
Ｒｅｅｄ−Ｍｕｌｌｅｒコードおよび有限幾何学に基づいた他のコード
誤り訂正コードの１つの重要なクラスは、"A Class of Multiple-Error-Correcting Codes and the Decoding Scheme" IRE Trans. Inform. Theory, vol.4, pp.38-49, Sept. 1954においてReed他により記載され、また"Application of Boolean Algebra to Switching Circuit Design to Error Detection" IRE Trans. Electron. Comput., vol3, pp.6-12, Jan. 1954においてMullerにより記載されたＲｅｅｄ−Ｍｕｌｌｅｒコードである。
【０００９】
有限幾何学に基づいた他の多重誤り訂正コード、本明細書では「有限幾何学コード」は、１９６０年代および１９７０年代に開発された。概要については、Lin他"Error Control Coding: Fundamentals and Applications" Prentice Hall: Englewood Cliffs, NJ, 1983の第８章を参照願いたい。
【００１０】
有限幾何学コードは、Ｒｅｅｄ−Ｍｕｌｌｅｒコードの一般化と考えることができる。Ｒｅｅｄ−Ｍｕｌｌｅｒコードクラスは、有限幾何学コードクラスの部分集合であるユークリッド幾何学コードクラスの部分集合である。
【００１１】
有限幾何学コードのパラメータＮ、ｋ、およびｄを求めることが可能である。このようなコードの距離は、同等のＢＣＨ（Ｂｏｓｅ、Ｃｈａｕｄｈｕｒｉ、およびＨｏｃｑｕｅｎｇｈｅｎ）コードの距離よりもいくらか悪い。ＢＣＨの説明については、先に触れた誤り訂正コードについての参考書のいずれかを参照願いたい。一方、有限幾何学コードの相対的な利点は、それらの復号器がＢＣＨコードの復号器よりもはるかに単純に実施されることである。
【００１２】
多数決論理復号器、限界距離復号器、および最尤復号器
これまで、Ｒｅｅｄ−Ｍｕｌｌｅｒコードおよび他の有限幾何学コードは一般に、「多数決論理復号化」として既知の復号化方法によって復号化されてきた。多数決論理復号化は、実施が単純であり、極めて高速である。多数決論理復号化の説明については、Blahut著「Algebraic Codes for Data Transmission」Cambridge University Press: Cambridge, 2003の第１３章を参照願いたい。
【００１３】
多数決論理復号器は、「限界距離復号器」の一例である。代数的方法に基づいたＢＣＨコードの標準的な従来技術による復号器もまた、限界距離復号器である。
【００１４】
限界距離復号器は、受け取ったいずれのワードも、最近傍コードワードまでのハミング距離が限界距離復号化半径ｔ以下である限り、最も近いコードワードに復号化する。但し、ｔは、下式で表される。
【００１５】
【数１】
0004651990.tif 000002
【００１６】
ここで、ｘのフロア関数は、下式で表される。
【００１７】
【数２】
0004651990.tif 000003
【００１８】
このフロア関数は、ｘの小数部分が減算されることを示す。ワードの距離ｔ以下内には、最大で１個のコードワードがあることができる。したがって、限界距離復号器は、チャネルがｔ以下のビット反転を導入した場合、受信ワードを送信コードワードに首尾良く復号化する。逆に、限界距離復号器は、受信ワードが、いずれのコードワードからも復号化半径ｔよりも大きい距離を有する場合、復号に失敗する。チャネルがｔ以上のビット反転を導入する場合、限界距離復号器は、送信コードワードを正しく復号化することができない。
【００１９】
限界距離復号器の誤り訂正性能は、通常、最適な「最尤」復号器の性能よりもはるかに悪い。最尤復号器は、受信ワードから最近傍コードワードまでのハミング距離が何であれ、受信ワードをいずれも最近傍コードワードに復号化する。不都合なことに、真の最尤復号器の複雑性は、情報ビット数ｋに伴って指数的に増大し、適度に多数の情報ビットを有するコードに対しては実用的ではない。
【００２０】
最適には達しないが、限界距離復号器よりもはるかに良好に機能する実用的な復号器を提供することが望ましい。このような復号器は、いずれのコードワードからもｔよりも長い距離にある受信ワードを、すべてではないが、その多くを正しく復号化することが可能であるべきである。
【００２１】
本発明の目的は、Ｒｅｅｄ−Ｍｕｌｌｅｒコードおよび有限幾何学に基づいた他のコードに向けてこのような復号器を提供することである。このような復号器は、従来技術による多数決論理復号化方法よりも性能が大幅に優れている。
【００２２】
ビット反転復号器
ビット反転復号器は、低密度パリティチェック（ＬＤＰＣ）コードに関して説明されている。Gallager著「Low Density Parity Check Code」MIT Press, 1963を参照願いたい。Gallagerにより初めから説明されているように、こういった復号器は、パリティチェック行列によりＬＤＰＣコードを表す。このような復号器は、復号化すべき受信ワードの現在の状態を要素のリストとして格納する。各要素が受信ワードの１ビットを表す。各要素は、０または１の値をとることができる。要素のリストは、チャネル通過後に受け取られるビットに整合するように初期化される。Gallagerのビット反転復号化方法での各反復において、リスト中のあらゆる要素がテストされ、反転すべきか否かが調べられる。そのビットを含む十分な数のパリティチェックにより、要素が誤った値を有することが示される場合、要素は反転される。復号器は、引き続き繰り返され、要素のビット反転は、その他の要素の最新の更新値に基づいて判断される。ビット反転手順が終了すると、要素の値が復号化されたワードのビット値として採用される。
【００２３】
同様のトライステートビット反転復号化方法が、ＬＤＰＣコード復号化の文脈の中で、Richardson著書「The Capacity of Low-Density Parity-Check Codes Under Message-Passing Decoding」IEEE Trans. Information Theory, vol.47, num. 2, pp.599-619, Feb. 2001およびMitzenmacher著「A Note on Low Density Parity Check Codes for Erasures and Errors」SRC Technical Note 1998-017, December 1998により述べられている。トライステートビット反転復号器では、復号化中のワードの要素は、０、１、または？の値を有することができ、ここで「？」値は、要素の正確な状態が不確定であることを示す。
【００２４】
ビット反転復号化方法を使用して、ＬＤＰＣコードではなく、クラスのまったく異なるコード、すなわち有限幾何学に基づいたコードを復号化することが望ましい。
【００２５】
ＬＤＰＣコードのビット反転復号器は、限界距離復号器ではない。有限幾何学に基づいたコードとは対照的に、通常、所与のＬＤＰＣコードの場合に距離ｄでさえ計算することは非現実的である。ビット反転復号器は、限界距離復号器ではないということは、ｔ以下のビット反転によってのみ破損した場合であっても、受信ワードを復号化することができる保証がないことを意味する。
【００２６】
一方、ビット反転復号器は、ｔよりも多いビット反転により破損したワードを復号化することが潜在的に可能であるという利点を有する。ビット反転復号器は、これまで、ＬＤＰＣコード以外の２元ブロックコードには使用されてこなかった。主な理由は、これまで、ビット反転復号器は、ＬＤＰＣコード以外には不適当であると考えられていたことである。
【００２７】
Ｒｅｅｄ−Ｍｕｌｌｅｒコードは、１９５４年に端を発し、ＬＤＰＣコードのビット反転復号器は、１９６０年代初めに端を発するが、これまで誰も、Ｒｅｅｄ−Ｍｕｌｌｅｒコードまたは他の有限幾何学コードにビット反転復号器を使用する方法を考案していない。このことに対して考えられる説明は、ビット反転復号器が良好に機能するためには、有限幾何学的コードを非明確な方法で表さなければならないことである。
【００２８】
コードのパリティチェック行列表現
２元ブロックコードは、任意の２つのコードワードの排他的論理和もまたコードワードである場合に「線形」である。たとえば、１１１０１００と０１１１０１０の排他的論理和は１００１１１０である。パリティチェック行列は、線形コードを表すことができる。実際、多くの異なるパリティチェック行列が線形コードを表すことができる。
【００２９】
（Ｎ，ｋ）コードを表すパリティチェック行列は、Ｍ行およびＮ列を有する１と０の行列により定義される。パリティチェック行列のＮ列は、Ｎビットコードに対応する。
【００３０】
パリティチェック行列の各行は、パリティチェックの制約を表す。特定の行により表される制約に関わるビットは、その行において１を有する列に対応する。パリティチェック制約は、排他的論理和演算したときに、ビットの和を偶数、すなわち０になるように強制する。たとえば、下式（１）のパリティチェック行列は、３つの制約（２）〜（４）を表している。
【００３１】
【数３】
0004651990.tif 000004
【００３２】
但し、要素ｘｉは、０または１であることができるｉ番目のビットの値を表し、＋を○で囲った記号は、排他的論理和演算を表す。このパリティチェック行列は、既知のハミング（Ｎ＝７，ｋ＝４，ｄ＝３）コードを表す一方法である。
【００３３】
パリティチェック行列によって表されるＭ個の異なる制約のいくつかは、線形従属する。式（１）に与えたパリティチェック行列では、制約は、すべて線形独立する。同じコードの別表現は、下式（５）のパリティチェック行列となる。
【００３４】
【数４】
0004651990.tif 000005
【００３５】
このパリティ行列では、最後の４行が、最初の３行の組合せをともに加算することによって得られる。これは、最後の４行は、単に冗長制約であり、実際には３つの線形独立行しかないことを意味する。たとえば、４行目は、最初の２つの行をともに加算することによって得ることができる。
【００３６】
行列の線形独立行の数は、行列の「ランク」と呼ばれることもある。したがって、この行列は、ランク３を有する。一般に、（Ｎ，ｋ）コードのＭ×Ｎパリティチェック行列表現のランクはＮ−ｋである。
【００３７】
有限幾何学
他の２元線形ブロックコードのように、有限幾何学コードもパリティチェック行列で表すことができる。特に注目するのは、「ユークリッド幾何学」として既知の有限幾何学に基づいたコードである。他のコードは、「射影幾何学」として既知の有限幾何学に基づくものである。いくらかの詳細は異なるが、原理は同じである。さらに詳しくは、Lin著書「Error Control Coding: Fundamentals and Applications」Prentice Hall: Englewood Cliffs, NJ, 1983の第８章を参照願いたい。
【００３８】
有限幾何学は、通常の幾何学の点、線、平面、および超平面に類似する有限数の物体を含む数学的構造である。有限幾何学は、「０フラット(0-flat）」と呼ばれる有限数の点を有する。これらの点の特定の集合は、「線」または「１フラット」と呼ばれる。線の他の集合は、「平面」または「２フラット」と呼ばれる。平面の集合は、「３フラット」と呼ばれ、３フラットの集合は、「４フラット」と呼ばれ、以下同様である。一般に、集合は、「μフラット」と呼ばれる。これらは、有限幾何学の文献の中で既知の定義である。
【００３９】
ユークリッド幾何学ＥＧ（ｍ，ｑ）は、２つのパラメータｍおよびｑにより特徴付けられる。ＥＧ（ｍ，ｑ）中の「点」または「０フラット」は、ｍ個の異なるｑ元の要素のベクトルである。たとえば、ｑ＝２かつｍ＝３の場合、ＥＧ（ｍ＝３，ｑ＝２）の点は、３ビットからなるベクトルである。したがって、ＥＧ（ｍ＝３，ｑ＝２）の８個の点は、０００、００１、０１０、０１１、１００、１０１、１１０、および１１１である。
【００４０】
ＥＧ（ｍ，ｑ）の点は、複数の異なる方法でラベリングすることができる。ＥＧ（ｍ＝３，ｑ＝２）の例では、１つの自然なラベリングは０００＝０、００１＝１、０１０＝２、０１１＝３、１００＝４、１０１＝５、１１０＝６、１１１＝７である。
【００４１】
ｑ元の要素は、ガロア体ＧＦ（ｑ）の規則に従って、ともに加算または乗算すべきである。ガロア体の説明については、上で引用したものを含め、誤り訂正コードについての任意の参考書を参照願いたい。ｑ＝２の場合、ガロア体の規則は特に単純である。ＧＦ（ｑ＝２）の場合、加算規則は、０＋０＝０、０＋１＝１＋０＝１、および１＋１＝０であり、乗算規則は、０＊０＝０＊１＝１＊０＝０、および１＊１＝１である。
【００４２】
有限ユークリッド幾何学での線は、通常の幾何学において線が定義されるのとほぼ同じように定義される。ＥＧ（ｍ，ｑ）での線は、点の集合｛α０＋βα１｝である。但し、α０およびα１は、ＥＧ（ｍ，ｑ）中の異なる点であり、βは、０を除くｑ元要素すべてにわたり、加算および乗算は、ＧＦ（ｑ）の算術規則を使用して定義される。一例として、ユークリッド幾何学ＥＧ（ｍ＝３，ｑ＝２）の場合、α０＝０１０かつα１＝１１１の場合、対応する線は｛０１０，１０１｝であることを見て取ることができる。あらゆるポイント対がユークリッド幾何学ＥＧ（ｍ＝３，ｑ＝２）における線を形成する。
【００４３】
より高次のμフラットも同様にして定義される。たとえば、平面（２フラット）は、点の集合｛α０＋β１α１＋β２α２｝として定義される。但し、α０、α１、およびα２は、ＥＧ（ｍ，ｑ）における線形独立点であり、β１およびβ２は、非ゼロのｑ元要素すべてにわたる。たとえば、α０＝００１、α１＝０１０、かつα２＝１００の場合、対応する平面は、｛００１，０１１，１０１，１１１｝である。上でＥＧ（ｍ＝３，ｑ＝２）の場合に選択されたポイントのラベリングを用いると、この平面は、点｛１，３，５，７｝を有する。
【００４４】
ユークリッド幾何学に基づいたコードを定義する際、すべてゼロの点を含まないすべてのμフラットに焦点が合わせられる。ＥＧ（ｍ＝３，ｑ＝２）を使用する例では、すべてゼロの点は、０００＝０であり、すべてゼロの点を含まない平面は、｛１，２，４，７｝、｛１，２，５，６｝、｛１，３，４，６｝、｛１，３，５，７｝、｛２，３，４，５｝、｛２，３，６，７｝、および｛４，５，６，７｝である。但し、ラベルは、点に定義されたものである。
【００４５】
総計でｎ個の物体の集まり、およびこれら物体の集合の場合、物体に対する集合の「発生ベクトル」を定義することができる。これは、位置ｉにある１が、ｉ番目の物体が集合中に存在することを示すｎ個の０および１のベクトルである。たとえば、ラベル１〜７を有する７つの物体があり、集合｛１，２，５，６｝を考える場合、番号１〜７に対する集合｛１，２，５，６｝の発生ベクトルは１１００１１０である。
【００４６】
ＥＧ（ｍ＝３，ｑ＝２）を用いる例では、ｎ個の物体が７個の非ゼロ点である場合、非ゼロ点に対する、すべてゼロの点を含まない平面の発生ベクトルは、１１０１００１、１１００１１０、１０１１０１０、１０１０１０１、０１１１１００、０１１００１１、および０００１１１１である。
【００４７】
有限幾何学に基づいたコード
ユークリッド幾何学ＥＧ（ｍ，ｓ，ｖ）コードは、行が、非ゼロ点に対する、すべてゼロの点を含まないＥＧ（ｍ，２ｓ）でのすべての（ｖ＋１）フラットの発生ベクトルであるパリティチェック行列で定義することができる。たとえば、ＥＧ（ｍ＝３，ｓ＝１，ｖ＝１）コードは、下式のパリティチェック行列により定義することができる。
【００４８】
【数５】
0004651990.tif 000006
【００４９】
このようにして定義されるユークリッド幾何学コードのパリティチェック行列が冗長行を含むことに留意することは重要である。たとえば、上のＥＧ（ｍ＝３，ｓ＝１，ｖ＝１）コードのパリティチェック行列に７つの行があっても、その行の３つのみが線形独立であり、実際には、コードは、例として先に使用した（ｎ＝７，ｋ＝４，ｄ＝３）ハミングコードと同等である。
【００５０】
点を適宜再ラベリングすると、ユークリッド幾何学に基づくコードは循環形で定義することができる。たとえば、ラベリング０１０＝１、１００＝２、０１１＝３、００１＝４、１０１＝５、１１０＝６、１１１＝７が使用される場合、パリティチェック行列は、循環形を有し、循環対称をより明確にした下式と定義される。
【００５１】
【数６】
0004651990.tif 000007
【００５２】
先に触れたように、Ｒｅｅｄ−Ｍｕｌｌｅｒコードは、ユークリッド幾何学に基づいたコードの特殊な場合と考えることができる。より明確には、Ｒｅｅｄ−Ｍｕｌｌｅｒコードは、ｓ＝１を有するユークリッド幾何学コードである。
【００５３】
他の有限幾何学に基づいたコードも同様に定義される。有限幾何学の点に対して、高次のμフラットの発生ベクトルを使用して、コードのパリティチェック行列を定義する。
【００５４】
上に述べたように、有限幾何学コードに最も一般的に使用される従来技術による復号器は、限界距離復号器である多数決論理復号器である。
【発明の開示】
【発明が解決しようとする課題】
【００５５】
有限幾何学コードの多数決論理復号器よりも性能の優れた実用的な復号化方法を提供することが望まれる。
【課題を解決するための手段】
【００５６】
本発明は（Ｎ，ｋ）有限幾何学コードを復号化する方法を提供する。但し、Ｎは、コードのブロック長であり、ｋは、コードの次元である。
【００５７】
初期化中、コードは、まず、ランクＮ−ｋの、Ｍ行およびＮ列を有するパリティチェック行列により表される。通常、パリティチェック行列はかなり冗長的である。
【００５８】
次に、復号器がワードを受け取ることができる。本発明の目的としては、復号器が受け取るワードは、０と１のＮビットブロックである。
【００５９】
初期化手順は、受信ワードをＮビットチャネルレジスタｘｃｈａｎｎｅｌに格納する。
【００６０】
受信ワードは、アクティブレジスタｘａｃｔｉｖｅにも格納される。レジスタｘａｃｔｉｖｅは、各要素が値「０」、「１」、または「？」を有するＮトライステート要素も格納する。但し、「？」は、復号器が正しい値について不確定であることを示す。
【００６１】
最後に、初期化手順は、２つのしきい値ｂｆｌｉｐおよびｂｕｎｃｅｒｔａｉｎの初期値を設定する。
【００６２】
次に、復号器が反復復号化サイクルを開始する。
【００６３】
復号化サイクルの最初のステップにおいて、終了条件をチェックする。終了条件は、レジスタｘａｃｔｉｖｅの現在状態がコードワードであることか、あるいは所定数の復号化サイクルが実行された等、他のある条件が満たされることである。
【００６４】
終了条件が満たされた場合、復号器は、レジスタｘａｃｔｉｖｅの内容を出力する。
【００６５】
その他の場合、復号化サイクルの２番目のステップにおいて、レジスタｘａｃｔｉｖｅの内容を使用して、パリティチェックが要素に送る、更新された「票」を決定する。
【００６６】
復号化サイクルの３番目のステップにおいて、パリティチェックが要素に送った票を使用して、レジスタｘａｃｔｉｖｅの新しい状態を決定する。各配列に値を「０」または「１」に設定するように指示するチェックの数がしきい値ｂｆｌｉｐおよびｂｕｎｃｅｒｔａｉｎと比較され、レジスタｘａｃｔｉｖｅ中の各要素の状態を決定する。
【００６７】
復号化サイクルの４番目のステップにおいて、しきい値ｂｆｌｉｐおよびｂｕｎｃｅｒｔａｉｎが、所定のスケジュールに従って更新される。
【００６８】
次に、復号化サイクルは、終了条件のチェックに戻り、終了条件が満たされるまでサイクルが繰り返される。
【００６９】
終了条件が満たされた後に、復号器がコードワードの出力に失敗した場合、プロセスを任意の回数繰り返すことができ、その都度、パリティチェック行列におけるパリティチェック数が実質的に増大する。
【発明を実施するための最良の形態】
【００７０】
コードのパリティチェック行列表現の定義
図１および図２は、本発明による有限幾何学に基づいた誤り訂正コードを復号化する方法のステップを示す。コードは、ブロック長Ｎおよび次元ｋを有する。コードは、当分野において既知のように、所与の数の点Ｎおよび所与の数のμフラットを有する有限幾何学に基づく。
【００７１】
図１は、一度限りの初期化手順１００を示し、図２は、反復復号化手順２００のステップを示す。
【００７２】
初期化
より厳密には、Ｍ行が有限幾何学中の点に対する有限幾何学中のμフラットの部分集合の発生ベクトルである復号化パリティチェック行列（Ｈｄｅｃｏｄｅ）１１１によりコード１０１を定義する。
【００７３】
有限幾何学中のμフラットの部分集合を選択し、有限幾何学の点に対するそれぞれの発生ベクトルを本発明のパリティチェック行列１１１の行として使用することにより、Ｍ×Ｎパリティチェック行列を定義する。このパリティチェック行列をＨｄｅｃｏｄｅと呼ぶ。
【００７４】
パリティチェック行列ＨｄｅｃｏｄｅのランクがＮ−ｋである限り、μフラットのいずれの部分集合も選択することができる。復号器のパフォーマンスは、より大きな数のμフラットを選択した場合に向上する。しかし、μフラットの数Ｍが大きいと、復号器の複雑性も増大する。通常、μフラットの数は、復号器が良好に機能するためにＮ−ｋよりも実質的に大きい。
【００７５】
（Ｎ，ｋ）ＬＤＰＣコードの通常のパリティチェック行列表現では、パリティチェックの数、すなわち行列中の行は、ちょうどＮ−ｋであるか、あるいはＮ−ｋに非常に近い。ビット反転復号器は、各パリティチェックが比較的信頼できる情報を送ることから、比較的少ない数のパリティチェックを使用してさえもＬＤＰＣコードと適度に良好に機能する。ＬＤＰＣコードにおけるパリティチェックは、ビットの殆どが誤っている可能性は低いため、少ない数のビットのみが関わり、これにより比較的信頼性が高くなっている。
【００７６】
有限幾何学コードのパリティチェックは、有限幾何学コードの各パリティチェックに、同等のＬＤＰＣコードにおけるパリティチェックよりもいくらか多い数のビットが関わる傾向があるため、ＬＤＰＣコードのパリティチェックよりもいくらか信頼性が劣る傾向がある。このため、有限幾何学コードに使用されるパリティチェックの数がＮ−ｋよりも実質的に大きいことが非常に重要である。
【００７７】
幸いにも、通常、Ｎ−ｋよりも多くのしかるべきμフラットがあるため、有限幾何学コードにＮ−ｋよりも多くのパリティチェックを選択することが可能である。実際、多くのμフラットがあるため、考えられるμフラットのごくわずかのみを選択する場合でもなお十分な数を有する場合が多い。
【００７８】
有限幾何学では、各μフラットは、同じ数の点Ｊを含むため、本発明のパリティチェック行列のＭ行は、それぞれＪ個の１およびＮ−Ｊ個の０を有する。ＥＧ（ｍ，ｑ）ユークリッド幾何学の場合、各μフラットはＪ＝ｑｍ個の点を含む。
【００７９】
互いの循環シフトとして得ることができるμフラットを使用することが好ましい。この場合、パリティチェック行列の各列は、同数の１を有する。
【００８０】
便宜上、Ｈｄｅｃｏｄｅよりも少ない数の行を有する、同じコード１０１を表す終了パリティチェック行列（Ｈｔｅｒｍｉｎａｔｅ）１１２を使用することが好ましい。この第２のパリティチェック行列Ｈｔｅｒｍｉｎａｔｅは、部分的に、復号化サイクル中に終了条件が満たされたか否かをチェックする２１０ために使用される。行列Ｈｔｅｒｍｉｎａｔｅは、ランクＮ−ｋを有し、Ｎ−ｋのみの行を有する。
【００８１】
コードのパリティチェック行列１１１〜１１２表現および受信ワード１０２が与えられると、受信ワードをＮビットレジスタｘｃｈａｎｎｅｌ１２１に格納する１２０。復号化サイクルのあらゆる繰り返しにおいて、復号器は、パリティチェックの票をチャネルの証拠と比較して判断を行うため、受信ワードが格納される。
【００８２】
受信ワードを第２のＮ要素レジスタｘａｃｔｉｖｅ１３１にも格納する１３０。レジスタｘａｃｔｉｖｅは、コードのＮビットそれぞれの値に対して復号器の状態を表す。レジスタｘａｃｔｉｖｅの各要素は、３つの値：「０」、「１」、または「？」のうちの１つをとることができる。「？」値は、復号器が対応する要素の正しい値について不確定であることを示す。
【００８３】
２つのしきい値ｂｆｌｉｐおよびｂｕｎｃｅｒｔａｉｎを正の整数に設定する１４０。しきい値は、ｂｆｌｉｐ≧ｂｕｎｃｅｒｔａｉｎであるように設定される。通常、しきい値は、両方とも、パリティチェック行列１１１の列中の１の数のオーダの大きな整数に設定される。
【００８４】
しきい値ｂｆｌｉｐは、通常、しきい値ｂｕｎｃｅｒｔａｉｎよりも実質的に大きく設定される。たとえば、パリティチェック行列１１１の列中の１の数がＫである場合、しきい値に良好な初期設定は、ｂｆｌｉｐ≒Ｋ、およびｂｕｎｃｅｒｔａｉｎ≒９Ｋ／１０である。要素の不確定状態を更新規則２４０に使用するために、２つのしきい値の間に差がある必要がある。
【００８５】
復号化
復号器２００は、復号化サイクルの最初のステップ２１０において終了条件が満たされるまで、ステップを繰り返し循環する２０１。終了条件が満たされると、復号器は、送信コードワード２０９の推測としてレジスタｘａｃｔｉｖｅ１３１の内容を出力する１３５。
【００８６】
終了条件
復号化サイクルの最初のステップ２１０は、任意の終了条件が満たされているか否かをチェックすることである。複数の終了条件を使用することができる。１つの終了条件は、レジスタｘａｃｔｉｖｅの状態がコードワードに対応するか否かをチェックする。これが真であるためには、ｘａｃｔｉｖｅのいずれの要素も値「？」を有さず、かつパリティチェック行列Ｈｔｅｒｍｉｎａｔｉｏｎ１１２中のすべてのパリティチェックが満足される。レジスタｘａｃｔｉｖｅがコードワードを含む場合、復号器は終了し、コードワード２０９を出力する１３５。
【００８７】
別の終了条件は、復号器が復号化サイクルを永遠に循環しないことを確実にするものである。これが発生しないことを確実にすることが可能な様々な条件がある。最も単純な可能性は、固定最大数サイクルがすでに実行されたか、または固定量の時間が経過したか否かをチェックする終了条件である。終了条件に達し、レジスタｘａｃｔｉｖｅがコードワードに対応しない場合、復号器は明らかに、受信ワードの完全な復号化に失敗している。個々のビットの多くは正しい可能性が高いため、復号器はなおレジスタｘａｃｔｉｖｅの内容を出力する。さらに、プロセス全体を、図３に示すように、より大きなパリティチェック行列に対して再開することができる。
【００８８】
したがって、図３に示すように、終了条件が満たされた後に、復号器がコードワードの出力に失敗する場合、プロセスを複数回繰り返すことができ、その都度、パリティチェック行列１１１中のパリティチェックの数が実質的に増大する３００。このような手順により、必要なときにより多くのパリティチェックを使用することにより、より困難な受信ワードをなお復号化しながら、比較的少ない数の計算を使用して受信ワードの大半を復号化することができる。
【００８９】
このような再開手順の使用に対する制約は、コードの表現に利用可能なμフラットの数および復号化に利用可能な時間である。
【００９０】
パリティチェック票
終了条件が満たされていないと仮定すると、復号化サイクルの次のステップ２２０が、行列１１１中のパリティチェックが以下述べる票規則２１９に従って要素に送る「票」を評価する２２０。
【００９１】
Ｍ個のパリティチェックがある。各パリティチェックａは、パリティチェック行列Ｈｄｅｃｏｄｅの行に対応する。各パリティチェック毎に、パリティチェックは、票をＪ個の要素に送る。このような要素は、それぞれ、行ａ中の値１を有するパリティチェック行列の列に対応する。
【００９２】
ここで、パリティチェックが要素ｉに票を送る場合、要素がパリティチェックに「属する」と言う。総計でＭＪ個の票がある。
【００９３】
パリティチェックａから要素ｉへの各票は可能な３つの値：「０」、「１」、または棄権をとることができる。「０」票は、要素が値「０」をとるパリティチェック票を意味し、「１」票は、要素が値１をとるパリティチェック票を意味し、「？」票は棄権である。すなわち、要素の値は不確定であるため、パリティチェックは、要素の値に基づいて投票しない。
【００９４】
パリティチェックａは、以下の規則２１９に基づいて要素ｉに票を送る。
【００９５】
ｉを除き、現在ａに属するＪ−１個の要素がいずれも、レジスタｘａｃｔｉｖｅにおいて「？」状態にある場合、票は棄権である。その他の場合、その他の奇数のＪ−１要素が状態「１」にある場合、票は「１」である。偶数のその他のＪ−１要素が状態「０」にある場合、票は「０」である。
【００９６】
規則２１９のポイントは、各パリティチェックが、偶数の関連要素が状態「１」にあることを確実にしようとすることである。
【００９７】
要素の更新
パリティチェックから要素へのＭＪ個の票すべてが計算された後、ｘａｃｔｉｖｅ１３１に格納されるＮ要素の値が更新される２３０。
【００９８】
要素を更新する前に、パリティチェック票からの各要素への「推奨」およびに推奨の「強さ」を求める。各要素ｉについて、要素が「１」であると投票するパリティチェックの数が、要素が「０」であると投票するパリティチェックの数と比較される。
【００９９】
大半の票が受ける値（「１」または「０」）は、パリティチェックの推奨とみなされ、票間の差の大きさは推奨の強さとみなされる。
【０１００】
たとえば、８個のパリティチェックが、第３の要素が値「０」を有すると投票し、６個のパリティチェックが、要素が値「１」を有すると投票した場合、第３の要素に対するパリティチェックの「推奨」は「０」であり、強さは８−６＝２である。要素に対して票が引き分ける場合、その要素はパリティチェックからの推奨を有さない。
【０１０１】
以下の更新規則２２９に従ってｘａｃｔｉｖｅ中の各要素の値を更新する。
【０１０２】
Ｎ個の要素それぞれについて、パリティチェックの推奨がｘｃｈａｎｎｅｌ１２１中の対応する要素の値と一致する場合、または推奨がない場合、ｘａｃｔｉｖｅ１３１の更新値は、ｘｃｈａｎｎｅｌ１２１中の対応する要素の値に等しい。要素に対するパリティチェックの推奨がｘｃｈａｎｎｅｌ中の対応する要素の値と一致しない場合、３つの可能性がある。推奨の強さがしきい値ｂｕｎｃｅｒｔａｉｎ未満の場合、要素の値は、ｘｃｈａｎｎｅｌ中の対応する要素の値に等しく設定される。推奨の強さがｂｕｎｃｅｒｔａｉｎ以上であるが、しきい値ｂｆｌｉｐ未満の場合、要素の値は、「？」に設定される。最後に、推奨の強さがしきい値ｂｆｌｉｐ以上の場合、要素の値は、パリティチェックの推奨に等しく設定される。
【０１０３】
本発明の規則の裏にある基本的な概念は、十分な数のパリティチェックが値の「反転」に投票しない限り、復号器が各要素を受信ワード中の対応するビットに整合させることである。中間数のパリティチェックが反転に投票する場合、要素は、不確定値「？」に設定される。上に述べたように、要素が使用すべき不確定値には、しきい値ｂｆｌｉｐおよびしきい値ｂｕｎｃｅｒｔａｉｎの間に差がある。しきい値間の差が大きいほど、不確定値が使用される頻度が高くなる。
【０１０４】
しきい値の更新
復号化サイクルの次のステップでは、しきい値ｂｆｌｉｐおよびｂｕｎｃｅｒｔａｉｎが、所定のスケジュール２３９に従って更新される２４０。経験的には、最良のスケジュールは、２つのしきい値１４１〜１４２を、値間に固定差を有する大きな正の値に初期化し、それから、しきい値が０の値に達するまで、復号化サイクルの各反復において、両方のしきい値を同量低減し、０の値に達した後は０のままである。
【０１０５】
このような復号化スケジュールの裏にある概念は、まず、復号器は、ｘｃｈａｎｎｅｌ１２１に格納されている受信ワードの証拠を最も強く考慮する。しきい値が低減するにつれて、パリティチェックの票の影響力が増す。
【０１０６】
パリティチェックの初期の作用は、単に要素を不確定位置に設定するだけである。最終的に、この種のスケジュールを使用して、パリティチェックはより強度を増し、受信ワードにより与えられた値から要素の値を反転する。したがって、復号器は、受信ワードにおいて与えられたビットの値を許容してそれに従おうとし、必要なときにのみ大きな変更を行うという点で「保守的」であると特徴付けることができる。
【０１０７】
しきい値が更新された２４０後、別の復号化サイクル２０１が開始される。復号器は、最終的に、終了条件が満たされたときに終了する。
【０１０８】
発明の効果
本発明は、ｔよりも多いビット反転により破損した受信ワードを復号化することが可能である。但し、ｔは限界距離復号化半径である。実験は、本発明の復号器が実際に、このような多くの受信ワードを復号化することが可能であることを示した。
【０１０９】
たとえば、本発明の復号器を（Ｎ＝２５５，ｋ＝１２７，ｄ＝２１）、ＥＧ（ｍ＝４，ｓ＝２，ｖ＝１）コードに対して実施した。関連するユークリッド幾何学ＥＧ（ｍ＝４，ｑ＝４）は、２５５個の非ゼロ点、およびゼロ点を含まずそれぞれ１６個の点を含む５３５５個の２フラットを有する。５３５５行および２５５列を有する、コードを表すパリティチェック行列を構築する。
【０１１０】
このコードの限界距離復号化半径はｔ＝１０であり、これは、受信ワードが１０ビットよりも多くの反転を有する場合、従来技術による多数決論理復号器が復号化に失敗することを意味する。本発明の復号器は、かなりの頻度で、このような受信ワードの首尾良い復号化に成功した。たとえば、１６ビット反転を有する送信ワードを破損した場合、本発明では、およそ０．００００１のみのワード復号化誤り率を有する。１８ビット反転を有する送信ワードを破損した場合、ワード復号化誤り率はおよそ０．０００１５のみである。２０ビット反転を有する送信ワードを破損した場合、ワード復号化誤り率はおよそ０．０００８のみである。２２ビット反転を有する送信ワードを破損した場合、ワード復号化誤り率はおよそ０．００４である。
【０１１１】
これらパフォーマンス結果は、本発明の復号器が、限界距離復号器を使用する同等のＢＣＨコードよりも性能が優れていることを示している。たとえば、同等のＢＣＨコードのパラメータは、（Ｎ＝２５５，ｋ＝１２３，ｄ＝３９）である。このコードは、本発明のコードよりもわずかに悪い誤り率を有し、限界距離復号化半径は１９のみである。
【０１１２】
ＢＣＨコード用の従来技術による代数限界距離復号器が使用される場合、受信ワードが１９よりも多いビット反転を有するときの復号器の失敗率は、１００％である。驚くべきことに、受信ワードが２２ビット反転も有するときの本発明の復号器の失敗率は、たった０．００４％である。これらは驚くべき結果である。
【０１１３】
これら予想せぬ結果は、このブロック長およびレートのコードに対して、ＢＣＨコード用の代数限界距離復号器に報告されている最良のパフォーマンスは、これまで、２元対称通信路での復号化に与えられてきたため、有意である。
【０１１４】
（Ｎ＝５１１，ｋ＝２５６，ｄ＝３１）Ｒｅｅｄ−Ｍｕｌｌｅｒコードを含め、有限幾何学に基づいた他のコードに対しても同様の実験結果を得ている。
【０１１５】
本発明について好ましい実施の形態の例として説明したが、他の各種適合および変更を本発明の精神および範囲内で行い得ることを理解されたい。したがって、添付の特許請求の範囲の目的は、本発明の真の精神および範囲にあるこのような変形および変更をすべてカバーすることにある。
【図面の簡単な説明】
【０１１６】
【図１】本発明による初期化手順の流れ図である。
【図２】本発明による復号化手順の流れ図である。
【図３】再開を有する復号化手順の流れ図である。
【図１】
0004651990.tif 000008
【図２】
0004651990.tif 000009
【図３】
0004651990.tif 000010