机器之心分析师 络
1900 年,德国物理学家普朗克(Max Planck)提出量子概念,「量子论」就此宣告诞生。1981 年,著名物理学家费曼 Richard Feynman 提出了量子计算 / 量子计算机的概念,自此,量子力学进入了快速转化为真正的 会技术的进程,人类在量子计算应用发展的道路上行进的速度也越来越快。
关于量子计算,我国量子光学的泰斗级人物郭光灿院士在文章中是这样阐述的:「量子比特可以制备在两个逻辑态 0 和 1 的相干叠加态,换句话讲,它可以同时存储 0 和 1。考虑一个 N 个物理比特的存储器,若它是经典存储器,则它只能存储 2^N 个可能数据当中的任一个,若它是量子存储器,则它可以同时存储 2^N 个数,而且随着 N 的增加,其存储信息的能力将指数上升,例如,一个 250 量子比特的存储器(由 250 个原子构成)可能存储的数达 2^250, 比现有已知的宇宙中全部原子数目还要多。」
但是,对于大多数非物理专业的人来说,理解量子计算的原理和算法难度还是「相当大」。量子态 (Quantum State)、量子叠加(Quantum Superposition)、量子纠缠(Quantum Entanglement),这些名词可能你都听说过,也看过一些数学分析和理论介绍,但是对于量子计算到底是什么依然一知半解。
文章链接:
https://quantum.country/qcvc
我们都知道,发明计算机的主要思想源自于英国数学家艾伦 · 图灵(Alan Turing)和德国数学家大卫希尔伯特(David Hilbert)。希尔伯特在 1928 年提出了一个问题:是否存在一个数学家可以遵循的通用算法,让他们知道任何给定的数学陈述是否可证明。希尔伯特希望的算法有点像纸笔相乘两个数字的算法。除了从两个数字开始以外,你应该从一个数学猜想开始,经过算法的步骤,你就会知道这个猜想是否可以被证明。该算法可能过于耗时,无法在实践中使用,但如果存在这样的算法,那么至少在原则上,数学是可以理解的。为了攻击希尔伯特的这一问题,图灵精确的定义了算法的含义,并描述了我们现在所称的图灵机器(Turing machine):可以执行任何算法的单一通用可编程计算设备。从那时起,计算机逐渐发展成为了一个产业,数十亿台基于图灵模型的计算机已经售出。
1985 年,英国物理学家大卫 · 德伊奇(David Deutsch)提出了一个更深入的方法来定义算法。Deutsch 指出,每一个算法都是由一个物理系统来执行的,无论是一个有纸和铅笔的数学家,还是一个像算盘这样的机械系统,或是一台现代计算机。Deutsch 提出这样一个问题:是否有一个(单个)通用计算设备可以有效地模拟任何其他物理系统?如果有这样的设备,您可以使用它来执行任何算法,因为算法必须在某种物理系统上执行。因此,这台设备将是一台真正通用的计算机。更重要的是,Deutsch 指出,你不需要像 Turing 那样依赖非正式的启发式参数来证明你的算法概念。你可以用物理定律来证明你的设备是通用的。
从这个意义上说,计算机不仅仅是人类的发明。它们是宇宙的一个基本特征,回答了关于宇宙如何运作的一个简单而深刻的问题。它们很可能是被许多外星智能反复发现的。在试图回答这一问题时,Deutsch 观察到基于 Turing 模型的普通计算机在模拟量子力学系统时遇到了很多困难。为了解决这一问题,提出了量子计算机:量子计算机可以做常规计算机所能做的一切,但也能够有效地模拟量子力学过程。这篇文章解释了量子计算机是如何工作的,同时,还将学习量子力学的基本原理。
第一部分:量子位及其状态(Part I: The state of a qubit)
在普通的日常计算机中,信息的基本单位是位(Bit)。所有这些计算机所做的事情都可以被分解成 0s 和 1s 的模式,以及 0s 和 1s 的简单操作。与传统计算机由比特构成的方式类似,量子计算机由量子比特(quantum bits)或量子位(qubits)构成,一个量子比特对应一个状态(state)。但是,比特的状态是一个数字(0 或 1),而量子比特的状态是一个向量。更具体地说,量子位的状态是二维向量空间中的向量。这个向量空间称为状态空间。
有两种特殊的量子态对应于经典比特的 0 态和 1 态。对应于 0 的量子态通常表示为 | 0?:
其中,这种特殊状态 | 0?称为计算基态(computational basis state)。由此,∣0?是量子位的计算基态,其作用与 0 在经典比特位中的作用几乎相同。类似的,1?表示为二维向量如下:
计算基态∣0?和∣1?只是一个量子位的两种可能状态,量子位可以具有更多的状态,这些额外的状态赋予了量子位普通经典比特所不具备的能力。以下图为例:
状态 0.6∣0?+0.8∣1?是∣0? 向量的 0.6 倍加上∣1?的 0.8 倍。在通常的向量表示法中,表示状态为:
从数学理论的角度分析,量子位状态是一个复杂向量空间中的二维向量。接下来,让我们熟悉一些常用于量子态的术语。最常见的术语之一是叠加(superposition )。0.6∣0?+0.8∣1?是∣0?是∣0? 和∣1? 的叠加,即该状态是∣0? 和∣1? 的线性组合。另一个常见的术语是振幅(amplitude)。振幅是叠加态的系数。例如,在 0.6∣0?+0.8∣1?中,∣0?的振幅为 0.6,|1?的振幅为 0.8。量子态的限制条件是:振幅的平方和必须等于 1。对于更一般的量子态,振幅可以是复数,我们用α和β来表示,状态表示为α∣0?+β∣1?。约束条件是振幅的平方和是 1:
这一约束条件称为规范化约束(normalization constraint)。用一句话总结所有这些术语:量子位的量子态是二维复向量空间(称为状态空间)中单位长度的向量。对于状态 0.6∣0?+0.8∣1?,量子态的描述为:这一状态同时(simultaneously)存在于∣0? 状态和∣1?状态。这种叠加性的描述理解起来太痛苦了,就好像说,一个人处于生与死的叠加态,这种叠加态是什么?人怎么可能同时处于生与死的状态呢?
当然,这种叠加性强调的是粒子级别的。人是巨大的粒子集合体,人身体里的粒子差不多达到了 27~28 位数这样的级别,所以人是没有任何叠加性的。关于量子态的上述描述都是强调粒子级别的,也就是量子位的特性。
第二部分:量子逻辑门(Part II: Introducing quantum logic gates)
量子逻辑门(Quantum logic gates)是操纵量子信息的一种方式,即量子比特或量子比特集合的量子状态。它们类似于普通日常计算机中使用的经典逻辑门,如与门、或门和非门。而且,就像经典门在传统计算机中的作用一样,量子门是量子计算的基本组成部分。它们也是描述许多其他量子信息处理任务的便捷方式,例如量子隐形传态。
1、量子非门
量子非门是经典非门的推广。在计算基态中,量子非门模仿了经典非门:
但计算基态并不是量子比特唯一可能的状态。应用于一般叠加态中,量子非门表示为:
这里使用 NOT 表示量子非门。但从事量子计算的人们通常使用符 X 来表示非门。因此,可以重写上述内容为:
到目前为止,我们使用的是代数方法来表示 X 门的工作方式。在量子电路(quantum circuit),我们描述 X 门如下:
从左到右的线叫做量子线( quantum wire)。量子线代表一个量子比特。术语 “线” 和它的绘制方式看起来就像量子位在空间中移动,同时,考虑这种表示在时间中的流逝对于理解量子计算也是很有意义的。将输入和输出状态显式地放在量子电路中,则有如下表示:
这就是 X 门的量子电路表示。X 门的第三个表示是一个 2×2 的矩阵:
对于一般叠加态来说,可以表示 X 门为:
2、量子线(Quantum wires)
量子线是最简单的量子电路,量子线表示为:
对于任意量子态 ∣ψ?,经由量子线后输出仍为 ∣ψ?:
从数学上讲,这个电路是微不足道的。但是在许多物理系统中,量子线实际上是最难实现的量子计算之一!原因是量子态通常是极其脆弱的。如果你的量子位被存储在一个微小的系统中——也许是一个单光子或者一个原子——那么它很容易,非常容易干扰这种状态。因此,虽然量子线在数学上是微不足道的,但它们可能是实际系统中最难构建的元素之一。
3、多门量子电路(A multi-gate quantum circuit)
首先,让我们来看一看最简单的多门量子电路,他是一个由两个在一行中的 X 门组成的电路:
我们尝试用两种不同的方式解释这一电路。首先是从数学理论角度分析,对于任意的输入的一般叠加态α∣0?+β∣1?使用两次 X,则表示将 0?和∣1?状态互换:
所以净效应是恢复原来的量子态,不管那个态是什么。换句话说,这个电路相当于一根量子线:
然后,我们从矩阵表示的角度分析这个电路。如果输入是任意量子态 ∣ψ?,经过第一次门后状态为 X∣ψ?,经过第二次门后为 XX∣ψ?。XX 可以表示为:
XX 表示单位矩阵操作(Identity operation),因此 XX∣ψ?就是原始∣ψ?。
4、Hadamard 门(The Hadamard gate)
令 H 表示 Hadamard 门,则有:
Hadamard 门将一般叠加态α∣0?+β∣1?转变为对应的叠加态输出:
重写上式后得到:
Hadamard 门的电路表示如下:
与 X 门类似,H 的矩阵表示为:
利用 H 门处理量子态∣0?,可以得到:
类似的,利用 H 门处理量子态∣1?,可以得到:
为了更熟悉 Hadamard 门,让我们分析一个简单的电路:
对于输入量子态∣0?,经过第一个 H 门后为
之后输入第二个 H 门后,输出为
将∣0?项输入(∣0?+∣1?)/sqrt(2),将∣1?项输入(∣0?-∣1?)/sqrt(2),因此输出为上式中, |1?项可以相互抵消,最终只留下∣0?,即:
同样的推理过程适用于输入量子态∣1?。因此,量子电路保持了 | 0?和 | 1?状态不变,电路的净效应与量子线完全相同:
从矩阵表达的角度分析,对于任意量子态 ∣ψ?输入,输出为 HH∣ψ?。如果你只计算矩阵乘积 HH,结果是 2×2 的恒等式矩阵,H H=I。因此,我们得到 HH∣ψ?=∣ψ?。
这个推导过程似乎与我们的预设并不一致,我们假象的是,利用 H 门,应当可以将 | 0?和 | 1?进行混合(mix),但是输出的结果竟然是不变?这就涉及到量子计算中的两个很重要的概念:消除(cancellation)或增强(reinforcement)。首先使用 Hadamard 门在量子态中“展开”,例如在多重计算基态的叠加。在算法的最后,他们使用巧妙的消除和增强模式,将事物重新组合到一个(或可能是几个,在许多量子位情况下)计算基态中,并生成所需的答案。这种消除和增强的处理过程在很多量子计算中都是非常重要的。
5、测量量子位(Measuring a qubit)
假设 Alice 在实验室制作了一个量子态α∣0?+β∣1?,她发送给了 Bob,那么 Bob 如何得到 α和β的值呢?答案是:不可能!Bob 永远无法知道α和β的值!这与我们日常思考世界如何运转的方式是大不相同的。如果你的车出了问题,机械师可以使用诊断工具来了解发动机的内部状态。所使用的诊断工具越好,他们能了解的内部状态就越详细越多。类似地,当我们第一次开始学习量子电路时,会猜测似乎我们也可以随时观察到量子态的振幅。但事实证明这是物理定律所禁止的,这些振幅是一种隐藏的信息。
让我们来描述一个特别重要的过程,称为计算基础上的测量(measurement in the computational basis)。这是量子计算的基本原理,是我们通常从量子计算机中提取信息的方式。我们首先解释它如何在单个量子位上工作,稍后将其推广到多量子位系统。
对于一般叠加态α∣0?+β∣1?,当在计算的基础上测量这个量子位时,它给给出的信息为:结果为 0 的概率为 |α|^2,结果 1 的概率 |β|^2, 量子位测量后的对应状态为 | 0?或 | 1?。需要注意的一个关键点是,在测量之后,无论结果如何,α和β都消失了。无论后位状态是 | 0?还是 | 1?,都没有α或β的踪迹。所以你无法得到更多关于他们的信息。从这个意义上说,α和β是一种隐藏的信息——测量并不能告诉你它们是什么。
6、一般单量子位门(General single-qubit gates)
对于一般的单量子位门来说,它们的工作原理类似。一般的单量子位门可以表示为 2×2 的酉矩阵 U。输入任意量子态 ∣ψ?,得到输出为 U∣ψ?。矩阵 U 是酉矩阵的是什么意思?用代数方法回答这个问题是最简单的,它的意思是 U?U=I。也就是说,U 的伴随矩阵,表示为 U?,乘以 U,等于恒等矩阵。伴随矩阵为 U 的复共轭转置:
7、控制非门(The controlled-NOT gate)
截止到上文,我们已经讨论了进行通用量子计算所需的大部分思想(尽管我们略过了核心的酉矩阵的证明过程)。我们了解了量子位、量子态、量子门、。然而,到目前为止我们涉及到的门只有一个量子位。真正在量子计算中,我们需要一些方法让量子位相互作用。也就是说,我们需要包含两个(或更多)量子位的量子门。本小结中就介绍一个这种门:控制非门(CNOT)。
其中,上面有小的填充点的线(在本例中是顶部的线)称为控制量子位。上面有较大的未填充圆的线称为目标量子位。我们现在有四个计算基态,对应于两个量子位系统的四个可能状态:|00?,|01?,|10?和 | 11?。对于两个量子位系统,我们不仅可以有这四种状态,还可以有它们的叠加态(即线性组合):
其中的参数α,β,γ,δ均为复数,以及
CNOT 门的作用很简单。如果控制量子位设置为 1,如在状态 | 10?和 | 11?中,则它翻转目标量子位,否则就什么都不做。给出所有四种计算基础的动作:
如果您熟悉经典编程语言,那么可以将 CNOT 看作一种非常简单的 If-then 语句:如果设置了控制量子位,那么就不是目标量子位。虽然看起来 CNOT 门很简单,但它可以用作构建其他更复杂类型的条件行为的构建块。
有一种方法可以把上面的四个方程综合成一个方程。假设 x 和 y 是经典量子位,即 0 或 1。然后我们可以将上面的方程重写为一个方程:
其中插入的逗 的目的是使其更易于阅读,并不是由其它实际意义,这在处理多量子位状态时非常常见。上面的公式清楚地表明,CNOT 只保留控制量子位 x,但如果 x 设置为 1,则翻转目标量子位 y。最后,CNOT 会线性地作用于计算基态的叠加,就像我们对量子门所期望的那样。所以对于任意叠加态,我们有:
此外,CNOT 是酉的,因此保持了量子态的长度。
对于三个量子位的情况, |000?,∣001?等等,下面是 CNOT 示例,其中第二个量子位作为控制量子位,第三个量子位作为目标量子位。
对于任意计算基态 | x,y,z?,第一个位 x 没有改变,因为它与 CNOT 无关。第二位 y 是控制位,所以没有改变。当控制位 y 设置为 1,则第三位 z 被翻转。整个过程如下:
CNOT 是一个 “经典” 门,它可以与单个量子位门结合来做完成经典任务。下面给出一个两个量子位的计算示例。从计算基态 | 00?开始,对第一个量子位应用 Hadamard 门,然后执行 CNOT:
其输出为:
这个输出态是一个高度非经典的态,它是一种叫做纠缠态(entangled state)的态。纠缠态可以用来完成各种有趣的信息处理任务,包括量子隐形传态和快速量子算法。
更一般的,对于量子世界的 CNOT,如果我们有一个量子位态α∣0?+β∣1? 和γ∣0?+δ∣1?,两个量子位组合在一起时的组合状态是:
CNOT 只保留控制量子位,并修改目标量子位,这在传统的计算理论基础上是正确的。但是在量子的世界中,可能是相反的。目标量子位也有可能影响控制量子位。
第三部分:通用量子计算(Part III: Universal quantum computing)
1、量子计算模型(The quantum computing model)
在一般的量子计算中,从许多量子位开始——我们在这里画四个,但一般来说,它可能更多(或更少)。可以应用各种量子门,特别是单量子位门和 CNOT 门。在电路的最后可以通过计算的方法测量出结果。这就是它的样子:
其中的各个单个量子位门可能是各种各样的东西——H 门、CNOT 门、旋转门,也许还有其他的。我们可以将量子计算的三个步骤总结如下:
- 从计算基态开始。
- 应用一系列 CNOT 和单量子位门。
- 为了得到结果,在计算的基础上进行测量。任何结果的概率,例如 000…0,只是相应振幅绝对值的平方。
当然,我们只是介绍了量子计算最基础的内容。实际上,量子计算还包括更多的奇异变化,如基于测量的量子计算、拓扑量子计算等。它们在数学上都是等价的,包括量子电路模型。因此,这些模型中的任何一个量子计算都可以转换为量子电路模型中的等效计算,而计算成本上的开销很小。反之亦然。
最后,我们介绍一个特殊的量子门,这些门都是单位矩阵的倍数。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!