跳转到主要内容

量子计算背后的数学:第一部分

发布于2007年5月。

本专栏和下个月的专栏将以适合普通数学读者的术语介绍肖氏因式分解算法。。。

 

托尼·菲利普斯
石溪大学
托尼在math.sunysb.edu

 

给朋友发电子邮件给朋友发邮件 打印此文章打印此文章

 

量子计算

量子计算可能就在眼前,或者就所有实际用途而言,它可能永远遥不可及:有用的量子计算机所需的物理尚未被发现,而且可能实际上并不存在。

量子计算机,无论是真的还是潜在的,都与加法机器有本质上的不同。帕斯卡尔公元1645年的黄铜计算器中的表盘总是排成一行,只读出一个6位数的数字量子位在量子寄存器中存在状态的叠加:当查询寄存器时,以一定的概率读出这些状态中的一个,剩余的信息就会丢失。由于寄存器可以同时“处于”大量状态,因此可以同时进行大量计算。但是,量子计算机的输入必须进行组织,以利用叠加,计算过程必须迫使概率输出提供有用的信息。这就是问题所在编程一台量子计算机,在某些重要而有趣的情况下,它已经被解决了。其中一种量子计算算法是Peter Shor提出的因子分解算法,这将是这两个专栏的重点。

因子分解问题

当今的通信安全几乎都是通过使用RSA加密此方法依赖于大复合数的大素数因子的不可接近性。这个问题是人为的:加密程序取两个(或更多)大素数并将其相乘。解密程序试图从产品到因素反向工作。这是一项艰巨的工作。迄今为止考虑因素最多的数字(“RSA-640”)有193个十进制数字,用了“大约30个2.2GHz-Opteron-CPU年”,用了五个月的日历时间。以这种速率,1024位数字,即商业建议的大小密码学站点,大约为10145年(“位”是“二进制数字”的缩写;每增加一个位,计算量就增加2倍)。该网站补充道:“为了提高安全性,或者如果你有妄想症,请使用2048位,甚至4096位。”

一台合适大小的量子计算机可以在更短的时间内计算出这些大数字。对于1024位的数字,Shor算法要求1024左右约10亿美元。我没有关于量子运算执行速度的任何信息,但如果每一个都花一秒钟,我们的因式分解将持续34年。如果量子计算机能够以当今电子计算机的速度运行(每秒1亿条以上的指令),那么1024位数字的因式分解将是几秒钟的事情。

关于“合适的大小”的注释。要在1024比特的数字上运行Shor算法,需要两个量子寄存器,一个是2048量子位,另一个是1024量子位。这些量子比特都必须是“相干的”,这样它们的全部状态就表现为一个单一的纠缠态。(稍后将详细介绍纠缠)。据报道,这是一项非凡的技术成就2001年IBM科学家构造了一个具有7个量子比特的相干量子寄存器,并将其与Shor算法结合使用,使其因子达到15。

本专栏和下个月的专栏将以适合普通数学读者的术语介绍Shor的因子分解算法。本月将介绍数字理论基础以及离散和快速傅里叶变换。这些方法将因式分解转化为一个频率检测问题,该问题的结构可以适用于量子计算。这个问题本身有一个明确的答案,但需要指数时间才能达到。下个月的专栏将讨论该算法更具体的量子计算方面,包括叠加和纠缠,从而引出肖尔巧妙的量子柔术,它迫使量子读出以很高的概率给出一个有用的答案。这种概率足够高,在合适的机器上运行的时间也足够短,可以重复计算,直到产生未知因素。

数论与傅立叶分析

{C}(C)

恒星发出的光可以分解成光谱,在光谱中可以检测出其元素的特征频率。类似地,一个复合数N个可以生成一个频谱,从中可以计算其因子。

选择一个数字相对质数N个,并列出N个:,2,, ... . 如果N个相对来说是质数,根据欧拉定理,这个列表最终将包括数字1。(欧拉定理特别指出,如果φ(N个)表示正整数的数量减去N个它们是互质的N个然后φ(N个)等于1模N个). 假设这发生在即使的权力,说吧2b条=1个模块N个,即。2b条–1=0模块N个。这意味着(b条+ 1) (b条–1)是的倍数N个; 如果是一次N个我们有自己的因素;否则,欧几里德算法将快速找到一个公因子,例如,b条+1和N个.

这些例子很简单,但却说明了这一现象:

  • 采取N个=85和= 19. 19模85的幂为19、21、59、16、49、81、9、1、19、21。。。;特别是198=1 85年款。我们推断194+1=17和194–1=15都有85的共同因子。事实上,第一个是一个因子,第二个有5作为85的公约数。

     

  • Take(获取)N个=85和= 33. 33模85的幂为33、69、67、1、33、69,67、1。。。;特别是334=1 85年款。我们推断332+1=70和332–1=68都有85个共同因素。事实上,第一个产生5,第二个产生17。

     

  • 注意φ(85)=64,所以64总是有效的;但这个数字无法计算先验的:你必须知道素因式分解85=17 x 5,并使用规则φ(pq值) = (第页–1)(q个–1)用于第页q个素数。

我们如何着手b条? 只需检查序列中的项并等待1出现就太长了,因为列表的长度与数字相称N个我们想考虑的因素是:比方说,它随数字呈指数增长n个,个用于写入的位N个但是想想数字流国防部N个,2国防部N个,国防部N个, ... 由于N个。如果我们能找到这个序列重复自身的频率或等效周期,我们可以使用等效j个=k个<=>j–k=1(取模N个),并找到的因子分解N个同上。我们将看到,在量子计算机上,这种计算只需要增加一个步骤多项式的在里面n个这是量子因子分解的关键。

离散傅里叶变换

傅里叶变换检测周期性;我们会发现b条使用快速傅里叶变换的量子自适应,这是离散傅里叶转换的一种加速版本,其本身源于对傅里叶级数序列的自适应,傅里叶序列设计用于连续函数。

实值函数的(复)傅里叶系数(f)(x个)定义于[0,2A类]是

..

 

笔记:

  • 写作e(电子)πx/A作为cosnπx/A+nπx/Ac(c)n个=an个+i b类n个给出了通常的正弦和余弦系数,除了c(c)0是平常的两倍0.
  • 因素1/.允许身份

    .,

    这在我们以后的量子计算中很重要。

假设现在我们考虑一个序列(f)=(f)0,(f)1, ... ,(f)2A类–1(A类现在是一个整数),作为x个= 0,x个= 1,x个= 2, ... ,x个= 2A类函数的–1(f)(x个)在区间[0,2上定义A类]我们定义了一个新的c(c)n个将傅里叶积分替换为左和2A类长度为1的等分。此总和仅涉及以下要素(f):

..

笔记:

 

  • e(电子)(2A类+k个)π/A类=e(电子)2π e(电子)i公里π/A类=e(电子)i公里π/A类,因此索引为2的系数A类更高不提供额外信息。

     

  • 序列c(c)系数的c(c)0, ... ,c(c)2A类–1离散傅里叶变换序列的(f).

     

  • 基本上相同的计算检索(f)c(c):

    .

    (注意指数中的减号)。

     

周期序列的变换

假设(f)有句点第页,即。(f)百万英镑=(f)对于的每个值; 最简单的分析案例是第页是2的除数A类,说吧第页= 2A/k公司,k个一个整数。在这种情况下,如果n个不是的倍数k个(以下示例中的绿色框)序列项的周期性再现(f)乘以循环通过1的一组完整根的系数,因此加起来等于零。显式公式为:

.

因此,傅里叶系数非零的唯一可能性是n个是的倍数k个,(然后,在一定程度上,c(c)0,c(c)k个,c(c)2k个, ... ,c(c)(第页–1)k个是第0、1、2,(第页–1)序列的st傅里叶系数(f)限制为单个周期)。

.

图1。对19的前16次幂(模85)给出的序列进行离散傅里叶变换分析,该序列的周期为8,频率为16/8=2。什么时候?n个是2的倍数(例如橙色方框),序列项的每次重复都会得到相同的系数,并且c(c)n个有可能是非零的。否则(如绿色方框)为零。矩阵中的复数用图形表示为单位向量。每个c(c)n个是其上方列中项目的加权向量和,权重来自(f)k个列,总因子为1/.= 1/4. 这个c(c)n个已均匀缩放以适合图片。

.

图2。离散傅立叶变换分析由33的前16次幂(模85)给出的序列。该序列具有周期4和频率16/4=4。非零c(c)n个仅发生于n个4的倍数。图形约定与图1相同。

为什么是2的幂?

我选择了一个数字(85)来举例说明,这个数字产生的幂剩余序列的周期是2的幂,我选择了分析序列的长度(16),它也是2的幂。第二个选择并非无关紧要:我们将使用的快速傅里叶变换及其量子适应都需要它。第一个选择只是为了方便生成一个小示例。Shor表明,在因子分解问题中,通常要获得功率剩余周期的可靠读数N个,必须分析长度为2的序列n个之间N个2和2N个2因此,为了真实地分析85这样的数字,我们必须使用长度为8192的序列。

快速傅立叶变换

直接适用于量子计算的快速傅里叶变换是1965年发明的Radix-2 Cooley-Tukey算法(实际上是重新发明的,因为后来高斯知道它)。为了控制本演示文稿的宽度,我将使用8阶离散傅里叶变换,而不是上面的16阶。取ω=e(电子)π/4= 2–1/2(1 +)作为1的原始8根,ω的0-7次幂为

1,e(电子)π/4,e(电子)π/2,e(电子)π/4,e(电子)π,e(电子)5π/4,e(电子)π/2,e(电子)7π/4,

1, ω,,ω, –1, –ω, –, –ω,

上面用图形表示的数字为

.,.,.,.,.,.,.,..

转变c(c)任意长度的8序列(f)=(f)0,(f)1, ...,(f)7,由提供

.,

将从阵列中生成

 

                 
1     1 1     1 1     1 1     1 (f)0
1 ω ω –1 –ω ω (f)1
1 –1 1 –1 (f)2
1 ω ω –1 ω –ω (f)
1 –1 1 –1 1 –1 1 –1 (f)4
1 –ω ω –1 ω ω (f)5
1 –1 1 1 (f)6
1 ω –ω –1 ω ω (f)7
c(c)0 c(c)1 c(c)2 c(c) c(c)4 c(c)5 c(c)6 c(c)7  

通过将最后一行设置为(f)0乘以第一个加号。。。(f)7乘以第八次,总和除以.。此计算需要对中的每个项目进行八次乘法和七次加法c(c)或总共120次操作。使用长度为2的序列n个,操作次数为2次n个(2n个+1–1)。

我们的快速傅立叶变换引领潮流n个元素中的步骤(f)0, ...(f)2n个–1系数的输入序列c(c)0, ...c(c)2n个–1离散傅里叶变换。我们在这里为n个= 3. 每列表示计算的连续步骤。

线路 
0 
1 
2 
 
4 
5 
6 
7 
起点
(f)7
(f)6
(f)5
(f)4
(f)
(f)2
(f)1
(f)0
第1步
(f)+(f)7
(f)2+(f)6
(f)1+(f)5
(f)0+(f)4
(f)(f)7
(f)2(f)6
(f)1(f)5
(f)0(f)4
第2步
(f)1+(f)5+(f)+(f)7
(f)0+(f)4+(f)2+(f)6
(f)1+(f)5(f)(f)7
(f)0+(f)4(f)2(f)6
(f)1(f)5+((f)(f)7)
(f)0(f)4+((f)2(f)6)
(f)1(f)5((f)(f)7)
(f)0(f)4((f)2(f)6)
步骤3
[(f)0+(f)4+(f)2+(f)6] + [(f)1+(f)5+(f)+(f)7]
[(f)0+(f)4+(f)2+(f)6] – [(f)1+(f)5+(f)+(f)7]
[(f)0+(f)4(f)2(f)6] +[(f)1+(f)5(f)(f)7]
[(f)0+(f)4(f)2(f)6] –[(f)1+(f)5(f)(f)7]
[(f)0(f)4+((f)2(f)6)] + ω[(f)1(f)5+((f)(f)7)]
[(f)0(f)4+((f)2(f)6)] – ω[(f)1(f)5+((f)(f)7)]
[(f)0(f)4((f)2(f)6)] +ω[(f)1(f)5((f)(f)7)]
[(f)0(f)4((f)2(f)6)] –ω[(f)1(f)5((f)(f)7)]
 
=.c(c)0
=.c(c)4
=.c(c)2
=.c(c)6
=.c(c)1
=.c(c)5
=.c(c)
=.c(c)7

笔记:

  1. 在这个算法演示中,序列的元素(f)倒序和转换后序列的元素c(c)以“位反转”顺序出现:c(c)n个出现在第行k个其中(二进制)k个n个倒写;例如c(c)6(110)出现在第3行(011)。
  2. 使用长度为2的序列n个计算表有2个n个行;每行中有n个需要计算的柱;每个条目都是前一列中两个条目的线性组合,因此需要两次乘法和一次求和;总共3个n个每行操作总数为3n个2n个操作。将此与2进行对比n个(2n个+1–1)实现离散傅里叶变换的操作表明,快速傅里叶转换确实很快。

为什么这样做有效?

我所知道的最透明的解释是使用多项式长除法的性质。在这里,我将具体介绍手头的示例。

 

我们可以将步骤1理解为对7次多项式进行变换(f)分成两个三次多项式(红盒),每个多项式都可以通过其余数产生c(c)n个然后,步骤2将每个三阶多项式转换为两个一阶多项式(绿色框),每个一阶多项式可以生成四分之一的c(c)n个,步骤3将每个1阶多项式转换为两个0阶多项式,它们是各自的余数。

  1. 对于序列(f)长度为8时n个第个傅里叶系数可以读取为e(电子)单位:π/4多项式的(f)(x个) =(f)0+(f)1 x个+ ... +(f)7 x个7:

    ..

     

  2. 如果多项式第页(x个)除以一次多项式x个,余数正好是数字第页().

     

  3. 所以c(c)n个是(1/.)乘以余数,当(f)(x个)除以(x个e(电子)单位:π/4). 焦点从评价多项式的剩余物的计算是快速傅里叶变换经济性的关键。

     

  4. 剩余时间为(f)(x个)除以x个4–1是

    ((f)+(f)7)x个+ ((f)2+(f)6)x个2+ ((f)1+(f)5)x个+ ((f)0+(f)4),

    其余数除以x个4+1是

    ((f)(f)7)x个+ ((f)2(f)6)x个2+ ((f)1(f)5)x个+ ((f)0(f)4).


    一般来说,如果2n个–1x个2n个–1+ ... +0除以x个n个c(c),其余为n个–1x个n个–1+ ... +0+c(c)(2n个–1x个n个–1+ ... +n个) [注意:最后一项已更正(自2个) 6/2/14]. 当总度数是2的幂时,这使得余数的计算变得特别简单。

     

  5. x个4– 1 = (x个2– 1)(x个2+ 1) = (x个– 1)(x个+ 1)(x个)(x个+),

    由此可见(f)(x个)以及第页(x个) = ((f)+(f)7)x个+ ((f)2+(f)6)x个2+ ((f)1+(f)5)x个+ ((f)0+(f)4)除以任何一个因子时,余数相同(x个– 1), (x个+1)中(x个)或(x个+).
    • 因为如果(f)(x个) = (x个4– 1)q个(x个) +第页(x个)例如第页(x个) = (x个)q’(x个) +,然后(f)(x个) = [(x个– 1)(x个+ 1) (x个)(x个+)]q个(x个) + (x个)q’(x个) +还有余数除以(x个).
  6. 同样,因为x个4+ 1 = (x个2)(x个2+) = (x个– ω)(x个+ ω) (x个ω)(x个+ω) ,三次多项式((f)(f)7)x个+ ((f)2(f)6)x个2+ ((f)1(f)5)x个+ ((f)0(f)4)可以通过余数来计算(f)(ω) 等。

     

  7. 返回到快速傅里叶变换计算

    .

量子计算背后的数学将在下个月的专题专栏中继续介绍。

工具书类

{C}(C)

对于快速傅里叶变换,我遵循了亨利·劳弗的文本离散数学与应用现代代数,Prindle,Weber&Schmidt,波士顿,1984年。

维基百科条目快速傅立叶变换给出另一种解释;它还参考了库利和图基1965年的论文以及高斯的文章Nachlass公司他在那里开发了这项技术,这两项内容都包含在关于算法古代和近代历史的广泛参考书目中。

关于“量子傅里叶变换”和Shor算法的参考文献:

D.Coppersmith,《量子因子分解中有用的近似傅里叶变换》,IBM研究报告,1994年12月7日,在线阅读arXiv:quant-ph/021067.

A.Ekert和R.Jozsa,量子计算和Shor因式分解算法,《现代物理学评论》68(1996) 733-753

彼得·肖尔(Peter W.Shor),《量子计算算法:论文集》,第35届计算机科学基础年会,新墨西哥州圣达菲,1994年11月20-22日,IEEE计算机社会出版社,第124-134页。在标题下提供了扩展版本
量子计算机上素数因子分解和离散对数的多项式时间算法arXiv:quant-ph/9508027.

托尼·菲利普斯
石溪大学
托尼在math.sunysb.edu

那些可以访问JSTOR的人可以在那里找到上面提到的一些论文。对于那些可以访问的人,可以使用美国数学学会的MathSciNet获取更多的书目信息和一些这些材料的评论。上述一些项目可以通过ACM门户访问,该门户还提供书目服务。