<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Spring_system</id>
	<title>Spring system - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/index.php?action=history&amp;feed=atom&amp;title=Spring_system"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Spring_system&amp;action=history"/>
	<updated>2026-04-09T21:47:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0-wmf.28</generator>
	<entry>
		<id>https://en.formulasearchengine.com/index.php?title=Spring_system&amp;diff=26665&amp;oldid=prev</id>
		<title>en&gt;Ttime570: /* Simple example */ rm empty section of dubious value</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/index.php?title=Spring_system&amp;diff=26665&amp;oldid=prev"/>
		<updated>2011-10-21T15:35:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Simple example: &lt;/span&gt; rm empty section of dubious value&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The &amp;#039;&amp;#039;&amp;#039;Berlekamp–Welch algorithm&amp;#039;&amp;#039;&amp;#039;, also known as the &amp;#039;&amp;#039;&amp;#039;Welch–Berlekamp algorithm&amp;#039;&amp;#039;&amp;#039;, is named for [[Elwyn R. Berlekamp]] and [[Lloyd R. Welch]].  The algorithm efficiently corrects errors in [[BCH code]]s and [[Reed–Solomon error correction|Reed–Solomon codes]] (which are a subset of BCH codes). Unlike many other decoding algorithms, and in correspondence with the code-domain [[Berlekamp–Massey algorithm]] that uses [[Decoding methods#Syndrome_decoding|syndrome decoding]] and the dual of the codes, the Berlekamp–Welch decoding algorithm provides a method for decoding Reed–Solomon codes using just the generator matrix and not syndromes.&lt;br /&gt;
&lt;br /&gt;
==History on decoding Reed–Solomon codes==&lt;br /&gt;
&lt;br /&gt;
#      In 1960, Peterson came up with an algorithm for decoding [[BCH codes]].&amp;lt;ref&amp;gt;{{Citation&lt;br /&gt;
 |last= Berlekamp&lt;br /&gt;
 |first= Elwyn R.&lt;br /&gt;
 |authorlink= Elwyn Berlekamp&lt;br /&gt;
 |title= Nonbinary BCH decoding&lt;br /&gt;
 |year= 1967&lt;br /&gt;
 |series= International Symposium on Information Theory&lt;br /&gt;
 |place= San Remo, Italy}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Citation&lt;br /&gt;
 |last= Berlekamp&lt;br /&gt;
 |first= Elwyn R.&lt;br /&gt;
 |authorlink= Elwyn Berlekamp&lt;br /&gt;
 |title=Algebraic Coding Theory&lt;br /&gt;
 |place=Laguna Hills, CA&lt;br /&gt;
 |origyear=1968&lt;br /&gt;
 |year=1984&lt;br /&gt;
 |ed= Revised&lt;br /&gt;
 |publisher=Aegean Park Press&lt;br /&gt;
 |isbn= 0-89412-063-8}}. Previous publisher McGraw–Hill, New York, NY.&amp;lt;/ref&amp;gt; His algorithm solves the important second stage of the generalized BCH decoding procedure and is used to calculate the error locator polynomial coefficients that in turn provide the error locator polynomial. This is crucial to the decoding of BCH codes.&lt;br /&gt;
#	In 1963, Gorenstein–Zierler saw that BCH codes and [[Reed–Solomon error correction|Reed–Solomon codes]] have a common generalization and that the decoding algorithm extends to more general situation.&lt;br /&gt;
#	In 1968 / 69, [[Elwyn Berlekamp]] invented an algorithm for decoding BCH codes.  [[James Massey]] recognized its application to linear feedback shift registers and simplified the algorithm.&amp;lt;ref&amp;gt;{{Citation&lt;br /&gt;
 |first= J. L.&lt;br /&gt;
 |last= Massey&lt;br /&gt;
 |authorlink= James Massey&lt;br /&gt;
 |title= Shift-register synthesis and BCH decoding&lt;br /&gt;
 |journal= IEEE Trans. Information Theory&lt;br /&gt;
 |volume= IT-15&lt;br /&gt;
 |issue= 1&lt;br /&gt;
 |year= 1969&lt;br /&gt;
 |pages= 122&amp;amp;ndash;127&lt;br /&gt;
 |url= http://crypto.stanford.edu/~mironov/cs359/massey.pdf}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Citation&lt;br /&gt;
 |last= Ben Atti&lt;br /&gt;
 |first= Nadia&lt;br /&gt;
 |last2= Diaz-Toca&lt;br /&gt;
 |first2= Gema M.&lt;br /&gt;
 |last3= Lombardi&lt;br /&gt;
 |first3= Henri&lt;br /&gt;
 |title= The Berlekamp&amp;amp;ndash;Massey Algorithm revisited&lt;br /&gt;
 |id= {{citeseerx|10.1.1.96.2743}}&lt;br /&gt;
 |doi= }}&amp;lt;/ref&amp;gt;  Massey termed the algorithm the LFSR Synthesis Algorithm (Berlekamp Iterative Algorithm) but it is now known as the [[Berlekamp–Massey algorithm]]. &lt;br /&gt;
#	In 1986, The Welch–Berlekamp algorithm was developed to solve the decoding equation of [[Reed–Solomon error correction|Reed–Solomon codes]], using a fast method to solve a certain polynomial equation. The Berlekamp – Welch algorithm has a running time complexity of &amp;lt;math&amp;gt;\mathcal{O}(N^3)&amp;lt;/math&amp;gt;. We will in the following sections look at the Gemmel and Sudan’s exposition of the Berlekamp Welch Algorithm.&amp;lt;ref&amp;gt;[http://people.csail.mit.edu/madhu/papers/1992/gemmell.pdf Highly resilient correctors for polynomials – Peter Gemmel and Madhu  Sudan&amp;#039;s Exposition.]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Error locator polynomial of Reed–Solomon codes==&lt;br /&gt;
&lt;br /&gt;
In the problem of decoding Reed–Solomon codes, the inputs are pair wise distinct evaluation points &amp;lt;math&amp;gt;\alpha_i&amp;lt;/math&amp;gt;’s (&amp;#039;&amp;#039;i&amp;#039;&amp;#039; = 1, . . ., &amp;#039;&amp;#039;n&amp;#039;&amp;#039;) where &amp;lt;math&amp;gt;\alpha_i \in \mathbb{F}&amp;lt;/math&amp;gt; with [[Block code#Definitions|dimension]] &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; and [[Minimum distance|distance]] &amp;lt;math&amp;gt;D = N - K + 1 &amp;lt;/math&amp;gt; and a codeword &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;(y_1, \ldots , y_n) \in \mathbb{F}_n&amp;lt;/math&amp;gt;. Our goal is to describe an algorithm that can correct &amp;lt;math&amp;gt;e &amp;lt; {N -K+1 \over 2}&amp;lt;/math&amp;gt; many errors in polynomial time. To do so we have to find a polynomial &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; over &amp;lt;math&amp;gt;\mathbb{F}&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; has degree less than &amp;lt;math&amp;gt;k - 1&amp;lt;/math&amp;gt; and (the number of &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;’s such that &amp;lt;math&amp;gt;P(\alpha_i) \ne y_i \le e&amp;lt;/math&amp;gt;. We can assume that there exists a polynomial &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;\Delta(y, (P (\alpha_i))^N _{i=1})&amp;lt;/math&amp;gt; ≤ &amp;lt;math&amp;gt; e \le {D \over 2}&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;{N - K + 1 \over 2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that the coefficients of &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; are the encoded information. To solve this, we use an indicator for those &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;’s where an error may have occurred. Thus we define &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt;, which is an error locator polynomial over &amp;lt;math&amp;gt;\mathbb{F}&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;E(\alpha_i)= 0&amp;lt;/math&amp;gt; if &amp;lt;math&amp;gt;y_i \ne P(\alpha_i)&amp;lt;/math&amp;gt; and the degree of &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; can be given by: &amp;lt;math&amp;gt;E \le {n - k \over 2}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;E(X) = \prod_{\alpha_i \in S} (X - \alpha_i)&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;S = \{\alpha_i | P(\alpha_i) \ne y_i\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can also claim that for every &amp;lt;math&amp;gt;1 \le i \le N&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y_i E(\alpha_i) = P(\alpha_i) E(\alpha_i)&amp;lt;/math&amp;gt;. This fact holds true because in the event of &amp;lt;math&amp;gt;y_i \ne P(\alpha_i)&amp;lt;/math&amp;gt;, both sides of the above equation become &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt; because &amp;lt;math&amp;gt;E(\alpha_i) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
However since both &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; are unknown, the main task of the decoding algorithm would be to find &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt;. To do this we use a seemingly useless yet very powerful method and define another polynomial &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; as &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;P(X)E(X)&amp;lt;/math&amp;gt;. This is because the &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equations with &amp;lt;math&amp;gt;e + k&amp;lt;/math&amp;gt; we need to solve are quadratic in nature. Thus by defining a product of two variables that gives rise to a quadratic term as one unknown variable, we increase the number of unknowns but make the equations linear in nature. This method is called linearization&amp;lt;ref&amp;gt;[http://rjlipton.wordpress.com/2010/12/13/making-a-heuristic-into-a-theorem/ A provable example of the linearization method – Dick Lipton]&amp;lt;/ref&amp;gt; and is a very powerful tool.&lt;br /&gt;
&lt;br /&gt;
Thus &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; is a polynomial over &amp;lt;math&amp;gt;\mathbb{F}&amp;lt;/math&amp;gt; having the properties:&lt;br /&gt;
#	&amp;lt;math&amp;gt;\deg(Q) \le {{n - k \over 2} + k - 1}&amp;lt;/math&amp;gt;&lt;br /&gt;
#	&amp;lt;math&amp;gt;\forall Q(\alpha_i) = E(\alpha_i)y_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This helps because if we now manage to find &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt;, we can easily find &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; using &amp;lt;math&amp;gt;P(X) = {Q(X) \over E(X)}&amp;lt;/math&amp;gt;. &lt;br /&gt;
The main purpose of the Berlekamp Welch algorithm is to find out &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; using degree bounded polynomials &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; and the properties of &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Computing &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; is as hard as ﬁnding the end solution, polynomial &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt;. Once &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; is computed, using erasure decoding for Reed–Solomon codes, we can easily recover &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt;. However in a few cases, even the polynomial &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; is as hard to ﬁnd as &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt;. As an example, given &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; (such that &amp;lt;math&amp;gt;y_i \ne 0&amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;1 \le  i \le n&amp;lt;/math&amp;gt;), by checking positions where &amp;lt;math&amp;gt;Q(i) = 0&amp;lt;/math&amp;gt;, we can ﬁnd the error locations. Thus the algorithm works on the principle that while each of the polynomials &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; are hard to ﬁnd individually; computing them together is much easier.&lt;br /&gt;
&lt;br /&gt;
==The Berlekamp–Welch decoder and algorithm==&lt;br /&gt;
&lt;br /&gt;
The Welch–Berlekamp decoder for Reed–Solomon codes consists of the Welch– Berlekamp algorithm augmented by some additional steps that prepare the received word for the algorithm and interpret the result of the algorithm.&lt;br /&gt;
&lt;br /&gt;
The inputs given to the Berlekamp Welch decoder are the integers denoting Block Length &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, the number of errors &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt; e&amp;lt;/math&amp;gt; &amp;lt; &amp;lt;math&amp;gt;{N - K + 1 \over 2}&amp;lt;/math&amp;gt;, and the received word &amp;lt;math&amp;gt;(y_i ,\alpha_i)^N _{i=1}&amp;lt;/math&amp;gt; satisfying the condition that there exists at most one &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;deg(P(X)) \le {k - 1}&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\Delta(y, {P(\alpha_i)_i}) \le e&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The output of the decoder is either the polynomial &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt;, or in some cases, a failure. This decoder functions in two steps as follows:&lt;br /&gt;
#	This step is called the interpolation step in which the decoder computes a non zero polynomial &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; of degree e and another polynomial &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\deg(Q(X)) \le {e + K - 1}&amp;lt;/math&amp;gt;. These polynomials are created such that the condition &amp;lt;math&amp;gt;y_i E(\alpha_i) = Q(\alpha_i)&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;1 \le i \le n&amp;lt;/math&amp;gt;. In the case that polynomials satisfying the above condition cannot be computed, the output of the decoder would be a failure.&lt;br /&gt;
#	If &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; divides &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt;, then a &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;’&amp;lt;math&amp;gt;(X)&amp;lt;/math&amp;gt; is defined which equals &amp;lt;math&amp;gt;Q(X) \over E(X)&amp;lt;/math&amp;gt;. If &amp;lt;math&amp;gt;\Delta((y, (P&amp;lt;/math&amp;gt;’&amp;lt;math&amp;gt;(\alpha_i)_i ) \le e)&amp;lt;/math&amp;gt;, then the decoder outputs &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;’&amp;lt;math&amp;gt;(X)&amp;lt;/math&amp;gt;. If the above condition is not satisfied, i.e. if &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; does not divide &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt;then a failure is returned by the decoder.&lt;br /&gt;
&lt;br /&gt;
According to the algorithm, in the cases where it does not output a failure, it outputs a &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; that is the correct and desired polynomial. To prove that, the algorithm always outputs the desired polynomial, we need to prove a few claims we have made while describing the algorithm. Let us go ahead and do so now.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Claim 1: There exist a pair of polynomials &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; that satisfy Step 1 of the BW algorithm such that &amp;lt;math&amp;gt;{Q(X) \over E(X)} = P (X)&amp;lt;/math&amp;gt;.&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Let &amp;#039;&amp;#039;E&amp;#039;&amp;#039;(&amp;#039;&amp;#039;x&amp;#039;&amp;#039;) be the error-locating polynomial for &amp;lt;math&amp;gt;P (X)&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;E(X) = X^{e - \Delta(y, P(\alpha_i)_i)} \prod_{1\le i \le n| y_i \ne P(\alpha_i)} (X - \alpha_i)&amp;lt;/math&amp;gt;and let &amp;lt;math&amp;gt;Q(X) = P (X)E(X)&amp;lt;/math&amp;gt;. Note that &amp;lt;math&amp;gt;deg(Q(X)) \le {deg(P (X)) + deg(E(X))} \le {e + k - 1}&amp;lt;/math&amp;gt;. We also stated that &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; is a polynomial of degree exactly &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;. Note that &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; is a polynomial following the property that &amp;lt;math&amp;gt;E(\alpha_i) = 0&amp;lt;/math&amp;gt; if and only if &amp;lt;math&amp;gt;y_i \ne P(\alpha_i)&amp;lt;/math&amp;gt;.We can now state that &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; satisfy the equation &amp;lt;math&amp;gt;y_i E(\alpha_i) = Q(\alpha_i)&amp;lt;/math&amp;gt; from the first step of the BW algorithm. If &amp;lt;math&amp;gt;E(\alpha_i) = 0&amp;lt;/math&amp;gt;, then &amp;lt;math&amp;gt;Q(\alpha_i) = P(\alpha_i)E(\alpha_i) = y_iE(\alpha_i) = 0&amp;lt;/math&amp;gt;. However whenever &amp;lt;math&amp;gt;E(\alpha_i) \ne 0&amp;lt;/math&amp;gt;, we can easily state that  &amp;lt;math&amp;gt;P(\alpha_i) = y_i&amp;lt;/math&amp;gt; and therefore also state that &amp;lt;math&amp;gt;P(\alpha_i)E(\alpha_i) = y_iE(\alpha_i)&amp;lt;/math&amp;gt; just as we claimed.&lt;br /&gt;
&lt;br /&gt;
This above claim however just reiterates and proves the fact that there exists a pair of polynomials &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; = &amp;lt;math&amp;gt;Q(X) / E(X)&amp;lt;/math&amp;gt;. It however does not necessarily guarantee the fact that the algorithm we discussed above would indeed output such a pair of polynomials. We therefore move on to look at another claim that helps establish this fact using the above claim and thereby proving the correctness of the algorithm.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Claim 2: For any two distinct solutions &amp;lt;math&amp;gt;(E_1(X) , Q_1(X)) \ne (E_2(X) , Q_2(X))&amp;lt;/math&amp;gt; that satisfy the first step of the Berlekamp Welch algorithm given above, they will also satisfy the equation &amp;lt;math&amp;gt;{Q_1(X) \over E_1(X)} = {Q_2(X) \over E_2(X)}&amp;lt;/math&amp;gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The total degrees of the polynomials &amp;lt;math&amp;gt;Q_1(X)E_1(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q_2(X)E_2(X) \le {2e + k - 1}&amp;lt;/math&amp;gt;. We define another polynomial &amp;lt;math&amp;gt;R(X) = Q_1(X)E_2(X) - Q_2(X)E_1(X)&amp;lt;/math&amp;gt; ....................................(i)&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;math&amp;gt;R(X)&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;deg(R(X)) \le {2e + k - 1}&amp;lt;/math&amp;gt;. From step 1 of the Berlekamp Welch algorithm we also know that &amp;lt;math&amp;gt;y_iE_1(\alpha_i) = Q_1(\alpha_i)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;y_iE_2(\alpha_i) = Q_2(\alpha_i&amp;lt;/math&amp;gt;) ........…..........(ii)&lt;br /&gt;
&lt;br /&gt;
Now, substituting the values of &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; from equation (ii) into equation (i), we get:&lt;br /&gt;
&amp;lt;math&amp;gt;R(\alpha_i) = y_iE_1(\alpha_i)E_2(\alpha_i) - y_iE_2(\alpha_i)E_1(\alpha_i) = 0&amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;1 \le i \le n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Thus, the above polynomial &amp;lt;math&amp;gt;R(X)&amp;lt;/math&amp;gt; has &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; roots and &amp;lt;math&amp;gt;deg(R(X)) \le {2e + k - 1}&amp;lt;/math&amp;gt; which implies that &amp;lt;math&amp;gt;deg(R(X))&amp;lt;/math&amp;gt; &amp;lt; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; because of the upper bound on &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;.&lt;br /&gt;
Since &amp;lt;math&amp;gt;deg(R(X))&amp;lt;/math&amp;gt; &amp;lt; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, we can come to the conclusion that the polynomials &amp;lt;math&amp;gt;Q_1(X)E_2(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q_2(X)E_1(X)&amp;lt;/math&amp;gt; agree on more points than their degree, and hence they are identical. Note that since &amp;lt;math&amp;gt;E_1(X) \ne 0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E_2(X) \ne 0&amp;lt;/math&amp;gt;, it can be implied that &amp;lt;math&amp;gt;{Q_1(X) \over E_1(X)} = {Q_2(X) \over E_2(X)}&amp;lt;/math&amp;gt; as per our initial claim.&lt;br /&gt;
&lt;br /&gt;
Thus based on the above claims, we can safely state that the output of the Berlekamp Welch algorithm, when outputting the polynomial &amp;lt;math&amp;gt;P(X)&amp;lt;/math&amp;gt; is correct.&lt;br /&gt;
&lt;br /&gt;
We can now claim that the algorithm can be implemented such that it has a running time of &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt;. This can be proved as follows:&lt;br /&gt;
In Step 1 of the algorithm, the polynomials &amp;lt;math&amp;gt;Q(X)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; have &amp;lt;math&amp;gt;e + k&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;e + 1&amp;lt;/math&amp;gt; unknown values respectively and the constraints &amp;lt;math&amp;gt;y_i E(\alpha_i) = Q(\alpha_i)&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;1 \le i \le n&amp;lt;/math&amp;gt; acts as a linear equation with these unknowns. We therefore get a system of &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; linear equations in &amp;lt;math&amp;gt;2e + k + 1&amp;lt;/math&amp;gt; &amp;lt; &amp;lt;math&amp;gt;n + 2&amp;lt;/math&amp;gt; unknowns. Using our first claim, this system of equations has a solution since the degree of polynomial &amp;lt;math&amp;gt;E(X)&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;. This can be solved in &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt; time, by say Gaussian elimination. Finally, we can note that Step 2 of the algorithm can also be implemented in time &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt; by &amp;quot;long division&amp;quot; method. &lt;br /&gt;
Hence we can state that the Berlekamp Welch algorithm can be used to uniquely decode any &amp;lt;math&amp;gt;[n,k]_q&amp;lt;/math&amp;gt; Reed–Solomon code in &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt; time for a maximum of &amp;lt;math&amp;gt;{n - k + 1} \over 2&amp;lt;/math&amp;gt; errors.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
[[File:Recovering P(x) with an Error Locator Polynomial.png|thumb|upright=1.5|The error locator polynomial serves to &amp;quot;neutralize&amp;quot; errors in P by making Q zero at those points, so that the system of linear equations is not affected by the inaccuracy in the input.]]&lt;br /&gt;
&lt;br /&gt;
Consider a simple example where a redundant set of points are used to represent the line &amp;lt;math&amp;gt;y = 5 - x&amp;lt;/math&amp;gt;, and one of the points is incorrect. The points that the algorithm gets as an input are &amp;lt;math&amp;gt;(1,4), (2,3), (3,4), (4,1)&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;(3,4)&amp;lt;/math&amp;gt; is the defective point. The algorithm must solve the following system of equations:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{alignat}{1}&lt;br /&gt;
 Q(1) &amp;amp; = 4*E(1) \\&lt;br /&gt;
 Q(2) &amp;amp; = 3*E(2) \\&lt;br /&gt;
 Q(3) &amp;amp; = 4*E(3) \\&lt;br /&gt;
 Q(4) &amp;amp; = 1*E(4) \\&lt;br /&gt;
\end{alignat}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Given a solution &amp;lt;math&amp;gt;Q&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; to this system of equations, it is evident that at any of the points &amp;lt;math&amp;gt;x = 1,2,3,4&amp;lt;/math&amp;gt; one of the following must be true: either &amp;lt;math&amp;gt;Q(x_i) = E(x_i) = 0&amp;lt;/math&amp;gt;, or &amp;lt;math&amp;gt;P(x_i) = {Q(x_i) \over E(x_i)} = y_i&amp;lt;/math&amp;gt;. Since &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is defined as only having a degree of one, the former can only be true in one point. Therefore, &amp;lt;math&amp;gt;P(x_i)&amp;lt;/math&amp;gt; must equal &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; at the three other points.&lt;br /&gt;
&lt;br /&gt;
Letting &amp;lt;math&amp;gt;E(x) = x + e_0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;Q(x) = q_0 + q_1x + q_2x^2&amp;lt;/math&amp;gt; and bringing &amp;lt;math&amp;gt;E(x)&amp;lt;/math&amp;gt; to the left, we can rewrite the system thus:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{alignat}{10}&lt;br /&gt;
q_0 &amp;amp; + &amp;amp; q_1 &amp;amp; + &amp;amp; q_2 &amp;amp; - &amp;amp; 4e_0 &amp;amp; - &amp;amp; 4 &amp;amp; = &amp;amp; 0 \\&lt;br /&gt;
q_0 &amp;amp; + &amp;amp; 2q_1 &amp;amp; + &amp;amp; 4q_2 &amp;amp; - &amp;amp; 3e_0 &amp;amp; - &amp;amp; 6 &amp;amp; = &amp;amp; 0 \\&lt;br /&gt;
q_0 &amp;amp; + &amp;amp; 3q_1 &amp;amp; + &amp;amp; 9q_2 &amp;amp; - &amp;amp; 4e_0 &amp;amp; - &amp;amp; 12 &amp;amp; = &amp;amp; 0 \\&lt;br /&gt;
q_0 &amp;amp; + &amp;amp; 4q_1 &amp;amp; + &amp;amp; 16q_2 &amp;amp; - &amp;amp; e_0 &amp;amp; - &amp;amp; 4 &amp;amp; = &amp;amp; 0&lt;br /&gt;
\end{alignat}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This system can be solved through [[Gaussian elimination]], and gives the values:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;q_0 = -15, q_1 = 8, q_2 = -1, e_0 = -3&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Thus, &amp;lt;math&amp;gt;Q(x) = -x^2 + 8x - 15, E(x) = x - 3&amp;lt;/math&amp;gt;. Dividing the two gives:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;{Q(x) \over E(x)} = P(x) = 5-x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;5-x&amp;lt;/math&amp;gt; fits three of the four points given, so it is the most likely to be the original polynomial.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[BCH code]]&lt;br /&gt;
*[[Berlekamp–Massey algorithm]]&lt;br /&gt;
*[[Reed–Solomon error correction]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;!--- See [[Wikipedia:Footnotes]] on how to create references using &amp;lt;ref&amp;gt;&amp;lt;/ref&amp;gt; tags which will then appear here automatically --&amp;gt;&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://people.csail.mit.edu/madhu/FT02/ MIT Lecture Notes on Essential Coding Theory – Dr. Madhu Sudan]&lt;br /&gt;
* [http://www.cse.buffalo.edu/~atri/courses/coding-theory/fall07.html University at Buffalo Lecture Notes on Coding Theory – Dr. Atri Rudra]&lt;br /&gt;
* Algebraic Codes on Lines, Planes and Curves, An Engineering Approach – Richard E. Blahut&lt;br /&gt;
* Welch Berlekamp Decoding of Reed–Solomon Codes – L. R. Welch&lt;br /&gt;
* {{Citation&lt;br /&gt;
 |inventor1-last= Welch&lt;br /&gt;
 |inventor1-first= Lloyd R.&lt;br /&gt;
 |inventor1link=Lloyd R. Welch&lt;br /&gt;
 |inventor2-last= Berlekamp&lt;br /&gt;
 |inventor2-first= Elwyn R.&lt;br /&gt;
 |inventor2link= Elwyn Berlekamp&lt;br /&gt;
 |title= Error Correction for Algebraic Block Codes&lt;br /&gt;
 |country-code= US&lt;br /&gt;
 |patent-number= 4,633,470&lt;br /&gt;
 |publication-date= September 27, 1983&lt;br /&gt;
 |issue-date= December 30, 1986&lt;br /&gt;
 |doi=}} – The patent by Lloyd R. Welch and Elewyn R. Berlekamp&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Berlekamp-Welch algorithm}}&lt;br /&gt;
[[Category:Finite fields]]&lt;br /&gt;
[[Category:Coding theory]]&lt;br /&gt;
[[Category:Information theory]]&lt;br /&gt;
[[Category:Error detection and correction]]&lt;/div&gt;</summary>
		<author><name>en&gt;Ttime570</name></author>
	</entry>
</feed>