从逻辑层面谈量子计算
2020 年 7 月 13 日
摘要: 本文从量子计算的逻辑层面出发,分析量子计算的逻辑门架构,再以此为基础,讨论两
种典型的量子算法,最后再从量子算法所需要的硬件条件来分析当下量子计算的实现困难与
发展方向。
关键词: 量子逻辑门,Deutsch-Jozsa算法,shor算法
1 基本的量子逻辑门介绍
1.2 Pauli-X门
1.1 Hadamard门
1√
2
比如输入|0就得到输出 1
态转化为一个叠加态。
1
1
1 −1
2 (|0 + |1),H门使得基
(1)
RX矩阵由Pauli-X门生成
2 ) −isin( θ
cos( θ
2 )
−isin( θ
cos( θ
2 )
2 )
(4)
RX(θ) =
1
经 典 计 算 机 在 逻 辑 层 面 的 基 础 是nand门,
or门,and门等一些简单的逻辑门,然后再通过
这些逻辑门的组合完成复杂的功能。量子计算
机也不例外。但和经典计算机不同的是,单量
子比特由于存在叠加态,需要用一个2维向量来
表示,自然,n个量子比特状态的统一表示就需
要用2n维的向量来进行表示。因此,操纵单量子
比特的量子逻辑门应当是一个2*2的矩阵,而操
纵2个量子比特的量子逻辑门则是4*4的矩阵。另
外,从硬件实现上来讲,因为量子计算机的输入
输出都是某一力学量的本征态的叠加,要求系数
模的平方和为1。因此表示量子比特的向量必定
模长为1,这要求量子逻辑门是酉矩阵,变换不
改变向量的长度。
0 1
1 0
(2)
Pauli-X门也称为Not门,对于任意一种叠加态输
入 α|0 + β |1,输出为 β |0 + α|1。
1.3 Pauli-Y与Pauli-Z门
0 −i
0
i
1
0
0 −1
(3)
左 边 的 矩 阵 对 应Pauli-Y门, 右 边 的 矩 阵 对
应Pauli-Z门, 3种Pauli门 作 为 生 成 元 可 以 构
成RX,RY,RZ矩阵。
1.4 RX(θ),RY(θ),RZ(θ)门
(5)
(6)
RX矩阵由Pauli-Y门生成
RY (θ) =
2 ) −sin( θ
cos( θ
2 )
cos( θ
sin( θ
2 )
2 )
RZ矩阵由Pauli-Z门生成
RZ(θ) =
1
0
0 eiθ
1.5 多量子比特逻辑门
例如输入为|11时,输出为|10
1 0 0
0 1 0
0
0
0 0 1
0
0 0 0 eiθ
(9)
CR(θ) =
CR门 是 受 控 的 相 转 门, 当 高 位 的 控 制 比 特
为0时,CR门输入输出相同,当高位的控制比
特为1时,CR门会将低位目标比特的处于|1态
的部分相位增加θ,但不会改变目标比特的处
于|0态的部分(这里我们是考虑了低位处于叠
加态的情况)。CR门在shor算法中构建量子傅里
叶变换十分有用。
首先进行一个符号约定,当我们写多量子比
特的狄拉克符号来描述多量子系统的状态时,最
2 两种量子算法分析
左边的量子比特称为最高位,而最右边的量子比
特称为最低位。例如|01,我们称0为最高位,1为
最低位。这个狄拉克符号描述了两量子比特系统
的状态,低位量子比特处于|1态,高位量子比
特处于|0态。向量表示:
=
0
1
0
0
1
0
⊗
0
1
|01 =
其中⊗表示张量积
一些常用的两量子比特逻辑门:
1 0 0 0
0 1 0 0
0 0 0 1
0 0 1 0
CON T =
2.1 Deutsch–Jozsa算法
Deutsch-Jozsa算法是第一个被提出来的量子
算法(尽管它的实际意义并不明显)。它关心
的是如下问题:给出函数f (x),接收n个比特的
输入,输出0或者1,那么输入一共有2n种可能,
假设f (x)仅有两种情况,要么恒为常数(称为
好函数),要么针对一半的输入会输出0(称为
坏函数),另一半的输入会输出1。现在需要判
断f (x)属于哪种函数。在经典计算机中,要确保
得到正确的结果,显然,在最坏的情况下,我
们需要进行2n−1 + 1次输入才能确保得到正确的
结果。而Deutsch–Jozsa算法指出,在量子计算机
中,只需要一次输入即可得到结果。
2.1.1 算法的逻辑电路实现
(7)
(8)
这种形式的CNOT门对应高位为控制比特,低位
为目标比特,CNOT门不改变控制比特的状态,
当输入的控制比特为0时,不改变目标比特的状
态,当输入控制比特为1时,将目标比特翻转。
图 1: 该算法的逻辑电路
⊗n表 示 该 行 实 际 上 有n行, 因 此 电 路 中
2
不论x = 0或者1,总有
H |x =
1√
2
(−1)x·z |z
(14)
由此可得
H |x1 H |x2 =
1√
22
因此我们可以得到一般的结果
(−1)x1·x2+z1·z2 |z1|z2
(15)
z∈{1,2}
z1,z2∈{0,1}
2n−1
z=0
H⊗n |x =
1√
2n
(−1)x·z |z
(16)
这里的x,z都是用十进制数字来表示n个量子比
特的状态,x · z应该理解为x1 · z1 + ··· + xn · zn,
其中x1 ··· xn, z1 ··· zn是x和z的二进制表示这样
我们得到了前n个量子比特的系统此时的状态
(这里我们忽略了第n+1个比特,因为最后不会
对它进行测量)
2n−1
2n−1
x=0
z=0
1√
2n
(−1)f (x)+x·z |z
(17)
逻 辑 电 路 图 中 的M表 示 测 量, 我 们 来 分 析 一
下 不 同 的f (x)对 应 的 测 量 结 果 会 有 什 么 不 同。
如果f (x)是好函数,则f (x)恒为0或者1,当z =
0时(注意是十进制的0),(−1)f (x)+x·z对于任意
的x都是同号的,因此我们得到|0前面的系数
为1或者-1,这意味着如果f (x)是好函数,我们
必定测量到系统的状态为|0,如果f (x)是坏函
数,当z = 0时,(−1)f (x)+x·z对于一半的x是1,
对于另一半的x是-1,因此|0前面的系数为0.我
们 测 到 系 统 的 状 态 不 可 能 是|0, 这 样 我 们 通
过 一 次 输 入, 根 据 最 终 的 测 量 结 果 便 能 够 判
断f (x)的类型。
有n个处于|0态的量子比特输入,1个处于|1态
的 量 子 比 特 输 入, 每 个 量 子 比 特 都 会 经 过 一
个hadamard门, 这 里 的 黑 匣U由f (x)包 装 而 成,
接 收n + 1个 量 子 比 特 的 输 入,输 入 输 入 关 系
为:|y|x ⇒ |y (|x ⊕ |f (y),注意这个|y是描
述的是n个量子比特系统,而x是描述的是1个量
子比特系统,⊕表示模2的加法。
再做一个符号约定:由于多量子比特系统可以
通过描述子系统的狄拉克符号的张量积表示,
为了简便,我们通常省略张量积符号(例如上面
的y和x)。此外,由于多量子系统的本征态是用
一串0,1序列的狄拉克符号表示,因此我们可
以用直接用一个十进制数替代01序列(例如上面
的y就可以理解为取值为0到2n − 1的整数)
2.1.2 算法过程分析
该电路接收的输入为|0|1(注意这个0是十
进制的0,描述n个量子比特的系统),每个量子
比特经过H门,系统状态变为
(|0) + |1)··· (|0 + |1)
(|0 − |1) (10)
1√
2n+1
或者可以写为
1√
2n+1
n
2n−1
x=0
|x (|0 − |1)
(11)
经过算子U作用后,系统状态演化为
|x (|0 ⊕ f (x) − |1 ⊕ f (x))
(12)
容易看出,不论f (x)的值为0还是1,系统的状态
都可以表示为
2n−1
x=0
1√
2n+1
2n−1
1√
2n+1
(−1)f (x) |x (|0 − |1)
2.1.3 Deutsch–Jozsa算法的评析
(13)
x=0
本质上来说,我们之所以能够通过一次输
然后将n个H门作用在前n个量子比特上,我们需
要计算H⊗n |x,注意到在单量子比特的情况下,
入判断出f (x)的类型,是因为我们能够输入叠
加态,而输入的这种叠加态恰好能够把f (x)的
3
性质完全地反应出来(或者说,当我们向f (x)输
(|0 + |1)时,相当于同时输入了0和1,实
入 1√
2
现了并行计算,因此我们把初始比特通过H门之
后再作为U的输入,就相当于一次性把所有情况
都输入进去了。但是我们并不能直接拿到并行
计算的结果,这依赖于测量)。而经典计算机只
能输入0,1,没有办法同时输入多种状态。要得
到f (x)的可能输出,就需要重复输入,这花费了
大量时间。这种同时输入多种状态实现并行计算
的想法在shor算法中我们还会看到。
2.2
shor算法
shor算法是Peter shor在1994年提出的一种量
子算法,主要用来实现大数分解(说“主要”是
因为shor算法的应用不仅于此,还可以用来计算
离散对数等)。shor算法的亮眼之处是,平均意
义上来讲,它可以在多项式时间内实现大数分
解,这对RSA加密算法构成了威胁。因此接下来
的算法描述我们仅考虑待分解的大数由两个不
同的素因子组成这种情况,即N = p ∗ q(RSA加
密算法采用的大数就是如此)
度的计算。算法步骤3是shor算法的核心,由量
子计算机完成。
2.2.2 算法步骤3的概要
图 2: 步骤3的逻辑电路
其中CU是受控模指元件,QF T −1是量子傅
里叶变换的逆变换,但实际上,使用正变换和逆
变换的效果是相同的。在下面的实际搭建中,我
们采用的是正变换。
2.2.3 使用逻辑门搭建QFT
QFT变换从矩阵的角度来说,实际上是一个
由单位根构成的酉矩阵
2.2.1
shor算法的主要流程
给定大数N,采用如下步骤对N进行分解
QF T =
1√
M
1
1
1
ω
1 ωM−1
1
ωM−1
···
···
...
··· ω(M−1)(M−1)
M×M
1. 随机选择正整数a,1 < a < N ;
2. 计算gcd(a, N ),如果结果gcd(a, N ) = 1,返回第
一步;
3. 寻找a模N的阶,即最小的正整数r,使得ar ≡
1(modN );
4. 如果找到的r是奇数,或者a
返回第一步;
r
5. 计算gcd(a
2 + 1, N )和gcd(a
算结果分别对应p和q,分解完成
算法步骤1,2,4,5由经典计算机完成(算法步
骤5的正确性只需要用一点点的数论知识便可得
到),我们知道,加百利cdot拉梅已经证明了辗
2 − 1, N ),两个计
2 ≡ −1(modN ),
r
r
转相除法的时间复杂度为O(log(a + b)),因此,
经典计算机上进行的运算是一个线性时间复杂
4
2πi
(18)
M , 矩 阵 的 第i行j列 对 应 的 元 素
其 中ω = e
为ωi·j,约定矩阵的行列指标是从0开始的,即从
第0行到第M-1行。容易验证这个矩阵确实是酉
矩阵。在shor算法用到的QFT矩阵的大小M是2的
幂次,我们假设M = 2n,则我们可以知道n个量
子比特的系统的本征态|j1j2 ··· jn经过QFT之后
状态演化为
(|0 + e2πi0.jn |1)(|0 + e2πi0.jn−1jn |1)··· (|0 + e2πi0.j1···jn)
其中0.jkjk+1 ··· jn =n
(19)
2t−k+1 我们来分析上
述结论成立的合理性。首先注意到一个性质,若
t=k
2
n
2
jt
设j1j2 ··· jn对应的十进制为x,则|x对应的2n次
方维向量表示v,v的第x位是1,其它位是0(约定
位数指标是从0开始,与矩阵的行列指标约定一
致),这个性质可直接由张量积的运算法则得
到。因此QFT作用在|j1j2 ··· jn之后,系统状态
变为
ωs·x |s
(20)
M−1
s=0
1√
M
接下来只需证明(19)式与(20)式等价,对任意一
个 态|s,设s的 二 进 制 表 示 为m1m2 ··· mn我 们
比较两个式子的|s态前的系数。显然,(20)式
的|s态前的系数为
1 0 0
0 1 0
0 0 1
0 0 0 e
0
0
0
2πi
2k
是受控的CR门,图中的黑点表
示CR门的控制比特,Rk所在线路对应的是目标
比特。并注意到我们有
H |j =
1√
2
(|0 + e2πi0.j |1)
(23)
回顾一下在量子逻辑门中对CR门性质的介绍,
可知上面的逻辑电路确实等价于一个QFT矩阵。
e2πi· (m1m2···mn)(j1j2···jn)
2n
(21)
2.2.4 CU门概述
=
由 于e2πi
1, 我 们 在 计
算(m1m2 ··· mn)(j1j2 ··· jn)时 只 需 要
在mod2n的 意 义 下 进 行 即 可。 可 知 任 意 一
位mk,若mk = 0,则mk对指数大小的贡献为
mk · 2n−k · (jn−k+1 ··· jn)
2n
= 0.jn−k+1 ··· jn
(22)
若mk = 0,则 它 对 指 数 大 小 没 有 贡 献,现 在
看(19)式,要在(19)式的展开项中得到|s态,如
果mk = 1,就在乘积式的第k项中取|1,该项对
指数大小的贡献为0.jn−k+1 ··· jn,如果mk = 0,
就在乘积式的第k项中取|0,该项对指数大小无
贡献。由此可以得到|s的在两式中的系数是相
等的。因此(19)与(20)式等价。
通 过(19)式, 我 们 很 容 易 发 现 下 面 的 逻
辑 电 路 等 价 于 一 个QFT矩 阵 其 中Rk =
每个CU门是一个受控的模指电路,图2中的
黑点表示控制位,如果控制位是0,那么不改变
目标比特(目标比特是图中的Lower Regsiter)。
如果控制位是1,那么将目标比特的状态从输入
的|s变为|k · s(modN ),k是图2中CU门上的数
值,不同的CU门k是不一样的。因此,CU门就
类似于经典计算机中的一个乘法元件,它的具体
搭建方式也类似于经典的计算机电路,先用量子
逻辑门搭建基本的加法器··· ,这里就没有详细
论述的必要了。
2.2.5 输入设置与系统状态演化
了 解 了QFT和CU门 的 功 能 之 后, 我 们 来
分 析 图2中 的 输 入。 首 先 我 们 选 取 一 个2的 方
幂Q, Q = 2n, 要 求N 2 ≤ Q ≤ 2N 2, 这
个Q的选取方式显然是唯一的(后面会讨论这
样选取Q的原因),N是待分解的大数。取图2中
的Upper Regsiter是一个n量子比特的输入(且输
入状态是|0),则QF T −1是一个2n的酉矩阵,下
面 的Lower Regsiter输 入 规 模 也 取 为n量 子 比 特
(其 实 只 要 保 证2n > N 就 可 以 了,因 为Lower
Regsiter的作用是表示modN 的余数),输入状态
是|1。
接 下 来 我 们 分 析 图2的 系 统 演 化。 初 始 状 态
图 3: QFT的逻辑电路
5
Q−1
k=0
1√
Q
Q−1
k=0
1√
Q
为|0|1,经过H门之后,系统的状态变为
|k|1
(24)
记f (x) = ax(modN ),则 经 过 一 系 列 的CU门,
系统的状态演化为
|k|f (k)
(25)
(25)式 的 合 理 性 很 容 易 想 清 楚。 在 经 过CU门
之 前, 系 统 状 态 为(24)式, 是 一 系 列 本 征
态|k|1的 叠 加。 当 本 征 态|k|1经 过CU门 时,
写出k相应的二进制表达式,根据CU门的输入
输出规则,很容易发现输出的状态为|k|f (k),
再叠加回来,便得到(25)式(也可以认为这样做
的合理性在于CU门本质上是一个线性变换的矩
阵)。
接 下 来 用QFT矩 阵 作 用 于Upper Regsiter, 根
据(20)式可知此时系统状态演化为
示sr模Q的余数。我们计算测到这样的s的概率,
上式可以写为
P (s, f (k)) = | 1
Q
b{sr}Q
Q |2
e2πi
(29)
Q−k−1
r
b=0
{sr}Q
Q −1))
Q−k−1
上式是对b的离散求和,我们把绝对值内部的项
转化为积分,写做
b{sr}Q
(Q − k − 1)/r
r
0
Q
e2πi
Q db+O(
1
(e2πi
Q
(30)
第二项是误差项,由于−r/2 ≤ {sr}Q ≤ r/2,
对误差项直接取模进行估计,可知误差项不超
过O(1/Q),现在我们做代换u = rb/Q,我们得到
上式可写为
Q· Q−k−1
r
u{sr}Q
r
e2πi
du + O(1/Q)
(31)
r
0
1
r
我们把积分上限放大到1,容易看出产生的误差
不超过1/Q,因此上式化为
e2πi s·k
Q |s|f (k)
(26)
1
r
u{sr}Q
r
e2πi
du + O(1/Q)
(32)
1
0
Q−1
Q−1
k=0
s=0
1
Q
最 后 我 们 对 进 行 测 量。 假 设a模N的 阶 为r,
即r为f (x)的最小正周期,f (x)仅有r种可能的取
值,对这r种取值中的任意一种f (k),0 ≤ k ≤
r − 1我们知道测量得到状态|s|f (k)的概率为
P (s, f (k)) = | 1
Q
e2πi s·j
Q |2
(27)
不妨设j = br + k,并注意到k不受求和,因此上
式可以化为
j≡k(modr)
Q−k−1
r
b=0
计 算 该 定 积 分, 我 们 知 道 当{sr}Q = 0时,
该 定 积 分 的 模 长 取 到 最 大 值1/r, 当{sr}Q =
±1/2时, 该 定 积 分 的 模 长 取 到 最 小 值 2
πr , 由
于r < N 且Q = N 2,结合N是一个大数,可知
误差项可忽略不计。总之,我们得到对于一个满
足余数要求的s,测量到态|s|f (k)的概率满足
P (s, f (k)) >
4
π2r2 >
1
3r2
(33)
假 设 我 们 测 量 得 到 了 这 样 的s, 即−r/2 ≤
{sr}Q ≤ r/2,因此存在一个非负整数d满足
P (s, f (k)) = | 1
Q
Q |2
e2πi sbr
(28)
−r
2
≤ sr − dQ ≤ r
2
容 易 想 到, 当 sr
Q 越 靠 近 整 数 时, 上 面 的 概 率
越 大, 由 于s的 取 值 是 在0到Q-1, 因 此 可 知 使
得−r/2 ≤ {sr}Q ≤ r/2的s总是存在的,{sr}Q表
上式也可以写作
| s
Q
− d
r
| ≤ 1
2Q
6
(34)
(35)
只能输入本征态的经典计算机没办法做到的(如
果我们依次计算ak,这个时间复杂度是O(N ),
就成了一个指数时间复杂度的算法了)。这个想
法与Deutsch–Jozsa算法很相似。
3 量子计算机的困难与发展方向
从shor算法中可以看出,如果我们希望利
用shor算法破解RSA加密体系,例如需要分解一
个400位的整数,我们需要几千个量子比特,而
当下的硬件技术还远远不能达到这一要求。其
次,shor算法虽然是多项式时间复杂度的算法,
在分解大整数时也需要一定的时间,这对量子比
特的相干状态的维持提出了很高的要求。实际
上,对于单量子比特系统而言,目前最好的相干
时间是10分钟左右。而对于多量子比特系统,能
维持的相干时间就更短了。一旦在程序运行过
程中量子比特退相干,那么这些依赖于叠加态
实现并行计算的算法就失效了。因此,到实际应
用shor算法来破解RSA加密体系,还需要一段较
长的时间来发展量子计算机的硬件。此外,目前
提出的行之有效且明显优于经典算法的量子算
法也很少,我们也需要更多的有效的量子算法,
才能让量子计算机发挥出它应有的作用。
参考文献
[1] 郭国平,陈昭昀,郭光灿著:《量子计算机
与编程入门》北京,科学出版社
[2] Peter W.shor:Polynomial-Time Algorithms for
Prime Factorization and Discrete Logarithms on
a Quantum Computer[J]. Siam Review, 1999
[3] D.Deutsch,R.Jozsa:Rapid solutions of problems
by quantum computaion,Proc.Royal Society of
London A,439,553,1992
注 意 这 个 时 候s,Q都 是 已 知 量, 我 们 证 明 满
足(35)式的且分母小于N的分数至多只有1个,假
设存在 d1
r1
都满足要求,则
= d2
r2
1
N 2 <
1
r1r2
≤ | d1 · r2 − d2 · r1
r1r2
| ≤ 1
Q
(36)
这与我们对Q的选取相违。既然上面的讨论表
明,如果我们测到了一个满足余数要求的s,我
们就可以利用连分数逼近算法唯一地得到 d
r 。这
里要求gcd(d, r) = 1,否则得到的分母是r的一个
因子,并不是我们真正想要的r。
因 此 我 们 每 做 一 次 测 量,得 到 一 个s,得 到 一
个c利 用 连 分 数 逼 近 算 法 得 到(也 有 可 能 得 不
到)r∗,然后检验它是否是我们要找的r,如果
是,那么输出这个r,整个步骤3结束,如果r∗并
不是我们要的r,那么重复进行步骤3。
我们来计算测到满足要求的s的概率,首先s需
要满足余数要求,其次需要保证gcd(d, r) = 1。
满 足gcd(d, r) = 1的d有ϕ(r)个, 其 中ϕ(r)是 欧
拉 函 数。 对 每 一 个 这 样 的d, 显 然 都 能 找 到
一个满足(34)式的s,又对于每个s,处于Lower
Regsiter的态f (k)有r种本征态,因此我们得到测
到满足要求的s的概率
P (|s) > rϕ(r) · 1
3r2 =
ϕ(r)
3r
(37)
由欧拉函数性质,存在正常数δ,使得对大于3的
正整数r有 ϕ(r)
loglogr (《数论导引》定理328
(哈 代)) 因 此, 我 们 重 复 测 量O(loglogr) <
r >
δ
O(loglogN )次 后, 有 足 够 高 的 概 率 得 到 正 确
的r,因此整个步骤3是多项式时间复杂度的算法。
2.2.6
shor算法的评析
shor算法能做到在多项式时间内分解整数,
最为关键的是算法步骤3,而算法步骤3最为关键
的步骤在于先让n位量子比特的Upper Regsiter通
过H门,得到|k,k取遍0到Q-1所有的Q个本征
态(参见(24)式),此时这个叠加态通过CU门,相
当于同时计算了ak(modN ),k取遍0到Q-1。这是
7