描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302550389
本书首先详细阐释了量子计算的概念和原理以及可以应用的领域。你将看到如何使用量子计算来改进计算机处理的经典方法,并将经典算法转换为量子算法。然后,你将探索IBM生态系统,该系统将在量子编辑器(Quantum Composer)和Qiskit的帮助下促进量子开发。在学习这些章节时,你将理解如何在量子处理器上实现算法以及如何实际执行量子计算。
通读本书,你将会了解如何创建自己的量子程序,探索量子计算对你的业务和职业的影响,并先于他人开拓你未来的编程生涯。
本书详细阐述了与量子编程相关的基本解决方案,主要包括量子计算概述,量子比特,量子态、量子寄存器和测量,使用量子门演化量子态,量子电路,量子编辑器,OpenQASM,Qiskit和量子计算机模拟,量子AND门和量子OR门,Grover算法,量子傅里叶变换,Shor算法,量子错误和量子纠错,以及量子计算的未来等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
第1章 量子计算概述 1
1.1 技术要求 1
1.2 量子计算机 1
1.2.1 量子计算机的用途 2
1.2.2 专家观点:量子计算的重要性 3
1.3 量子计算的历史、现状和未来 4
1.3.1 量子计算的历史 4
1.3.2 量子计算的现状 4
1.3.3 量子计算的未来 5
1.3.4 专家观点:量子计算的未来前景 5
1.4 设置并运行Python代码示例 5
1.4.1 获取书籍代码 6
1.4.2 设置Jupyter Notebook 6
1.5 设置并运行IBM QX示例 7
1.5.1 简单示例:Hello Quantum World 7
1.5.2 关于API密钥 9
1.6 设置并运行Qiskit示例 9
1.7 小结 10
1.8 练习和问题 11
第2章 量子比特 13
2.1 技术要求 13
2.2 量子比特及其存储 13
2.3 模拟量子比特 14
2.3.1 关于 |”0″ > 和 |”1″ > 15
2.3.2 关于 |”0″ > 和 |”1″ > 的组合 15
2.4 量子比特的3种不同表示形式 17
2.4.1 零基态和一基态的补充说明 18
2.4.2 加和减基态 18
2.4.3 顺时针和逆时针基态 19
2.5 布洛赫球面 19
2.5.1 在布洛赫球面上的 |”0″ > 和 |”1″ > 等基态 20
2.5.2 量子比特的布洛赫坐标 20
2.5.3 在布洛赫球面上绘制布洛赫坐标 21
2.6 量子比特的叠加和测量 23
2.6.1 量子比特的量子叠加 23
2.6.2 量子比特的量子测量 23
2.6.3 布洛赫球上单个量子比特的测量 25
2.7 小结 26
2.8 练习和问题 26
第3章 量子态、量子寄存器和测量 27
3.1 技术要求 27
3.2 量子态和寄存器 27
3.3 可分离状态 29
3.4 量子纠缠 31
3.5 量子测量和纠缠 32
3.6 退相干,T1和T2 35
3.6.1 退相干 35
3.6.2 关于T1和T2 36
3.7 小结 38
3.8 练习和问题 38
第4章 使用量子门演化量子态 39
4.1 技术要求 39
4.2 门 39
4.2.1 经典门 39
4.2.2 量子门 40
4.3 在状态上操作的门 41
4.4 单量子比特门 42
4.4.1 哈达玛门(H) 44
4.4.2 泡利门(X,Y,Z) 46
4.4.3 相门(S)和π/8门(T) 50
4.5 多量子比特门 55
4.5.1 关于CNOT门 55
4.5.2 CNOT门的Python代码 57
4.5.3 可以选择控制量子比特和目标量子比特的CNOT 58
4.6 小结 58
4.7 练习和问题 59
第5章 量子电路 61
5.1 技术要求 61
5.2 量子电路和量子电路图 61
5.3 使用Qiskit生成量子电路 64
5.3.1 在Qiskit中的单量子比特电路 64
5.3.2 关于Qiskit的QuantumCircuit类和通用门方法 64
5.3.3 在Qiskit中的多量子比特门 65
5.3.4 在Qiskit电路中的经典寄存器 65
5.3.5 在Qiskit电路中的测量 66
5.4 可逆计算 66
5.5 有用的量子电路 68
5.5.1 使用X门准备任何二进制输入 69
5.5.2 交换两个量子比特 70
5.6 小结 71
5.7 练习和问题 71
第6章 量子编辑器 73
6.1 技术要求 73
6.2 量子编辑器 73
6.2.1 硬件 75
6.2.2 门、操作和屏障 76
6.3 将量子电路转换到量子编辑器中 79
6.4 通过模拟或在Quantum Composer硬件上执行量子电路 81
6.4.1 通过模拟执行量子电路 82
6.4.2 在量子计算机硬件上执行量子电路 84
6.5 小结 85
6.6 练习和问题 85
第7章 OpenQASM 87
7.1 技术要求 87
7.2 关于OpenQASM 87
7.3 将OpenQASM程序转换为量子乐谱 89
7.3.1 使用OpenQASM取反一个量子比特 89
7.3.2使用OpenQASM将门应用于两个量子比特,并测量第一个量子比特 90
7.4 在OpenQASM 2.0程序中表示量子乐谱 91
7.5 使用OpenQASM与IBM QX连接 94
7.6 关于OpenQASM的高级用法 96
7.6.1 重置量子比特 96
7.6.2 使用if语句 97
7.6.3 用户定义的门和基本门 97
7.7 小结 99
7.8 练习和问题 99
第8章 Qiskit和量子计算机模拟 103
8.1 技术要求 103
8.2 安装和使用Qiskit 103
8.2.1 测试Qiskit安装 104
8.2.2 在Qiskit中使用OpenQASM 105
8.2.3 认识和安装Qiskit Aqua 107
8.3 关于Qiskit Terra顶点项目 108
8.3.1 关于MIDI规格 109
8.3.2 关于MIDI的量子计算 109
8.4 小结 116
8.5 练习和问题 117
第9章 量子AND门和量子OR门 119
9.1 技术要求 119
9.2 布尔可满足性问题 119
9.2.1 关于3SAT经典实现 122
9.2.2 有趣的3SAT 123
9.3 量子AND和OR 124
9.3.1 关于Toffoli门—量子AND门 124
9.3.2 量子OR门 127
9.3.3 多个量子比特上的量子AND和量子OR 131
9.4 关于3SAT量子电路的实现 132
9.5 小结 135
9.6 练习和问题 135
第10章 Grover算法 137
10.1 技术要求 137
10.2 Grover算法概述和用例 137
10.2.1 Grover算法概述 137
10.2.2 Grover算法的步骤 139
10.3 使用3SAT作为Grover算法checker 141
10.3.1 在Qiskit中的2个和3个量子比特的量子AND 142
10.3.2 在Qiskit中的2个和3个量子比特的量子OR 142
10.3.3 测试门及其可逆性 144
10.4 使用Grover算法求解3SAT问题 148
10.4.1 在Qiskit中的oracle实现 149
10.4.2 关于mover步骤的实现 157
10.4.3 完整的算法设置 160
10.4.4 在Qiskit上运行算法 160
10.5 小结 161
10.6 练习和问题 162
第11章 量子傅里叶变换 163
11.1 经典傅里叶变换 163
11.2 傅里叶变换的作用 167
11.3 量子傅里叶变换的实现及其电路 171
11.3.1 量子傅里叶变换的实现 172
11.3.2 量子傅里叶变换电路 174
11.4 在IBM QX中实现QFT电路 175
11.4.1 在IBM QX中实现REV门 175
11.4.2 在IBM QX中实现Rk门 175
11.4.3 在IBM QX中实现1-qubit的QFT电路 177
11.4.4 在IBM QX中实现2-qubit的QFT电路 177
11.4.5 在IBM QX中实现3-qubit的QFT电路 178
11.5 泛化 179
11.6 小结 179
11.7 练习和问题 179
第12章 Shor算法 181
12.1 关于Shor算法 181
12.1.1 Shor算法的作用 181
12.1.2 被颠覆的现代密码学 182
12.2 Shor算法概述 183
12.2.1 Shor算法描述 185
12.2.2 以符号/数学方式描述的Shor算法 186
12.3 Shor算法示例 186
12.3.1 示例:N为素数且N = 7 187
12.3.2 示例:N是两个素数的乘积,N较小且N = 15 187
12.3.3 示例:N是两个素数的乘积,N较大且N = 2257 187
12.3.4 示例:N是一个素数和一个非素数的乘积且N = 837 188
12.4 在Python中实现Shor算法 188
12.4.1 Shor算法的经典实现 189
12.4.2 Shor算法的量子实现 190
12.4.3 在量子计算机上的示例实现:N = 15,a = 2 191
12.4.4 在量子计算机上的示例实现:N = 35,a = 8 205
12.5 小结 209
12.6 练习和问题 209
第13章 量子错误和量子纠错 211
13.1 量子错误 211
13.1.1 比特翻转错误演示 211
13.1.2 在模拟器中模拟错误 213
13.2 量子纠错 215
13.2.1 单比特翻转的纠错 216
13.2.2 单相位翻转的量子纠错 221
13.2.3 关于Shor代码 221
13.3 小结 221
13.4 练习和问题 222
第14章 量子计算的未来 223
14.1 量子计算的关键概念 225
14.2 量子计算的实用领域 226
14.3 对量子计算的悲观看法 226
14.4 对量子计算的乐观看法 226
14.5 本书关于量子计算的结论 227
附录A 229
A.1 实用数学基础 229
A.1.1 求和 229
A.1.2 复数 230
A.1.3 线性代数 230
A.2 从矩阵角度看量子比特、状态和门 236
A.2.1 量子比特 236
A.2.2 门 237
A.2.3 量子测量 240
量子计算机可能在计算能力方面带来巨大的变化。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,然后按屏幕提示操作。
下载文件后,请确保使用最新版本解压缩或解压缩文件夹:
l WinRAR/7-Zip(Windows系统)
l Zipeg/iZip/UnRarX(Mac系统)
l 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博士,正是她让我有机会审阅这本令人兴奋的著作。
评论
还没有评论。