ch.10. Deutsch-Jozsa’s算法
定义:
输入:一个计算未知函数f的黑盒:
f
:
Z
2
n
→
Z
2
n
f:\Z_2^n\rightarrow \Z_2^n
f:Z2n→Z2n
已知:f是常函数或平衡常数
问题:确定f是常函数还是平衡函数,所需要f的最少次数为多少?
回答(输出):经典算法:
2
n
−
1
+
1
2^{n-1}+1
2n−1+1次,量子算法:1次
量子算法是如何做到只需要一次的?首先需要提出两个引理
先记:
∣ x ⟩ = ∣ x 1 , x 2 , . . . , x n ⟩ = ∣ x 1 ⟩ ⊗ ∣ x 2 ⟩ ⊗ ⋯ ⊗ ∣ x n ⟩ ∣ y ⟩ = ∣ y 1 , y 2 , . . . , y n ⟩ = ∣ y 1 ⟩ ⊗ ∣ y 2 ⟩ ⊗ ⋯ ⊗ ∣ y n ⟩ x ⋅ y = x 1 y 1 ⊕ x 2 y 2 ⊕ ⋯ ⊕ x n y n , x i y i = x i a n d y i ∑ y ∈ Z 2 n = ∑ y 1 = 0 1 ∑ y 2 = 0 1 ⋯ ∑ y n = 0 1 \begin{aligned}&|x\rang=|x_1,\ x_2,\ ...,\ x_n\rang=|x_1\rang\otimes|x_2\rang\otimes\cdots\otimes|x_n\rang\\ &|y\rang=|y_1,\ y_2,\ ...,\ y_n\rang=|y_1\rang\otimes|y_2\rang\otimes\cdots\otimes|y_n\rang\\ &x\cdot y=x_1y_1\oplus x_2y_2\oplus\cdots\oplus x_ny_n,\ x_iy_i=x_i\ and\ y_i\\ &\sum\limits_{y\in\Z_2^n}=\sum\limits_{y_1=0}^1\sum\limits_{y_2=0}^1\cdots\sum\limits_{y_n=0}^1\end{aligned} ∣x⟩=∣x1, x2, ..., xn⟩=∣x1⟩⊗∣x2⟩⊗⋯⊗∣xn⟩∣y⟩=∣y1, y2, ..., yn⟩=∣y1⟩⊗∣y2⟩⊗⋯⊗∣yn⟩x⋅y=x1y1⊕x2y2⊕⋯⊕xnyn, xiyi=xi and yiy∈Z2n∑=y1=0∑1y2=0∑1⋯yn=0∑1
引理1: H ( n ) ∣ x ⟩ = 1 2 n / 2 ∑ y ∈ Z 2 n ( − 1 ) x ⋅ y ∣ y ⟩ H^{(n)}|x\rang = \dfrac{1}{2^{n/2}}\sum\limits_{y\in\Z_2^n}(-1)^{x\cdot y}|y\rang H(n)∣x⟩=2n/21y∈Z2n∑(−1)x⋅y∣y⟩
证明:
当n=1时:
H ∣ x 1 ⟩ = 1 2 ( ∣ 0 ⟩ + ( − 1 ) x 1 ∣ 1 ⟩ ) = 1 2 ∑ y 1 = 0 1 ( − 1 ) x 1 ⋅ y 1 ∣ y 1 ⟩ \begin{aligned}H|x_1\rang&=\frac{1}{\sqrt{2}}(|0\rang+(-1)^{x_1}|1\rang)\\ &=\frac{1}{\sqrt 2}\sum_{y_1=0}^1(-1)^{x_1\cdot y_1}|y_1\rang\end{aligned} H∣x1⟩=21(∣0⟩+(−1)x1∣1⟩)=21y1=0∑1(−1)x1⋅y1∣y1⟩
等式成立,而当n为任意值时:
H ( n ) ∣ x ⟩ = ( H ⊗ H ⊗ ⋯ ⊗ H ) ∣ x 1 ⟩ ∣ x 2 ⟩ ⋯ ∣ x n ⟩ = ( 1 2 ) n ∑ y 1 = 0 1 ∑ y 2 = 0 1 ⋯ ∑ y n = 0 1 ( − 1 ) x 1 ⋅ y 1 ⋯ ( − 1 ) x n ⋅ y n ∣ y 1 ⟩ ⋯ ∣ y n ⟩ = 1 2 n / 2 ∑ y ∈ Z 2 n ( − 1 ) x 1 ⋅ y 1 ⊕ x 2 ⋅ y 2 ⊕ ⋯ ⊕ x n ⋅ y n ∣ y ⟩ = 1 2 n / 2 ∑ y ∈ Z 2 n ( − 1 ) x ⋅ y ∣ y ⟩ \begin{aligned}H^{(n)}|x\rang&=(H\otimes H\otimes\cdots\otimes H)|x_1\rang|x_2\rang\cdots|x_n\rang\\ &=\left(\frac{1}{\sqrt 2}\right)^n\sum_{y_1=0}^1\sum_{y_2=0}^1\cdots\sum_{y_n=0}^1(-1)^{x_1\cdot y_1}\cdots(-1)^{x_n\cdot y_n}|y_1\rang\cdots|y_n\rang\\ &=\frac{1}{2^{n/2}}\sum_{y\in\Z_2^n}(-1)^{x_1\cdot y_1\oplus x_2\cdot y_2 \oplus\cdots\oplus x_n\cdot y_n}|y\rang\\ &=\frac{1}{2^{n/2}}\sum_{y\in\Z_2^n}(-1)^{x\cdot y}|y\rang\end{aligned} H(n)∣x⟩=(H⊗H⊗⋯⊗H)∣x1⟩∣x2⟩⋯∣xn⟩=(21)ny1=0∑1y2=0∑1⋯yn=0∑1(−1)x1⋅y1⋯(−1)xn⋅yn∣y1⟩⋯∣yn⟩=2n/21y∈Z2n∑(−1)x1⋅y1⊕x2⋅y2⊕⋯⊕xn⋅yn∣y⟩=2n/21y∈Z2n∑(−1)x⋅y∣y⟩
证毕
注意到 H ( n ) ∣ 0 ⟩ ⊗ n = 1 2 n / 2 ∑ x ∈ Z 2 n ∣ x ⟩ H^{(n)}|0\rang^{\otimes n}=\dfrac{1}{2^{n/2}}\sum\limits_{x\in\Z_2^n}|x\rang H(n)∣0⟩⊗n=2n/21x∈Z2n∑∣x⟩
引理2:相位反冲:
U f : ∣ x ⟩ ∣ x n + 1 ⟩ → ∣ x ⟩ ∣ x n + 1 ⊕ f ( x ) ⟩ U_f:|x\rang|x_{n+1}\rang\rightarrow |x\rang|x_{n+1}\oplus f(x)\rang Uf:∣x⟩∣xn+1⟩→∣x⟩∣xn+1⊕f(x)⟩
U f : ∣ x ⟩ 1 2 ( ∣ 0 ⟩ − ∣ 1 ⟩ ) → ( − 1 ) f ( x ) ∣ x ⟩ 1 2 ( ∣ 0 ⟩ − ∣ 1 ⟩ ) U_f:|x\rang\dfrac{1}{\sqrt 2}(|0\rang-|1\rang)\rightarrow(-1)^{f(x)}|x\rang\dfrac{1}{\sqrt 2}(|0\rang-|1\rang) Uf:∣x⟩21(∣0⟩−∣1⟩)→(−1)f(x)∣x⟩21(∣0⟩−∣1⟩)
注意到f(x)最后变为了相因子(phase factor),如下图所示:
证明:
U f ∣ x ⟩ ∣ 0 ⟩ − ∣ 1 ⟩ 2 = 1 2 ( U f ∣ x ⟩ ∣ 0 ⟩ − U f ∣ x ⟩ ∣ 1 ⟩ ) = 1 2 ∣ x ⟩ ( ∣ f ( x ) ⟩ − ∣ 1 ⊕ f ( x ) ⟩ ) = { f ( x ) = 0 , 1 2 ∣ x ⟩ ( ∣ 0 ⟩ − ∣ 1 ⟩ ) f ( x ) = 1 , ( − 1 ) 1 2 ∣ x ⟩ ( ∣ 0 ⟩ − ∣ 1 ⟩ ) = ( − 1 ) f ( x ) ∣ x ⟩ ∣ − ⟩ \begin{aligned}U_f|x\rang\frac{|0\rang-|1\rang}{\sqrt 2}&=\frac{1}{\sqrt 2}(U_f|x\rang|0\rang-U_f|x\rang|1\rang)\\ &=\frac{1}{\sqrt 2}|x\rang(|f(x)\rang-|1\oplus f(x)\rang)\\ &=\left\{\begin{aligned}&f(x)=0,\ \frac{1}{\sqrt 2}|x\rang(|0\rang-|1\rang)\\ &f(x)=1,\ (-1)\frac{1}{\sqrt 2}|x\rang(|0\rang-|1\rang)\end{aligned}\right.\\ &=(-1)^{f(x)}|x\rang|-\rang\end{aligned} Uf∣x⟩2∣0⟩−∣1⟩=21(Uf∣x⟩∣0⟩−Uf∣x⟩∣1⟩)=21∣x⟩(∣f(x)⟩−∣1⊕f(x)⟩)=⎩⎪⎪⎨⎪⎪⎧f(x)=0, 21∣x⟩(∣0⟩−∣1⟩)f(x)=1, (−1)21∣x⟩(∣0⟩−∣1⟩)=(−1)f(x)∣x⟩∣−⟩
证毕
此算法的表示如下:
现按图中的划分,分步观察先后状态:
初始状态:
∣ ψ ( t 1 ) ⟩ = ∣ 0 ⟩ ⊗ n ⊗ ∣ 0 ⟩ − ∣ 1 ⟩ 2 |\psi(t_1)\rang=|0\rang^{\otimes n}\otimes \dfrac{|0\rang-|1\rang}{\sqrt 2} ∣ψ(t1)⟩=∣0⟩⊗n⊗2∣0⟩−∣1⟩
根据引理1,线性叠加制造用于计算的基矢态:
∣ ψ ( t 2 ) ⟩ = H ⊗ n ∣ 0 ⟩ ⊗ n ⊗ ∣ 0 ⟩ − ∣ 1 ⟩ 2 = 1 2 n / 2 ∑ x ∈ Z 2 n ∣ x ⟩ ⊗ ∣ 0 ⟩ − ∣ 1 ⟩ 2 \begin{aligned}|\psi(t_2)\rang&=H^{\otimes n}|0\rang^{\otimes n}\otimes\frac{|0\rang-|1\rang}{\sqrt 2}\\ &=\frac{1}{2^{n/2}}\sum_{x\in \Z_2^n}|x\rang\otimes\frac{|0\rang-|1\rang}{\sqrt 2}\end{aligned} ∣ψ(t2)⟩=H⊗n∣0⟩⊗n⊗2∣0⟩−∣1⟩=2n/21x∈Z2n∑∣x⟩⊗2∣0⟩−∣1⟩
根据引理2,进行相位反冲:
∣ ψ ( t 3 ) ⟩ = 1 2 n / 2 ∑ x ∈ Z 2 n U f ( ∣ x ⟩ ⊗ ∣ 0 ⟩ − ∣ 1 ⟩ 2 ) = 1 2 n / 2 ∑ x ∈ Z 2 n ( − 1 ) f ( x ) ∣ x ⟩ ⊗ ∣ 0 ⟩ − ∣ 1 ⟩ 2 \begin{aligned}|\psi(t_3)\rang&=\frac{1}{2^{n/2}}\sum_{x\in\Z_2^n}U_f\left(|x\rang\otimes\frac{|0\rang-|1\rang}{\sqrt 2}\right)\\ &=\frac{1}{2^{n/2}}\sum_{x\in\Z_2^n}(-1)^{f(x)}|x\rang\otimes \frac{|0\rang-|1\rang}{\sqrt 2}\end{aligned} ∣ψ(t3)⟩=2n/21x∈Z2n∑Uf(∣x⟩⊗2∣0⟩−∣1⟩)=2n/21x∈Z2n∑(−1)f(x)∣x⟩⊗2∣0⟩−∣1⟩
再次根据引理1,使用一次 H ⊗ n H^{\otimes n} H⊗n:
∣ ψ ( t 4 ) ⟩ = ( H ⊗ n ⊗ I 2 ) ∣ ψ ( t 3 ) ⟩ = 1 2 n / 2 ∑ x ∈ Z 2 n ( − 1 ) f ( x ) H ⊗ n ∣ x ⟩ ⊗ ∣ − ⟩ = 1 2 n ∑ x ∈ Z 2 n ∑ y ∈ Z n 2 ( − 1 ) f ( x ) ( − 1 ) x ⋅ y ∣ y ⟩ ⊗ ∣ − ⟩ = 1 2 n ∑ x ∈ Z 2 n ∑ y ∈ Z n 2 ( − 1 ) f ( x ) ⊕ x ⋅ y ∣ y ⟩ ⊗ ∣ − ⟩ \begin{aligned}|\psi(t_4)\rang&=(H^{\otimes n}\otimes I_2)|\psi(t_3)\rang\\ &=\frac{1}{2^{n/2}}\sum_{x\in\Z_2^n}(-1)^{f(x)}H^{\otimes n}|x\rang\otimes|-\rang\\ &=\frac{1}{2^n}\sum_{x\in\Z_2^n}\sum_{y\in\Z_n^2}(-1)^{f(x)}(-1)^{x\cdot y}|y\rang\otimes |-\rang\\ &=\frac{1}{2^n}\sum_{x\in\Z_2^n}\sum_{y\in\Z_n^2}(-1)^{f(x)\oplus x\cdot y}|y\rang\otimes |-\rang\end{aligned} ∣ψ(t4)⟩=(H⊗n⊗I2)∣ψ(t3)⟩=2n/21x∈Z2n∑(−1)f(x)H⊗n∣x⟩⊗∣−⟩=2n1x∈Z2n∑y∈Zn2∑(−1)f(x)(−1)x⋅y∣y⟩⊗∣−⟩=2n1x∈Z2n∑y∈Zn2∑(−1)f(x)⊕x⋅y∣y⟩⊗∣−⟩
当 ∣ y ⟩ = ∣ 0 ⟩ ⊗ n |y\rang=|0\rang^{\otimes n} ∣y⟩=∣0⟩⊗n时, x ⋅ y = 0 x\cdot y=0 x⋅y=0
∣ ψ ( t 4 ) ⟩ = 1 2 n ∑ x ∈ Z 2 n ( − 1 ) f ( x ) ∣ 0 ⟩ ⊗ n ∣ − ⟩ = { f ( x ) c o n s t a n t , ( − 1 ) f ( x ) ∣ 0 ⟩ ⊗ n ∣ − ⟩ f ( x ) b a l a n c e d , 0 \begin{aligned}|\psi(t_4)\rang&=\frac{1}{2^n}\sum_{x\in\Z_2^n}(-1)^{f(x)}|0\rang^{\otimes n}|-\rang\\ &=\left\{\begin{aligned}&f(x)\ constant,\ (-1)^{f(x)}|0\rang^{\otimes n}|-\rang\\ &f(x)\ balanced,\ 0\end{aligned}\right.\end{aligned} ∣ψ(t4)⟩=2n1x∈Z2n∑(−1)f(x)∣0⟩⊗n∣−⟩={f(x) constant, (−1)f(x)∣0⟩⊗n∣−⟩f(x) balanced, 0
最后,使用 ∣ 0 ⟩ ⊗ n ⟨ 0 ∣ ⊗ I 2 |0\rang^{\otimes n}\lang 0|\otimes I_2 ∣0⟩⊗n⟨0∣⊗I2进行投影测量:
如果n-qubit为
∣
0
⟩
⊗
n
|0\rang^{\otimes n}
∣0⟩⊗n,则测得的概率为1,说明是常函数
否则,说明是平衡函数
批注:这是使用量子算法,将经典算法中的NP问题的复杂度降至O(1)的例子。是线性叠加原理使得这个算法能够成功应用
Bernstein-Vazirani算法
输入:一个用于计算未知函数 f a f_a fa的黑箱:
f a : Z 2 n → Z 2 f_a:\Z_2^n\rightarrow \Z_2 fa:Z2n→Z2
已知: f a ( x ) = a ⋅ x = a 1 x 1 ⊕ a 2 x 2 ⊕ ⋯ ⊕ a n x n f_a(x)=a\cdot x=a_1x_1\oplus a_2x_2\oplus\cdots\oplus a_nx_n fa(x)=a⋅x=a1x1⊕a2x2⊕⋯⊕anxn
问题:确定n-bit串: a a a的内容
复杂度对比:经典算法需要n次,而使用Bernstein-Vazirani算法时,只需要1次
Bernstein-Vazirani算法如下图所示:
类似于Deutsch-Jozsa’s算法,分别得到各阶段的状态:
∣ ψ ( t 1 ) ⟩ = ∣ 0 ⟩ ⊗ n ∣ 0 ⟩ − ∣ 1 ⟩ 2 ∣ ψ ( t 2 ) ⟩ = 1 2 n / 2 ∑ x ∈ Z 2 n ∣ x ⟩ ⊗ ∣ 0 ⟩ − ∣ 1 ⟩ 2 ∣ ψ ( t 3 ) ⟩ = 1 2 n / 2 ∑ x ∈ Z 2 n ( − 1 ) a ⋅ x ∣ x ⟩ ∣ − ⟩ ∣ ψ ( t 4 ) ⟩ = 1 2 n ∑ x , y ∈ Z 2 n ( − 1 ) ( a + y ) ⋅ x ∣ y ⟩ ∣ − ⟩ \begin{aligned}&|\psi(t_1)\rang=|0\rang^{\otimes n}\frac{|0\rang-|1\rang}{\sqrt 2}\\ &|\psi(t_2)\rang=\frac{1}{2^{n/2}}\sum_{x\in\Z_2^n}|x\rang\otimes\frac{|0\rang-|1\rang}{\sqrt 2}\\ &|\psi(t_3)\rang=\frac{1}{2^{n/2}}\sum_{x\in\Z_2^n}(-1)^{a\cdot x}|x\rang|-\rang\\ &|\psi(t_4)\rang=\frac{1}{2^n}\sum_{x,\ y\in\Z_2^n}(-1)^{(a+y)\cdot x}|y\rang|-\rang\end{aligned} ∣ψ(t1)⟩=∣0⟩⊗n2∣0⟩−∣1⟩∣ψ(t2)⟩=2n/21x∈Z2n∑∣x⟩⊗2∣0⟩−∣1⟩∣ψ(t3)⟩=2n/21x∈Z2n∑(−1)a⋅x∣x⟩∣−⟩∣ψ(t4)⟩=2n1x, y∈Z2n∑(−1)(a+y)⋅x∣y⟩∣−⟩
引理3: ∑ x ∈ Z 2 n ( − 1 ) ( a + y ) ⋅ x = δ a + y , 0 2 n \sum\limits_{x\in\Z_2^n}(-1)^{(a+y)\cdot x}=\delta_{a+y,\ 0}2^n x∈Z2n∑(−1)(a+y)⋅x=δa+y, 02n
证明: L H S = ∑ x 1 = 0 1 ( − 1 ) ( a 1 + y 1 ) ⋅ x 1 ∑ x 2 = 0 1 ( − 1 ) ( a 2 + y 2 ) ⋅ x 2 ⋯ ∑ x n = 0 1 ( − 1 ) ( a n + y n ) ⋅ x n = 2 δ a 1 + y 1 , 0 ⋅ 2 δ a 2 + y 2 , 0 ⋯ 2 δ a n + y n , 0 = 2 n δ a + y , 0 \begin{aligned}LHS&=\sum_{x_1=0}^1(-1)^{(a_1+y_1)\cdot x_1}\sum_{x_2=0}^1(-1)^{(a_2+y_2)\cdot x_2}\cdots \sum_{x_n=0}^1(-1)^{(a_n+y_n)\cdot x_n}\\ &=2\delta_{a_1+y_1,\ 0}\cdot 2\delta_{a_2+y_2,\ 0}\cdots 2\delta_{a_n+y_n,\ 0}\\ &=2^n \delta_{a+y,\ 0}\end{aligned} LHS=x1=0∑1(−1)(a1+y1)⋅x1x2=0∑1(−1)(a2+y2)⋅x2⋯xn=0∑1(−1)(an+yn)⋅xn=2δa1+y1, 0⋅2δa2+y2, 0⋯2δan+yn, 0=2nδa+y, 0
因此:
∣ ψ ( t 4 ) ⟩ = ∑ y ∈ Z 2 n δ a + y , 0 ∣ y ⟩ ∣ − ⟩ = ∣ a ⟩ ⊗ ∣ − ⟩ |\psi(t_4)\rang=\sum\limits_{y\in\Z_2^n}\delta_{a+y,\ 0}|y\rang|-\rang=|a\rang\otimes|-\rang ∣ψ(t4)⟩=y∈Z2n∑δa+y, 0∣y⟩∣−⟩=∣a⟩⊗∣−⟩
最后进行量子测量,使用 ∣ a ⟩ ⟨ a ∣ ⊗ I 2 |a\rang\lang a|\otimes I_2 ∣a⟩⟨a∣⊗I2来获取 a a a