您现在的位置是:首页 >技术交流 >量子计算:纠错码 & 量子算法网站首页技术交流
量子计算:纠错码 & 量子算法
量子纠错码
对于量子态的纠错,与经典信息论中的纠错有着巨大的不同,
- 量子态不可克隆性:重复码是不可能实现的
- 差错是连续的:量子比特是复数域上无限精度的向量
- 测量会破坏量子态:解码时无法观测校验子
解决办法:不直接对数据态测量,也不简单复制,而是通过添加额外量子位,把单个 qubit 的错误收集到冗余 qubits 上,并通过量子线路运算(可以不测量)来恢复单个 qubit 的量子态。
Shor 码
纠正比特翻转错误(信道以概率
p
p
p 执行
X
X
X 酉运算):
∣
ψ
⟩
↦
(
α
∣
0
⟩
+
β
∣
1
⟩
)
∣
0
⟩
∣
0
⟩
↦
α
∣
000
⟩
+
β
∣
111
⟩
|psi
angle mapsto (alpha|0
angle + eta|1
angle)|0
angle|0
angle mapsto alpha|000
angle + eta|111
angle
∣ψ⟩↦(α∣0⟩+β∣1⟩)∣0⟩∣0⟩↦α∣000⟩+β∣111⟩
收到量子态 ∣ x y z ⟩ |xyz angle ∣xyz⟩,假设它至多发生一比特的比特翻转,那么校验子 x + z x+z x+z 和 y + z y+z y+z 就指示了发生比特翻转的位置。因为 X 2 = I X^2=I X2=I,我们只需对 x x x 执行一次 C 2 ( X ) C^2(X) C2(X) 就得到了 ∣ ψ ⟩ |psi angle ∣ψ⟩。不过 Toffoli 门的容错实现很复杂。可以将 α ∣ 000 ⟩ + β ∣ 111 ⟩ alpha|000 angle + eta|111 angle α∣000⟩+β∣111⟩ 看做是由 ∣ 000 ⟩ , ∣ 111 ⟩ |000 angle, |111 angle ∣000⟩,∣111⟩ 张成的 1 1 1 维线性码(线性子空间),极小距离是 3 3 3。
纠正相位翻转错误(信道以概率
p
p
p 执行
Z
Z
Z 酉运算):
∣
ψ
⟩
↦
α
∣
000
⟩
+
β
∣
111
⟩
↦
H
⊗
3
α
∣
+
+
+
⟩
+
β
∣
−
−
−
⟩
|psi
angle mapsto alpha|000
angle + eta|111
angle overset{H^{otimes 3}}{mapsto} alpha|+++
angle + eta|---
angle
∣ψ⟩↦α∣000⟩+β∣111⟩↦H⊗3α∣+++⟩+β∣−−−⟩
其中 ∣ + ⟩ : = H ∣ 0 ⟩ = ∣ 0 ⟩ + ∣ 1 ⟩ 2 , ∣ − ⟩ : = H ∣ 1 ⟩ = ∣ 0 ⟩ − ∣ 1 ⟩ 2 |+ angle := H|0 angle = dfrac{|0 angle+|1 angle}{sqrt2}, |- angle := H|1 angle = dfrac{|0 angle-|1 angle}{sqrt2} ∣+⟩:=H∣0⟩=2∣0⟩+∣1⟩,∣−⟩:=H∣1⟩=2∣0⟩−∣1⟩
收到量子态 ∣ x y z ⟩ |xyz angle ∣xyz⟩,假设它至多发生一比特的相位翻转。由于 H 2 = I H^2=I H2=I, H Z H = X HZH=X HZH=X,因此对 ∣ x y z ⟩ |xyz angle ∣xyz⟩ 执行 H ⊗ 3 H^{otimes 3} H⊗3 就转化为了至多发生一比特的比特翻转。接下来使用纠正比特翻转的解码电路即可。可以将 α ∣ + + + ⟩ + β ∣ − − − ⟩ alpha|+++ angle + eta|--- angle α∣+++⟩+β∣−−−⟩ 看做是由 ∣ + + + ⟩ , ∣ − − − ⟩ |+++ angle, |--- angle ∣+++⟩,∣−−−⟩ 张成的 1 1 1 维线性码(线性子空间),极小距离是 3 3 3。
那么,如何同时对抗比特翻转错误 或/和 相位翻转错误呢?Shor 编码将上述的比特翻转纠错码和相位翻转纠错码组合起来。因为
X
Z
=
−
Z
X
XZ=-ZX
XZ=−ZX,我们忽略整体相因子,它们是相同的酉运算。我们可以先纠正比特翻转错误,然后再纠正相位翻转错误。
∣
ψ
⟩
↦
α
∣
+
+
+
⟩
+
β
∣
−
−
−
⟩
↦
α
∣
0
L
⟩
+
β
∣
1
L
⟩
|psi
angle mapsto alpha|+++
angle + eta|---
angle mapsto alpha|0_L
angle + eta|1_L
angle
∣ψ⟩↦α∣+++⟩+β∣−−−⟩↦α∣0L⟩+β∣1L⟩
其中
∣
0
L
⟩
:
=
(
∣
000
⟩
+
∣
111
⟩
)
(
∣
000
⟩
+
∣
111
⟩
)
(
∣
000
⟩
+
∣
111
⟩
)
2
2
∣
1
L
⟩
:
=
(
∣
000
⟩
−
∣
111
⟩
)
(
∣
000
⟩
−
∣
111
⟩
)
(
∣
000
⟩
−
∣
111
⟩
)
2
2
|0_L
angle := dfrac{(|000
angle+|111
angle)(|000
angle+|111
angle)(|000
angle+|111
angle)}{2sqrt2}\ |1_L
angle := dfrac{(|000
angle-|111
angle)(|000
angle-|111
angle)(|000
angle-|111
angle)}{2sqrt2}\
∣0L⟩:=22(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)(∣000⟩+∣111⟩)∣1L⟩:=22(∣000⟩−∣111⟩)(∣000⟩−∣111⟩)(∣000⟩−∣111⟩)
于是 Shor 编码用 9 9 9 个 qubits 编码了 1 1 1 个 qubit。它可以纠正至多一比特的比特翻转以及至多一比特的相位翻转(发生错误的位置可以相同也可以不同)。而对于两个以上的比特翻转或者两个以上的相位翻转,Shor 有时可以纠正,有时不可以纠正。
CSS 码
Calderbank-Shor-Steane 码使用经典线性纠错码及其子码和对偶码来构造量子纠错码。
Hadamard 变换,将 ∣ 0 ⟩ |0 angle ∣0⟩(Bloch 球面 ( θ = 0 , ϕ = 0 ) ( heta=0,phi=0) (θ=0,ϕ=0))映射到了 ∣ + ⟩ : = H ∣ 0 ⟩ |+ angle:= H|0 angle ∣+⟩:=H∣0⟩(Bloch 球面 ( θ = π / 2 , ϕ = 0 ) ( heta=pi/2,phi=0) (θ=π/2,ϕ=0)),将 ∣ 1 ⟩ |1 angle ∣1⟩(Bloch 球面 ( θ = π , ϕ = 0 ) ( heta=pi,phi=0) (θ=π,ϕ=0))映射到了 ∣ − ⟩ : = H ∣ 1 ⟩ |- angle:= H|1 angle ∣−⟩:=H∣1⟩(Bloch 球面 ( θ = − π / 2 , ϕ = 0 ) ( heta=-pi/2,phi=0) (θ=−π/2,ϕ=0))。
易知
∣
0
⟩
=
X
∣
1
⟩
|0
angle = X|1
angle
∣0⟩=X∣1⟩ 互为比特翻转,而
∣
+
⟩
=
Z
∣
−
⟩
|+
angle = Z|-
angle
∣+⟩=Z∣−⟩ 互为相位翻转。我们将
∣
0
⟩
,
∣
1
⟩
|0
angle,|1
angle
∣0⟩,∣1⟩ 叫做标准基,将
∣
+
⟩
,
∣
−
⟩
|+
angle,|-
angle
∣+⟩,∣−⟩ 叫做共轭基。容易验证:
∣
ψ
⟩
=
α
∣
0
⟩
+
β
∣
1
⟩
=
α
+
β
2
∣
+
⟩
+
α
−
β
2
∣
−
⟩
H
∣
ψ
⟩
=
H
(
α
∣
0
⟩
+
β
∣
1
⟩
)
=
α
+
β
2
∣
0
⟩
+
α
−
β
2
∣
1
⟩
|psi
angle = alpha|0
angle + eta|1
angle = dfrac{alpha+eta}{sqrt2}|+
angle + dfrac{alpha-eta}{sqrt2}|-
angle\ H|psi
angle = H(alpha|0
angle + eta|1
angle) = dfrac{alpha+eta}{sqrt2}|0
angle + dfrac{alpha-eta}{sqrt2}|1
angle
∣ψ⟩=α∣0⟩+β∣1⟩=2α+β∣+⟩+2α−β∣−⟩H∣ψ⟩=H(α∣0⟩+β∣1⟩)=2α+β∣0⟩+2α−β∣1⟩
所以 H ∣ ψ ⟩ H|psi angle H∣ψ⟩ 在标准基下的系数,就是 ∣ ψ ⟩ |psi angle ∣ψ⟩ 在共轭基下的系数。
n
n
n 比特量子态
∣
x
⟩
|x
angle
∣x⟩ 的
n
n
n 重 Hadamard 变换,公式为:
H
⊗
n
∣
x
⟩
=
∑
y
=
0
2
n
−
1
(
−
1
)
x
y
T
∣
y
⟩
2
n
/
2
H^{otimes n} |x
angle = dfrac{sum_{y=0}^{2^n-1} (-1)^{xy^T}|y
angle}{2^{n/2}}
H⊗n∣x⟩=2n/2∑y=02n−1(−1)xyT∣y⟩
在量子力学的线性叠加中, ∑ i sum_i ∑i 中的 i i i 不是整数,而是二进制向量。上式里的 x y T xy^T xyT 表示的是 G F ( 2 ) GF(2) GF(2) 上的行向量的内积。
在标准基下的经典
[
n
,
m
,
d
]
[n,m,d]
[n,m,d] 线性码
C
mathcal C
C,它的所有码字的等权重
p
v
=
1
/
2
m
p_v=1/2^m
pv=1/2m 叠加,
∣
C
⟩
=
1
2
m
∑
v
∈
C
∣
v
⟩
|C
angle = dfrac{1}{sqrt{2^m}} sum_{v in mathcal C} |v
angle
∣C⟩=2m1v∈C∑∣v⟩
在共轭基下为
H
⊗
n
∣
C
⟩
=
1
2
m
∑
v
∈
C
H
⊗
n
∣
v
⟩
=
1
2
m
∑
v
∈
C
∑
w
=
0
2
n
−
1
(
−
1
)
v
w
T
∣
w
⟩
2
n
/
2
=
1
2
m
+
n
∑
w
=
0
2
n
−
1
∑
a
=
0
2
m
−
1
(
−
1
)
(
a
G
)
w
T
∣
w
⟩
=
1
2
n
+
m
∑
w
∈
C
⊥
2
m
∣
w
⟩
=
1
2
n
−
m
∑
w
∈
C
⊥
∣
w
⟩
egin{aligned} H^{otimes n} |C
angle &= dfrac{1}{sqrt{2^m}} sum_{v in mathcal C} H^{otimes n}|v
angle\ &= dfrac{1}{sqrt{2^m}} sum_{v in mathcal C} dfrac{sum_{w=0}^{2^n-1} (-1)^{vw^T}|w
angle}{2^{n/2}}\ &= dfrac{1}{sqrt{2^{m+n}}} sum_{w=0}^{2^n-1} sum_{a=0}^{2^m-1} (-1)^{(aG)w^T}|w
angle\ &= dfrac{1}{sqrt{2^{n+m}}} sum_{w in mathcal C^perp} 2^m |w
angle\ &= dfrac{1}{sqrt{2^{n-m}}} sum_{w in mathcal C^perp} |w
angle\ end{aligned}
H⊗n∣C⟩=2m1v∈C∑H⊗n∣v⟩=2m1v∈C∑2n/2∑w=02n−1(−1)vwT∣w⟩=2m+n1w=0∑2n−1a=0∑2m−1(−1)(aG)wT∣w⟩=2n+m1w∈C⊥∑2m∣w⟩=2n−m1w∈C⊥∑∣w⟩
其中 ∑ a = 0 2 m − 1 ( − 1 ) ( a G ) w T ∣ w ⟩ sum_{a=0}^{2^m-1} (-1)^{(aG)w^T}|w angle ∑a=02m−1(−1)(aG)wT∣w⟩ 这一项,对于固定的 w ∉ C ⊥ w otin mathcal C^perp w∈/C⊥,则 G w T ≠ 0 m Gw^T eq0^m GwT=0m,从而遍历 a a a 的加和为零。最后只会剩下 w ∈ C ⊥ w in mathcal C^perp w∈C⊥ 的那些项,使得 ( a G ) w T = 0 m (aG)w^T=0^m (aG)wT=0m 导致因子 2 m 2^m 2m。
也就是说,在标准基下的经典 [ n , m , d ] [n,m,d] [n,m,d] 线性码 C mathcal C C 所有码字的等权重叠加,在共轭基下恰好是它的 [ n , n − m , d ′ ] [n,n-m,d'] [n,n−m,d′] 对偶码 C ⊥ mathcal C^perp C⊥ 所有码字的等权重叠加。
假设
C
1
mathcal C_1
C1 是
G
F
(
2
)
GF(2)
GF(2) 上的
[
n
,
m
,
d
1
]
[n,m,d_1]
[n,m,d1] 线性码(线性子空间),
C
2
⊂
C
1
mathcal C_2 sub mathcal C_1
C2⊂C1 是它的
K
K
K 阶子码(陪集数
[
C
1
:
C
2
]
=
2
K
[mathcal C_1:mathcal C_2]=2^K
[C1:C2]=2K),再考虑两者的对偶码。那么这四个线性码的关系为:
C
2
[
n
,
m
−
K
,
≥
d
1
]
⊂
C
1
[
n
,
m
,
d
1
]
⟺
C
2
⊥
[
n
,
n
−
m
+
K
,
d
2
]
⊃
C
1
⊥
[
n
,
n
−
m
,
≥
d
2
]
egin{aligned} C_2[n, m-K, ge d_1] &subset C_1[n, m, d_1]\ iff C_2^perp[n, n-m+K, d_2] &supset C_1^perp[n, n-m, ge d_2] end{aligned}
C2[n,m−K,≥d1]⟺C2⊥[n,n−m+K,d2]⊂C1[n,m,d1]⊃C1⊥[n,n−m,≥d2]
为了编码
K
K
K 位的量子比特,我们考虑商群元素
w
∈
C
2
⊥
/
C
1
⊥
w in mathcal C_2^perp/mathcal C_1^perp
w∈C2⊥/C1⊥(商群大小
2
K
2^K
2K),它的陪集
w
+
C
1
⊥
w+mathcal C_1^perp
w+C1⊥ 中元素的等权重加和,
∣
C
w
⟩
=
1
2
n
−
m
∑
v
∈
C
1
⊥
∣
w
+
v
⟩
|C_w
angle = dfrac{1}{sqrt{2^{n-m}}} sum_{v in mathcal C_1^perp} |w+v
angle
∣Cw⟩=2n−m1v∈C1⊥∑∣w+v⟩
在共轭基下,
H
⊗
n
∣
C
w
⟩
=
1
2
m
∑
v
∈
C
1
(
−
1
)
w
v
T
∣
v
⟩
H^{otimes n}|C_w
angle = dfrac{1}{sqrt{2^m}} sum_{v in mathcal C_1} (-1)^{wv^T}|v
angle\
H⊗n∣Cw⟩=2m1v∈C1∑(−1)wvT∣v⟩
那么 CSS 码 { ∣ C w ⟩ } {|C_w angle} {∣Cw⟩} 有如下性质:
- 纠正 d 2 − 1 2 dfrac{d_2-1}{2} 2d2−1 个比特翻转错误,因为在标准基下,码字 ∣ C w ⟩ |C_w angle ∣Cw⟩ 是由 C 2 ⊥ mathcal C_2^perp C2⊥(含有 2 n − m + K 2^{n-m+K} 2n−m+K 个码字)中的由 w w w 为陪集首的那 2 n − m 2^{n-m} 2n−m 个码字叠加出来的,而 C 2 ⊥ mathcal C_2^perp C2⊥ 的极小距离是 d 2 d_2 d2 可纠正这么多的比特翻转
- 纠正 d 1 − 1 2 dfrac{d_1-1}{2} 2d1−1 个相位翻转错误,因为在共轭基下,码字 ∣ C w ⟩ |C_w angle ∣Cw⟩ 是由 C 1 mathcal C_1 C1 中的 2 m 2^{m} 2m 个码字叠加出来的,而 C 1 mathcal C_1 C1 的极小距离是 d 1 d_1 d1 可纠正这么多的比特翻转(经过 H ⊗ n H^{otimes n} H⊗n ,相位翻转变成了比特翻转)
Steane 码
现在,我们使用汉明码来实例化 CSS 码。选取 C 1 C_1 C1 是 [ 7 , 4 , 3 ] [7,4,3] [7,4,3] 汉明码,令 C 2 C_2 C2 是它的 [ 7 , 3 , 4 ] [7,3,4] [7,3,4] 子码,特别的 C 1 = C 2 ⊥ C_1 = C_2^perp C1=C2⊥ 相互对偶,陪集个数 [ C 1 : C 2 ] = 2 1 [C_1:C_2]=2^1 [C1:C2]=21,并且 C 2 C_2 C2 恰好就是 C 1 C_1 C1 中所有偶重码字。
C
1
mathcal C_1
C1 的生成矩阵为
G
(
7
,
4
,
3
)
=
[
1
1
1
0
0
1
1
1
1
1
0
1
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
]
T
G(7,4,3) = left[egin{array}{cccc} 1&1&1&0\ 0&1&1&1\ 1&1&0&1\ hline 1&0&0&0\ 0&1&0&0\ 0&0&1&0\ 0&0&0&1\ end{array}
ight]^T
G(7,4,3)=
1011000111010011000100110001
T
C
2
mathcal C_2
C2 的生成矩阵为
H
(
7
,
4
,
3
)
=
[
1
0
0
1
1
1
0
0
1
0
0
1
1
1
0
0
1
1
1
0
1
]
H(7,4,3) = left[egin{array}{ccc|cccc} 1&0&0 &1&1&1&0\ 0&1&0 &0&1&1&1\ 0&0&1 &1&1&0&1\ end{array}
ight]
H(7,4,3)=
100010001101111110011
在标准基下,它的两个码字为
∣
0
ˉ
⟩
=
1
2
3
∑
v
∈
C
1
,
w
t
(
v
)
≡
0
∣
v
⟩
=
∣
0
⟩
L
+
∣
1
⟩
L
2
∣
1
ˉ
⟩
=
1
2
3
∑
v
∈
C
1
,
w
t
(
v
)
≡
1
∣
v
⟩
=
∣
0
⟩
L
−
∣
1
⟩
L
2
|ar 0
angle = dfrac{1}{sqrt{2^3}} sum_{v in C_1,wt(v)equiv0} |v
angle = dfrac{|0
angle_L + |1
angle_L}{sqrt2}\ |ar 1
angle = dfrac{1}{sqrt{2^3}} sum_{v in C_1,wt(v)equiv1} |v
angle = dfrac{|0
angle_L - |1
angle_L}{sqrt2}\
∣0ˉ⟩=231v∈C1,wt(v)≡0∑∣v⟩=2∣0⟩L+∣1⟩L∣1ˉ⟩=231v∈C1,wt(v)≡1∑∣v⟩=2∣0⟩L−∣1⟩L
在共轭基下,它的两个码字为
∣
0
⟩
L
=
1
2
4
(
∑
v
∈
C
1
,
w
t
(
v
)
≡
0
∣
v
⟩
+
∑
v
∈
C
1
,
w
t
(
v
)
≡
1
∣
v
⟩
)
=
∣
0
ˉ
⟩
+
∣
1
ˉ
⟩
2
∣
1
⟩
L
=
1
2
4
(
∑
v
∈
C
1
,
w
t
(
v
)
≡
0
∣
v
⟩
−
∑
v
∈
C
1
,
w
t
(
v
)
≡
1
∣
v
⟩
)
=
∣
0
ˉ
⟩
−
∣
1
ˉ
⟩
2
|0
angle_L = dfrac{1}{sqrt{2^4}} left(sum_{v in C_1,wt(v)equiv0} |v
angle + sum_{v in C_1,wt(v)equiv1} |v
angle
ight) = dfrac{|ar 0
angle + |ar 1
angle}{sqrt2}\ |1
angle_L = dfrac{1}{sqrt{2^4}} left(sum_{v in C_1,wt(v)equiv0} |v
angle - sum_{v in C_1,wt(v)equiv1} |v
angle
ight) = dfrac{|ar 0
angle - |ar 1
angle}{sqrt2}\
∣0⟩L=241
v∈C1,wt(v)≡0∑∣v⟩+v∈C1,wt(v)≡1∑∣v⟩
=2∣0ˉ⟩+∣1ˉ⟩∣1⟩L=241
v∈C1,wt(v)≡0∑∣v⟩−v∈C1,wt(v)≡1∑∣v⟩
=2∣0ˉ⟩−∣1ˉ⟩
Steane 码是一个
[
7
,
1
,
3
]
[7,1,3]
[7,1,3] 量子纠错码,可纠正
1
1
1 位比特翻转或者
1
1
1 位相位翻转。
一般性错误
信道
E
mathcal E
E 就是一个酉运算,它必定可以表示为
X
X
X 以及
Z
Z
Z 的组合形式
E
=
e
0
I
+
e
1
X
+
e
2
Z
+
e
3
X
Z
mathcal E = e_0I + e_1X + e_2Z + e_3XZ
E=e0I+e1X+e2Z+e3XZ
其中 e 0 , e 1 , e 2 , e 3 e_0,e_1,e_2,e_3 e0,e1,e2,e3 都是复数。因此,只要可以纠正 t t t 位的比特翻转以及相位翻转错误,那么就可以纠正 t t t 位的任意错误。
容错量子计算
一个幺正操作称为合法操作,如果它将码空间映射到自身。合法比容错更加基本和重要。
一个合法操作称为容错计算,如果它能通过逐位操作实现。容错的意义是单比特错误仅仅引起单比特错误。
容错计算通用门组: { H ˉ , P ˉ , C N O T ‾ , T o f f o l i ‾ } {ar H, ar P, overline{CNOT}, overline{Toffoli}} {Hˉ,Pˉ,CNOT,Toffoli},容错的阿达玛门、相位门、受控非门、双控非门。其中 { H ˉ , P ˉ , C N O T ‾ } {ar H, ar P, overline{CNOT}} {Hˉ,Pˉ,CNOT} 可以被经典计算机有效模拟,并不会超越,实现容错的 Toffoli 门是最重要的。
可以基于 Steane 码来构造上述的四个容错量子门。略略略。。。
量子算法
量子 Fourier 变换
经典 DFT 公式为
y
k
=
1
N
∑
j
=
0
N
−
1
e
j
k
⋅
2
π
i
/
N
x
j
y_k = dfrac{1}{sqrt N} sum_{j=0}^{N-1} e^{jk cdot 2pi i/N} x_j
yk=N1j=0∑N−1ejk⋅2πi/Nxj
类比着定义基态
∣
j
⟩
|j
angle
∣j⟩(对应的
x
=
e
j
x=e_j
x=ej 是单位向量,仅有
x
j
=
1
x_j=1
xj=1 而其他位置都是零)的量子傅里叶变换(QFT),其中
∣
j
⟩
=
∣
j
1
j
2
⋯
j
n
⟩
|j
angle=|j_1j_2cdots j_n
angle
∣j⟩=∣j1j2⋯jn⟩,
N
=
2
n
N=2^n
N=2n,
∣
j
⟩
⟶
Q
F
T
1
N
∑
k
=
0
N
−
1
e
j
k
⋅
2
π
i
/
N
∣
k
⟩
|j
angle overset{QFT}{longrightarrow} dfrac{1}{sqrt N} sum_{k=0}^{N-1} e^{jk cdot 2pi i/N}|k
angle
∣j⟩⟶QFTN1k=0∑N−1ejk⋅2πi/N∣k⟩
那么任意态
∑
j
=
0
N
−
1
x
j
∣
j
⟩
sum_{j=0}^{N-1} x_j|j
angle
∑j=0N−1xj∣j⟩ 的 QFT 为:
∑
j
=
0
N
−
1
x
j
∣
j
⟩
⟶
Q
F
T
1
N
∑
j
=
0
N
−
1
x
j
∑
k
=
0
N
−
1
e
j
k
⋅
2
π
i
/
N
∣
k
⟩
=
∑
k
=
0
N
−
1
(
1
N
∑
j
=
0
N
−
1
e
j
k
⋅
2
π
i
/
N
x
j
)
∣
k
⟩
=
∑
k
=
0
N
−
1
y
k
∣
k
⟩
egin{aligned} sum_{j=0}^{N-1} x_j|j
angle &overset{QFT}{longrightarrow} dfrac{1}{sqrt N} sum_{j=0}^{N-1} x_jsum_{k=0}^{N-1} e^{jk cdot 2pi i/N}|k
angle\ &= sum_{k=0}^{N-1}left(dfrac{1}{sqrt N} sum_{j=0}^{N-1} e^{jk cdot 2pi i/N}x_j
ight)|k
angle\ &= sum_{k=0}^{N-1}y_k|k
angle end{aligned}
j=0∑N−1xj∣j⟩⟶QFTN1j=0∑N−1xjk=0∑N−1ejk⋅2πi/N∣k⟩=k=0∑N−1(N1j=0∑N−1ejk⋅2πi/Nxj)∣k⟩=k=0∑N−1yk∣k⟩
那么向量 x = [ x 1 , ⋯ , x N ] x=[x_1,cdots,x_N] x=[x1,⋯,xN] 作为几率幅的叠加态 ∑ j = 0 N − 1 x j ∣ j ⟩ sum_{j=0}^{N-1} x_j|j angle ∑j=0N−1xj∣j⟩,经过 QFT 后得到叠加态 ∑ k = 0 N − 1 y k ∣ k ⟩ sum_{k=0}^{N-1}y_k|k angle ∑k=0N−1yk∣k⟩,它的几率幅 y = [ y 1 , ⋯ , y N ] y=[y_1,cdots,y_N] y=[y1,⋯,yN] 恰好是 y = D F T ( x ) y=DFT(x) y=DFT(x) 啦!
令
k
=
2
n
−
1
k
1
+
⋯
+
2
0
k
1
k=2^{n-1}k_1+cdots+2^0k_1
k=2n−1k1+⋯+20k1 是二进制表示,那么
k
/
2
n
=
2
−
1
k
1
+
⋯
+
2
−
n
k
n
k/2^n = 2^{-1}k_1+cdots+2^{-n}k_n
k/2n=2−1k1+⋯+2−nkn 是精度
n
n
n 的定点小数。现在我们考虑如何有效计算
Q
F
T
(
∣
j
⟩
)
QFT(|j
angle)
QFT(∣j⟩),
∣
j
⟩
⟶
Q
F
T
1
2
n
∑
k
=
0
2
n
−
1
e
j
k
⋅
2
π
i
/
2
n
∣
k
⟩
=
1
2
n
∑
k
1
=
0
1
⋯
∑
k
n
=
0
1
e
j
∑
l
=
1
n
(
2
−
l
k
l
)
⋅
2
π
i
∣
k
1
⋯
k
n
⟩
=
1
2
n
⨂
l
=
1
n
∑
k
l
=
0
1
e
⋅
j
k
l
⋅
2
π
i
/
2
l
∣
k
l
⟩
=
1
2
n
⨂
l
=
1
n
[
∣
0
⟩
+
e
j
⋅
2
π
i
/
2
l
∣
1
⟩
]
=
1
2
n
⨂
l
=
1
n
[
∣
0
⟩
+
(
e
2
π
i
)
0.
j
n
−
l
+
1
⋯
j
n
∣
1
⟩
]
egin{aligned} |j
angle &overset{QFT}{longrightarrow} dfrac{1}{sqrt{2^n}} sum_{k=0}^{2^n-1} e^{jk cdot 2pi i/2^n}|k
angle\ &= dfrac{1}{sqrt{2^n}} sum_{k_1=0}^{1}cdots sum_{k_n=0}^{1} e^{jsum_{l=1}^n(2^{-l}k_l) cdot 2pi i}|k_1cdots k_n
angle\ &= dfrac{1}{sqrt{2^n}} igotimes_{l=1}^n sum_{k_l=0}^{1} e^{cdot jk_l cdot 2pi i/2^l}|k_l
angle\ &= dfrac{1}{sqrt{2^n}} igotimes_{l=1}^n left[|0
angle+ e^{j cdot 2pi i/2^l}|1
angle
ight]\ &= dfrac{1}{sqrt{2^n}} igotimes_{l=1}^n left[|0
angle+ (e^{2pi i})^{0.j_{n-l+1}cdots j_n}|1
angle
ight]\ end{aligned}
∣j⟩⟶QFT2n1k=0∑2n−1ejk⋅2πi/2n∣k⟩=2n1k1=0∑1⋯kn=0∑1ej∑l=1n(2−lkl)⋅2πi∣k1⋯kn⟩=2n1l=1⨂nkl=0∑1e⋅jkl⋅2πi/2l∣kl⟩=2n1l=1⨂n[∣0⟩+ej⋅2πi/2l∣1⟩]=2n1l=1⨂n[∣0⟩+(e2πi)0.jn−l+1⋯jn∣1⟩]
其中的
0.
j
n
−
l
+
1
⋯
j
n
0.j_{n-l+1}cdots j_n
0.jn−l+1⋯jn 是定点二进制小数。因此通过对
∣
+
⟩
:
=
H
∣
0
⟩
|+
angle:=H|0
angle
∣+⟩:=H∣0⟩ 执行一些受控相位旋转即可完成 QFT 的计算,
R
k
:
=
[
1
0
0
e
2
π
i
/
2
k
]
,
k
=
1
,
2
,
⋯
,
n
R_k := egin{bmatrix} 1&0\ 0&e^{2pi i/2^k} end{bmatrix}, k=1,2,cdots,n
Rk:=[100e2πi/2k],k=1,2,⋯,n
一共需要 n n n 个 H H H 门以及 ( n − 1 ) n / 2 (n-1)n/2 (n−1)n/2 个 R k R_k Rk 门,包括控制位的话每条线上有 n n n 个门,因此复杂度为 O ( n 2 ) O(n^2) O(n2)。而经典的 FFT 复杂度为 O ( N log N ) = O ( n 2 n ) O(Nlog N)=O(n2^n) O(NlogN)=O(n2n),因此量子傅里叶实现了指数级的加速。
Shor 算法
Shor 算法可以求解离散对数问题或者整数分解问题。
求阶问题(整数分解)
归约算法:给定一个合数 N = p q N=pq N=pq,随机选择 x ∈ [ 1 , N − 1 ] x in [1,N-1] x∈[1,N−1],如果 g c d ( x , N ) > 1 gcd(x,N)>1 gcd(x,N)>1 则找到了因子。否则 g c d ( x , N ) = 1 gcd(x,N)=1 gcd(x,N)=1 使得 x ∈ Z N ∗ x inmathbb Z_N^* x∈ZN∗,我们调用求阶神谕获得 r = o r d ( x ) r=ord(x) r=ord(x) 满足 x r = 1 ( m o d N ) x^r=1 pmod N xr=1(modN)。如果 r r r 是偶数,并且 x r / 2 ≠ − 1 ( m o d N ) x^{r/2} eq -1 pmod N xr/2=−1(modN),就说明 N ∣ x r − 1 = ( x r / 2 − 1 ) ( x r / 2 + 1 ) N mid x^r-1 = (x^{r/2}-1)(x^{r/2}+1) N∣xr−1=(xr/2−1)(xr/2+1),计算 g c d ( x r / 2 − 1 , N ) gcd(x^{r/2}-1,N) gcd(xr/2−1,N) 以及 g c d ( x r / 2 + 1 , N ) gcd(x^{r/2}+1,N) gcd(xr/2+1,N) 就得到了因子。否则重新选择随机数。
现在给出求阶量子算法。对于
x
r
=
1
(
m
o
d
N
)
x^r=1pmod N
xr=1(modN) 求解问题,对于
L
L
L 比特的量子态,我们定义酉算子
U
U
U 使得
U
∣
y
⟩
:
=
{
∣
x
y
⟩
,
0
≤
y
<
N
∣
y
⟩
,
N
≤
y
<
2
L
−
1
U|y
angle := left{egin{aligned} |xy
angle,&& 0le y<N\ |y
angle,&& Nle y<2^L-1 end{aligned}
ight.
U∣y⟩:={∣xy⟩,∣y⟩,0≤y<NN≤y<2L−1
定义状态
∣
u
s
⟩
:
=
1
r
∑
k
=
0
r
−
1
e
−
2
s
k
π
i
/
r
∣
x
k
⟩
|u_s
angle := dfrac{1}{sqrt r} sum_{k=0}^{r-1} e^{-2skpi i/r} |x^k
angle
∣us⟩:=r1k=0∑r−1e−2skπi/r∣xk⟩
其中的
x
y
,
x
k
xy,x^k
xy,xk 都是
(
m
o
d
N
)
pmod N
(modN) 意义下的。利用
1
r
∑
s
=
0
r
−
1
∣
u
s
⟩
=
∣
1
⟩
dfrac{1}{sqrt r}sum_{s=0}^{r-1}|u_s
angle=|1
angle
r1∑s=0r−1∣us⟩=∣1⟩ 以及
1
r
∑
s
=
0
r
−
1
e
2
s
k
π
i
/
r
∣
u
s
⟩
=
∣
x
k
⟩
dfrac{1}{sqrt r}sum_{s=0}^{r-1} e^{2skpi i/r} |u_s
angle=|x^k
angle
r1∑s=0r−1e2skπi/r∣us⟩=∣xk⟩,可以证明(好长的式子)它们满足:
U
∣
u
s
⟩
=
e
2
s
π
i
/
r
∣
u
s
⟩
U|u_s
angle = e^{2spi i/r}|u_s
angle
U∣us⟩=e2sπi/r∣us⟩
也就是说, ∣ u s ⟩ |u_s angle ∣us⟩ 就是酉算子 U U U 的本征态,对应的本征值为 e 2 s π i / r e^{2spi i/r} e2sπi/r,我们需要的 r r r 可由相位 2 π i ⋅ s / r 2pi i cdot s/r 2πi⋅s/r 来确定。
下面的问题就是如何估计对
U
∣
u
⟩
=
e
2
π
i
ϕ
∣
u
⟩
U|u
angle = e^{2pi iphi}|u
angle
U∣u⟩=e2πiϕ∣u⟩ 进行相位估计了。我们使用
t
t
t 比特量子态
∣
j
⟩
=
∣
j
1
⋯
j
t
⟩
|j
angle=|j_1cdots j_t
angle
∣j⟩=∣j1⋯jt⟩ 作为控制位,
N
=
2
t
N=2^t
N=2t,执行运算
∣
j
⟩
∣
u
⟩
↦
∣
j
⟩
U
j
∣
u
⟩
=
∣
j
⟩
U
∑
l
=
0
t
−
1
2
l
j
l
∣
u
⟩
|j
angle|u
angle mapsto |j
angle U^j|u
angle = |j
angle U^{sum_{l=0}^{t-1}2^lj_l}|u
angle
∣j⟩∣u⟩↦∣j⟩Uj∣u⟩=∣j⟩U∑l=0t−12ljl∣u⟩
对于受控相移,
∣
j
⟩
(
e
i
α
)
j
∣
u
⟩
=
P
(
e
i
α
)
∣
j
⟩
∣
u
⟩
|j
angle (e^{ialpha})^j|u
angle = P(e^{ialpha})|j
angle|u
angle
∣j⟩(eiα)j∣u⟩=P(eiα)∣j⟩∣u⟩,也就是靶位不变而控制位经过对应的相位门,于是有
∣
j
l
⟩
U
2
l
j
l
∣
u
⟩
=
∣
j
l
⟩
(
e
2
π
i
ϕ
)
2
l
j
l
∣
u
⟩
=
[
1
0
0
e
2
π
i
(
ϕ
2
l
)
]
∣
j
l
⟩
∣
u
⟩
|j_l
angle U^{2^lj_l}|u
angle = |j_l
angle (e^{2pi i phi})^{2^lj_l}|u
angle = egin{bmatrix} 1&0\ 0&e^{2pi i(phi 2^l)} end{bmatrix} |j_l
angle |u
angle
∣jl⟩U2ljl∣u⟩=∣jl⟩(e2πiϕ)2ljl∣u⟩=[100e2πi(ϕ2l)]∣jl⟩∣u⟩
我们令
∣
j
l
⟩
=
∣
+
⟩
=
(
∣
0
⟩
+
∣
1
⟩
)
/
2
|j_l
angle = |+
angle = (|0
angle+|1
angle)/sqrt2
∣jl⟩=∣+⟩=(∣0⟩+∣1⟩)/2,那么
∣
j
⟩
U
j
∣
u
⟩
|j
angle U^j|u
angle
∣j⟩Uj∣u⟩ 的结果就是
(
∣
0
⟩
+
e
2
π
i
(
ϕ
2
0
)
∣
1
⟩
2
)
(
∣
0
⟩
+
e
2
π
i
(
ϕ
2
1
)
∣
1
⟩
2
)
⋯
(
∣
0
⟩
+
e
2
π
i
(
ϕ
2
t
−
1
)
∣
1
⟩
2
)
∣
u
⟩
left(dfrac{|0
angle + e^{2pi i(phi 2^0)} |1
angle}{sqrt2}
ight)left(dfrac{|0
angle + e^{2pi i(phi 2^1)} |1
angle}{sqrt2}
ight)cdotsleft(dfrac{|0
angle + e^{2pi i(phi 2^{t-1})} |1
angle}{sqrt2}
ight)|u
angle
(2∣0⟩+e2πi(ϕ20)∣1⟩)(2∣0⟩+e2πi(ϕ21)∣1⟩)⋯(2∣0⟩+e2πi(ϕ2t−1)∣1⟩)∣u⟩
那么前半部分的 t t t 量子比特恰好就是 1 2 t ∑ k = 0 2 t − 1 e 2 π i ( ϕ k ) ∣ k ⟩ dfrac{1}{sqrt{2^t}}sum_{k=0}^{2^t-1}e^{2pi i(phi k)}|k angle 2t1∑k=02t−1e2πi(ϕk)∣k⟩,假设相位 ϕ = j / N = j / 2 t phi = j/N = j/2^t ϕ=j/N=j/2t,那么容易看出这恰好就是 Q F T ( ∣ j ⟩ ) QFT(|j angle) QFT(∣j⟩),因此执行逆变换 Q F T − 1 QFT^{-1} QFT−1 就得到了基态 ∣ j ⟩ |j angle ∣j⟩,测量出 j j j 就得到了 ϕ phi ϕ 的值。如果相位 ϕ phi ϕ 并不能表示为 t t t 比特定点小数,那么执行 Q F T − 1 QFT^{-1} QFT−1 得到是一个基态的叠加,执行测量后获得是相位 ϕ phi ϕ 有限精度的近似值。选择一个足够长的 t t t 就可以较为精确的估计出相位。
利用这个相位估计算法,构造出求阶量子算法,于是可以求解整数分解问题。
求周期问题(离散对数)
归约算法:给定群元素 b = a s ( m o d N ) b=a^s pmod N b=as(modN),定义周期函数 f ( x 1 , x 2 ) : = b x 1 a x 2 = a s x 1 + x 2 ( m o d N ) f(x_1,x_2) := b^{x_1}a^{x_2} = a^{sx_1+x_2} pmod N f(x1,x2):=bx1ax2=asx1+x2(modN),满足 f ( x 1 + l , x 2 − l s ) = f ( x 1 , x 2 ) f(x_1+l,x_2-ls)=f(x_1,x_2) f(x1+l,x2−ls)=f(x1,x2) 因此周期为 ( l , − l s ) , ∀ l ∈ Z (l,-ls),forall l in mathbb Z (l,−ls),∀l∈Z。我们调用求周期神谕获得 ( l , − l s ) (l,-ls) (l,−ls) 就可以计算出离散对数 s s s 了。
现在给出求周期量子算法。给定周期函数
f
(
x
+
r
)
=
f
(
x
)
f(x+r)=f(x)
f(x+r)=f(x),周期
0
<
r
<
2
L
0<r<2^L
0<r<2L,定义一个酉运算(量子黑盒),使得
U
∣
x
⟩
∣
y
⟩
↦
∣
x
⟩
∣
y
⊕
f
(
x
)
⟩
U|x
angle|y
angle mapsto |x
angle|y oplus f(x)
angle
U∣x⟩∣y⟩↦∣x⟩∣y⊕f(x)⟩
将量子态
∣
f
(
x
)
⟩
|f(x)
angle
∣f(x)⟩ 写成 QFT 形式
∣
f
^
(
l
)
⟩
:
=
1
r
∑
l
=
0
r
−
1
e
−
l
x
⋅
2
π
i
/
r
∣
f
(
l
)
⟩
|hat f(l)
angle := frac{1}{sqrt r}sum_{l=0}^{r-1} e^{-lx cdot2pi i/r}|f(l)
angle
∣f^(l)⟩:=r1∑l=0r−1e−lx⋅2πi/r∣f(l)⟩,那么有
∣
f
(
x
)
⟩
=
1
r
∑
l
=
0
r
−
1
e
l
x
⋅
2
π
i
/
r
∣
f
^
(
l
)
⟩
|f(x)
angle = dfrac{1}{sqrt r}sum_{l=0}^{r-1} e^{lx cdot2pi i/r}|hat f(l)
angle
∣f(x)⟩=r1l=0∑r−1elx⋅2πi/r∣f^(l)⟩
使用一个
t
=
O
(
L
+
log
(
1
/
ϵ
)
)
t=O(L+log(1/epsilon))
t=O(L+log(1/ϵ)) 比特量子寄存器,创建叠加态
1
2
t
∣
x
⟩
∣
0
⟩
dfrac{1}{sqrt{2^t}}|x
angle|0
angle
2t1∣x⟩∣0⟩,做酉变换
U
U
U 得到
1
2
t
∣
x
⟩
∣
f
(
x
)
⟩
≈
1
r
∑
l
=
0
r
−
1
(
1
2
t
∑
x
=
0
2
t
−
1
e
l
x
⋅
2
π
i
/
r
∣
x
⟩
)
∣
f
^
(
l
)
⟩
dfrac{1}{sqrt{2^t}}|x
angle|f(x)
angle approx dfrac{1}{sqrt r}sum_{l=0}^{r-1} left(dfrac{1}{sqrt{2^t}}sum_{x=0}^{2^t-1} e^{lx cdot2pi i/r}|x
angle
ight)|hat f(l)
angle
2t1∣x⟩∣f(x)⟩≈r1l=0∑r−1
2t1x=0∑2t−1elx⋅2πi/r∣x⟩
∣f^(l)⟩
对于寄存器的前半部分执行 Q F T − 1 QFT^{-1} QFT−1 得到叠加态 ∑ l = 0 r − 1 ∣ 2 t l / r ⟩ sum_{l=0}^{r-1}|2^tl/r angle ∑l=0r−1∣2tl/r⟩,测量出若干个 l / r l/r l/r 便可确定周期 r r r 了。
对于二维函数 f ( x 1 , x 2 ) f(x_1,x_2) f(x1,x2) 它的二维 DFT 可视为两个一维 DFT 的直积,我们应用 Q F T N ⊗ Q F T N QFT_N otimes QFT_N QFTN⊗QFTN 到两个寄存器上以提取出周期,从而求解出离散对数。
Grover 算法
Grover 算法可以为搜索问题带来平方根级别的加速。
函数 f a ( x ) f_a(x) fa(x) 作为一个量子黑盒,被定义为 f a ( x ) = 1 ⟺ x = a f_a(x)=1 iff x=a fa(x)=1⟺x=a,它的索引为 ∣ a ⟩ ∈ { 0 , 1 } n |a angle in {0,1}^n ∣a⟩∈{0,1}n 是个基态但是未知。我们的目标是搜索出 a a a 的值。
定义酉算子
U
a
U_a
Ua 为,
U
a
∣
x
⟩
∣
y
⟩
↦
∣
x
⟩
∣
y
⊕
f
a
(
x
)
⟩
U_a|x
angle|y
angle mapsto |x
angle|y oplus f_a(x)
angle
Ua∣x⟩∣y⟩↦∣x⟩∣y⊕fa(x)⟩
令辅助量子位
∣
y
⟩
=
∣
−
⟩
|y
angle = |-
angle
∣y⟩=∣−⟩,那么它有以下性质
U
a
∣
x
⟩
∣
−
⟩
=
(
−
1
)
f
a
(
x
)
∣
x
⟩
∣
−
⟩
U_a|x
angle|-
angle = (-1)^{f_a(x)}|x
angle|-
angle
Ua∣x⟩∣−⟩=(−1)fa(x)∣x⟩∣−⟩
那么可以表示出 U a = I − 2 ∣ a ⟩ ⟨ a ∣ U_a = I - 2|a anglelangle a| Ua=I−2∣a⟩⟨a∣,这个酉算子的几何图像是将任意态做关于法向 ∣ a ⟩ |a angle ∣a⟩ 超平面的镜面反射(将 ∣ a ⟩ |a angle ∣a⟩ 方向的分量符号改变,其他分量不变)。
定义 ∣ s ⟩ : = H ⊗ n ∣ 0 ⟩ = 1 N ∑ x = 0 N − 1 ∣ x ⟩ |s angle := H^{otimes n}|0 angle = dfrac{1}{sqrt N}sum_{x=0}^{N-1} |x angle ∣s⟩:=H⊗n∣0⟩=N1∑x=0N−1∣x⟩,其中 N = 2 n N=2^n N=2n。我们构造酉算子 U s : = 2 ∣ s ⟩ ⟨ s ∣ − I U_s := 2|s anglelangle s|-I Us:=2∣s⟩⟨s∣−I,这个酉算子的几何图像是将正交于 ∣ s ⟩ |s angle ∣s⟩ 的子空间做的中心反射(将 ∣ s ⟩ |s angle ∣s⟩ 正交方向的分量符号改变,其他分量不变)。
因为 ∣ a ⟩ |a angle ∣a⟩ 是基态,必然满足 ⟨ a ∣ s ⟩ = 1 / N langle a|s angle=1/sqrt N ⟨a∣s⟩=1/N。假设 1 / N = sin θ 1/sqrt N=sin heta 1/N=sinθ,即它们的夹角为 π / 2 − θ pi/2 - heta π/2−θ,满足 ∣ s ⟩ = ± sin θ ∣ a ⟩ ± cos θ ∣ a ⊥ ⟩ |s angle = pm sin heta|a angle pm cos heta|a^perp angle ∣s⟩=±sinθ∣a⟩±cosθ∣a⊥⟩。如图所示:
定义酉算子 U = U s U a U = U_sU_a U=UsUa,那么它的几何意义是将 ∣ x ⟩ |x angle ∣x⟩ 先经过 U a U_a Ua 的关于 ∣ a ⊥ ⟩ |a^perp angle ∣a⊥⟩ 轴对称为 ∣ x ′ ⟩ |x' angle ∣x′⟩,然后经过 U s U_s Us 的 ∣ s ⟩ |s angle ∣s⟩ 轴对称得到 ∣ x ′ ′ ⟩ |x'' angle ∣x′′⟩。最终的结果是 ∣ x ′ ′ ⟩ |x'' angle ∣x′′⟩ 对比于 ∣ x ⟩ |x angle ∣x⟩ 转过了 2 θ 2 heta 2θ 角度。
Grover 算法制备
∣
s
⟩
|s
angle
∣s⟩,它与未知的
∣
a
⟩
|a
angle
∣a⟩ 之间的角度是
θ
heta
θ(
sin
θ
=
1
/
N
sin heta=1/sqrt N
sinθ=1/N,选取足够大的
n
n
n 使得
θ
≈
1
/
N
heta approx 1/sqrt N
θ≈1/N 是个很小的角度)。然后调用
f
a
(
x
)
f_a(x)
fa(x) 黑盒来实现酉变换
U
U
U,迭代计算
U
T
∣
s
⟩
U^T|s
angle
UT∣s⟩,那么它转过了
2
T
θ
2T heta
2Tθ 角度,使得夹角成为
(
2
T
+
1
)
θ
(2T+1) heta
(2T+1)θ。如果迭代次数为:
T
≈
π
N
4
T approx dfrac{pisqrt N}{4}
T≈4πN
那么转过的角度为
(
2
T
+
1
)
θ
≈
π
2
(2T+1) heta approx dfrac{pi}{2}
(2T+1)θ≈2π,于是
U
T
∣
s
⟩
≈
∣
a
⟩
U^T|s
angle approx |a
angle
UT∣s⟩≈∣a⟩,执行测量得到基态
a
a
a 的值。量子摇晃:迭代执行
U
U
U 酉变换,放大
∣
a
⟩
|a
angle
∣a⟩ 方向的几率幅,这使得
∣
s
⟩
|s
angle
∣s⟩ 不断地靠近
∣
a
⟩
|a
angle
∣a⟩。
对于多目标的搜索问题,
f
a
(
x
)
=
1
⟺
x
∈
S
a
,
∣
S
a
∣
=
r
f_a(x)=1 iff x in S_a, |S_a|=r
fa(x)=1⟺x∈Sa,∣Sa∣=r,量子黑盒中的秘密值为
∣
a
⟩
=
1
r
∑
i
=
1
r
∣
a
i
⟩
|a
angle = dfrac{1}{sqrt r}sum_{i=1}^r |a_i
angle
∣a⟩=r1i=1∑r∣ai⟩
从而有
⟨
s
∣
a
⟩
=
r
/
N
=
sin
θ
langle s|a
angle = sqrt{r/N} = sin heta
⟨s∣a⟩=r/N=sinθ,其中
θ
≈
r
/
N
heta approx sqrt{r/N}
θ≈r/N。经过
T
≈
π
N
4
r
T approx dfrac{pisqrt N}{4sqrt r}
T≈4rπN 次迭代,使得
U
T
∣
s
⟩
≈
∣
a
⟩
U^T|s
angle approx |a
angle
UT∣s⟩≈∣a⟩,测量后以概率
1
/
r
1/r
1/r 坍缩到某一个基态
∣
a
i
⟩
∈
S
a
|a_i
angle in S_a
∣ai⟩∈Sa 上。重复大约
r
∑
k
=
1
r
1
/
k
≈
r
ln
r
rsum_{k=1}^r1/k approx r ln r
r∑k=1r1/k≈rlnr 次直到搜索出全部的值,总的复杂度为
O
(
π
4
r
N
ln
r
)
=
O
(
2
n
/
2
r
ln
r
)
O(dfrac{pi}{4}sqrt{rN}ln r) = O(2^{n/2}sqrt{r}ln r)
O(4πrNlnr)=O(2n/2rlnr),相较于
O
(
2
n
)
O(2^n)
O(2n) 给出了平方根级别的加速,但依然是指数级的。