您现在的位置是:首页 >技术交流 >量子计算:纠错码 & 量子算法网站首页技术交流

量子计算:纠错码 & 量子算法

山登绝顶我为峰 3(^v^)3 2024-07-21 00:01:02
简介量子计算:纠错码 & 量子算法

量子纠错码

对于量子态的纠错,与经典信息论中的纠错有着巨大的不同,

  1. 量子态不可克隆性:重复码是不可能实现的
  2. 差错是连续的:量子比特是复数域上无限精度的向量
  3. 测量会破坏量子态:解码时无法观测校验子

解决办法:不直接对数据态测量,也不简单复制,而是通过添加额外量子位,把单个 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+β∣111H3α++++β

其中 ∣ + ⟩ : = 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} H3 就转化为了至多发生一比特的比特翻转。接下来使用纠正比特翻转的解码电路即可。可以将 α ∣ + + + ⟩ + β ∣ − − − ⟩ 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}} Hnx=2n/2y=02n1(1)xyTy

在量子力学的线性叠加中, ∑ 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=2m 1vCv

在共轭基下为
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} HnC=2m 1vCHnv=2m 1vC2n/2w=02n1(1)vwTw=2m+n 1w=02n1a=02m1(1)(aG)wTw=2n+m 1wC2mw=2nm 1wCw

其中 ∑ a = 0 2 m − 1 ( − 1 ) ( a G ) w T ∣ w ⟩ sum_{a=0}^{2^m-1} (-1)^{(aG)w^T}|w angle a=02m1(1)(aG)wTw 这一项,对于固定的 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 wC 的那些项,使得 ( 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,nm,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 C2C1 是它的 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,mK,d1]C2[n,nm+K,d2]C1[n,m,d1]C1[n,nm,d2]

为了编码 K K K 位的量子比特,我们考虑商群元素 w ∈ C 2 ⊥ / C 1 ⊥ w in mathcal C_2^perp/mathcal C_1^perp wC2/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=2nm 1vC1w+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\ HnCw=2m 1vC1(1)wvTv

那么 CSS 码 { ∣ C w ⟩ } {|C_w angle} {Cw⟩} 有如下性质:

  1. 纠正 d 2 − 1 2 dfrac{d_2-1}{2} 2d21比特翻转错误,因为在标准基下,码字 ∣ C w ⟩ |C_w angle Cw 是由 C 2 ⊥ mathcal C_2^perp C2(含有 2 n − m + K 2^{n-m+K} 2nm+K 个码字)中的由 w w w 为陪集首的那 2 n − m 2^{n-m} 2nm 个码字叠加出来的,而 C 2 ⊥ mathcal C_2^perp C2 的极小距离是 d 2 d_2 d2 可纠正这么多的比特翻转
  2. 纠正 d 1 − 1 2 dfrac{d_1-1}{2} 2d11相位翻转错误,因为在共轭基下,码字 ∣ 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} Hn ,相位翻转变成了比特翻转)

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ˉ=23 1vC1,wt(v)0v=2 ∣0L+∣1L1ˉ=23 1vC1,wt(v)1v=2 ∣0L∣1L

在共轭基下,它的两个码字为
∣ 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}\ ∣0L=24 1 vC1,wt(v)0v+vC1,wt(v)1v =2 0ˉ+1ˉ∣1L=24 1 vC1,wt(v)0vvC1,wt(v)1v =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=N 1j=0N1ejk2π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=j1j2jn 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 jQFTN 1k=0N1ejk2πi/Nk

那么任意态 ∑ j = 0 N − 1 x j ∣ j ⟩ sum_{j=0}^{N-1} x_j|j angle j=0N1xjj 的 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=0N1xjjQFTN 1j=0N1xjk=0N1ejk2πi/Nk=k=0N1(N 1j=0N1ejk2πi/Nxj)k=k=0N1ykk

那么向量 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=0N1xjj,经过 QFT 后得到叠加态 ∑ k = 0 N − 1 y k ∣ k ⟩ sum_{k=0}^{N-1}y_k|k angle k=0N1ykk,它的几率幅 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=2n1k1++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=21k1++2nkn 是精度 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} jQFT2n 1k=02n1ejk2πi/2nk=2n 1k1=01kn=01ejl=1n(2lkl)2πik1kn=2n 1l=1nkl=01ejkl2πi/2lkl=2n 1l=1n[∣0+ej2πi/2l∣1]=2n 1l=1n[∣0+(e2πi)0.jnl+1jn∣1]

其中的 0. j n − l + 1 ⋯ j n 0.j_{n-l+1}cdots j_n 0.jnl+1jn 是定点二进制小数。因此通过对 ∣ + ⟩ : = 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 (n1)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,N1],如果 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^* xZN,我们调用求阶神谕获得 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) Nxr1=(xr/21)(xr/2+1),计算 g c d ( x r / 2 − 1 , N ) gcd(x^{r/2}-1,N) gcd(xr/21,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. Uy:={xy,y,0y<NNy<2L1

定义状态
∣ 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:=r 1k=0r1e2skπi/rxk

其中的 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 r 1s=0r1us=∣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 r 1s=0r1e2skπi/rus=xk,可以证明(好长的式子)它们满足:
U ∣ u s ⟩ = e 2 s π i / r ∣ u s ⟩ U|u_s angle = e^{2spi i/r}|u_s angle Uus=e2sπi/rus

也就是说, ∣ 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πis/r 来确定。

下面的问题就是如何估计对 U ∣ u ⟩ = e 2 π i ϕ ∣ u ⟩ U|u angle = e^{2pi iphi}|u angle Uu=e2πiϕu 进行相位估计了。我们使用 t t t 比特量子态 ∣ j ⟩ = ∣ j 1 ⋯ j t ⟩ |j angle=|j_1cdots j_t angle j=j1jt 作为控制位, 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 jujUju=jUl=0t12ljlu

对于受控相移 ∣ 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α)ju=P(eiα)ju,也就是靶位不变而控制位经过对应的相位门,于是有
∣ 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 jlU2ljlu=jl(e2πiϕ)2ljlu=[100e2πi(ϕ2l)]jlu

我们令 ∣ 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 jUju 的结果就是
( ∣ 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(ϕ2t1)∣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 2t 1k=02t1e2π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} QFT1 就得到了基态 ∣ j ⟩ |j angle j,测量出 j j j 就得到了 ϕ phi ϕ 的值。如果相位 ϕ phi ϕ 并不能表示为 t t t 比特定点小数,那么执行 Q F T − 1 QFT^{-1} QFT1 得到是一个基态的叠加,执行测量后获得是相位 ϕ 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,x2ls)=f(x1,x2) 因此周期为 ( l , − l s ) , ∀ l ∈ Z (l,-ls),forall l in mathbb Z (l,ls),lZ。我们调用求周期神谕获得 ( 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 Uxyxyf(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)⟩:=r 1l=0r1elx2πi/rf(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)⟩=r 1l=0r1elx2πi/rf^(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 2t 1x∣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 2t 1xf(x)⟩r 1l=0r1 2t 1x=02t1elx2πi/rx f^(l)⟩

对于寄存器的前半部分执行 Q F T − 1 QFT^{-1} QFT1 得到叠加态 ∑ l = 0 r − 1 ∣ 2 t l / r ⟩ sum_{l=0}^{r-1}|2^tl/r angle l=0r12tl/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 QFTNQFTN 到两个寄存器上以提取出周期,从而求解出离散对数。

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)=1x=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 Uaxyxyfa(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 Uax=(1)fa(x)x

那么可以表示出 U a = I − 2 ∣ a ⟩ ⟨ a ∣ U_a = I - 2|a anglelangle a| Ua=I2∣aa,这个酉算子的几何图像是将任意态做关于法向 ∣ 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:=Hn∣0=N 1x=0N1x,其中 N = 2 n N=2^n N=2n。我们构造酉算子 U s : = 2 ∣ s ⟩ ⟨ s ∣ − I U_s := 2|s anglelangle s|-I Us:=2∣ssI,这个酉算子的几何图像是将正交于 ∣ s ⟩ |s angle s 的子空间做的中心反射(将 ∣ s ⟩ |s angle s 正交方向的分量符号改变,其他分量不变)。

因为 ∣ a ⟩ |a angle a 是基态,必然满足 ⟨ a ∣ s ⟩ = 1 / N langle a|s angle=1/sqrt N as=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 UTs,那么它转过了 2 T θ 2T heta 2 角度,使得夹角成为 ( 2 T + 1 ) θ (2T+1) heta (2T+1)θ。如果迭代次数为:
T ≈ π N 4 T approx dfrac{pisqrt N}{4} T4π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 UTsa,执行测量得到基态 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)=1xSa,Sa=r,量子黑盒中的秘密值为
∣ a ⟩ = 1 r ∑ i = 1 r ∣ a i ⟩ |a angle = dfrac{1}{sqrt r}sum_{i=1}^r |a_i angle a=r 1i=1rai
从而有 ⟨ s ∣ a ⟩ = r / N = sin ⁡ θ langle s|a angle = sqrt{r/N} = sin heta sa=r/N =sinθ,其中 θ ≈ r / N heta approx sqrt{r/N} θr/N 。经过 T ≈ π N 4 r T approx dfrac{pisqrt N}{4sqrt r} T4r πN 次迭代,使得 U T ∣ s ⟩ ≈ ∣ a ⟩ U^T|s angle approx |a angle UTsa,测量后以概率 1 / r 1/r 1/r 坍缩到某一个基态 ∣ a i ⟩ ∈ S a |a_i angle in S_a aiSa 上。重复大约 r ∑ k = 1 r 1 / k ≈ r ln ⁡ r rsum_{k=1}^r1/k approx r ln r rk=1r1/krlnr 次直到搜索出全部的值,总的复杂度为 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πrN lnr)=O(2n/2r lnr),相较于 O ( 2 n ) O(2^n) O(2n) 给出了平方根级别的加速,但依然是指数级的。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。