伯利坎普-韦尔奇算法 (英語:Berlekamp-Welch algorithm )是一種用於高效地解碼BCH碼 與里德-所羅門碼 的演算法 ,其名取自埃尔温·伯利坎普 與勞埃德·韋爾奇 。伯利坎普-韦尔奇算法的優點在於這一演算法僅需利用矩陣 運算。[ 1] [ 2] 這一演算法的時間複雜度 為
O
(
N
3
)
{\displaystyle O(N^{3})}
。[ 3]
伯利坎普-韦尔奇算法通常被用於解碼里德-所羅門碼 。假使在有限體
G
F
(
q
)
{\displaystyle GF(q)}
上有
n
{\displaystyle n}
個數字
m
1
,
…
,
m
n
{\displaystyle m_{1},\dots ,m_{n}}
,利用RS碼編為
n
−
1
{\displaystyle n-1}
次多項式
P
(
i
)
=
m
i
{\displaystyle P(i)=m_{i}}
。如果已知傳輸信道會錯誤傳輸
k
{\displaystyle k}
個值,那麼RS碼可以傳輸
P
(
i
)
{\displaystyle P(i)}
上的
n
+
2
k
{\displaystyle n+2k}
個點
(
i
,
P
(
i
)
)
{\displaystyle (i,P(i))}
。因此,解碼者的問題在於要辨認出哪
k
{\displaystyle k}
個點是錯誤的。令解碼者接收到的點值為
R
(
i
)
{\displaystyle R(i)}
,可以看出對於且僅對於所有正確傳輸的點
i
{\displaystyle i}
,
P
(
i
)
=
R
(
i
)
{\displaystyle P(i)=R(i)}
。
伯利坎普-韦尔奇算法引入了錯誤辨認多項式的概念,也即多項式
E
(
i
)
=
(
i
−
e
1
)
(
i
−
e
2
)
…
(
i
−
e
k
)
{\displaystyle E(i)=(i-e_{1})(i-e_{2})\dots (i-e_{k})}
,其中
e
{\displaystyle e}
的值為所有
k
{\displaystyle k}
個錯誤傳輸的點的
i
{\displaystyle i}
值(均未知)。由於
E
(
i
)
=
0
{\displaystyle E(i)=0}
當且僅當
i
{\displaystyle i}
對應一個錯誤傳輸的點,可以看出對於所有
i
{\displaystyle i}
值,
P
(
i
)
E
(
i
)
=
R
(
i
)
E
(
i
)
{\displaystyle P(i)E(i)=R(i)E(i)}
,其中
R
(
i
)
{\displaystyle R(i)}
對於所有i均為已知常數 。令
Q
(
i
)
=
R
(
i
)
E
(
i
)
{\displaystyle Q(i)=R(i)E(i)}
,可以看出左側為一個
n
+
k
−
1
{\displaystyle n+k-1}
次的多項式,右側為一個
k
{\displaystyle k}
次的多項式,但其最高次係數 為1。因此,整個線性系統 有
n
+
2
k
{\displaystyle n+2k}
個方程式與
n
+
2
k
{\displaystyle n+2k}
個未知數,可以用線性代數 的方法解出,並可以由
P
(
i
)
=
Q
(
i
)
/
E
(
i
)
{\displaystyle P(i)=Q(i)/E(i)}
解出原始的編碼多項式並讀出編碼值
m
1
,
…
,
m
n
{\displaystyle m_{1},\dots ,m_{n}}
。
^ Berlekamp, Elwyn R. , Nonbinary BCH decoding, International Symposium on Information Theory, San Remo, Italy, 1967
^ Berlekamp, Elwyn R. , Algebraic Coding Theory Revised, Laguna Hills, CA: Aegean Park Press, 1984 [1968], ISBN 0894120638 . Previous publisher McGraw–Hill, New York, NY.
^ Highly resilient correctors for polynomials – Peter Gemmel and Madhu Sudan's Exposition. (PDF) . [2011-12-31 ] . (原始内容存档 (PDF) 于2016-10-24).