We will see a (non-local) efficient decoding algorithm for Reed-Solomon codes.
Let F be the q-element field and let f:F→F be a function (a corrupted evaluation of a degree-d polynomial). The goal is to find a degree-d polynomial P∈F[x]d that agrees with f as often as possible.
Theorem: If less than (q−d)/2 positions are corrupted, we can decode P in time poly(q).
Proof:
First, suppose that there exists a degree-d polynomial P that perfectly agrees with f. How can we find such a polynomial? One way to find P is to set up the following linear system (in the coefficients of P) and solve it using Gaussian elimination, P(α1)=f(α1), … P(αq)=f(αq). (Here, α1,…,αq is an enumeration of the elements of F.)
Next, suppose that f is corrupted in τ positions. We will try to reduce to the case without errors! For sake of analysis, let E∈F[x]τ be the degree-τ polynomial that vanishes on the corrupted positions, i.e., E=∏α:f(α)≠P(α)(x−α).
Now, the polynomials N=F⋅E and E satisfy the equation N(α)=f(α)⋅E(α) for every α∈F. (We zeroed out the errors!)
Via Gaussian elimination, we can find non-zero polynomials N′∈F[x]τ+d and E′∈F[x]τ that satisfy the following linear constraints (on their coefficients), N′(α1)=f(α1)⋅E′(α1), … N′(αq)=f(αq)⋅E′(αq),
Finally, we want to show that P=N′/E′ (in that case, we can compute P easily from N′ and E′). In other words, we want to show that P⋅E′−N′ is the zero polynomial. On the one hand, the degree of this polynomial is at most τ+d. On the other hand, the polynomial has at least q−τ roots (on for each uncorrupted position of f). Hence, if q−τ>τ+d, the polynomial is indeed the zero polynomial
End of Proof.