c++多项式曲线拟合求极大值点_复变随记(六)可除多项式(Division Polynomial)...

本文介绍了可除多项式在椭圆加密中的应用,特别是在Schoof算法中的作用。通过解析椭圆曲线的代数和分析背景,探讨了可除多项式的递推关系,并讨论了计算有理点时使用可除多项式与对半求和方法的复杂度对比。
摘要由CSDN通过智能技术生成

2050f67de837c83ed9997cbec7146f63.png

这里边主要内容还是源自Diophantus Analysis,Serge Lang的书的第二章。

这个可除多项式在椭圆加密里面,关于计算有理点个数上挺重要的,是Schoof算法中的关键点。(ps:我这里扯一句,Schoof算法中原始论文中一共出现大概7次左右的typos,然鹅,国内一些关于这个算法的文章,也跟着错了。。。

前置的一些东西可以参考如下文章:

Alepha E:复变随记(三) 聊聊模形式的“半边天”——椭圆函数​zhuanlan.zhihu.com
c8d41277197353cc7dcb65ae5d6a01d1.png

这篇文章就主要简单介绍一下可除多项式的内容了。

目录

  • 可除多项式(division polynomials)
  • 可除多项式的递推关系
  • 上的代数形式
  • 从算法复杂度上一点思考

可除多项式(division polynomials)

当初我读完Stein在他复分析里面提到的椭圆函数那些东西时,我就有个预感:这玩意(指Weierstrass函数表示)能够跨越纯代数上的一些障碍,从分析的角度出发又回到代数中。除了那它来研究曲线,根据它本身的特点,至少得有一些关于椭圆曲线计算上的东西(这么想有个好处:如果这方面有人做了,等到有需求时直接学习即可;倘若是没有人做,那不就是一块很好的处女地么?)。

要知道,在Weierstrass模型下,有如下对应

于是乎,容易让人产生这样的理想,就是对于曲线上n倍元(这就是可除多项式要做的),即

这样点的坐标可以考虑拉回到

上来考虑。

为了不显得这种想法“理所应当”, 将椭圆曲线的解析背景代数背景分别再列出来:

看右边的基本上看不出来有什么比较好的内在结构,而左边的在

函数下,将
投射到
中。左侧的
实际上是与
有对应关系的,而右侧就是
中的一个多项式。

解析背景下,有理点加法有

在代数背景下,有理点加法有

第一行的是不同点相加,第二行的是相同点相加(2倍元)

要是真想去找倍元,从

上考虑其实更能找到思路。

记一个有理点群

,其为Abelian。其子群
为阶为
的点集合,即

我们可以定义这样的多项式

定义 可除多项式
其中,

这一点的构造让我想起来判别式了——为了判断是否有重根,就将所有的根两辆做差求平方。

3583f18748e8d1fcd1fcbbbc13f14d6d.png

96ffb556d5101ec60c3fff80a859ad21.png

能够发现,

看似是16个点,但是要刨去一对邻边剩下9个点,因为基本平行四边形,在Weierstrass方程意义下对边等价;减1是因为定义中扣去了原点)

接着拿上图举例子,于是这个平行四边形的点可以有如下对等

但是,在

的意义下,存在
,也就是说,
存在重根。也就是说,当
时,有这样关系:

所以,考虑对

分奇偶来讨论:
  • 为奇数时,所有
    的因子为2重,因为
  • 为偶数时,除了
    以外,其他
    的因子为2重。这是因为
    处重数为1(
    为生成基本平行四边形的两个向量)。
    有两个零点并且

于是

为一个完全平方多项式,从而对其开根,有

注意,可除多项式有

的形式,当n为偶数的时候。

这时候需要计算一下

在0点的z展开。首先,有

再结合上面的讨论,则有


可除多项式的递推关系

上面说到可除多项式解析的定义,以及多项式的展开。

实际上,上面那个多项式可以看做是

中的插值多项式。对于
来说,
就是
的根。考虑到椭圆曲线上有理点倍元,其横坐标可以有公式

也就是说,要想着把

这些揉到一块才行。

于是乎,可以考虑

,当
时,
为其根。此时的
满足

于是,

也分别是
的根(
零点的情况)。初步可以判定有这样关系

除了零点的以外,还要考虑到两边极点的问题,类似地可以得到

因为对于

它是
的极点,又是
的零点。

然后再考虑一波重数(multiplicity)的问题,能发现

在零点的
的重数为
,因为求导后,得不到

因此

是椭圆的(elliptic),无零点、无极点。根据Liouville定理,可知为常数。再通过上面写出的展开,可以得到如下在

处的展开的比值

从而有

倍元横坐标公式 (解析形式)

相似地,又可以有

倍元纵坐标公式(解析形式)

不过用上述方法只能去验证这个纵坐标的公式,如何想到呢?

接着从倍元横坐标公式出发,看看能不能得到关于可除多项式的递推关系

由加法公式

以及

,可以得出

从而,可以形式上定义

从而

时的可除多项式根据倍元横坐标公式可以得到

接着,由加法公式可以推出

,可有

对于

的情形,考虑
,有

观察

,其零点满足
,且重数为
(因为求导后

但是

在那些点中,不为0.。因此这些点为

的零点。这个多项式的零点也都是

的零点。此外,通过比极点次数还有0点出的展开,可以得出结论
可除多项式递推关系
,有

此外,将

给定关系,从而有推论
推论

有了这样的公式,关于倍元的纵坐标公式的形式,也就不难联想到了(既然都可以猜到了,验证从上即可~)。


上的代数形式

最开始,我们还是希望得到比较“整”的关系,毕竟还是要用到有限域上呢。

所以考虑如下对应,

原先的Weierstrass模型的椭圆曲线就变成了

同样地,可除多项式就有

我们记

根据之前的递推关系,有

因为

可以用椭圆曲线方程带换成纯
的形式,从而不论
的奇偶,可除多项式一定是纯
的形式。

下面这个定理,其实综合前面的内容即可得到的

Thm
那么有:
(1)
(2)
为奇数时,
为偶数时,
。且
(3)
为奇数时,
为偶数时,

在列举一个可除性的定理,证明就不写了

Thm (1)令
,则
所有系数的公因子。
(2)若
,则
(3)若
为奇素数,则
中,首项系数为
,且系数互素。
Thm 多项式
中互素。
Thm
,则有

从算法复杂度上一点思考

考虑到对于有理点

倍元的计算,即

是用可除多项式好还是用对半求和的方法好?

考虑单纯计算倍元的角度:

加法公式为:

常规加减乘除的复杂度就当做常数了(毕竟我也管不了编译器。。。),有限域求逆是个

,相对于
是个常数。然后,加法公式求得的倍元复杂度应该是

然后用可除多项式来计算,则显然需要

次递推关系得到第
个可除多项式,然后会涉及很多多项式的乘法,考虑用FFT,复杂度
,从而计算多项式的复杂度至少要为
。不过计算多项式这一步可以提前完成,后面只是单纯计算一个多项式函数了

不过看着理论如此“性感”,但是现实会很“骨感”。因为根据相关对于可除多项式的研究,要是当

足够大了,那么它的系数会大到爆炸。

那么这个可除多项式有什么用呢?

实际上,当

比较小的时候算的是很好用的。在Schoof论文中,涉及判断一个关于Frobenius映射
的方程,是否有
成立时,可以用可除多项式来表示
。对于
的存在性,完全可以转化为通过求最大公因式是否为
来计算有限域下根的存在性。而此时,
又是个比较小的素数。

为某个EC下的
阶挠群(torsion group))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值