26. 未来一瞥:量子计算
文章目录
- 第26章 未来一瞥:量子计算
- 26.1 单量子比特
- 对量子比特的操作
- 纠缠
- 26.2 量子隐形传态
- 26.3 量子计算与加密
- 26.4 其他算法
- 量子随机存取存储器(QRAM)
- 矩阵求逆
- 26.5 潜在应用
- 26.6 最后的思考
- 26.7 扩展阅读
第26章 未来一瞥:量子计算
[可以将量子计算机与]1903年莱特兄弟在基蒂霍克试飞的飞机相提并论。莱特飞行器勉强离开地面,但它预示着一场革命。
在影响软件架构实践的发展方面,未来会带来什么呢?人类在预测长期未来方面出了名地差劲,但我们还是不断尝试,因为,嗯,这很有趣。在本书的结尾,我们选择聚焦于一个完全属于未来但又似乎近在咫尺的特定方面:量子计算。
量子计算机在未来五到十年内可能会变得实用。考虑一下你目前正在开发的系统可能会有几十年(是复数哦)的使用寿命。20 世纪 60 年代和 70 年代编写的代码在今天仍在日常使用。如果你的系统有这样的使用寿命,那么当量子计算机变得实用时,你可能需要对其进行转换以利用量子计算机的能力。
量子计算机引起了高度关注,因为它们有潜力以远远超过最强大的传统计算机的速度进行计算。2019 年,谷歌宣布其量子计算机在 200 秒内完成了一项复杂计算。谷歌称,同样的计算即使是最强大的超级计算机也需要大约 10000 年才能完成。并不是说量子计算机只是比传统计算机快很多地做传统计算机所做的事情;而是它们利用量子物理学的超凡特性做传统计算机做不到的事情。
量子计算机并不会在解决所有问题上都比传统计算机更好。例如,对于许多最常见的面向事务的数据处理任务,它们可能无关紧要。它们擅长解决涉及组合数学且对传统计算机来说计算困难的问题。然而,量子计算机不太可能为你的手机或手表供电,也不太可能放在你的办公桌上。
理解量子计算机的理论基础需要深入了解物理学,包括量子物理学,而这远远超出了我们的范围。作为背景,在 20 世纪 40 年代传统计算机被发明时也是如此。随着时间的推移,由于引入了有用的抽象概念,如高级编程语言,对理解 CPU 和内存如何工作的要求已经消失了。同样的事情也会发生在量子计算机上。在本章中,我们在不涉及底层物理学(我们已经知道这会让人头大)的情况下介绍量子计算的基本概念。
26.1 单量子比特
量子计算机中的基本计算单位是一个称为 “量子比特”(稍后会详细介绍)的量子信息单位。量子计算机的简单定义是一种操纵量子比特的处理器。在本书出版时,现存最好的量子计算机包含几百个量子比特。
“量子处理单元”(QPU)将以与如今图形处理单元与中央处理器交互相同的方式与经典中央处理器交互。换句话说,中央处理器将把量子处理单元视为一种提供某些输入并产生某些输出的服务。中央处理器与量子处理单元之间的通信将以经典比特为单位。量子处理单元利用输入产生输出的具体方式不在中央处理器的考虑范围内。
经典计算机中的一个比特的值要么是 0 要么是 1,并且在正常运行时,它所呈现的值是明确的。此外,经典计算机中的比特具有非破坏性读出。也就是说,测量该值将给出 0 或 1,并且该比特将保留在读取操作开始时所具有的值。
量子比特在这两个特性上有所不同。量子比特由三个数字来表征。其中两个数字是概率:测量得到 1 的概率和测量得到 0 的概率。第三个数字称为相位,描述了量子比特的旋转。对量子比特的测量将返回 0 或 1(具有指定的概率),并且将破坏量子比特的当前值并用它所返回的值替换。对于 0 和 1 都具有非零概率的量子比特被称为处于叠加态。
通过使概率成为复数来管理相位。幅度(概率)被表示为 |α|² 和 |β|²。如果 |α|² 是 40%,|β|² 是 60%,那么 10 次测量中有 4 次会是 0,10 次测量中有 6 次会是 1。这些幅度会受到一定的测量误差概率影响,降低这种误差概率是构建量子计算机的工程挑战之一。
这个定义有两个结果:
- |α|² + |β|² = 1。因为 |α|² 和 |β|² 分别是测量得到 0 或 1 的概率,并且因为测量将给出其中一个值,所以概率之和必须是 1。
- 不能复制量子比特。从经典比特 A 复制到经典比特 B 是读取比特 A,然后将该值存储到 B 中。对量子比特 A 的测量(即读取)将破坏 A 并给出 0 或 1 的值。因此,存储到量子比特 B 中的将是 0 或 1,并且不会包含 A 中嵌入的概率或相位。
相位值是 0 到 2π 弧度之间的一个角度。它不影响叠加态的概率,但为操纵量子比特提供了另一个杠杆。一些量子算法通过操纵某些量子比特的相位来标记它们。
对量子比特的操作
一些单量子比特操作类似于经典比特操作,而另一些则是量子比特特有的。大多数量子操作的一个特点是它们是可逆的;也就是说,给定一个操作的结果,有可能恢复该操作的输入。可逆性是经典比特操作和量子比特操作的另一个区别。可逆性的一个例外是读取(READ)操作:由于测量是破坏性的,所以读取操作的结果不能恢复原始量子比特。量子比特操作的例子包括以下内容:
- 读取操作将一个单量子比特作为输入,并以由输入量子比特的幅度决定的概率产生 0 或 1 作为输出。输入量子比特的值坍缩为 0 或 1。
- 非(NOT)操作将处于叠加态的量子比特的幅度翻转。也就是说,结果量子比特为 0 的概率是其原本为 1 的概率,反之亦然。
- Z 操作将量子比特的相位增加 Π(以 2Π 为模)。
- 哈达玛(HAD,Hadamard 的缩写)操作创建一个等概率叠加态,这意味着值为 0 和 1 的量子比特的幅度分别相等。0 输入值产生 0 弧度的相位,1 输入值产生 Π 弧度的相位。
可以将多个操作链接在一起以产生更复杂的功能单元。
一些操作符对多个量子比特起作用。主要的双量子比特操作符是控制非(CNOT)。第一个量子比特是控制位。如果它是 1,那么该操作对第二个量子比特执行非操作。如果第一个量子比特是 0,那么第二个量子比特保持不变。
纠缠
纠缠是量子计算的关键要素之一。它在经典计算中没有类似物,赋予了量子计算一些非常奇特和奇妙的特性,使其能够做到经典计算机无法做到的事情。
如果对两个量子比特进行测量时,第二个量子比特的测量结果与第一个量子比特的测量结果相匹配,那么这两个量子比特就被称为 “纠缠”。无论两次测量之间的时间间隔有多长,或者量子比特之间的物理距离有多远,纠缠都可能发生。这就引出了所谓的量子隐形传态。系好安全带吧。
26.2 量子隐形传态
回想一下,不可能直接将一个量子比特复制到另一个量子比特。因此,如果我们想将一个量子比特复制到另一个量子比特,我们必须使用间接手段。此外,我们必须接受原始量子比特状态的破坏。接收量子比特将具有与被破坏的原始量子比特相同的状态。这种状态的复制被称为 “量子隐形传态”。原始量子比特和接收量子比特之间不需要有任何物理关系,它们之间的距离也没有限制。因此,在物理实现的量子比特之间,即使相隔数百或数千公里,也可以远距离传输信息。
量子比特的隐形传态取决于纠缠。回想一下,纠缠意味着对一个纠缠量子比特的测量将保证对第二个量子比特的测量具有相同的值。隐形传态利用三个量子比特。量子比特 A 和 B 纠缠在一起,然后量子比特 ψ 与量子比特 A 纠缠。量子比特 ψ 被隐形传态到量子比特 B 的位置,并且其状态变为量子比特 B 的状态。大致来说,隐形传态通过以下四个步骤进行:
- 使量子比特 A 和 B 纠缠。我们在上一节中讨论了这意味着什么。A 和 B 的位置可以在物理上是分开的。
- 准备 “有效载荷”。有效载荷量子比特将具有要被隐形传态的状态。有效载荷,即量子比特 ψ,在 A 的位置准备好。
- 传播有效载荷。传播涉及两个经典比特,它们被传输到 B 的位置。传播还涉及测量 A 和 ψ,这会破坏这两个量子比特的状态。
- 在 B 中重新创建 ψ 的状态。
我们省略了很多关键细节,但关键是:量子隐形传态是量子通信的一个重要组成部分。它依赖于通过传统通信信道传输两个比特。它本质上是安全的,因为窃听者所能确定的只是通过传统信道发送的两个比特。因为 A 和 B 通过纠缠进行通信,它们不会在物理上通过通信线路发送。美国国家标准与技术研究院(NIST)正在考虑各种不同的基于量子的通信协议,作为一种称为 HTTPQ 的传输协议的基础,该协议旨在替代 HTTPS。考虑到用一种通信协议替代另一种通信协议需要几十年的时间,目标是在能够破解 HTTPS 的量子计算机可用之前采用 HTTPQ。
26.3 量子计算与加密
量子计算机在计算函数的逆方面极为擅长 —— 特别是哈希函数的逆。在很多情况下,这种计算会非常有用,在解密密码方面尤其如此。密码几乎从不直接存储;相反,存储的是它们的哈希值。只存储哈希值背后的假设是,计算哈希函数的逆在计算上很困难,使用传统计算机的话可能需要数百年甚至数千年的时间。然而,量子计算机改变了这种计算。
格罗弗算法(Grover’s algorithm)是一种计算函数逆的概率算法的例子。基于 256 位哈希计算其逆大约需要 2 的 128 次方次迭代。这表示相对于传统计算算法有二次方的加速,意味着量子算法的时间大约是传统算法时间的平方根。这使得大量以前被认为是安全的受密码保护的材料变得相当脆弱。
现代安全加密算法基于分解两个大素数乘积的难度。设 p 和 q 是两个不同的素数,每个素数的大小都大于 128 位。这两个素数的乘积 pq 的大小约为 256 位。给定 p 和 q,计算这个乘积相对容易。然而,在传统计算机上分解乘积 pq 并恢复 p 和 q 在计算上非常困难:它属于 NP 困难类别。
这意味着,给定一个基于素数 p 和 q 加密的消息,如果你知道 p 和 q,解密这个消息相对容易,但如果你不知道( 至少在传统计算机上)实际上是不可能的。然而,量子计算机可以比传统计算机更有效地分解 pq。肖尔算法(Shor’s algorithm)是一种量子算法,可以在大约以 p 和 q 的位数的对数为量级的运行时间内分解 pq。
26.4 其他算法
量子计算在许多应用中也具有类似的变革性潜力。在这里,我们通过介绍一个必要但目前尚不存在的硬件 —— 量子随机存取存储器(QRAM)来开始我们的讨论。
量子随机存取存储器(QRAM)
量子随机存取存储器(QRAM)是实现和应用许多量子算法的关键要素。QRAM 或类似的东西对于高效访问大量数据(如机器学习应用中使用的数据)是必要的。目前,还没有 QRAM 的实现,但有几个研究小组正在探索这样的实现如何工作。
传统的随机存取存储器由一个硬件设备组成,它以一个存储位置作为输入,并以该存储位置的内容作为输出。QRAM 在概念上类似:它以一个存储位置(可能是存储位置的叠加态)作为输入,并以这些存储位置的叠加态内容作为输出。其内容被返回的存储位置是以传统方式写入的 —— 也就是说,每个比特有一个值。这些值以叠加态返回,并且幅度由要返回的存储位置的规范确定。因为原始值是传统写入的,所以它们可以以非破坏性的方式复制。
所提出的 QRAM 的一个问题是,所需的物理资源数量与检索的比特数呈线性比例。因此,对于非常大的检索量,构建 QRAM 可能并不实际。与关于量子计算机的许多讨论一样,QRAM 处于理论讨论阶段而非工程阶段。请继续关注。
我们讨论的其余算法假定存在一种机制,例如像 QRAM 那样,用于高效访问算法所操作的数据。
矩阵求逆
矩阵求逆是许多科学问题的基础。例如,机器学习需要有求逆大型矩阵的能力。在这种情况下,量子计算机有望加速矩阵求逆。哈罗(Harrow)、哈西迪姆(Hassidim)和劳埃德(Lloyd)的 HHL 算法将在一些约束条件下求线性矩阵的逆。一般问题是求解方程 Ax = b,其中 A 是一个 N×N 矩阵,x 是一组 N 个未知数,b 是一组 N 个已知值。你在初等代数中了解过最简单的情况(N = 2)。然而,随着 N 的增长,矩阵求逆成为求解方程组的标准技术。
在用量子计算机解决这个问题时,有以下约束条件:
- b 的值必须能够快速访问。这是 QRAM 应该解决的问题。
- 矩阵 A 必须满足某些条件。如果它是一个稀疏矩阵,那么它很可能在量子计算机上高效处理。矩阵也必须是良态的;也就是说,矩阵的行列式必须非零或接近零。在传统计算机上求逆矩阵时,行列式小会引起问题,所以这不是量子计算机特有的问题。
- 应用 HHL 算法的结果是 x 的值以叠加态出现。因此,需要一种机制来有效地从叠加态中分离出实际值。
实际的算法太复杂,我们无法在此介绍。然而,一个值得注意的元素是,它依赖于基于使用相位的幅度放大技术。
26.5 潜在应用
量子计算机预计将对各种各样的应用领域产生影响。例如,国际商业机器公司(IBM)正专注于网络安全、药物开发、金融建模、更好的电池、更清洁的肥料、交通优化、天气预报与气候变化以及人工智能和机器学习等,这里仅列举几个领域。
到目前为止,除了网络安全领域,这份潜在量子计算应用的列表在很大程度上仍只是推测。有几种网络安全算法已被证明比传统算法有显著的改进,但其余的应用领域迄今为止仍是大量热烈研究的主题。然而,到目前为止,这些努力都还没有产生公开的成果。
正如本章开头的引语所暗示的,量子计算机正处于莱特兄弟时代飞机所处的阶段。前景广阔,但要将这一前景变为现实,还需要做大量的工作。
26.6 最后的思考
量子计算机目前还处于起步阶段。此类计算机的应用目前主要还是推测,特别是那些需要大量数据的应用。尽管如此,就实际存在的量子比特数量而言,进展正在迅速发生。看起来摩尔定律很可能会适用于量子计算机,就像它在传统计算中那样。如果是这样,那么可用的量子比特数量将随着时间呈指数增长。
在 [26.2 节][ch26sec02] 中讨论的量子比特操作适合一种编程风格,即操作被链接在一起以执行有用的功能。这很可能会遵循与传统计算机的机器语言相同的发展轨迹。机器语言仍然存在,但已成为只有少数程序员涉足的领域。大多数程序员使用各种各样的高级语言。我们应该期待在量子计算机编程中看到同样的发展。量子计算语言设计的努力正在进行中,但仍处于初级阶段。
编程语言只是冰山一角。那么本书中我们讨论过的其他主题呢?是否有与量子计算机相关的新质量属性、新的架构模式、额外的架构视图呢?几乎可以肯定是有的。
量子计算机网络会是什么样子呢?量子计算机和传统计算机的混合网络会变得广泛吗?所有这些都是量子计算几乎肯定会最终发展的潜在领域。
在此期间,架构师能做什么呢?首先,关注突破性的发展。如果你今天正在开发的系统涉及量子计算可能会影响的领域(或者更有可能是完全颠覆的领域),将系统的这些部分隔离出来,以便在量子计算最终出现时尽量减少干扰。特别是对于安全系统,关注这个领域,以便在你的传统加密算法变得毫无价值时知道该怎么做。
但你的准备工作不一定要全是防御性的。想象一下,有一个无论节点之间的物理距离有多远都能瞬间传输信息的通信网络,你能做什么呢?如果这听起来牵强 —— 好吧,曾经飞行器也被认为是牵强的。
一如既往,我们满怀期待地等待未来。
26.7 扩展阅读
概述:
- 埃里克・约翰斯顿(Eric Johnston)、尼克・哈里根(Nic Harrigan)和梅赛德斯・希梅诺 - 塞戈维亚(Mercedes Gimeno-Segovia)所著的《量子计算机编程》在不涉及物理学或线性代数的情况下讨论了量子计算 [[Johnston 19][ref_131]]。
- 《量子计算:进展与前景》[[NASEM 19][ref_188]] 提供了量子计算当前状态的概述以及制造真正的量子计算机所必须克服的挑战。
- 量子计算机不仅与传统计算机相比能提供更快的解决方案,还能解决一些只有量子计算机才能解决的问题。这个强大的理论结果在 2018 年 5 月出现:quantamagazine.org/finally-a-problem-that-only-quantum-computers-will-ever-be-able-to-solve-20180621/。