这里是一份快速讲解(即有些东西不严谨)。
最初看 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,b∈F[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)⩾2k⩾deg(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](G∈F[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)]=[011−Q(x)][A(x)B(x)]
注意到该线性变换就是 M Q − 1 \mathbf M_Q^{-1} MQ−1 。因此我们只需求出 ∏ 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} A−1=s−1[d−c−ba]
暴力展开不难验证。这可能是二阶矩阵逆元的速算方法吧。
称矩阵 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)]=A−1[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′+A1′B′=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}
[Aj′Bj′]=A−1[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
degA0⩽2degA0′,则
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+degA0′degB′⩽m+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
2degA0′⩾degA0 得
deg
P
⩽
deg
A
0
′
\deg P\leqslant\deg\mathcal A'_0
degP⩽degA0′
而
A
−
1
=
±
[
S
−
Q
−
R
P
]
\mathscr A^{-1}=\pm\begin{bmatrix}S&-Q\\-R&P\end{bmatrix}
A−1=±[S−R−QP],因此
A
1
=
±
(
S
A
1
−
Q
B
1
)
\mathcal A_1=\pm(SA_1-QB_1)
A1=±(SA1−QB1),进而
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*}
degA1′⩽max{degA1+degS,degB1+degQ}⩽max{degA1,degB1}+max{degS,degQ}⩽m−1+degP⩽m+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=degB0−degA0′⩽degA0−degA0′ 以及
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*}
degB1⩽max{degA1+degR,degB1+degP}⩽max{m−1+degA0−degA0′,m−1+degP}⩽m−1+degA0−degA0′
注意前提条件 deg A > deg B \deg A>\deg B degA>degB 保证了 deg A 0 ⩾ deg B 0 \deg A_0\geqslant\deg B_0 degA0⩾degB0,以及 ( 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)m←⌈2deg(A)⌉ifdeg(B)<mthenreturn[1001]H←hgcd(A÷xm,B÷xm)[CD]←H−1[AB]ifdeg(D)<mthenreturnH[QR]←[C÷DCmodD]ifdeg(R)<mthenreturnH⋅MQk←2m−deg(D)S←hgcd(D÷xk,R÷xk)returnH⋅MQ⋅S
特别地,当 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} [A′B′]=S−1[AB] 则 deg A ′ ⩾ ⌈ deg A 2 ⌉ > deg B ′ \deg\mathcal A'\geqslant\lceil\frac{\deg A}{2}\rceil>\deg\mathcal B' degA′⩾⌈2degA⌉>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+degA0′⩾m,故合法。第 10 10 10 行上的,由第 6 6 6 行的 i f \mathbf{if} if 知 deg D ⩾ m > deg R \deg D\geqslant m>\deg R degD⩾m>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′<⌈2m′⌉⩽degA0′,再由
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}
degD⩽m+max{degB0′,deg(A0)−deg(A0′)−1}⩽m+max{⌈2m′⌉−1,⌊2m′⌋−1}=m+⌈2m′⌉−1<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>degR⩾m,故 deg D > 2 m − deg D = k \deg D>2m-\deg D=k degD>2m−degD=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'
degD0′⩾⌈2degD0⌉>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 degD⩽m+⌈2deg(A)−m⌉−1<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
degD0′⩾deg(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+degD0′⩾k+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*}
degR′⩽k+max{degR0′,deg(D0)−deg(D0′)−1}⩽k+max{deg(D)−m−1,deg(D)−m−1}=m−1
第二行中同时代入了 { 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)−2mdegD0′⩾deg(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 degD⩽m+⌊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) 的。