Note of 量子计算与量子信息导论 - USTC

26
Note of 量子计算与量子信息导论 自学小分队 2019 8 31 目录 1 Map of 量子计算与量子信息 2 2 经典计算理论 5 2.1 Turing 机是什么 ......................................... 5 2.2 Landauer 定理 .......................................... 6 2.3 可逆计算 ............................................. 6 3 量子计算理论 8 3.1 Bloch .............................................. 8 3.2 精确量子态的测量 ........................................ 8 3.3 量子计算并行优势的来源 .................................... 9 3.4 单量子比特门:Hadamard 门和相移门 .............................. 9 3.5 用受控非门制备纠缠态 ...................................... 10 3.6 Bell 基矢 ............................................. 11 3.7 通用量子计算 ........................................... 11 3.8 量子初态的制备 .......................................... 13 3.9 计算误差 ............................................. 15 3.10 Deutsch 算法 ........................................... 16 3.11 Grover 选择算法 ......................................... 16 3.12 量子 Fourier 变换 ......................................... 17 3.13 量子相位估计 ........................................... 19 3.14 薛定谔方程的量子计算 ...................................... 20 3.15 光量子计算机 ........................................... 21 4 量子力学部分 22 4.1 纠缠态的构造 ........................................... 22 4.2 Bell 不等式以及 CHSH 不等式及其违背 ............................ 23 5 量子信息部分 24 5.1 BB84 协议 ............................................. 24 5.2 B91 协议 ............................................. 25 1

Transcript of Note of 量子计算与量子信息导论 - USTC

Page 1: Note of 量子计算与量子信息导论 - USTC

Note of 量子计算与量子信息导论

自学小分队

2019 年 8 月 31 日

目录

1 Map of 量子计算与量子信息 2

2 经典计算理论 52.1 Turing 机是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Landauer 定理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 可逆计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 量子计算理论 83.1 Bloch 球 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2 精确量子态的测量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.3 量子计算并行优势的来源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.4 单量子比特门:Hadamard 门和相移门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.5 用受控非门制备纠缠态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.6 Bell 基矢 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.7 通用量子计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.8 量子初态的制备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.9 计算误差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.10 Deutsch 算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.11 Grover 选择算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.12 量子 Fourier 变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.13 量子相位估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.14 薛定谔方程的量子计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.15 光量子计算机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4 量子力学部分 224.1 纠缠态的构造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.2 Bell 不等式以及 CHSH 不等式及其违背 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

5 量子信息部分 245.1 BB84 协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.2 B91 协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1

Page 2: Note of 量子计算与量子信息导论 - USTC

1 MAP OF 量子计算与量子信息 2

1 Map of 量子计算与量子信息

为什么量子计算和量子信息是特别的? 其优势是什么? 为什么其具有这些优势?为了回答这些问题, 我们就需要去看一下量子力学与众不同的地方.首先就是量子系统的线性叠加性, 其实大量微观物理系统都满足这个线性叠加性. 因为量子系统具有

线性叠加性, 所以, 量子系统是天生支持并行运算的, 我们只需要把所有问题合在一起构造成一个叠加态,然后丢到量子计算机里面去算就好了. 看上去很棒, 不是么? 比如说我们要做一个复杂函数在 A,B,C, . . .

上的求值 f(A), f(B), . . . , 那我只要构造一个叠加态, 比如说 1√26A+B + C + ... 丢进去量子计算系统就

好了?不错, 量子计算机确实会帮我们把 f(A), f(B), .. 给计算出来, 但问题在于, 其计算结果也是一个叠加

态! 我们每次观测都会导致其答案坍缩到其中的某一个态上. 但这不是灾难, 很明显地我们可以立刻至少相处两种解决方法:

• 方法一: 给输入问题的不同部分加上不同的权重, 比如说 dA+ 2dB + ...+ 26dZ 来作为输入态. 然后我们理论上将会同样得到 df(A) + 2df(B) + . . . , 只需要来个多次测量, 同样可以得到 f(A), f(B), ....

• 方法二: 不要量子计算机一股脑地把答案都塞给我, 而是先分析, 然后给我一个很少选项的最终答案. 比如说, 告诉我这些答案中最大的那一个是什么? 或者, 我给你输入的这么多条快递路线, 那一条是最短的?1

仔细分析一下, 会发现方法一其实也行不通, 反而会造成比经典计算更大的计算量. 假设我们有 n 个

Qubits, 描述了 2n 个子问题, 每计算一个问题需要 m 步. 那么, 对, 经典计算机需要执行 2nm 步才能对

2n 个态全部求值完毕, 而量子计算机只需要执行 nm 步就可以了. 但是, 为了满足方法一种的不等概率分布, 计算一下会发现, 我们需要 d ∼ 22n, 因此为了区分出各个答案, 我们至少要让将误差降到 d 以下, 需要的计算量就是 22nm 了, 这远远大于经典计算.(更简单地, 可以这么想, 因为我们需要知道每个具体的答案, 所以, 至少每种答案都要被测量一次, 也就是说我们至少要重复运算 2n 次, 这里已经与经典计算持平了).但是如果利用方法二, 也就是把问题换一个问法, 那么情况就会好得多. 比如说, 我想知道 2n 个输入

中, 得到的结果最有可能在哪个附近? 换个具体的例子, 假设我是中国总理, 摆在我面前的是一个中国地图, 我需要在上面造一个新的经济特区, 然后我想知道我究竟把这个经济特区设立在哪儿, 会让全国人民最满意 (或者, 功利主义的”For the greatest happiness of the greatest people”), 然后我知道一个具体的算法, 可以判断出单个个体最喜欢哪个地区, 并且我神奇地得到了 13 亿个制备好的量子态 (输入原始数据这一步, 无论是经典计算还是量子计算, 都是逃不开地复杂), 然后我把她们纠缠在了一起, 丢到计算机中去进行, 假设运行一次需要 m 步. 那么, 经典计算机就需要 13 亿个 m, 算出结果之后再统计平均. 但如果用量子计算机, 我们只需要 30 个 Qubits 就有 13 亿个状态 (当然, 状态的参量多了之后就需要更多的Qubits), 然后丢到量子计算机中运行一次, 如果合适地设计量子计算机, 有可能我们只需要来个几百次测量所得的答案, 取平均值, 就知道人们最希望我把经济特区建在哪儿了.方法二的一个具体例子就是 Deutsch 算法. 我有四个函数, 如下图所示:

1让人想到路径积分, 不是么? 路径积分与量子计算?

Page 3: Note of 量子计算与量子信息导论 - USTC

1 MAP OF 量子计算与量子信息 3

然后我通过 Hadamard 门 (定义可以见附录, 其作用好比是, 在一个讨论 z 方向自旋的系统中我去测

量 x 方向自旋), 构造一个特别的叠加态输入 (初态制备), 然后用特殊的门来处理 (定义见图):

然后计算一下可以看出 (过程如下), 我们只需要读输出态就可以知道 f 到底是那个了.

在这里, 我们只调用了一次 f . 当 f 非常复杂, 比如说调用一次需要几十亿个门操作时, 这种算法的优势就得到了体现.(但是否几十亿个量子门和经典门速度可以做比较, 这就是另一个问题了)对方法二的探索 (如何问一个好的问题) 自然而然地会把我们引入到量子特长算法的研究中去, 量子

特长算法并不一定依赖于量子的并行性 2. 研究所得的一个可能是最有用的成果就是量子傅里叶 (Quan-tum Fourier Transform,QFT) 算法, 其本质是基于二进制数的加法与量子基态的叠加上有着巧妙的平行关系, 具体地说, 可以以下面这个式子为例:

(同样的技巧其实在我们用巨正则系综来计算全同粒子的分布函数时就已经用过了)推广上面的式子,人们就得到:

1√2n

∑2n−1k=0 exp

(2πijk2n

)|k〉 = 1√

2n(|0〉+ e2πi0·30|1〉) (|0〉+ e2πi0·j1j0 |1〉)

· · · · (|0〉+ e2πi0·jn−1jn−2...j0 |1〉)

也就是说, 我们要执行量子傅里叶变换可以通过一系列的相移门来完成. 对于 n 个 Qubits 描述的 2n 维

矢量, 量子傅里叶算法需要 O(n2) 步, 而经典算法即使是 FFT 也需要 O(2nn 步). 量子傅里叶变换的这个巨大优势为我们用量子计算机来求解薛定谔方程等问题打下了不错的基础 (首先, 将微分方程改写成积

2我暂时没和 FFT 做比较, 不知道 QFT 的优势是否来自于并行性

Page 4: Note of 量子计算与量子信息导论 - USTC

1 MAP OF 量子计算与量子信息 4

分方程, 然后用傅里叶变换来把求导变成代数运算. 因为计算的过程中需要大量重复使用傅里叶变换, 所以量子计算机相对于经典计算机会有巨大的优势. 可以猜想, 同样的优势将体现再解所有可以改写成积分方程的微分方程中).还有一个量子优势算法是搜索用的 Grover 算法, 可以将需要 n 次经典计算的算量减少到

√n 次.

除了上面提到的并行性以及量子特长算法之外, 人们研究量子计算机还有一个动机就是, 希望量子芯片的集成度能够高于硅计算机, 能效能够高于硅计算机. 前者好理解, 因为要描述微观尺度的现象就不可以忽视量子效应了, 所以在硅晶体管已经接近极限的时候, 也许就需要去发展量子计算了 3. 至于能耗, 则距离现实依然有一定距离. 具体地说, 就涉及到一个信息与能量的关系.

设想我们有一个箱子, 里面装有一个分子. 我们对于其处在箱子的左半边还是右半边一无所知, 如果我们需要知道, 就需要将箱子等温压缩一半, 在这个过程中, 有 kBT ln 2 的优质机械能转化成了低品质的

热能耗散出去, 起的作用是为系统存储了 1 bit 的信息. 人们论证说, 这个 kBT ln 2 就是转移 1 bit 信息所涉及到的最小能量限度 (但我尚不知道如何证明). 所以, 对于不可逆的经典计算而言 (比如你一个与非门就是不可逆的), 必然伴随信息的制造与消失会有能量耗散, 但是对于量子计算, 我们每次都是用 Unitary矩阵作用上去, 过程都是可逆的 (还有一种理解就是, 量子计算过程都是微观的, 而微观过程都可逆 (至于微观到宏观的过程如何具体不可逆的,this is still an open question)), 所以不需要为” 信息” 支付能量. 但是目前经典计算机单位 bit 运算所耗散的能量是 kBT ln 2 的百万倍, 所以, 能耗这方面, 在经典计算的范畴内就依然有很大的提升空间.出了叠加性之外, 量子力学还预言了许多其他有趣的性质. 对于其中一些有趣性质的应用就造就了量

子信息领域.比如说, 最时常听到的, 量子测量的破坏性, 就是 BB84 协议的基础. 对于两个不对易的算子 [A,B] 6=

0, 如果我们手上有一个 A 的本征态 ψA, 那么我们用 A 作用上去, 没问题,ψA 依然是 ψA, 保持不变; 但如果我们一不小心把 B 给作用上去了, 那么 ψA 立刻被破坏, 成一个 B 的本征态. 但问题在于, 如果我们只是得到一个粒子, 然后对这个粒子的态进行测量, 我们是没有办法区分这个粒子到底是之前就在 B 态, 还是说其实因为我们用仪器 B 去测量而使其坍缩到了本征态 (对 A 态的讨论同理). BB84 协议的大致原理就是, 我们通过公布传递的量子信息的一小部分来比较正确率, 看看到底有多少量子 Bit 是被破坏掉的,是否符合预期, 如果不符合, 就代表有其他过程破坏了这些量子态, 比如说一个窃听者. 如果没有, 我们可以利用剩下的信息来作为密钥为经典通信进行加密, 数学上可以保证, 一次一密的经典加密是不可破解的(所以, 你大可把加密后的信息直接用明码广播出去).还有另一种量子通信方式是使用 EPR 纠缠, 保密原理是利用了 EPR 纠缠” 传递” 信息是没有中介

的, 超距的. 此处的” 传递” 信息是不准确的,EPR 对不能传递信息, 但是能传递密钥. 可以想象一个 EPR对是两只被装在两个封闭盒子里的任性的小精灵, 她们可以站立也可以倒立, 但是她们不听你的, 只凭自己的意愿或倒立或站立, 唯一的约束是, 这俩小精灵相互之间心有灵犀, 而且总是执意和另一半保持相反的状态. 具体一点的物理过程比如说是 π0 → e+ + e−, 产生的是自旋单态. 因为这俩小精灵是任性的, 所以你不能用她们传递任何信息. 但是你可以知道你和你希望通信的对方拥有的小精灵是站立还是倒立, 所以你们共有密钥, 所以你们可以安全地经典通信. 结合测量 EPR 的坍缩匹配正确率, 还可以判断有没有人在试图破坏我们 EPR 对的产生过程. 这就是 B91 通信协议.前面提到过, 人们发展量子计算并不仅仅是希望利用并行性和特长算法, 而还有希望用它来取代经典

计算机的打算. 那我们就来搭积木吧.我们首先可以证明, 只需要用与非门和复制门就可以执行所有的经典计算. 所谓经典计算, 我们把它

3有没有可能去改硅晶体管的结构, 而继续经典计算?

Page 5: Note of 量子计算与量子信息导论 - USTC

2 经典计算理论 5

抽象成一个映射:f : {0, 1}n → {0, 1}m

我们要证明的就是,用与非门和复制门可以构造任意的 f .而上面那个函数,可以进一步简化成若干”赋值函数”f0 的组合 (一位一位地依次复合):

f0 : {0, 1}n → {0, 1}

而这个 f0, 又可以拆成若干的” 小项函数”fsmall: 有且仅有一个输入 (x0) 可以让 fsmall 取 1. 也即,fsmall

就是与目标 x0 进行比对的函数, 显然可以用一堆与非门来构造. 由因为我们给的输入只有一个 x, 为了能执行若干次小项比较, 我们需要复制门将我们的输入复制若干份 (PS: 在经典计算中没有这个门, 毕竟, 连条导线就好了). 所以命题证毕.现在,我们进一步证明,与非门和复制门可以用单受控非门 CNOT和双受控非门 C2NOT (Toffoli)来

表示, 如下图即可:

对了,在经典计算中, 我们有 Turing 定理: 一切可解问题的算法都可以用 Turing 机来求解. 经典计算机可以仿造 Turing 机. 此所谓通用计算.具体到量子计算如何实现上, 则又是一个广阔的天地.

2 经典计算理论

2.1 Turing 机是什么

我暂时认为 Turing 机的本质是提出了一个数学定理: 命题的可判定性 ⇔ 存在可以判定命题的图灵

机. 这个命题的充分性是显然的, 但是必要性则不那么显然了, 可能非常复杂.4

说起可判定命题, 要追溯到 Kurt-Godel 的不完备性定理. 当 Cantor 提出了集合之间的势的概念, 并且证明实数集的势大于自然数集的势之后, 人们就想问, 十分存在一个集合, 其势介于自然数集与实数集之间呢? Kurt-Godel 证明了这个问题在我们已有的公理体系内, 是不可判定的, 也就是说, 我们可以假设其错误, 也可以假设其正确, 都不会与已有的公理产生矛盾. 类似地, 还有选择公理与其余集合论公理的独立性. 这是一个非常有趣的定理.在这个定理出来之后, 以往不断寻找证明与证伪的数学家现在就多了一个需要预先干的活儿: 如何判

断一个问题在已建立的公理体系内是否是可判定的? 于是, 就有了前面的 Turing 定理: 命题的可判定性⇔ 存在可以判定命题的图灵机. 更加工程角度地说, 也就是, 如果一个问题可以解决 (有解决这个问题的算法), 那么, 这个算法一定可以用 Turing 机的语言来写, 用 Turing 机来实现.至于具体 Turing 机长什么样子, 有什么数学限制, 参见下图:

4必要性的证明思路大概是怎样的?

Page 6: Note of 量子计算与量子信息导论 - USTC

2 经典计算理论 6

我们可以将 Turing 机想象成一个小学生, 这个小学生被放到一条无穷长的, 上面有一些数字 (直觉上,应当可以局限在 {0, 1}之间吧)的纸带上奔跑.而且这个小学生的手中有一个小本本,硬卡纸做的那种(小本本可以很厚, 但不能无穷厚, 也就是说, 这个小本本上面只有有限页), 每一页上画着一个大大的字母(A, b, γ, δ...). 还有一本厚度有限 (这个有限是可以推出来的, 因为纸带上的数字种类以及手上硬卡纸本本都是有限的, 所以游戏指南至多有” 纸带数字种类 × 硬卡纸本本页数” 这么多条) 的游戏指南 (程序)(或者, 记在这个可爱小学生的脑子里也可以, 但, 他是一个普通人, 只能记住有限的东西).准备就绪之后我们就可以让这个小学生开始干活了. 首先, 我们把这个小学生放到一个合适的地方

去, 比如说, 从家门口踏上纸带. 然后我们帮这个小学生把那个硬卡纸本本翻到某个指定的页码. 然后拍拍小学生的背,让他开始干活.他需要先看看自己脚底纸带上的数字,得到 Data1,然后再看看自己手上的硬卡纸小本本, 得到 Data2. 于是他打开游戏指南, 用 (Data1, Data2) 来查字典一样地找游戏指南中对应的

操作 (这个可怜的小学生没有什么自由意识了, 只能照猫画虎地做), 他终于找到了有且仅有一条对应的语句:(Data1, Date2) 7→ (Data1′, Data2′,Movement),于是,这个小学生根据以前 Turing老师教的,将脚下纸带的数字擦掉, 写上 Data1′, 然后再把手中的小本本翻到 Data2′ 那一页. 最后看看 Movement 要他干

什么, 比如, 某一次中 Movement = Back, 那么小学生就在纸带上后退一步 (这个小学生一辈子都不可以转身体! 只能每次一步地前进, 后退).而后这个小学生不断地重复这个操作, 直到某一次 (我们是不能知道是否存在这一次的, 见下文), 他

读到游戏指南上给他的指令是 H, 停下来. 那很好, 这个小学生已经完成了他今天的作业, 可以举手交作业了. 而这个时候的作业, 就是当前被涂改若干次之后的纸带的样子 (远方一个压路机一样的滚筒车驶过,小学生跳开到路边, 看着这个滚筒车把纸带全部收了起来—不要问我这个滚筒车从哪里出发到哪里的, 这个滚筒车从无穷到无穷).可以看到, 目前我们的计算机架构与 Turing 机是基本上一样的.最后再补充一点数学上的东西. 根据前面的定义, 显然, 游戏指南的版本数是可数的, 所以, 我们可以

找到一个双射, 把自然数和 Turing 机对应起来, 作为每种 Turing 机的 ID, 这个数称之为 Turing 数 nT ,其引入只是为了方便我们的表述而已. 在前面我们说, 这个小学生在遇到 H 的时候会停下来. 但是, 我们是找不出一个一般的算法来判定任意的 Turing 机 nT 对于输入 in 是否会停机的. 可以利用反证法证明,假设我们有这样的一个”H 判定 Turing 机 A”, 执行算法: 对 ID 为 n(∀n) 的 Turing 机经过纸带输入 n,若这个 Turing 机停机 (H), 那么 A 输出” 是”, 否则输出” 否”. 然后我们再考虑另一台 Turing 机 B, 其ID 为 n0, 其满足: 若 A(n0)=” 是”, 则不停机, 反之停机 (与 A 反过来). 那么我们考虑 A(n0), 若 A(n0)停机, 根据 A 的定义, 就意味着 n0 号 Turing 机在输入 n0 的时候会停机; 那么根据 n0 号 Turing 机 (也

Page 7: Note of 量子计算与量子信息导论 - USTC

2 经典计算理论 7

就是 B) 的定义, 因为 A 停机, 所以 B 不停机. 矛盾. 这个其实就是所谓停机问题.

2.2 Landauer 定理

简单地说,Landauer 定理的意思就是: 信息是低熵. 底墒就意味着高质量的能量, 所以信息的改变也同时意味着能量品质的改变. 而且 Landauer 断言, 制造 1bit 的信息就是制造 kT ln 2 的低熵. 这个过程可以用一个” 单分子气缸” 来描述.我们假设一个有非常非常小的气缸, 里面有一个分子, 我们把气缸分成左右两个部分, 我们不知道这

一个气体分子在左边还是在右边. 假设我们要给系统赋予信息, 比如说, 要确定下这个分子在左边, 也就是说, 我们需要压缩气缸, 把这个分子移动到左边去. 那么, 根据热学第一定律:dU = TdS − pdV , 用理想气体状态方程往里面带, 考虑等温过程, 可知我们外界需要输入高质量机械功:

dW = nRT ln 2 =1

NA

RT ln 2 = kT ln 2

这就是 Landauer 的断言. 但要证明 Landauer 定理, 我们还需要去证明这个是所需能量的最小限度, 具体的证明我暂时不清楚.5, 也许可以从热力学第二定律出发来试试.从另一个角度来看,Landauer 定理也告诉了我们信息可以转化成高质量能量. 还是考虑单分子气缸,

假设我们一开始就知道 (知识就是信息) 气体分子在气缸的左边, 那么我们就可以把隔板移动到气缸中间(毫不费力), 然后让气缸等温膨胀, 从而从外界吸收 kT ln 2 的热转化成高质量的机械功.

2.3 可逆计算

前面的 Landauer 定理说, 信息的制造和消失都会涉及能量的改变.6, 也许是这些能量的只要发生改变, 我们总是难以控制涌动的能量 (无论是高质量 or 低质量), 所以最终都耗散成了热. 因此, 为了干净起见, 不如运算的时候都只考虑不损失信息的可逆计算, 从而也没有能量的改变了.要做到这点并不困难, 比如说原来的与门, 我们只需要原来的一个输入还有输出, 就可以恢复原来的

两个输入. 所以我们只需要把与门改成下图这个样子就可以了:

但是或门就不容易改写了. 实际讨论可逆计算的时候, 人们设计新的门, 比如说 Toffoli 门 (前两个输入是控制第三个输入是否反向的控制器, 前两个输入总是原封不动地输出):

5这似乎有一定挑战性6这里我其实暂时没明白: 如果我 2bit→1bit 了, 那么这 1bit 对应损失对应的是高质量能量啊, 为什么一定是” 损失”? 呢

Page 8: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 8

把这个门稍加改写就可以得到与非门, 在经典计算机理论中, 我们知道只要有了与非门, 我们就可以构造通用计算. 所以 Toffoli 门是有进行通用计算的潜力的, 改写方法如下:

另一个被特殊关注的门是 Fredkin 门:

同样可以改写成与非门, 改写方式与前面相似, 就不赘述了.

3 量子计算理论

3.1 Bloch 球

Bloch球是一种描述双态量子系统的数学工具.双态量子系统指的是那些有且仅有两个本征态的量子系统, 比如说电子的 z 方向自旋.

我们目前讨论的 Qubit 也就指的是这种双态量子系统.7. 对于这种系统上面的一个一般的态, 可以表述成:

|ψ〉 = α|0〉+ β|1〉 α, β ∈ C7为什么不考虑更多能级的量子系统呢?

Page 9: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 9

考虑到归一化限制 |α|2 + |β|2 = 1, 而且在量子力学中我们知道, 态函数整体差一个相位 eiϕ 是无伤大雅

的. 所以我们可以将态函数进一步简写为:

|ψ〉 = cos θ2|0〉+ sin θ

2eiϕ|1〉 θ ∈ [0, π], ψ ∈ [0, 2π)

我们上面之所以来一个有点奇怪的 θ2而不是 θ,原因就在于定义域.我们希望 θ 和 ϕ可以对应于球坐标中

的两个角, 这样我们就可以通过球坐标, 构造一个从球面上的点到量子态的双射. 这就是所谓的 Bloch 球.这种几何表述给我们以一种几何直观来分析量子态及其变化过程.再考虑一些琐碎的数学上的东西,进一步利用球坐标下的坐标表示:(x = cosϕ sin θ, y = sinϕ sin θ, z =

cos θ), 我们的量子态还可以写成:

〈ψ〉 =

√1+z2

x+iy√2(1+z)

再者, 做一个正弦投影 (就是地球仪投影):X = ϕ sin θ, Y = −θ+ π

2, 就可以把 Bloch 球做” 地球仪” 展开.

顺便说一句, 地球仪之所以使用正弦投影, 就是因为正弦投影是保面积的, 这一点可以通过计算正弦投影对于的 Jacobi 行列式看出来.

3.2 精确量子态的测量

这个做法其实很直观, 单独写一节出来只是因为我觉得这个不大适合与 Bloch 球放在一起.对于一个 Qubit, 其态的描述是:

|ψ〉 = α|0〉+ β|1〉 α, β ∈ C

但是我们每次测量都会导致系统坍缩到 |0〉 或者 |1〉 上, 只能得到这两个对应本征态的本征值之一. 但是,正如我们在验证 Bell 不等式中做的一样, 我们只需要制备许许多多这样的量子态 (重复计算), 然后对得到的许许多多个结果测量而后取平均值就可以得到我们的 α 和 β 了 (差一个相位 ϕ).

当然, 有的时候我们并不关心 α 和 β 具体的值是多少 (差一个相位, 往后我可能会省略句补充), 而仅仅在乎某个 f(α.β) 的值是多少. 在这种情况下, 如果我们依然去多次制备多次计算而后来测量 α,β 带入函数计算, 我们的工作量可能是巨大的 (虽然都是要测量 p0, p1, 但是最终结果对 p0, p1 的误差敏感度可

能不同, 这就决定了我们需要吧 p0, p1 测得多精确, 这个影响工作量). 如果我们能对结果加一个量子操作,也就是,Unitary 变换, 而让我们要的 f(α, β) 容易通过测量得到就更好了 (这个特殊设计的 Unitary 变换也可能是计算过程中的一步).

Page 10: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 10

比如说我们要求 Bloch 球的 x 坐标, 我们就可以把 |ψ〉 ==

[cos θ

2

eiϕ sin θ2

]用 U1 = 1√

2

[1 1

−1 1

]变

换一下, 而后测量其坍缩到 0 态和 1 态的概率 p0, p1, 可以证明最终结果满足:

p(1)0 − p

(1)1 = cosϕ sin θ = x

3.3 量子计算并行优势的来源

首先是这个系统能够携带的信息量的区别. 对于一个 n Bits 的经典计算机, 其可能存在的状态数是2n, 换句话说, 这 n 个 bits 自己只能携带 n 个 Bool 数的信息.但是对于一个有 n Qubits 的量子计算机, 其可能存在的状态数是多少? 一种错误的想法是 (我此前

的想法), 一个量子态可以由两个 C 中的元素来描述, 所以,n Qubit 可以由 2n 个 C 的元素来描述. 嗯, 不错, 是比 n bits 的经典计算机多 (因为是复数而不是 Bool 数). 但这是不对的, 量子计算机的潜力真正惊人之处在于其叠加性.对于一个 n Qubits 的计算机, 其有 2n 个本征态 8(计算方法同经典计算机), 每个态由两个 R 中的

元素确定 (我们用 R 而不用 C 了, 其实无伤大雅, 只是有的时候 C 的一个方程会吃掉两个自由度, 这不便于我们数自由度). 考虑到归一化约束以及整体可以差一个相位, 我们的 n Qubits 系统实际需要的是2(2n − 1) 个 R 中的参数来描述! 与经典计算机可谓天壤之别 (这就是为什么以我们当前的算力最多只能模拟四十来个电子, 距离凝聚态的许多精确计算依然长路漫漫).如果需要用经典计算机来模拟量子计算机, 那么一个 n Qubits 的量子计算机可以这样模拟: 先用一

个 nbits 的经典计算机内存列作为地址, 然后我们再在每个地址上面储存 2m 个数据 (m for each R), 也就是需要 2n ∗ 2m 的内存.

3.4 单量子比特门:Hadamard 门和相移门

我们将证明, 仅用 Hadamard 门与相移门就能完成对单个 Qubit 的任意操作.其中, 假设我们的系统是以电子的自旋为参量进行工作的, 并且我们选定 z 方向的自旋为主要测量参

量, 定义基矢 |0〉z = (1, 0)T , |1〉z = (0, 1)T . 那么我们定义 Hamadmard 门为:

H =1√2

[1 1

1 −1

]

显然 Hadamard 门是 Unitary(而且 H2 = I) 的.可以证明,Hadamard 门把自旋的基矢 (也就是各个方向自旋的本征态) 做了如下的变换:

|0〉x → |0〉z, |1〉x → |1〉z

|0〉y → −|1〉y, |1〉y → −|0〉y

|0〉z → |0〉x, |1〉z → |1〉x

分析一下对应的矩阵, 可以看到 Hadamard 门是在 SO3 中的. 其实这是一个普遍的结论: 对于 Qubits 的操作而言,只要是 Unitary矩阵 (所有量子操作,因为归一化的要求,都是 Unitary变化),其都可以等价地

8这个应当是限制在相干态, 而不能是直积态吧? 所以, 怎么做?

Page 11: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 11

用一个 SO3 矩阵来表述. 这是因为一般地,U = eiϕSO3, 但是对于 Qubits 而言, 整体相位差 eiϕ 是没有关

系的, 所以 U ∼ SO3(一个极端的例子, 从 det = 1 到 det = −1 只需要乘上系数 i 就好了). 从几何的角度来看, 也就是说, 对 Qubits 的任意量子操作, 都可以表示为 Bloch 球的一个转动, 变换是等距的.另外一个门是相移门, 其定义为:

Rz(δ) =

[1 0

0 eiδ

]

从 Bloch 球提供的几何直观来看,Hadamard 门是绕 n =(

1√2, 0, 1√

2

)所做的角度 δ = π 的转动. 而相移

门则是绕 z 轴逆时针做的一个角度为 δ 的转动.因为这两个转轴不在一条直线上, 所以大致可以感觉到整个 SO3 都可以被这两个矩阵生成. 具体证

明不难, 我们利用 Hadamard 门, 可以把相移门提供的对 z 轴的旋转改变为对 x 轴的旋转. 同样地, 我们可以先用相移门把 y 轴移动到 x 轴的位置上, 再接着用 Hadamard 门和相移门来得到关于 y 轴的转动.最后仿照 Euler 角的推断过程, 我们知道, 我们不单单可以把 Bloch 球面上的单个点移动到球面上的任一位置, 还可以把整个 Bloch 球的刚体变换 SO3 给描述出来.

3.5 用受控非门制备纠缠态

我暂时无法把此处的” 纠缠态” 与 EPR 佯谬中的纠缠态很好地联系在一起.我暂且仅认为纠缠态是一个数学定义, 即, 那些不可以分解成子态直积的态. 显然, 纠缠态是很多的,

考虑两个 Qubit, 如果不考虑纠缠, 每个 Qubit 有 2 个自由度 (由 2 个实数描述), 所以 Qubit1⊗Qubits2

就有 4 个自由度. 但是考虑到纠缠,2 个 Qubit 对应有 22 = 4 个量子态, 又因为有整体的归一化约束以及相位任意性, 总共有 8− 2 = 6 个自由度. 这剩下的 2 个自由度都是因为纠缠现象而贡献的, 当 Qubits 数目 n 很大的时候, 纠缠贡献的自由度占绝对的主要成分.所以, 如果我们从这个” 不可直积分解” 来定义纠缠态, 理解如何用受控非门来制备纠缠态则是非常

简单的事情了.比如说我有一个 QubitA,处在 α|0〉+β|1〉上,另一个 QubitsB,处在 |0〉上. 那么假设我就单纯地读取这俩Qubits,假设这俩Qubits之间没有联系 (也许,联系的有误就是纠缠态的物理关键!),那么我测量的态就是完完全全的直积态:[(α|0〉+β|1〉)|0〉]. 但是如果我,把这俩 Qubits丢到 CNOT(ControlledNOT) 门中去, 就有:

CNOT(α|0〉+ β|1〉)|0〉 = α|00〉+ β|11〉

这里出来的这个 α|00〉 + β|11〉 就显然不是一个可以直积分解的态 (设可分解, 解方程会发现无解). 如果我们这时候去测量 CNOT 的输出 (比如说, 测量自旋), 那么这俩输出端口就是纠缠态的.

3.6 Bell 基矢

这无非是一种特殊一点的可以制备纠缠态的双量子门而已. 其结构如下, 由一个 Hadamard 门和CNOT 门组成

Page 12: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 12

我们可以证明其输入输出满足关系:

|00〉 → |ϕ+〉 , |01〉 → |ψ+〉|10〉 → |ϕ−〉 , |11〉 → |ψ−〉

其中: ∣∣ϕ+⟩=

1√2(|00〉+ |11〉)∣∣ϕ−⟩ = 1√

2(|00〉 − |11〉)∣∣ψ+

⟩=

1√2(|01〉+ |10〉)∣∣ψ−⟩ = 1√

2(|01〉 − |10〉)

而且, 因为 CNOT 和 Hadamard 都是可逆的, 所以 Bell 基矢的这个门 (就暂时叫 Bell 门吧) 是可逆的,直接两个 Bell 门串在一起就好了. 而且, 根据 Bell 门的输入输出关系, 可以看到, 我们可以通过输入 |11〉来制备自旋单态 |ψ−〉 = 1√

2(|01〉 − |10〉), 这也许是实验上用来制备纠缠态的一种好方法 (也许, 因为其与

Bell 不等式的关系, 这就是其被称为 Bell 门的原因吗?).

3.7 通用量子计算

在这一个小节中我们的目的是去证明, 对于 n 个量子比特 (∼ 2n 个量子态) 的任意 Unitary 变换,都可以被分解为单 Qubit 门 (对单个 Qubit 的作用, 也就是 Bloch 球的刚体变换) 与双 Qubits 门 (受控单 Qubit, 比如 CNOT) 的组合. 因为单 Qubit 门可以分解成 Hadamard 门和相移门, 双 Qubits 门可以由 CNOT 门构造 (下面我们称这仨为三剑客). 以后的一种研究思路 (仿照经典计算机的) 就是寻求 Hadamard 门, 相移门和 CNOT 门的物理实现. 如果我们有许许多多的这三种门, 我们就可以完成对nQubits 的任意 Unitary 变换 (这对量子模拟也很重要).

对于这个命题, 我们的证明思路是这样的:• 先证明我们可以构造出单受控 C −U 门 (一个控制 Qubit, 当控制位置 1 的时候, 对运算位做 U 变

换; 否则不做变换)• 然后证明可以构造多受控 Ck − U 门, 这里就包含 Toffoli 门 (到这一步, 我们就证明了量子计算可

以做通用经典计算了)• 最后证明一般的 U2n 可以用 Ck − U 来分解.最后我计划举一个电子自旋量子计算机的例子, 来探讨我们的具体物理实现需要什么条件.先证明我们可以构造出单受控 CU 门, 对于一般的作用于单个 Qubit 的 Unitary(2) 矩阵, 其一般表

达式可以写作 9:

U =

[ei(δ−α/2−β/2) cos θ

2−ei(δ−α/2+β/2) sin θ

2

ei(δ+α/2−β/2) sin θ2

ei(δ+α/2+β/2) cos θ2

]这个 U 可以做分解:

U = Φ(δ)Rz(α)Ry(θ)Rz(β)

其中:

Φ(δ) =

[eiδ 0

0 eiδ

], Rz(δ) = e−i δ2

[1 0

0 eiδ

], Ry(δ) =

[cos δ

2− sin δ

2

sin δ2

cos δ2

]9虽然从自由度上数一数这个是对的, 但是最好还是做一点具体的计算吧

Page 13: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 13

因为上面这些矩阵都是单Qubits的Unitary阵,而且前面我们已经大致说明了其如何分别可以用Hadamard矩阵和相移阵组合出来. 所以这些矩阵逃不出我们的三剑客. 进一步地定义:

A = Rz(α)Ry

(θ2

)B = Ry

(− θ

2

)Rz

(−α+β

2

)C = Rz

(β−α2

)可以证明所谓的 ABC 分解定理 (临时起的名字):

ABC = I and Φ(δ)AσxBσxC = U

所以容易验证, 单受控 U 量子门 C − U 可以用三剑客以下图的形式组合出来:

至此, 我们完成了命题第一部分的证明:C − U 门的构建.具体的 Ck − U 门依据 k 的不同可以有不同精巧的构建. 但是这里我们暂时不考虑计算效率而只考

虑可行性, 那么, 根据经典计算机理论, 我们只需要构造出一个具有通用性的 C2 − U 门, 特别地构造出其特例 Toffoli 门, 利用 Toffoli 门构造一个 k 重的与门即可. 所以我们的目的是构造 C2 − U 门, 其构造如下, 其中,V 2 = U, V V † = I(对于任意二阶 UnitaryU , 都可以分解成 V 2 = U , 只要先 Jordan 对角化, 然后把对角阵开方就好了):

至此我们完成了命题第二部分的证明:Ck − U 门的构建. 到这一步, 我们已经可以构造能代替经典计算机的通用量子计算机了.最后, 为了量子模拟以及特长量子计算的需要, 我们构造真正的大目标,U (2n) 的描述 (有人记做 U (n),

以表示 n 个 Qubits 上的 Unitary 矩阵. 这么做其实不太好, 因为这与常用的数学记号定义会混淆, 所以我们一般不这么写, 但下面截取的公式我就懒得改了, 稍加注意即可). 我们需要引入一个定理 (看上去显然, 但是容易证明吗?):

U (n) =2n−1∏i=1

i−1∏j=0

V ij

也即, 任意 nQubits 的 Unitary 变换可以落实到两个量子态上的变换. 但是, 任意两个量子态之间的变换并不好做, 比如说对于一个 2Qubits 的量子电子计算机, 有态 a1|00〉 + a2|10〉 + a3|01〉 + a4|11〉, 对于 |00〉 和 |01〉 之间的操作, 因为是同一个电子, 在实验上比较好处理. 但如果要做 |00〉, |11〉 上的变换

Page 14: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 14

a1, a4 → a′1, a′4, 在实验上就不那么方便了. 所以我们可以用数学中证明奇偶排列时常用的方法: 把态一个

一个对换, 直到要变换的两个态落到一个易操作的变换工厂中 (比如说, 同一个电子的 ±1z 自旋上), 然后再在这个工厂上做变换, 最后再运回原位. 可以理解成一个售后保修的过程, 顾客把量子态快递回工厂, 工厂维修之后再快递回顾客.为了执行上面的那个操作, 我们需要可以交换相邻两个量子态的门, 容易证明, 下图这个门就满足我

们的要求:

最后说一下三剑客的物理实现, 以电子自旋量子计算机为例, 我们需要:• 单 Qubit 的 Hadamard 门: 作用在一个电子上, 改变其 z 方向俩自旋本征态所占的分量.• 单 Qubit 的相移门: 作用在一个电子上, 改变一个自旋本征态所占分量的相位, 比如说 α|0〉 →

αeiϕ|0〉• 双 Qubits 的 CNOT 门. 这个要求就比较高了, 要求可以接收任意两个量子态作为输入, 并将作用

结果输出回这两个量子态 (也就是, 在任意两个量子态上操作, 这两个态可能分属不同的电子, 也可能是纠缠态).

3.8 量子初态的制备

所谓量子计算过程, 无非就是我们输入一些东西, 然后经过一系列预先设定好的 Unitary 变换, 量子计算机把我们的初态按照预设的程序变成新的量子态, 也就是末态; 然后我们再去读取末态, 获取计算结果.所以为了进行量子计算, 我们必须能” 把问题问清楚”, 也就是需要制备一个足够高精度的初态.在考虑量子系统初态的制备之前, 我们先看一下传统计算机是如何制备初态的. 假设我们的系统需要

输入 10个 bits(信息单位)的信息,那么我就需要 10个小开关 (或者打孔器),选择性地把 10个经典 bit(物理实体) 给拨到我们要的态上. 也就是我们需要定义 10 个赋值操作.对于量子系统,其实也是类似的,假设我们的系统需要装载 2n个 C元素的信息 (也就是 n个 Qubits),

我们同样需要为系统准备 2n 个赋值操作 (后面会看到, 或者这样想, 系统本身就差不多这么多个自由度,怎么可能省?).具体而言, 我们分两步来制备系统所需的量子初态. 第一步: 制备振幅 (用 Hadamard 矩阵和相移阵

组合而成的旋转阵 Ri(δ) 来实现); 第二步: 设置相对相位 (用相移阵来实现).具体举一个例子, 比如说我们要设置一个 3Qubits 系统的初态. 我们一开始手上有的是基态:|0〉, 我们

希望制备的是:|ψ〉 =∑7

i=0 ai|i〉. 那么, 我们先对一个个 Qubit 用一个旋转操作, 生成第一个门上的叠加态:

(cos θ1|0〉+ sin θ1|1〉) |00〉

接下来我们要处理第二个 Qubit. 但因为我们需要设置纠缠态, 而不仅仅是直积态, 所以第二个 Qubit 具体怎么设置是和第一个 Qubits 的状态有关的. 在线路上, 我们就需要使用 C − U 门了 (因为这个时候系

Page 15: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 15

统处在 2 个态的叠加中, 为了分别” 个性化定制”, 我们需要 2 个 C − U 门), 再一次设置得到:

(cos θ1 cos θ2|00〉+ cos θ1 sin θ2|01〉+ sin θ1 cos θ3|10〉+ sin θ1 sin θ3|11〉) |0〉

同理, 此时系统处在 4 态叠加, 我们再次个性化处理, 这时候需要的就是 4 个 C2 − U 门了, 处理得到:

cos θ1 cos θ2 cos θ4|000〉+ cos θ1 cos θ2 sin θ4|001〉+ cos θ1 sin θ2 cos θ5|010〉+ cos θ1 sin θ2 sin θ5|011〉+ sin θ1 cos θ3 cos θ6|100〉+ sin θ1 cos θ3 sin θ6|101〉+ sin θ1 sin θ3 cos θ7|110〉+ sin θ1 sin θ3 sin θ7|111〉

只要一开始我们设定好 θ1, θ2, . . . , θ7, 就可以得到目标振幅了. 这无非也就是求解一个方程的事情:

|a0| = cos θ1 cos θ2 cos θ4, |a1| = cos θ1 cos θ2 sin θ4|a2| = cos θ1 sin θ2 cos θ5, |a3| = cos θ1 sin θ2 sin θ5|a4| = sin θ1 cos θ3 cos θ6, |a5| = sin θ1 cos θ3 sin θ6|a6| = sin θ1 sin θ3 cos θ7, |a7| = sin θ1 sin θ3 sin θ7

上面这个设置振幅的过程可以用下面的线路图来实现:

最后我们设置相位. 用 8 个一般相移门去进行 8 个个性化定制可以, 也可以先构造组合相移门:

Γk =

[eiγ2k 0

0 eiγ2k+1

]

然后进行 4 次个性化定制 (根据前两个 Qubits 的取值来个性化定制), 其线路图与上面的同理一下就得到了, 如下 (实心圆圈表示对 1 敏感, 空心圆圈表示对 0 敏感):

Page 16: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 16

3.9 计算误差

如果我们的量子计算机中用来对 Qubits进行 Unitary变换的门不是理想的 Ui,而是有误差的 Vi(Vi−Ui ∼ ε), 那么我们本来期望运算得到的 |ψi〉 = Ui |ψi−1〉 就会变成 Vi |ψi−1〉 = |ψi〉+ |Ei〉, 其中的 |Ei〉 是误差, 也就是:

|Ei〉 = (Vi − Ui) |ψi−1〉

因为我们的量子计算机中有许多个门串在一起, 所以归纳一下就得到最终的结果会是:∣∣∣ψn

⟩= |ψn〉+ |En〉+ Vn |En−1〉

+ VnVn−1 |En−2〉+ · · ·+ VnVn−1 · · ·V2 |E1〉

我们假设我们的误差都是 Unitary 的, 所以不会改变波函数的模 (也就是 ‖Vi |Ei−1〉 ‖ = ‖ |Ei−1〉 ‖), 于是误差满足:

‖ψn

⟩− |ψn〉 ‖ 6 ‖ |En〉 ‖+ ‖ |En−1〉 ‖+ · · ·+ ‖ |E1〉 ‖

如果我们定义一个矩阵的 Euclidean 模为:||M || =√∑

i,j |Mi,j |2, 那么我们可以证明 ||AB|| ≤ ||A||||B||,而且显然 |M | < n2Max(|Mi,j |) (M ∈ Mn), 这一系列的数学在我们证明 Lie 群中的指数群时用得很多.所以如果我们的误差一致有界 (鉴于是有限步操作, 说有界即可):

‖V i − Ui‖sup < ϵ

则有 (因为 |||ψ〉||leq1):‖|Ei) ‖ = ‖ (Vi − Ui) |ψi−1〉 ‖ 6 ‖Vi − Ui‖sup

所以对于一个长达 n 步的量子计算, 其误差满足:

‖ψn

⟩− |ψn〉 ‖ < nϵ

是随着步长而仅仅线性增长的.进一步地, 因为最终我们读取结果都看的是概率 pi = |〈i|ψn〉|2, 可以证明 10:∑

i

|pi − pi| 6 2‖∣∣∣ψn

⟩− |ψn〉 ||

3.10 Deutsch 算法

这是一个简单的量子特长算法, 利用了量子的并行性, 假设我们有一个函数 f , 其有 4 种可能的选择:

我们希望判断计算黑盒子里的 f 是 f0, f3 中的, 还是 {f1, f2} 中的, 那么 Deutsch 算法可以帮到我们:

10怎么证?

Page 17: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 17

其思想在于, 先利用两个输入端的 Hadamard 门, 将我们输入的 |00〉 变成系统各个态均匀叠加的|ψ0〉 = 1

2(|00〉+ ...), 然后通过巧妙地设计, 使得我们要区分的特性 (比如说, 这里我们要知道 f 是那一类)

被凸显出来, 然后再读取即可. 其中的 Uf 定义是: 当 f(x) = 1 时, 将 y 反向, 否则不改变 x.这个算法的验算是简单的, 所以略去不写了.

3.11 Grover 选择算法

Grover 算法的目的是, 对于已知存在函数 f 使得对于一组 {x1, . . . , xn} 中有且仅有一个 x0 使得

f(x0) = 1, 要求寻找 x0(即, 这是一个无序检索算法). 经典算法是穷举, 需要调用 n 次 f , 但利用 Grover算法的量子计算机则只需要调用 f

√N 次 (但得到的结果有一定概率错误, 没关系, 多算几次就好了).

这个算法比此前那个要复杂一点,但其主要思想没有变化,所以可以看到,我们先使用了一个Hadamard门阵列来将输入的基态变成各个态的均匀叠加态. 至于如何把 f 凸显出来, 其同样利用的是一个特殊的Uf −NOT 门, 即, 当输入的 x 满足 f(x) = 1 时才翻转 y, 否则不改变 y. 具体地说, 考虑我们输入一个带有辅助 Qubit 的均匀分布态 |ψ0〉(略去归一化系数):

|ψ0〉 ∼ (|x1〉+ |x2〉+ ...+ |xn〉)|y〉

那么在 Uf −NOT , 作用后, 假设 f(x0) = 0, 将得到:

|ψafter〉 ∼ |x1〉|y〉+ |x2〉|y〉+ ...|x0〉(−|y〉) + ...+ |xn〉|y〉

因为波函数可以整体差一个相位, 所以我们把上式乘上一个 eiπ = −1, 就有:

|ψafter〉 ∼ (|x1〉+ ...+ (−1)|x0〉+ ...+ |x2〉+ ...+ |xn〉)|y〉

可以看到,x0 就被凸显出来了, 只是凸显得不够.具体操作上, 我们反复用:

G = DO (with D = H⊗n(−I + 2|0〉〈0|)H⊗n andO = Uf on {xi})

去作用.至于作用多少次, 这并不是越多越好的, 而是需要经过计算, 这个计算过程有一个非常漂亮的几何解

释如下图:

Page 18: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 18

其中的 |S0〉 就是被 Hadamard 门作用之后得到的均匀叠加态, 而 |x0〉 就是 f(x0) = 1 的那个. 可以证明,G 每一次作用, 就是将下面这个圆上的任一矢量逆时针旋转 α = π+2θ, 其中 θ 是 |x0〉 与 |S0〉 的夹角 (后面我有时候会略去 |〉 符号). 当我们有 GmS0 ∼ x0 的时候, 我们就可以来读取结果, 这个结果有很大概率就是 x0.现在我们来计算 m 的取值大概是多少. 当 n 很大的时候, 因为 x0 占 S0 的

1√n

, 所以大致有 cos θ =

sin(π2− γ)|γ=π

2 −θ.每次有 α = π+2θ = 2π− 2γ, 所以每作用一次 G可以视作图上矢量顺时针旋转了 2γ,当原来的 π

2差不多被一次 2γ 一次 2γ 地转到 x0 的时候, 便是可以输出结果之时, 有 m ∼ π

4

√n.

3.12 量子 Fourier 变换

在这个操作中, 量子计算的优势不单只体现在对内存的节省上, 在运算所需次数上也比经典算法有优势.(运算次数的优势可能和快速傅里叶变换一样).首先来明确一下我们的讨论目标,什么是 Fourier变换.目前,我们只讨论离散 Fourier变换,经典的离

散 Fourier变换便是,给定一组矢量:{f(0), f(1), · · · , f(N−1)},我们称其傅里叶变换为:{f(0), f(1), · · · , f(N−1)}, 如果二者之间满足关系:

f(k) =1√N

N−1∑j=0

e2πi jkN f(j)

对于量子傅里叶变换, 我们定义为其为基矢的一个变换:

F (|j〉) = 1√2n

2n−1∑k=0

e2πi jk2n |k〉

我们之所以定义量子傅里叶变换为基的变换, 而不是系数的变换, 是因为在量子中, 我们操纵基要来得更方便 (设计出相应的 Unitary矩阵就好了),到时系数不方便提取出来.但是,分析一下会发现,这样基于基定义的量子傅里叶变换会导致系数按照经典傅里叶变换来变. 假设我们有一个波函数 |ψ〉 =

∑j f(j)|j〉,

那么, 量子傅里叶变换之后, 其应当成为:∑

j f(j)|F (j)〉, 将 F (j) 的表达式展开, 就得到:

F (|ψ〉) =∑j

f(j)|F (j)〉 =∑j

f(j)1√2n

2n−1∑k=0

e2πi jk2n |k〉 =

2n−1∑k=0

f(k)|k〉

现在我们来讨论如何实现量子傅里叶变换, 也就是那个基的变换. 也就等价于寻找构造那个 Unitary

Page 19: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 19

矩阵的方式. 下面的计算我们在用巨正则系综来算全同粒子的分布函数时也用到过类似的:

F (|j〉) = 1√2n

2n−1∑k=0

exp(2πijk

2n

)|k〉

=1√2n

1∑kn−1=0

· · ·1∑

k0=0

exp(2πij

n∑l=1

kn−l

2l

)|kn−1 · · · k0〉

=1√2n

1∑kn−1=0

· · ·1∑

k0=0

⊗nl=0 exp

(2πij kn−l

2l

)|kn−l〉

= 1√2n

⊗nl=1

[∑1kn−l=0 exp

(2πij kn−l

2l

)|kn−l〉

]= 1√

2n⊗n

l=1

[|0〉+ exp

(2πij 1

2l

)|1〉]

= 1√2n

(|0〉+ e2πi0·30|1〉) (|0〉+ e2πi0·j1j0 |1〉)· · · (|0〉+ e2πi0·jn−1jn−2...j0 |1〉)

可以看到, 一个基矢结果量子傅里叶变换之后得到的是一个直积态. 我们定义 j 的二进制表示:

j = jn−1jn−2 · · · j0 = jn−12n−1 + jn−22

n−2 + · · ·+ j020

0.jljl+1 · · · jm =1

2jl +

1

4jl+1 + · · ·+ 1

2m−l+1jm

并且为了方便起见, 定义 Rk 相移阵:

Rk =

[1 0

0 exp(2πi2k

) ]

则我们最终的量子傅里叶变换可以用下面的线路图来实现:

举个例子, 如果我们要对 |11〉 = |1〉|1〉 做量子傅里叶变换, 那么过程如下 (后面我用 [] 来代替难打的|〉): 第一步, 经过 j2 = 1Hadamard 门, 得到: 1√

2([0] − [1])[1] = 1√

2([0] + [1]e2πi0.1(2))[1], 因为 j1 = 1, 所以

R2 得到执行, 再来一个 e2πi0.01(2) 的相位, 于是我们就得到了: 1√2([0] − [1])[1] = 1√

2([0] + [1]e2πi0.11(2)) =

1√2([0]− [1])[1] = 1√

2([0] + [1]e2πi0.j1j2(2))[1] 第二位同理操作即得.

可以看到, 对于 2n 个参数的量子傅里叶变换只需要涉及到 n 个 Qubit, 用 ∼ n(n−1)2

∼ O(n2) 个量子

逻辑门就可以完成了.

Page 20: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 20

3.13 量子相位估计

对于一个 Unitary 算符 U , 通过求出 Jordan 型而后归纳的方式, 可以证明其一定可以对角化, 而且特征值均为 eiϕ(ϕ ∈ R) 的形式, 其实这也好理解, 因为对于一个已经归一化的波函数 [ψ]†[ψ] = 1, 经过算符 U 作用之后应当依然保持归一化 (U [ψ])†(U [ψ]) = 1.

而这里的量子相位估计问题, 则是在问, 如果我给定一个 Uniarty 变换 U , 我应当怎么求其本征值 eiϕ

中的 ϕ? 其思路分两步: 一, 利用类似 Grover 算法那样, 通过 Csth1− U sth2 门来把信息提取到 Qubits 中;

二, 用量子傅里叶逆变换求解. 在这里物理层面的内容不多, 更多的是算法层面上的内容. 其线路图如下:

上面那一堆一开始输入 [0] 的 Qubits 是我们主要用来计算的, 下面那个 [m] 则是辅助 (为了让我们可以操纵上面的 [0] 系列, 就正如 Grover 算法一样, 我们的电路在根据运算 Qubits 的取值对辅助 Qubits做不同的操作, 最终得到的结果等价于辅助 Qubits 不变, 而运算 Qubits 获得了不同的相位. 这是量子计算的核心方法.) 然后经过 Hadamard 门, 其实做的是一个初态制备的工作.而后的 C − U2j 门, 表示的是, 如果控制线路给 [1], 那么辅助 Bit 就做操作 : [u] → U2j [u], 等价于

([0] + [1]) → ([0 + e2jiϕ[1]]). 所以结果上面那个线路操作之后, 我们将在上面那一堆运算 Qubits 中得到

(这个分解十分巧妙, 同样是利用了 y 的二进制表示):1√2n

(|0〉+ ei2n−1ϕ|1〉

)· · ·(|0〉+ ei2ϕ|1〉

) (|0〉+ eiϕ|1〉

)|u〉

=1√2n

2n−1∑y=0

eiϕy|y〉|u〉

然后我们对那一组运算 Qubits 做量子逆傅里叶变换:

F−1(|j〉) = 1√2n

2n−1∑k=0

e−2πi jk2n |k〉

对于分解 ϕ = 2π(

a2n

+ δ), 把我们的逆变换结果改写一下符号就得到:

Ans =1

2n

2n−1∑x=0

2n−1∑y=0

e2πi(a−x)y/2ne2πiδy|x〉

Page 21: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 21

可见, 如果 δ = 0, 那么当且仅当 x = a(PS, 这俩都是可以二进制表示的数, 所以直接可以在态上表示, 比如 x = a = 2 → [00 . . . 10]) 时, 求和取非 0 值 (否则 y 求和一圈, 什么都消掉了), 得到:

[a] = [x]

即输出态就是我们的 ϕ 的二进制除以 2n 表示. 比如说输出 [000 . . . 11], 则表示 ϕ = 2/2n = 2(n−1).如果 δ 6= 0, 用这种方法也会得到 |ca|2 > 4

π2 ≈ 0.405 的正确几率. 随着 n 的增加,δ 会减小, 我们的正确几率会趋近于 1.

3.14 薛定谔方程的量子计算

这个例子能够体现出量子计算的两个优势特征: 强大的并行性以及量子傅里叶算法. 为了阐述方便,我们时刻与经典计算机做对比.假定我们要求解下面这个薛定谔问题:

ih ∂∂tψ(x, t) = Hψ(x, t)

H = H0 + V (x) = − h2

2md2

dx2 + V (x)

假设给定初态 ψ0, 要求在一个给定区间 [−d, d] 上研究. 我们将区间做 2n 等分来研究. 对于量子计算机,我们需要 n 个 Qubits 来储存当前波函数, 对于经典计算机, 我们需要 2(n+1)m 个 bits 来储存当前波函数(其中,m 为 R 的储存精度).我们利用近似 e− i

h [H0+V (x)]ϵ ≈ e− 1kH0ϵe− i

hV (x)ϵ, 以:

ψ(x, t+ ϵ) = e− ih [H0+V (x)]ϵψ(x, t)

来研究波函数的演化. 为了代替求导, 我们在动量空间中计算导数:

F−1e+ih

(h2k2

2m

)ϵF e− i

hV (x)ϵ

在这里, 量子计算机对 2n 个格点同时进行 O(n2) 的量子傅里叶算法, 我们定义算量为” 召唤的运算门个数 × 召唤次数”, 则量子计算机的算量为 O(n2). 经典计算机则需要对 2n 个格点依次使用 O(2nn) 的经典

快速傅里叶算法, 经典计算机的算量为 O(22nn).具体到指数函数的赋值上 (|x〉 → eicf(x)|x〉), 经典计算机需要对 2n 个态函数执行 2n × (each time)

次运算. 量子计算机则是需要按照下面的操作 (同样类似 Grover 算法的思想):

|0〉a ⊗ |x〉 → |f(x)〉a ⊗ |x〉 → eicf(x)|f(x)〉a ⊗ |x〉

→ eicf(x)|0〉a ⊗ |x〉 = |0〉a ⊗ eicf(x)|x〉

具体过程如下 (一下过程都是同时 2n 个一起并行运算的): 在量子计算机中,[x] 已经是二进制形式了, 形如 [1001..], 然后利用一个二进制的函数 [二进制]7→[二进制], 得到另一个二进制 [f(x)], 这个二进制储存在一组辅助 Qubits 上. 然后为了让 [f(x)]→eicf(x)[f(x)], 人们再次把 y = f(x) 二进制分解,y =

∑m−1j=0 yj2

j ,使用量子中的另一个特长算法 (虽然没有单独提, 但我认为这个是量子特长了), 依靠分解:

exp(iy) = exp(

m−1∑j=0

icyj 2j

)=

m−1∏j=0

exp(icyj 2

j)

来依次用相移门:

Rz

(c2j)=

[1 0

0 exp (ic2j)

]

Page 22: Note of 量子计算与量子信息导论 - USTC

3 量子计算理论 22

作用上去. 最后把 f(x) 赋值函数逆着走回去, 回复初态, 得到 eicf(x)|0〉a ⊗ |x〉, 这个相位因子摆谁头上都没关系 (不放心的话, 可以把 [x] 多写几项, 写成 [x0] + [x1] + ...), 于是就得到了 |0〉a ⊗ eicf(x)|x〉.

此处并行赋值也是量子计算机的优势.最后重复整个步骤就可以了. 可见量子计算机的优势: 全过程以惊人的 2n 的并行度进行计算 × 量子

傅里叶算法以近 2n 倍的速度提升.

3.15 光量子计算机

这可能是最简单的量子计算机物理实现方法了...我们前面已经证明, 要构造量子计算机, 只需要构造出 Qubits 和三剑客:Hadamard 门, 相移门, 以及

CNOT 门. 我们这里用光路来试图搭建这些门.• 首先,Qubits: 我们弄两束平行的光路, 我们就记做 A 和 B 好了. 一开始我们先利用单光子源, 制造

出一个单光子, 放到这两个光路中的其中一个中去 (有且仅有一条光路有光子). 我们记 A 光路有光子而B 光路没光子为 [01] = [0],B 光路有而 A 光路无则为 [10] = [1](也即 [BA]).

• 相移门. 如下图:

•Hadamard 门. 如下图, 其中那俩三明治加在一起的表示半透半反镜, 那个点表示一个反向方向 (见下下图), 所以 [10] 进入到上线会被反向.11

•CNOT 门, 需要使用 Kerr 晶体, 其折射率满足 n(I) = n+ n2I. 但似乎描述单光子光学时用的是另11为什么? 电动力学中有这个结果? 为什么会有一条路被反向?

Page 23: Note of 量子计算与量子信息导论 - USTC

4 量子力学部分 23

一个方程 12,Hxpm = −χa†ab†b, 所以把 Hamilton 量放到指数上, 得到传播子:K = eiχLa†ab†b, 满足:

K|00〉 = |00〉K|01〉 = |01〉K|10〉 = |10〉K|11〉 = eiχL|11〉

然后, 有一个数学结论, 即 CNOT 门可以做如下分解 (CNOT 是需要输入两个 Qubits 的):1 0 0 0

0 1 0 0

0 0 0 1

0 0 1 0

︸ ︷︷ ︸

UCN

=1√2

1 1 0 0

1 −1 0 0

0 0 1 1

0 0 1 −1

︸ ︷︷ ︸

I⊗H

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 −1

︸ ︷︷ ︸

K

1√2

1 1 0 0

1 −1 0 0

0 0 1 1

0 0 1 −1

︸ ︷︷ ︸

I⊗H

因此结合 Kerr 晶体与 Hadamard 门我们就可以构造 CNOT 门了.

4 量子力学部分

4.1 纠缠态的构造

首先, 我们证明自旋单态处在自旋单态的粒子对:

|ψ〉 = 1√2(|01〉 − |10〉)

无论在什么方向, 测量到的自旋平均值都是零.(其中 |xy〉 表示一号粒子自旋在 x 态, 二号粒子在 y 态. 在讨论电子自旋的时候, 我们以 1 表示自旋 +1, 以 0 表示自旋 −1).证明不难. 考虑到自旋测量矩阵为:Si =

h2σi, 其中的 σi 是 Pauli 矩阵:

σx =

(0 1

1 0

), σy ≡

(0 −ii 0

), σz ≡

(1 0

0 −1

)

求得各个方向的特征矢为:

x :

(√2

2,

√2

2

)T

= +1,

(√2

2,−

√2

2

)T

= −1

y :

(√2

2,

√2

2i

)T

= +1,

(√2

2,−

√2

2i

)T

= −1

z : (1, 0)T= +1, (0, 1)

T= −1

凑一个比如说 z 方向的 0 自旋态, 再带入到别的方向中就可以得到验证.具体到制备上, 依据角动量守恒, 人们利用 π0 介子的衰变就可以得到那么一对自旋单态:

π0 → e− + e+

12这里我暂时不了解

Page 24: Note of 量子计算与量子信息导论 - USTC

4 量子力学部分 24

4.2 Bell 不等式以及 CHSH 不等式及其违背

这纯粹就是数学游戏而已. 在量子力学中, 我们可以证明, 假设我们用 π0 介子衰变制造出一个自旋

单态, 然后用指向分别为 a, b 的探测器去测量其自旋 (单次测量的取值只会是离散的, 不是 +1 就是 −1),并且计算其多次测量的平均值, 将得到:

P (a, b) = −a · b

这个式子将会违背接下来我们纯粹从数学上推导出来的 Bell 不等式和 CHSH 不等式 (隐变量不等式).我们假设量子力学存在隐变量 λ, 可以给出我们的测量取值, 那么就有:

A(a, λ) = ±1; B(b, λ) = ±1

因为是自旋单态, 所以对于衰变出来的那两个粒子, 测量的自旋应当有着相反的结论, 即:

A(a,λ) = −B(a,λ)

所以测量的所得的平均值是:P (a, b) =

∫ρ(λ)A(a,λ)B(b,λ)dλ

利用 A(a,λ) = −B(a,λ) 去换掉 B, 得到 P (a, b) = −∫ρ(λ)A(a,λ)A(b,λ)dλ. 引入随便的另一个方向

c, 有:P (a, b)− P (a, c) = −

∫ρ(λ)[A(a, λ)A(b, λ)−A(a, λ)A(c, λ)]dλ

利用[A (b, λ)

]2= 1, 改写 (这一步是变形的核心), 得到:

P (a, b)− P (a, c) = −∫ρ(λ)[1−A(b,λ)A(c,λ)]A(a,λ)A(b,λ)dλ

显然 −1 6 [A(a, λ)B(b,λ)] 6 +1, 所以:

|P (a, b)− P (a, c)| 6∫ρ(λ)[1−A(b,λ)A(c,λ)]dλ

也就是 |P (a, b)− P (a, c)| 6 1 + P (b, c). 与我们前面的 P (a, b) = −a · b 是矛盾的 (带一些角度进去验算一下, 不难举出例子). 这是通常说的 Bell 不等式.如果在计算 P (a, b)−P (a, c) 的时候我们选择另一条展开路线 (下面改变了符号, 不过不至于造成混

乱), 就有:C(a, b)− C

(a, b′

)=

∫ [A(a, λ)B(b, λ)−A(a, λ)B

(b′, λ

)]ρ(λ)dλ

=

∫A(a, λ)B(b, λ)

[1±A (a′, λ)B

(b′, λ

)]ρ(λ)dλ

−∫A(a, λ)B

(b′, λ

)[1±A (a′, λ)B(b, λ)] ρ(λ)dλ

所以: ∣∣C(a, b)− C(a, b′

)∣∣ 6∫ [1±A (a′, λ)B(b′, λ

)]ρ(λ)dλ

+

∫[1±A (a′, λ)B(b, λ)] ρ(λ)dλ

变形一下, 最终得到的就是: ∣∣C(a, b)− C(a, b′

)∣∣+ ∣∣C (a′, b) + C(a′, b′

)∣∣ 6 2

这个被称之为是 CHSH 不等式, 同样不难举出例子证明量子力学的结果与这条不等式是相违背的.

Page 25: Note of 量子计算与量子信息导论 - USTC

5 量子信息部分 25

5 量子信息部分

5.1 BB84 协议

之所以叫这个名字, 是因为本协议是由 Bennett 和 Brassard 在 1984 年提出的...这个协议并不像我之前想象的那样, 用两个纠缠的粒子来传递密钥. 而是没有使用纠缠, 单纯地利用

了早年量子力学的两个观察:•Uncertainty Principle: 如果有两个相干的算符 [A,B] 6= 0, 那么我们不能同时测量 A 和 B, 因为对

其中一个量 (比如 A) 的测量会导致系统坍缩到这个量 (A) 的本征态上, 从而导致另一个量 (B) 取值上一定程度的随机性.

• 无复本定理: 我们不能复制量子态.其实这两个定理是相关联的 (第二个是第一个的必要条件), 如果我们能够复制量子态, 那么我们就可

以通过观测复制出来的那一堆替身而精确地测定原来那个粒子的状态.(如果我们复制出来的替身与原来的粒子相纠缠, 那么是另外一种情况 13).

直观上, 可以这样理解量子力学的限制: 只要你观察, 系统就会发生改变, 从而我们就有机会判断你是否在观察. 因此, 如果你不是全都观察了 (全都观察了, 这就是” 全频段阻塞” 了...), 我们甚至能够找出哪些量是你观察了的, 而哪些是你没有观察到的. 那些你没观察到的信息, 就是安全的.(至于这个安全的信息具体如何使用, 因为这个信息有一部分可能会丢掉, 所以做密钥比较好 (做有含义的信息, 比如程序的话, 可能会丢掉一些上下文, 我不知道是否有对应的纠错机制)).有了上面的分析,BB84 协议就比较容易想到了. 假设有个大学生心血来潮要和前面那个跑纸带的小

学生通信, 告诉他新的程序是什么. 但是这个大学生不希望那个铺纸带的中学生窃听他们的通信, 所以大学生决定教小学生 BB84 协议. 首先, 大学生在市面上买了两套正交的量子态制造-观测仪器, 比如说,A机器观察电子的 x 方向自旋,B 机器观察 y 方向自旋 (实际应用中, 用光子会更方便). 然后大学生保留了A,B 的量子态制造装置, 把 A,B 的量子态观测仪器快递给了小学生.随后, 大学生随机制造了一个 1GB 的随机二进制序列, 还有一个 1GB 的密钥列 (具体长什么样子取

决于加密算法, 这个是经典信息的内容了, 我们假设这也是随机生成的好啦, 反正能用). 这个大学生决定,当序列上对应位置为 0 时, 用 A 机器编码对应位置的密钥列; 为 1 时, 用 B 机器编码. 所以这个大学生现在有了 1GB 的 Qubit, 他把他们全都丢给小学生, 让小学生随机选用 A,B 接收机来读 Qubit.那么, 在理想的未窃听情况下, 这个小学生就有 50% 的几率选取正确的机器, 得到绝对正确的结

果.50% 的几率选错, 得到一半对一半错的结果 (因为这个是随机的). 综合地, 这个小学生得到的结果中有 75% 与大学生给的一样.然后, 通过公共的经典频道 (比如, 大喇叭, 互联网, 这里的信息随便窃听, 但是不能够被更改 (因为是

广而告之的,很难偷偷地篡改)),大学生广播自己的机器序列 {undergraduate},小学生也广播自己的机器序列 {primary}, 他们一交, 取到大概 500MB 的相同机器序列 {undergraduate ∩ primary}.然后, 这个大学生广播 1MB 左右的他刚刚发送出去的 Qubit 到底是多少, 以供小学生比对. 理想的

情况是, 因为小学生和大学生使用了正确的配套的机器来处理 Qubit, 得到的结论应当是一样的, 也即, 正确率为 100%.(环境噪声会使得这个降低, 但我们不考虑环境噪声先).但是, 如果有个中学生窃听了他们的信息, 就是说, 中学生也买了一套 A,B 接收机, 随机选用 A,B 来

偷听大学生发的那 1GB的 Qubit,那么,依据同样的论述,他会导致大学生 1GB的 Qubit中的 50%Qubit被破坏掉, 成为完全随机的.(需要注意的是, 此前的小学生也破坏了 50% 的 Qubit, 这与他得到 75% 的信息并不矛盾, 因为 0.5× 1.0 + 0.5× 0.5 = 0.75)

13有没有可能无复本定理会遇到纠缠?

Page 26: Note of 量子计算与量子信息导论 - USTC

5 量子信息部分 26

所以, 如果那个被广播出来的 1MBQubit 恰好是全都被窃听了, 那么小学生会发现, 这个广播出来的Qubit 中只有 75% 与自己测量的结果相同. 于是他们就发现有人窃听.但是, 毕竟原来的 Qubit 有 1GB, 也许总是有那么几十 MB 是中学生没有窃听到的. 只要大学生和小

学生不断 1MB,1MB地对比 Qubit测量结果,说不定能找到正确率将近 100%的几段,那么在这几段就可以选来当密钥了 (当然要扣除掉已经公布的那个 1MB).

5.2 B91 协议

与 BB84 的大致思想是一样的.最简单的模型就是, 大学生和小学生同样有两台机子 A,B, 分别检验的是 x 方向的自旋和 y 方向的

自旋. 不同的是, 这次大学生先制造了 1GB 的 EPR 纠缠对, 比如说正负电子对. 然后每一对中自己取一个, 另外的就给小学生.这次利用的检验公式是 P (a, b) = −a · b. 然后同样是各自测量 1MB 之后, 公布测量机器, 留下用相

同机器测量的那些, 并且通过检验是否 P (a, b) = −a · b 来判断噪声以及是否依然纠缠. 与此前的 BB84不同的是, 这里的密钥是在测量的时候才生成的, 这也许会带来一些方便.14.

14具体的,B91 与 BB84 相比的优点是什么? 还是我对 B91 的理解有什么偏差?