在用于解码Reed-Solomon码的Welch-Berlekamp算法中,给出了一个点列表,该点表示未知位置b i上有错误的消息(并且将e赋给该算法)。输出是通过所有给定点(发生错误的点除外)的多项式。
该方法涉及求解形式为的线性方程组
所有这里有度和具有至多度。变量是和的系数。
为了确保具有度通常会在上述线性系统中加上的系数为1 的约束。但是,实际上并不一定知道。一个低效的(但仍多项式时间)的方式来解决这个问题是尝试所有值开始,直到找到一个解下去。
我的问题是:确定方法是否更有效?或者,是否对线性系统进行了修改,以允许使用的上限而不是精确值?
特别是我想将此特定的解码器用于Reed-Solomon码,而不是基于其他技术的完全不同的算法。
为了回应DW的回答,这是我的工作示例。一切都以7为模。
plain message is: [2, 3, 2]
polynomial is: 2 + 3 t^1 + 2 t^2
encoded message is: [[0, 2], [1, 0], [2, 2], [3, 1], [4, 4]]
corrupted message is: [[0, 2], [1, 0], [2, 3], [3, 1], [4, 4]]
因此,错误在于第三点。
当的多项式方程为
和堵塞在给出了在矩阵形式的系统:
[2, 0, 0, 6, 0, 0, 0, 0, 0]
[0, 0, 0, 6, 6, 6, 6, 6, 0]
[3, 6, 5, 6, 5, 3, 6, 5, 0]
[1, 3, 2, 6, 4, 5, 1, 3, 0]
[4, 2, 1, 6, 3, 5, 6, 3, 0]
[0, 0, 1, 0, 0, 0, 0, 0, 1]
最后一行是的约束。应用高斯消去,我们得到
[1, 0, 0, 0, 0, 0, 1, 4, 0]
[0, 1, 0, 0, 0, 0, 3, 3, 1]
[0, 0, 1, 0, 0, 0, 0, 0, 1]
[0, 0, 0, 1, 0, 0, 2, 1, 0]
[0, 0, 0, 0, 1, 0, 2, 2, 5]
[0, 0, 0, 0, 0, 1, 4, 5, 2]
并为两个自由变量选择1,我们得到一个解向量
[2, 2, 1, 4, 1, 0, 1, 1]
转化为
E is 2 + 2 t^1 + 1 t^2
Q is 4 + 1 t^1 + 0 t^2 + 1 t^3 + 1 t^4
而不分Q。注意Q因子为
对于我得到了一个很好的解决方案:
system is:
[2, 0, 6, 0, 0, 0, 0]
[0, 0, 6, 6, 6, 6, 0]
[3, 6, 6, 5, 3, 6, 0]
[1, 3, 6, 4, 5, 1, 0]
[4, 2, 6, 3, 5, 6, 0]
[0, 1, 0, 0, 0, 0, 1]
reduced system is:
[1, 0, 0, 0, 0, 0, 5]
[0, 1, 0, 0, 0, 0, 1]
[0, 0, 1, 0, 0, 0, 3]
[0, 0, 0, 1, 0, 0, 3]
[0, 0, 0, 0, 1, 0, 6]
[0, 0, 0, 0, 0, 1, 2]
solution is [5, 1, 3, 3, 6, 2]
Q is 3 + 3 t^1 + 6 t^2 + 2 t^3
E is 5 + 1 t^1
P(x) = 2 + 3 t^1 + 2 t^2 # this is correct!
r(x) = 0
请注意,虽然上面的反例是由我从头开始编写的代码生成的(基本上是我尝试的第一件事),但可以手动检查解决方案是否有效,因此即使我的代码有错误,它仍然是声明的有效反例。使用可行的。