当前位置:主页 > 学新知识 > 零知识证明 - 理解FFT的蝶形运算

零知识证明 - 理解FFT的蝶形运算

时间:2024-07-05 07:04:27 作者:
摘要:零知识证明Groth16的计算中为了计算H,采用了FFT计算。FFT的蝶形运算是理解FFT计算的基础。二分情况下的计算,相对清晰,算法导论给出了详细的推导过程。

好几个星期没写文章,主要原因是和小伙伴们一起优化bellman的性能。新的,有趣的,让人兴奋的优化想法一个个蹦出来,性能一点点的提升,让原先的不可能变成了一个个的可能。性能优化,需要沉淀,需要专注分析,需要实践,需要集思广益。更奇妙的是,一步步的优化,之前感觉没有必要优化的小点,都变的重要起来。

Trapdoor Tech的小伙伴们相信:持续,专注,才有好的品质。

这个周末有空,讲讲我对FFT的理解。方便学习零知识证明的小伙伴理解这部分内容。从头讲起,零知识证明Groth16算法基于QAP问题:

证明我们的知识是有限的_什么是零知识证明_怎么证明知识就是力量

利用Groth16计算证明之前,需要计算出H。目前,普遍采用的是FFT算法。

01

FFT计算原理

学习FFT计算原理,还是要看算法导论(Introduction-to-Algorithms)的第30章(Polynomials and the FFT)。算法导论,讲东西,来龙去脉讲的比较清楚,逻辑性比较强,也比较细致。该章节从多项式的表示开始,多项式可以用两种表示方法:系数表示和点值表示。

系数表示,对多项式加法友好,时间复杂度是O(n),但是多项式乘法不友好,采用多项式一项项的相乘,时间复杂度为 O(n**2)。点值表示,对多项式乘法友好,时间复杂度是 O(n),但是多项式加法不友好。

DFT,采用特殊的点,计算值。这些特殊的点,就是单位根的幂次。采用这些特殊点的情况下,系数表示和点值表示之间可以通过FFT(快速傅立叶变换)计算完成。时间复杂度是O(nlogn)。

算法导论上这个图,可以很好的解释这些计算之间的关系:

怎么证明知识就是力量_证明我们的知识是有限的_什么是零知识证明

如果是系数表示,多项式乘法的计算复杂度为O(n**2)。如果先转化为点值表示,点值表示相乘,再转化回系数表示,计算复杂度为O(nlogn)。

n次单位根

存在n个n次的单位根。这些单位根满足w**n = 1。

怎么证明知识就是力量_证明我们的知识是有限的_什么是零知识证明

这些单位根,存在一些性质或者定理:

怎么证明知识就是力量_证明我们的知识是有限的_什么是零知识证明

FFT的基本原理

DFTn(a)的计算采用FFT的计算,时间复杂度为O (nlogn)。原理是,将多项式分解成奇偶两部分(假设n为2的幂次,n不为2的幂次也有相应的算法,后话):

怎么证明知识就是力量_证明我们的知识是有限的_什么是零知识证明

也就是说,计算A(x)的对应的值,可以分解成两个子多项式(奇偶),每个多项式的点是之前的平方。递归的角度可以看出,这些子多项式,可以进一步划分分更小的多项式。整个计算的复杂度:

证明我们的知识是有限的_怎么证明知识就是力量_什么是零知识证明

如果把输入点也分成两部分,每部分是n/2个,k的范围是0~n/2,则:

这个就是传说中的“蝶形计算”。当两个子多项式的值计算完成后,原来多项式的两个相差n/2的点的值,是两个子多项式的值的一加一减。

整个计算算法的伪代码如下:

证明我们的知识是有限的_什么是零知识证明_怎么证明知识就是力量

其中的作用在第二个子多项式结果上的w_n^k,称为旋转因子。整个蝶形运算可以用可视化的图形表示如下:

证明我们的知识是有限的_什么是零知识证明_怎么证明知识就是力量

8阶多项式示例

算法导论清晰的给出了8阶多项式的FFT的计算过程:

怎么证明知识就是力量_证明我们的知识是有限的_什么是零知识证明

在stage s=1的情况下,也就是最“底层”的两个1阶多项式合并。旋转因子是w_2^0。注意这一层的输出结果,会作为下一层stage s=2的输入,这一层的旋转因子是w_4^{0,1}。这一层要处理的是“两个”2阶多项式的合并。在奇偶划分的情况下,第一个/第二个元素和第三个/四个元素(跨度为2)做蝶形运算。依次类推,直到stage s=3 做完。

整个过程,可以通过Merkle树形象表示:

什么是零知识证明_怎么证明知识就是力量_证明我们的知识是有限的

注意最底层的元素的位置,经过递归的划分已经不是顺序的。算法导论也总结了相应的计算方法,感兴趣的小伙伴,可以自行查看。

可以返回头,体会体会这个公式:

因为特殊的取点的原因(w^2相当于阶降低了一半),子多项式的值也是结果多项式的一半。因为在取点分一半(恰好是子多项式的阶),又因为旋转因子正好是正负,所以存在蝶形关系。每一层的子多项式的元素翻倍。

02

FFT一般性计算扩展

在理解了2分的FFT的计算逻辑后,可以扩展到一般性计算。推荐另外一个网站(注意多项式符号和上文有点区别):

证明我们的知识是有限的_什么是零知识证明_怎么证明知识就是力量

多项式不再拆解成“奇偶”两部分,而是分成P份,每份为Q个元素:

其中,x_u为系数。u的范围是0-P-1,先定义一下,在这种划分下的DFT计算:

证明我们的知识是有限的_怎么证明知识就是力量_什么是零知识证明

DFT_Q代表了有Q个元素,x[u]代表了Q个元素序列,每个元素序列跨度为P,P*Q=n。

如果把输入也切割成P份(就像二分情况下,将输入分成两份一样),k可以表达成k=v+Qj,v=0..Q-1,j=0..P-1。其中,DFT_Q (x[u])记为z[u]。

证明我们的知识是有限的_怎么证明知识就是力量_什么是零知识证明

也就是说,P*Q分组的情况下,蝶形运算如下图:

证明我们的知识是有限的_什么是零知识证明_怎么证明知识就是力量

进一步,可以将y的每个元素的计算看成一个新的DFT_P:

在理解这些的前提下,看看网站给出的按照P*Q分组计算的示意图就比较清晰:

怎么证明知识就是力量_什么是零知识证明_证明我们的知识是有限的

整个FFT的计算由三部分组成:

1/ P个DFT_Q计算(z[0], z[1], ...z[P-1]) 2/ 乘上Twiddle 3/ Q个DFT_P计算

在Q个DFT_P计算之后,需要将P个计算数据“分散”到以Q为偏移的具体的位置。

总结:

零知识证明Groth16的计算中为了计算H,采用了FFT计算。FFT的蝶形运算是理解FFT计算的基础。二分情况下的计算,相对清晰,算法导论给出了详细的推导过程。P*Q的一般性计算推导,相对复杂一些。

什么是零知识证明_证明我们的知识是有限的_怎么证明知识就是力量

星想法

技术改变世界

相关阅读

  • 零知识证明 - 理解FFT的蝶形运算

    零知识证明 - 理解FFT的蝶形运算

    零知识证明Groth16的计算中为了计算H,采用了FFT计算。FFT的蝶形运算是理解FFT计算的基础。二分情况下的计算,相对清晰,算法导论给出了详细的推导过程。...

  • 小马白话期权:一位典型的期权投资兼职玩家

    小马白话期权:一位典型的期权投资兼职玩家

    来源:雪球“天下武林,林林总总。名门正宗如少林武当,诚然名扬天下,而武林之大,但凡修得暗镖神剑者,亦可独步江湖。...

  • 对话杨元庆:AI时代,联想不满足于做集成商

    对话杨元庆:AI时代,联想不满足于做集成商

    【文/观察者网 吕栋 编辑/张广凯】“AI时代不是集成商的游戏,而是创新者的竞争。所以联想肯定不满足于做集成商,但是未来是不是能够脱颖而出,成为领先的主导力量,这要看我们的努......

  • 2021年12月4日时事新闻热点(国内+国际)

    2021年12月4日时事新闻热点(国内+国际)

    为帮助广大考生备考陕西教师招聘考试,中公陕西教师招聘考试特为考生整理汇总了时事政治,更多时事政治,请访问陕西教师招聘考试。2021年12...

  • 家庭教育中如何培养孩子的良好习惯

    家庭教育中如何培养孩子的良好习惯

    我国著名教育家叶圣陶先生说过:“什么是教育?简单一句话,就是要养成良好习惯”。习惯贯穿于人生活的方方面面,一个孩子生活习惯好,有益于身体健康成长;文明礼貌习惯好...

  • 有细胞的就是生物吗

    有细胞的就是生物吗

    错的。病毒是生物 ,并且是唯一一类非细胞结构的生物,仅由蛋白质组成的外壳和核酸组成的核心构成,所以这句话是病毒是一种个体微小,结构简单,只含一种核酸(DNA或RNA)...

  • 对话杨元庆:AI时代,联想不满足于做集成商

    对话杨元庆:AI时代,联想不满足于做集成商

    【文/观察者网 吕栋 编辑/张广凯】“AI时代不是集成商的游戏,而是创新者的竞争。所以联想肯定不满足于做集成商,但是未来是不是能够脱颖而出,成为领先的主导力量,这要看我们的努......

  • 家庭教育中如何培养孩子的良好习惯

    家庭教育中如何培养孩子的良好习惯

    我国著名教育家叶圣陶先生说过:“什么是教育?简单一句话,就是要养成良好习惯”。习惯贯穿于人生活的方方面面,一个孩子生活习惯好,有益于身体健康成长;文明礼貌习惯好...

  • 从小学到初中怎么过渡?小升初学生,要提前把握各阶段的学习要点

    从小学到初中怎么过渡?小升初学生,要提前把握各阶段的学习要点

    从小学到初中怎么过渡?小升初学生,要提前把握各阶段的学习要点从小学生变成初中生,提前理解小学和初中的学习差异,提前培养起一些学习方法和能力,才能保证往后的学习不掉队!小升初学......

  • 全球十大突破性技术发布

    全球十大突破性技术发布

    术的商业应用潜力以及对人类社会和生活的重大影响被认为是投资和技术应用领域的风向标。...

  • 读新闻“杀妻骗赔案”学专业知识

    读新闻“杀妻骗赔案”学专业知识

    这几天一起杀妻骗赔300万,保险公司被判支付被害人家属保险金的新闻,在网上和朋友圈内传播。\x0a对于此案涉及到的诸多保险、法律、核保等知识,其实小核保员既往曾有文章论述过...

发表评论

登录后才能评论

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件举报,一经查实,本站将立刻删除。