https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Zemor%27s_decoding_algorithm Zemor's decoding algorithm - Revision history 2025-06-26T01:49:37Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.6 https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1270129748&oldid=prev Suriname0: Adding short description: "Coding theory algorithm" 2025-01-18T01:58:31Z <p>Adding <a href="/wiki/Wikipedia:Short_description" title="Wikipedia:Short description">short description</a>: &quot;Coding theory algorithm&quot;</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 01:58, 18 January 2025</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Coding theory algorithm}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;{{Cite web|url=https://www.math.u-bordeaux.fr/~gzemor/|title=Gilles Zémor|website=www.math.u-bordeaux.fr|accessdate=9 April 2023}}&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;{{Cite web|url=https://www.math.u-bordeaux.fr/~gzemor/|title=Gilles Zémor|website=www.math.u-bordeaux.fr|accessdate=9 April 2023}}&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Suriname0 https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1263612697&oldid=prev Citation bot: Altered issue. Added pages. Formatted dashes. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:Error detection and correction | #UCB_Category 112/128 2024-12-17T17:39:26Z <p>Altered issue. Added pages. Formatted <a href="/wiki/Wikipedia:ENDASH" class="mw-redirect" title="Wikipedia:ENDASH">dashes</a>. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this bot</a>. <a href="/wiki/Wikipedia:DBUG" class="mw-redirect" title="Wikipedia:DBUG">Report bugs</a>. | Suggested by Dominic3203 | <a href="/wiki/Category:Error_detection_and_correction" title="Category:Error detection and correction">Category:Error detection and correction</a> | #UCB_Category 112/128</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 17:39, 17 December 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 41:</td> <td colspan="2" class="diff-lineno">Line 41:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;{{cite journal |author1=N. Alon |author2=F.R.K. Chung |title=Explicit construction of linear sized tolerant networks |journal=[[Discrete Mathematics (journal)|Discrete Mathematics]] |date=December 1988 |volume=72 |issue=<del style="font-weight: bold; text-decoration: none;">1-3</del> |doi=10.1016/0012-365X(88)90189-6|citeseerx=10.1.1.300.7495 }}&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;{{cite journal |author1=N. Alon |author2=F.R.K. Chung |title=Explicit construction of linear sized tolerant networks |journal=[[Discrete Mathematics (journal)|Discrete Mathematics]] |date=December 1988 |volume=72 |issue=<ins style="font-weight: bold; text-decoration: none;">1–3 |pages=15–19</ins> |doi=10.1016/0012-365X(88)90189-6|citeseerx=10.1.1.300.7495 }}&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> </tr> </table> Citation bot https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1249378384&oldid=prev 1234qwer1234qwer4: fix spacing around math (via WP:JWB) 2024-10-04T16:21:50Z <p>fix spacing around math (via <a href="/wiki/Wikipedia:JWB" class="mw-redirect" title="Wikipedia:JWB">WP:JWB</a>)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 16:21, 4 October 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 54:</td> <td colspan="2" class="diff-lineno">Line 54:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The iterative decoding algorithm written below alternates between the vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; and corrects the codeword of &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;A&lt;/math&gt; and then it switches to correct the codeword &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;B&lt;/math&gt;. Here edges associated with a vertex on one side of a graph are not incident to other vertex on that side. In fact, it doesn't matter in which order, the set of nodes &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; are processed. The vertex processing can also be done in parallel.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The iterative decoding algorithm written below alternates between the vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; and corrects the codeword of &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;A&lt;/math&gt; and then it switches to correct the codeword &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;B&lt;/math&gt;. Here edges associated with a vertex on one side of a graph are not incident to other vertex on that side. In fact, it doesn't matter in which order, the set of nodes &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; are processed. The vertex processing can also be done in parallel.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The decoder &lt;math&gt;\mathbb{D}:\mathbb{F}^d \rightarrow C_o&lt;/math&gt;stands for a decoder for &lt;math&gt;C_o&lt;/math&gt; that recovers correctly with any codewords with less than &lt;math&gt;\left(\dfrac{d}{2}\right)&lt;/math&gt; errors.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The decoder &lt;math&gt;\mathbb{D}:\mathbb{F}^d \rightarrow C_o&lt;/math&gt;<ins style="font-weight: bold; text-decoration: none;"> </ins>stands for a decoder for &lt;math&gt;C_o&lt;/math&gt; that recovers correctly with any codewords with less than &lt;math&gt;\left(\dfrac{d}{2}\right)&lt;/math&gt; errors.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Decoder algorithm ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Decoder algorithm ===</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 89:</td> <td colspan="2" class="diff-lineno">Line 89:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Since the decoding algorithm is insensitive to the value of the edges and by linearity, we can assume that the transmitted codeword is the all zeros - vector. Let the received codeword be &lt;math&gt;w&lt;/math&gt;. The set of edges which has an incorrect value while decoding is considered. Here by incorrect value, we mean &lt;math&gt;1&lt;/math&gt; in any of the bits. Let &lt;math&gt;w=w^0&lt;/math&gt; be the initial value of the codeword, &lt;math&gt;w^1, w^2,\ldots, w^t&lt;/math&gt; be the values after first, second&amp;nbsp;.&amp;nbsp;.&amp;nbsp;. &lt;math&gt;t&lt;/math&gt; stages of decoding. </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Since the decoding algorithm is insensitive to the value of the edges and by linearity, we can assume that the transmitted codeword is the all zeros - vector. Let the received codeword be &lt;math&gt;w&lt;/math&gt;. The set of edges which has an incorrect value while decoding is considered. Here by incorrect value, we mean &lt;math&gt;1&lt;/math&gt; in any of the bits. Let &lt;math&gt;w=w^0&lt;/math&gt; be the initial value of the codeword, &lt;math&gt;w^1, w^2,\ldots, w^t&lt;/math&gt; be the values after first, second&amp;nbsp;.&amp;nbsp;.&amp;nbsp;. &lt;math&gt;t&lt;/math&gt; stages of decoding. </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Here, &lt;math&gt;X^i={e\in E|x_e^i =1}&lt;/math&gt;, and &lt;math&gt;S^i ={v\in V^i | E_v \cap X^{i+1} !=\emptyset}&lt;/math&gt;. Here &lt;math&gt;S^i&lt;/math&gt; corresponds to those set of vertices that was not able to successfully decode their codeword in the &lt;math&gt;i^{th}&lt;/math&gt; round. From the above algorithm &lt;math&gt;S^1 &lt;S^0 &lt;/math&gt; as number of unsuccessful vertices will be corrected in every iteration. We can prove that &lt;math&gt;S^0&gt;S^1&gt;S^2&gt;\cdots&lt;/math&gt;is a decreasing sequence.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Here, &lt;math&gt;X^i={e\in E|x_e^i =1}&lt;/math&gt;, and &lt;math&gt;S^i ={v\in V^i | E_v \cap X^{i+1} !=\emptyset}&lt;/math&gt;. Here &lt;math&gt;S^i&lt;/math&gt; corresponds to those set of vertices that was not able to successfully decode their codeword in the &lt;math&gt;i^{th}&lt;/math&gt; round. From the above algorithm &lt;math&gt;S^1 &lt;S^0 &lt;/math&gt; as number of unsuccessful vertices will be corrected in every iteration. We can prove that &lt;math&gt;S^0&gt;S^1&gt;S^2&gt;\cdots&lt;/math&gt;<ins style="font-weight: bold; text-decoration: none;"> </ins>is a decreasing sequence.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In fact, &lt;math&gt;|S_{i+1}|&lt;=(\dfrac{1}{2-\alpha})|S_i|&lt;/math&gt;. As we are assuming, &lt;math&gt;\alpha&lt;1&lt;/math&gt;, the above equation is in a [[geometric series|geometric decreasing sequence]]. </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In fact, &lt;math&gt;|S_{i+1}|&lt;=(\dfrac{1}{2-\alpha})|S_i|&lt;/math&gt;. As we are assuming, &lt;math&gt;\alpha&lt;1&lt;/math&gt;, the above equation is in a [[geometric series|geometric decreasing sequence]]. </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So, when &lt;math&gt;|S_i|&lt;n&lt;/math&gt;, more than &lt;math&gt;log_{2-\alpha} n &lt;/math&gt; rounds are necessary. Furthermore, &lt;math&gt;\sum|S_i|=n\sum(\dfrac{1}{(2-\alpha)^i})=O(n)&lt;/math&gt;, and if we implement the &lt;math&gt;i^{th}&lt;/math&gt; round in &lt;math&gt;O(|S_i|)&lt;/math&gt; time, then the total sequential running time will be linear.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So, when &lt;math&gt;|S_i|&lt;n&lt;/math&gt;, more than &lt;math&gt;log_{2-\alpha} n &lt;/math&gt; rounds are necessary. Furthermore, &lt;math&gt;\sum|S_i|=n\sum(\dfrac{1}{(2-\alpha)^i})=O(n)&lt;/math&gt;, and if we implement the &lt;math&gt;i^{th}&lt;/math&gt; round in &lt;math&gt;O(|S_i|)&lt;/math&gt; time, then the total sequential running time will be linear.</div></td> </tr> </table> 1234qwer1234qwer4 https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1246322744&oldid=prev David Eppstein: rescue deadlink and expand metadata 2024-09-18T07:09:15Z <p>rescue deadlink and expand metadata</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 07:09, 18 September 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;{{Cite web|url=https://www.math.u-bordeaux.fr/~gzemor/|title=Gilles Zémor|website=www.math.u-bordeaux.fr|accessdate=9 April 2023}}&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;{{Cite web|url=https://www.math.u-bordeaux.fr/~gzemor/|title=Gilles Zémor|website=www.math.u-bordeaux.fr|accessdate=9 April 2023}}&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Zemor considered a typical class of Sipser–Spielman construction of [[expander code]]s, where the underlying graph is [[bipartite graph]]. Sipser and Spielman introduced a constructive family of asymptotically good linear-error codes together with a simple parallel algorithm that will always remove a constant fraction of errors. The article is based on Dr. Venkatesan Guruswami's course notes &lt;ref name="vg2"&gt;http://www.cs.washington.edu/education/courses/cse590vg/03wi/scribes/1-27.ps <del style="font-weight: bold; text-decoration: none;">{{Dead</del> <del style="font-weight: bold; text-decoration: none;">link</del>|date=<del style="font-weight: bold; text-decoration: none;">February</del> <del style="font-weight: bold; text-decoration: none;">2022</del>}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Zemor considered a typical class of Sipser–Spielman construction of [[expander code]]s, where the underlying graph is [[bipartite graph]]. Sipser and Spielman introduced a constructive family of asymptotically good linear-error codes together with a simple parallel algorithm that will always remove a constant fraction of errors. The article is based on Dr. Venkatesan Guruswami's course notes &lt;ref name="vg2"&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite web|url=</ins>http://www.cs.washington.edu/education/courses/cse590vg/03wi/scribes/1-27.ps<ins style="font-weight: bold; text-decoration: none;">|archive-url=https://web.archive.org/web/20140224135408/https://courses.cs.washington.edu/courses/cse590vg/03wi/scribes/1-27.ps|archive-date=2014-02-24|title=Lecture</ins> <ins style="font-weight: bold; text-decoration: none;">5</ins> <ins style="font-weight: bold; text-decoration: none;">|work=CSE590G: Codes and Pseudorandom Objects|publisher=University of Washington|first1=Venkatesan|last1=Guruswami|first2=Matt|last2=Cary</ins>|date=<ins style="font-weight: bold; text-decoration: none;">January 27,</ins> <ins style="font-weight: bold; text-decoration: none;">2003</ins>}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> </tr> </table> David Eppstein https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1175447228&oldid=prev Neko-chan: Added free to read link in citations with OAbot #oabot 2023-09-15T03:25:52Z <p>Added free to read link in citations with <a href="/wiki/Wikipedia:OABOT" class="mw-redirect" title="Wikipedia:OABOT">OAbot</a> #oabot</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 03:25, 15 September 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 41:</td> <td colspan="2" class="diff-lineno">Line 41:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;{{cite journal |author1=N. Alon |author2=F.R.K. Chung |title=Explicit construction of linear sized tolerant networks |journal=[[Discrete Mathematics (journal)|Discrete Mathematics]] |date=December 1988 |volume=72 |issue=1-3 |doi=10.1016/0012-365X(88)90189-6}}&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;{{cite journal |author1=N. Alon |author2=F.R.K. Chung |title=Explicit construction of linear sized tolerant networks |journal=[[Discrete Mathematics (journal)|Discrete Mathematics]] |date=December 1988 |volume=72 |issue=1-3 |doi=10.1016/0012-365X(88)90189-6<ins style="font-weight: bold; text-decoration: none;">|citeseerx=10.1.1.300.7495 </ins>}}&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> </tr> </table> Neko-chan https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1149001938&oldid=prev Egeymi: Filled in 1 bare reference(s) with reFill 2 + 2 2023-04-09T15:39:32Z <p>Filled in 1 bare reference(s) with reFill 2 + 2</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:39, 9 April 2023</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;<del style="font-weight: bold; text-decoration: none;">[http</del>://www.math.u-<del style="font-weight: bold; text-decoration: none;">bordeaux1</del>.fr/~<del style="font-weight: bold; text-decoration: none;">zemor</del>/<del style="font-weight: bold; text-decoration: none;"> </del>Gilles <del style="font-weight: bold; text-decoration: none;">Zemor]</del>&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;<ins style="font-weight: bold; text-decoration: none;">{{Cite web|url=https</ins>://www.math.u-<ins style="font-weight: bold; text-decoration: none;">bordeaux</ins>.fr/~<ins style="font-weight: bold; text-decoration: none;">gzemor</ins>/<ins style="font-weight: bold; text-decoration: none;">|title=</ins>Gilles <ins style="font-weight: bold; text-decoration: none;">Zémor|website=www.math.u-bordeaux.fr|accessdate=9 April 2023}}</ins>&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Zemor considered a typical class of Sipser–Spielman construction of [[expander code]]s, where the underlying graph is [[bipartite graph]]. Sipser and Spielman introduced a constructive family of asymptotically good linear-error codes together with a simple parallel algorithm that will always remove a constant fraction of errors. The article is based on Dr. Venkatesan Guruswami's course notes &lt;ref name="vg2"&gt;http://www.cs.washington.edu/education/courses/cse590vg/03wi/scribes/1-27.ps {{Dead link|date=February 2022}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Zemor considered a typical class of Sipser–Spielman construction of [[expander code]]s, where the underlying graph is [[bipartite graph]]. Sipser and Spielman introduced a constructive family of asymptotically good linear-error codes together with a simple parallel algorithm that will always remove a constant fraction of errors. The article is based on Dr. Venkatesan Guruswami's course notes &lt;ref name="vg2"&gt;http://www.cs.washington.edu/education/courses/cse590vg/03wi/scribes/1-27.ps {{Dead link|date=February 2022}}&lt;/ref&gt;</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 5:</td> <td colspan="2" class="diff-lineno">Line 5:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Zemor's algorithm is based on a type of [[expander graphs]] called [[Tanner graph]]. The construction of code was first proposed by Tanner.&lt;ref name=<del style="font-weight: bold; text-decoration: none;">"</del>vg3<del style="font-weight: bold; text-decoration: none;">"</del>&gt;http://www.cs.washington.edu/education/courses/cse533/06au/lecnotes/lecture14.pdf <del style="font-weight: bold; text-decoration: none;">{{Bare</del> <del style="font-weight: bold; text-decoration: none;">URL PDF</del>|date=<del style="font-weight: bold; text-decoration: none;">March</del> <del style="font-weight: bold; text-decoration: none;">2022</del>}}&lt;/ref&gt; The codes are based on [[double cover (topology)|double cover]] &lt;math&gt;d&lt;/math&gt;, regular expander &lt;math&gt;G&lt;/math&gt;, which is a bipartite graph. &lt;math&gt;G&lt;/math&gt; =&lt;math&gt; \left(V,E\right)&lt;/math&gt;, where &lt;math&gt;V&lt;/math&gt; is the set of vertices and &lt;math&gt;E&lt;/math&gt; is the set of edges and &lt;math&gt;V&lt;/math&gt; = &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cup&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; and &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cap&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; = &lt;math&gt;\emptyset&lt;/math&gt;, where &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; denotes sets of vertices. Let &lt;math&gt;n&lt;/math&gt; be the number of vertices in each group, ''i.e'', &lt;math&gt;|A| =|B| =n&lt;/math&gt;. The edge set &lt;math&gt;E&lt;/math&gt; be of size &lt;math&gt;N&lt;/math&gt; =&lt;math&gt;nd&lt;/math&gt; and every edge in &lt;math&gt;E&lt;/math&gt; has one endpoint in both &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt;. &lt;math&gt;E(v)&lt;/math&gt; denotes the set of edges containing &lt;math&gt;v&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Zemor's algorithm is based on a type of [[expander graphs]] called [[Tanner graph]]. The construction of code was first proposed by Tanner.&lt;ref name=vg3&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite web |url=</ins>http://www.cs.washington.edu/education/courses/cse533/06au/lecnotes/lecture14.pdf <ins style="font-weight: bold; text-decoration: none;">|title=Lecture</ins> <ins style="font-weight: bold; text-decoration: none;">notes</ins>|<ins style="font-weight: bold; text-decoration: none;">website=washington.edu|access-</ins>date=<ins style="font-weight: bold; text-decoration: none;">9 April</ins> <ins style="font-weight: bold; text-decoration: none;">2023</ins>}}&lt;/ref&gt; The codes are based on [[double cover (topology)|double cover]] &lt;math&gt;d&lt;/math&gt;, regular expander &lt;math&gt;G&lt;/math&gt;, which is a bipartite graph. &lt;math&gt;G&lt;/math&gt; =&lt;math&gt; \left(V,E\right)&lt;/math&gt;, where &lt;math&gt;V&lt;/math&gt; is the set of vertices and &lt;math&gt;E&lt;/math&gt; is the set of edges and &lt;math&gt;V&lt;/math&gt; = &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cup&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; and &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cap&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; = &lt;math&gt;\emptyset&lt;/math&gt;, where &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; denotes sets of vertices. Let &lt;math&gt;n&lt;/math&gt; be the number of vertices in each group, ''i.e'', &lt;math&gt;|A| =|B| =n&lt;/math&gt;. The edge set &lt;math&gt;E&lt;/math&gt; be of size &lt;math&gt;N&lt;/math&gt; =&lt;math&gt;nd&lt;/math&gt; and every edge in &lt;math&gt;E&lt;/math&gt; has one endpoint in both &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt;. &lt;math&gt;E(v)&lt;/math&gt; denotes the set of edges containing &lt;math&gt;v&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 41:</td> <td colspan="2" class="diff-lineno">Line 41:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;<del style="font-weight: bold; text-decoration: none;">http://math</del>.<del style="font-weight: bold; text-decoration: none;">ucsd</del>.<del style="font-weight: bold; text-decoration: none;">edu/~fan/mypaps/fanpap/93tolerant</del>.<del style="font-weight: bold; text-decoration: none;">pdf</del> <del style="font-weight: bold; text-decoration: none;">{{Bare</del> <del style="font-weight: bold; text-decoration: none;">URL</del> <del style="font-weight: bold; text-decoration: none;">PDF</del>|date=<del style="font-weight: bold; text-decoration: none;">March</del> <del style="font-weight: bold; text-decoration: none;">2022</del>}}&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;<ins style="font-weight: bold; text-decoration: none;">{{cite journal |author1=N</ins>.<ins style="font-weight: bold; text-decoration: none;"> Alon |author2=F</ins>.<ins style="font-weight: bold; text-decoration: none;">R.K</ins>. <ins style="font-weight: bold; text-decoration: none;">Chung</ins> <ins style="font-weight: bold; text-decoration: none;">|title=Explicit construction of linear sized tolerant networks |journal=[[Discrete Mathematics (journal)|Discrete Mathematics]]</ins> |date=<ins style="font-weight: bold; text-decoration: none;">December</ins> <ins style="font-weight: bold; text-decoration: none;">1988 |volume=72 |issue=1-3 |doi=10.1016/0012-365X(88)90189-6</ins>}}&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> </tr> </table> Egeymi https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1077085222&oldid=prev BrownHairedGirl: tag with {{Bare URL PDF}} 2022-03-14T13:14:27Z <p>tag with {{<a href="/wiki/Template:Bare_URL_PDF" title="Template:Bare URL PDF">Bare URL PDF</a>}}</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 13:14, 14 March 2022</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 5:</td> <td colspan="2" class="diff-lineno">Line 5:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Zemor's algorithm is based on a type of [[expander graphs]] called [[Tanner graph]]. The construction of code was first proposed by Tanner.&lt;ref name="vg3"&gt;http://www.cs.washington.edu/education/courses/cse533/06au/lecnotes/lecture14.pdf&lt;/ref&gt; The codes are based on [[double cover (topology)|double cover]] &lt;math&gt;d&lt;/math&gt;, regular expander &lt;math&gt;G&lt;/math&gt;, which is a bipartite graph. &lt;math&gt;G&lt;/math&gt; =&lt;math&gt; \left(V,E\right)&lt;/math&gt;, where &lt;math&gt;V&lt;/math&gt; is the set of vertices and &lt;math&gt;E&lt;/math&gt; is the set of edges and &lt;math&gt;V&lt;/math&gt; = &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cup&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; and &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cap&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; = &lt;math&gt;\emptyset&lt;/math&gt;, where &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; denotes sets of vertices. Let &lt;math&gt;n&lt;/math&gt; be the number of vertices in each group, ''i.e'', &lt;math&gt;|A| =|B| =n&lt;/math&gt;. The edge set &lt;math&gt;E&lt;/math&gt; be of size &lt;math&gt;N&lt;/math&gt; =&lt;math&gt;nd&lt;/math&gt; and every edge in &lt;math&gt;E&lt;/math&gt; has one endpoint in both &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt;. &lt;math&gt;E(v)&lt;/math&gt; denotes the set of edges containing &lt;math&gt;v&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Zemor's algorithm is based on a type of [[expander graphs]] called [[Tanner graph]]. The construction of code was first proposed by Tanner.&lt;ref name="vg3"&gt;http://www.cs.washington.edu/education/courses/cse533/06au/lecnotes/lecture14.pdf<ins style="font-weight: bold; text-decoration: none;"> {{Bare URL PDF|date=March 2022}}</ins>&lt;/ref&gt; The codes are based on [[double cover (topology)|double cover]] &lt;math&gt;d&lt;/math&gt;, regular expander &lt;math&gt;G&lt;/math&gt;, which is a bipartite graph. &lt;math&gt;G&lt;/math&gt; =&lt;math&gt; \left(V,E\right)&lt;/math&gt;, where &lt;math&gt;V&lt;/math&gt; is the set of vertices and &lt;math&gt;E&lt;/math&gt; is the set of edges and &lt;math&gt;V&lt;/math&gt; = &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cup&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; and &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cap&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; = &lt;math&gt;\emptyset&lt;/math&gt;, where &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; denotes sets of vertices. Let &lt;math&gt;n&lt;/math&gt; be the number of vertices in each group, ''i.e'', &lt;math&gt;|A| =|B| =n&lt;/math&gt;. The edge set &lt;math&gt;E&lt;/math&gt; be of size &lt;math&gt;N&lt;/math&gt; =&lt;math&gt;nd&lt;/math&gt; and every edge in &lt;math&gt;E&lt;/math&gt; has one endpoint in both &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt;. &lt;math&gt;E(v)&lt;/math&gt; denotes the set of edges containing &lt;math&gt;v&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 41:</td> <td colspan="2" class="diff-lineno">Line 41:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;http://math.ucsd.edu/~fan/mypaps/fanpap/93tolerant.pdf&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;http://math.ucsd.edu/~fan/mypaps/fanpap/93tolerant.pdf<ins style="font-weight: bold; text-decoration: none;"> {{Bare URL PDF|date=March 2022}}</ins>&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> </tr> </table> BrownHairedGirl https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1071414132&oldid=prev BrownHairedGirl: {{Dead link}} tag on bare URL refs which return HTTP 404 or 410 2022-02-12T13:44:45Z <p>{{<a href="/wiki/Template:Dead_link" title="Template:Dead link">Dead link</a>}} tag on <a href="/wiki/Wikipedia:Bare_URLs" title="Wikipedia:Bare URLs">bare URL</a> refs which return <a href="/wiki/HTTP_404" title="HTTP 404">HTTP 404</a> or <a href="/wiki/List_of_HTTP_status_codes#410" title="List of HTTP status codes">410</a></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 13:44, 12 February 2022</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;[http://www.math.u-bordeaux1.fr/~zemor/ Gilles Zemor]&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[coding theory]], '''Zemor's algorithm''', designed and developed by Gilles Zemor,&lt;ref name="vg1"&gt;[http://www.math.u-bordeaux1.fr/~zemor/ Gilles Zemor]&lt;/ref&gt; is a recursive low-complexity approach to code construction. It is an improvement over the algorithm of [[Michael Sipser|Sipser]] and [[Daniel Spielman|Spielman]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Zemor considered a typical class of Sipser–Spielman construction of [[expander code]]s, where the underlying graph is [[bipartite graph]]. Sipser and Spielman introduced a constructive family of asymptotically good linear-error codes together with a simple parallel algorithm that will always remove a constant fraction of errors. The article is based on Dr. Venkatesan Guruswami's course notes &lt;ref name="vg2"&gt;http://www.cs.washington.edu/education/courses/cse590vg/03wi/scribes/1-27.ps&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Zemor considered a typical class of Sipser–Spielman construction of [[expander code]]s, where the underlying graph is [[bipartite graph]]. Sipser and Spielman introduced a constructive family of asymptotically good linear-error codes together with a simple parallel algorithm that will always remove a constant fraction of errors. The article is based on Dr. Venkatesan Guruswami's course notes &lt;ref name="vg2"&gt;http://www.cs.washington.edu/education/courses/cse590vg/03wi/scribes/1-27.ps<ins style="font-weight: bold; text-decoration: none;"> {{Dead link|date=February 2022}}</ins>&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 8:</td> <td colspan="2" class="diff-lineno">Line 8:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>For constructing a code &lt;math&gt;C&lt;/math&gt;, consider a linear subcode &lt;math&gt;C_o&lt;/math&gt;, which is a &lt;math&gt;[d,r_od,\delta] &lt;/math&gt; code, where &lt;math&gt;q&lt;/math&gt;, the size of the alphabet is &lt;math&gt;2&lt;/math&gt;. For any vertex &lt;math&gt;v \in V&lt;/math&gt;, let &lt;math&gt; v(1), v(2),\ldots,v(d)&lt;/math&gt; be some ordering of the &lt;math&gt;d&lt;/math&gt; vertices of &lt;math&gt;E&lt;/math&gt; adjacent to &lt;math&gt;v&lt;/math&gt;. In this code, each bit &lt;math&gt;x_e&lt;/math&gt; is linked with an edge &lt;math&gt;e&lt;/math&gt; of &lt;math&gt;E&lt;/math&gt;.<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>For constructing a code &lt;math&gt;C&lt;/math&gt;, consider a linear subcode &lt;math&gt;C_o&lt;/math&gt;, which is a &lt;math&gt;[d,r_od,\delta] &lt;/math&gt; code, where &lt;math&gt;q&lt;/math&gt;, the size of the alphabet is &lt;math&gt;2&lt;/math&gt;. For any vertex &lt;math&gt;v \in V&lt;/math&gt;, let &lt;math&gt; v(1), v(2),\ldots,v(d)&lt;/math&gt; be some ordering of the &lt;math&gt;d&lt;/math&gt; vertices of &lt;math&gt;E&lt;/math&gt; adjacent to &lt;math&gt;v&lt;/math&gt;. In this code, each bit &lt;math&gt;x_e&lt;/math&gt; is linked with an edge &lt;math&gt;e&lt;/math&gt; of &lt;math&gt;E&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>We can define the code &lt;math&gt;C&lt;/math&gt; to be the set of binary vectors &lt;math&gt;x = \left( x_1,x_2,\ldots,x_N \right)&lt;/math&gt; of &lt;math&gt;\{0,1\}^N &lt;/math&gt; such that, for every vertex &lt;math&gt;v&lt;/math&gt; of &lt;math&gt;V&lt;/math&gt;, &lt;math&gt; \left(x_{v(1)}, x_{v(2)},\ldots, x_{v(d)}\right) &lt;/math&gt; is a code word of &lt;math&gt;C_o&lt;/math&gt;. In this case, we can consider a special case when every edge of &lt;math&gt;E&lt;/math&gt; is adjacent to exactly &lt;math&gt;2&lt;/math&gt; vertices of &lt;math&gt;V&lt;/math&gt;. It means that &lt;math&gt;V&lt;/math&gt; and &lt;math&gt;E&lt;/math&gt; make up, respectively, the vertex set and edge set of &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>We can define the code &lt;math&gt;C&lt;/math&gt; to be the set of binary vectors &lt;math&gt;x = \left( x_1,x_2,\ldots,x_N \right)&lt;/math&gt; of &lt;math&gt;\{0,1\}^N &lt;/math&gt; such that, for every vertex &lt;math&gt;v&lt;/math&gt; of &lt;math&gt;V&lt;/math&gt;, &lt;math&gt; \left(x_{v(1)}, x_{v(2)},\ldots, x_{v(d)}\right) &lt;/math&gt; is a code word of &lt;math&gt;C_o&lt;/math&gt;. In this case, we can consider a special case when every edge of &lt;math&gt;E&lt;/math&gt; is adjacent to exactly &lt;math&gt;2&lt;/math&gt; vertices of &lt;math&gt;V&lt;/math&gt;. It means that &lt;math&gt;V&lt;/math&gt; and &lt;math&gt;E&lt;/math&gt; make up, respectively, the vertex set and edge set of &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 22:</td> <td colspan="2" class="diff-lineno">Line 22:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Claim 1 ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Claim 1 ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''&lt;math&gt;\left(\dfrac{K}{N}\right)\geq 2r_o-1&lt;/math&gt;'''&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''&lt;math&gt;\left(\dfrac{K}{N}\right)\geq 2r_o-1&lt;/math&gt;'''&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>''. Let &lt;math&gt;R&lt;/math&gt; be the rate of a linear code constructed from a bipartite graph whose digit nodes have degree &lt;math&gt;m&lt;/math&gt; and whose subcode nodes have degree &lt;math&gt;n&lt;/math&gt;. If a single linear code with parameters &lt;math&gt;\left(n,k\right)&lt;/math&gt; and rate &lt;math&gt;r = \left(\dfrac{k}{n}\right)&lt;/math&gt; is associated with each of the subcode nodes, then &lt;math&gt;k\geq 1-\left(1-r\right)m&lt;/math&gt;''.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>''. Let &lt;math&gt;R&lt;/math&gt; be the rate of a linear code constructed from a bipartite graph whose digit nodes have degree &lt;math&gt;m&lt;/math&gt; and whose subcode nodes have degree &lt;math&gt;n&lt;/math&gt;. If a single linear code with parameters &lt;math&gt;\left(n,k\right)&lt;/math&gt; and rate &lt;math&gt;r = \left(\dfrac{k}{n}\right)&lt;/math&gt; is associated with each of the subcode nodes, then &lt;math&gt;k\geq 1-\left(1-r\right)m&lt;/math&gt;''.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 28:</td> <td colspan="2" class="diff-lineno">Line 28:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt;R&lt;/math&gt; be the rate of the linear code, which is equal to &lt;math&gt;K/N&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt;R&lt;/math&gt; be the rate of the linear code, which is equal to &lt;math&gt;K/N&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Let there are &lt;math&gt;S&lt;/math&gt; subcode nodes in the graph. If the degree of the subcode is &lt;math&gt;n&lt;/math&gt;, then the code must have &lt;math&gt;\left(\dfrac{n}{m}\right) S&lt;/math&gt; digits, as each digit node is connected to &lt;math&gt;m&lt;/math&gt; of the &lt;math&gt;\left(n\right)S&lt;/math&gt; edges in the graph. Each subcode node contributes &lt;math&gt;(n-k)&lt;/math&gt; equations to parity check matrix for a total of &lt;math&gt;\left(n-k\right) S&lt;/math&gt;. These equations may not be linearly independent. </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Let there are &lt;math&gt;S&lt;/math&gt; subcode nodes in the graph. If the degree of the subcode is &lt;math&gt;n&lt;/math&gt;, then the code must have &lt;math&gt;\left(\dfrac{n}{m}\right) S&lt;/math&gt; digits, as each digit node is connected to &lt;math&gt;m&lt;/math&gt; of the &lt;math&gt;\left(n\right)S&lt;/math&gt; edges in the graph. Each subcode node contributes &lt;math&gt;(n-k)&lt;/math&gt; equations to parity check matrix for a total of &lt;math&gt;\left(n-k\right) S&lt;/math&gt;. These equations may not be linearly independent. </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Therefore, &lt;math&gt;\left(\dfrac{K}{N}\right)\geq \left(\dfrac{(\dfrac{n}{m})S - (n-k)S}{(\dfrac{n}{m}) S}\right)&lt;/math&gt;&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Therefore, &lt;math&gt;\left(\dfrac{K}{N}\right)\geq \left(\dfrac{(\dfrac{n}{m})S - (n-k)S}{(\dfrac{n}{m}) S}\right)&lt;/math&gt;&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;\geq 1-m\left(\dfrac{n-k}{n}\right)&lt;/math&gt;&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;\geq 1-m\left(\dfrac{n-k}{n}\right)&lt;/math&gt;&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;\geq 1-m \left(1-r\right) &lt;/math&gt;, Since the value of &lt;math&gt;m&lt;/math&gt;, i.e., the digit node of this bipartite graph is &lt;math&gt;2&lt;/math&gt; and here &lt;math&gt;r = r_o&lt;/math&gt;, we can write as:&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;\geq 1-m \left(1-r\right) &lt;/math&gt;, Since the value of &lt;math&gt;m&lt;/math&gt;, i.e., the digit node of this bipartite graph is &lt;math&gt;2&lt;/math&gt; and here &lt;math&gt;r = r_o&lt;/math&gt;, we can write as:&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;\left(\dfrac{K}{N}\right)\geq 2r_o -1&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;\left(\dfrac{K}{N}\right)\geq 2r_o -1&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 41:</td> <td colspan="2" class="diff-lineno">Line 41:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;http://math.ucsd.edu/~fan/mypaps/fanpap/93tolerant.pdf&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt; B&lt;/math&gt; be derived from the &lt;math&gt;d&lt;/math&gt; regular graph &lt;math&gt;G&lt;/math&gt;. So, the number of variables of &lt;math&gt;C(B,S)&lt;/math&gt; is &lt;math&gt; \left(\dfrac{dn}{2}\right)&lt;/math&gt; and the number of constraints is &lt;math&gt;n&lt;/math&gt;. According to Alon - Chung,&lt;ref name="vg4"&gt;http://math.ucsd.edu/~fan/mypaps/fanpap/93tolerant.pdf&lt;/ref&gt; if &lt;math&gt;X&lt;/math&gt; is a subset of vertices of &lt;math&gt;G&lt;/math&gt; of size &lt;math&gt;\gamma n&lt;/math&gt;, then the number of edges contained in the subgraph is induced by &lt;math&gt;X&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; is at most &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>As a result, any set of &lt;math&gt;\left(\dfrac{dn}{2}\right) \left(\gamma^2 + \left(\dfrac{\lambda}{d}\right)\gamma \left(1-\gamma\right)\right)&lt;/math&gt; variables will be having at least &lt;math&gt;\gamma n&lt;/math&gt; constraints as neighbours. So the average number of variables per constraint is : &lt;math&gt;\left(\dfrac{(\dfrac{2nd}{2}) \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)}{\gamma n}\right)&lt;/math&gt;</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 52:</td> <td colspan="2" class="diff-lineno">Line 52:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Zemor's algorithm ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Zemor's algorithm ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The iterative decoding algorithm written below alternates between the vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; and corrects the codeword of &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;A&lt;/math&gt; and then it switches to correct the codeword &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;B&lt;/math&gt;. Here edges associated with a vertex on one side of a graph are not incident to other vertex on that side. In fact, it doesn't matter in which order, the set of nodes &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; are processed. The vertex processing can also be done in parallel.<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The iterative decoding algorithm written below alternates between the vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; in &lt;math&gt;G&lt;/math&gt; and corrects the codeword of &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;A&lt;/math&gt; and then it switches to correct the codeword &lt;math&gt;C_o&lt;/math&gt; in &lt;math&gt;B&lt;/math&gt;. Here edges associated with a vertex on one side of a graph are not incident to other vertex on that side. In fact, it doesn't matter in which order, the set of nodes &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; are processed. The vertex processing can also be done in parallel.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The decoder &lt;math&gt;\mathbb{D}:\mathbb{F}^d \rightarrow C_o&lt;/math&gt;stands for a decoder for &lt;math&gt;C_o&lt;/math&gt; that recovers correctly with any codewords with less than &lt;math&gt;\left(\dfrac{d}{2}\right)&lt;/math&gt; errors.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>The decoder &lt;math&gt;\mathbb{D}:\mathbb{F}^d \rightarrow C_o&lt;/math&gt;stands for a decoder for &lt;math&gt;C_o&lt;/math&gt; that recovers correctly with any codewords with less than &lt;math&gt;\left(\dfrac{d}{2}\right)&lt;/math&gt; errors.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 58:</td> <td colspan="2" class="diff-lineno">Line 58:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Decoder algorithm ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Decoder algorithm ===</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Received word : &lt;math&gt;w=(w_e), e\in E&lt;/math&gt;&lt;br&gt; </div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Received word : &lt;math&gt;w=(w_e), e\in E&lt;/math&gt;&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt; </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;code&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;code&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;z \leftarrow w&lt;/math&gt;&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;z \leftarrow w&lt;/math&gt;&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>For &lt;math&gt;t \leftarrow 1&lt;/math&gt; to &lt;math&gt;m&lt;/math&gt; do //&lt;math&gt;m&lt;/math&gt; is the number of iterations&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>For &lt;math&gt;t \leftarrow 1&lt;/math&gt; to &lt;math&gt;m&lt;/math&gt; do //&lt;math&gt;m&lt;/math&gt; is the number of iterations&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{ if (&lt;math&gt;t&lt;/math&gt; is odd) // Here the algorithm will alternate between its two vertex sets.&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{ if (&lt;math&gt;t&lt;/math&gt; is odd) // Here the algorithm will alternate between its two vertex sets.&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;X \leftarrow A&lt;/math&gt;&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&lt;math&gt;X \leftarrow A&lt;/math&gt;&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>else &lt;math&gt;X \leftarrow B&lt;/math&gt; &lt;br&gt; </div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>else &lt;math&gt;X \leftarrow B&lt;/math&gt; &lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt; </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Iteration &lt;math&gt;t&lt;/math&gt;: For every &lt;math&gt;v \in X&lt;/math&gt;, let &lt;math&gt;(z)_v \leftarrow \mathbb{D}((z)_v)&lt;/math&gt; // Decoding &lt;math&gt;z_v&lt;/math&gt; to its nearest codeword.&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Iteration &lt;math&gt;t&lt;/math&gt;: For every &lt;math&gt;v \in X&lt;/math&gt;, let &lt;math&gt;(z)_v \leftarrow \mathbb{D}((z)_v)&lt;/math&gt; // Decoding &lt;math&gt;z_v&lt;/math&gt; to its nearest codeword.&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>}&lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>}&lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;/code&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;/code&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Output: &lt;math&gt;z&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Output: &lt;math&gt;z&lt;/math&gt;</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 76:</td> <td colspan="2" class="diff-lineno">Line 76:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt;w \in \{0,1\}^N&lt;/math&gt; be the received vector, and recall that &lt;math&gt;N=dn&lt;/math&gt;. The first iteration of the algorithm consists of applying the complete decoding for the code induced by &lt;math&gt;E_v&lt;/math&gt; for every &lt;math&gt;v \in A&lt;/math&gt; . This means that for replacing, for every &lt;math&gt;v \in A&lt;/math&gt;, the vector &lt;math&gt;\left( w_{v(1)}, w_{v(2)}, \ldots, w_{v(d)}\right)&lt;/math&gt; by one of the closest codewords of &lt;math&gt;C_o&lt;/math&gt;. Since the subsets of edges &lt;math&gt;E_v&lt;/math&gt; are disjoint for &lt;math&gt;v \in A&lt;/math&gt;, the decoding of these &lt;math&gt;n&lt;/math&gt; subvectors of &lt;math&gt;w&lt;/math&gt; may be done in parallel.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt;w \in \{0,1\}^N&lt;/math&gt; be the received vector, and recall that &lt;math&gt;N=dn&lt;/math&gt;. The first iteration of the algorithm consists of applying the complete decoding for the code induced by &lt;math&gt;E_v&lt;/math&gt; for every &lt;math&gt;v \in A&lt;/math&gt; . This means that for replacing, for every &lt;math&gt;v \in A&lt;/math&gt;, the vector &lt;math&gt;\left( w_{v(1)}, w_{v(2)}, \ldots, w_{v(d)}\right)&lt;/math&gt; by one of the closest codewords of &lt;math&gt;C_o&lt;/math&gt;. Since the subsets of edges &lt;math&gt;E_v&lt;/math&gt; are disjoint for &lt;math&gt;v \in A&lt;/math&gt;, the decoding of these &lt;math&gt;n&lt;/math&gt; subvectors of &lt;math&gt;w&lt;/math&gt; may be done in parallel.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The iteration will yield a new vector &lt;math&gt;z&lt;/math&gt;. The next iteration consists of applying the preceding procedure to &lt;math&gt;z&lt;/math&gt; but with &lt;math&gt;A&lt;/math&gt; replaced by &lt;math&gt;B&lt;/math&gt;. In other words, it consists of decoding all the subvectors induced by the vertices of &lt;math&gt;B&lt;/math&gt;. The coming iterations repeat those two steps alternately applying parallel decoding to the subvectors induced by the vertices of &lt;math&gt;A&lt;/math&gt; and to the subvectors induced by the vertices of &lt;math&gt;B&lt;/math&gt;. &lt;br&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The iteration will yield a new vector &lt;math&gt;z&lt;/math&gt;. The next iteration consists of applying the preceding procedure to &lt;math&gt;z&lt;/math&gt; but with &lt;math&gt;A&lt;/math&gt; replaced by &lt;math&gt;B&lt;/math&gt;. In other words, it consists of decoding all the subvectors induced by the vertices of &lt;math&gt;B&lt;/math&gt;. The coming iterations repeat those two steps alternately applying parallel decoding to the subvectors induced by the vertices of &lt;math&gt;A&lt;/math&gt; and to the subvectors induced by the vertices of &lt;math&gt;B&lt;/math&gt;. &lt;br<ins style="font-weight: bold; text-decoration: none;"> /</ins>&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Note:''' [If &lt;math&gt;d=n&lt;/math&gt; and &lt;math&gt;G&lt;/math&gt; is the complete bipartite graph, then &lt;math&gt;C&lt;/math&gt; is a product code of &lt;math&gt;C_o&lt;/math&gt; with itself and the above algorithm reduces to the natural hard iterative decoding of product codes].</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Note:''' [If &lt;math&gt;d=n&lt;/math&gt; and &lt;math&gt;G&lt;/math&gt; is the complete bipartite graph, then &lt;math&gt;C&lt;/math&gt; is a product code of &lt;math&gt;C_o&lt;/math&gt; with itself and the above algorithm reduces to the natural hard iterative decoding of product codes].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> BrownHairedGirl https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1045010872&oldid=prev Darcourse: spelling 2021-09-18T08:32:16Z <p>spelling</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 08:32, 18 September 2021</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 18:</td> <td colspan="2" class="diff-lineno">Line 18:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In this figure, &lt;math&gt;(x)_v =\left(x_{e1}, x_{e2}, x_{e3}, x_{e4}\right)\in C_o&lt;/math&gt;. It shows the graph &lt;math&gt;G&lt;/math&gt; and code &lt;math&gt;C&lt;/math&gt;.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In this figure, &lt;math&gt;(x)_v =\left(x_{e1}, x_{e2}, x_{e3}, x_{e4}\right)\in C_o&lt;/math&gt;. It shows the graph &lt;math&gt;G&lt;/math&gt; and code &lt;math&gt;C&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In matrix &lt;math&gt;G&lt;/math&gt;, let &lt;math&gt;\lambda&lt;/math&gt; is equal to the second largest [[<del style="font-weight: bold; text-decoration: none;">eigen value</del>]] of [[adjacency matrix]] of &lt;math&gt;G&lt;/math&gt;. Here the largest <del style="font-weight: bold; text-decoration: none;">eigen value</del> is &lt;math&gt; d&lt;/math&gt;. </div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In matrix &lt;math&gt;G&lt;/math&gt;, let &lt;math&gt;\lambda&lt;/math&gt; is equal to the second largest [[<ins style="font-weight: bold; text-decoration: none;">eigenvalue</ins>]] of [[adjacency matrix]] of &lt;math&gt;G&lt;/math&gt;. Here the largest <ins style="font-weight: bold; text-decoration: none;">eigenvalue</ins> is &lt;math&gt; d&lt;/math&gt;. </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Two important claims are made:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Two important claims are made:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 38:</td> <td colspan="2" class="diff-lineno">Line 38:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: &lt;math&gt;=N\left(\delta^2- O\left(\dfrac{\lambda}{d}\right)\right)&lt;/math&gt; &lt;math&gt;\rightarrow (1)&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: &lt;math&gt;=N\left(\delta^2- O\left(\dfrac{\lambda}{d}\right)\right)&lt;/math&gt; &lt;math&gt;\rightarrow (1)&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>''If &lt;math&gt; S &lt;/math&gt; is linear code of rate &lt;math&gt;r&lt;/math&gt;, block code length &lt;math&gt; d&lt;/math&gt;, and minimum relative distance &lt;math&gt;\delta&lt;/math&gt;, and if &lt;math&gt;B&lt;/math&gt; is the edge vertex incidence graph of a &lt;math&gt;d&lt;/math&gt; – regular graph with second largest <del style="font-weight: bold; text-decoration: none;">eigen value</del> &lt;math&gt;\lambda&lt;/math&gt;, then the code &lt;math&gt;C(B,S)&lt;/math&gt; has rate at least &lt;math&gt;2r_o -1&lt;/math&gt; and minimum relative distance at least &lt;math&gt;\left(\left(\dfrac{\delta- \left(\dfrac{\lambda}{d}\right)}{1-\left(\dfrac{\lambda}{d}\right)}\right)\right)^2&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>''If &lt;math&gt; S &lt;/math&gt; is linear code of rate &lt;math&gt;r&lt;/math&gt;, block code length &lt;math&gt; d&lt;/math&gt;, and minimum relative distance &lt;math&gt;\delta&lt;/math&gt;, and if &lt;math&gt;B&lt;/math&gt; is the edge vertex incidence graph of a &lt;math&gt;d&lt;/math&gt; – regular graph with second largest <ins style="font-weight: bold; text-decoration: none;">eigenvalue</ins> &lt;math&gt;\lambda&lt;/math&gt;, then the code &lt;math&gt;C(B,S)&lt;/math&gt; has rate at least &lt;math&gt;2r_o -1&lt;/math&gt; and minimum relative distance at least &lt;math&gt;\left(\left(\dfrac{\delta- \left(\dfrac{\lambda}{d}\right)}{1-\left(\dfrac{\lambda}{d}\right)}\right)\right)^2&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==== Proof ====</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 48:</td> <td colspan="2" class="diff-lineno">Line 48:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So if &lt;math&gt; d\left( \gamma + (\dfrac{\lambda}{d}) \left( 1-\gamma\right)\right) &lt; \gamma d&lt;/math&gt;, then a word of relative weight &lt;math&gt; \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;, cannot be a codeword of &lt;math&gt;C(B,S)&lt;/math&gt;. The inequality &lt;math&gt;(2)&lt;/math&gt; is satisfied for &lt;math&gt;\gamma &lt; \left(\dfrac{1-(\dfrac{\lambda}{d})}{\delta-(\dfrac{\lambda}{d})}\right)&lt;/math&gt;. Therefore, &lt;math&gt;C(B,S)&lt;/math&gt; cannot have a non zero codeword of relative weight &lt;math&gt;\left(\dfrac{\delta-(\dfrac{\lambda}{d})}{1-(\dfrac{\lambda}{d})}\right)^2&lt;/math&gt; or less.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>So if &lt;math&gt; d\left( \gamma + (\dfrac{\lambda}{d}) \left( 1-\gamma\right)\right) &lt; \gamma d&lt;/math&gt;, then a word of relative weight &lt;math&gt; \left(\gamma^2 + (\dfrac{\lambda}{d})\gamma \left(1-\gamma\right)\right)&lt;/math&gt;, cannot be a codeword of &lt;math&gt;C(B,S)&lt;/math&gt;. The inequality &lt;math&gt;(2)&lt;/math&gt; is satisfied for &lt;math&gt;\gamma &lt; \left(\dfrac{1-(\dfrac{\lambda}{d})}{\delta-(\dfrac{\lambda}{d})}\right)&lt;/math&gt;. Therefore, &lt;math&gt;C(B,S)&lt;/math&gt; cannot have a non zero codeword of relative weight &lt;math&gt;\left(\dfrac{\delta-(\dfrac{\lambda}{d})}{1-(\dfrac{\lambda}{d})}\right)^2&lt;/math&gt; or less.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In matrix &lt;math&gt;G&lt;/math&gt;, we can assume that &lt;math&gt;\lambda/d&lt;/math&gt; is bounded away from &lt;math&gt;1&lt;/math&gt;. For those values of &lt;math&gt; d&lt;/math&gt; in which &lt;math&gt;d-1&lt;/math&gt; is odd prime, there are explicit constructions of sequences of &lt;math&gt; d&lt;/math&gt; - regular bipartite graphs with arbitrarily large number of vertices such that each graph &lt;math&gt;G&lt;/math&gt; in the sequence is a [[Ramanujan graph]]. It is called Ramanujan graph as it satisfies the inequality &lt;math&gt;\lambda(G) \leq 2\sqrt{d-1}&lt;/math&gt;. Certain expansion properties are visible in graph &lt;math&gt;G&lt;/math&gt; as the separation between the <del style="font-weight: bold; text-decoration: none;">eigen values</del> &lt;math&gt;d&lt;/math&gt; and &lt;math&gt; \lambda &lt;/math&gt;. If the graph &lt;math&gt; G &lt;/math&gt; is Ramanujan graph, then that expression &lt;math&gt;(1)&lt;/math&gt; will become &lt;math&gt;0&lt;/math&gt; eventually as &lt;math&gt; d &lt;/math&gt; becomes large.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In matrix &lt;math&gt;G&lt;/math&gt;, we can assume that &lt;math&gt;\lambda/d&lt;/math&gt; is bounded away from &lt;math&gt;1&lt;/math&gt;. For those values of &lt;math&gt; d&lt;/math&gt; in which &lt;math&gt;d-1&lt;/math&gt; is odd prime, there are explicit constructions of sequences of &lt;math&gt; d&lt;/math&gt; - regular bipartite graphs with arbitrarily large number of vertices such that each graph &lt;math&gt;G&lt;/math&gt; in the sequence is a [[Ramanujan graph]]. It is called Ramanujan graph as it satisfies the inequality &lt;math&gt;\lambda(G) \leq 2\sqrt{d-1}&lt;/math&gt;. Certain expansion properties are visible in graph &lt;math&gt;G&lt;/math&gt; as the separation between the <ins style="font-weight: bold; text-decoration: none;">eigenvalues</ins> &lt;math&gt;d&lt;/math&gt; and &lt;math&gt; \lambda &lt;/math&gt;. If the graph &lt;math&gt; G &lt;/math&gt; is Ramanujan graph, then that expression &lt;math&gt;(1)&lt;/math&gt; will become &lt;math&gt;0&lt;/math&gt; eventually as &lt;math&gt; d &lt;/math&gt; becomes large.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Zemor's algorithm ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Zemor's algorithm ==</div></td> </tr> </table> Darcourse https://en.wikipedia.org/w/index.php?title=Zemor%27s_decoding_algorithm&diff=1004453523&oldid=prev 157.131.254.88: /* Code construction */ changed "A and B denotes sets of 2 vertices" to "A and B denotes sets of vertices" (because A and B *do not* have size 2). 2021-02-02T17:41:21Z <p><span class="autocomment">Code construction: </span> changed &quot;A and B denotes sets of 2 vertices&quot; to &quot;A and B denotes sets of vertices&quot; (because A and B *do not* have size 2).</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 17:41, 2 February 2021</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 5:</td> <td colspan="2" class="diff-lineno">Line 5:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Code construction ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Zemor's algorithm is based on a type of [[expander graphs]] called [[Tanner graph]]. The construction of code was first proposed by Tanner.&lt;ref name="vg3"&gt;http://www.cs.washington.edu/education/courses/cse533/06au/lecnotes/lecture14.pdf&lt;/ref&gt; The codes are based on [[double cover (topology)|double cover]] &lt;math&gt;d&lt;/math&gt;, regular expander &lt;math&gt;G&lt;/math&gt;, which is a bipartite graph. &lt;math&gt;G&lt;/math&gt; =&lt;math&gt; \left(V,E\right)&lt;/math&gt;, where &lt;math&gt;V&lt;/math&gt; is the set of vertices and &lt;math&gt;E&lt;/math&gt; is the set of edges and &lt;math&gt;V&lt;/math&gt; = &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cup&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; and &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cap&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; = &lt;math&gt;\emptyset&lt;/math&gt;, where &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; denotes <del style="font-weight: bold; text-decoration: none;">the set</del> of<del style="font-weight: bold; text-decoration: none;"> 2</del> vertices. Let &lt;math&gt;n&lt;/math&gt; be the number of vertices in each group, ''i.e'', &lt;math&gt;|A| =|B| =n&lt;/math&gt;. The edge set &lt;math&gt;E&lt;/math&gt; be of size &lt;math&gt;N&lt;/math&gt; =&lt;math&gt;nd&lt;/math&gt; and every edge in &lt;math&gt;E&lt;/math&gt; has one endpoint in both &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt;. &lt;math&gt;E(v)&lt;/math&gt; denotes the set of edges containing &lt;math&gt;v&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Zemor's algorithm is based on a type of [[expander graphs]] called [[Tanner graph]]. The construction of code was first proposed by Tanner.&lt;ref name="vg3"&gt;http://www.cs.washington.edu/education/courses/cse533/06au/lecnotes/lecture14.pdf&lt;/ref&gt; The codes are based on [[double cover (topology)|double cover]] &lt;math&gt;d&lt;/math&gt;, regular expander &lt;math&gt;G&lt;/math&gt;, which is a bipartite graph. &lt;math&gt;G&lt;/math&gt; =&lt;math&gt; \left(V,E\right)&lt;/math&gt;, where &lt;math&gt;V&lt;/math&gt; is the set of vertices and &lt;math&gt;E&lt;/math&gt; is the set of edges and &lt;math&gt;V&lt;/math&gt; = &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cup&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; and &lt;math&gt;A&lt;/math&gt; &lt;math&gt;\cap&lt;/math&gt; &lt;math&gt;B&lt;/math&gt; = &lt;math&gt;\emptyset&lt;/math&gt;, where &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; denotes <ins style="font-weight: bold; text-decoration: none;">sets</ins> of vertices. Let &lt;math&gt;n&lt;/math&gt; be the number of vertices in each group, ''i.e'', &lt;math&gt;|A| =|B| =n&lt;/math&gt;. The edge set &lt;math&gt;E&lt;/math&gt; be of size &lt;math&gt;N&lt;/math&gt; =&lt;math&gt;nd&lt;/math&gt; and every edge in &lt;math&gt;E&lt;/math&gt; has one endpoint in both &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt;. &lt;math&gt;E(v)&lt;/math&gt; denotes the set of edges containing &lt;math&gt;v&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Assume an ordering on &lt;math&gt;V&lt;/math&gt;, therefore ordering will be done on every edges of &lt;math&gt;E(v)&lt;/math&gt; for every &lt;math&gt;v \in V&lt;/math&gt;. Let [[finite field]] &lt;math&gt;\mathbb{F}=GF(2)&lt;/math&gt;, and for a word &lt;math&gt;x=(x_e), e\in E&lt;/math&gt; in &lt;math&gt;\mathbb{F}^N&lt;/math&gt;, let the subword of the word will be indexed by &lt;math&gt;E(v)&lt;/math&gt;. Let that word be denoted by &lt;math&gt;(x)_v&lt;/math&gt;. The subset of vertices &lt;math&gt;A&lt;/math&gt; and &lt;math&gt;B&lt;/math&gt; induces every word &lt;math&gt;x\in \mathbb{F}^N&lt;/math&gt; a partition into &lt;math&gt;n&lt;/math&gt; non-overlapping sub-words &lt;math&gt; \left(x\right)_v\in \mathbb{F}^d&lt;/math&gt;, where &lt;math&gt;v&lt;/math&gt; ranges over the elements of &lt;math&gt;A&lt;/math&gt;. </div></td> </tr> </table> 157.131.254.88