Sudan's list decoder for Reed–Solomon codes #
Let w : ι → F be a received word and let α be distinct evaluation points. Sudan's algorithm
[Sud97], [GRS19] lists the polynomials P of degree less than k whose
values agree with w at more than D points, for a parameter D. It interpolates: it finds a
nonzero bivariate polynomial Q(X, Y) of (1, k - 1)-weighted degree at most D, that is with
a + (k - 1) * b ≤ D for each of its monomials X ^ a * Y ^ b, that vanishes at the n points
(α i, w i) (Cslib.Code.Sudan.IsInterpolant). Such a Q is a nonzero solution of n linear
equations in its coefficients, so it exists as soon as there are more than n monomials of
weighted degree at most D (Cslib.Code.Sudan.exists_isInterpolant); for k ≥ 2 there are at
least (D + 1) * (D + 2) / (2 * (k - 1)) of them
(Cslib.Code.Sudan.add_one_mul_add_two_le_two_mul_mul_card_monomials). If P has degree less
than k, then Q(X, P(X)) has degree at most D and vanishes at every point where P agrees
with w; when there are more than D of them it is zero, so Y - P(X) divides Q(X, Y)
(Cslib.Code.Sudan.IsInterpolant.X_sub_C_dvd): P is a root of Q viewed as a polynomial in Y
over F[X]. The number of such roots is at most the Y-degree of Q, which is at most
D / (k - 1) for k ≥ 2.
The decoder Cslib.Code.sudan returns the roots P of an interpolant Q that have degree less
than k and agree with w at more than D points. With distinct points and more than n
monomials, its list consists of exactly those polynomials (Cslib.Code.mem_sudan_iff), and its
length L always satisfies L * (k - 1) ≤ D (Cslib.Code.card_sudan_mul_le). For k ≥ 2 and
2 * (k - 1) * n < (D + 1) * (D + 2), this list decodes the Reed–Solomon code of dimension k
from agreement D + 1 ≈ √(2 * (k - 1) * n) (Cslib.Code.mem_sudan_iff_of_lt), and at most
D / (k - 1) codewords have that agreement with any word
(Cslib.Code.ncard_sep_reedSolomon_mul_le). Unique decoding needs agreement (n + k) / 2, so this
goes beyond half the minimum distance when the rate k / n is small: asymptotically, below
3 - 2 * √2 ≈ 0.17.
This module proves the correctness of the decoder only: Cslib.Code.sudan chooses an interpolant
noncomputably and takes its roots, which in the literature are found by solving a linear system and
factoring bivariate polynomials in polynomial time; no running time is formalized.
Main definitions #
Cslib.Code.Sudan.monomials: the monomials of bounded weighted degree.Cslib.Code.Sudan.bivariateOf: the bivariate polynomial with given coefficients on a set of monomials.Cslib.Code.Sudan.IsInterpolant: the bivariate interpolants of a received word.Cslib.Code.sudan: Sudan's list decoder.
Main results #
Cslib.Code.Sudan.exists_isInterpolant: interpolants exist when there are more thannmonomials.Cslib.Code.Sudan.add_one_mul_add_two_le_two_mul_mul_card_monomials: counting the monomials.Cslib.Code.Sudan.IsInterpolant.eval_eq_zero,Cslib.Code.Sudan.IsInterpolant.X_sub_C_dvd: root containment, the polynomials with large agreement are roots of every interpolant.Cslib.Code.Sudan.IsInterpolant.natDegree_mul_sub_one_le: theY-degree of an interpolant.Cslib.Code.mem_sudan_iff,Cslib.Code.mem_sudan_iff_of_lt: the decoder lists exactly the polynomials with large agreement.Cslib.Code.card_sudan_mul_le: the decoder lists at mostD / (k - 1)polynomials.Cslib.Code.exists_mem_sudan_of_mem_reedSolomon: list decoding of Reed–Solomon codes.Cslib.Code.ncard_sep_reedSolomon_mul_le: few Reed–Solomon codewords have large agreement with a word.
References #
- M. Sudan, Decoding of Reed Solomon codes beyond the error-correction bound
- [V. Guruswami, A. Rudra, M. Sudan, Essential Coding Theory] [GRS19]
Counting monomials. For w ≥ 1 there are at least (D + 1) * (D + 2) / (2 * w) monomials
of (1, w)-weighted degree at most D: for each j ≤ D there are j / w + 1 ≥ (j + 1) / w of
weighted degree exactly j.
Q is a Sudan interpolant for the received word w with evaluation points α, dimension
k and weighted degree D: a nonzero bivariate polynomial of (1, k - 1)-weighted degree at most
D that vanishes at the points (α i, w i).
The interpolant is nonzero.
Every monomial
X ^ a * Y ^ bofQhas(1, k - 1)-weighted degreea + (k - 1) * bat mostD.The interpolant vanishes at the points
(α i, w i).
Instances For
The bivariate polynomial with coefficient c m at X ^ m.1 * Y ^ m.2 for m ∈ M.
Instances For
Evaluating Q(X, P(X)) at x evaluates Q at (x, P(x)).
Substituting Y = P(X), with P of degree at most d, into a bivariate polynomial whose
monomials have (1, d)-weighted degree at most E gives a polynomial of degree at most E.
The Y-degree of a Sudan interpolant: deg_Y Q * (k - 1) ≤ D.
Interpolation. If there are more than n monomials of (1, k - 1)-weighted degree at most
D, every received word has a Sudan interpolant: the n conditions Q (α i, w i) = 0 are linear
in the coefficients of Q.
Root containment. With distinct points, if P has degree less than k and agrees with the
received word at more than D points, then Q(X, P(X)) = 0 for every Sudan interpolant Q.
Root containment. With distinct points, if P has degree less than k and agrees with the
received word at more than D points, then Y - P(X) divides every Sudan interpolant
Q(X, Y).
With distinct points, a polynomial of degree less than k that agrees with the received word
at more than D points is a root of every Sudan interpolant, as a polynomial in Y.
Sudan's list decoder for dimension k and weighted degree D with evaluation points α: the
roots P of a Sudan interpolant Q for the received word w, as a polynomial in Y, that have
degree less than k and agree with w at more than D points; the empty list when there is no
interpolant. The interpolant is chosen noncomputably; this definition makes no claim about how it
or its roots are found.
Instances For
Every polynomial listed by Sudan's decoder has degree less than k and agrees with the
received word at more than D points.
Sudan's list decoder lists the polynomials with large agreement. With distinct points, if
there are more than n monomials of (1, k - 1)-weighted degree at most D, Sudan's decoder lists
exactly the polynomials of degree less than k that agree with the received word at more than D
points.
Sudan's list decoding of Reed–Solomon codes [Sud97]. With distinct points, k ≥ 2 and
2 * (k - 1) * n < (D + 1) * (D + 2), Sudan's decoder lists exactly the polynomials of degree less
than k that agree with the received word at more than D points; by card_sudan_mul_le there are
at most D / (k - 1) of them.
List decoding of Reed–Solomon codes. With distinct points, k ≥ 2 and
2 * (k - 1) * n < (D + 1) * (D + 2), every codeword of the Reed–Solomon code of dimension k
that agrees with the received word at more than D points is the list of values of a polynomial
listed by Sudan's decoder.
List size for Reed–Solomon codes. With distinct points, k ≥ 2 and
2 * (k - 1) * n < (D + 1) * (D + 2), the number L of codewords of the Reed–Solomon code of
dimension k that agree with a word at more than D points satisfies L * (k - 1) ≤ D.