首页
社区
课程
招聘
[原创]量子算法分析: 深入算法内核掌握量子计算的精髓
2023-6-7 15:16 20638

[原创]量子算法分析: 深入算法内核掌握量子计算的精髓

gjden 活跃值
14
2023-6-7 15:16
20638


好长时间没有来看雪发文了,近期也没什么可写的,把以前不务正业写的文章重新整理下(换个题目并调整了部分内容)发到这里冒个泡。废话几句,量子计算往往容易被媒体吹嘘得神乎其神,写这篇目的也是为了能够让更多的人了解量子计算的精髓和灵魂,也是我自己理解量子计算的一个过程,分享出来希望能够给想要试图理解量子计算的小伙伴一点启示。对于量子计算我也好些年没搞了,目前的水平也只能如此了,如有错误,望各位海涵。不知道该发哪个版块,段老大说发软件逆向板块吧,因此扔到这里来共同学习探讨。由于论坛不支持公式编辑,因此文字中的公司只能用类似字母代替,推导的公式也只能截图,如果阅读时对应不上,可以留言。


一、前言


很多人对于量子计算或多或少都有所了解,但目前量子计算圈和安全圈存在着巨大的鸿沟,关于量子计算报道大多喜欢夸大其词,让人感觉量子计算像玄学一样,徒增神秘感,并不利于量子计算思想的普及。很多人虽然对量子计算做了很深入了解,但大多事后仍旧疑惑不解:为什么量子叠加态还能参与计算?量子计算机又是怎样实现并行运算的?量子计算机又是如何解决特定问题的?


本文就从量子计算最为重要的算法—Shor算法开始做详细探讨,看他是如何破解RSA的? 为了更通俗易懂,本文涉及的公式推导都尽量详细,力求高中水平的数学基础能看懂。你既不需要懂密码学,也不需要懂量子力学也能明白算法的精髓。


本文将详细分析Shor算法的实现过程,整数周期数及非整数周期数下Shor算法分析,Shor算法概率评估,实例分析。不得不说,量子计算以及量子计算机是一个很庞大的知识体系,个人水平有限,此处我们仅仅就单纯地围绕Shor算法本身进行探讨分析,不考虑退相干对算法的影响,也不考虑物理实现。


废话不多说,先回答几个让人疑惑的问题。


1.为什么量子叠加态还能参与计算


一个量子可以同时处于两种状态的叠加(比如自旋向上和自旋向下),这种叠加态测量的瞬间就会随机变为一个确定的态(测量得到自旋向上),这个过程叫波函数的坍塌。我们如果将这两个态表示为0,1,而每种态观测后出现的概率幅(注意不是概率,概率幅的平方为概率为1)为α,β,那么这个量子可以表示为






这里右尖括号为狄拉克符号,表示量子态, 0,1为基态,+表示叠加,两种态的概率幅平方和为1,即 α^2+β^2=1 。而我们通常说的量子计算就是通过量子逻辑门来操作处于叠加态的量子。比如Hadamard门,简称H门(在量子计算中非常重要),他的一个主要功能就是通过计算基态产生等概率的叠加态。通过H门变换后的单量子叠加态为:


 


两种基态的坍塌概率都为1/2 ,两个量子的H门得到的结果如下:



每个态坍塌的概率 1/4 ,对于n个量子的H门变换后:



其他量子门这里就不做介绍了,本文暂时不会涉及,想更深入了解可以到维基上看。


https://en.wikipedia.org/wiki/Quantum_logic_gate


量子门及其对应的门矩阵如下图:

量子门及门矩阵,图片来自wikipedia


还有一个比较重要的复合门是受控U(a,x)门,想深入了解的看这篇文章:一只冰牙喵:4.2 受控操作不过这里看不懂也没关系,我们只需要知道受控U门可以用于计算以a为基底的幂,其一般用于生成指数函数值。


受控U门(来自https://zhuanlan.zhihu.com/p/422428222



2. 量子如何做并行运算


量子并行运算(Quantum Parallelism)是基于量子叠加态(Quantum Superposition)和幺正变换实现的。量子计算正是有了数据的可叠加性和幺正变换,从而决定了一次操作即可改变全部数据。比如有量子寄存器,存了10个处于叠加态的量子,在通过运算时只需要一次性操作这10个量子,但是由于可叠加性,这10个量子叠加态可以表示2^10个基矢,一次操作10个量子,相当于一次对2^10个基矢进行了操作,这就大大提高了运算的速度。


在经典计算中,并行性的核心思想是将一个计算任务分配给多个处理器同时运行,要快于使用一个处理器来运行。在理想的情况下,将工作分配给K 个处理器就应该使计算时间缩短为原来的1/K。但是现实肯定不是这样的,真实的任务往往具有串联性,只有部分具有并联性的子任务才能够做并行运算。由于量子计算的特点是数据的可叠加性质和操作的幺正变换本质,从而就决定了量子计算的语义特征是完全意义上的通过一次操作即可改变全部数据的并行计算。将一个N 位量子寄存器中的 2^N 个数据同时通过一次幺正变换(即进行一次运算)所需的时间定义为 Tq ,而经典计算中对一个数据进行运算的时间为 Tc ,因为一次量子计算就对所有的数据做了并行处理,所以量子计算加速能力可以表示为



如果 Tc=Tq ,那么加速能力 S=2^N,也就是说对量子计算机做一次运算,相当于对经典计算机做 2^N 次运算。


此外,一台量子计算机并不一定在所有计算任务上都比一台经典计算机做得好,比如乘法运算在一台量子计算机上执行就不如传统计算机上快。为了突出量子计算机的优越性,就需要开发量子并行效应能力的算法。


3.量子计算能做什么


量子计算机是严重依赖于优秀的量子算法的实现,虽然通用量子计算机能做经典计算机的所有事情,但是只有在处理特定问题上量子计算才具有决定性的优势,目前已经有很多优秀的量子算法,其中对大数因子分解,离散对数问题以及更一般的隐含子群问题的解决有着开创性和重大影响的量子算法便是本文要详细分析的Shor算法。


本文将非常详细的分析Shor算法来让各位明白量子计算在解决特定问题上的巨大优势。


二、Shor算法分析


在费曼提出量子计算机概念不到15年的时间,shor通过研究出的量子算法给世人了一剂强心针,自从shor算法出来后,人类开始加速了量子计算机的研制,各大头部企业也纷纷加入了量子计算机的量子竞赛行列。


shor算法最令人振奋的是直接将质因子分解以及离散对数问题以指数级速度提升,这给人们的启示是可以利用同样算法思想来解决更为广泛的隐含子群问题。


我们知道RSA是基于经典计算机大数质因式分解的指数复杂度的困难而设计的一种非对称加密算法,目前最优的因子分解算法为指数复杂度

  

而通过shor量子算法可以以多项式复杂度完成大数因式分解,从而可以快速破解RSA算法。那么Shor算法是如何发挥如此威力的,简单来说,Shor算法的核心依赖于三个变换即H变换,U变换,QFT(量子傅立叶),接下来我们一步一步的分析。


Shor算法量子实现线路简图:

Shor算法量子实现线路图



1、RSA算法


我们设RSA的公钥为 (e,N) ,私钥为 (d,N) ,那么生成公私钥的过程如下:


  1. 生成两个足够大的素数p,q,得到合数N=p*q,然后计算得到p-1和q-1的最小公倍数L。

  2. 生成e,使得e和L互质,且满足1<e<L

  3. 生成d,使得d*e%L=1且1<d<L

那么加密解密操作如下



我们知道RSA是基于大数N的因子分解的困难而设计的非对称加密算法,因此我们只要能够实现大数N的因子分解,就可以破解RSA,这里不做证明了,网上有很多资料。这里你只需要知道,我们可以通过公私钥的N,然后通过Shor算法求得N的因子p,q就可以了。


2、问题转化


首先我们需要将大数因子分解问题转化为以求待分解的合数N为模的函数 f(x)=a^x ( mod N) 的周期问题。


设周期函数f(x)=a^x(mod N) 的周期为r(这里a为小于N,且与N互质的整数),则有:f(x)=f(x+r) , 那么:



设整数 

 

则 



那么 x-1, x+1 都能被 kN 整除,那么一定存在 gcd(x+1,N)>1 或者 gcd(x-1,N)>1 (gcd是一个用辗转相除法求公因子的函数),也就说与N存在一个大于1的公约数,这个公约数就是N的分解因子。


例如:设 N=15,a=7 ,则:



由此,我们只要求出f(x)的周期,就能轻而易举的分解合数了。而shor算法的精髓就是利用量子特性来快速求解得到周期r.


3、通过Shor算法求周期r


设量子比特长度为 L, 则总共可以表示的 q=2^L 个基态, 设N为要分解的合数,为了确保 2^L 长度内有足够的周期数,我们需要满足



然后,我们利用Hadamard门来构造等概率的量子叠加态 |x>存入寄存器reg1,然后利用U门来构造 |f(x)> 的叠加态存入寄存器reg2,且使这两个寄存器处于纠缠态。



两个寄存器展开形式如下:



由于 f(x) 为周期函数,设周期为r,A为总长2^L中存在的周期数,则



设l为小于一个周期内的x的值, x=l+Ar, 则整个系统的态实际为



因此,x可以表示为



然后对reg2进行计算基上的测量,设测量结果设为 Z ,测量Z在reg1中的投影变化为



例如 N=15,a=7 ,测量后的整个系统的态为:



经过投影后



这里,当测量得到一个γ 值后,由于寄存器reg1和寄存器reg2是处于纠缠态,所以Z值测量后寄存器reg1会塌陷为相同Z值的|x>叠加态,如果reg2测量的值为1,那么reg1则处于 (|0>}+|4>}+|8>+...) 的叠加态,那么周期 r 的信息就包含在reg1中,因此对reg1进行量子傅里叶变化:



上式可以变换为:



这里为什么要这么变换,因为当测量Reg2时,Reg2坍塌为了r个值中的一个值,所以每一个值对应reg1中的A个叠加态。这里设:



这里,我们需要考虑两种情况,一种是 2^L 能够整除 r 的情况,也就是在 2^L 内刚好有整数个周期,一种是不能整除的情况。如果能够整除,那说明每个波峰刚好位于 ϒ=k2^L/r ,不能整除时,波峰位于非常接近波峰的两侧,因为波峰处的 ϒ 本应该为非整数,而我们测量得到 ϒ只能是整数,所以这时候我们需要加入微调的参数。接下来我们分别对这两种情况进行分析。


A.整数周期


在(2)式的[ ]中,在 ϒ 是 2^L/r 的整数倍情况下变成,出现相长干涉,求和后为 A=2^L/r ,如果不为整数,则为相消干涉,其值趋于0. 所以



当 γ≠ k2^L/r 时,我们通过等比数列转化得到:



带入(0)式得:


 


由于

 

,也就是说,当γ k2^L/r ,也即不为整数时,为相消干涉,其值为0。


通过量子傅里叶变换后得到如下叠加态:


测量|γ> 的值, 等概率1/r地选择出一个态。由 


得:



如果有 

, r 就可以从γ/2^L}的不可约分数求出。


B. 非整数周期


2^L 不能整除 r 的情况下,那么在x值范围内的周期数A便不是整数,此时我们加入微调参数δk 稍作调整,使得γ为整数,设



因此(2)式的[ ]为:






这里 δk的值极小,该值用于逼近函数的峰值,我们再令


 


因此(3)式的平方表示为



由于



因此



所以得到 γ的概率为




这里,为了严谨讨论,我们设 |δk| 小于等于1/2(如果大于1/2,可以认为是下一个整数 z-(1-δ) ),所以这是适用于所有情况的



由(4)(5)得:



当α∈[0,π/2], sinα 必位于原点与点(π/2,1) 连线的上方,所以



而对于任意 α , |sinα| 为凸函数,有:


又因sin(θ/2)≤ θ/2 ,因此:



所以,测量|γ> 的概率为



最后,我们来讨论测量值γ,


所以



这里 γ已测得,这里严格存在一个分数k/r,可由 γ/(2^L) 的连分数展开求出(下一个节将通过实例说明),通过约分满足 gcd(k,r)=1 就可得到 r 的值,gcd算法的成功率为



也就是说我们能以大于


的概率分解N的因子再加上量子傅里叶变换的复杂度为 Ο(n^2) ,所以shor算法的时间复杂度为 Ο(n^2rlogr) 


三、实例分析


虽然上面已经分析得很透彻了,但是估计还是有人觉得会太抽象,所以下面我以一个例子来进行实例分析,以帮助理解。


对于 f(x)=a^x(mod N) ,N=91,a=4,那么



所以周期为 r=6, N<2^7 ,L=2x7=14,然后根据2,3式我们计算得到:



这里, γ 是我们测量得到值,如果这个值为0,那么对于我们求周期r是没有意义的,所以除开这种情况下,测得其他值的概率和为0.623。如果测量的值为13653,那么我们来计算0.833312的连分数。


1/0.833312=1.200031,


1/0.200031=4.999225,


1/0.999225=1.000775,


1/0.000775=1290.322580


这里遇到大数1290,我们就终止,最后我们得到连分数为



那么我们就可以确定 k=5,r=6 了吗,那有没可能 k=10,r=12 呢,所以,我们不能单纯的通过一次测量来确定周期,我们来考察其他几项,我这里不再一一去展开了,懒人可以在这里去计算(连分数计算 -连分数计算器-分数计算器)。



因此,如果我们将shor算法多执行几次,最后求出各个分母的最小公倍数,那么这个最小公倍数就是我们要找的周期r,有了周期r,我们就不难求出合数N的质数因子了,进而也能够比较容易破解RSA算法了。





四、离散对数问题简析


通过对shor算法原理的剖析,我们可以知道,对于任何具备转化为求周期函数的周期为目标的问题都可以用同样算法以指数加速来快速解决,比如离散对数(ElGamal), ECC之类的非对称加密算法都可以用同样的思想来解决。


离散对数多说两句,Shor在其原始论文中对于素域上的离散对数问题,给出了一个基于整数求阶量子计算算法求解算法,成功率为1/480。Shor指出在解决素域上的离散对数问题时,其实并没有利用到素域的特性,因而对有限域上的离散对数问题也同样成立。后来Eicher和Opku给出了一个在多 项式时间内以1/480的成功率攻击椭圆曲线离散对数问题的量子计算算法


设一个阶为 p ,且生成器 为g 的群 G(g∈G ),如果 x=g^r(mod  p)∈ G ,那么对于部分 r∈Ζp ,我们希望得到 r ,那么 r 就是离散对数 



比如EIGamal加密,对于随机大大素数P,以及随机数x,满足


 


这里 (y,g,P) 为公钥, x 为私钥。我们将长度为 N,


的消息分组为



那么计算密文



这里c1,c2为加密后的密文,那么解密过程如下:


简单推一下


考虑abelian 群 ΖpxΖp (每一个因子对应于值的模加)。那么函数


 


这给我们呈现了一个abelian 隐含子群问题,同时可以看出映射 f 是一个群同态。kernel为 (r,1) 的倍数,所以如果我们能找到kernel,我们就能够找 r .


对于函数

设周期为 rg 和 rx ,那么




因此,我们只要通过量子算法求得周期 rg,rx 就可以得到 r . 使用量子算法处理离散子群问题,和我们前面讲解的方法非常类似。



参考文章及链接:


Shor, P.W. (1994). "Algorithms for quantum computation: discrete logarithms and factoring". Proceedings 35th Annual Symposium on Foundations of Computer Science. IEEE Comput. Soc. Press: 124–134

https://authors.library.caltech.edu/2179/1/BECpra96.pdf

https://en.wikipedia.org/wiki/Quantum_logic_gate

https://en.wikipedia.org/wiki/Shor%27s_algorithm

https://en.wikipedia.org/wiki/Discrete_logarithm



[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2023-7-24 17:20 被gjden编辑 ,原因: 图片挂掉
收藏
点赞28
打赏
分享
打赏 + 5.00雪花
打赏次数 1 雪花 + 5.00
 
赞赏  orz1ruo   +5.00 2023/06/09 感谢分享~
最新回复 (31)
雪    币: 1948
活跃值: (3648)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
method 2023-6-7 15:23
2
0
学废了
雪    币: 29412
活跃值: (18675)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2023-6-7 15:24
3
1
太高深了!
雪    币: 6769
活跃值: (4422)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
gjden 14 2023-6-7 15:35
4
0
kanxue [em_63]太高深了!
高手可以略过了,拙文旨在帮助大家更深的理解量子计算和量子算法。
雪    币: 2259
活跃值: (9968)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
jmpcall 3 2023-6-7 15:40
5
0
小学数学我都做了2个小时:边长12cm的正方形,四个角都裁掉边长2cm的正方形,剩余的形状上面,能裁出的最大正方形,面积为多少?
雪    币: 916
活跃值: (3409)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
葫芦娃 1 2023-6-7 15:40
6
0
这个太猛了,顶一下
雪    币: 459
活跃值: (652)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
ssarg 2023-6-7 16:01
7
0
太残暴了,生活的打击比比皆是,都挺过来了,却不曾想,“物理学不存在了”。
如果能再讲解量子计算机的应用场景和未来趋势等进行科普,那就更好了。
雪    币: 119
活跃值: (4744)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wsc 2023-6-7 16:47
8
0
ssarg 太残暴了,生活的打击比比皆是,都挺过来了,却不曾想,“物理学不存在了”。 如果能再讲解量子计算机的应用场景和未来趋势等进行科普,那就更好了。
三体
雪    币: 3272
活跃值: (4321)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
东关之南 2023-6-7 17:01
9
0
看不明白,但我大受震撼。
雪    币: 2956
活跃值: (4826)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
舒默哦 1 2023-6-7 17:04
10
0
段总推存,来膜拜一下
雪    币: 1698
活跃值: (1589)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
夏天呀 2023-6-7 17:22
11
0
努努力,学费了
雪    币: 11704
活跃值: (966)
能力值: ( LV12,RANK:779 )
在线值:
发帖
回帖
粉丝
readyu 12 2023-6-7 17:33
12
2
很精彩,努力学习中。 

IBM 发布的量子芯片,要放在一个几立方米的冷却箱里面运行(温度接近绝对零度附近, 25 mK ),一次运行能维持450微秒。 

Osprey这样的量子芯片必须部署在冷却到接近绝对零温度的专用腔室中。IBM此次推出了IBM Quantum System 2新版量子芯片腔室,预计将于2023年底上市。
雪    币: 21752
活跃值: (3607)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangyalei 2023-6-7 17:47
13
0
如读天书
雪    币: 429
活跃值: (368)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
mlgbwoai 1 2023-6-7 18:03
14
0
太顶了,像看阿拉伯文,只剩余膜拜
雪    币: 335
活跃值: (786)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hello,hook 2023-6-8 09:15
15
0
看雪的档次都已经去到量子层面了吗?
雪    币: 2451
活跃值: (4152)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
小白养的菜鸡 2023-6-8 09:17
16
0
版主,能请教下你数学的学习路线或者参考书籍之类的么?
雪    币: 19270
活跃值: (28900)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-6-8 09:24
17
1
这是讨论下个时代了吗
雪    币: 149
活跃值: (2003)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
saloyun 2023-6-8 12:18
18
0
版主太牛了,感谢分享
雪    币: 6769
活跃值: (4422)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
gjden 14 2023-6-8 14:33
19
0
@ssarg
太残暴了,生活的打击比比皆是,都挺过来了,却不曾想,“物理学不存在了”。 如果能再讲解量子计算机的应用场景和未来趋势等进行科普,那就更好了。

物理学还存在,先把智子的纠缠态破坏掉,断了与三体人的联系,就没法干扰物理学研究了。

最后于 2023-6-8 15:01 被gjden编辑 ,原因:
雪    币: 6769
活跃值: (4422)
能力值: (RANK:600 )
在线值:
发帖
回帖
粉丝
gjden 14 2023-6-8 15:00
20
3
小白养的菜鸡 版主,能请教下你数学的学习路线或者参考书籍之类的么?

知乎一位答主的回答比较中肯,摘过来希望对你有帮助:


作为一名数学博士,有一些个人观点赠给您,收好不谢。

我不太知道您的基础是怎样的,以下假定您是高中毕业。

首先我认为您应该先学习一些基础知识,数学分好几个大块,学完基础知识您才能知道自己的兴趣在哪里,进而进入更细致更专业的科研。

以下是我能想到的比较效率的数学自学具体步骤:

  1. 学习高等代数(A),数学分析(B),解析几何(C)。发现对哪一门感兴趣可进入下一环节。

  2. (1)兴趣在A:试着学习抽象代数,进而同调代数,表示论,数论。

    (2)兴趣在B:试着学习常微分方程,数学物理方程,实变函数,泛函分析。

    (3)兴趣在C:试着学习微分几何及流形。

    (4)兴趣在AB:试着学习数值分析,并需要学习计算机语言(如C语言和matlab),学会编程。

    (5)兴趣在AC:试着学习代数几何。

    (6)兴趣在BC及ABC:我不太清楚。

    (7)都不感兴趣:试着学习概率论与数理统计,图论。

上面均属一般本科课程。学完这些再决定继续从事科研还是工作。


如果是自学的话,以我的阅历,大多会选择学习代数方向(也就是A,需要的基础不多,高等代数和抽象代数),脑子好使的话可以学数论,还有图论方向(这个方向几乎不需要任何基础)。


如果你是想学完找个好工作的话可以试着学习计算数学(4)和概率论和统计方向。


更精细化的学习建议报一个导师。希望能帮助到您。


出处 https://www.zhihu.com/question/263812517/answer/274879394

最后于 2023-6-8 15:04 被gjden编辑 ,原因:
雪    币: 2451
活跃值: (4152)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
小白养的菜鸡 2023-6-8 16:19
21
0

1

最后于 2023-6-8 16:20 被小白养的菜鸡编辑 ,原因:
雪    币: 2451
活跃值: (4152)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
小白养的菜鸡 2023-6-8 16:19
22
0
gjden 小白养的菜鸡 版主,能请教下你数学的学习路线或者参考书籍之类的么? 知乎一位答主的回答比较中肯,摘过来希望对你有帮助:作为一名数学博士,有一些个 ...
收到,非常感谢
雪    币: 2921
活跃值: (2824)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
boursonjane 2023-6-9 10:55
23
0
niubility
雪    币: 1300
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolgirl 2023-6-9 12:58
24
0
小白养的菜鸡 收到,非常感谢[em_63]
学啥数学啊,太难了。
雪    币: 1300
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
coolgirl 2023-6-9 13:02
25
0
gjden @ssarg 太残暴了,生活的打击比比皆是,都挺过来了,却不曾想,“物理学不存在了”。 如果能再讲解量子计算机的应用场景和未来趋势等进行科普,那就更好了。 物理学还存在 ...
版主打智子的主意,小心眼前出倒计时,哈哈
游客
登录 | 注册 方可回帖
返回