第一部分 量子入门
第1章 量子计算简介
1.1 为什么量子计算很重要?
1.2 什么是量子计算机?
1.3 如何使用量子计算机?
1.3.1 量子计算机能做什么?
1.3.2 量子计算机不能做什么?
1.4 什么是程序?
什么是量子程序?
小结
第2章 量子位:构建块
2.1 为什么需要随机数?
2.2 什么是经典位?
2.2.1 我们能用经典位做什么?
2.2.2 抽象是我们的朋友
2.3 量子位:状态和操作
2.3.1 量子位的状态
2.3.2 操作的游戏
2.3.3 测量量子位
2.3.4 一般化测量:基独立
2.3.5 用代码模拟量子位
2.4 编程一个工作的QRNG
小结
第3章 用量子密钥分发来分享秘密
3.1 在爱情和加密中一切都很公平
3.1.1 量子NOT操作
3.1.2 借助量子位共享经典位
3.2 双组基的故事
3.3 量子密钥分发:BB84
3.4 使用密钥发送秘密消息
小结
第4章 非本地游戏:使用多量子位
4.1 非本地游戏
4.1.1 什么是非本地游戏?
4.1.2 测试量子物理学:CHSH游戏
4.1.3 经典策略
4.2 处理多量子位状态
4.2.1 寄存器
4.2.2 为什么很难模拟量子计算机?
4.2.3 用于状态制备的张量积
4.2.4 张量积对寄存器的量子位操作
小结
第5章 非本地游戏:实现多量子位模拟器
5.1 QuTiP中的量子对象
5.1.1 升级仿真器
5.1.2 测量起来:如何测量多量子位?
5.2 CHSH:量子策略
小结
第6章 隐形传态和纠缠:量子数据的移动
6.1 移动量子数据
6.1.1 换出模拟器
6.1.2 还有哪些双量子位门?
6.2 所有的单(量子位)旋转
6.3 隐形传态
小结
第一部分:结语
第二部分 在Q#中对量子算法进行编程
第7章 改变胜率:关于Q#的介绍
7.1 量子开发工具包介绍
7.2 Q#中的函数和操作
7.3 将操作作为参数传递
7.4 在Q#中玩莫甘娜的游戏
小结
第8章 什么是量子算法
8.1 经典算法和量子算法
8.2 多伊奇-约萨算法:对搜索的适度改进
8.3 oracle:在量子算法中表示经典函数
8.3.1 梅林的变换
8.3.2 推广我们的结果
8.4 在Q#中模拟多伊奇-约萨算法
8.5 对量子算法技术的思考
8.5.1 鞋子和袜子:应用和撤销量子操作
8.5.2 用阿达马指令来翻转控制和目标
8.6 相位反冲:我们成功的关键
小结
第9章 量子传感:不仅仅是相位
9.1 相位估计:利用量子位的有用属性进行测量
9.2 用户定义的类型
9.3 从Python中运行Q#
9.4 特征态和局部相位
9.5 受控应用:将全局相位变成局部相位
9.6 实现兰斯洛特的相位估计游戏的最佳策略
小结
第二部分:结语
第三部分应用量子计算
第10章 用量子计算机解决化学问题
10.1 量子计算的实际化学应用
10.2 通往量子力学的多条路径
10.3 用哈密顿算符描述量子系统如何随时间演化
10.4 用泡利操作围绕任意轴旋转
10.5 在系统中做出想要的变化
10.6 经历(非常小的)变化
10.7 整合在一起
小结
第11章 用量子计算机搜索
11.1 搜索非结构化数据
11.2 关于状态的反射
11.2.1 关于全一状态的反射
11.2.2 关于任意状态的反射
11.3 实现格罗弗算法
11.4 资源估算
小结
第12章 用量子计算机进行算术运算
12.1 将量子计算纳入安全因素
12.2 将模算术与因数分解联系起来
12.3 经典代数和因数分解
12.4 量子算术
12.4.1 用量子位相加
12.4.2 处于叠加态的量子位相乘
12.4.3 舒尔算法中的取模乘法
12.5 整合在一起
小结
临别赠言
附安装所需软件
A.1 在线运行示例
A.1.1 使用Binder
A.1.2 使用GitHubCodespaces
A.2 使用Anaconda进行本地安装
A.2.1 安装Anaconda
A.2.2 用Anaconda安装软件包
A.3 安装QDK
A.3.1 安装.NETCoreSDK
A.3.2 安装项目模板
A.3.3 安装VisualStudioCode扩展程序
A.3.4 为JupyterNotebook安装IQ#
附录B 术语和快速参考
B.1 术语
B.2 狄拉克符号
B.3 量子操作
B.4 Q#语言
B.4.1 类型
B.4.2 Q#的声明和语句
B.4.3 Q#表达式和操作符
B.4.4 Q#标准库
B.4.5 IQ#魔法命令
附录C 线性代数
C.1 走近向量
C.2 亲自体验矩阵
附录D 通过实例探索多伊奇-约萨算法
D.1 使用我们的技能,尝试做点什么
D.2 步骤1:为多伊奇-约萨制备输入状态
D.3 步骤2:应用oracle
D.3.1 例1:“id”or
展开