全民量子计算 - 第一部分:经典计算与量子计算





5.00/5 (5投票s)
量子计算导论以及经典计算机与量子计算机的区别。
第二部分:量子门 |
系列概述
量子计算一开始可能是一个难以理解的主题。不是因为数学,数学只比高中代数复杂一点点,而是因为有些概念与我们的日常经验相悖。因此,本文已分为四部分,从经典计算机与量子计算机的区别开始,到演示在真实量子处理器上运行算法结束。如果您已经对量子计算有所了解,或许可以跳过其中一部分或几部分。但是,如果您是这个领域的新手,我建议您按顺序阅读这些文章,因为每一部分都建立在前一部分的概念之上。下面是对本系列文章的简要概述:
- 第一部分 - 量子计算导论(本部分):本部分将介绍经典计算机与量子计算机的区别,并解释量子计算机如何获得其强大的能力。还将介绍作为基本信息单元(类似于比特)的量子比特。
- 第二部分 - 量子门:本部分将介绍量子门的概念以及它们如何作用于量子比特来改变其状态。还将描述最常见的量子门,并给出一些详细的示例,说明如何计算量子门作用于量子比特后的最终状态。由于本节大量使用了矩阵代数,因此文章开头将回顾矩阵(包括矩阵乘法、矩阵转置和矩阵的复共轭)。
- 第三部分 - 量子电路和 OpenQASM:本系列的第三部分将介绍量子电路及其表示方法。将为特定问题构建一些示例电路。此外,还将介绍 OpenQASM,这是一种用于描述量子电路的中间编程语言。使用 OpenQASM,将编写两个程序,它们将在第四部分中进行模拟并在真实的量子处理器上运行。
- 第四部分 - IBM 量子体验:本部分将介绍 IBM 量子体验平台。它将介绍允许图形化构建量子电路的 Composer,以及 OpenQASM 编辑器。在第三部分中创建的 OpenQASM 程序也将在该平台上进行模拟,并在真实的量子处理器上运行。
- 第五部分 - IBM 量子体验 API(计划中):本部分将介绍 IBM 量子体验 RESTful API,它允许提交 OpenQASM 程序,并进行模拟或在实际量子处理器上运行,结果以 JSON 格式返回。
- 第六部分 - 量子电路模拟(计划中):本部分将展示如何通过解析和解释 OpenQASM 程序来模拟量子电路。
第五部分和第六部分目前处于计划阶段。如果/当它们完成时,上面的链接以及第四部分末尾的链接将更新。如果您认为应该添加其他任何部分,或希望看到其他部分,请随时发表评论。我可能不会回复所有评论,但我一定会阅读所有评论。
量子计算是一个广泛的主题,足以填满大型教科书。为了浓缩信息,将省略一些细节,并将不提供证明的概念呈现给读者,我要求读者只需接受它。但是,我会尽量提供足够的信息,对于那些没有完全解答、只提供答案的问题,读者应该能够自己解决(如果他们愿意)。如果您觉得本系列遗漏了什么应该包含的内容,或者有什么需要进一步澄清的,请随时在文章页面上发表评论。我将尽力满足所有人的需求,但请记住,不可能涵盖所有内容。在阅读本系列文章时,如果您感到迷茫,或者不明白为什么量子力学中的某些现象会以它们的方式发生,请记住著名物理学家理查德·费曼的这句话:
我想我可以安全地说,没有人真正理解量子力学。
- 理查德·费曼,《物理定律的本质》(麻省理工学院出版社:剑桥,马萨诸塞州,1995)
目录
引言
自 20 世纪 80 年代(从尤里·马宁和理查德·费曼等人的提出)以来,量子计算机取得了缓慢但稳步的进展。这些进展以前只有在配备了最先进设备的专用实验室中的量子物理学家才能获得。然而,这一切在 2016 年 5 月发生了改变,当时 IBM 宣布将通过互联网提供一个 5 量子比特的量子计算机,供公众访问和运行实验。这是量子计算机首次向公众开放,并有可能改变编程的面貌。
在能够设计实验进行运行或模拟之前,我们需要了解量子计算机与经典计算机(如您很可能正在阅读本文的计算机)的区别以及量子计算机的工作原理。量子计算背后的数学和物理学可能非常复杂且难以理解。然而,本文将尽量保持简单,并尽量避免使用数学/物理学。不幸的是,这并非完全可以避免,因此我们将尽可能详细地介绍,并提供一些数学示例,以期使其尽可能易于理解。
量子计算机与经典计算机
当今所有的计算机(笔记本电脑、超极本,甚至手机)都是经典计算机。它们都通过使用晶体管作为开关并依靠电流来运行。当开关打开,没有电流流过时,它代表一个 0 位。如果开关关闭,有电流流过,它代表一个 1 位。计算机能够完成的一切,都是通过一次对一个或多个比特进行非常快速的操作来完成的。在计算机运行时,任何时候它都可能处于 \(2^n\) 种可能状态之一,其中 \(n\) 是总比特数,范围从 \(00..0\) 到 \(11..1\)。
量子计算机也有比特,称为量子比特(发音为 CUE-bits)。量子比特与比特的区别在于,虽然比特只能是 0 或 1,但量子比特可以是 0、1,或者同时是 0 **和** 1 的混合。当量子比特是 0 和 1 的混合时,这被称为**叠加**。这使得量子计算机能够同时存在于*指数级多的*逻辑状态中。
原图转载:Jbw2,SVG 版本:WhiteTimberwolf - 改编自 Nanocomputers and Swarm Intelligence(第 157 页) ISTE,Waldner,JB(2007),ISBN 2746215160。经作者授权转载,CC BY 3.0,链接
这张图片是对叠加态的视觉化表示。想象每个球是一个电子,其自旋可以向上(表示为向上箭头或 \(\vert 1 \rangle\))或向下(表示为向下箭头或 \(\vert 0 \rangle\))。如果自旋向下,它代表二进制 0;如果自旋向上,它代表二进制 1。假设最低有效位在右边,前四个电子表示二进制的 5。
然而,在第二种情况下,我们可以看到最低有效位空间中的电子同时处于向上和向下的叠加状态。一旦进行测量,这种叠加将坍缩,电子的自旋将是向上*或*向下。如果测量到的自旋是向上,则第二组电子也代表二进制的 5。但如果测量的自旋是向下,则第二种情况代表二进制的 4。
这就是量子计算机获得其能力的部分原因。能够让物体同时处于多个状态。
除了利用叠加态,量子计算机还利用了量子力学的另一个不寻常的特性,称为**纠缠**。当单个量子比特发生纠缠时,它们就不能再被单独描述;它们只能被描述为整体系统的一部分。即使量子纠缠粒子相隔遥远,它们之间也存在相关性。测量其中一个量子比特会立即影响另一个纠缠粒子。
这两个特性,叠加态和纠缠态,都没有经典模拟。它们都与直觉相悖(一个物体同时存在于多个状态,并且相隔的物体之间没有连接却会相互影响),但它们赋予了量子计算机强大的能力。
量子比特
既然我们知道量子比特可以同时存在于多个状态中,我们需要一些符号来表示这一点,以便我们可以处理它们。与经典比特可以表示为 0 或 1 类似,量子比特可以表示为 \(|0\rangle\)(称为“基态”)或 \(|1\rangle\)(称为“激发态”)。这种符号称为迪拉克符号。 \(|0\rangle\)(或 \(|1\rangle\))称为“ket”,表示一个二维列向量,其系数为*复数*(\(\mathbb{C}^2\))。
“bra”写成 \(\langle0|\)(或 \(\langle1|\)),表示一个二维行向量,其系数为 \(\mathbb{C}^2\)。
然而,我们还需要一种方法来表示量子比特处于 \(|0\rangle\) 和 \(|1\rangle\) 的叠加状态(即混合状态)。我们通过写出两个状态的线性组合来实现这一点:
其中 \(a\) 和 \(b\) 可以是正数、负数、分数,甚至可以是复数。如果我们取 \(a\) 和 \(b\) 的绝对值平方(即 \(\lvert a \rvert^2\) 和 \(\lvert b \rvert^2\)),我们就得到了测量到 \(|0\rangle\) 或 \(|1\rangle\) 的*概率*。这也意味着:
也就是说,测量到 \(|0\rangle\) 的概率加上测量到 \(|1\rangle\) 的概率是 \(100\%\)(即我们最终必须测量到 \(|0\rangle\) 或 \(|1\rangle\),这是仅有的可能性)。
因此,如果量子比特处于一种叠加状态,有 \(50/50\) 的几率是 \(|0\rangle\) 或 \(|1\rangle\),它将被表示为 \(\frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle\)。以矩阵形式表示,它将是:
为什么 \(a\) 和 \(b\) 的值都等于 \(\frac{1}{\sqrt{2}}\) 而不是 \(\frac{1}{2}\),如果存在 \(50/50\) 的几率得到 \(|0\rangle\) 或 \(|1\rangle\) 的结果?请记住,\(\lvert a \rvert^2 + \lvert b \rvert^2\) 必须等于 \(1\)。如果 \(a\) 和 \(b\) 都等于 \(\frac{1}{2}\),那么:
然而,如果 \(a\) 和 \(b\) 都等于 \(\frac{1}{\sqrt{2}}\):
量子比特的可视化
量子比特的叠加态不是一个容易可视化的事情,因为在我们日常生活中没有任何类似的东西。为了使其更容易理解,开发了一个称为*布洛赫球面*的工具。布洛赫球面顾名思义;它是一个半径为 1 的球体,量子比特可以存在的任何可能状态都对应于球体表面上的一个点。
布洛赫球面看起来是这样的:
由 Glosser.ca - 原创作品,CC BY-SA 3.0,链接
其中 \(|\psi\rangle\) 表示量子比特的状态。使用这种表示法,我们还可以使用角度和以下方程来描述量子比特的状态:
其中 \(0\leq\theta\leq\pi\) 和 \(0\leq\phi<2\pi\)。这种表示法将在我们讨论量子门以及它们如何改变量子比特状态(即改变量子比特在布洛赫球面上的位置)时有所帮助。
\(e^{i\phi}\) 值被称为*相位因子*。相位因子本身没有物理意义。这意味着 \(|\psi\rangle\) 和 \(e^{i\phi}|\psi\rangle\) 是相同的。然而,当测量相互作用的两个量子态时,相位因子的*差异*有时可以被测量并产生重要影响。
结论
本系列第一部分到此结束。我们已经了解了经典计算机与量子计算机的区别,介绍了量子比特,以及如何表示/可视化量子比特以便于量子计算。在第二部分中,我们将探讨如何操纵量子比特并使用它们进行计算。
致谢
我想感谢 Dominick Marciano Sr. 对本系列文章的审阅和反馈。此外,还必须特别感谢 Sean Ewington,没有他,本系列文章就不可能完成。
参考文献
以下是进一步信息的链接列表。其中大多数(如果不是全部)都包含在文章中,但在此处列出以便于参考。
历史
2017年6月26日:第一个版本
第二部分:量子门 |