https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Block_Wiedemann_algorithm
Block Wiedemann algorithm - Revision history
2025-05-30T07:23:29Z
Revision history for this page on the wiki
MediaWiki 1.45.0-wmf.3
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=1170214599&oldid=prev
OAbot: Open access bot: arxiv added to citation with #oabot.
2023-08-13T19:37:53Z
<p><a href="/wiki/Wikipedia:OABOT" class="mw-redirect" title="Wikipedia:OABOT">Open access bot</a>: arxiv added to citation with #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 19:37, 13 August 2023</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 20:</td>
<td colspan="2" class="diff-lineno">Line 20:</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><div class="center"></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><div class="center"></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><math>p \geq \begin{cases} 1/64, & \text{if }b = k+1\text{ and } q=2 \\ \left( 1 - \frac{3}{2^{b-k}} \right)^2 \geq 1/16 & \text{if }b \geq k+2\text{ and } q=2 \\ </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><math>p \geq \begin{cases} 1/64, & \text{if }b = k+1\text{ and } q=2 \\ \left( 1 - \frac{3}{2^{b-k}} \right)^2 \geq 1/16 & \text{if }b \geq k+2\text{ and } q=2 \\ </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>\left( 1 - \frac{2}{q^{b-k}} \right)^2 \geq 1/9 & \text{if }b \geq k+1\text{ and }q > 2\end{cases}</math>.<ref>{{Cite journal |last=Harrison |first=Gavin |last2=Johnson |first2=Jeremy |last3=Saunders |first3=B. David |date=2022-01-01 |title=Probabilistic analysis of block Wiedemann for leading invariant factors |url=https://www.sciencedirect.com/science/article/pii/S0747717121000419 |journal=Journal of Symbolic Computation |language=en |volume=108 |pages=98–116 |doi=10.1016/j.jsc.2021.06.005 |issn=0747-7171}}</ref></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>\left( 1 - \frac{2}{q^{b-k}} \right)^2 \geq 1/9 & \text{if }b \geq k+1\text{ and }q > 2\end{cases}</math>.<ref>{{Cite journal |last=Harrison |first=Gavin |last2=Johnson |first2=Jeremy |last3=Saunders |first3=B. David |date=2022-01-01 |title=Probabilistic analysis of block Wiedemann for leading invariant factors |url=https://www.sciencedirect.com/science/article/pii/S0747717121000419 |journal=Journal of Symbolic Computation |language=en |volume=108 |pages=98–116 |doi=10.1016/j.jsc.2021.06.005 |issn=0747-7171<ins style="font-weight: bold; text-decoration: none;">|arxiv=1803.03864 </ins>}}</ref></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></div></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></div></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>
OAbot
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=1142846308&oldid=prev
GünniX: Reflist
2023-03-04T18:04:10Z
<p>Reflist</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 18:04, 4 March 2023</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>Let <math>M</math> be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length <math>n</math>, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix <math>M</math>; let <math>y</math> be any other vector of length <math>n</math>, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></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 <math>M</math> be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length <math>n</math>, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix <math>M</math>; let <math>y</math> be any other vector of length <math>n</math>, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></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>We know that the matrix <math>M</math> has a [[<del style="font-weight: bold; text-decoration: none;">Minimal_polynomial_</del>(<del style="font-weight: bold; text-decoration: none;">linear_algebra</del>)|minimal polynomial]]; by the [[Cayley–Hamilton theorem]] we know that this polynomial is of degree (which we will call <math>n_0</math>) no more than <math>n</math>. Say <math>\sum_{r=0}^{n_0} p_rM^r = 0</math>. Then <math>\sum_{r=0}^{n_0} y \cdot (p_r (M^r x)) = 0</math>; so the minimal polynomial of the matrix annihilates the sequence <math>S</math> and hence <math>S_y</math>.</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>We know that the matrix <math>M</math> has a [[<ins style="font-weight: bold; text-decoration: none;">Minimal polynomial </ins>(<ins style="font-weight: bold; text-decoration: none;">linear algebra</ins>)|minimal polynomial]]; by the [[Cayley–Hamilton theorem]] we know that this polynomial is of degree (which we will call <math>n_0</math>) no more than <math>n</math>. Say <math>\sum_{r=0}^{n_0} p_rM^r = 0</math>. Then <math>\sum_{r=0}^{n_0} y \cdot (p_r (M^r x)) = 0</math>; so the minimal polynomial of the matrix annihilates the sequence <math>S</math> and hence <math>S_y</math>.</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>But the [[Berlekamp–Massey algorithm]] allows us to calculate relatively efficiently some sequence <math>q_0 \ldots q_L</math> with <math>\sum_{i=0}^L q_i S_y[{i+r}]=0 \;\forall \; r</math>. Our hope is that this sequence, which by construction annihilates <math>y \cdot S</math>, actually annihilates <math>S</math>; so we have <math>\sum_{i=0}^L q_i M^i x = 0</math>. We then take advantage of the initial definition of <math>x</math> to say <math>M \sum_{i=0}^L q_i M^i x_{\mathrm {base}} = 0</math> and so <math>\sum_{i=0}^L q_i M^i x_{\mathrm {base}}</math> is a hopefully non-zero kernel vector of <math>M</math>.</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>But the [[Berlekamp–Massey algorithm]] allows us to calculate relatively efficiently some sequence <math>q_0 \ldots q_L</math> with <math>\sum_{i=0}^L q_i S_y[{i+r}]=0 \;\forall \; r</math>. Our hope is that this sequence, which by construction annihilates <math>y \cdot S</math>, actually annihilates <math>S</math>; so we have <math>\sum_{i=0}^L q_i M^i x = 0</math>. We then take advantage of the initial definition of <math>x</math> to say <math>M \sum_{i=0}^L q_i M^i x_{\mathrm {base}} = 0</math> and so <math>\sum_{i=0}^L q_i M^i x_{\mathrm {base}}</math> is a hopefully non-zero kernel vector of <math>M</math>.</div></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 16:</td>
<td colspan="2" class="diff-lineno">Line 16:</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>== Invariant Factor Calculation ==</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>== Invariant Factor Calculation ==</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>The block Wiedemann algorithm can be used to calculate the leading [[<del style="font-weight: bold; text-decoration: none;">Invariant</del> factor<del style="font-weight: bold; text-decoration: none;">|invariant factors</del>]] of the matrix, ie, the largest blocks of the [[Frobenius normal form]]. Given <math>M \in F_q^{n \times n}</math> and <math>U, V \in F_q^{b \times n}</math> where <math>F_q</math> is a finite field of size <math>q</math>, the probability <math>p</math> that the leading <math>k < b</math> invariant factors of <math>M</math> are preserved in <math>\sum_{i=0}^{2n-1}UM^iV^T x^i</math> is</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 block Wiedemann algorithm can be used to calculate the leading [[<ins style="font-weight: bold; text-decoration: none;">invariant</ins> factor]]<ins style="font-weight: bold; text-decoration: none;">s</ins> of the matrix, ie, the largest blocks of the [[Frobenius normal form]]. Given <math>M \in F_q^{n \times n}</math> and <math>U, V \in F_q^{b \times n}</math> where <math>F_q</math> is a finite field of size <math>q</math>, the probability <math>p</math> that the leading <math>k < b</math> invariant factors of <math>M</math> are preserved in <math>\sum_{i=0}^{2n-1}UM^iV^T x^i</math> is</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><div class="center"></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><div class="center"></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><math>p \geq \begin{cases} 1/64, & \text{if }b = k+1\text{ and } q=2 \\ \left( 1 - \frac{3}{2^{b-k}} \right)^2 \geq 1/16 & \text{if }b \geq k+2\text{ and } q=2 \\ </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><math>p \geq \begin{cases} 1/64, & \text{if }b = k+1\text{ and } q=2 \\ \left( 1 - \frac{3}{2^{b-k}} \right)^2 \geq 1/16 & \text{if }b \geq k+2\text{ and } q=2 \\ </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>\left( 1 - \frac{2}{q^{b-k}} \right)^2 \geq 1/9 & \text{if }b \geq k+1\text{ and }q > 2\end{cases}</math><del style="font-weight: bold; text-decoration: none;"> </del><ref>{{Cite journal |last=Harrison |first=Gavin |last2=Johnson |first2=Jeremy |last3=Saunders |first3=B. David |date=2022-01-01 |title=Probabilistic analysis of block Wiedemann for leading invariant factors |url=https://www.sciencedirect.com/science/article/pii/S0747717121000419 |journal=Journal of Symbolic Computation |language=en |volume=108 |pages=98–116 |doi=10.1016/j.jsc.2021.06.005 |issn=0747-7171}}</ref><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>\left( 1 - \frac{2}{q^{b-k}} \right)^2 \geq 1/9 & \text{if }b \geq k+1\text{ and }q > 2\end{cases}</math><ins style="font-weight: bold; text-decoration: none;">.</ins><ref>{{Cite journal |last=Harrison |first=Gavin |last2=Johnson |first2=Jeremy |last3=Saunders |first3=B. David |date=2022-01-01 |title=Probabilistic analysis of block Wiedemann for leading invariant factors |url=https://www.sciencedirect.com/science/article/pii/S0747717121000419 |journal=Journal of Symbolic Computation |language=en |volume=108 |pages=98–116 |doi=10.1016/j.jsc.2021.06.005 |issn=0747-7171}}</ref></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></div></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></div></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>== References ==</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>== References ==</div></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>{{Reflist}}</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>Wiedemann, D., "Solving sparse linear equations over finite fields," IEEE Trans. Inf. Theory IT-32, pp. 54-62, 1986.</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><ins style="font-weight: bold; text-decoration: none;">* </ins>Wiedemann, D., "Solving sparse linear equations over finite fields," IEEE Trans. Inf. Theory IT-32, pp. 54-62, 1986.</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>D. Coppersmith, Solving homogeneous linear equations over GF(2) via block Wiedemann algorithm, Math. Comp. 62 (1994), 333-350.</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><ins style="font-weight: bold; text-decoration: none;">* </ins>D. Coppersmith, Solving homogeneous linear equations over GF(2) via block Wiedemann algorithm, Math. Comp. 62 (1994), 333-350.</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>Villard's 1997 research report '[http://citeseer.ist.psu.edu/cache/papers/cs/4204/ftp:zSzzSzftp.imag.frzSzpubzSzCALCUL_FORMELzSzRAPPORTzSz1997zSzRR975.pdf A study of Coppersmith's block Wiedemann algorithm using matrix polynomials]' (the cover material is in French but the content in English) is a reasonable description.</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><ins style="font-weight: bold; text-decoration: none;">* </ins>Villard's 1997 research report '[http://citeseer.ist.psu.edu/cache/papers/cs/4204/ftp:zSzzSzftp.imag.frzSzpubzSzCALCUL_FORMELzSzRAPPORTzSz1997zSzRR975.pdf A study of Coppersmith's block Wiedemann algorithm using matrix polynomials]' (the cover material is in French but the content in English) is a reasonable description.</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>Thomé's paper '[http://hal.archives-ouvertes.fr/docs/00/10/34/17/PDF/jsc.pdf Subquadratic computation of vector generating polynomials and improvement of the block Wiedemann algorithm]' uses a more sophisticated [[Fast Fourier transform|FFT]]-based algorithm for computing the vector generating polynomials, and describes a practical implementation with ''i''<sub>max</sub>&nbsp;=&nbsp;''j''<sub>max</sub>&nbsp;=&nbsp;4 used to compute a kernel vector of a 484603×484603 matrix of entries modulo 2<sup>607</sup>−1, and hence to compute discrete logarithms in the field ''GF''(2<sup>607</sup>).</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><ins style="font-weight: bold; text-decoration: none;">* </ins>Thomé's paper '[http://hal.archives-ouvertes.fr/docs/00/10/34/17/PDF/jsc.pdf Subquadratic computation of vector generating polynomials and improvement of the block Wiedemann algorithm]' uses a more sophisticated [[Fast Fourier transform|FFT]]-based algorithm for computing the vector generating polynomials, and describes a practical implementation with ''i''<sub>max</sub>&nbsp;=&nbsp;''j''<sub>max</sub>&nbsp;=&nbsp;4 used to compute a kernel vector of a 484603×484603 matrix of entries modulo 2<sup>607</sup>−1, and hence to compute discrete logarithms in the field ''GF''(2<sup>607</sup>).</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>{{Numerical linear algebra}}</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>{{Numerical linear algebra}}</div></td>
</tr>
</table>
GünniX
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=1142304512&oldid=prev
Bruce1ee: fixed lint errors – obsolete center HTML tags
2023-03-01T17:36:41Z
<p>fixed <a href="/wiki/Special:LintErrors" title="Special:LintErrors">lint errors</a> – obsolete center HTML tags</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:36, 1 March 2023</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>The block Wiedemann algorithm can be used to calculate the leading [[Invariant factor|invariant factors]] of the matrix, ie, the largest blocks of the [[Frobenius normal form]]. Given <math>M \in F_q^{n \times n}</math> and <math>U, V \in F_q^{b \times n}</math> where <math>F_q</math> is a finite field of size <math>q</math>, the probability <math>p</math> that the leading <math>k < b</math> invariant factors of <math>M</math> are preserved in <math>\sum_{i=0}^{2n-1}UM^iV^T x^i</math> is</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 block Wiedemann algorithm can be used to calculate the leading [[Invariant factor|invariant factors]] of the matrix, ie, the largest blocks of the [[Frobenius normal form]]. Given <math>M \in F_q^{n \times n}</math> and <math>U, V \in F_q^{b \times n}</math> where <math>F_q</math> is a finite field of size <math>q</math>, the probability <math>p</math> that the leading <math>k < b</math> invariant factors of <math>M</math> are preserved in <math>\sum_{i=0}^{2n-1}UM^iV^T x^i</math> is</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><center></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><<ins style="font-weight: bold; text-decoration: none;">div class="</ins>center<ins style="font-weight: bold; text-decoration: none;">"</ins>></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><math>p \geq \begin{cases} 1/64, & \text{if }b = k+1\text{ and } q=2 \\ \left( 1 - \frac{3}{2^{b-k}} \right)^2 \geq 1/16 & \text{if }b \geq k+2\text{ and } q=2 \\ </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><math>p \geq \begin{cases} 1/64, & \text{if }b = k+1\text{ and } q=2 \\ \left( 1 - \frac{3}{2^{b-k}} \right)^2 \geq 1/16 & \text{if }b \geq k+2\text{ and } q=2 \\ </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>\left( 1 - \frac{2}{q^{b-k}} \right)^2 \geq 1/9 & \text{if }b \geq k+1\text{ and }q > 2\end{cases}</math> <ref>{{Cite journal |last=Harrison |first=Gavin |last2=Johnson |first2=Jeremy |last3=Saunders |first3=B. David |date=2022-01-01 |title=Probabilistic analysis of block Wiedemann for leading invariant factors |url=https://www.sciencedirect.com/science/article/pii/S0747717121000419 |journal=Journal of Symbolic Computation |language=en |volume=108 |pages=98–116 |doi=10.1016/j.jsc.2021.06.005 |issn=0747-7171}}</ref>.</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>\left( 1 - \frac{2}{q^{b-k}} \right)^2 \geq 1/9 & \text{if }b \geq k+1\text{ and }q > 2\end{cases}</math> <ref>{{Cite journal |last=Harrison |first=Gavin |last2=Johnson |first2=Jeremy |last3=Saunders |first3=B. David |date=2022-01-01 |title=Probabilistic analysis of block Wiedemann for leading invariant factors |url=https://www.sciencedirect.com/science/article/pii/S0747717121000419 |journal=Journal of Symbolic Computation |language=en |volume=108 |pages=98–116 |doi=10.1016/j.jsc.2021.06.005 |issn=0747-7171}}</ref>.</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></<del style="font-weight: bold; text-decoration: none;">center</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></<ins style="font-weight: bold; text-decoration: none;">div</ins>></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>== References ==</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>== References ==</div></td>
</tr>
</table>
Bruce1ee
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=1142301054&oldid=prev
198.52.235.3: Added probability bound for leading invariant factor calculation using the block Wiedemann algorithm.
2023-03-01T17:11:59Z
<p>Added probability bound for leading invariant factor calculation using the block Wiedemann algorithm.</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:11, 1 March 2023</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 14:</td>
<td colspan="2" class="diff-lineno">Line 14:</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>It turns out, by a generalization of the Berlekamp–Massey algorithm to provide a sequence of small matrices, that you can take the sequence produced for a large number of vectors and generate a kernel vector of the original large matrix. You need to compute <math> y_i \cdot M^t x_j</math> for some <math>i = 0 \ldots i_\max, j=0 \ldots j_\max, t = 0 \ldots t_\max</math> where <math>i_\max, j_\max, t_\max</math> need to satisfy <math>t_\max > \frac{d}{i_\max} + \frac{d}{j_\max} + O(1)</math> and <math>y_i</math> are a series of vectors of length n; but in practice you can take <math>y_i</math> as a sequence of unit vectors and simply write out the first <math>i_\max</math> entries in your vectors at each time ''t''.</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>It turns out, by a generalization of the Berlekamp–Massey algorithm to provide a sequence of small matrices, that you can take the sequence produced for a large number of vectors and generate a kernel vector of the original large matrix. You need to compute <math> y_i \cdot M^t x_j</math> for some <math>i = 0 \ldots i_\max, j=0 \ldots j_\max, t = 0 \ldots t_\max</math> where <math>i_\max, j_\max, t_\max</math> need to satisfy <math>t_\max > \frac{d}{i_\max} + \frac{d}{j_\max} + O(1)</math> and <math>y_i</math> are a series of vectors of length n; but in practice you can take <math>y_i</math> as a sequence of unit vectors and simply write out the first <math>i_\max</math> entries in your vectors at each time ''t''.</div></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;"><br /></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>== Invariant Factor Calculation ==</div></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>The block Wiedemann algorithm can be used to calculate the leading [[Invariant factor|invariant factors]] of the matrix, ie, the largest blocks of the [[Frobenius normal form]]. Given <math>M \in F_q^{n \times n}</math> and <math>U, V \in F_q^{b \times n}</math> where <math>F_q</math> is a finite field of size <math>q</math>, the probability <math>p</math> that the leading <math>k < b</math> invariant factors of <math>M</math> are preserved in <math>\sum_{i=0}^{2n-1}UM^iV^T x^i</math> is</div></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;"><br /></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><center></div></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><math>p \geq \begin{cases} 1/64, & \text{if }b = k+1\text{ and } q=2 \\ \left( 1 - \frac{3}{2^{b-k}} \right)^2 \geq 1/16 & \text{if }b \geq k+2\text{ and } q=2 \\ </div></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>\left( 1 - \frac{2}{q^{b-k}} \right)^2 \geq 1/9 & \text{if }b \geq k+1\text{ and }q > 2\end{cases}</math> <ref>{{Cite journal |last=Harrison |first=Gavin |last2=Johnson |first2=Jeremy |last3=Saunders |first3=B. David |date=2022-01-01 |title=Probabilistic analysis of block Wiedemann for leading invariant factors |url=https://www.sciencedirect.com/science/article/pii/S0747717121000419 |journal=Journal of Symbolic Computation |language=en |volume=108 |pages=98–116 |doi=10.1016/j.jsc.2021.06.005 |issn=0747-7171}}</ref>.</div></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></center></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>== References ==</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>== References ==</div></td>
</tr>
</table>
198.52.235.3
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=1091944571&oldid=prev
AlexanderJHabib: I did not know that the British spelling for generalization was so different. Change it back if you like. No harm meant.
2022-06-07T09:36:12Z
<p>I did not know that the British spelling for generalization was so different. Change it back if you like. No harm meant.</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 09:36, 7 June 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" 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 '''block Wiedemann algorithm''' for computing [[kernel (linear algebra)|kernel]] [[vector space|vectors]] of a [[matrix (mathematics)|matrix]] over a [[finite field]] is a <del style="font-weight: bold; text-decoration: none;">generalisation</del> by [[Don Coppersmith]] of an algorithm due to Doug Wiedemann.</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 '''block Wiedemann algorithm''' for computing [[kernel (linear algebra)|kernel]] [[vector space|vectors]] of a [[matrix (mathematics)|matrix]] over a [[finite field]] is a <ins style="font-weight: bold; text-decoration: none;">generalization</ins> by [[Don Coppersmith]] of an algorithm due to Doug Wiedemann.</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>== Wiedemann'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>== Wiedemann's algorithm ==</div></td>
</tr>
</table>
AlexanderJHabib
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=1083927740&oldid=prev
Ciphergoth: wikilink the lede
2022-04-21T16:17:33Z
<p>wikilink the lede</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:17, 21 April 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" 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 '''block Wiedemann algorithm''' for computing kernel vectors of a [[matrix (mathematics)|matrix]] over a finite field is a generalisation by [[Don Coppersmith]] of an algorithm due to Doug Wiedemann.</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 '''block Wiedemann algorithm''' for computing <ins style="font-weight: bold; text-decoration: none;">[[</ins>kernel <ins style="font-weight: bold; text-decoration: none;">(linear algebra)|kernel]] [[vector space|</ins>vectors<ins style="font-weight: bold; text-decoration: none;">]]</ins> of a [[matrix (mathematics)|matrix]] over a <ins style="font-weight: bold; text-decoration: none;">[[</ins>finite field<ins style="font-weight: bold; text-decoration: none;">]]</ins> is a generalisation by [[Don Coppersmith]] of an algorithm due to Doug Wiedemann.</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>== Wiedemann'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>== Wiedemann's algorithm ==</div></td>
</tr>
</table>
Ciphergoth
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=1022697230&oldid=prev
172.88.126.150: Algorithm and modification to it were wrongly named and attributed. Also I included references to the original papers.
2021-05-12T00:06:53Z
<p>Algorithm and modification to it were wrongly named and attributed. Also I included references to the original papers.</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 00:06, 12 May 2021</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>The '''block Wiedemann algorithm''' for computing kernel vectors of a [[matrix (mathematics)|matrix]] over a finite field is a generalisation of an algorithm due to <del style="font-weight: bold; text-decoration: none;">[[Don</del> <del style="font-weight: bold; text-decoration: none;">Coppersmith]]</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 '''block Wiedemann algorithm''' for computing kernel vectors of a [[matrix (mathematics)|matrix]] over a finite field is a generalisation<ins style="font-weight: bold; text-decoration: none;"> by [[Don Coppersmith]]</ins> of an algorithm due to <ins style="font-weight: bold; text-decoration: none;">Doug</ins> <ins style="font-weight: bold; text-decoration: none;">Wiedemann</ins>.</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>== <del style="font-weight: bold; text-decoration: none;">Coppersmith</del>'s algorithm ==</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>== <ins style="font-weight: bold; text-decoration: none;">Wiedemann</ins>'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"></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 <math>M</math> be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length <math>n</math>, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix <math>M</math>; let <math>y</math> be any other vector of length <math>n</math>, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></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 <math>M</math> be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length <math>n</math>, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix <math>M</math>; let <math>y</math> be any other vector of length <math>n</math>, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></div></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 9:</td>
<td colspan="2" class="diff-lineno">Line 9:</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>But the [[Berlekamp–Massey algorithm]] allows us to calculate relatively efficiently some sequence <math>q_0 \ldots q_L</math> with <math>\sum_{i=0}^L q_i S_y[{i+r}]=0 \;\forall \; r</math>. Our hope is that this sequence, which by construction annihilates <math>y \cdot S</math>, actually annihilates <math>S</math>; so we have <math>\sum_{i=0}^L q_i M^i x = 0</math>. We then take advantage of the initial definition of <math>x</math> to say <math>M \sum_{i=0}^L q_i M^i x_{\mathrm {base}} = 0</math> and so <math>\sum_{i=0}^L q_i M^i x_{\mathrm {base}}</math> is a hopefully non-zero kernel vector of <math>M</math>.</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>But the [[Berlekamp–Massey algorithm]] allows us to calculate relatively efficiently some sequence <math>q_0 \ldots q_L</math> with <math>\sum_{i=0}^L q_i S_y[{i+r}]=0 \;\forall \; r</math>. Our hope is that this sequence, which by construction annihilates <math>y \cdot S</math>, actually annihilates <math>S</math>; so we have <math>\sum_{i=0}^L q_i M^i x = 0</math>. We then take advantage of the initial definition of <math>x</math> to say <math>M \sum_{i=0}^L q_i M^i x_{\mathrm {base}} = 0</math> and so <math>\sum_{i=0}^L q_i M^i x_{\mathrm {base}}</math> is a hopefully non-zero kernel vector of <math>M</math>.</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 block Wiedemann algorithm ==</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 block Wiedemann<ins style="font-weight: bold; text-decoration: none;"> (or Coppersmith-Wiedemann)</ins> 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"></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 natural implementation of sparse matrix arithmetic on a computer makes it easy to compute the sequence ''S'' in parallel for a number of vectors equal to the width of a machine word – indeed, it will normally take no longer to compute for that many vectors than for one. If you have several processors, you can compute the sequence S for a different set of random vectors in parallel on all the computers.</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 natural implementation of sparse matrix arithmetic on a computer makes it easy to compute the sequence ''S'' in parallel for a number of vectors equal to the width of a machine word – indeed, it will normally take no longer to compute for that many vectors than for one. If you have several processors, you can compute the sequence S for a different set of random vectors in parallel on all the computers.</div></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 16:</td>
<td colspan="2" class="diff-lineno">Line 16:</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>== References ==</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>== References ==</div></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;"><br /></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>Wiedemann, D., "Solving sparse linear equations over finite fields," IEEE Trans. Inf. Theory IT-32, pp. 54-62, 1986.</div></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;"><br /></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>D. Coppersmith, Solving homogeneous linear equations over GF(2) via block Wiedemann algorithm, Math. Comp. 62 (1994), 333-350.</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>Villard's 1997 research report '[http://citeseer.ist.psu.edu/cache/papers/cs/4204/ftp:zSzzSzftp.imag.frzSzpubzSzCALCUL_FORMELzSzRAPPORTzSz1997zSzRR975.pdf A study of Coppersmith's block Wiedemann algorithm using matrix polynomials]' (the cover material is in French but the content in English) is a reasonable description.</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>Villard's 1997 research report '[http://citeseer.ist.psu.edu/cache/papers/cs/4204/ftp:zSzzSzftp.imag.frzSzpubzSzCALCUL_FORMELzSzRAPPORTzSz1997zSzRR975.pdf A study of Coppersmith's block Wiedemann algorithm using matrix polynomials]' (the cover material is in French but the content in English) is a reasonable description.</div></td>
</tr>
</table>
172.88.126.150
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=720122510&oldid=prev
166.137.178.185 at 21:40, 13 May 2016
2016-05-13T21:40:56Z
<p></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 21:40, 13 May 2016</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 3:</td>
<td colspan="2" class="diff-lineno">Line 3:</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>== Coppersmith'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>== Coppersmith'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>Let M be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length n, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix M; let y be any other vector of length <math>n</math>, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></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 <ins style="font-weight: bold; text-decoration: none;"><math></ins>M<ins style="font-weight: bold; text-decoration: none;"></math></ins> be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length <ins style="font-weight: bold; text-decoration: none;"><math></ins>n<ins style="font-weight: bold; text-decoration: none;"></math></ins>, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix <ins style="font-weight: bold; text-decoration: none;"><math></ins>M<ins style="font-weight: bold; text-decoration: none;"></math></ins>; let <ins style="font-weight: bold; text-decoration: none;"><math></ins>y<ins style="font-weight: bold; text-decoration: none;"></math></ins> be any other vector of length <math>n</math>, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></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>We know that the matrix M has a [[Minimal_polynomial_(linear_algebra)|minimal polynomial]]; by the [[Cayley–Hamilton theorem]] we know that this polynomial is of degree (which we will call <math>n_0</math>) no more than n. Say <math>\sum_{r=0}^{n_0} p_rM^r = 0</math>. Then <math>\sum_{r=0}^{n_0} y \cdot (p_r (M^r x)) = 0</math>; so the minimal polynomial of the matrix annihilates the sequence <math>S</math> and hence <math>S_y</math>.</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>We know that the matrix <ins style="font-weight: bold; text-decoration: none;"><math></ins>M<ins style="font-weight: bold; text-decoration: none;"></math></ins> has a [[Minimal_polynomial_(linear_algebra)|minimal polynomial]]; by the [[Cayley–Hamilton theorem]] we know that this polynomial is of degree (which we will call <math>n_0</math>) no more than <ins style="font-weight: bold; text-decoration: none;"><math></ins>n<ins style="font-weight: bold; text-decoration: none;"></math></ins>. Say <math>\sum_{r=0}^{n_0} p_rM^r = 0</math>. Then <math>\sum_{r=0}^{n_0} y \cdot (p_r (M^r x)) = 0</math>; so the minimal polynomial of the matrix annihilates the sequence <math>S</math> and hence <math>S_y</math>.</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>But the [[Berlekamp–Massey algorithm]] allows us to calculate relatively efficiently some sequence <math>q_0 \ldots q_L</math> with <math>\sum_{i=0}^L q_i S_y[{i+r}]=0 \forall r</math>.<del style="font-weight: bold; text-decoration: none;"> </del> Our hope is that this sequence, which by construction annihilates <math>y \cdot S</math>, actually annihilates <math>S</math>; so we have <math>\sum_{i=0}^L q_i M^i x = 0</math>. We then take advantage of the initial definition of <math>x</math> to say <math>M \sum_{i=0}^L q_i M^i x_{\mathrm {base}} = 0</math> and so <math>\sum_{i=0}^L q_i M^i x_{\mathrm {base}}</math> is a hopefully non-zero kernel vector of <math>M</math>.</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>But the [[Berlekamp–Massey algorithm]] allows us to calculate relatively efficiently some sequence <math>q_0 \ldots q_L</math> with <math>\sum_{i=0}^L q_i S_y[{i+r}]=0 <ins style="font-weight: bold; text-decoration: none;">\;</ins>\forall<ins style="font-weight: bold; text-decoration: none;"> \;</ins> r</math>. Our hope is that this sequence, which by construction annihilates <math>y \cdot S</math>, actually annihilates <math>S</math>; so we have <math>\sum_{i=0}^L q_i M^i x = 0</math>. We then take advantage of the initial definition of <math>x</math> to say <math>M \sum_{i=0}^L q_i M^i x_{\mathrm {base}} = 0</math> and so <math>\sum_{i=0}^L q_i M^i x_{\mathrm {base}}</math> is a hopefully non-zero kernel vector of <math>M</math>.</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 block Wiedemann 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>== The block Wiedemann algorithm ==</div></td>
</tr>
</table>
166.137.178.185
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=720119543&oldid=prev
166.137.178.185 at 21:18, 13 May 2016
2016-05-13T21:18:13Z
<p></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 21:18, 13 May 2016</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 3:</td>
<td colspan="2" class="diff-lineno">Line 3:</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>== Coppersmith'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>== Coppersmith'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>Let M be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length n, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix M; let y be any other vector of length n, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></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 M be an <math>n\times n</math> [[square matrix]] over some [[finite field]] F, let <math>x_{\mathrm {base}}</math> be a random vector of length n, and let <math>x = M x_{\mathrm {base}}</math>. Consider the sequence of vectors <math>S = \left[x, Mx, M^2x, \ldots\right]</math> obtained by repeatedly multiplying the vector by the matrix M; let y be any other vector of length <ins style="font-weight: bold; text-decoration: none;"><math></ins>n<ins style="font-weight: bold; text-decoration: none;"></math></ins>, and consider the sequence of finite-field elements <math>S_y = \left[y \cdot x, y \cdot Mx, y \cdot M^2x \ldots\right]</math></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 know that the matrix M has a [[Minimal_polynomial_(linear_algebra)|minimal polynomial]]; by the [[Cayley–Hamilton theorem]] we know that this polynomial is of degree (which we will call <math>n_0</math>) no more than n. Say <math>\sum_{r=0}^{n_0} p_rM^r = 0</math>. Then <math>\sum_{r=0}^{n_0} y \cdot (p_r (M^r x)) = 0</math>; so the minimal polynomial of the matrix annihilates the sequence <math>S</math> and hence <math>S_y</math>.</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 know that the matrix M has a [[Minimal_polynomial_(linear_algebra)|minimal polynomial]]; by the [[Cayley–Hamilton theorem]] we know that this polynomial is of degree (which we will call <math>n_0</math>) no more than n. Say <math>\sum_{r=0}^{n_0} p_rM^r = 0</math>. Then <math>\sum_{r=0}^{n_0} y \cdot (p_r (M^r x)) = 0</math>; so the minimal polynomial of the matrix annihilates the sequence <math>S</math> and hence <math>S_y</math>.</div></td>
</tr>
</table>
166.137.178.185
https://en.wikipedia.org/w/index.php?title=Block_Wiedemann_algorithm&diff=601994760&oldid=prev
88.137.8.229: /* References */
2014-03-30T19:03:57Z
<p><span class="autocomment">References</span></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 19:03, 30 March 2014</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 19:</td>
<td colspan="2" class="diff-lineno">Line 19:</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>Villard's 1997 research report '[http://citeseer.ist.psu.edu/cache/papers/cs/4204/ftp:zSzzSzftp.imag.frzSzpubzSzCALCUL_FORMELzSzRAPPORTzSz1997zSzRR975.pdf A study of Coppersmith's block Wiedemann algorithm using matrix polynomials]' (the cover material is in French but the content in English) is a reasonable description.</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>Villard's 1997 research report '[http://citeseer.ist.psu.edu/cache/papers/cs/4204/ftp:zSzzSzftp.imag.frzSzpubzSzCALCUL_FORMELzSzRAPPORTzSz1997zSzRR975.pdf A study of Coppersmith's block Wiedemann algorithm using matrix polynomials]' (the cover material is in French but the content in English) is a reasonable description.</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>Thomé's paper '[http://<del style="font-weight: bold; text-decoration: none;">citeseer</del>.<del style="font-weight: bold; text-decoration: none;">ist</del>.<del style="font-weight: bold; text-decoration: none;">psu.edu</del>/<del style="font-weight: bold; text-decoration: none;">rd</del>/<del style="font-weight: bold; text-decoration: none;">13850609%2C564537%2C1%2C0.25%2CDownload</del>/<del style="font-weight: bold; text-decoration: none;">http:</del>//<del style="font-weight: bold; text-decoration: none;">citeseer.ist.psu.edu</del>/<del style="font-weight: bold; text-decoration: none;">cache</del>/<del style="font-weight: bold; text-decoration: none;">papers/cs/27081/http:zSzzSzwww.lix.polytechnique.frzSzLabozSzEmmanuel.ThomezSzpubliszSzjsc.pdf/subquadratic-computation-of-vector</del>.pdf Subquadratic computation of vector generating polynomials and improvement of the block Wiedemann algorithm]' uses a more sophisticated [[Fast Fourier transform|FFT]]-based algorithm for computing the vector generating polynomials, and describes a practical implementation with ''i''<sub>max</sub>&nbsp;=&nbsp;''j''<sub>max</sub>&nbsp;=&nbsp;4 used to compute a kernel vector of a 484603×484603 matrix of entries modulo 2<sup>607</sup>−1, and hence to compute discrete logarithms in the field ''GF''(2<sup>607</sup>).</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>Thomé's paper '[http://<ins style="font-weight: bold; text-decoration: none;">hal</ins>.<ins style="font-weight: bold; text-decoration: none;">archives-ouvertes</ins>.<ins style="font-weight: bold; text-decoration: none;">fr</ins>/<ins style="font-weight: bold; text-decoration: none;">docs</ins>/<ins style="font-weight: bold; text-decoration: none;">00</ins>/<ins style="font-weight: bold; text-decoration: none;">10</ins>/<ins style="font-weight: bold; text-decoration: none;">34</ins>/<ins style="font-weight: bold; text-decoration: none;">17</ins>/<ins style="font-weight: bold; text-decoration: none;">PDF</ins>/<ins style="font-weight: bold; text-decoration: none;">jsc</ins>.pdf Subquadratic computation of vector generating polynomials and improvement of the block Wiedemann algorithm]' uses a more sophisticated [[Fast Fourier transform|FFT]]-based algorithm for computing the vector generating polynomials, and describes a practical implementation with ''i''<sub>max</sub>&nbsp;=&nbsp;''j''<sub>max</sub>&nbsp;=&nbsp;4 used to compute a kernel vector of a 484603×484603 matrix of entries modulo 2<sup>607</sup>−1, and hence to compute discrete logarithms in the field ''GF''(2<sup>607</sup>).</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>{{Numerical linear algebra}}</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>{{Numerical linear algebra}}</div></td>
</tr>
</table>
88.137.8.229