文章目录
第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。这些幅度会受到一定的测量误差概率影响,降低这种误差概率是构建量子计算机的工