量子计算机编程:从入门到实践
作者:[美] 埃里克 R. 约翰斯顿,[英] 尼古拉斯 哈里根,[西] 梅塞德丝 希梅诺-塞戈维亚 著
出版时间:2021年版
内容简介
量子计算被誉为下一代编程范式。随着一些量子计算平台和模拟器向公众开放,普通程序员也可以尝试编写量子计算程序,感受前沿科技的无穷魅力。《量子计算机编程:从入门到实践》不会解释晦涩的量子力学理论,而会采用直观的圆形表示法描绘量子比特,并从实践角度展示如何编写有趣的量子计算程序。通过《量子计算机编程:从入门到实践》提供的在线实验室网站,你可以动手运行书中的JavaScript示例代码。全书分为四大部分,分别介绍量子计算机编程的核心概念、原语、应用和发展趋势。你将了解量子隐形传态、量子算术运算、量子傅里叶变换和量子相位估计等知识,以及量子搜索、量子超采样、量子机器学习等高级主题。
目录
译者序 xi
前言 xiii
第 1章 入门 1
1.1 所需背景 1
1.2 何谓QPU 2
1.3 动手实践 3
1.4 原生QPU指令 6
1.4.1 模拟器的上限 7
1.4.2 硬件的上限 7
1.5 QPU与GPU的共同点 8
第 2章 单个量子比特 11
2.1 物理量子比特概览 12
2.2 圆形表示法 15
2.2.1 圆的大小 15
2.2.2 圆的旋转 16
2.3 第 一批QPU指令 17
2.3.1 QPU指令:NOT 17
2.3.2 QPU指令:HAD 18
2.3.3 QPU 指令:READ和WRITE 19
2.3.4 实践:完全随机的比特 20
2.3.5 QPU 指令:PHASE(θ) 23
2.3.6 QPU 指令:ROTX(θ) 和ROTY(θ) 23
2.4 复制:缺失的指令 24
2.5 组合QPU 指令 24
2.6 实践:量子监听检测 27
2.7 小结 30
第3章 多个量子比特 31
3.1 多量子比特寄存器的圆形表示法 31
3.2 绘制多量子比特寄存器 34
3.3 多量子比特寄存器中的单量子比特运算 34
3.4 可视化更多数量的量子比特 37
3.5 QPU 指令:CNOT 38
3.6 实践:利用贝尔对实现共享随机性 41
3.7 QPU 指令:CPHASE(θ) 和CZ 42
3.8 QPU 指令:CCNOT 45
3.9 QPU 指令:SWAP 和CSWAP 46
3.10 构造任意的条件运算 50
3.11 实践:远程控制随机 53
3.12 小结 55
第4章 量子隐形传态 56
4.1 动手尝试 56
4.2 程序步骤 61
4.2.1 步骤1:创建纠缠对 61
4.2.2 步骤2:准备有效载荷 62
4.2.3 步骤3.1:将有效载荷链接到纠缠对 62
4.2.4 步骤3.2:将有效载荷置于叠加态 63
4.2.5 步骤3.3:读取Alice 的两个量子比特 64
4.2.6 步骤4:接收和转换 64
4.2.7 步骤5:验证结果 65
4.3 解释结果 66
4.4 如何利用隐形传态 67
4.5 著名的隐形传态事故带来的乐趣 67
第5章 量子算术与逻辑 71
5.1 奇怪的不同 71
5.2 QPU 中的算术运算 73
5.3 两个量子整数相加 76
5.4 负整数 77
5.5 实践:更复杂的数学运算 78
5.6 更多量子运算 79
5.6.1 量子条件执行 79
5.6.2 相位编码结果 80
5.7 可逆性和临时量子比特 82
5.8 反计算 84
5.9 QPU 中的逻辑运算 86
5.10 小结 88
第6章 振幅放大 89
6.1 实践:在相位和强度之间相互转换 89
6.2 振幅放大迭代 92
6.3 更多迭代? 93
6.4 多个标记值 95
6.5 使用振幅放大 100
6.5.1 作为和估计的AA 与QFT 100
6.5.2 用AA 加速传统算法 100
6.6 QPU 内部 101
6.7 小结 103
第7章 量子傅里叶变换 104
7.1 隐藏模式 104
7.2 QFT、DFT 和FFT 106
7.3 QPU 寄存器中的频率 106
7.4 DFT 110
7.4.1 实数DFT 输入与复数DFT 输入 111
7.4.2 DFT 一切 113
7.5 使用QFT 117
7.6 QPU 内部 122
7.6.1 直观理解 124
7.6.2 逐步运算 124
7.7 小结 128
第8章 量子相位估计 129
8.1 了解QPU 运算 129
8.2 本征相位揭示有用信息 130
8.3 相位估计的作用 131
8.4 如何使用相位估计 132
8.4.1 输入 132
8.4.2 输出 134
8.5 使用细节 135
8.5.1 选择输出寄存器的大小 135
8.5.2 复杂度 136
8.5.3 条件运算 136
8.6 实践中的相位估计 136
8.7 QPU 内部 137
8.7.1 直观理解 138
8.7.2 逐步运算 139
8.8 小结 141
第9章 真实的数据 145
9.1 非整型数据 146
9.2 QRAM 147
9.3 向量的编码 150
9.3.1 振幅编码的局限性 153
9.3.2 振幅编码和圆形表示法 154
9.4 矩阵的编码 155
9.4.1 QPU运算如何表示矩阵 155
9.4.2 量子模拟 156
第 10章 量子搜索 160
10.1 相位逻辑 161
10.1.1 构建基本的相位逻辑运算 163
10.1.2 构建复杂的相位逻辑语句 163
10.2 解决逻辑谜题 166
10.3 求解布尔可满足性问题的一般方法 170
10.3.1 实践:一个可满足的3-SAT问题 170
10.3.2 实践:一个不可满足的3-SAT 问题 173
10.4 加速传统算法 175
第 11章 量子超采样 177
11.1 QPU 能为计算机图形学做什么 177
11.2 传统超采样 178
11.3 实践:计算相位编码图像 179
11.3.1 QPU 像素着色器 180
11.3.2 使用PHASE 画图 181
11.3.3 绘制曲线 184
11.4 采样相位编码图像 185
11.5 更有趣的图像 187
11.6 超采样 188
11.7 量子超采样与蒙特卡罗采样 190
11.8 增加颜色 195
11.9 小结 196
第 12章 舒尔分解算法 197
12.1 实践:在QPU上应用舒尔分解算法 198
12.2 算法说明 199
12.2.1 新太阳城需要QPU吗 200
12.2.2 量子方法 201
12.3 逐步操作:分解数字15 203
12.3.1 步骤1:初始化QPU寄存器 204
12.3.2 步骤2:扩展为量子叠加态 205
12.3.3 步骤3:条件乘2 207
12.3.4 步骤4:条件乘4 209
12.3.5 步骤5:QFT 211
12.3.6 步骤6:读取量子结果 213
12.3.7 步骤7:数字逻辑 214
12.3.8 步骤8:检查结果 216
12.4 使用细节 216
12.4.1 求模 216
12.4.2 时间与空间 217
12.4.3 除了2 以外的互质 217
第 13章 量子机器学习 218
13.1 求解线性方程组 219
13.1.1 线性方程组的描述与求解 219
13.1.2 用QPU 解线性方程组 220
13.2 量子主成分分析 228
13.2.1 传统主成分分析 228
13.2.2 用QPU 进行主成分分析 230
13.3 量子支持向量机 233
13.3.1 传统支持向量机 233
13.3.2 用QPU实现支持向量机 236
13.4 其他机器学习应用 238
第 14章 保持领先:文献指引 243
14.1 从圆形表示法到复向量 243
14.2 与术语有关的一些细节和注意事项 245
14.3 测量基 246
14.4 门的分解与编译 247
14.5 隐形传态门 248
14.6 QPU 名人堂 248
14.7 竞赛:量子计算机与传统计算机 249
14.8 基于oracle 的算法研究 249
14.8.1 Deutsch-Jozsa 算法 250
14.8.2 Bernstein-Vazirani算法 250
14.8.3 Simon算法 250
14.9 量子编程语言 251
14.10 量子模拟的前景 252
14.11 纠错与NISQ设备 252
14.12 进一步学习 252
14.12.1 出版物 253
14.12.2 课程讲义 253
14.12.3 在线资源 253
关于作者 254
关于封面 254