多项式笔记1
多项式基础
一个以\(x\)为变量的多项式定义在一个代数域\(F\)上,可以写作:
\[A(x) = \sum_{i = 0} ^ n a_i x^i
\]
其中\(a_i \in F\)。
对于一个多项式\(f(x)\),其最高次项的次数为这个多项式的度,记作\(\deg{f}\)。
多项式加法
有两个多项式\(A(x)和B(x)\),且\(\deg{A} = n,\deg{B} = m\),那么:
\[C(x) = A(x) + B(x) = \sum_{i = 1} ^ {\max(n,m)} (a_i +b_i) x ^ i
\]
减法同理。
多项式的加减法可以在\(O(n)\)的时间复杂度内求出。
多项式乘法
有两个多项式\(A(x)\)和\(B(x)\),且\(\deg{A} = \deg{B} = n\)
\[C(x) = A(x)B(x) = \sum_{i = 0} ^ {n - 1} \sum_{j = 0} ^ {n - 1} a_i b_j x^{i + j} = \sum_{i = 0} ^ {2n - 2} c_i x ^ i
\]
卷积
设\(a,b\)是两个数列,那个两个数列的卷积\(c\)定义为
\[c_k = \sum_{i + j = k} a_i b_j \Leftrightarrow c_k = \sum_{i = 0} ^ k a_i b _{k - i}
\]
多项式的表示
系数表示法
对于一个多项式\(A(x),\deg{A} = n\),其系数组成了一个向量\(a = (a_0,a_1,a_2,a_3, \cdots a_{n - 1})\)
点值表示法
对于一个多项式\(A(x), \deg{A} = n\),通过选取任意\(x_i\),形成点的集合:
\[\{(x_0,A(x_0)),(x_1,A(x_1)),(x_2,A(x_2)),(x_3,A(x_3)), \cdots (x_{n - 1},A(x_{n - 1}))\}
\]
转换:
系数转点值:随机选取\(n\)个互不相同的\(x_0,x_1,x_2,x_3,\cdots , x_{n - 1}\),并进行计算\(A(x_0),A(x_1),A(x_2),A(x_3), \cdots ,A(x_{n - 1})\),通过霍纳法则,计算\(A(x_i)\)的时间为\(O(n)\),所以整个算法为\(O(n^2)\)(后面似乎有更快的算法)
点值转系数:咕了,睡个觉再写。