购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 如何使用量子计算机?

我们能像科幻影视作品中展示的那样使用量子计算机吗(如图1.2所示)?了解量子计算机的潜力和局限性是很重要的,尤其是考虑到围绕量子计算的炒作。这种炒作背后的许多误解来自于将类比外推,超出它们适用的范围——所有类比都有局限性,量子计算也不例外。模拟量子程序在实践中的行为是一个好方法,可以帮助测试和完善类比所提供的理解。尽管如此,我们仍然会在本书中使用类比,因为它们有助于直观地理解量子计算如何工作。

图1.2 我们所希望的使用量子计算机的方式。漫画由xkcd网站授权使用

提示 如果你曾经看到过对量子计算新成果的夸张描述,如“我们可以利用无限多的平行宇宙的力量,同时传送两个地方的猫,从而治疗癌症”,那么你就明白了,将有用的类比外推得太远是很危险的。

关于量子计算的一个特别常见的困惑之处,就是用户将如何使用量子计算机。我们已经理解了什么是“计算机”:你可以用它来运行网络应用程序,写文件,以及运行模拟。事实上,经典计算机在我们的生活中做了许多不同的事情,我们有时甚至不会注意到什么是计算机、什么不是计算机。Cory Doctorow指出“你的车就是你坐在里面的一台计算机”(DrupalCon Amsterdam 2014主题演讲),从而提出了这个观点。

然而,量子计算机的用途可能更为特殊——我们预料量子计算机对于某些任务来说是毫无意义的。量子计算将如何融入我们现有的经典计算堆栈,一个很好的模型就是GPU。GPU是专门的硬件设备,旨在加速特定类型的计算,如图形绘制、机器学习任务,以及任何容易并行化的任务。你想用GPU来完成这些特定的任务,但很可能不想用它来完成所有的任务,因为我们有更灵活的CPU来完成一般的任务,如检查电子邮件。量子计算机是完全一样的:它们擅长加速特定类型的任务,但不适合广泛使用。

注意 量子计算机的编程有一些限制,所以当没有特别的量子优势可言时,经典计算机是最好的选择。

经典计算仍将存在,并且是我们(以及我们的量子硬件)彼此交流和互动的主要方式。甚至为了让经典计算资源与量子设备对接,在大多数情况下,我们还需要一个数模信号处理器,如图1.3所示。

图1.3 量子设备如何通过使用数字信号处理器与经典计算机交互的示例。数字信号处理器向量子设备发送低功率信号,并放大返回设备的极低功率信号

此外,量子物理学描述的事物在非常小的规模上(包括尺寸和能量),它们与周围环境很好地隔离。这对我们可以运行量子计算机的环境提出了一些硬性限制。一个可能的解决方案是将量子设备保存在低温冰箱中,通常接近0 K(−459.67℉,或−273.15℃)。虽然这在数据中心不是问题,但在台式机上搭建一个简化版低温冰箱并不太现实,更不用说在笔记本计算机或手机上。由于上述原因,量子计算机可能会通过云来使用,至少在它们首次商业化后的相当一段时间内是如此的。

将量子计算机用作云服务类似于专门的计算硬件的其他进展。在数据中心中,通过下面这样的奇特计算资源,可以探索一些计算模式,这些模式除了最大的用户之外,很难在内部部署:

■ 专门的游戏硬件(如PlayStation、Xbox);

■ 用于科学问题的极低延迟、高性能计算集群(如Infiniband);

■ 大规模的GPU集群;

■ 可重复编程的硬件(如Catapult、Brainwave);

■ 张量处理单元(Tensor Processing Unit,TPU)集群;

■ 高持久、高延迟的档案存储(如Amazon Glacier)。

展望未来,像Azure Quantum这样的云服务将以大致相同的方式提供量子计算的支持。

正如高速、高可用的互联网连接使大量用户可以使用云计算一样,我们也将能够在最喜欢的、有Wi-Fi覆盖的海滩或咖啡馆里,甚至在火车上观看远处的雄伟山脉时,使用量子计算机。

1.3.1 量子计算机能做什么?

作为程序员,如果我们有一个具体的问题,那么“我们怎么知道用量子计算机来解决它是有意义的呢?”

我们还在了解量子计算机到底能做到什么程度,因此还没有具体的规则来回答这个问题。到目前为止,我们已经发现了一些问题实例,在这些问题中,量子计算机比著名的经典方法更具有明显的优势。在所有情况下,已经发现的解决这些问题的量子算法都是利用量子效应来实现优势的,这有时被称为“量子优势”。下面是两个有用的量子算法。

■ 格罗弗算法(在第11章中讨论)可以在 个步骤中搜索 N 个项目的列表。

■ 舒尔算法(第12章)可以快速分解大的整数,如被用作加密以保护私人数据的整数。

我们将在本书中看到更多的算法,但格罗弗算法和舒尔算法是量子算法有效的好示例:它们都使用量子效应来分离计算问题的正确答案和无效解。实现量子优势的一个方法是找到一些方法,利用量子效应来分离经典问题的正确和错误答案。

什么是量子优势?

格罗弗算法和舒尔算法说明了两种不同的量子优势。整数的因数分解可能比我们猜想的更容易。许多人已经非常努力地尝试快速分解整数,但都没有成功,但这并不意味着我们可以证明分解是困难的。另一方面,我们可以证明格罗弗算法比任何经典算法都要快,其中的秘诀是:它使用的是另一种输入。

为一个实际问题找到可证明的优势是量子计算的一个热门研究领域。也就是说,量子计算机可以成为解决问题的强大工具,即使我们无法证明永远不会有更好的经典算法。毕竟,舒尔算法挑战了大量信息安全的基础假设。数学证明是必要的,只是我们还没有建立一个足够大的量子计算机来运行舒尔算法。

量子计算机还为模拟量子系统的特性提供了巨大的好处,为量子化学和材料科学的应用开辟了道路。例如,量子计算机可以使我们更容易了解化学系统的基态能量。这些基态能量可以让人们深入了解反应速率、电子构型、热力学特性,以及其他业界感兴趣的化学特性。

在开发这些应用的过程中,我们也看到了衍生技术的巨大优势,如量子密钥分配和量子计量学,其中一些我们将在接下来的几章中看到。在以计算为目的,学习控制和理解量子设备的过程中,我们也学到了成像、参数估计、安全等方面的宝贵技术。虽然这些并不是严格意义上的量子计算的应用,但它们在很大程度上展示了用量子计算来“思考”的价值。

当然,当我们对量子算法的工作原理和如何从基本原理建立新的算法有了具体的了解后,量子计算机的新应用就更容易发现了。从这个角度来看,量子编程是学习如何发现全新应用的一个很好的资源。

1.3.2 量子计算机不能做什么?

像其他形式的专业计算硬件一样,量子计算机不会擅长所有工作。对于某些问题,经典计算机更适用。在为量子设备开发应用时,注意到哪些任务或问题不属于量子计算的范围是有帮助的。

简言之,我们没有任何硬性的规则来快速决定哪些任务最好在经典计算机上运行、哪些任务可以利用量子计算机的优势。例如,大数据式应用的存储和带宽要求很难映射到量子设备上,我们可能只有一个相对较小的量子系统。目前的量子计算机只能记录几十位的输入,随着量子设备被用于更苛刻的任务,这种限制将变得更加重要。尽管我们期望最终能建造出比现在大得多的量子系统,但对于需要大量输入或输出来解决的问题,经典计算机可能永远是首选。

同样,对于严重依赖随机访问大量经典输入集的机器学习应用,在概念上很难用量子计算来解决。也就是说,“可能”有其他机器学习应用更自然地映射到量子计算上。寻找应用量子资源解决机器学习任务的最佳方法的研究工作仍在进行。一般来说,那些输入和输出数据量小,但需要大量计算才能从输入到输出的问题是量子计算机的良好候选问题。

鉴于这些挑战,我们可能会得出这样的结论:量子计算机总是擅长于那些输入和输出量小,但两者之间计算量非常大的任务。像“量子并行性”这样的概念在媒体上很流行,量子计算机有时甚至被描述为使用平行宇宙来计算。

注意 “平行宇宙”的概念是一个很好的类比示例,它可以帮助理解量子概念,但如果走向极端就会导致非理性。把量子计算的不同部分看作处在互不影响的多个宇宙中,有时是有帮助的,但这种描述让我们更难思考在本书中将要学习的一些效应,比如干扰。如果走得太远,平行宇宙的比喻也会让人觉得量子计算的方式更接近于《星际迷航》这样的科幻剧中特别充满激情和乐趣的情节,而不是现实。

然而,这未能告诉大家,如何使用量子效应从量子设备中提取有用的答案并不总是显而易见的,即使量子设备的状态似乎包含所需的输出。例如,使用经典计算机对一个整数 N 进行因数分解的一种方法是列出每个“潜在的”因数,并检查它是否真的是一个因数。

1.令 i =2。

2.检查 N / i 的余数是否为零:

- 如果是,则返回 i N 的因数;

- 如果不是,则递增 i 并循环。

我们可以通过使用大量不同的经典计算机来加速这个经典算法,每个我们想尝试的潜在因数都使用一台计算机。也就是说,这个问题很容易被并行化。一台量子计算机可以在同一设备内尝试每个潜在因数,但事实证明,这还不足以使因数分解比经典方法更快。如果我们在量子计算机上使用这种方法,输出将是随机选择的潜在因数之一。实际正确的因数会出现的概率约为 pg25a ,这并不比经典算法好。

不过,正如我们在第12章中所看到的,我们可以利用其他量子效应,用量子计算机对整数进行因数分解,其速度比那些著名的经典因数分解算法还要快。舒尔算法所做的大部分繁重工作都是为了确保最后测出正确因数的概率远远大于测出错误因数的概率。以这种方式消除不正确的答案是量子编程的大部分艺术所在。对于我们可能想要解决的所有问题,这并不容易,甚至不可能做到。

为了更具体地了解量子计算机能做什么、不能做什么,以及如何在这些挑战下用量子计算机做“很酷”的事情,采取更具体的方法是有帮助的。因此,让我们思考一下什么是量子程序,以便着手编写自己的程序。 BPiHM12FA5p6kaZ4iTHnRLvkw8LXZDrI2AUbmUULx7TtaDT4ILOWv22hSm9zjLRh

点击中间区域
呼出菜单
上一章
目录
下一章
×