图书前言

前  言

量子计算机可能在计算能力方面带来巨大的变化。IBM Research首次向公众公开了量子计算,从而可以通过云从任何台式机或移动设备访问IBM QX。本书配有最前沿的实际方案,可帮助你通过对现实需求进行编程来了解量子计算的功能。

本书首先详细阐释了量子计算的概念和原理以及可以应用的领域。你将看到如何使用量子计算来改进计算机处理的经典方法,并将经典算法转换为量子算法。然后,你将探索IBM生态系统,该系统将在量子编辑器(Quantum Composer)和Qiskit的帮助下促进量子开发。在学习这些章节时,你将理解如何在量子处理器上实现算法以及如何实际执行量子计算。

通读本书,你将会了解如何创建自己的量子程序,探索量子计算对你的业务和职业的影响,并先于他人开拓你未来的编程生涯。

本书适合的读者

如果你是对学习量子计算感兴趣的开发人员或数据科学家,那么此书非常适合你。你应该对Python语言有基本的了解,但是不需要物理、量子力学或高级数学知识。

本书内容综述

本书共分14章,各章内容分述如下。

第1章“量子计算概述”,详细阐释了与经典计算相反的量子计算,重点介绍了与经典计算机相比量子计算的潜在优势。然后,我们简要回顾了经典计算和量子计算的历史,并介绍了当前量子计算的最高水平。

第2章“量子比特”,详细解释了为什么量子比特是量子计算的基石以及在Python中进行模拟的代码。它讨论了叠加,并使用Python代码探索了单个量子比特的三种不同表示形式。此外,本章还介绍了布洛赫球面,并描述了单量子比特的叠加和测量。

第3章“量子态、量子寄存器和测量”,介绍了经典寄存器的量子版本,即量子寄存器。本章讨论了量子的可分离状态和纠缠,并且使用Python实现了对多个可能纠缠的量子比特的量子测量。最后,本章还详细阐释了量子退相干和量化退相干的参数。

第4章“使用量子门演化量子态”,详细介绍了大多数量子计算中常用的门:I、X、Y、Z、H、S、S?、T、T?和CNOT,它们形成通用门集,可以组合起来执行任何量子计算。本章还提供了这些常用量子门的Python实现,并提供了在Python中将这些门应用于各种量子状态的示例。

第5章“量子电路”,进一步拓展了量子门的概念,介绍了量子电路(即经典电路的量子模拟)。它讨论了量子门如何复制经典门,并详细讨论了量子电路的可视表示形式,该可视表示形式可用于轻松定义量子电路,而无需参考数学或使用编程语言。

第6章“量子编辑器”,详细介绍了如何在IBM QX中使用量子编辑器这个交互界面,通过量子乐谱创建量子电路。量子电路是表示电路的图形方式。通过量子编辑器,你可以定义自己的电路,并且在IBM QX硬件或软件模拟器上实现。本章详细介绍了如何将Python编码示例转换为量子编辑器表示形式,并在IBM QX硬件上运行它们。

第7章“使用OpenQASM”,详细介绍了开放式量子汇编语言(OpenQASM)。你可以在IBM QX中使用该语言。本章复习了前几章中定义的一些量子电路,并在OpenQASM语言中重新定义它们。本章重点介绍了OpenQASM的规范和实现,并且提供了使用OpenQASM在IBM QX上重新运行电路的示例。

第8章“Qiskit和量子计算机模拟”,详细介绍了量子信息软件工具包(Qiskit),重点介绍如何使用它通过云在IBM QX中运行程序以及其量子模拟功能。本章通过一个使用Qiskit的顶点项目,说明了量子电路、测量和Qiskit用法的概念,同时提供了使用量子计算机表示音乐和弦的有用演示。

第9章“量子AND门和量子OR门”,详细探讨了经典布尔逻辑门的一些量子等价物,目的是能够具体说明要与Grover算法和其他算法一起使用的量子计算机要解决的逻辑问题。

第10章“Grover算法”,详细介绍了Grover算法的实现,展示了Grover算法在3SAT中的工作原理。最后,本章还提供了OpenQASM、Qiskit和量子乐谱中Grover算法的实现。

第11章“量子傅立叶变换”,详细介绍了量子傅立叶变换,它是许多重要的量子算法(包括Shor算法)的子例程。本章介绍了如何使用经典算法来计算离散傅里叶变换,即在经典计算机上表示信号的傅立叶变换。最后,在OpenQASM、Qiskit和量子乐谱中给出了量子傅立叶变换算法。

第12章“Shor算法”,详细探讨了Shor算法。它解释了素因数分解以及它与现代密码学的关系,执行素数分解的算法的经典实现,并且对比了Shor算法的原理。最后,本章提供了Qiskit中Shor算法的实现。

第13章“量子纠错”,描述了量子错误传播的问题,并说明了量子纠错(QEC)的必要性。本章还提供了一种简单的QEC算法的实现。

第14章“量子计算的未来”,回顾了我们所学到的知识,并讨论了可能会受到量子计算影响的领域。量子计算所带来的变化将对医学、替代能源、全球金融和全球经济等产生影响。

本书在各章末尾提供了相应的练习和问题,如需答案,请访问:

https://www.packtpub.com/sites/default/files/downloads/Assessments.pdf

充分利用本书

本书假定读者熟悉Python编程语言并且使用Python 3.4+。读者不需要具有量子力学、物理学或高级数学知识,但应该对高中阶段的代数有所了解。要充分利用本书,请阅读本书提供的Jupyter Notebook中的代码和练习,并回答每一章末尾提出的问题。

下载示例代码文件

读者可以从www.packt.com下载本书的示例代码文件。具体步骤如下:

(1)登录或注册www.packt.com。

(2)选择Support(支持)选项卡。

(3)单击Code Downloads&Errata(代码下载和勘误表)。

(4)在Search(搜索)框中输入图书名称Mastering Quantum Computing with IBM QX,然后按屏幕提示操作。

下载文件后,请确保使用最新版本解压缩或解压缩文件夹:

? WinRAR/7-Zip(Windows系统)

? Zipeg/iZip/UnRarX(Mac系统)

? 7-Zip/PeaZip(Linux系统)

该书的代码包也已经在GitHub上托管,网址如下:

https://github.com/PacktPublishing/Mastering-Quantum-Computing-with-

IBM-QX

如果代码有更新,那么它将在现有的GitHub存储库中进行更新。

下载彩色图像

我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。其链接地址如下:

https://www.packtpub.com/sites/default/files/downloads/

9781789136432_ColorImages.pdf

本书约定

本书将可以看到许多区分不同类型信息的文本样式。以下是这些样式的一些示例以及对它们的含义的解释。

(1)CodeInText:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄等。以下段落就是一个示例:

和整数或浮点(实)数乘法一样,量子门支持乘法结合律(Associative Law of Multiplication),这意味着,只要保持顺序不变,就可以对乘法进行分组而不会出现问题。因此,在上述示例中,XYZ |"0"> = (XYZ) |"0"> = (XY)(Z |"0">) = X(YZ |"0">)。

(2)代码块显示如下:

from qiskit.tools.visualization import plot_histogram 

plot_histogram(job_exp.result().get_counts(qc))

(3)当我们希望引起你对代码块特定部分的注意时,相关的行或项目将以粗体显示:

import time

q = qiskit.QuantumRegister(5)

c = qiskit.ClassicalRegister(5)

qc = qiskit.QuantumCircuit(q, c)

(4)任何命令行输入或输出都采用如下所示的粗体代码形式:

cd Mastering-Quantum-Computing-with-IBM-QX

(5)新术语和重要单词以粗体显示,并提供了中英文对照的形式:

该基态也被描述为计算基态(Computational Basis)、z基态(z Basis)或标准基态(Standard Basis),所有这些都是 | "0" > 和 | "1" > 基态的同义词。

   该图标旁边的文字表示警告或重要的信息。

   该图标旁边的文字表示提示或技巧。

?

关于作者

Christine Corbett Moran博士是NASA JPL的研究人员和工程师,专门研究网络安全。她还是加州理工学院的客座科学家,专门研究天体物理学。她的研究涉及基础物理学和计算机科学,并且发表了有关天体物理学、天文学、人工智能和量子计算的同行评审论文,获得了数以千计的引用。她的软件产品范围从iOS应用程序到量子计算模拟器,已经获得了数百万的下载量。她拥有苏黎世大学的博士学位和天体物理学硕士学位,并拥有计算机科学与工程专业学士学位。此外,她还拥有麻省理工学院学士学位。可以在Twitter上通过 @corbett上找到她。

我要感谢我的丈夫Casey Handmer博士的支持,以及Packt出版社编辑的鼓励。我还要感谢South Pole Telescope的合作,它使我有机会在2016年担任南极洲的冬季科学家10.5个月;正是在南极漫长的冬季,我第一次找到了发掘IBM QX的时间。

关于审稿者

Edward L. Platt是密歇根大学信息学院和复杂系统研究中心的研究员。他发表了有关大规模集体行动、社交网络和在线社区的研究。他还曾担任麻省理工学院公民媒体中心的研究员和软件开发人员。他为许多免费/开源软件项目做出了贡献,包括用于媒体分析、网络科学和合作组织的工具。他还进行了量子计算和容错方面的研究。他拥有滑铁卢大学应用数学硕士学位和麻省理工学院的计算机科学和物理学学士学位。他是Network Science in Python with NetworkX一书的作者。

我要感谢Seth Lloyd和Paul Penfield向我介绍了信息和熵。感谢Edward Farhi、Peter Shor和Frank Wilhelm-Mauch在量子计算方面的指导。同时还要感谢我的博士导师Daniel M. Romero。

感谢Andy Brosius和Persephone Hernandez-Vogt带给我的欢乐,美味巧克力和全力支持。最后还要感谢Christine Corbett Moran博士,正是她让我有机会审阅这本令人兴奋的著作。