Title: 量子计算入门 Date: 2021-10-11 8:56 Tags: 物理, 算法
希望这个系列能为对量子计算感兴趣的人提供一些帮助。
我将撰写一系列量子计算入门博客,从最基本的量子比特(Qubit)讲起,一直讲到量子质因数分解。每一章都会附有Python代码,您可以运行代码,创建量子电路,验证您所学到的理论是否与实验结果一致,我相信这会大大降低量子力学的神秘性。
IBM的开源Python量子计算框架Qiskit,让我们可以足不出户,通过网络操作量子计算机。
https://quantum-computing.ibm.com/
:整个系列的前三章内容与 Nielsen 的 Quantum Computing for the Very Curious 高度一致,非常建议阅读原文。
这个系列将解释量子计算机的工作原理。它不是研究论文,也不是基于各种简单类比的普及。我们将深入挖掘,以便您了解量子计算的细节。在此过程中,我们还将学习量子力学的基本原理,因为理解量子计算需要这些原理。
学习这些材料具有挑战性。量子计算和量子力学是著名的“难”学科,通常被认为是神秘而令人生畏的。但是我相信通过阅读这一系列博客,任何有好奇心和有决心的人都可以深刻地理解量子计算。
当然,您需要一些数学知识来理解这篇文章。我假设您熟悉复数和线性代数——矢量、矩阵等。我还将假设您了解传统计算机中使用的逻辑门——诸如 AND、OR、NOT 等。
如果您缺少相关的数学知识储备,您需要获得它们。如何做到这一点取决于您之前的经验和学习偏好——没有一刀切的方法,您需要自己弄清楚。但您可能会觉得有帮助的两个资源是: (1) 3Blue1Brown 关于线性代数的一系列YouTube 视频;(2) Gil Strang 更深入的线性代数讲座。尝试一下,如果您发现它们有帮助,请继续。如果没有,请探索其他资源。
人们似乎试图避免学习数学。如果您环顾网络,就会发现很多关于量子计算的华丽介绍都避开了数学。例如,YouTube 上有许多相当漂亮的视频。它们看起来很有趣,更好的那些会给您一些类比来帮助您理解量子计算。但他们都不能够令真正好奇的人满足。坦率地说,如果他们不解释实际的底层数学模型,那么您可能会花费数年时间观看和重新观看此类视频,而您永远不会真正理解它。这就像和一群篮球运动员一起出去玩,听他们谈论篮球。您可能会喜欢它,并感觉好像您正在学习篮球。但除非您真的花很多时间打球,否则您永远学不会打篮球。要理解量子计算,您绝对必须精通数学模型。
数学从来都不是障碍,它是人类发明的最好的工具。
目录
如果人类曾经接触过外星智能,这些外星人会拥有电脑吗?在科幻小说中,外星人的计算机是司空见惯的。如果这是正确的,这意味着外星人可以通过某种方式独立于人类发现计算机。毕竟,如果外星人独立发明了可口可乐、神奇宝贝或哈利波特书籍,我们会感到非常惊讶。如果外星人也拥有计算机,我们反而会觉得很自然。那是因为计算机是人类和外星文明都会产生的一个终极问题的答案。
在地球上,计算机的主要发明者是英国数学家艾伦·图灵。在他 1936 年发表的论文中,图灵并不是要发明一个聪明的小工具或创建一个行业。相反,他是在试图攻破由德国数学家大卫希尔伯特在 1928 年提出的关于数学本质的问题。这听起来很深奥,但理解希尔伯特和图灵的思想要点是值得的,因为它阐明了计算机的来源,以及计算机将何去何从的未来。
Alan M. Turing, On Computable Numbers, with an Application to the Entscheidungsproblem (1936).
在他的职业生涯中,希尔伯特对数学知识的终极极限很感兴趣:原则上,人类能够对数学了解到什么程度,以及数学的哪些(如果有)部分永远不为人类所知?粗略地说,希尔伯特 1928 年的问题,讨论是否存在数学家可以遵循的通用算法,该算法可以让他们弄清楚任何给定的数学陈述是否可证明。希尔伯特希望的算法有点像,用于将两数字相乘的纸笔算法。除了不是从两个数字开始,您会从一个数学猜想开始,在完成算法的步骤之后,您会知道这个猜想是否可以证明。该算法在实践中使用起来可能太耗时,但如果存在这样的算法,那么至少在原则上数学是可知的。
1928 年,算法的概念还很模糊。到那时为止,算法通常是由人类使用纸和铅笔来执行的,如刚才提到的乘法算法或长除法算法。思考希尔伯特的问题迫使图灵准确地表达算法的含义。为此,图灵描述了我们现在所说的图灵机:可以执行任何算法的单一、通用可编程计算设备。
今天,我们已经习惯了计算机可以通过编程来做许多不同的事情的想法。然而,在图灵时代,通用可编程计算机的想法是非凡的。图灵认为,只要提供了正确的程序,单个固定设备就可以模仿任何算法过程。这是想象力的惊人飞跃,也是现代计算的基础。
为了论证他的机器可以模仿任何算法过程,图灵考虑了人类数学家在执行算法时可以执行的所有运算。对于每一种运算,他必须证明他的机器总是可以做同样的事情。他的论点太长,无法在这里完整重现,但看看图灵推理的风格很有趣,也很有启发性:
计算通常是通过在纸上书写某些符号来完成的。我们可以假设这张纸像儿童算术书一样被分成正方形。在初等算术中,纸张的二维特性有时会被使用到。但是这样的使用总是可以避免的,我认为人们会同意纸张的二维特性不是计算的本质。我假设计算是在一维纸上进行的,即在分成正方形的磁带上进行。……计算者的行为 [图灵指的是执行算法的人] 任何时候都取决于他正在观察的符号,以及当时他大脑状态。我们可以假设有一个界限B,B是计算者在某一时刻可以观察到的符号或正方形的数量。如果他想观察更多,他必须使用连续的观察。我们还将假设需要考虑的大脑状态数量是有限的。
显然,这是一个非正式的启发式论证!引用孩子的算术书或某人的大脑状态不是严格的、完美无缺的论点。但图灵的论点足以令人信服,以至于后来的数学家和科学家在很大程度上都愿意接受它。图灵机成为了黄金标准:我们可以在图灵机上执行算法。从那时起,计算机已经发展成为一个产业,基于图灵模型的计算机已经售出数十亿台。
尽管如此,图灵的分析还是有一些令人不安的地方。他可能在关于什么是算法的非正式推理中遗漏了一些东西?1985 年,英国物理学家 David Deutsch 提出了一种更深入的方法来定义算法的含义。
David Deutsch, “Quantum theory, the Church-Turing principle and the universal quantum computer” (1985).
多伊奇(Deutsch)指出,每一个算法都是由物理系统执行的,无论是拿着纸笔的数学家,还是算盘这样的机械系统,还是现代计算机。多伊奇然后考虑了以下问题:
是否有(单个)通用计算设备可以有效地模拟任何其他物理系统?
如果有这样的设备,您可以用它来执行任何算法,因为算法必须在某种物理系统上执行。因此,该设备将是一台真正通用的计算机。更重要的是,多伊奇指出,您不需要像图灵那样依赖非正式的、启发式的论据来证明您的算法概念是正确的。您可以使用物理定律来证明您的设备是通用的。
那么让我们回到开篇的问题:外星人会拥有电脑吗?上面多伊奇的问题是一个关于宇宙本质的简单而基本的问题。这是多伊奇的外星人同行可能也会思考的问题。他们所属的文明都将不可阻挡地去发明计算机。
从这个意义上说,计算机不仅仅是人类的发明。它们是宇宙的基本特征,是关于宇宙如何运作的一个简单而深刻的问题的答案。它们很可能被许多外星智能一次又一次地发现。
多伊奇是一位拥有量子力学背景的物理学家。他观察到,基于图灵模型的普通日常计算机在模拟量子力学系统方面存在很多问题。
Yu Manin 和 Richard Feynman 等研究人员此前已经观察到了这一点,并因此推测了基于量子力学的计算机。
特别是,它们在进行此类模拟时似乎异常缓慢且效率低下。多伊奇被迫发明了一种新型的计算系统——量子计算机。量子计算机可以做传统计算机可以做的一切,但也能够有效地模拟量子力学过程。因此,它们可以说是比传统计算机更自然的计算模型。如果我们遇到外星人,我敢打赌他们会使用量子计算机(或者,也许会有量子计算大脑)。毕竟,外星人的技术很可能比当前的人类文明先进得多。
比特(Bit):数学上的 0 或者 1,物理上,一个比特可以被任何一种物理系统所表示,只要这种物理系统总是处在两个不同状态中的一个。常见的例子有:具有正反两面的银币,只有开和关的电子开关,只允许两个不同电压的电路。
计算机是由许多比特组成的,与之相似,量子计算机是由量子比特(Qubit)组成的。
量子比特也被称为量子位。
像比特一样,量子比特也有状态。比特的状态要么是 0,要么是 1。量子比特的状态却是一个矢量。
更准确地说,量子比特的状态是一个存在于二维复矢量空间的矢量。这个矢量空间被叫做状态空间。
比如,这是量子比特的一个可能状态:
物理上,量子比特可以是任何一种双态系统,它拥有两个不同的基态,对应于二维矢量空间中的基矢。
比如,电子的自旋,向上或向下。又或者是光子的极化,垂直极化和水平极化。在一个经典的系统中,一个比特必须处在两个状态中的一个,这时100%确定的。然而,量子力学允许量子比特处在一种两个基态的叠加态中,即一个任意二维矢量可以被两个基矢量表示。当您观察量子比特时,结果总是是随机的从两个基态种挑选一个,您永远无法预先确定的知道它的结果。叠加态是量子力学和量子计算的基本性质。
小结:
(a) 量子比特有状态,叫做量子状态(Quantum State)(b)就像比特,这个状态是一种抽象的数学描述(c)比特的抽象状态是0或1,而量子状态是一个二维矢量(d)量子状态所生存的空间被称为状态空间,它本质上是一个二维矢量空间。
如果您规定永远只使用二维矢量空间中的基矢来存储信息,而不考虑任何叠加态。量子比特就变的与比特并无区别了。
如何用量子状态表示比特的状态0呢?在上文中其实已经提到了,为了书写方便,我们将给它一个特殊的符号
那么比特状态1呢?
虽然我们所做的只是找到了一种看起来新奇的符号, 或 ,来表示矢量罢了。但是您最好把 或 作为整体看成一种新的符号,代表了一种新的数学对象。由于它们是矢量空间中的基矢,在量子计算领域里经常被叫做计算基础状态(Computational Basis State)。
其实是被狄拉克发明的ket符号,并在量子力学中被广泛运用。这种符号为量子状态的矢量表示增加了一层额外的抽象。 (Modern Quantum Mechanics by J. J. Sakurai)
计算基础状态 和 只是一个量子比特可以处于的无穷多种状态中的两个。毕竟,一个量子状态是一个二维矢量。这是一个比特作为标量所不具备的特质。
这里有一个图示,强调了量子态的矢量本质。
为了方便,今后我将混用量子状态,量子态,态,它们是一个意思。
在这个例子中,态 0.6 + 0.8代表了一种叠加态,它表示0.6倍的基矢加上0.8倍的基矢。也可以用常见的矩阵符号表示如下
一般来说,量子态是复矢量,也就是说,它们可以有复数作为条目。例如,
它可以被写为
因为量子态是复矢量,上面的图示并不准确。那个平面是一个二维实数矢量存在的空间,而不是复数矢量。但是,可视化量子态任然是一种有意义的思考方式。更准确的可视化方法是布洛赫球(Bloch Sphere)。
到这里您已经了解了量子态的数学表示,但您肯定有很多疑问。比如,为什么量子态是矢量,为什么是复数?
这些都是很好的问题。但他们确实需要一些时间来回答。就上下文而言,量子力学的发现不是一个单一的事件,而是发生在 1900 年至 1925 年 25 年的工作中。许多诺贝尔奖都是因为这一过程中的里程碑而获得的。这包括阿尔伯特·爱因斯坦的诺贝尔奖,主要因与量子力学(不是人们有时认为的相对论)相关的工作而获奖。
当世界上一些最聪明的人为发展一个理论而奋斗了 25 年时,这注定不是一个显而易见的理论!事实上,使用二维复矢量描述简单量子系统的想法总结了25 年来人们认识到的大部分知识。从这个意义上说,这是一个非常简单而美丽的陈述。但这不是一个明显的陈述,可能需要几个小时才能理解。可这总比花 25 年才理解要好!
让我们总结一些常用的关于量子态的术语。
最常见的术语之一是叠加(Supperpositon)。人们会说像这样的状态是一个叠加的 和 . 他们的意思其实是 和 是一种线性组合。 您可能想知道为什么他们不说“线性组合”(有时他们会说),应为这两个词来自不同的文化和不同的历史。
另一个常用术语是振幅(Amplitude)。振幅是某个基矢在叠加状态下的系数。例如,在状态 中, 的振幅是0.6,的振幅是0.8。
对于一个一般的量子比特的状态来讲,两个振幅都可以是复数,让我们用 和 来表示,
这里有一个限制条件,振幅模的平方和必须等于一,这叫做归一化条件。
稍后您将会学到,这与用振幅来解释随机物理现象的概率有关。
一句话总结:一个量子比特的状态用一个存在于二维复矢量空间的单位矢量来表述,这个空间叫做状态空间。
例1:用Qiskit创建具有任意状态的量子比特
此代码涉及到一个还未介绍的概念:量子电路(Quantum Circuit)。量子电路是一种对量子计算可视化的表达,它对于我们理解量子计算至关重要。我们会在1.3节介绍它,不用太担心。
以下代码需要安装Python Qiskit Library。您也可以直接在云端运行,IBM Quantum Lab。from math import sqrt, pi
Output:
为了进行量子计算,仅仅了解量子态是不够的。我们还需要能够利用他们做一些有有意义的事!我们使用量子逻辑门 (Quantum Logic Gates)来做到这一点。
门其实就是量子力学中的算子。
量子逻辑门只是一种操纵量子信息的方式,量子信息被量子状态表示。它们类似于普通日常计算机中使用的经典逻辑门——诸如 AND、OR 和 NOT 之类的门。而且,就像经典门在传统计算机中的作用一样,量子门是量子计算的基本构建模块。它们也是描述许多其他量子信息处理任务的便捷方式(例如量子隐形传态)。
特别是,就像任何经典计算都可以使用 AND、OR 和 NOT 门构建一样,我们在接下来的几节中描述的量子门足以进行任何量子计算。
我们将提到的许多量子门都是基于熟悉的经典逻辑门。但有几个是不同的。这些差异看起来几乎是微不足道的。但这些差异就是量子计算的“超能力”,以及量子计算机远优于经典计算机的可能性。
坦率地说,这一节内容会有点啰嗦。
毫无疑问,您可以猜测,量子非门(Quantum NOT Gate)是经典非门的推广。在计算基础状态上测量,量子非门完全符合您的预期,模仿经典非门。也就是说,它将 状态变为 ,反之亦然:
将非门应用于一般叠加态,它是一个线性算符,
由于历史原因,从事量子计算的人们通常使用不同的符号,量子非门的符号是而不是NOT。
到目前为止,我们表达 门工作的方式用的是的非常代数的方法。还有另一种表示,量子电路(Quantum Circuit)表示。在量子电路中,如果我们描绘一个 门,将如下所示:
从左到右的线就是所谓的量子线(Quantum Wire)。量子线代表单个量子位。术语“线”及其绘制方式看起来就像量子位在空间中移动。但是,将从左到右绘制的线视为代表时间的流逝才是正确的。所以最初的线段代表时间的流逝,量子位没有任何变化。然后 门被应用到量子位 ,量子位的状态改变。时间继续流逝,量子位的状态不再变化。
有时我们会将输入和输出的状态明确地画在量子电路中,比如:
事实上,这是我们的第一个量子计算实例。一个简单的计算,只涉及一个量子位和一个门,但仍然是一个真正的量子计算!您好,世界!
门的第三种表示也值得了解,它可以表示为 矩阵:
Proof:
这告诉我们 及其矩阵表示对所有矢量有完全相同的作用,因此是相同的运算。事实上,我们稍后将看到的,所有量子门都可以被认为是矩阵,矩阵条目指定了门的确切细节。
顺便说一下,将 门视为矩阵可以澄清之前可能令人困惑的一个地方。我将 门写为具有作用 ,。隐含地——我从来没有这么说过,尽管这是真的—— 门是一个数学函数,将输入状态转换为输出状态。但是当我们写函数的时候,我们通常使用括号,那么为什么我不写 和类似的 呢?原因是对于线性函数,即矩阵,通常省略括号而只写 - 函数应用只是矩阵乘法。
非门:交替 和 。
例2:量子计算的Hello World!
from qiskit import QuantumCircuit, BasicAer, executeOutput:
如何理解这个结果?Qiskit默认量子比特q最开始处于态。然后我们使用了非门,q变成了态。最后,我们测量了量子比特q,并把结果储存在比特c上。我们重复了这一实验1000次。应为量子比特q没有处于叠加态,所以测量结果是确定的。无论我们测多少次,它永远都是1。稍后我们会看更多的例子,测量的随机性会有所体现。
单线表示量子比特,双线表示比特。
量子线:为什么最简单的量子电路往往也是最难实现的?
最简单的量子电路什么都不做。也就是说,它是单根量子线:
这个电路只是一个不随时间变化量子比特。更明确地说,如果将某个任意量子态 输入到电路中,则输出会是完全相同的状态 (使用希腊字母 表示任意量子态是一种通常的做法):
在数学上,这个电路是微不足道的。但在物理上它远非微不足道。在许多物理系统中,量子线实际上是最难实现的量子计算之一!
原因是量子态通常非常脆弱。如果您的量子位存储在某个微小系统中——可能是单个光子或单个原子——那么很容易破坏该状态。改变一个原子或一个光子的状态真的不需要太多能量。因此,虽然量子线在数学上是微不足道的,但它们可能是在真实系统中最难构建的的元素之一。
尽管如此,有一些系统很容易实现量子线。如果您将量子位存储在中微子中,那么该状态实际上会得到很好的保存。原因是中微子几乎不与其他形式的物质相互作用——中微子可以轻松穿过一英里的铅而不受干扰。但是,虽然中微子如此稳定令人着迷,但这并不意味着它们可以制造出好的量子比特。问题是,由于没有简单的方法可以使普通物质与它们相互作用,我们无法以受控方式操纵它们的量子态,因此无法实现量子门。
这里有一种微妙的平衡,存在于许多量子计算的设计方案中,而不仅仅是中微子。如果我们想存储量子状态,如果我们的量子位仅与其他系统进行非常微弱的交互,那么这些系统就不会破坏它们,这会很有帮助。但是,如果量子位与其他系统的交互作用很小,那么也很难操纵量子位。因此,能制造出好的量子线的系统通常很难为其构建量子门。设计量子计算机的大部分艺术都是关于寻找解决这种紧张局势的方法。通常,这意味着要尝试设计大部分时间相互作用较弱的系统,但有时可能会引起强烈相互作用,因此可以实现量子门。
量子线只是一个不随时间变化量子比特。但很难实现,因为量子态通常很脆弱。
我们来看一个简单的多门量子电路。它是一个有两个连续 门的电路:
净效应是恢复原始量子状态,无论该状态是什么。换句话说,这个电路相当于一条量子线:
理解这一点的一种方法是将 应用于任意输入状态 两次。
第二种方式是基于我们之前为 门找到的矩阵表示。
我们观察到 等价于
进行矩阵乘法是分析量子电路的一种非常常见的方法
当然,与经典的非门相比, 似乎并没有做太多事情。在本节中,我将介绍一个明确涉及量子效应的门,即哈达玛(Hadamard)门。
与 门一样,我们将首先解释哈达玛门如何作用于计算基础状态。用 表示该门,这是它的作用:
当然, 和 并不是唯一的量子态。 哈达玛门如何作用于更一般的量子态?
就像量子非门一样,它是线性的:
我们通常不会处理如此复杂的表达式。我在这里这样做的唯一原因是想要更加清晰。我们将主要使用 门的电路和矩阵表示(见下文)。
事实上,量子计算的很多工作都是研究如何从低抽象层次到更高抽象层次的办法。到目前为止,我们的大部分工作都处于非常低的水平,似乎更像是线性代数的练习,而不是对新计算模型的讨论。这也许看起来很奇怪。毕竟,如果您要向某人解释经典计算机,您就不会从最琐碎的地方开始,比如如何使用 AND 门和 NOT 门等。您将从设计良好的高级编程语言开始,然后在不同的抽象层之间来回切换。
我希望我可以从量子计算机的高级抽象开始。然而,我们仍处于量子计算的早期,在很大程度上,人类还没有发明如此高层次的抽象。人们仍在努力探索。
这是一个令人兴奋的情况:这意味着几乎所有重大突破都在前方。从某种意义上说,我们对量子计算仍然知之甚少。这听起来可能令人惊讶:毕竟,有关于这个主题的大而厚的教科书。但是您可以写一本关于1940 年代后期的 ENIAC计算机的大而厚的教科书。毕竟,这是一个非常复杂的系统。那本教科书看起来很吓人,但它不会是计算领域的最终定论。在大多数情况下,我们今天理解量子计算的方式是在类似于ENIAC 的水平上,查看量子位、逻辑门和线性代数的具体细节,并想知道更高层次的理解可能是什么。这种情况可以被认为很像在产生 Lisp 和Haskell 以及 Prolog 和 Smalltalk 等语言的突破之前的编程语言设计。这使它成为一个非凡的创造机会,是未来几十年和几个世纪的挑战。
现在让我们回到正题。这是哈达玛门的电路表示。它看起来就像电路表示中的 门,只是将门标签更改为 :
的矩阵表示为:
为了验证这个矩阵的正确性,让我们检查矩阵作用于 和 的效果:
因此,矩阵在 和 状态上的作用与哈达玛门相同。应为矩阵乘法是线性的,矩阵在任意输入状态上的作用也与哈达玛门相同,所以它们是相同的运算。
是什么让哈达玛门作为量子门而强大?我们可以用它做什么?
我们还没有(相当)足够的知识背景来对这些问题给出准确的答案。但是有一个类比可以提供一些灵感。
想象一下,在数千年之前,您生活在北非,并且出于某种原因决定前往伊比利亚半岛。如果您还没有船或其他可靠的方法来穿越大片水域,您需要一路穿越非洲,经过阿拉伯半岛,再经过欧洲,回到伊比利亚半岛:
资料来源:Reto Stckli, NASA Earth Observatory (2004)。
然而,假设您发明了一种新设备,即船,它扩大了您可以到达的位置范围。然后,您可以采取更直接的路线前往伊比利亚半岛,大大缩短所需的时间:
哈达玛门和类似的门的作用是扩大计算机可以执行的运算的范围。这种扩展使量子计算机可以走捷径,因为量子计算机以传统经典计算机无法实现的方式“移动”。而且,我们希望,这能让我们更快地解决一些计算问题。
另一个有用的类比是国际象棋游戏。想象一下,您正在下棋,规则发生了对您有利的变化,从而使您的车子的移动范围扩大了。这种额外的灵活性使您能够更快地将军。
类似的事情发生在哈达玛门上。通过扩展我们可以访问的状态范围,超出经典计算机可能的范围,我们可以在计算中走捷径。我们将在后续部分中看到明确的示例。
为了更熟悉哈达玛门,让我们分析一个简单的电路:
这个电路是做什么的?
在我们计算之前,值得停下来尝试猜测结果。猜测的重点不是让它正确——而是挑战自己,学会建立启发式的思维模型来思考量子电路中发生的事情。那些心智模型一开始可能不会很好,但没关系——如果您继续这样做,它们会变得更好。
这是您可以用来考虑该电路的一种启发式方法:您可以将 视为将 和 状态混合在一起。因此,如果您将 两次应用于 ,也许它会将 和 更彻底的混合在一起。根据这种启发式方法,您认为会产生什么样的状态?您相信结果吗?为什么或者为什么不?您能想到其他可以帮助您猜测答案的启发式方法吗?
好的,让我们计算一下实际发生的情况。我们把第一个哈达玛门作用于 状态,我们得到:
然后我们应用第二个哈达玛门得到:
项相互抵消,而 项加强。当我们合并这些项时,我们看到输出只有 状态,与电路开始时的输入相同。
该电路的净效应与量子线完全相同:
有另一种方式可以理解这一点。如果我们向电路输入一个任意量子态,那么输出一定是,即两个矩阵应用于的结果. 但如果您只计算矩阵乘积 ,结果是 单位矩阵,。因此电路的输出必须与输入相同,,就像量子线一样。
当然,这个结果违反了我们的直觉猜测,即两个哈达玛门会将 和 彻底混淆。思考我们的直觉出了什么问题是很有趣的,比如通过查看 对 作用两次的计算。您会看到,在第二个门之后, 项完全相互抵消,而 项相互加强。
尽管这种运算并不复杂,但我还是请您注意它。因为这种类型的相互抵消或加强在许多量子计算算法中至关重要。在不深入细节的情况下,许多此类算法的粗略工作方式是首先使用哈达玛门“扩散”量子态,即把基态变成叠加态。在算法结束时,他们使用巧妙的抵消和加强模式将叠加态重新组合成一个(或可能是少数几个)基态,包含所需的答案。这是一个有点含糊且可能诱人的描述,我们会之后详细的进行讨论。
练习:验证 ,其中 是 单位矩阵,
练习: 假设我们定义了一个矩阵 而不是 :
乍一看, 似乎会形成一个有趣的量子门,与 类似。例如, 和 。这些都是良好的、归一化的量子态。但是如果我们将 应用于量子态 会发生什么?为什么这使得 不适合用作量子门?
练习: 考虑量子电路:
解释为什么这个电路的输出是 ,而不是 ?您可能会天真地假设,应该按照门在电路中出现的顺序进行运算。这是一个需要注意的常见问题——它会发生是因为量子门在电路中从左到右代表了从先到后,而矩阵乘法从右到左组成代表了从先到后。
例3:哈达玛门
from qiskit import QuantumCircuit, BasicAer, executeOutput:
output:
{'0': 499, '1': 501}output:
一开始量子比特q默认处于态,应用一个哈达玛门后,量子比特q处于叠加态
测量该量子比特q并把结果储存在比特c里,c有两种可能的结果,c=0有50%概率,或c=1有50%概率。
我们准备1000个相同的态输入电路,重复1000次测量,统计实验结果为测到0有499次,测到1有501次,并根据此数据估计频率画出了直方图。
假设一位(假设的!)量子物理学家 Alice 在她的实验室中准备了一个量子位,处于量子态 。然后她将她的量子比特交给另一位量子物理学家 Bob,但没有告诉他 和 的值。 Bob 有什么办法可以算出 和 吗?也就是说,Bob 可以做一些实验来找出量子态的身份吗?
这个问题令人惊讶的答案是NO! 事实上,如果 和 一开始是未知的,就没有办法找出它们。 换一种方式来说,任何系统的量子态——无论是量子位还是其他系统——都不能直接观察。
我说这很令人惊讶,因为它与我们习惯的世界如何运作的方式大不相同。如果您的汽车出现问题,机械师可以使用诊断工具来了解发动机的内部状态。诊断工具越好,他们可以知道的东西就越多。当然,引擎的某些部分可能无法访问——例如,他们可能不得不破坏某个部分,或者使用显微镜。但是,如果机械师告诉您物理定律禁止他们弄清楚发动机的内部状态,您可能会相当怀疑。
同样,当您第一次开始学习量子电路时,直觉上似乎我们应该能够随时观察量子态的振幅。但事实证明,这是物理定律所禁止的。这些振幅最好被视为一种隐藏信息。
那么,我们可以从量子态中得出什么信息?除了以某种方式测量 和 ,其实还有其他方法可以从量子位中获取有用的信息。让我描述一个特别重要的过程,称为计算基础状态中的测量(Measurement in the Computational Basis)。这是量子计算中的一个基本术语:这是我们通常从量子计算机中提取信息的方式。我现在将解释它如何适用于单个量子位,然后推广到多量子位系统。
假设一个量子位处于 状态。当您在计算基础状态中测量这个量子位时,它会为您提供一些经典的信息:它以概率 给出结果 0,以概率 给出结果 1。
为了更具体地考虑这个过程,假设您的量子位在某个物理系统中被实例化。也许它以某种方式以原子状态存储。究竟是什么并不重要,但是您的实验室中有这个量子位。您有一些测量设备,可能是一些大而复杂的设备,可能涉及激光和微处理器以及一个用于读取测量结果的屏幕。这个测量设备以某种方式与您的量子位交互。
在测量交互之后,您的测量设备会记录一个结果。例如,您可能得到结果 0。或者您得到结果 1。关键的事实是结果是普通的经典信息——您非常熟悉的东西——然后您可以使用它做其他事情,并控制其他进程。
因此,量子计算的工作方式是我们使用一系列量子门来操纵量子态,然后在计算结束时(通常)我们进行测量以读出计算结果。如果我们的量子计算机只是一个量子位,那么结果将是一个经典位(Bit)。如果,更常见的情况是,它是多个量子位,那么测量结果将是多个经典位。
这个测量过程的一个基本事实是它会改变量子位原本的状态。测量后,如果得到结果 0,那么测量之后的量子位的状态(“后验状态”)就是 。另一方面,如果得到结果 1,则量子位的后验状态是 。
总结一下:如果我们在计算基础状态上测量一个状态为 的量子位,那么结果会是一个经典位。它要么为 0,概率为 ;要么为 1,概率为 。测量后量子位对应的状态为或。
需要注意的一个关键点是,对某个量子位测量后,无论结果如何,该量子位的 和 都没有了。无论后验状态是还是,都没有或的痕迹。因此,您无法获得有关它们的更多信息。从这个意义上说, 和 是一种隐藏信息——测量不会告诉您它们是什么。
这是很重要一点,因为它意味着您不能在一个量子位中存储无限量的经典信息。 毕竟, 是一个复数,您可以想象在其中存储等价于大量经典位的信息。比如 的实部的二进制展开式,,这个位串(Bit String)可以无限长。如果有一些实验方法可以精确测量 的值,那么您就可以提取无限量的经典信息。但是如果没有测量 的方法,那是不可能的。
我们一直在讨论单个物理系统,但要凭经验确定概率,我们必须事先准备出许多的完全相同的物理系统,它们构成一个集合(Ensemble)。我们对整个集合进行测量,得到许多测量结果,通过分析测量结果的频率来估计概率。( J. J. Sakurai Modern Quantum Mechanics)
我一直在谈论对计算基础状态的测量。事实上,您还可以在量子系统中进行其他类型的测量。但从某种意义上说,计算基础状态中的测量结果是最基本的。原因是通过计算基础状态中的测量与量子门(如哈达玛门和非门等)相结合,可以模拟任意量子测量。因此,理论上来讲,您已经掌握了需要了解的有关测量的全部信息。
如何在量子电路中表示测量?这是一个简单的例子:
这是一个单量子位量子电路,输入状态为 。应用非门,然后是哈达玛门。该电路以一个对计算基础状态的测量结束,由略微拉长的半圆表示。 是表示测量结果的经典位 , 0 或 1。我们使用双线表示经典位 。
关于测量的最后一个评论是它与我们之前讨论的量子态的归一化条件有关。 假设我们有量子态:
那么两个可能的测量结果 0 和 1 的概率之和必须为 1,所以我们有:
这正是量子态的归一化条件——即,量子态的长度必须为 1。该约束的起源实际上只是测量概率加起来必须为 1 的事实。
练习: 假设我们得到了状态 或状态 ,但没有告诉我们得到了哪个状态。我们想弄清楚我们被赋予了哪种状态。如果我们只是进行计算基础状态测量,那么对于这两种状态,我们都会以 的概率得到结果 0,以 的概率得到结果 1。所以我们不能直接使用计算基础状态测量来区分它们。但是假设我们将状态放入以下电路中:
证明如果输入状态 则输出为 ,概率为 1,而如果状态 是输入然后输出是 的概率为 1。因此,虽然这两种状态如果只是在计算基础状态上测量是无法区分的,但可以通过一个简单的量子电路的帮助来区分。
到目前为止,我们已经了解了两个量子门,即非门和哈达玛门,以及可用于从我们的量子电路中提取经典信息的测量过程。在本节中,我将回到量子门,看看最通用的单量子位门。
让我们先复习一下非门和哈达玛门的矩阵表示:
如果这些门的输入是量子态 ,则输出分别是 和 。
一般的单量子位门的工作原理类似。特别是,一般的单量子位门可以表示为 幺正矩阵(Unitary Matrix) 。 (如果您生疏了,我会马上提醒您一个矩阵是幺正矩阵意味着什么,您现在可以把它当成一个矩阵就行。)如果门的输入是状态 那么门的输出是 。因此非门和哈达玛门分别对应于 和 的特殊情况。
矩阵 是幺正矩阵是什么意思?用代数方式回答这个问题最容易,它只是意味着 ,即的共轭转置乘以,等于单位矩阵。
其中,表示对矩阵元素取复共轭,表示矩阵的转置。所以对于一个 矩阵,它的共轭转置就是:
幺正矩阵也被称为酉矩阵。
您可能会问一些基本问题:为什么单量子位门由酉矩阵描述?我们如何才能直观地了解矩阵的幺正性意味着什么?虽然方程 很容易用代数检查,但我们希望对该方程的含义有一些直觉上的理解。
我们稍后将在下一节回答这个问题。
练习: 证明 是幺正的。
练习: 证明单位矩阵 是酉矩阵。
练习: 您能找到一个 矩阵的例子,它是酉矩阵,不是 、 或 ?
现在,让我们看看其他几个单量子位量子门。非门 是由物理学家 Wolfgang Pauli 在量子力学的早期引入的。他还引入了了另外两个矩阵,
量子5状态5矩阵5哈达5非门
上一篇:量子计算(一)
下一篇:精,一文读懂量子计算