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

量子纠错码

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

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

解决办法:不直接对数据态测量,也不简单复制,而是通过添加额外量子位,把单个 qubit 的错误收集到冗余 qubits 上,并通过量子线路运算(不测量 / 隐含测量)来恢复单个 qubit 的量子态。

测量往往是不可逆运算。但是对于量子隐形传态量子纠错码中精心设计的测量线路来说,测量结果都没有揭示任何有关要被测量的量子比特的信息,因此这个测量是可逆的

Shor 码

纠正比特翻转错误(信道以概率 p p p 执行 X X X 酉运算):
∣ ψ ⟩ ↦ ( α ∣ 0 ⟩ + β ∣ 1 ⟩ ) ∣ 0 ⟩ ∣ 0 ⟩ ↦ α ∣ 000 ⟩ + β ∣ 111 ⟩ |\psi\rangle \mapsto (\alpha|0\rangle + \beta|1\rangle)|0\rangle|0\rangle \mapsto \alpha|000\rangle + \beta|111\rangle ψ(α∣0+β∣1⟩)∣0∣0α∣000+β∣111

注意码字 α ∣ 000 ⟩ + β ∣ 111 ⟩ \alpha|000\rangle + \beta|111\rangle α∣000+β∣111 并不是 ∣ ψ ⟩ ∣ ψ ⟩ ∣ ψ ⟩ |\psi\rangle|\psi\rangle|\psi\rangle ψψψ,虽然与三重复码很像,但这并没有克隆量子态 ∣ ψ ⟩ |\psi\rangle ψ
收到量子态 ∣ x y z ⟩ |xyz\rangle 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\rangle ψ。不过 Toffoli 门的容错实现很复杂。可以将 α ∣ 000 ⟩ + β ∣ 111 ⟩ \alpha|000\rangle + \beta|111\rangle α∣000+β∣111 看做是由 ∣ 000 ⟩ , ∣ 111 ⟩ |000\rangle, |111\rangle ∣000,∣111 张成的 1 1 1 维线性码(线性子空间),极小距离是 3 3 3

在这里插入图片描述

纠正相位翻转错误(信道以概率 p p p 执行 Z Z Z 酉运算):
∣ ψ ⟩ ↦ α ∣ 000 ⟩ + β ∣ 111 ⟩ ↦ H ⊗ 3 α ∣ + + + ⟩ + β ∣ − − − ⟩ |\psi\rangle \mapsto \alpha|000\rangle + \beta|111\rangle \overset{H^{\otimes 3}}{\mapsto} \alpha|+++\rangle + \beta|---\rangle ψα∣000+β∣111H3α++++β

其中 ∣ + ⟩ : = H ∣ 0 ⟩ = ∣ 0 ⟩ + ∣ 1 ⟩ 2 , ∣ − ⟩ : = H ∣ 1 ⟩ = ∣ 0 ⟩ − ∣ 1 ⟩ 2 |+\rangle := H|0\rangle = \dfrac{|0\rangle+|1\rangle}{\sqrt2}, |-\rangle := H|1\rangle = \dfrac{|0\rangle-|1\rangle}{\sqrt2} +:=H∣0=2 ∣0+∣1,:=H∣1=2 ∣0∣1

收到量子态 ∣ x y z ⟩ |xyz\rangle xyz,假设它至多发生一比特的相位翻转。由于 H 2 = I H^2=I H2=I H Z H = X HZH=X HZH=X,因此对 ∣ x y z ⟩ |xyz\rangle xyz 执行 H ⊗ 3 H^{\otimes 3} H3 就转化为了至多发生一比特的比特翻转。接下来使用纠正比特翻转的解码电路即可。可以将 α ∣ + + + ⟩ + β ∣ − − − ⟩ \alpha|+++\rangle + \beta|---\rangle α++++β 看做是由 ∣ + + + ⟩ , ∣ − − − ⟩ |+++\rangle, |---\rangle +++, 张成的 1 1 1 维线性码(线性子空间),极小距离是 3 3 3

在这里插入图片描述

那么,如何同时对抗比特翻转错误 或/和 相位翻转错误呢?Shor 编码将上述的比特翻转纠错码和相位翻转纠错码组合起来。因为 X Z = − Z X XZ=-ZX XZ=ZX,我们忽略整体相因子,它们是相同的酉运算。我们可以先纠正比特翻转错误,然后再纠正相位翻转错误。
∣ ψ ⟩ ↦ α ∣ 000 ⟩ + β ∣ 111 ⟩ ↦ α ∣ 0 L ⟩ + β ∣ 1 L ⟩ |\psi\rangle \mapsto \alpha|000\rangle + \beta|111\rangle \mapsto \alpha|0_L\rangle + \beta|1_L\rangle ψα∣000+β∣111α0L+β1L

其中
∣ 0 L ⟩ : = ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) ( ∣ 000 ⟩ + ∣ 111 ⟩ ) 2 2 ∣ 1 L ⟩ : = ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) ( ∣ 000 ⟩ − ∣ 111 ⟩ ) 2 2 |0_L\rangle := \dfrac{(|000\rangle+|111\rangle)(|000\rangle+|111\rangle)(|000\rangle+|111\rangle)}{2\sqrt2}\\ |1_L\rangle := \dfrac{(|000\rangle-|111\rangle)(|000\rangle-|111\rangle)(|000\rangle-|111\rangle)}{2\sqrt2}\\ 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\rangle ∣0(Bloch 球面 ( θ = 0 , ϕ = 0 ) (\theta=0,\phi=0) (θ=0,ϕ=0))映射到了 ∣ + ⟩ : = H ∣ 0 ⟩ |+\rangle:= H|0\rangle +:=H∣0(Bloch 球面 ( θ = π / 2 , ϕ = 0 ) (\theta=\pi/2,\phi=0) (θ=π/2,ϕ=0)),将 ∣ 1 ⟩ |1\rangle ∣1(Bloch 球面 ( θ = π , ϕ = 0 ) (\theta=\pi,\phi=0) (θ=π,ϕ=0))映射到了 ∣ − ⟩ : = H ∣ 1 ⟩ |-\rangle:= H|1\rangle :=H∣1(Bloch 球面 ( θ = − π / 2 , ϕ = 0 ) (\theta=-\pi/2,\phi=0) (θ=π/2,ϕ=0))。

易知 ∣ 0 ⟩ = X ∣ 1 ⟩ |0\rangle = X|1\rangle ∣0=X∣1 互为比特翻转,而 ∣ + ⟩ = Z ∣ − ⟩ |+\rangle = Z|-\rangle +=Z 互为相位翻转。我们将 ∣ 0 ⟩ , ∣ 1 ⟩ |0\rangle,|1\rangle ∣0,∣1 叫做标准基,将 ∣ + ⟩ , ∣ − ⟩ |+\rangle,|-\rangle +, 叫做共轭基。容易验证:
∣ ψ ⟩ = α ∣ 0 ⟩ + β ∣ 1 ⟩ = α + β 2 ∣ + ⟩ + α − β 2 ∣ − ⟩ H ∣ ψ ⟩ = H ( α ∣ 0 ⟩ + β ∣ 1 ⟩ ) = α + β 2 ∣ 0 ⟩ + α − β 2 ∣ 1 ⟩ |\psi\rangle = \alpha|0\rangle + \beta|1\rangle = \dfrac{\alpha+\beta}{\sqrt2}|+\rangle + \dfrac{\alpha-\beta}{\sqrt2}|-\rangle\\ H|\psi\rangle = H(\alpha|0\rangle + \beta|1\rangle) = \dfrac{\alpha+\beta}{\sqrt2}|0\rangle + \dfrac{\alpha-\beta}{\sqrt2}|1\rangle ψ=α∣0+β∣1=2 α+β++2 αβHψ=H(α∣0+β∣1⟩)=2 α+β∣0+2 αβ∣1

所以 H ∣ ψ ⟩ H|\psi\rangle Hψ 在标准基下的系数,就是 ∣ ψ ⟩ |\psi\rangle ψ 在共轭基下的系数。

n n n 比特量子态 ∣ x ⟩ |x\rangle 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\rangle = \dfrac{\sum_{y=0}^{2^n-1} (-1)^{xy^T}|y\rangle}{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\rangle = \dfrac{1}{\sqrt{2^m}} \sum_{v \in \mathcal C} |v\rangle 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 ⟩ \begin{aligned} H^{\otimes n} |C\rangle &= \dfrac{1}{\sqrt{2^m}} \sum_{v \in \mathcal C} H^{\otimes n}|v\rangle\\ &= \dfrac{1}{\sqrt{2^m}} \sum_{v \in \mathcal C} \dfrac{\sum_{w=0}^{2^n-1} (-1)^{vw^T}|w\rangle}{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\rangle\\ &= \dfrac{1}{\sqrt{2^{n+m}}} \sum_{w \in \mathcal C^\perp} 2^m |w\rangle\\ &= \dfrac{1}{\sqrt{2^{n-m}}} \sum_{w \in \mathcal C^\perp} |w\rangle\\ \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\rangle a=02m1(1)(aG)wTw 这一项,对于固定的 w ∉ C ⊥ w \notin \mathcal C^\perp w/C,则 G w T ≠ 0 m Gw^T\neq0^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 ] \begin{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\rangle = \dfrac{1}{\sqrt{2^{n-m}}} \sum_{v \in \mathcal C_1^\perp} |w+v\rangle Cw=2nm 1vC1w+v

在共轭基下,
H ⊗ n ∣ C w ⟩ = 1 2 m ∑ v ∈ C 1 ( − 1 ) w v T ∣ v ⟩ H^{\otimes n}|C_w\rangle = \dfrac{1}{\sqrt{2^m}} \sum_{v \in \mathcal C_1} (-1)^{wv^T}|v\rangle\\ HnCw=2m 1vC1(1)wvTv

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

  1. 纠正 d 2 − 1 2 \dfrac{d_2-1}{2} 2d21比特翻转错误,因为在标准基下,码字 ∣ C w ⟩ |C_w\rangle 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\rangle 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[\begin{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}\right]^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[\begin{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}\right] 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 |\bar 0\rangle = \dfrac{1}{\sqrt{2^3}} \sum_{v \in C_1,wt(v)\equiv0} |v\rangle = \dfrac{|0\rangle_L + |1\rangle_L}{\sqrt2}\\ |\bar 1\rangle = \dfrac{1}{\sqrt{2^3}} \sum_{v \in C_1,wt(v)\equiv1} |v\rangle = \dfrac{|0\rangle_L - |1\rangle_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\rangle_L = \dfrac{1}{\sqrt{2^4}} \left(\sum_{v \in C_1,wt(v)\equiv0} |v\rangle + \sum_{v \in C_1,wt(v)\equiv1} |v\rangle\right) = \dfrac{|\bar 0\rangle + |\bar 1\rangle}{\sqrt2}\\ |1\rangle_L = \dfrac{1}{\sqrt{2^4}} \left(\sum_{v \in C_1,wt(v)\equiv0} |v\rangle - \sum_{v \in C_1,wt(v)\equiv1} |v\rangle\right) = \dfrac{|\bar 0\rangle - |\bar 1\rangle}{\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 ‾ } \{\bar H, \bar P, \overline{CNOT}, \overline{Toffoli}\} { Hˉ,Pˉ,CNOT,Toffoli},容错的阿达玛门、相位门、受控非门、双控非门。其中 { H ˉ , P ˉ , C N O T ‾ } \{\bar H, \bar 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 2\pi i/N} x_j yk=N 1j=0N1ejk2πi/Nxj

类比着定义基态 ∣ j ⟩ |j\rangle 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\rangle=|j_1j_2\cdots j_n\rangle 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\rangle \overset{QFT}{\longrightarrow} \dfrac{1}{\sqrt N} \sum_{k=0}^{N-1} e^{jk \cdot 2\pi i/N}|k\rangle jQFTN 1k=0N1ejk2πi/Nk

那么任意态 ∑ j = 0 N − 1 x j ∣ j ⟩ \sum_{j=0}^{N-1} x_j|j\rangle 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 ⟩ \begin{aligned} \sum_{j=0}^{N-1} x_j|j\rangle &\overset{QFT}{\longrightarrow} \dfrac{1}{\sqrt N} \sum_{j=0}^{N-1} x_j\sum_{k=0}^{N-1} e^{jk \cdot 2\pi i/N}|k\rangle\\ &= \sum_{k=0}^{N-1}\left(\dfrac{1}{\sqrt N} \sum_{j=0}^{N-1} e^{jk \cdot 2\pi i/N}x_j \right)|k\rangle\\ &= \sum_{k=0}^{N-1}y_k|k\rangle \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\rangle j=0N1xjj,经过 QFT 后得到叠加态 ∑ k = 0 N − 1 y k ∣ k ⟩ \sum_{k=0}^{N-1}y_k|k\rangle 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\rangle) 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 ⟩ ] \begin{aligned} |j\rangle &\overset{QFT}{\longrightarrow} \dfrac{1}{\sqrt{2^n}} \sum_{k=0}^{2^n-1} e^{jk \cdot 2\pi i/2^n}|k\rangle\\ &= \dfrac{1}{\sqrt{2^n}} \sum_{k_1=0}^{1}\cdots \sum_{k_n=0}^{1} e^{j\sum_{l=1}^n(2^{-l}k_l) \cdot 2\pi i}|k_1\cdots k_n\rangle\\ &= \dfrac{1}{\sqrt{2^n}} \bigotimes_{l=1}^n \sum_{k_l=0}^{1} e^{\cdot jk_l \cdot 2\pi i/2^l}|k_l\rangle\\ &= \dfrac{1}{\sqrt{2^n}} \bigotimes_{l=1}^n \left[|0\rangle+ e^{j \cdot 2\pi i/2^l}|1\rangle\right]\\ &= \dfrac{1}{\sqrt{2^n}} \bigotimes_{l=1}^n \left[|0\rangle+ (e^{2\pi i})^{0.j_{n-l+1}\cdots j_n}|1\rangle\right]\\ \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 ⟩ |+\rangle:=H|0\rangle +:=H∣0 执行一些受控相位旋转即可完成 QFT 的计算,
R k : = [ 1 0 0 e 2 π i / 2 k ] , k = 1 , 2 , ⋯   , n R_k := \begin{bmatrix} 1&0\\ 0&e^{2\pi 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(N\log 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 \in\mathbb 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} \neq -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=1\pmod 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\rangle := \left\{\begin{aligned} |xy\rangle,&& 0\le y<N\\ |y\rangle,&& N\le y<2^L-1 \end{aligned}\right. Uy:={ xy,y,0y<NNy<2L1

定义状态
∣ u s ⟩ : = 1 r ∑ k = 0 r − 1 e − 2 s k π i / r ∣ x k ⟩ |u_s\rangle := \dfrac{1}{\sqrt r} \sum_{k=0}^{r-1} e^{-2sk\pi i/r} |x^k\rangle 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\rangle=|1\rangle 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^{2sk\pi i/r} |u_s\rangle=|x^k\rangle r 1s=0r1e2skπi/rus=xk,可以证明(好长的式子)它们满足:
U ∣ u s ⟩ = e 2 s π i / r ∣ u s ⟩ U|u_s\rangle = e^{2s\pi i/r}|u_s\rangle Uus=e2sπi/rus

也就是说, ∣ u s ⟩ |u_s\rangle us 就是酉算子 U U U本征态,对应的本征值 e 2 s π i / r e^{2s\pi i/r} e2sπi/r,我们需要的 r r r 可由相位 2 π i ⋅ s / r 2\pi i \cdot s/r 2πis/r 来确定。

下面的问题就是如何估计对 U ∣ u ⟩ = e 2 π i ϕ ∣ u ⟩ U|u\rangle = e^{2\pi i\phi}|u\rangle Uu=e2πiϕu 进行相位估计了。我们使用 t t t 比特量子态 ∣ j ⟩ = ∣ j 1 ⋯ j t ⟩ |j\rangle=|j_1\cdots j_t\rangle 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\rangle|u\rangle \mapsto |j\rangle U^j|u\rangle = |j\rangle U^{\sum_{l=0}^{t-1}2^lj_l}|u\rangle jujUju=jUl=0t12ljlu

对于受控相移 ∣ j ⟩ ( e i α ) j ∣ u ⟩ = P ( e i α ) ∣ j ⟩ ∣ u ⟩ |j\rangle (e^{i\alpha})^j|u\rangle = P(e^{i\alpha})|j\rangle|u\rangle 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\rangle U^{2^lj_l}|u\rangle = |j_l\rangle (e^{2\pi i \phi})^{2^lj_l}|u\rangle = \begin{bmatrix} 1&0\\ 0&e^{2\pi i(\phi 2^l)} \end{bmatrix} |j_l\rangle |u\rangle jlU2ljlu=jl(e2πiϕ)2ljlu=[100e2πi(ϕ2l)]jlu

我们令 ∣ j l ⟩ = ∣ + ⟩ = ( ∣ 0 ⟩ + ∣ 1 ⟩ ) / 2 |j_l\rangle = |+\rangle = (|0\rangle+|1\rangle)/\sqrt2 jl=+=(∣0+∣1⟩)/2 ,那么 ∣ j ⟩ U j ∣ u ⟩ |j\rangle U^j|u\rangle 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\rangle + e^{2\pi i(\phi 2^0)} |1\rangle}{\sqrt2}\right)\left(\dfrac{|0\rangle + e^{2\pi i(\phi 2^1)} |1\rangle}{\sqrt2}\right)\cdots\left(\dfrac{|0\rangle + e^{2\pi i(\phi 2^{t-1})} |1\rangle}{\sqrt2}\right)|u\rangle (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^{2\pi i(\phi k)}|k\rangle 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\rangle) QFT(j⟩),因此执行逆变换 Q F T − 1 QFT^{-1} QFT1 就得到了基态 ∣ j ⟩ |j\rangle 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\rangle|y\rangle \mapsto |x\rangle|y \oplus f(x)\rangle Uxyxyf(x)⟩

将量子态 ∣ f ( x ) ⟩ |f(x)\rangle f(x)⟩ 写成 QFT 形式 ∣ f ^ ( l ) ⟩ : = 1 r ∑ l = 0 r − 1 e − l x ⋅ 2 π i / r ∣ f ( l ) ⟩ |\hat f(l)\rangle := \frac{1}{\sqrt r}\sum_{l=0}^{r-1} e^{-lx \cdot2\pi i/r}|f(l)\rangle 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)\rangle = \dfrac{1}{\sqrt r}\sum_{l=0}^{r-1} e^{lx \cdot2\pi i/r}|\hat f(l)\rangle 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\rangle|0\rangle 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\rangle|f(x)\rangle \approx \dfrac{1}{\sqrt r}\sum_{l=0}^{r-1} \left(\dfrac{1}{\sqrt{2^t}}\sum_{x=0}^{2^t-1} e^{lx \cdot2\pi i/r}|x\rangle\right)|\hat f(l)\rangle 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\rangle 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\rangle \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\rangle|y\rangle \mapsto |x\rangle|y \oplus f_a(x)\rangle Uaxyxyfa(x)⟩

令辅助量子位 ∣ y ⟩ = ∣ − ⟩ |y\rangle = |-\rangle y=,那么它有以下性质
U a ∣ x ⟩ ∣ − ⟩ = ( − 1 ) f a ( x ) ∣ x ⟩ ∣ − ⟩ U_a|x\rangle|-\rangle = (-1)^{f_a(x)}|x\rangle|-\rangle Uax=(1)fa(x)x

那么可以表示出 U a = I − 2 ∣ a ⟩ ⟨ a ∣ U_a = I - 2|a\rangle\langle a| Ua=I2∣aa,这个酉算子的几何图像是将任意态做关于法向 ∣ a ⟩ |a\rangle a 超平面镜面反射(将 ∣ a ⟩ |a\rangle a 方向的分量符号改变,其他分量不变)。

定义 ∣ s ⟩ : = H ⊗ n ∣ 0 ⟩ = 1 N ∑ x = 0 N − 1 ∣ x ⟩ |s\rangle := H^{\otimes n}|0\rangle = \dfrac{1}{\sqrt N}\sum_{x=0}^{N-1} |x\rangle s:=Hn∣0=N 1x=0N1x,其中 N = 2 n N=2^n N=2n。我们构造酉算子 U s : = 2 ∣ s ⟩ ⟨ s ∣ − I U_s := 2|s\rangle\langle s|-I Us:=2∣ssI,这个酉算子的几何图像是将正交于 ∣ s ⟩ |s\rangle s 的子空间做的中心反射(将 ∣ s ⟩ |s\rangle s 正交方向的分量符号改变,其他分量不变)。

因为 ∣ a ⟩ |a\rangle a 是基态,必然满足 ⟨ a ∣ s ⟩ = 1 / N \langle a|s\rangle=1/\sqrt N as=1/N 。假设 1 / N = sin ⁡ θ 1/\sqrt N=\sin\theta 1/N =sinθ,即它们的夹角为 π / 2 − θ \pi/2 - \theta π/2θ,满足 ∣ s ⟩ = ± sin ⁡ θ ∣ a ⟩ ± cos ⁡ θ ∣ a ⊥ ⟩ |s\rangle = \pm \sin\theta|a\rangle \pm \cos\theta|a^\perp\rangle s=±sinθa±cosθa。如图所示:

在这里插入图片描述

定义酉算子 U = U s U a U = U_sU_a U=UsUa,那么它的几何意义是将 ∣ x ⟩ |x\rangle x 先经过 U a U_a Ua 的关于 ∣ a ⊥ ⟩ |a^\perp\rangle a 轴对称为 ∣ x ′ ⟩ |x'\rangle x,然后经过 U s U_s Us ∣ s ⟩ |s\rangle s 轴对称得到 ∣ x ′ ′ ⟩ |x''\rangle x′′。最终的结果是 ∣ x ′ ′ ⟩ |x''\rangle x′′ 对比于 ∣ x ⟩ |x\rangle x 转过了 2 θ 2\theta 2θ 角度。

在这里插入图片描述

Grover 算法制备 ∣ s ⟩ |s\rangle s,它与未知的 ∣ a ⟩ |a\rangle a 之间的角度是 θ \theta θ sin ⁡ θ = 1 / N \sin\theta=1/\sqrt N sinθ=1/N ,选取足够大的 n n n 使得 θ ≈ 1 / N \theta \approx 1/\sqrt N θ1/N 是个很小的角度)。然后调用 f a ( x ) f_a(x) fa(x) 黑盒来实现酉变换 U U U,迭代计算 U T ∣ s ⟩ U^T|s\rangle UTs,那么它转过了 2 T θ 2T \theta 2 角度,使得夹角成为 ( 2 T + 1 ) θ (2T+1)\theta (2T+1)θ。如果迭代次数为:
T ≈ π N 4 T \approx \dfrac{\pi\sqrt N}{4} T4πN
那么转过的角度为 ( 2 T + 1 ) θ ≈ π 2 (2T+1)\theta \approx \dfrac{\pi}{2} (2T+1)θ2π,于是 U T ∣ s ⟩ ≈ ∣ a ⟩ U^T|s\rangle \approx |a\rangle UTsa,执行测量得到基态 a a a 的值。量子摇晃:迭代执行 U U U 酉变换,放大 ∣ a ⟩ |a\rangle a 方向的几率幅,这使得 ∣ s ⟩ |s\rangle s 不断地靠近 ∣ a ⟩ |a\rangle 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\rangle = \dfrac{1}{\sqrt r}\sum_{i=1}^r |a_i\rangle a=r 1i=1rai
从而有 ⟨ s ∣ a ⟩ = r / N = sin ⁡ θ \langle s|a \rangle = \sqrt{r/N} = \sin\theta sa=r/N =sinθ,其中 θ ≈ r / N \theta \approx \sqrt{r/N} θr/N 。经过 T ≈ π N 4 r T \approx \dfrac{\pi\sqrt N}{4\sqrt r} T4r πN 次迭代,使得 U T ∣ s ⟩ ≈ ∣ a ⟩ U^T|s\rangle \approx |a\rangle UTsa,测量后以概率 1 / r 1/r 1/r 坍缩到某一个基态 ∣ a i ⟩ ∈ S a |a_i\rangle \in S_a aiSa 上。重复大约 r ∑ k = 1 r 1 / k ≈ r ln ⁡ r r\sum_{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) 给出了平方根级别的加速,但依然是指数级的。

猜你喜欢

转载自blog.csdn.net/weixin_44885334/article/details/131008621