Halo2 学习笔记——背景资料之Polynomials
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Halo2 学习笔记——背景资料之Polynomials相关的知识,希望对你有一定的参考价值。
1. 引言
令
A
(
X
)
A(X)
A(X)为基于
F
p
\\mathbb{F}_p
Fp的degree-3多项式:
A
(
X
)
=
a
0
+
a
1
X
+
a
2
X
2
+
a
3
X
3
A(X)=a_0+a_1X+a_2X^2+a_3X^3
A(X)=a0+a1X+a2X2+a3X3
其中
a
0
a_0
a0称为constant term。
degree n − 1 n-1 n−1的多项式,其有 n n n个系数。
通常,将变量 X X X替换为具体的值 x x x,来计算相应的结果 A ( x ) A(x) A(x)——数学上称为“evaluating A ( X ) A(X) A(X) at a point x x x”。(注意,此处的point不要与椭圆曲线上的point混淆。)
多项式的主要属性有:
- d e g ( A ( X ) B ( X ) ) = d e g ( A ( X ) ) + d e g ( B ( X ) ) , d e g ( A ( X ) / B ( X ) ) = d e g ( A ( X ) ) − d e g ( B ( X ) ) deg(A(X)B(X))=deg(A(X))+deg(B(X)), deg(A(X)/B(X))=deg(A(X))-deg(B(X)) deg(A(X)B(X))=deg(A(X))+deg(B(X)),deg(A(X)/B(X))=deg(A(X))−deg(B(X))
- 若 A ( X ) A(X) A(X)的degree为 n − 1 n-1 n−1,则对该多项式的 n n n个不同点进行evaluation,这些evaluation值可完全定义该多项式。换句话说,由这 n n n个不同点的evaluation值,通过多项式插值获得唯一的degree为 n − 1 n-1 n−1的多项式 A ( X ) A(X) A(X)。
- 多项式
A
(
X
)
A(X)
A(X)的系数表示法为:
[
a
0
,
a
1
,
⋯
,
a
n
−
1
]
[a_0,a_1,\\cdots,a_{n-1}]
[a0,a1,⋯,an−1],其点值表示法为:
[ ( x 0 , A ( x 0 ) ) , ( x 1 , A ( x 1 ) ) , ⋯ , ( x n − 1 , A ( x n − 1 ) ) ] [(x_0,A(x_0)), (x_1,A(x_1)), \\cdots, (x_{n-1},A(x_{n-1}))] [(x0,A(x0)),(x1,A(x1)),⋯,(xn−1,A(xn−1))]
其中 x 0 , x 1 , ⋯ , x n − 1 x_0,x_1,\\cdots,x_{n-1} x0,x1,⋯,xn−1为 n n n个不同的值。
这两种方式都可唯一定义同一多项式。
2. Horner’s rule
可借助Horner’s rule来对一个
n
−
1
n-1
n−1 degree多项式进行高效evaluation,仅需
n
−
1
n-1
n−1个乘法运算 +
n
−
1
n-1
n−1个加法运算:
a
0
+
a
1
X
+
a
2
X
2
+
⋯
+
a
n
−
1
X
n
−
1
=
a
0
+
X
(
a
1
+
X
(
a
2
+
⋯
+
X
(
a
n
−
2
+
X
a
n
−
1
)
)
)
a_0+a_1X+a_2X^2+\\cdots+a_{n-1}X^{n-1}=a_0+X(a_1+X(a_2+\\cdots+X(a_{n-2}+Xa_{n-1})))
a0+a1X+a2X2+⋯+an−1Xn−1=a0+X(a1+X(a2+⋯+X(an−2+Xan−1)))
3. FFT
FFT可将多项式的系数表示法 和 点值表示法 之间高效相互转换。
点值表示法时,evaluate的point为 n n n-th roots of unity { w 0 , w 1 , ⋯ , w n − 1 } \\{w^0,w^1,\\cdots,w^{n-1}\\} {w0,w1,⋯,wn−1},其中 w w w为a primitive n n n-th root of unity。
根据roots of unity的对城乡,FFT每轮运算将reduce the evaluation into a problem only half the size。因此,通常使用的多项式长度为some power of two,即 n = 2 k n=2^k n=2k,从而可apply the halving reduction recursively。
3.1 将FFT用于快速多项式乘法
如需计算
A
(
X
)
⋅
B
(
X
)
=
C
(
X
)
A(X)\\cdot B(X)=C(X)
A(X)⋅B(X)=C(X),若采用系数表示法时,需要进行
O
(
n
2
)
O(n^2)
O(n2)次运算: 以上是关于Halo2 学习笔记——背景资料之Polynomials的主要内容,如果未能解决你的问题,请参考以下文章 Halo2 学习笔记——背景资料之PLONKish arithmetization Halo2学习笔记——背景资料之Elliptic curves
A
(
X
)
=
a
0
+
a
1
X
+
a
2
X
2
+
⋯
+
a
n
−
1
X
n
−
1
A(X)=a_0+a_1X+a_2X^2+\\cdots+a_{n-1}X^{n-1}
A(X)=a0+a1X+a2X2+⋯+an−1Xn−1
B
(
X
)
=
b
0
+
b
1
X
+
b
2
X
2
+
⋯
+
b
n
−
1
X
n
−
1
B