【学习笔记】Half-GCD

这里是一份快速讲解(即有些东西不严谨)。

最初看 E l e g i a \sf Elegia Elegia博客,讲得倒是很好,就是留了个疑问未解决——我现在还在评论区里。

但看了 w h x 1003 \sf whx1003 whx1003博客之后,该疑问就被解开了。因此可以认真讲讲。

算法动机:作除法时,计算商的复杂度是对的。但是每次的商太短,导致计算余数很慢;如果能够将多次取模统一计算,则可以加速。而且,计算商的时候,一般只会用到次数较高的项。

算法目标:对 a , b ∈ F [ z ] a,b\in{\Bbb F}[z] a,bF[z],求矩阵 [ x 1 y 1 x 2 y 2 ] \begin{bmatrix}x_1 & y_1\\x_2 & y_2\end{bmatrix} [x1x2y1y2] 使得
deg ⁡ ( x ) , deg ⁡ ( a x 1 + b y 1 ) , deg ⁡ ( a x 2 + b y 2 ) ⩽ k 2 + o ( k ) \deg(x),\deg(ax_1{+}by_1),\deg(ax_2{+}by_2)\leqslant\frac{k}{2}+o(k) deg(x),deg(ax1+by1),deg(ax2+by2)2k+o(k)

其中 k = max ⁡ { deg ⁡ a ,    deg ⁡ b } k=\max\{\deg a,\;\deg b\} k=max{dega,degb} 。当然 x 2 + y 2 ≠ 0 x^2+y^2\ne 0 x2+y2=0

不难发现 deg ⁡ gcd ⁡ ( a , b ) > k 2 \deg\gcd(a,b)>\frac{k}{2} deggcd(a,b)>2k 时,该目标无法实现。因此,事实上它的目标是
deg ⁡ ( a x 1 + b y 1 ) ⩾ k 2 ⩾ deg ⁡ ( a x 2 + b y 2 ) \deg(ax_1{+}by_1)\geqslant\frac{k}{2}\geqslant\deg(ax_2{+}by_2) deg(ax1+by1)2kdeg(ax2+by2)

然后再做了一次取模。而 a x 2 + b y 2 = 0 ax_2+by_2=0 ax2+by2=0 时,实际上无法进行这次取模。

算法流程:设 a = a 0 + a 1 z k / 2 ,    b = b 0 + b 1 z k / 2 a=a_0+a_1z^{k/2},\;b=b_0+b_1z^{k/2} a=a0+a1zk/2,b=b0+b1zk/2,先求出 ( a 1 , b 1 ) (a_1,b_1) (a1,b1) Half-GCD \textit{Half-GCD} Half-GCD 结果,则对于每行的 x , y x,y x,y,有 deg ⁡ ( a 1 x + b 1 y ) ⩽ k 4 + o ( k ) \deg(a_1x+b_1y)\leqslant\frac{k}{4}+o(k) deg(a1x+b1y)4k+o(k),且 deg ⁡ ( a 0 x + b 0 y ) ⩽ 3 4 k + o ( k ) \deg(a_0x+b_0y)\leqslant\frac{3}{4}k+o(k) deg(a0x+b0y)43k+o(k),因而 deg ⁡ ( a x + b y ) ⩽ 3 4 k + o ( k ) \deg(ax+by)\leqslant\frac{3}{4}k+o(k) deg(ax+by)43k+o(k)

特别地,若此时求出的矩阵已经使得 a 1 x 1 + b 1 y 1 = 0 a_1x_1+b_1y_1=0 a1x1+b1y1=0 了,如果 a x 1 + b y 1 = 0 ax_1+by_1=0 ax1+by1=0 就返回该矩阵即可,否则让 ( a x 0 + b y 0 ) (ax_0+by_0) (ax0+by0) ( a x 1 + b y 1 ) (ax_1+by_1) (ax1+by1) 取模即可。

我们把两行乘出来的两个多项式,移除前 k 4 \frac{k}{4} 4k 项(即除以 z k / 4 z^{k/4} zk/4 再去除负数次项),重新作 Half-GCD \textit{Half-GCD} Half-GCD 。递归返回的多项式的度数是 1 4 k + o ( k ) \frac{1}{4}k+o(k) 41k+o(k) 的,和上一个矩阵一样。通过类似的分析可知,这个矩阵对之前乘出的多项式进行变换后,度数是 1 2 k + o ( k ) {1\over 2}k+o(k) 21k+o(k) 级别的。

所以两个矩阵相乘就是所需的结果——矩阵内元素的度数恰好是 1 2 k + o ( k ) \frac{1}{2}k+o(k) 21k+o(k) 的。时间复杂度 T ( n ) = 2 T ( n 2 ) + M ( n ) = O ( M ( n ) log ⁡ n ) \mathcal T(n)=2\mathcal T({n\over 2})+\mathcal M(n)=\mathcal O(\mathcal M(n)\log n) T(n)=2T(2n)+M(n)=O(M(n)logn),其中 M ( n ) \mathcal M(n) M(n) deg ⁡ = n \deg=n deg=n 的多项式乘法的复杂度。

代码实现的技巧:在 Half-GCD \textit{Half-GCD} Half-GCD 时,顺便返回矩阵与列向量的乘积。


下面是 w h x 1003 \sf whx1003 whx1003 的讲解,我也摘抄一份。

M G = [ G 1 1 0 ]    ( G ∈ F [ x ] ) \mathbf M_G=\begin{bmatrix}G & 1\\ 1 & 0\end{bmatrix}\;(G\in\mathbb F[x]) MG=[G110](GF[x]) 是系数属于 F [ x ] \mathbb F[x] F[x] 的矩阵,其中 G ≠ 0 G\ne 0 G=0 G G G 的最高次项系数为正。

考虑 gcd ⁡ \gcd gcd 的过程,每次求出商 Q ( x ) = A ( x ) ÷ B ( x ) Q(x)=A(x)\div B(x) Q(x)=A(x)÷B(x) 后得到
[ B ( x ) A ( x )   m o d   B ( x ) ] = [ 0 1 1 − Q ( x ) ] [ A ( x ) B ( x ) ] \begin{bmatrix} B(x) \\ A(x)\bmod B(x) \end{bmatrix} =\begin{bmatrix} 0 & 1 \\ 1 & -Q(x) \end{bmatrix} \begin{bmatrix} A(x) \\ B(x) \end{bmatrix} [B(x)A(x)modB(x)]=[011Q(x)][A(x)B(x)]

注意到该线性变换就是 M Q − 1 \mathbf M_Q^{-1} MQ1 。因此我们只需求出 ∏ M G \prod\mathbf M_G MG,即可直接计算出 gcd ⁡ \gcd gcd 的结果。

Comment. 事实上对于矩阵 A = [ a b c d ] \mathscr A=\begin{bmatrix} a & b \\ c & d \end{bmatrix} A=[acbd],若 det ⁡ ( A ) = s \det(\mathscr A)=s det(A)=s
A − 1 = s − 1 [ d − b − c a ] \mathscr A^{-1}=s^{-1}\begin{bmatrix} d & -b\\ -c & a \end{bmatrix} A1=s1[dcba]
暴力展开不难验证。这可能是二阶矩阵逆元的速算方法吧。

称矩阵 A \mathscr A A r e g u l a r \rm regular regular 的,当且仅当 A \mathscr A A 是若干 M G \mathbf M_G MG 的乘积。注意 r e g u l a r \rm regular regular 矩阵未必是对称的。

稍微降低点要求,我们只希望求出 r e g u l a r \rm regular regular 矩阵 A \mathscr A A 使得 [ C ( x ) D ( x ) ] = A − 1 [ A ( x ) B ( x ) ] \begin{bmatrix}C(x)\\D(x)\end{bmatrix}=\mathscr A^{-1}\begin{bmatrix}A(x)\\B(x)\end{bmatrix} [C(x)D(x)]=A1[A(x)B(x)] 满足 deg ⁡ D ( x ) ⩽ 1 2 deg ⁡ A ( x ) \deg D(x)\leqslant\frac{1}{2}\deg A(x) degD(x)21degA(x) 。这显然可行,因为最终 D ( x ) = 0 D(x)=0 D(x)=0

Lemma 1.( ordering property \text{ordering property} ordering property)  r e g u l a r \rm regular regular 矩阵元素的 deg ⁡ \deg deg 在行和列上都单调不增,且其中非零元素的最高次项都为正。

归纳法不难证明之。事实上 r e g u l a r \rm regular regular 矩阵的 det ⁡ = ± 1 \det=\pm 1 det=±1,因此其 deg ⁡ \deg deg 还有个等式关系。但是没啥用。

Lemma 2. 设 deg ⁡ A > deg ⁡ B \deg A>\deg B degA>degB,设 m m m 是某常数而 A \mathscr A A r e g u l a r \rm regular regular 矩阵,令
A ′ = x m A 0 ′ + A 1 ′ B ′ = x m B 0 ′ + B 1 ′ \mathcal A'=x^m\mathcal A'_0+\mathcal A'_1\\ \mathcal B'=x^m\mathcal B'_0+\mathcal B'_1 A=xmA0+A1B=xmB0+B1

其中
[ A j ′ B j ′ ] = A − 1 [ A j B j ] for  j = 0 , 1 (1) \begin{bmatrix} \mathcal A'_j\\ \mathcal B'_j \end{bmatrix}= \mathscr A^{-1} \begin{bmatrix} A_j\\ B_j \end{bmatrix} \quad\text{for }j=0,1 \tag{1} [AjBj]=A1[AjBj]for j=0,1(1)

其中 A = x m A 0 + A 1 A=x^mA_0+A_1 A=xmA0+A1 B = x m B 0 + B 1 B=x^mB_0+B_1 B=xmB0+B1,满足 deg ⁡ A 1 , deg ⁡ B 1 < m \deg A_1,\deg B_1<m degA1,degB1<m

Comment. 因为 A ′ A' A 的记法似乎易引起歧义,我试图用 A \mathcal A A 代替,但是二者的区分度又太低。我只好二者同时使用,并且不加 ( x ) (x) (x) 以避免歧义。

deg ⁡ A 0 ′ > deg ⁡ B 0 ′ \deg\mathcal A'_0>\deg\mathcal B'_0 degA0>degB0 deg ⁡ A 0 ⩽ 2 deg ⁡ A 0 ′ \deg A_0\leqslant 2\deg\mathcal A'_0 degA02degA0,则
deg ⁡ A ′ = m + deg ⁡ A 0 ′ deg ⁡ B ′ ⩽ m + max ⁡ { deg ⁡ B 0 ′ ,    deg ⁡ ( A 0 ) − deg ⁡ ( A 0 ′ ) − 1 } \deg\mathcal A'=m+\deg\mathcal A_0'\\ \deg\mathcal B'\leqslant m+\max\{\deg\mathcal B_0',\;\deg(A_0){-}\deg(\mathcal A'_0){-}1 \} degA=m+degA0degBm+max{degB0,deg(A0)deg(A0)1}

Proof. 可能把该引理读懂是最大的挑战

对那些定义的直观感受:将 A , B A,B A,B 按照 x m x^m xm 分开后,分别进行 A \mathscr A A 变换再合并。

对限制条件的直观感受:我们要做辗转相除,因此 deg ⁡ A > deg ⁡ B \deg A>\deg B degA>degB 总成立。而 A 0 ′ \mathcal A_0' A0 不是特别短时,余数的次数由高次项决定。

现在开始证明。设 A = [ P Q R S ] \mathscr A=\begin{bmatrix}P & Q\\R & S\end{bmatrix} A=[PRQS],由 ( 1 ) (1) (1) 式移项知 A 0 = P A 0 ′ + Q B 0 ′ A_0=P\mathcal A_0'+Q\mathcal B_0' A0=PA0+QB0,由 Lemma 1 \text{Lemma 1} Lemma 1 deg ⁡ A 0 ′ > deg ⁡ B 0 ′ \deg\mathcal A'_0>\deg\mathcal B'_0 degA0>degB0
deg ⁡ A 0 = deg ⁡ A 0 ′ + deg ⁡ P (2) \deg A_0=\deg\mathcal A'_0+\deg P \tag{2} degA0=degA0+degP(2)

联立 2 deg ⁡ A 0 ′ ⩾ deg ⁡ A 0 2\deg\mathcal A'_0\geqslant\deg A_0 2degA0degA0
deg ⁡ P ⩽ deg ⁡ A 0 ′ \deg P\leqslant\deg\mathcal A'_0 degPdegA0

A − 1 = ± [ S − Q − R P ] \mathscr A^{-1}=\pm\begin{bmatrix}S&-Q\\-R&P\end{bmatrix} A1=±[SRQP],因此 A 1 = ± ( S A 1 − Q B 1 ) \mathcal A_1=\pm(SA_1-QB_1) A1=±(SA1QB1),进而
deg ⁡ A 1 ′ ⩽ max ⁡ { deg ⁡ A 1 + deg ⁡ S ,    deg ⁡ B 1 + deg ⁡ Q } ⩽ max ⁡ { deg ⁡ A 1 ,    deg ⁡ B 1 } + max ⁡ { deg ⁡ S ,    deg ⁡ Q } ⩽ m − 1 + deg ⁡ P ⩽ m + deg ⁡ A 0 ′ \begin{align*} \deg\mathcal A'_1 &\leqslant\max\{\deg A_1+\deg S,\;\deg B_1+\deg Q\}\\ &\leqslant\max\{\deg A_1,\;\deg B_1\}+\max\{\deg S,\;\deg Q\}\\ &\leqslant m-1+\deg P\\ &\leqslant m+\deg\mathcal A_0' \end{align*} degA1max{degA1+degS,degB1+degQ}max{degA1,degB1}+max{degS,degQ}m1+degPm+degA0

所以 deg ⁡ A ′ = m + A 0 ′ \deg\mathcal A'=m+\mathcal A'_0 degA=m+A0

同理可证 deg ⁡ R = deg ⁡ B 0 − deg ⁡ A 0 ′ ⩽ deg ⁡ A 0 − deg ⁡ A 0 ′ \deg R=\deg B_0-\deg\mathcal A'_0\leqslant\deg A_0-\deg\mathcal A'_0 degR=degB0degA0degA0degA0 以及
deg ⁡ B 1 ⩽ max ⁡ { deg ⁡ A 1 + deg ⁡ R ,    deg ⁡ B 1 + deg ⁡ P } ⩽ max ⁡ { m − 1 + deg ⁡ A 0 − deg ⁡ A 0 ′ ,    m − 1 + deg ⁡ P } ⩽ m − 1 + deg ⁡ A 0 − deg ⁡ A 0 ′ \begin{align*} \deg\mathcal B_1 &\leqslant\max\{\deg A_1+\deg R,\;\deg B_1+\deg P\}\\ &\leqslant\max\{m-1+\deg A_0-\deg\mathcal A'_0,\;m-1+\deg P\}\\ &\leqslant m-1+\deg A_0-\deg\mathcal A_0' \end{align*} degB1max{degA1+degR,degB1+degP}max{m1+degA0degA0,m1+degP}m1+degA0degA0

注意前提条件 deg ⁡ A > deg ⁡ B \deg A>\deg B degA>degB 保证了 deg ⁡ A 0 ⩾ deg ⁡ B 0 \deg A_0\geqslant\deg B_0 degA0degB0,以及 ( 2 ) (2) (2) 式在此处的运用。 ■ \blacksquare

接下来给出 Half-GCD \textit{Half-GCD} Half-GCD 的伪代码实现:
A l g o r i t h m    hgcd ( A , B ) 1 m ← ⌈ deg ⁡ ( A ) 2 ⌉ 2 i f    deg ⁡ ( B ) < m    t h e n 3 r e t u r n    [ 1 0 0 1 ] 4 H ← h g c d ( A ÷ x m ,    B ÷ x m ) 5 [ C D ] ← H − 1 [ A B ] 6 i f    deg ⁡ ( D ) < m    then 7 r e t u r n    H 8 [ Q R ] ← [ C ÷ D C   m o d   D ] 9 i f    deg ⁡ ( R ) < m    t h e n 10 r e t u r n    H ⋅ M Q 11 k ← 2 m − deg ⁡ ( D ) 12 S ← h g c d ( D ÷ x k ,    R ÷ x k ) 13 r e t u r n    H ⋅ M Q ⋅ S \begin{array}{r|l} & \mathbf{Algorithm}\;\texttt{hgcd}(A,B)\\ \hline 1 & m\gets\left\lceil\frac{\deg(A)}{2}\right\rceil\\ 2 & \mathbf{if}\;\deg(B)<m\;\mathbf{then}\\ 3 & \quad\mathbf{return}\;\begin{bmatrix}1 & 0\\0 & 1\end{bmatrix}\\ 4 & \mathscr{H}\gets\mathrm{hgcd}(A\div x^m,\;B\div x^m)\\ 5 & \begin{bmatrix}C \\ D\end{bmatrix}\gets\mathscr{H}^{-1}\begin{bmatrix}A \\ B\end{bmatrix}\\ 6 & \mathbf{if}\;\deg(D)<m\;\textbf{then}\\ 7 & \quad\mathbf{return}\;\mathscr{H}\\ 8 & \begin{bmatrix}Q \\ R\end{bmatrix}\gets\begin{bmatrix}C\div D\\ C\bmod D\end{bmatrix}\\ 9 & \mathbf{if}\;\deg(R)<m\;\mathbf{then}\\ 10 & \quad\mathbf{return}\;\mathscr{H}\cdot\mathbf{M}_Q\\ 11 & k\gets 2m-\deg(D)\\ 12 & \mathscr{S}\gets\mathrm{hgcd}(D\div x^k,\;R\div x^k)\\ 13 & \mathbf{return}\;\mathscr{H}\cdot\mathbf{M}_Q\cdot\mathscr{S} \end{array} 12345678910111213Algorithmhgcd(A,B)m2deg(A)ifdeg(B)<mthenreturn[1001]Hhgcd(A÷xm,B÷xm)[CD]H1[AB]ifdeg(D)<mthenreturnH[QR][C÷DCmodD]ifdeg(R)<mthenreturnHMQk2mdeg(D)Shgcd(D÷xk,R÷xk)returnHMQS

特别地,当 A , B A,B A,B 最高次项系数为负时,应将系数取反即乘 − 1 -1 1,反正 − 1 -1 1 u n i t \rm unit unit

Theorem.  h g c d ( A , B ) \mathrm{hgcd}(A,B) hgcd(A,B) 返回的 r e g u l a r \rm regular regular 矩阵 S \mathscr S S 满足:令 [ A ′ B ′ ] = S − 1 [ A B ] \begin{bmatrix}\mathcal A'\\\mathcal B'\end{bmatrix}=\mathscr S^{-1}\begin{bmatrix}A\\B\end{bmatrix} [AB]=S1[AB] deg ⁡ A ′ ⩾ ⌈ deg ⁡ A 2 ⌉ > deg ⁡ B ′ \deg\mathcal A'\geqslant\lceil\frac{\deg A}{2}\rceil>\deg\mathcal B' degA2degA>degB

Proof. 该限制条件的好处是:上面算法中 H \mathscr H H 作用在 [ A B ] \begin{bmatrix}A\\B\end{bmatrix} [AB] 上时, Lemma 2 \text{Lemma 2} Lemma 2 的限制条件即成立(其中的 m m m 与算法中的 m m m 相同)。

考虑每个 r e t u r n \mathbf{return} return 语句的返回值是否满足条件。第 3 3 3 行上的显然合法。第 7 7 7 行上的,由 Lemma 2 \text{Lemma 2} Lemma 2 可知 deg ⁡ C = m + deg ⁡ A 0 ′ ⩾ m \deg C=m+\deg\mathcal A_0'\geqslant m degC=m+degA0m,故合法。第 10 10 10 行上的,由第 6 6 6 行的 i f \mathbf{if} if deg ⁡ D ⩾ m > deg ⁡ R \deg D\geqslant m>\deg R degDm>degR,故合法。

关键在最后。令 m ′ = deg ⁡ A 0 = deg ⁡ ( A ) − m m'=\deg A_0=\deg(A)-m m=degA0=deg(A)m,对 deg ⁡ A \deg A degA 进行归纳法,由归纳假设知 deg ⁡ B 0 ′ < ⌈ m ′ 2 ⌉ ⩽ deg ⁡ A 0 ′ \deg\mathcal B'_0<\lceil\frac{m'}{2}\rceil\leqslant\deg\mathcal A'_0 degB0<2mdegA0,再由 Lemma 2 \text{Lemma 2} Lemma 2

deg ⁡ D ⩽ m + max ⁡ { deg ⁡ B 0 ′ ,    deg ⁡ ( A 0 ) − deg ⁡ ( A 0 ′ ) − 1 } ⩽ m + max ⁡ { ⌈ m ′ 2 ⌉ − 1 ,    ⌊ m ′ 2 ⌋ − 1 } = m + ⌈ m ′ 2 ⌉ − 1 < 2 m (3) \begin{align*} \deg D &\leqslant m+\max\{\deg\mathcal B_0',\;\deg(A_0){-}\deg(\mathcal A_0'){-}1\}\\ &\leqslant m+\max\left\{\left\lceil{m'\over 2}\right\rceil-1,\;\left\lfloor{m'\over 2}\right\rfloor-1\right\}\\ &= m+\left\lceil\frac{m'}{2}\right\rceil-1< 2m \end{align*} \tag{3} degDm+max{degB0,deg(A0)deg(A0)1}m+max{2m1,2m1}=m+2m1<2m(3)

于是 11 11 11 行的赋值能够使 k > 0 k>0 k>0 。而第 9 9 9 行的 i f \mathbf{if} if 指明 deg ⁡ D > deg ⁡ R ⩾ m \deg D>\deg R\geqslant m degD>degRm,故 deg ⁡ D > 2 m − deg ⁡ D = k \deg D>2m-\deg D=k degD>2mdegD=k,因此第 12 12 12 行的 h g c d \mathrm{hgcd} hgcd 调用至少是合法的。

现在考虑第二次 h g c d \rm hgcd hgcd,相同记法得到 D 0 , D 0 ′ D_0,\mathcal D'_0 D0,D0 等。此时有
deg ⁡ D 0 ′ ⩾ ⌈ deg ⁡ D 0 2 ⌉ > deg ⁡ R 0 ′ \deg\mathcal D'_0\geqslant\left\lceil{\deg D_0\over 2}\right\rceil>\deg\mathcal R_0' degD02degD0>degR0

因为 ( 3 ) (3) (3) 式已经说明 deg ⁡ D ⩽ m + ⌈ deg ⁡ ( A ) − m 2 ⌉ − 1 < deg ⁡ A \deg D\leqslant m+\lceil{\deg(A)-m\over 2}\rceil-1<\deg A degDm+2deg(A)m1<degA,归纳假设仍然成立。

deg ⁡ D 0 = deg ⁡ ( D ) − k = 2 deg ⁡ ( D ) − 2 m \deg D_0=\deg(D)-k=2\deg(D)-2m degD0=deg(D)k=2deg(D)2m,于是
deg ⁡ D 0 ′ ⩾ deg ⁡ ( D ) − m > deg ⁡ R 0 ′ \deg\mathcal D'_0\geqslant\deg(D)-m>\deg\mathcal R'_0 degD0deg(D)m>degR0

再由 Lemma 2 \text{Lemma 2} Lemma 2
deg ⁡ D ′ = k + deg ⁡ D 0 ′ ⩾ k + deg ⁡ ( D ) − m = m \deg\mathcal D'=k+\deg\mathcal D'_0\geqslant k+\deg(D)-m=m degD=k+degD0k+deg(D)m=m


deg ⁡ R ′ ⩽ k + max ⁡ { deg ⁡ R 0 ′ ,    deg ⁡ ( D 0 ) − deg ⁡ ( D 0 ′ ) − 1 } ⩽ k + max ⁡ { deg ⁡ ( D ) − m − 1 ,    deg ⁡ ( D ) − m − 1 } = m − 1 \begin{align*} \deg\mathcal R'&\leqslant k+\max\{\deg\mathcal R'_0,\;\deg(D_0){-}\deg(\mathcal D'_0){-}1\}\\ &\leqslant k+\max\{\deg(D){-}m{-}1,\;\deg(D){-}m{-}1\}\\ &=m-1 \end{align*} degRk+max{degR0,deg(D0)deg(D0)1}k+max{deg(D)m1,deg(D)m1}=m1

第二行中同时代入了 { deg ⁡ D 0 = 2 deg ⁡ ( D ) − 2 m deg ⁡ D 0 ′ ⩾ deg ⁡ ( D ) − m \begin{cases}\deg D_0=2\deg(D)-2m\\\deg\mathcal D'_0\geqslant\deg(D)-m\end{cases} {degD0=2deg(D)2mdegD0deg(D)m,但这应该不会给读者带来困扰。 ■ \blacksquare

显然返回的矩阵中多项式的次数是 O ( deg ⁡ A ) \mathcal O(\deg A) O(degA) 的,因为我们实质上在做辗转相除。由 ( 3 ) (3) (3) 式还可知 deg ⁡ D ⩽ m + ⌊ m ′ 2 ⌋ \deg D\leqslant m+\lfloor{m'\over 2}\rfloor degDm+2m,因此 12 12 12 行递归到了度数只有 A A A 的一半的多项式。

Half-GCD \textit{Half-GCD} Half-GCD 算法的复杂度为 O ( n log ⁡ 2 n ) \mathcal O(n\log^2 n) O(nlog2n),如果我们认为多项式运算的复杂度是 O ( n log ⁡ n ) \mathcal O(n\log n) O(nlogn) 的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值