内容简介:秀尔算法(Shor’s algorithm)是一种非常著名的量子算法,甚至可以说是量子计算的一块金字招牌了。Shor’s algorithm可以在多项式时间内完成大整数质因数分解。所以Shor’s algorithm从诞生之时,就和以RSA算法为根基的加密技术形成了不可调和的矛盾。2001年,IBM的研究小组使用Shor’s algorithm完成了
Post Views: 40
秀尔算法(Shor’s algorithm)是一种非常著名的量子算法,甚至可以说是量子计算的一块金字招牌了。Shor’s algorithm可以在多项式时间内完成大整数质因数分解。所以Shor’s algorithm从诞生之时,就和以RSA算法为根基的加密技术形成了不可调和的矛盾。2001年,IBM的研究小组使用Shor’s algorithm完成了 15 = 3×5 这个整数分解运算 。时至今日,快20年过去了,量子计算机没有摧毁RSA。未来这一天来临的时候,希望我们已经准备好了。下图是,经典大数分解和秀尔算法的复杂度对比。
Shor算法的整体流程
完整的Shor算法是需要经典计算机和量子计算机协作完成的。其中量子计算机实现一个周期查找的函数,经典计算机负责整个算法流程的控制,以及调用量子算法。
首先、还是表达一下Shor’s algorithm的问题描述:给定一个合成数N,找到整数p在1和N之间且不包含1和N,并且N整除于p。
- 选择任意数字 a
- 计算 gcd(a, N) 。可以使用辗转相除法来计算。
- 若 gcd(a, N) \not = 1 (不等于,这里不等号渲染有问题),则我们有了一个 N 非平凡的因数,因此这部分结束了。否则,利用下面的周期查找子程序(Period-finding subroutine,使用量子计算机完成)来找出下面这个函数的周期 r :
f(x)=a^{x} {mod} N
换句话说,找出 a 在 {Z} _{N} 里面的阶 r ,或者最小的正整数 r 令 f ( x + r ) = f ( x ) 。
- 若 r 是奇数,回到第一步。
- 若 a^{ r /2} ≡ -1 (mod N) ,回到第一步。否则,计算 gcd(a^{r/2}+1, N) 与 gcd(a^{r/2}-1, N) ,并验证他们是不是分别是N非平凡的因数。成功则分解完成。
第三个步骤中,周期查找函数是使用量子计算机完成的。这里暂且不分析这一部分,而关注于整体流程。第一个步骤就是遍历小于N的整数;第二步其实就是碰碰运气,如果a和N的最大公约数不是1,那就是运气好,算法直接结束了;如果最大公约数是1,则调用周期查找子程序计算 f(x)=a^{x} {mod} N 这个函数的阶数 r , mod N 就是以 N 为模的取模运算。
因为 f ( x + r ) = f ( x ) ,而且 f ( 0 ) = 1 mod N ,因此可得:
f ( 0 ) = f (0+ r )=a^{r} mod N =1mod N
a^{r}-1=0 modN
如果 r 为偶数,而且 a^{ r /2} 不等于-1,则可得:
(a^{r/2}+1)(a^{r/2}-1)=0 modN
观察上面的等式可以很容易发现, (a^{r/2}+1)(a^{r/2}-1) 和 N 存在不是1的最大公约数,也即 (a^{r/2}+1) 或者 (a^{r/2}-1) 与 N 非1的最大公约数。通过辗转相除法即可计算出来,然后验证这两个最大公约数是不是 N 的因子即可。如果是的话,算法就成功了。
整个算法的充分性,其实是比较明显的,因为最终都会验证结果是不是 N 的因子。算法的必要性,即是不是一定能找到质因子,我其实还没理解清楚,这里先略过了。接下来就是Shor算法的量子部分,即前文说的Period-finding subroutine。
周期查找算法(Period-finding algorithm)
周期查找算法的作用就是求 f(x)=a^{x} {mod} N 这个函数的周期。查找周期的前提是周期存在,这个函数的周期存在吗?欧拉对这个问题做过证明,有如下结论: gcd ( y, N ) = 1 ,按 Euler 定理,周期 r 一定存在。
周期查找算法其实本质上是特殊情况的相位估计算法变种(如果对相位估计算法,可以看看我前面相位估计的文章),整体的算法流程如下:
- \vert 0 \rangle\vert 0 \rangle ; 初始化状态
- \longrightarrow\dfrac{1}{\sqrt{2^t}} \displaystyle\sum_{x=0}^{2^t-1} {\vert j \rangle} {\vert 0 \rangle} ; 使用Hadamard门生成叠加态
- \longrightarrow\dfrac{1}{\sqrt{2^t}} \displaystyle\sum_{j=0}^{2^t-1} {\vert x \rangle} {\vert f(x) \rangle} \approx \dfrac{1}{\sqrt{r2^t}} \displaystyle \sum_{l=0}^{r-1} \sum_{x=0}^{2^t-1} {e^{2\pi i lx / r}} {\vert x \rangle} {\vert \hat f(l) \rangle} ;
这一步主要是通过”控制 U 变换”,其中 U{\vert x \rangle}{\vert y \rangle} = {\vert x \rangle}{\vert y \bigoplus f(x) \rangle} 。 - \longrightarrow \dfrac{1}{\sqrt{r}} \sum_{l=0}^{r-1} {\vert \widetilde{l / r} \rangle} {\vert \hat f(l) \rangle} ;
这一步主要是应用傅里叶反变换。 - \longrightarrow { \widetilde{l / r} } ;
这一步就是测量上部分寄存器的值。 - \longrightarrow {r} ;
通过连分数算法计算r的值。
其中,第三步使用了控制U门,而且引入新的表示态:
{\vert \hat f(l) \rangle} = \dfrac{1}{\sqrt{r}} \displaystyle \sum_{x=0}^{r-1} {e^{-2\pi i lx / r}} {\vert x \rangle}
其实就是 f(x) 傅里叶变换之后的态,由于 2^t 不一定是周期 r 的整倍数,所以步骤三有一个约等号。此外,由于随机性, l 是有很多可能取值的。因此有人可能会质疑如果 l 是 r 的整数倍,则连分数算出的 r 是有问题的。但这个其实不用担心,和 r 互质的会更多,所以从概率来讲,正确的 r 会很高概率地被发现。
本来是打算每个算法都做一个线路实现的,可是Shor算法很难搞,这里就只能略过了。这篇水完,量子计算方面应该会暂时告一段落了,毕竟还有太多事情要做。而且写的这些东西,我也不满意,毕竟是现学现卖了,准备之后有时间修改一下。
参考文献
【1】.《量子计算与量子信息》Michael A. Nielsen
【2】.《量子力学》列文.朗道
【3】.《量子力学原理》P.A.M. Dirac
【4】. ETHZ讲义
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- [量子计算]量子搜索Grover算法
- 学术向丨量子计算与区块链抗量子算法
- 今年18岁的我,推翻了权威量子算法研究
- Cloudflare希望找到后量子时代的安全加密算法
- 拥抱新时代,Google 开源量子算法框架 CIRQ
- 首次理论证明:Science论文提出超越经典计算的量子算法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX网络编程
史蒂文斯、芬纳、鲁道夫 / 杨继张 / 清华大学出版社 / 2006-1 / 98.00元
《UNIX网络编程》(第1卷)(套接口API第3版)第1版和第2版由已故UNIX网络专家W. Richard Stevens博士独自编写。《UNIX网络编程》(第1卷)(套接口API第3版)是3版,由世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X......一起来看看 《UNIX网络编程》 这本书的介绍吧!