新書推薦:
《
掌故家的心事
》
售價:NT$
390.0
《
农为邦本——农业历史与传统中国
》
售價:NT$
340.0
《
郊庙之外:隋唐国家祭祀与宗教 增订版 (三联·哈佛燕京学术丛书)
》
售價:NT$
480.0
《
小麦文明:“黄金石油”争夺战
》
售價:NT$
445.0
《
悬壶杂记全集:老中医多年临证经验总结(套装3册) 中医医案诊疗思路和处方药应用
》
售價:NT$
614.0
《
无法忍受谎言的人:一个调查记者的三十年
》
售價:NT$
290.0
《
战争社会学专论
》
售價:NT$
540.0
《
剑桥意大利戏剧史(剑桥世界戏剧史译丛)
》
售價:NT$
740.0
|
編輯推薦: |
1.本书作者知名,为Google杰出工程师;2.内容通俗易懂,且配有代码实现;3.多位业界知名学者一致推荐;4.面向程序员,方便上手实践。
|
內容簡介: |
本书从程序员的角度介绍了量子计算,是一本适合学生和从业人员阅读的入门书籍。书中使用基于Python和C++开发的开源代码库,用完整的数学推导和经典模拟代码解释了超过25种基本算法。在介绍了量子计算的基础知识后,作者着重讲解了一些基础量子算法和高效模拟它们的基础设施,包括量子隐形传态、超密编码、Bernstein-Vazirani算法和Deutsch-Jozsa算法。高级量子算法的介绍包括量子霸权实验、量子傅里叶变换、相位估计、Shor算法、Grover算法、量子计数、振幅放大、量子随机游走,以及用于门近似的Solovay-Kitaev算法。通过变分量子本征求解器、量子近似优化和NP完备问题的最大割算法以及子集和算法,探索了量子模拟的应用。书中还探讨了程序员生产力、量子噪声、量子纠错,以及量子编程语言、编译器和工具面临的挑战,最后还详细介绍了用于转译的编译器技术。
|
關於作者: |
罗伯特·亨特(Robert Hundt)是Google杰出工程师,机器学习编译器的技术负责人。他曾主导过Google TPU超级计算机、TensorFlow的XLA编译器、开源CUDA编译器的软件开发,还是开源高层次综合工具链XLS的发起人。他拥有38项专利,发表过超过25篇科学论文,是IEEE的高级会员。
|
目錄:
|
目 录
译者序
前言
致谢
第1章 数学基础 1
1.1 复数 1
1.2 狄拉克符号、左矢和右矢 2
1.2.1 内积 3
1.2.2 外积 4
1.3 张量积 4
1.4 酉矩阵和埃尔米特矩阵 5
1.5 公式的埃尔米特伴随 6
1.6 特征值和特征向量 6
1.7 矩阵的迹 7
第2章 量子计算基础 9
2.1 Tensor类 9
2.2 量子比特 12
2.3 量子态 14
2.3.1 量子比特顺序 16
2.3.2 二进制表示 17
2.3.3 成员函数 18
2.3.4 量子态构造函数 20
2.3.5 密度矩阵 22
2.4 辅助函数 22
2.4.1 比特转换 22
2.4.2 比特迭代 23
2.5 算子 23
2.5.1 酉算子 23
2.5.2 基类 24
2.5.3 算子的作用 25
2.5.4 多量子比特 27
2.5.5 算子填充 29
2.6 单量子比特门 30
2.6.1 单位门 30
2.6.2 Pauli矩阵 31
2.6.3 旋转 32
2.6.4 相位门 34
2.6.5 灵活的相位门 35
2.6.6 门的平方根 36
2.6.7 投影算子 38
2.6.8 Hadamard门 39
2.7 受控门 41
2.7.1 受控非门 44
2.7.2 受控–受控非门 44
2.7.3 交换门 45
2.7.4 受控交换门 46
2.8 量子电路表示方法 46
2.9 Bloch球 49
2.10 全局相位 52
2.11 量子纠缠 53
2.11.1 直积态 54
2.11.2 纠缠电路 54
2.11.3 Bell态 56
2.11.4 GHZ态 56
2.11.5 最大纠缠 57
2.12 量子不可克隆定理 57
2.13 对消计算 58
2.14 约化密度矩阵和分迹 60
2.15 测量 63
2.15.1 量子力学的基本假设 63
2.15.2 投影测量 64
2.15.3 实现 66
2.15.4 例子 67
第3章 简单算法 69
3.1 随机数生成器 69
3.2 门的等价 70
3.2.1 门的根的平方就是门 71
3.2.2 倒转受控非门 71
3.2.3 受控Z门 72
3.2.4 非Y门 73
3.2.5 Pauli矩阵的关系 74
3.2.6 改变旋转轴 74
3.2.7 受控–受控门 75
3.2.8 多重受控门 76
3.2.9 受控门的等价 77
3.2.10 交换门 78
3.3 经典算术 78
3.4 交换测试 82
3.5 量子隐形传态 86
3.6 超密编码 90
3.7 Bernstein-Vazirani算法 93
3.8 Deutsch算法 95
3.8.1 问题:区分两种函数 96
3.8.2 构造Uf 98
3.8.3 计算算子 100
3.8.4 实验 101
3.8.5 通用oracle算子 103
3.8.6 Bernstein-Vazirani算法的
oracle形式 103
3.9 Deutsch-Jozsa算法 104
第4章 可扩展、快速仿真 107
4.1 仿真复杂性 107
4.2 量子寄存器 109
4.3 电路 111
4.3.1 量子比特 112
4.3.2 门的作用 113
4.3.3 门 113
4.3.4 伴随门 114
4.3.5 测量 115
4.3.6 交换算子 115
4.3.7 多重受控门的构建 116
4.3.8 例子 117
4.4 门的快速作用 118
4.5 加速门的作用 122
4.5.1 电路的最终实现 124
4.5.2 过早优化,第一步 125
4.6 稀疏表示 127
第5章 超越经典 130
5.1 1万年、2天还是200s 131
5.2 量子随机电路算法 131
5.3 电路构造 133
5.4 估计 136
5.5 评估 138
第6章 复杂算法 140
6.1 相位反冲 141
6.2 量子傅里叶变换 142
6.2.1 二进制分数 142
6.2.2 相位门 144
6.2.3 量子傅里叶变换理论 144
6.2.4 双量子比特量子傅里叶
变换 146
6.2.5 量子傅里叶变换算子 148
6.2.6 在线模拟 149
6.3 量子算术 150
6.4 相位估计 157
6.4.1 特征值与特征向量 157
6.4.2 相位估计理论 157
6.4.3 推导细节 158
6.4.4 实现 162
6.5 Shor算法 164
6.5.1 模运算 164
6.5.2 最大公因数 165
6.5.3 因数分解 165
6.5.4 周期寻找 167
6.5.5 Playground 168
6.6 求阶 170
6.6.1 主程序 174
6.6.2 支撑程序 176
6.6.3 模加法 178
6.6.4 受控模乘法 180
6.6.5 连分数 181
6.6.6 实验 182
6.7 Grover算法 183
6.7.1 高层次概述 183
6.7.2 相位反转 184
6.7.3 关于均值的反转 185
6.7.4 简单的数字例子 186
6.7.5 双量子比特的例子 186
6.7.6 迭代次数 188
6.7.7 相位反转的实现 190
6.7.8 相位反转算子 191
6.7.9 关于均值的反转的实现 191
6.7.10 关于均值反转的算子 194
6.7.11 Grover算法的实现 195
6.8 振幅放大 198
6.9 量子计数 200
6.10 量子随机游走 204
6.10.1 一维游走 204
6.10.2 付诸行动 206
6.11 变分量子本征求解器 208
6.11.1 系统演化 209
6.11.2 变分原理 210
6.11.3 用Pauli基测量 211
6.11.4 VQE算法 213
6.11.5 测量特征值 215
6.11.6 多量子比特 217
6.12 量子近似优化算法 220
6.13 最大割算法 221
6.13.1 NP算法的Ising公式 221
6.13.2 最大割/最小割 221
6.13.3 构造图 223
6.13.4 计算最大割 223
6.13.5 构造哈密顿量 225
6.13.6 窥视法的VQE 227
6.14 子集和算法 228
6.14.1 实现 229
6.14.2 实验 230
6.15 Solovay–Kitaev定理与算法 231
6.15.1 通用门 232
6.15.2 SU(2) 232
6.15.3 Bloch球的角度和轴 232
6.15.4 相似性度量 234
6.15.5 预计算门 234
6.15.6 算法 235
6.15.7 平衡的群交换子 236
6.15.8 评估 239
6.15.9 随机门序列 240
第7章 量子纠错 242
7.1 量子噪声 242
7.1.1 量子操作 244
7.1.2 比特翻转和相位翻转信道 245
7.1.3 去极化信道 245
7.1.4 振幅阻尼和相位阻尼 246
7.1.5 非精确门 246
7.2 量子纠错理论 247
7.2.1 量子重复码 248
7.2.2 纠正比特翻转错误 249
7.2.3 纠正相位翻转错误 251
7.3 9量子比特Shor码 252
第8章 量子编程语言、编译器和
工具 254
8.1 量子编译面临的挑战 255
8.2 量子编程模型 255
8.3 量子编程语言 256
8.3.1 QASM 257
8.3.2 QCL 257
8.3.3 Scaffold 259
8.3.4 Q语言 260
8.3.5 Quipper 261
8.3.6 Silq 262
8.3.7 商业系统 263
8.4 编译器优化 263
8.4.1 经典编译器优化 264
8.4.2 简单门变换 265
8.4.3 门融合 265
8.4.4 门调度 266
8.4.5 窥孔优化 267
8.4.6 高性能模式库 268
8.4.7 逻辑到物理的映射 268
8.4.8 物理门的分解 269
8.5 转译 269
8.5.1 中间表示 270
8.5.2 中间表示节点 270
8.5.3 中间表示基类 271
8.5.4 量子电路扩展 271
8.5.5 电路的电路 272
8.5.6 代码生成 273
8.5.7 QASM 274
8.5.8 LIBQ 275
8.5.9 Cirq 276
8.5.10 开源模拟器 277
附录 稀疏实现 279
参考文献 290
|
內容試閱:
|
前 言 Preface
我认为可以毫不夸张地说,没有人完全理解量子力学。
—Feynman(1965)
许多数学理论给我留下了深刻的印象,这些理论实际上是关于特定算法的。这些理论通常用比今天的计算机科学家使用的等效表达更为冗长和不够自然的数学术语来表述。
—Knuth(1974)
本书是从程序员的角度介绍量子计算的入门指南。大部分概念都通过代码进行解释,因为量子计算中常见的看起来复杂的数学知识在代码中可能会变得非常简单。对于许多程序员来说,阅读代码比阅读复杂的数学符号更容易。代码还可以进行实验,有助于让程序员建立对量子计算基本机制的直觉和理解。我相信这种方法会使入门过程变得高效而有趣。
与其他学习资源不同,本书不会使用现有的软件框架,例如IBM的成熟的Qiskit工具包或Google的Cirq。相反,我们将从头开始建立自己的基础设施—最初基于Python的numpy库。事实证明,学习基础知识只需要几百行代码。这些初始代码虽然速度较慢,但十分明确,易于调试和实验,是学习的绝佳工具。
其次,我们将改进基础设施,使用C++进行加速,并详细介绍一种优雅的稀疏表示方式。我们将引入基本的编译器概念,把电路转译到其他平台(如Qiskit、Cirq等)上。这使得我们能够使用这些系统的高级功能,比如可扩展性能和先进的错误模型。
通常,在介绍量子计算之前会先对复杂的线性代数进行介绍。但是,本书不会按照这个模式来做。许多程序员有坚实的线性代数基础,但是其他人可能缺乏这方面的背景或兴趣。本书的目标是成为一个吸引人的学习资源,而不深入讨论线性代数的细节,因此对上述两个群体都适用。本书假设读者对复数、向量和矩阵有基本的了解。
在第1章中,我们将回顾一些核心概念。随着内容的深入,我们会介绍少量额外的数学概念,这些概念对于理解算法是必要的。我们希望这种格式对线性代数知识薄弱的读者有所帮助,同时对专业人士来说又不会过于浅显。在介绍基本数学概念之后,本书后续内容将按以下方式组织。
在第2章中,我们将介绍量子计算的核心概念,并在Python中使用完整的矩阵和向量实现它们。我们将讨论量子态、算子、纠缠和测量,展示构造、描述和分析量子比特与量子电路的多种方法。量子力学、叠加态、纠缠和测量都是复杂而深奥的话题。但是,在本章中,我们只关注理论计算方面。
在第3章中,我们将介绍基础算法,并利用到目前为止所开发的基础设施。这部分内容以详尽的方式呈现,包括详细的数学推导。
到目前为止,我们所开发的基础设施无法扩展到需要更多量子比特的复杂算法上。在第4章中,我们将详细介绍门的快速作用,并使用C++进行加速。我们将演示稀疏表示如何在某类算法中产生最佳性能结果。本章将引导我们构建高性能的量子模拟器。对基础设施不感兴趣的读者可以浏览或跳过这一章。
在第5章中,我们将阐述量子计算机确实具有超越经典计算机的能力。
第6章将详细介绍量子计算的若干核心算法,例如Grover搜索、量子傅里叶变换、相位估计、量子随机游走、Shor整数分解算法以及变分量子本征求解器等。本章还将详细介绍具有里程碑意义的Solovay–Kitaev算法,该算法可以用小型通用门集中的门来近似构造出任意酉门。前几章所构建的基础足以让我们实现和理解这些神奇的算法。
第7章和第8章则涉及程序员生产力方面的实际问题。我们将讨论量子纠错,这对于量子计算的可行性是至关重要的。我们还将讨论量子编程语言设计、编译器和工具,以进一步提高程序员的生产力。
附录包含正文中没有涉及的有趣材料。具体而言,它包含对稀疏模拟基础设施的详细描述。
源代码
本书中的大部分内容都将同时通过数学和代码进行解释。为了避免将本书变成一个庞大的代码清单,我们使用诸如[...]之类的结构来替代枯燥或重复的代码片段。我们通常会省略掉诸如Python的import语句或C++的#include指令之类的代码。完整的源代码按宽松的Apache许可证托管在GitHub(https://github.com/qcc4cp/qcc)上并附有下载、构建和运行的说明。
欢迎大家提出评论和建议。代码排版可能会产生错误,真实的源代码可参见在线存储库。代码也可能不断发展,导致超过此处所发布的内容。
致 谢?Acknowledgements
本书的出版离不开许多人的帮助。Vincent Russo和Timofey Golubev在数学公式、代码和写作方面提出了许多建议。Gabriel Hannon提供了物理学相关概念的宝贵指导。量子计算堆栈交换(Quantum Computing StackExchange)平台是一个非常有帮助的资源和社区,我的一些问题在那里得到了解答。Wes Cowley和Sarah Schedler提供了行文编辑服务,Sue Klefstad制作了令人印象深刻的索引,Eleanor Bolton提供了出色的文本编辑服务。非常感激Tiago Leao向我推荐了Beauregard(2003),这对我实现Shor算法的重构至关重要。Tiago与Rui Maia一起为社区提供了备受赞赏的参考实施方案(Leao, 2021)。
我也要感谢Google的许多同事。Dave Bennet和Michael Dorner审阅了本书的初稿,我相信这对他们来说不是一次愉快的经历。他们的反馈意见有助于将本书转化为实际的学习资源。Fedor Kostritsa在文字、数学公式、推导和代码方面提供了详细的评论,Ton Kalker认真审查了整本书稿,并在数学表达上给予了极大的帮助,这两位同事对严谨性和细节的把控都非常严格。Sergio Boixo和Benjamin Villalonga纠正了我对量子霸权实验的许多误解。Michael Broughton和Craig Gidney帮助我改进了关于Grover算法的部分。Craig还维护着优雅的在线模拟器Quirk。感谢Mark Heffernan、Chris Leary、Rob Springer和Mirko Rossini。最后,还要感谢Aamer Mahmood的大力支持。
毫无例外,我在剑桥大学出版社的联系人都非常优秀。特别感谢编辑Lauren Cowles在整个过程中给予了我极大的指导。
最后,非常感谢我的家人,包括我的爱犬Charlie,感谢他们在我耗费心力写作时给予我的爱、耐心和支持。
|
|