量子计算算法:离散对数与整数分解
作者:彼得・W・肖尔美国新泽西州默里山芒廷大道 600 号贝尔实验室 2D-149 室,邮编 07974
摘要
计算机通常被认为是通用计算设备,即理论上它能模拟任何物理计算设备,且计算时间的开销至多为多项式量级。但当引入量子力学理论后,这一结论是否仍然成立尚未有明确答案。以戴维・多伊奇为开端,多位研究者相继构建了量子力学计算机的模型,并对其计算特性展开了深入研究。本文提出了一种拉斯维加斯型量子算法,可在量子计算机上求解离散对数问题与整数分解问题,该算法的计算步骤数与输入规模(如待分解整数的位数)呈多项式关系。这两个问题在经典计算机上被普遍认定为难解问题,且已成为多种密码系统的设计理论基础。本文也因此首次给出了量子密码分析的实际实例。
1 引言
自量子力学被发现以来,人们发现其概率规律的表现形式与人类直观认知相悖,也正因如此,量子力学现象与我们所熟知的经典物理现象存在本质差异。费曼是首个探讨量子力学这一特性对计算领域产生何种影响的学者,他通过论证指出,在经典(冯・诺依曼)计算机上模拟量子力学,本质上需要付出极高的计算成本。同时他还提出,可基于量子力学原理构建专用计算机来解决这一问题,这一想法也间接引出了一个核心问题:在计算机中运用量子力学原理,是否能实现比经典计算机更高效的计算?
该领域的早期研究工作由贝尼奥夫完成,尽管他并未探讨量子力学是否能为计算赋予额外的算力,但他证明了图灵机的计算过程可通过量子过程的可逆幺正演化来模拟,而这正是实现量子计算的必要前提。多伊奇首次提出了量子计算的显式模型,他不仅明确定义了量子图灵机与量子电路的概念,还对其部分核心特性展开了研究。
本文后续将探讨量子计算与经典计算复杂性类之间的关联,因此先为不具备相关背景的读者,对计算复杂性类进行简要的直观阐释。限制计算机求解大规模问题能力的核心资源通常有两种:时间与空间(即内存)。算法分析领域的研究核心,是算法对这两种资源的渐进需求与问题规模之间的函数关系。理论计算机科学家普遍认为,当算法的步骤数随输入规模呈多项式增长时,该算法具备实际有效性,这类算法被称为高效算法。能通过高效算法求解的问题集合被定义为 P 类问题,这一分类具有诸多优良特性:其一,它能较好地反映算法在实际应用中的性能表现(当然,若某一算法的运行时间为输入规模的 10 次幂,这类算法并不能被视为真正的高效算法);其二,该分类在理论上具有一致性,不同的合理经典机器模型,其所对应的 P 类问题集合完全相同。这一特性在量子计算领域同样存在 ------ 不同的量子机器模型,其运行时间的差异至多为多项式量级。
本文还将探讨其他几种经典计算复杂性类:第一种是 PSPACE 类,即能以输入规模多项式量级的内存完成求解的问题集合;另一类重要的复杂性类是 NP 类,直观来说,这类问题属于指数级搜索问题,求解此类问题可能需要在指数规模的空间中进行遍历搜索,但一旦找到问题的解,就能在多项式时间内验证其正确性(部分场景下需要多项式量级的辅助验证信息)。此外,本文还将介绍另外两种经典复杂性类:BPP 类,即借助随机数生成器,能以高概率在多项式时间内求解的问题集合;P#P类,即若能高效计算指数多项求和(且求和式中的每一项都能在多项式时间内计算),则可在多项式时间内求解的问题集合。
这些复杂性类的包含关系如下:P⊆BPP,NP⊆P#P⊆PSPACE而 BPP 类与 NP 类之间的具体逻辑关系,目前尚未被明确证明。
在计算机中运用量子力学原理是否能获得更强的计算能力,这一问题至今仍未得到令人满意的答案。已有部分研究探讨过这一问题,但尚未证明存在能在量子多项式时间内求解、却无法在 BPP 类中求解的问题(BPP 类指在概率图灵机上以有界错误概率在多项式时间内求解的问题集合)。伯恩斯坦和瓦齐拉尼的论文为量子计算的计算复杂性理论奠定了基础,也推动了该问题的后续研究。该论文中的一项重要成果表明,存在一类谕示问题(涉及 "黑箱" 子程序的问题),能在量子图灵机上以多项式时间求解,而在经典计算机上则需要超多项式时间。这是首个明确的证据,证明量子计算相较于配备随机数生成器的经典计算,可能实现超多项式的计算加速(此前仅有的线索是,人们尚无法在经典计算机上以非指数级的速度模拟量子计算机)。西蒙对这一结果进行了优化,他构造了一个更为简单的谕示问题,该问题在量子计算机上可实现多项式时间求解,而在经典计算机上则需要指数时间。事实上,将西蒙提出的谕示视为子程序时,该问题将成为一个承诺问题,量子计算机可对其实现多项式时间求解,而经典计算机求解该问题则存在本质性困难。本文中提出的离散对数 "简单情形" 求解算法,正是西蒙算法的直接类比,仅将其中的Z2k群替换为Zp−1群 ------ 笔者也是在阅读西蒙的论文后,才发现了这一算法。
伯恩斯坦和瓦齐拉尼的论文中还有另一项重要成果:他们严格定义了一类特定的量子图灵机,并构造出了通用量子图灵机,该通用机可模拟此类中的任意量子图灵机。但遗憾的是,无法确定这类量子图灵机是否能模拟其他类型的量子图灵机,因此这一成果并不完备。姚期智弥补了这一理论缺陷,他证明了量子图灵机与一致的多项式规模量子电路族之间可以相互模拟,且模拟的时间开销至多为多项式量级。他还进一步定义了 k 带头量子图灵机,并证明这类机器的模拟开销为2k倍。这一结论似乎表明,在这类量子机器上以有界错误概率ϵ<1/3实现多项式时间求解的问题集合,具有良好的鲁棒性。该集合被命名为 BQP 类,与经典复杂性类 BPP 相对应(BPP 类是在概率图灵机上以有界错误概率求解的问题集合),BQP 类也被视为能在量子图灵机上高效求解的问题集合。
由于BQP⊆P#P⊆PSPACE,任何非相对化的证明若能表明 BQP 类严格包含 BPP 类,都将推导出经典复杂性理论的重要结论BPP⊊PSPACE,而这一结论目前尚未被证明。鉴于这一理论难点,研究者提出了多种研究思路:其一,证明BQP⊆BPP将导致一些被普遍认为互不相同的经典复杂性类发生坍缩;其二,证明相对谕示的相关结论 ------ 贝内特等人的研究表明,相对随机谕示而言,NP 类并不包含于 BQP 类。该证明实际上暗示量子计算机无法实现单向函数的求逆,但这一结论仅对单向谕示成立(即作为子程序给出、量子计算机无法窥探内部结构的 "黑箱" 函数)。此类相对谕示的结论在过去曾产生过理论误导,最典型的例子便是IP=PSPACE的证明;其三,也是本文所采用的研究思路,在 BQP 类中求解一些研究充分、但尚未发现经典多项式时间算法的经典难题。这一思路能证明,量子干涉所赋予的额外计算能力,至少是经典计算难以实现的。伯恩斯坦、瓦齐拉尼以及西蒙也都为一些尚未被证明属于 BPP 类的问题设计了量子多项式时间算法,但这些问题都是为验证量子计算的算力优势而专门构造的(尽管西蒙提出的问题并非刻意设计,且具有潜在的实用价值)。
离散对数问题和整数分解问题是两个被深入研究的经典数论问题,目前尚未发现能在经典计算机上实现多项式时间求解的算法。事实上,人们普遍认为这两个问题是难解问题,因此基于其难解性设计了多种密码系统,其中基于整数分解难解性的 RSA 公钥密码系统已得到广泛的实际应用。本文将证明,这两个经典难解问题都属于 BQP 类,即可在量子计算机上实现高效求解。
目前,人们尚不清楚如何构建实际的量子计算机,但从量子力学定律的角度分析,构建量子计算机具备理论可能性。已有研究者提出了多种量子计算机的潜在设计方案,但构建这些系统都将面临巨大的技术困难。即便能成功构建出小型量子计算机,将其扩展为能完成有实际意义计算的大型量子计算机,也可能存在根本性的技术难题。本文希望能推动相关领域的研究,进一步探索实际构造量子计算机的技术可行性。
即便量子计算机始终无法被实际构建,这项研究也能为经典计算机模拟量子力学的问题带来新的理论启示。任何能模拟任意哈密顿量的经典方法,都必然能模拟量子计算机;因此,若存在一种能以至多多项式时间开销模拟量子力学的通用经典方法,那么整数分解问题就存在经典多项式时间算法。
2 量子计算
本节将对量子计算进行简要介绍,重点阐述本文所用到的量子计算核心特性。如需更全面的理论综述,读者可参考本次会议中西蒙的论文,或量子计算复杂性理论的早期研究文献。
在量子物理中,一个实验的表现如同同时沿着所有可能的路径进行,每条路径都对应一个由实验物理规律决定的复概率幅。实验某一特定结果出现的概率,与通向该结果的所有路径的概率幅之和的模的平方成正比。要对一组路径的概率幅进行求和,这些路径对应的实验结果必须在所有方面完全相同,即整个系统必须处于相同的量子状态。
量子计算机的工作方式与此高度相似:计算过程会同时沿着所有可能的路径进行,每条计算路径都关联一个复概率幅。要确定计算机最终量子状态的出现概率,需将到达该最终状态的所有计算路径的概率幅相加,再对结果取模的平方。
我们也可以从另一个等价的角度理解这一过程:计算机在计算的每一步,都处于多个量子状态的叠加态。我们将该叠加态表示为:i∑ai∣Si⟩(2.1)其中,概率幅ai为复数,且满足归一化条件∑i∣ai∣2=1;每个∣Si⟩为计算机的基态 ------ 在量子图灵机中,基态由纸带的内容、读写头的位置和状态共同定义;在量子电路中,基态由电路某一层所有线路上的信号值定义。若在计算的某一步观测计算机的量子状态,观测到基态∣Si⟩的概率为∣ai∣2;但根据海森堡不确定性原理,在计算过程中观测计算机会对量子态产生坍缩,进而干扰后续的计算过程。
量子力学定律仅允许对量子态进行幺正变换,幺正矩阵是其共轭转置等于逆矩阵的特殊矩阵,要求量子态的变换由幺正矩阵表示,能保证所有可能结果的概率之和为 1,符合概率的基本公理。此外,量子图灵机和量子电路的定义仅允许局部幺正变换,即仅能对固定数量的量子比特进行幺正变换。
在此举一个具体例子有助于理解上述概念。假设计算机处于如下量子叠加态:21∣000>+21∣100>−21∣110>(2.2)我们对该量子态的最后两个量子比特应用如下幺正变换:
$
000110110021212121012121−21−2i1021−2121−211121−21−212i(2.3)
即对向量(2.2)最后两个比特的分量乘以矩阵(2.3),则计算机将演化为如下量子叠加态:
22i(∣000>+∣001>+∣010>+∣011>)+21∣101>+21∣111>(2.4)
需要注意的是,若初始叠加态为:
21∣000>+21∣100>+21∣110>(2.5)
其演化结果将与上述结果完全不同,尽管对这两个初始态进行观测时,其处于任意特定构型的概率完全相同。这一特性是量子计算与经典计算的核心差异之一。
接下来,我们给出量子计算的若干重要特性,这些特性无法从量子图灵机或量子电路的定义中直接得出,但对构造量子算法具有至关重要的意义。
性质1:一个确定性计算能在量子计算机上执行,当且仅当该计算是可逆的。由可逆计算的相关理论结论可知,只要在计算机中保留输入a,就能计算任意多项式时间函数f(a)。若要擦除输入a并将其替换为f(a),还需满足f是单射,且能从f(a)在多项式时间内计算出a,即f和其逆函数f−1都能在多项式时间内计算。
性质2:任意多项式规模的幺正矩阵,都能通过多项式数量的基本幺正变换来近似实现,因此能在量子计算机上以多项式时间近似实现。此外,这种近似的精度足够高,只会为计算结果引入有界的错误概率,不会影响算法的整体有效性。
3 构造幺正变换
由于量子计算的核心操作是幺正变换,掌握构造各类实用幺正变换的方法具有重要的理论和实际意义。本节将介绍在量子机器上构造幺正变换的若干核心技巧,并证明某一特定幺正变换能在多项式时间内构造。本文中的幺正变换均以矩阵形式表示,矩阵的行和列均由量子态索引;这些量子态对应计算机中整数的表示形式,除非另有说明,行和列的索引均从0开始。
本文将反复使用一种核心的幺正变换,其求和形式即为量子傅里叶变换。考虑一个整数a,满足0≤a<q(其中q的比特数为多项式量级),我们执行如下变换:将基态∣a⟩映射为
q1/21b=0∑q−1∣b>exp(2πiab/q)(3.1)
即应用幺正矩阵Aq,其(a,b)位置的矩阵元为q1/21exp(2πiab/q)。该变换是本文所有量子算法的核心,我们将其记为矩阵Aq。由于本文中q可以是指数规模的整数,因此必须证明该变换能在多项式时间内实现。实际上,我们仅能为光滑数q实现多项式时间的量子傅里叶变换(光滑数即素因子均为小素数的整数)。本文中讨论的光滑数q,其所有素幂因子的大小均不超过(logq)c(c为固定常数)。事实上,该变换对所有光滑数q都能实现多项式时间构造:科珀史密斯证明,可利用快速傅里叶变换为q=2k实现该变换,且这一方法能大幅减少整数分解所需的运算量。
若已知q的因式分解q=q1q2...qk,其中gcd(qi,qj)=1,且k和所有qi的规模均为多项式量级,我们将证明可通过组合各Aqi,在多项式时间内构造变换Aq。为此,我们首先给出量子计算中的一个核心引理。
引理3.1 设矩阵B为mn×mn的分块对角幺正矩阵,其对角线上为n个相同的m×m幺正矩阵B′,其余位置均为0。若量子图灵机能在时间T(B′)内实现态变换B′,则量子图灵机能在时间T(B′)+(logmn)c内实现矩阵B对应的态变换(c为常数)。
我们将矩阵B称为n个B′的直和,记为B=⊕nB′。该矩阵本质上是B′与n阶单位矩阵In的张量积。
证明 假设纸带中存储着整数a,我们可通过可逆计算从a得到α1和α2,满足a=mα1+α2,该计算会擦除纸带中的a,并将其替换为α1和α2。其中,α1表示行a所属的分块,α2表示该分块中矩阵的第α2行。随后,我们对α2应用变换B′得到β2(此过程会擦除α2)。最后,将α1和β2组合为b=mα1+β2,即得到矩阵B作用于a的结果(带有正确的概率幅)。实现变换B′的时间为T(B′),其余计算的时间为logm+logn的多项式,因此整体时间复杂度为T(B′)+(logmn)c。
接下来,我们证明如何为光滑数q构造变换Aq。我们将Aq分解为多项式数量的幺正变换的乘积,且每个幺正变换都能在多项式时间内实现;由此即可证明Aq能在多项式时间内构造。设q=q1q2且gcd(q1,q2)=1,我们将Aq分解为Aq=CD,其中对D的行和列重新排序后,可得到直和⊕q1Aq2;对C的行和列重新排序后,可得到直和⊕q2Aq1。只要对C和D的行、列重排操作能在多项式时间内实现(即给定行r,能在多项式时间内找到其映射到的行r′),且其逆操作也能多项式时间实现,那么结合上述引理和递归方法,就能得到在量子计算机上多项式时间实现Aq的方法。
接下来,我们定义矩阵C和D,并验证Aq=CD。为定义C和D,首先给出若干预备定义:设q=q1q2且gcd(q1,q2)=1,令ω=exp(2πi/q);由中国剩余定理,存在整数u(模q)满足u≡0(modq1)且u≡−1(modq2),且该整数能在多项式时间内计算。将行、列索引a,b,c做如下分解:a=α1q2+α2,b=β1q1+β2,c=γ1q1+γ2(注意a,b,c的分解方式存在不对称性)。
由此定义矩阵C和D的矩阵元:
C(a,b)={0,q11/21ωα1β2q2+β1β2(u+1),α2=β1其他情况D(b,c)={0,q21/21ωβ1γ1q1−β1β2u,β2=γ2其他情况
易知CD(a,c)=C(a,b)D(b,c),其中b=α2q1+γ2(因为只有当α2=β1且β2=γ2时,C(a,b)和D(b,c)的矩阵元非零)。此时:
CD(a,c)=q11/2q21/21ωα1β2q2+β1β2(u+1)+β1γ1q1−β1β2u=q1/21ωα1γ2q2+α2γ1q1+α2γ2=q1/21ω(α1q2+α2)(γ1q1+γ2)=q1/21ωac
因此CD(a,c)=Aq(a,c),即Aq=CD,验证了分解的正确性。
接下来,我们简要说明如何对C的行和列重排,以得到直和⊕q2Aq1。矩阵C可表示为分块对角形式,其分块由条件α2=β1索引(因为当α2=β1时,所有矩阵元均为0)。设u+1≡tq2(modq),则在某一固定分块α2=β1内,矩阵元满足:
q1C(a,b)=ωα1β2q2+β1β2(u+1)=exp(2πi(α1β2+β1β2t)q2/q)=exp(2πi(α1+α2t)β2/q1)(3.5)
因此,若对该分块内的行重新排序,使其由α′≡α1+α2t(modq1)索引,则可得到变换α′→β2,其概率幅为q11/21exp(2πiα′β2/q1),即该分块为矩阵Aq1。同理,对矩阵D的行和列重排后,可得到直和⊕q1Aq2。
我们还需要证明,能在多项式时间内找到一个介于n和2n之间的光滑数q。实际上,存在比这更接近n的光滑数,但本文仅需这一结论即可满足算法设计需求。目前,人们尚无法在多项式时间内找到与n非常接近的光滑数。
引理3.2 给定整数n,存在多项式时间算法,能找到整数q满足n≤q<2n,且q的所有素幂因子的大小均不超过clogq(c为与n无关的常数)。
证明 依次相乘素数2×3×5×7×11×⋯×pk,直到乘积大于n。若该乘积大于2n,则除以最大的素数,使结果仍大于n,得到的数即为所求的q。由素数定理的推论,任意整数m和2m之间必存在素数,因此n≤q<2n。素数定理和相关计算表明,q的最大素因子的规模为O(logn),即满足所有素幂因子不超过clogq的条件。
需注意,若采用科珀史密斯提出的、基于2的幂次单位根的变换A2k,则取k=⌊log2n⌋+1,即q=2k,此时可通过快速傅里叶变换高效实现该变换。
4 离散对数:简单情形
离散对数问题的正式定义为:给定素数p、模p乘法群的生成元g,以及整数x(模p),求整数r满足gr≡x(modp)。本节首先给出量子计算机上求解离散对数问题的多项式时间算法,适用于p−1为光滑数的简单情形。该算法是西蒙算法的直接类比,仅将其中的Z2k群替换为Zp−1群。
需要说明的是,光滑数情形下的离散对数问题并非具有突破性的研究成果,因为经典计算机上已有求解该情形的多项式时间算法;但该情形的算法比一般情形的离散对数算法和整数分解算法更易解释,且这三种算法的核心思想高度相似,因此该例子能帮助读者更好地理解更复杂的量子算法。
算法的初始状态为:量子计算机的量子内存(纸带)中存储着x,g,p。我们的目标是计算满足gr≡x(modp)的r。由于计算过程中不会删除这些值,因此x,g,p为常数,计算机的量子态可由纸带的其他内容表示。
算法的第一步为:通过量子叠加的方式,均匀随机地选择整数a和b(模p−1),此时计算机的量子态为:
p−11a=0∑p−2b=0∑p−2∣a,b>(4.1)
第二步为:可逆地计算gax−b(modp),计算过程中需保留a和b在纸带上,此时计算机的量子态为:
p−11a=0∑p−2b=0∑p−2a,b,gax−b(modp)⟩(4.2)
第三步为:对a和b分别应用变换Ap−1:将a映射为c,概率幅为(p−1)1/21exp(2πiac/(p−1));将b映射为d,概率幅为(p−1)1/21exp(2πibd/(p−1))。由上一节的结论,该变换为幺正变换;且由于p−1为光滑数,该变换能在量子计算机上以多项式时间实现。此时计算机的量子态为:
(p−1)21a,b,c,d=0∑p−2exp(p−12πi(ac+bd))c,d,gax−b(modp)⟩(4.3)
接下来,我们计算计算机最终处于态∣c,d,y>(其中y≡gk(modp))的概率。该概率为通向该态的所有计算路径的概率幅之和的模的平方,即:
(p−1)21a,ba−rb=k∑exp(p−12πi(ac+bd))2(4.4)
其中求和范围为所有满足a−rb≡k(modp−1)的(a,b)。这一条件的由来是:只有当不同计算路径得到相同的y≡ga−rb≡gk(modp)时,路径之间才会发生量子干涉,这是量子算法实现加速的核心原理。
将a≡k+rb(modp−1)代入上述指数项,求和式可化简为:
(p−1)21b=0∑p−2exp(p−12πi(kc+b(d+rc)))2(4.5)
若d+rc≡0(modp−1),则上述求和式为一组均匀分布在单位圆上的(p−1)次单位根之和,因此该概率为0;若d≡−rc(modp−1),则上述求和式为相同的单位根相加(p−1)次,结果为(p−1)e2πikc/(p−1),因此该概率为1/(p−1)2。
我们可验证这些概率的和为1:态∣c,−rc,y>的数量为(p−1)2,因为c(模p−1)有p−1种选择,y(模p且y=0)也有p−1种选择,所有可能态的概率之和满足归一化条件。
因此,该计算过程会随机生成一个c(模p−1),以及对应的d≡−rc(modp−1)。若c与p−1互质,则可通过除法直接求出r。由于所有c被选中的概率均等,c与p−1互质的概率为ϕ(p−1)/(p−1)(ϕ为欧拉函数)。易证ϕ(p−1)/(p−1)>1/logp(事实上,由数论结论,liminfϕ(p−1)/(p−1)≈e−γ/loglogp,其中γ为欧拉-马歇罗尼常数)。因此,只需进行次数为logp多项式量级的实验,就能以高概率得到r。实际上,只需进行期望常数次数的实验,就能得到一组c,使得其中至少有一个c与p−1的所有素因子互质,由此即可唯一确定r。
5 精度说明
量子计算机中概率幅的精度要求,可能成为其实际物理实现的核心障碍。理论上,人们普遍将多项式精度(即精度的比特数为问题规模的对数量级)作为量子计算可行与不可行的理论分界线。这是因为量子计算机的相位角需通过物理器件实现,而构造精度高于多项式量级的物理器件,在工程上显然不具备实际可行性。事实上,即便多项式精度,其实际物理实现也可能存在诸多困难;但将其作为理论分界线,能使量子计算的理论特性更简洁、自洽。
因此,我们需要证明上一节中的计算过程,仅需概率幅具有多项式精度即可完成。从表达式exp(2πiac/(p−1))来看,似乎需要指数级的精度,因为该相位角的精度为指数量级。但幸运的是,实际并非如此。考虑将矩阵Ap−1中的所有项exp(2πiac/(p−1))替换为exp(2πiac/(p−1)±πi/20),此时所有满足d≡−rc的"有效情况"出现的概率,仍与原情况接近:原情况中是p−1个相位完全相同的概率幅相加,而近似情况下是p−1个相位接近的概率幅相加,因此求和结果的模仅会减少一个常数因子。由此,算法仍能以常数概率得到满足d≡−rc的(c,d)(而非原算法的概率1),不会影响算法的整体有效性。
由上一节的结论,矩阵Ap−1可表示为至多logp个矩阵Aqi的乘积,因此Ap−1的每个矩阵元,都是至多logp个项的乘积。若每个Aqi的相位角的误差不超过ϵ/logp,则乘积后的相位角误差不超过ϵ,这一精度足以使计算保持常数的成功概率。类似的论证表明,Aqi中概率幅的模的误差为多项式比例时,计算仍能有效进行。对于一般情形的离散对数算法和整数分解算法,也可通过类似的论证证明,其概率幅仅需多项式精度即可,无需指数级精度。
我们还需要证明,如何由有限精度的常数规模幺正矩阵构造Aqi。相关论证与上述内容高度相似,本文不再赘述------事实上,贝内特等人已在相关研究中证明,量子图灵机上的任意计算,只需采用多项式精度的概率幅,就能以高概率得到正确结果。
由于精度很可能成为量子计算实际物理实现的限制因素,因此有必要深入研究量子算法实际所需的精度水平。尽管伯恩斯坦和瓦齐拉尼证明,量子算法所需的精度比特数,从不超过量子计算机计算步骤数的对数,但某些具体算法的实际精度需求可能更低。目前存在两个有趣的开放问题:求解离散对数或整数分解问题,是否能采用低于多项式量级的精度?精度与计算时间之间,是否存在某种权衡关系?这些问题的解答将为量子计算机的物理实现提供重要的理论指导。
6 整数分解
整数分解的量子算法与一般情形的离散对数算法核心思路相似,且算法结构更为简单。本文先介绍整数分解算法,再介绍一般情形的离散对数算法,使三种算法按复杂度由低到高排列,便于读者理解。对离散对数问题更感兴趣的读者,可直接跳至下一节。
本文并未直接给出量子计算机上分解整数n的算法,而是给出了求解模n乘法群中元素x的阶的量子算法(元素的阶即满足xr≡1(modn)的最小正整数r)。已有经典数论研究证明,整数分解问题可随机归约为元素阶的求解问题,因此求解出元素的阶后,即可通过经典方法完成整数分解。
若已知求解元素阶的方法,分解奇数n的具体步骤为:随机选择整数x,求解x在模n乘法群中的阶rx,计算gcd(xrx/2−1,n)。当且仅当rx为奇数,或xrx/2≡−1(modn)时,该方法无法得到n的非平凡因子。相关数论分析表明,该算法找到n的一个非平凡因子的概率至少为1−1/2k(k为n的不同素因子的个数)。因此,该方法对非素幂的n均有效;而素幂的分解,可通过经典算法高效实现,无需借助量子计算。
给定整数x和n,求解满足xr≡1(modn)的最小正整数r的量子算法如下:
第一步:找到一个光滑数q,满足2n2≤q<4n2,该步骤可通过引理3.2的方法在多项式时间内完成。
第二步:通过量子叠加将计算机制备为表示整数a(模q)的均匀叠加态,此时计算机的量子态为:
q1/21a=0∑q−1∣a>(6.1)
与离散对数算法相同,由于计算过程中n,x,q的值保持不变,因此其不会出现在量子态的表示中,量子态仅由可变的计算变量表示。
第三步:可逆地计算xa(modn),计算过程中保留x和a在纸带上,保证计算的可逆性,此时计算机的量子态为:
q1/21a=0∑q−1∣a,xa(modn)⟩(6.2)
第四步:对a应用量子傅里叶变换Aq,将a映射为c,概率幅为q1/21exp(2πiac/q),此时计算机的量子态为:
q1a=0∑q−1exp(2πiac/q)∣c,xa(modn)⟩(6.3)
第五步:观测计算机的量子态。实际上,仅观测c的值即可完成算法,但为了清晰起见,本文假设同时观测c和xa(modn)的值。
接下来,计算计算机最终处于态∣c,xk(modn)>(0≤k<r)的概率。对通向该态的所有计算路径求和,可得该概率为:
q1a:xa≡xk∑exp(2πiac/q)2(6.4)
其中求和范围为所有满足0≤a<q且xa≡xk(modn)的a。由于x的阶为r,因此该求和范围等价于所有满足a≡k(modr)的a。
令a=br+k,将其代入上式,则上述概率可改写为:
q1b=0∑⌊(q−k−1)/r⌋exp(2πi(br+k)c/q)2(6.5)
由于exp(2πikc/q)的模为1,其仅改变概率幅的相位,不改变模的大小,因此可将其从求和式中提出并忽略。同时,将rc替换为{rc}q({rc}q为rc模q的剩余,且满足−q/2<{rc}q≤q/2),则概率表达式可化简为:
q1b=0∑⌊(q−k−1)/r⌋exp(2πib{rc}q/q)2(6.6)
接下来,我们证明:若{rc}q足够小,则求和式中所有概率幅的相位几乎相同,从而使该概率显著增大,这是量子干涉产生有效结果的核心。当{rc}q相对于q足够小时,可做变量替换t=b/q,将离散的求和式近似为连续的积分:
∫0q1⌊(q−k−1)/r⌋exp(2πi{rc}qt)dt2(6.7)
若∣{rc}q∣≤r/2,可通过积分计算证明该积分值的渐近下界为4/(π2r2),即至少为1/(3r2)。因此,当满足条件:
2−r≤{rc}q≤2r(6.8)
即存在整数d满足:
2−r≤rc−dq≤2r(6.9)
时,观测到态∣c,xk(modn)>的概率至少为1/(3r2)。
将式(6.9)两边除以rq并整理,可得等价条件:
qc−rd≤2q1(6.10)
我们已知c和q的值,且由于q≥2n2,满足上述不等式且分母r<n的分数d/r至多有一个。因此,可通过将c/q四舍五入为最接近的、分母小于n的分数,得到d/r的最简形式。这一过程可通过对c/q做连分数展开高效实现,连分数展开能求出c/q的所有最佳近似分数,该步骤为经典多项式时间算法。
若得到了d/r的最简形式,且d与r互质,则可直接得到r。接下来,我们统计能通过这种方式求出r的量子态∣c,xk(modn)>的数量:与r互质的d的数量为ϕ(r)(欧拉函数),每个这样的分数d/r都对应一个满足∣c/q−d/r∣≤1/(2q)的c/q;而xk的可能取值有r种(因为x的阶为r)。因此,能用于求解r的量子态数量为rϕ(r)。
由于每个这样的量子态出现的概率至少为1/(3r2),因此算法成功求出r的概率至少为ϕ(r)/(3r)。由数论经典结论,ϕ(r)/r>k/loglogr(k为固定常数),这表明算法成功的概率至少为k/loglogr。因此,只需进行O(loglogr)次实验,就能以高概率求出r。
需要注意的是,该阶求解算法并未充分利用模n乘法的诸多特性,其核心仅利用了变换的迭代性。事实上,对于任意置换f:{0,1,2,...,n−1}→{0,1,2,...,n−1},若其k次迭代f(k)(a)能在logn和logk的多项式时间内计算,则该算法同样能求解元素a在f下的阶(即满足f(r)(a)=a的最小正整数r),这表明该算法具有广泛的适用性。
7 离散对数:一般情形
对于一般情形的离散对数问题(即p−1不一定为光滑数),算法的设计思路与简单情形一致,但需要处理两个不同的模数,因此分析过程更为复杂。算法的具体步骤如下:
第一步为:找到一个光滑数q,使其接近p,即满足p≤q≤2p,该步骤可通过引理3.2的方法在多项式时间内完成。
第二步与简单情形相同:通过量子叠加均匀随机地选择整数a和b(模p−1),然后可逆地计算gax−b(modp),计算过程中保留a和b,此时计算机的量子态为:
p−11a=0∑p−2b=0∑p−2a,b,gax−b(modp)⟩(7.1)
第三步:对a和b应用量子傅里叶变换Aq,将a映射为c、b映射为d(模q),概率幅为q1exp(2πi(ac+bd)/q),此时计算机的量子态为:
(p−1)q1a,b=0∑p−2c,d=0∑q−1exp(q2πi(ac+bd))c,d,gax−b(modp)⟩(7.2)
观测到量子态∣c,d,y>(其中y≡gk(modp))的概率,与简单情形几乎相同,为:
(p−1)q1a,ba−rb=k∑exp(q2πi(ac+bd))2(7.3)
其中求和范围为所有满足a−rb≡k(modp−1)的(a,b)。
此时需要处理两个模:p−1和q,这使得计算过程的分析更为复杂,但我们仍能通过与简单情形相似的算法求出r。利用数论中的恒等式:
a=br+k−(p−1)⌊p−1br+k⌋(7.4)
将其代入式(7.3)的指数项,可得概率幅为:
(p−1)q1b=0∑p−2exp(q2πi(brc+kc+bd−c(p−1)⌊p−1br+k⌋))(7.5)
该概率幅的模的平方,即为观测到态∣c,d,gk(modp)>的概率。接下来对该表达式进行分析:首先,exp(2πikc/q)可从所有项中提出并忽略,因为其仅改变相位,不改变概率的大小;其次,将指数项拆分为两部分并提取公因子b,可得:
(p−1)q1b=0∑p−2exp(q2πiU)exp(q2πiV)(7.6)
其中:
U=bT,T=rc+d−p−1r{c(p−1)}q(7.7)V=(p−1br−⌊p−1br+k⌋){c(p−1)}q(7.8)
此处的{z}q表示z模q的剩余,且满足−q/2<{z}q≤q/2。
本文将证明:若能得到足够多的"有效输出",则仍能推导出r;且得到有效输出的概率为常数,保证算法的多项式时间复杂度。核心思路为:若满足条件
∣{T}q∣=rc+d−p−1r{c(p−1)}q−jq≤21(7.9)
(其中j为最接近T/q的整数),则当b在0到p−2之间变化时,式(7.6)中第一个指数项的相位变化范围不超过单位圆的一半,相位基本一致;此外,若满足条件
∣{c(p−1)}q∣≤20q(7.10)
则∣V∣始终不超过q/20,因此第二个指数项的相位与1的偏差始终不超过exp(πi/10),相位同样保持基本一致。
结合这两个结论可证明:若上述两个条件均满足,则所有计算路径的概率幅相位基本一致,量子干涉会使该量子态对应的概率贡献显著;且两个条件同时满足的概率为常数,通过对满足条件(7.9)的c进行合理采样,即可推导出r。
接下来,我们给出每个有效输出(即满足条件(7.9)和(7.10)的输出)的概率下界。当b从0变化到p−2时,exp(2πiU/q)的相位从0变化到2πiW,其中:
W=qp−2(rc+d−p−1r{c(p−1)}q−jq)(7.11)
j的定义与式(7.9)一致。因此,式(7.6)中第一个指数项的概率幅在方向exp(πiW)上的分量,至少为cos(2π∣W/2−Wb/(p−2)∣)。
由条件(7.10),第二个指数项exp(2πiV/q)带来的相位变化至多为πi/10。以使该分量最小的方式考虑这一相位变化,可得该分量至少为cos(2π∣W/2−Wb/(p−2)∣+π/10)。
由于p<q且由条件(7.9)可知∣W∣≤1/2,综合以上分析,通过积分计算可得观测到满足两个条件的态∣c,d,y>的概率至少为:
(q1π2∫π/107π/20costdt)2(7.13)
计算该积分可得,该概率至少为137/q2。
接下来我们统计满足条件(7.9)和(7.10)的(c,d)对的数量:满足条件(7.9)的(c,d)对数量恰好等于c的可能取值数,因为对于每一个c,都存在唯一的d使条件成立(将对应分数四舍五入为最近的整数即可得到该d);满足条件(7.10)的c的数量约为q/10。因此,同时满足两个条件的(c,d)对数量为q/10。
结合y的可能取值数为p−1,满足条件的量子态∣c,d,y>的数量约为pq/10。将该数量与单个有效量子态的概率下界结合,可得观测到任意有效量子态的概率至少为p/(80q);又因q<2p,该概率至少为1/160,即得到有效输出的概率为常数。
我们希望从满足条件的(c,d)对中还原出r,将条件(7.9)两边除以q,并取模1运算,可得等价式:
−2q1≤qd+qr(c−p−1{c(p−1)}q)≤2q1(mod1)(7.14)
首先可以注意到,式中r的系数是一个分母为p−1的分数------因为q能整除c(p−1)−{c(p−1)}q,这是由{c(p−1)}q的定义所决定的。因此,我们只需将d/q四舍五入为最接近的1/(p−1)的倍数,再对结果模p−1除以
c′=qc(p−1)−{c(p−1)}q(7.15)
即可得到r的一个候选值。
要证明只需进行多项式次数的实验就能找到正确的r,还需补充一些细节,核心问题仍是无法除以与p−1不互质的数,这一点与简单情形一致。
对于一般情形的离散对数算法,我们无法保证所有可能的c′都能以合理的概率生成,仅能保证其中十分之一的c′满足该性质,这一额外难点使后续步骤比前两种算法更复杂。
若已知r模p−1的所有素幂因子的结果,即可通过中国剩余定理在多项式时间内还原出r。本文中我们仅能求出r模所有大于20的素幂因子的结果,但通过一些额外处理,仍能最终还原出r。
我们的核心结论是:每个有效(c,d)对生成的概率至少为137p/q>1/16q,且至少有十分之一的c能构成有效(c,d)对。由式(7.15)可知,这些c可通过将c/q四舍五入为最近的1/(p−1)的整数倍,映射为c′/(p−1);此外,有效c恰好是那些使c/q与c′/(p−1)足够接近的c,因此每个有效c唯一对应一个c′。
我们希望证明:对于p−1的任意素幂因子piαi,随机生成的有效c′包含该因子的概率极低。若我们愿意接受算法中一个较大的常数因子,可直接忽略所有小于20的素幂因子------若已知r模所有大于20的素幂因子的结果,只需枚举所有小于20的素幂因子的可能余数即可,这仅会使算法的运行时间增加一个(较大的)常数因子,不会改变多项式时间的复杂度。
由于至少有十分之一的c能构成有效(c,d)对,因此至少有十分之一的c′为有效c′。对于素幂因子piαi,随机一个有效c′被piαi整除的概率至多为10/piαi。若我们得到t个有效c′,则所有大于20的素幂因子都能整除这t个c′的概率至多为:
piαi>20piαi∣p−1∑(piαi10)t(7.16)
其中求和范围为所有大于20且能整除p−1的素幂因子。
该求和式对所有大于20的整数求和时,当t=2时即收敛,且t每增加1,求和结果至少减半;因此存在一个较大的常数t,使该概率小于1/2,即大概率能找到一个c′与p−1的某个素幂因子互质。
回顾前文结论:单次实验得到任意一个有效c′的概率至少为1/16q,且有效c′的数量为q/10。因此,经过160t次实验后,我们大概率能从所有有效c′中均匀采样得到t个有效c′。
由此,我们能找到一组c′,使得p−1的所有大于20的素幂因子,至少与其中一个c′互质。对于每个小于20的素数pi,其在p−1的素因子分解中的幂次为αi,则r模piαi的可能余数至多有20种。因此,我们可枚举所有小于20的素幂因子的可能余数组合:对每个组合,通过中国剩余定理计算对应的r,再验证该r是否满足gr≡x(modp),即可确定所求的离散对数。
该算法并未过多利用Zp的特性,仅利用了有限域的乘法和求逆特性,因此可直接推广到其他域(如Zpe)上的离散对数求解问题。算法的核心要求为:已知生成元的阶,且能在多项式时间内完成域中元素的乘法和求逆运算。
若未来能实际构建量子计算机并实现该算法,还可通过多种方式优化算法效率,使其优于本文所给出的效率水平,例如优化光滑数的选择、减少量子傅里叶变换的开销等。
致谢
感谢杰夫·拉加里亚斯发现并修正了离散对数算法初稿中的一个关键性错误。同时,感谢他与查尔斯·贝内特、吉尔·布拉萨尔、安德鲁·奥德利兹科、丹·西蒙、乌迈什·瓦齐拉尼,以及众多无法一一列举的通信者:他们与笔者进行了富有成果的学术讨论,对论文初稿提出了宝贵的修正和改进建议,并为笔者提供了大量相关的文献线索,为本论文的完成提供了重要帮助。
参考文献
- P. 贝尼奥夫,《图灵机的量子力学哈密顿模型》,《统计物理学报》,第29卷,515-546页(1982年)。
- P. 贝尼奥夫,《无能量耗散的图灵机量子力学哈密顿模型》,《物理评论快报》,第48卷,1581-1585页(1982年)。
- C. H. 贝内特,《计算的逻辑可逆性》,《IBM研究与开发杂志》,第17卷,525-532页(1973年)。
- C. H. 贝内特、E. 伯恩斯坦、G. 布拉萨尔、U. 瓦齐拉尼,《量子计算机可实现的计算》,手稿(1994年)。
- E. 伯恩斯坦、U. 瓦齐拉尼,《量子复杂性理论》,《第25届ACM计算理论研讨会论文集》,11-20页(1993年)。
- A. 贝蒂奥姆、G. 布拉萨尔,《量子对结构复杂性理论的挑战》,《第7届IEEE结构复杂性理论会议论文集》,132-137页(1992年)。
- A. 贝蒂奥姆、G. 布拉萨尔,《谕示量子计算》,《计算物理研讨会论文集》,195-199页,IEEE出版社(1992年)。
- D. 科珀史密斯,《量子分解中实用的近似傅里叶变换》,IBM研究报告RC 19642(1994年)。
- D. 多伊奇,《量子理论、丘奇-图灵原理与通用量子计算机》,《伦敦皇家学会会刊A辑》,第400卷,96-117页(1985年)。
- D. 多伊奇,《量子计算网络》,《伦敦皇家学会会刊A辑》,第425卷,73-90页(1989年)。
- D. 多伊奇、R. 约扎,《量子计算对问题的快速求解》,《伦敦皇家学会会刊A辑》,第439卷,553-558页(1992年)。
- D. P. 迪文森佐,《二位门是量子计算的通用门》,手稿(1994年)。
- R. 费曼,《用计算机模拟物理》,《国际理论物理杂志》,第21卷第6/7期,467-488页(1982年)。
- R. 费曼,《量子力学计算机》,《物理学基础》,第16卷,507-531页(1986年)(原载于《光学新闻》,1985年2月)。
- L. 福特诺、M. 西普塞,《co-NP语言是否存在交互式协议?》,《信息处理快报》,第28卷,249-251页(1988年)。
- D. M. 戈登,《利用数域筛法求解GF(p)上的离散对数》,《SIAM离散数学杂志》,第6卷,124-139页(1993年)。
- G. H. 哈代、E. M. 赖特,《数论导引(第五版)》,牛津大学出版社,纽约(1979年)。
- R. 兰道尔,《量子力学是否具有实用价值?》,《伦敦皇家学会会刊》,待发表(1994年)。
- A. K. 伦斯特拉、H. W. 伦斯特拉(小)(编),《数域筛法的发展》,《数学讲义》第1554卷,施普林格出版社(1993年)。
- H. W. 伦斯特拉(小)、C. 波梅兰茨,《整数分解的严格时间界》,《美国数学会杂志》,第5卷,483-516页(1992年)。
- S. 劳埃德,《一种可实现的量子计算机》,《科学》,第261卷,1569-1571页(1993年)。
- S. 劳埃德,《展望量子超级计算机》,《科学》,第263卷,695页(1994年)。
- G. L. 米勒,《黎曼假设与素性测试》,《计算机与系统科学杂志》,第13卷,300-317页(1976年)。
- S. 波利格、M. 赫尔曼,《GF(p)上离散对数的改进算法及其密码学意义》,《IEEE信息论汇刊》,第24卷,106-110页(1978年)。
- C. 波梅兰茨,《快速严格的分解与离散对数算法》,《离散算法与复杂性(日美联合研讨会论文集)》,119-143页,学术出版社(1986年)。
- R. L. 里维斯特、A. 沙米尔、L. 阿德莱曼,《一种获取数字签名和公钥密码系统的方法》,《ACM通信》,第21卷第2期,120-126页(1978年)。
- A. 沙米尔,《IP=PSPACE》,《第31届IEEE计算机科学基础研讨会论文集》,11-15页,IEEE出版社(1990年)。
- D. 西蒙,《论量子计算的能力》,《第35届IEEE计算机科学基础研讨会论文集》,IEEE出版社(1994年)。
- W. G. 泰希、K. 奥伯迈尔、G. 马勒,《多稳态量子系统的结构基础(二):有效的少体动力学》,《物理评论B辑》,第37卷,8111-8121页(1988年)。
- T. 托菲利,《可逆计算》,《自动机、语言与程序设计(第七届研讨会论文集)》,《计算机科学讲义》第84卷(J. W. 德巴克、J. 范莱乌文 编),632-644页,施普林格出版社(1980年)。
- W. G. 乌伦贝克,《保持量子计算机的相干性》,手稿(1994年)。
- A. 姚期智,《量子电路复杂性》,《第34届IEEE计算机科学基础研讨会论文集》,352-361页,IEEE出版社(1993年)。