1.4 10分钟看懂量子比特、量子计算和量子算法
宏观世界的生活经验很多都是表象。例如,你可能认为世界的运行是确定的、可预测的;一个物体不可能同时处于两个相互矛盾的状态。在微观世界中,这种表象被一种叫作量子力学的规律打破了。
什么是量子?
前面已经讲过,量子是物理世界里最小的、不可分割的基本单元,是能量的最基本携带者。它是光子、质子、中子、电子、介子等基本粒子的统称。可以说,整个世界都是由量子组成的。例如,日常生活中的光,就由大量光量子组成。
量子力学指出,世界的运行并不确定,人们最多只能预测各种结果出现的概率;一个物体可以同时处于两个相互矛盾的状态中。
量子计算,就是直接利用量子力学的现象(例如量子叠加态)操纵数据的过程。下面简单地介绍什么是量子、量子叠加态、量子比特、量子测量和一种实现随机数据库搜索的量子算法。
量子有不同于宏观物理世界的奇妙现象,例如波粒二象性,还有最为著名的量子叠加和量子纠缠。
1.4.1 波粒二象性
波粒二象性(Wave-particle duality)是量子粒子的特征,它是指微观粒子基于不同的环境,有时会表现出波动性,而有时表现出粒子性。
微观世界的奇异性在于“波粒二象性”,即微粒不再像以往以为的那样,是个小小的实体球一样的东西,而且可以沿着一条确定的轨迹运动。它实际上已没有什么确切的大小、形状、位置、轨迹可言,这些经典概念统统不适于描述微观世界及其运动。微粒已变得像波那样弥散于广阔的空间里。所有微粒都具有波粒二象性——它既像颗粒状分离的粒子,又像云雾状弥散的波动,而且粒子的动量直接与波动的波长成反比。
例如光就具有粒子和波的双重性质,图解如图1-8所示。
量子理论的特点是找到给定点x在空间中存在的概率,而不是它的确切位置。
1.4.2 量子纠缠
量子纠缠指的是量子粒子之间的相互作用。即使粒子间相隔甚远,它们依然相互作用、相互参照,而不是独立的。
图1-8 光具有粒子和波的双重性质
量子纠缠也是量子叠加的一种表现,两个处在纠缠态的量子一旦分开,不论分开多远,如果对其中的一个粒子测量,另一个粒子就会立即发生变化,且是不需要时间的变化。
为了说明这个复杂的问题再举个例子:你工作需要去上海出差了,你太太怀孕10个月被送进北京协和医院妇产科,突然肚子疼,被送进产房,30分钟后你的儿子出生了。那又怎么样呢?在你儿子诞生的那一刹那,你在北京的太太成了妈妈,在上海的你成了爸爸!这是不是可以增加你对“纠缠”一词的理解,不知道我说清楚了没有?
这两个纠缠在一起的量子就好比是一对有心电感应的双胞胎,不论两人距离多远,千米量级或者更远,只要当其中一个人的状态发生变化时,另一个人的状态也会跟着发生一样的变化。爱因斯坦称之为“幽灵般的超距作用”。量子纠缠所体现的这种非定域性是量子力学最神奇的现象之一。
在测量时,如果一对纠缠的量子被决定处于箭头向下↓的自旋态(能量最低状态),则当电子与它的磁场保持一致时,这个状态就会被传递到另一个相关的箭头向上↑的相对自旋态的粒子上。量子纠缠允许相隔很远的量子比特彼此之间及时相互作用。
1.4.3 量子叠加
量子同时以0和1的形式存在,这种现象被称为叠加。
虽然粒子能存在于多个量子态中,一旦确定了粒子的能量或位置,叠加至此消失,它只能存在一个状态。
量子世界跟宏观世界最大的区别,就是量子有多个可能状态的叠加态。这种现象在宏观世界中不存在且也无法维持。在宏观的经典世界中,1就是1,2就是2。而在微观的量子世界中,一个状态可以存在于1和2之间,它既不是1,也不是2,但它既是1,又是2。
这说起来有点悬,历史上世界最著名的几个科学家也吵了若干年,我们后面有足够的章节讲这个事情。先打个比方,这就好比孙悟空的分身术。一个孙悟空可以同时出现在多个地方,孙悟空的各个分身就像是他的叠加态。在日常生活中,一个人不可能同时出现在两个地方。但在量子世界里,作为一个微观的客体,它能够同时出现在许多地方。
下面就一些比较复杂的概念进行解释,先大概描述一下粗浅的含义,以后的章节再进一步详细地解释。
1. 量子叠加态
下面需要解释一下量子叠加态。
夏天到了,烈日炎炎。当你带上偏振墨镜时,从某种程度上讲,你就已开始接触量子计算了。偏振墨镜就是我们了解量子叠加态的起始案例。
为什么这么说呢?因为光的偏振正好“同时处于两个相互矛盾的状态”中,也就是量子叠加态。在量子计算中,光子的偏振就可以用来实现量子比特。
首先,光是一种电磁波,组成它的粒子叫作光子。电磁波的振动就像绳子抖动一样,可以朝这儿偏也可以朝那儿偏,形成各种各样的偏振。
其次,偏振墨镜就像一个筛子,只有跟筛子的缝隙方向一致,光子才能“钻过去”。如果跟筛子的缝隙方向垂直,光子就被完全“拦住”了。
如果光子偏振方向跟缝隙方向既不垂直也不平行,而是呈一定角度,又会怎样呢?
如果你在钻过去的朝↗方向偏振的光子后面,再放一个只过滤↑光子的偏振镜,就会发现一个非常诡异的量子力学现象:大约有一半儿↗偏振光子穿过了偏振镜,而且偏振方向都变成了↑。这真是一个非常诡异的量子力学现象。
这个时候,运用高中学过的矢量合成知识,我们可以试着解释这个现象。由于光子的偏振既有方向又有大小,我们可以将每个光子的偏振看作一个矢量。于是,它们满足矢量的加法。
图1-9 矢量相加
由于↗方向的振动等于↑方向的振动加上→方向的振动,我们就可以说,↗偏振的光子可以看作是同时在朝↑和→方向振动。矢量既有长度又有方向,这时就是其矢量的相加(见图1-9)。
矢量↗可以看作矢量↑加上矢量→:C=A+B。
而光子同时在进行两种振动的情况可以解释如下:一种振动可以看作由两种不同的振动相加而成,所以,光子可以看作是同时进行两种振动,即↗偏振的光子可以看作它同时进行的↑振动和→振动的合成。
如果你不理解什么叫同时进行两种振动,想想你耳朵里的鼓膜,正是它同时进行多种振动,你才能同时听到各种各样的声音。
这时,我们就可以试着解释那个奇怪的量子现象了。如果把一个↗偏振的光子看作是一个光子同时进行↑和→两种振动,那么可以说,当这个光子路过↑偏振镜时,其中一半儿→振动被挡住了,另一半儿↑振动通过了。
2. 量子态测量的概率性
然而,这个上面的解释并不完全正确。
如果朝这个偏振镜发出一个↗光子,在偏振镜之后,并不会接收到一个振动能量减弱一半儿的光子,而是有50%的概率接收到一个↑光子;50%的概率什么也没接收到。也就是说,当你测量一个量子叠加态时,总会得到概率性的结果。记住量子测量的概率性,这在后面的量子算法中会用到。
到这里你可能想起来了,这就是量子力学常说的“上帝掷骰子”。根据不同的偏振方向,得到的概率也是不同的,如图1-10所示。
注解:虽然↗方向的光子处于两种振动的叠加状态,但当你通过↑偏振镜测量它时,它总会随机地“掷骰子”,以一定概率得到↑方向或→方向的结果。“掷骰子”的概率与偏振方向的夹角有关。偏振方向跟↑方向的夹角有关。偏振方向跟↑方向的夹角越小,测量时得到↑偏振的光子的概率就越大。偏振方向与→方向的夹角也是同理。
图1-10 不同偏振方向得到的概率不同
1.4.4 量子比特和量子计算
1. 量子比特
如果把↑光子看作比特0,把→光子看作比特1,那么,一个↗光子就处于比特0和比特1光子的叠加状态之中。
如果硬要用一个偏振镜去测量它到底是比特0还是比特1,就会发现,测量结果有50%的概率是比特0,还有50%的概率是比特1。
↗光子所携带的这种诡异的“比特”就叫作量子比特。可以把比特0和比特1分别想象成一个虚拟的空间中的两个相互垂直的坐标轴。对于经典比特来说,它要么处于比特0的轴上,要么处于比特1的轴上。
而量子比特可以在两个轴之间的空间任意“转动”,量子比特在两个轴之间的空间任意“转动”的结果,以一定比例得到比特0,一定比例得到比特1。
2. 量子计算
1)量子门
电子计算机所做的计算,就是操纵经典比特。
同样的道理,所谓量子计算机,就是在量子力学允许的范围内操纵量子比特。这时就需要可以操纵电子比特的量子门。
量子逻辑门是一个对特定的量子比特在一段时间间隔实现逻辑变换的量子逻辑线路,它是量子线路的基础。与传统逻辑门不同,量子逻辑门是可逆的。
量子逻辑门是量子计算与量子计算机实现的基础,可用下列方法实现。
(1)量子点系统。
(2)超导约瑟夫森(Josephson)结系统。
(3)核磁共振量子系统。
(4)离子阱系统。
(5)腔量子电动力学系统等。
量子逻辑门按照其作用的量子比特的数目可分为单比特门、二比特门和三比特门等。
2)量子并行计算
不知道你发现了没有,由于量子比特可以同时处于比特0和比特1的状态,量子门操纵它时,实际上同时操纵了其中的比特0和比特1的状态。
所以,操纵一量子比特的量子计算机可以同时操纵2个状态。如果一个量子计算机可以同时操纵N量子比特,那么它实际上可以同时操纵2N个状态,其中每个状态都是一个N位的经典比特。这就是量子计算机传说中的并行计算能力。
3)量子计算机算法
1985年,英国牛津大学Deutsch研究了量子图灵(Turing)机,引进了量子计算线路模型和量子通用逻辑门组,突破了经典计算布尔(Boole)逻辑的限制,实现了到量子演化的跃进。在那之后,科学家们开始了对量子算法的研究。
(1)Shor算法。
Shor算法是由美国贝尔实验室的科学家彼得·秀尔(Peter Shor)在1994年提出的分解大数质因子的量子方法。互联网时代绝大多数的加密,都由RSA算法完成,目前支付宝、微信支付、微众银行等都在采用RSA 2048加密算法,但随着量子计算的发展,RSA加密安全性受到了挑战。例如,Shor分解大数质因子时,传统计算机与量子计算机使用的时间和硬件环境如表1-1所示。
表1-1 Shor分解大数质因子的量子方法比较
(2)Grover算法。
Grover算法是由Grover于1996年提出的平方根加速的随机数据库量子搜索算法。搜索算法常用于从N个未分类的记录中找出某个特定的记录。
Grover量子搜索算法可以对随机数据库相对经典搜索平方根加速,为了实现这样的加速,Grover算法主要依赖于量子态的叠加。
假设有N个未经排序的数据。如果使用经典算法寻找其中的某个数据x,条件是它(并且只有它)满足P(x)=TRUE,比方说x代表一个人的工号,P(x)是看这个人是不是现任CEO。那么你只能从第一个数据开始,一个一个地看它是不是CEO的工号。使用经典算法寻找其中的某个数据x的方法是:对于未经排序的数据,经典的算法只能一个一个地找,运气最差的时候你得计算N次才能找到那个数据。
在这种算法中,计算复杂度是O(N)。
在Grover算法中,可以将N个数据同时存储在log2N量子比特中,然后同时计算N个函数P()的取值,就相当于同时在N个状态上做了N次P()的计算,也就是同时看它是不是CEO的工号。
在N个计算结果中,必然有一个结果是CEO的工号,其他结果都不是。但如果这个时候贸然去“读取”结果就会发现,每个结果发生的概率都是1/N。这就好比你用↑偏振镜去测量↗光子,得到↑和→的概率各为1/2。
Grover算法的思想是,同时计算N个P()的取值后,先不要读取,而是通过量子操作略微增加结果为CEO工号的那个数据发生的概率。
数学计算证明,反复重复以上过程(π)/4次之后,你要找的那个数据发生的概率就会达到最大。这个时候如果再去读取数据,就会以极大的概率读到你要找的数据。
所以,Grover的量子搜索加速算法,可以将搜索复杂度降低到O(),但你成功读取那个数据的概率永远也不会达到100%,而是略小于100%。
从目前的情况看,量子计算只是在少数计算任务中表现得比经典计算更快,例如大数质因子(Shor算法)、随机数据库搜索(Grover算法),并且,这种快法不能挣脱量子力学的约束,达到十全十美。