<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Chien_search</id>
	<title>Chien search - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://en.zaoniao.it/index.php?action=history&amp;feed=atom&amp;title=Chien_search"/>
	<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Chien_search&amp;action=history"/>
	<updated>2026-05-15T08:20:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>http://en.zaoniao.it/index.php?title=Chien_search&amp;diff=3928&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;In abstract algebra, the '''Chien search''', named after Robert Tienwen Chien, is a fast algorithm for determining roots of polynomials defi...&quot;</title>
		<link rel="alternate" type="text/html" href="http://en.zaoniao.it/index.php?title=Chien_search&amp;diff=3928&amp;oldid=prev"/>
		<updated>2019-04-29T07:10:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;In &lt;a href=&quot;/index.php?title=Abstract_algebra&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Abstract algebra (page does not exist)&quot;&gt;abstract algebra&lt;/a&gt;, the &amp;#039;&amp;#039;&amp;#039;Chien search&amp;#039;&amp;#039;&amp;#039;, named after &lt;a href=&quot;/index.php?title=Robert_Tienwen_Chien&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Robert Tienwen Chien (page does not exist)&quot;&gt;Robert Tienwen Chien&lt;/a&gt;, is a fast algorithm for determining &lt;a href=&quot;/index.php?title=Root_of_a_function&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Root of a function (page does not exist)&quot;&gt;roots&lt;/a&gt; of &lt;a href=&quot;/index.php?title=Polynomial&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Polynomial (page does not exist)&quot;&gt;polynomials&lt;/a&gt; defi...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In [[abstract algebra]], the '''Chien search''', named after [[Robert Tienwen Chien]], is a fast algorithm for determining [[Root of a function|root]]s of [[polynomial]]s defined over a [[finite field]]. Chien search is commonly used to find the roots of error-locator polynomials encountered in decoding [[Reed-Solomon code]]s and [[BCH code]]s.&lt;br /&gt;
&lt;br /&gt;
==Algorithm==&lt;br /&gt;
The problem is to find the roots of the polynomial (over the finite field ):&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ \Lambda(x) = \lambda_0 + \lambda_1 x + \lambda_2 x^2 + \cdots + \lambda_t x^t &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The roots may be found using brute force: there are a finite number of , so the polynomial can be evaluated for each element . If the polynomial evaluates to zero, then that element is a root.&lt;br /&gt;
&lt;br /&gt;
For the trivial case , only the coefficient need be tested for zero. Below, the only concern will be for non-zero .&amp;lt;!-- Error location poly has only nonzero roots: &amp;amp;alpha;&amp;lt;sup&amp;gt;i&amp;lt;/sup&amp;gt;, so decoder is not interested in the x=0 case. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A straightforward evaluation of the polynomial involves general multiplications and additions. A more efficient scheme would use [[Horner's method]] for general multiplications and additions. Both of these approaches may evaluate the elements of the finite field in any order.&lt;br /&gt;
&lt;br /&gt;
Chien search improves upon the above by selecting a specific order for the non-zero elements. In particular, the finite field has a (constant) generator element . Chien tests the elements in the generator's order . Consequently, Chien search needs only multiplications by constants and additions. The multiplications by constants are less complex than general multiplications.&amp;lt;!-- There's more cleverness here; the polynomial is not known at compile time but alpha is known. Multiply by alpha is trivial. Constant multiplies may simplify with cancellation. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Chien search is based on two observations:&lt;br /&gt;
&lt;br /&gt;
* Each non-zero &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; may be expressed as &amp;lt;math&amp;gt;\alpha^{i_\beta}&amp;lt;/math&amp;gt; for some &amp;lt;math&amp;gt;i_\beta&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; is a [[primitive element (finite field)|primitive element]] of &amp;lt;math&amp;gt;\mathrm{GF}(q)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;i_\beta&amp;lt;/math&amp;gt; is the power number of primitive element &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;. Thus the powers &amp;lt;math&amp;gt;\alpha^i&amp;lt;/math&amp;gt; for &amp;lt;math&amp;gt;0 \leq i &amp;lt; (q-1)&amp;lt;/math&amp;gt; cover the entire field (excluding the zero element).&lt;br /&gt;
* The following relationship exists:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{lllllllllll}&lt;br /&gt;
 \Lambda(\alpha^i) &amp;amp;=&amp;amp; \lambda_0 &amp;amp;+&amp;amp; \lambda_1 (\alpha^i) &amp;amp;+&amp;amp; \lambda_2 (\alpha^i)^2 &amp;amp;+&amp;amp; \cdots &amp;amp;+&amp;amp; \lambda_t (\alpha^i)^t \\&lt;br /&gt;
 &amp;amp;\triangleq&amp;amp; \gamma_{0,i} &amp;amp;+&amp;amp; \gamma_{1,i} &amp;amp;+&amp;amp; \gamma_{2,i} &amp;amp;+&amp;amp; \cdots &amp;amp;+&amp;amp; \gamma_{t,i} \\&lt;br /&gt;
 \Lambda(\alpha^{i+1}) &amp;amp;=&amp;amp; \lambda_0 &amp;amp;+&amp;amp; \lambda_1 (\alpha^{i+1}) &amp;amp;+&amp;amp; \lambda_2 (\alpha^{i+1})^2 &amp;amp;+&amp;amp; \cdots &amp;amp;+&amp;amp; \lambda_t (\alpha^{i+1})^t \\&lt;br /&gt;
 &amp;amp;=&amp;amp; \lambda_0 &amp;amp;+&amp;amp; \lambda_1 (\alpha^i)\,\alpha &amp;amp;+&amp;amp; \lambda_2 (\alpha^i)^2\,\alpha^2 &amp;amp;+&amp;amp; \cdots &amp;amp;+&amp;amp; \lambda_t (\alpha^i)^t\,\alpha^t \\&lt;br /&gt;
 &amp;amp;=&amp;amp; \gamma_{0,i} &amp;amp;+&amp;amp; \gamma_{1,i}\,\alpha &amp;amp;+&amp;amp; \gamma_{2,i}\,\alpha^2 &amp;amp;+&amp;amp; \cdots &amp;amp;+&amp;amp; \gamma_{t,i}\,\alpha^t \\&lt;br /&gt;
 &amp;amp;\triangleq&amp;amp; \gamma_{0,i+1} &amp;amp;+&amp;amp; \gamma_{1,i+1} &amp;amp;+&amp;amp; \gamma_{2,i+1} &amp;amp;+&amp;amp; \cdots &amp;amp;+&amp;amp; \gamma_{t,i+1}&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In other words, we may define each &amp;lt;math&amp;gt;\Lambda(\alpha^i)&amp;lt;/math&amp;gt; as the sum of a set of terms &amp;lt;math&amp;gt;\{\gamma_{j,i} | 0\leq j \leq t\}&amp;lt;/math&amp;gt;, from which the next set of coefficients may be derived thus:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ \gamma_{j,i+1} = \gamma_{j,i}\,\alpha^j&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this way, we may start at &amp;lt;math&amp;gt;i = 0&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\gamma_{j,0} = \lambda_j&amp;lt;/math&amp;gt;, and iterate through each value of &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; up to &amp;lt;math&amp;gt;(q-1)&amp;lt;/math&amp;gt;. If at any stage the resultant summation is zero, i.e.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\ \sum_{j=0}^t \gamma_{j,i} = 0,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then &amp;lt;math&amp;gt;\Lambda(\alpha^i) = 0&amp;lt;/math&amp;gt; also, so &amp;lt;math&amp;gt;\alpha^i&amp;lt;/math&amp;gt; is a root. In this way, we check every element in the field.&lt;br /&gt;
&lt;br /&gt;
When implemented in hardware, this approach significantly reduces the complexity, as all multiplications consist of one variable and one constant, rather than two variables as in the brute-force approach.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
&lt;br /&gt;
[http://wikipedia.org/ http://wikipedia.org/]&lt;br /&gt;
&lt;br /&gt;
[[Category:Error-detecting codes]]&lt;br /&gt;
==See Also on BitcoinWiki==&lt;br /&gt;
* [[Customizable Basic Income]]&lt;br /&gt;
* [[Validate (McAfee)]]&lt;br /&gt;
* [[EUCX]]&lt;br /&gt;
* [[The DAO Refunds]]&lt;br /&gt;
* [[Ethereum Wallet Syncing Problems]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>