描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111631293
近年来物理实验领域的快速发展,使人们普遍期望在10~20年内实现规模大、功能全的量子计算机硬件。然而,要发挥量子计算的超级计算能力,仅仅依靠量子硬件是不够的,量子软件也必须发挥关键作用。目前广泛使用的软件开发技术不能直接应用于量子计算机,经典世界和量子世界的本质差异意味着需要新的技术来为量子计算机编程。
本书对量子编程这一课题进行了系统和详尽的探索,将研究重点放在不同量子编程语言和技术所广泛使用的基础概念、方法和数学工具上。全书从量子力学和量子计算的基础概念开始,详细介绍了多种量子程序结构和一系列量子编程模型。此外,还系统地讨论了量子程序的语义、逻辑和分析与验证技术。
本书特色
系统性地阐释量子编程理论,一步步揭开量子计算的神秘面纱。
包含许多用于开发、分析和验证量子程序和量子加密协议的方法、技术和工具,对于学术界和工业界的研究者和开发人员都极具价值。
涵盖量子力学、数学和计算机科学的相关预备知识,并指出其在量子工程和物理学中的潜在应用,呈现了量子编程的跨学科特性。
本书讨论了如何扩展当前计算机的新程序设计方法和技术,以利用量子计算机的独特能力。相比于现有计算机系统,量子计算机在处理速度上具有显著优势。世界各地的政府和企业都投入了大量资金,希望建造实用的量子计算机。本书结合作者在量子计算领域多年的研究经验,并辅以大量的例子和插图,介绍了量子编程语言及其所需的重要工具和技术,对于学者、研究人员和开发人员来说都是非常宝贵的参考资料。
出版者的话
序言一
序言二
前言
致谢
第一部分 引言和预备知识
第 1 章 引言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 量子编程研究简史 . . . . . . . . . . . . . . . 2
1.1.1 量子编程语言的设计. . . . . . . . . .2
1.1.2 量子编程语言的语义. . . . . . . . . .3
1.1.3 量子程序的验证和分析 . . . . . . . 3
1.2 量子编程的方法 . . . . . . . . . . . . . . . . . 4
1.2.1 数据叠加——带经典控制的量子程序 . . . . . . . . . . . . . . . . . . . . 4
1.2.2 程序叠加——带量子控制的量子程序 . . . . . . . . . . . . . . . . . . . . 5
1.3 全书结构. . . . . . . . . . . . . . . . . . . . . . . . .5
第 2 章 预备知识 . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1 量子力学. . . . . . . . . . . . . . . . . . . . . . . . .8
2.1.1 希尔伯特空间 . . . . . . . . . . . . . . . . 8
2.1.2 线性算子 . . . . . . . . . . . . . . . . . . . 12
2.1.3 幺正变换 . . . . . . . . . . . . . . . . . . . 14
2.1.4 量子测量 . . . . . . . . . . . . . . . . . . . 16
2.1.5 希尔伯特空间的张量积 . . . . . . 18
2.1.6 密度算子 . . . . . . . . . . . . . . . . . . . 20
2.1.7 量子操作 . . . . . . . . . . . . . . . . . . . 22
2.2 量子线路 . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.1 基本定义 . . . . . . . . . . . . . . . . . . . 24
2.2.2 单量子比特门 . . . . . . . . . . . . . . .26
2.2.3 受控门 . . . . . . . . . . . . . . . . . . . . . 27
2.2.4 量子多路复用器. . . . . . . . . . . . .29
2.2.5 量子门的通用性. . . . . . . . . . . . .31
2.2.6 量子线路的测量. . . . . . . . . . . . .31
2.3 量子算法 . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.1 量子并行性与量子干涉 . . . . . . 33
2.3.2 Deutsch-Jozsa 算法 . . . . . . . . . 35
2.3.3 Grover 搜索算法 . . . . . . . . . . . . 36
2.3.4 量子游走 . . . . . . . . . . . . . . . . . . . 39
2.3.5 量子游走搜索算法. . . . . . . . . . .42
2.3.6 量子傅里叶变换. . . . . . . . . . . . .44
2.3.7 相位估计 . . . . . . . . . . . . . . . . . . . 45
2.4 文献注解 . . . . . . . . . . . . . . . . . . . . . . . 48
第二部分 带经典控制的量子程序
第 3 章 量子程序的语法和语义. . . . . . . . .50
3.1 语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2 操作语义 . . . . . . . . . . . . . . . . . . . . . . . 53
3.3 指称语义 . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.1 语义函数的基本属性 . . . . . . . . 61
3.3.2 量子域 . . . . . . . . . . . . . . . . . . . . . 62
3.3.3 循环的语义函数. . . . . . . . . . . . .64
3.3.4 量子变量的改变与访问 . . . . . . 65
3.3.5 终止和发散的概率. . . . . . . . . . .66
3.3.6 作为量子操作的语义函数 . . . . 68
3.4 量子编程中的经典递归 . . . . . . . . . 69
3.4.1 语法 . . . . . . . . . . . . . . . . . . . . . . . 70
3.4.2 操作语义 . . . . . . . . . . . . . . . . . . . 71
3.4.3 指称语义 . . . . . . . . . . . . . . . . . . . 71
3.4.4 不动点特性 . . . . . . . . . . . . . . . . . 74
3.5 例子:Grover 量子搜索 . . . . . . . . . 77
3.6 引理的证明 . . . . . . . . . . . . . . . . . . . . . 79
3.7 文献注解 . . . . . . . . . . . . . . . . . . . . . . . 83
第 4 章 量子程序的逻辑 . . . . . . . . . . . . . . . . 85
4.1 量子谓词 . . . . . . . . . . . . . . . . . . . . . . . 85
4.1.1 量子最弱前置条件. . . . . . . . . . .87
4.2 量子程序的 Floyd-Hoare 逻辑. . .91
4.2.1 正确性公式 . . . . . . . . . . . . . . . . . 91
4.2.2 量子程序的最弱前置条件 . . . . 94
4.2.3 部分正确性的证明系统 . . . . . 101
4.2.4 整体正确性的证明系统 . . . . . 107
4.2.5 例子:推理 Grover 算法 . . . . 114
4.3 量子最弱前置条件的可交换性 . . . . . . . . . . . . . . . . . . . . . . 119
4.4 文献注解 . . . . . . . . . . . . . . . . . . . . . . 123
第 5 章 量子程序的分析. . . . . . . . . . . . . . .124
5.1 量子 while 循环的终止性分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.1.1 使用幺正操作作为循环体的量子 while 循环 . . . . . . . . . . . 124
5.1.2 一般性量子 while 循环. . . . .132
5.1.3 例子 . . . . . . . . . . . . . . . . . . . . . . 143
5.2 量子图理论 . . . . . . . . . . . . . . . . . . . . 145
5.2.1 基本定义 . . . . . . . . . . . . . . . . . . 146
5.2.2 末端强连通分量 . . . . . . . . . . . 149
5.2.3 状态希尔伯特空间的分解 . . . 153
5.3 量子马尔可夫链的可达性分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.3.1 可达性概率. . . . . . . . . . . . . . . .158
5.3.2 重复可达性概率 . . . . . . . . . . . 160
5.3.3 持续性概率. . . . . . . . . . . . . . . .163
5.4 引理的证明 . . . . . . . . . . . . . . . . . . . . 165
5.5 文献注解 . . . . . . . . . . . . . . . . . . . . . . 173
第三部分 带量子控制的量子程序
第 6 章 量子 case 语句 . . . . . . . . . . . . . . . 176
6.1 case 语句:从经典到量子 . . . . . . 176
6.2 QuGCL:支持量子 case 语句的编程语言 . . . . . . . . . . . . . . . . . . . . . . 179
6.3 量子操作的卫式组合 . . . . . . . . . . 182
6.3.1 幺正算子的卫式组合 . . . . . . . 182
6.3.2 算子值函数. . . . . . . . . . . . . . . .183
6.3.3 算子值函数的卫式组合 . . . . . 185
6.3.4 量子操作的卫式组合 . . . . . . . 187
6.4 QuGCL 程序的语义 . . . . . . . . . . . 189
6.4.1 经典态 . . . . . . . . . . . . . . . . . . . . 189
6.4.2 半经典语义. . . . . . . . . . . . . . . .190
6.4.3 纯量子语义. . . . . . . . . . . . . . . .192
6.4.4 最弱前置条件语义 . . . . . . . . . 194
6.4.5 例子 . . . . . . . . . . . . . . . . . . . . . . 195
6.5 量子选择 . . . . . . . . . . . . . . . . . . . . . . 197
6.5.1 选择:通过概率性从经典转换到量子. . . . . . . . . . . . . . . .197
6.5.2 概率性选择的量子实现 . . . . . 199
6.6 代数法则 . . . . . . . . . . . . . . . . . . . . . . 202
6.7 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
6.7.1 量子游走 . . . . . . . . . . . . . . . . . . 204
6.7.2 量子相位估算. . . . . . . . . . . . . .206
6.8 讨论 . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
6.8.1 量子操作卫式组合的系数 . . . 208
6.8.2 通过子空间控制的量子case 语句 . . . . . . . . . . . . . . . . . 211
6.9 引理、命题和定理的证明 . . . . . . 213
6.10 文献注解 . . . . . . . . . . . . . . . . . . . . . 225
第 7 章 量子递归 . . . . . . . . . . . . . . . . . . . . . . 227
7.1 量子递归程序的语法 . . . . . . . . . . 227
7.2 启发性示例:递归量子游走. . . . 230
7.2.1 递归量子游走的规范 . . . . . . . 230
7.2.2 如何求解递归量子方程 . . . . . 234
7.3 二次量子化 . . . . . . . . . . . . . . . . . . . . 235
7.3.1 多粒子态 . . . . . . . . . . . . . . . . . . 235
7.3.2 Fock 空间 . . . . . . . . . . . . . . . . . 238
7.3.3 Fock 空间的可观测量 . . . . . . 241
7.3.4 Fock 空间的演变. . . . . . . . . . .243
7.3.5 粒子的产生与湮灭 . . . . . . . . . 244
7.4 在自由 Fock 空间中求解递归方程 . . . . . . . . . . . . . . . . . . . . . . 245
7.4.1 自由 Fock 空间中算子的域 . . . . . . . . . . . . . . . . . . . . . . 245
7.4.2 程序模式的语义泛函 . . . . . . . 248
7.4.3 不动点语义. . . . . . . . . . . . . . . .251
7.4.4 语法逼近 . . . . . . . . . . . . . . . . . . 252
7.5 恢复对称性与反对称性 . . . . . . . . 257
7.5.1 对称函数 . . . . . . . . . . . . . . . . . . 258
7.5.2 量子递归程序语义的对称性 . . . . . . . . . . . . . . . . . . . . 259
7.6 量子递归的主系统语义 . . . . . . . . 260
7.7 例子:回顾递归量子游走 . . . . . . 261
7.8 (带量子控制的)量子 while循环 . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
7.9 文献注解 . . . . . . . . . . . . . . . . . . . . . . 268
第四部分 发展前景
第 8 章 发展前景 . . . . . . . . . . . . . . . . . . . . . . 272
8.1 量子程序与量子机 . . . . . . . . . . . . . 272
8.2 量子编程语言的实现 . . . . . . . . . . 273
8.3 函数式量子编程 . . . . . . . . . . . . . . . 274
8.4 量子程序的范畴语义 . . . . . . . . . . 275
8.5 从并行量子程序到量子并行 . . . 275
8.6 量子编程中的纠缠 . . . . . . . . . . . . . 276
8.7 模型检测量子系统 . . . . . . . . . . . . . 277
8.8 应用于物理学的量子编程. . . . . .278
参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
就像上世纪经典计算机改变了我们的生活一样,本世纪量子计算机可能也会以相同的方式改变我们的日常生活。
—— 摘自 2012 年诺贝尔物理学奖新闻稿
相较于现有的计算机,量子计算机有着巨大的优势。政府和工业界都在该领域投入了大量的时间和经费,希望能够研发出实用的量子计算机。近年来物理实验领域的快速发展,使人们普遍期望在 10.20 年内实现规模大、功能全的量子计算机硬件。然而,要发挥量子计算的超级计算能力,仅仅依靠量子硬件显然是不够的,量子软件也必须发挥关键作用。目前广泛使用的软件开发技术不能直接应用于量子计算机。经典世界和量子世界的本质差异意味着需要新技术来为量子计算机编程。
关于量子编程的研究早在 1996 年就开始了,在之后的 20 年中,丰富的研究成果不断出现在各种会议报告和期刊论文中。另一方面,量子编程仍然是一个不成熟的课题,它的知识基础呈现高度碎片化和不连贯性。本书的目的就是对量子编程这一课题做系统和详尽的探索。
因为量子编程仍处于初级发展阶段,所以本书并没有将重点放在特定的量子编程语言或技术上,我相信这些特定的技术和语言在未来仍会面临巨大的改变。取而代之的是,我们将重点放在不同语言和技术所广泛使用的基础概念、方法和数学工具上。从量子力学和量子计算的基础概念开始,本书详细介绍了多种量子程序结构和一系列量子编程模型,它们都能够有效地利用量子计算机非比寻常的计算能力。此外,我们还系统地讨论了量子程序的语义、逻辑和分析与验证技术。
随着量子计算技术方面的大量投资和快速发展,我相信在未来的 10 年间会有越来越多的研究者加入量子编程这一激动人心的领域,他们需要一本参考书来作为研究工作的起点。
同样,越来越多的大学也会开设量子编程的课程,老师和学生也会需要一本参考书。所以,出于以下两点目的,我决定写这本书:
. 为未来该领域的研究者提供基础。
. 作为研究生或高年级本科生课程的教学材料。
量子编程是高度交叉学科。新加入该领域的科研人员,尤其是学生,通常对来自不同学科的预备知识感到沮丧。在编写这本书时,我尽可能使其自成体系,并明确地讲解细节,以便科研人员和广大程序员都能够无障碍地阅读。
写作本书给了我一个机会来系统化自己对量子编程的看法。另一方面,本书的选题和材料是根据我对这一课题的理解来组织的。由于我的知识水平有限,本书正文省略了一些重要的主题。作为补救措施,本书最后的“发展前景”一章对这些主题进行了简短的讨论。
本书是根据我在清华大学智能技术与系统国家重点实验室的量子计算与量子信息组和悉尼科技大学量子计算与智能系统中心的量子计算实验室 15 年来的研究成果编著而成的。我非常享受与那里的同事及学生的合作和讨论。感谢他们每一个人。
特别感谢 Ichiro Hasuo(东京大学)和 Yuan Feng(悉尼科技大学),他们耐心地阅读了本书的初稿并提出了宝贵的意见和建议。非常感谢那些匿名的审稿人,他们为本书的结构提出了非常有用的建议。还要衷心感谢 Steve Elliot、Punithavathy Govindaradjane、Amy Invernizzi 和 Lindsay Lawrence,他们是 Morgan Kaufmann 负责本书的编辑和项目经理。
特别感谢悉尼科技大学工程与信息技术系的量子计算与智能系统中心给予我研究和探索的自由。
我在量子编程方面的研究受澳大利亚研究理事会、中国国家自然科学基金和中国科学院数学与系统科学研究院海外团队项目的支持。非常感谢他们提供的帮助。
评论
还没有评论。