1 量子计算原理
经典计算中,最基本的单元是比特,最基本的控制模式是逻辑门,可以通过逻辑门的组合来达到控制电路的目的。
类似地,处理量子比特的方式就是量子逻辑门,使用量子逻辑门可以有意识地使量子态发生演化,所以量子逻辑门是构成量子算法的基础。
1.1 酉变换
酉变换是一种矩阵,也是一种操作,它作用在量子态上得到的是一个新的量子态。之前博客也提到过:
U † U^† U† 表示 U U U 的转置复共轭矩阵,酉矩阵的转置复共轭矩阵也是一个酉矩阵,酉变换是一种可逆变换。
一般酉变换在量子态上的作用是通过左乘以右矢进行的,例如:
∣ ψ ⟩ = U ∣ φ 0 ⟩ 或 ⟨ ψ ∣ = ⟨ φ 0 ∣ U † |ψ⟩=U|φ_0⟩ 或 ⟨ψ|=⟨φ_0|U^† ∣ψ⟩=U∣φ0⟩或⟨ψ∣=⟨φ0∣U† 由此可见,两个矢量的内积经过同一个酉变换之后保持不变:
⟨ φ ∣ ψ ⟩ = ⟨ φ ∣ U † U ∣ ψ ⟩ ⟨φ|ψ⟩=⟨φ|U†U|ψ⟩ ⟨φ∣ψ⟩=⟨φ∣U†U∣ψ⟩ 类似地,也可以通过酉变换表示密度矩阵的演化:
ρ = U ρ 0 U † ρ=Uρ_0U^† ρ=Uρ0U†这样就连混合态的演化也包含在内了。
1.2 矩阵的指数函数
在矩阵乘法的基础上,我们利用函数的幂级数来定义矩阵的指数函数。我们定义矩阵 A 的指数函数形式为:
e x p ( A ) = I + A + A 2 2 ! + A 3 3 ! + . . . exp(A)=I+A+\frac{A^2}{2\text{!}}+\frac{A^3}{3\text{!}}+... exp(A)=I+A+2!A2+3!A3+...
如果 A A A 是一个对角矩阵,即 A = d i a g ( A 11 , A 22 , A 33 , … ) A=diag\left( A_{11},A_{22},A_{33},… \right) A=diag(A11,A22,A33,…),则有:
A n = d i a g ( A 11 n , A 22 n , A 33 n , … ) A^n=diag\left( A_{11}^{n},A_{22}^{n},A_{33}^{n},… \right) An=diag(A11n,A22n,A33n,…) 从而得到:
e x p ( A ) = I + A + A 2 2 ! + A 3 3 ! + . . . = I + d i a g ( A 11 , A 22 , A 33 , … ) + d i a g ( A 11 2 , A 22 2 , A 33 2 , … ) 2 ! + d i a g ( A 11 3 , A 22 3 , A 33 3 , … ) 3 ! + . . . = d i a g ( 1 + A 11 + A 11 2 2 ! + A 11 3 3 ! + … , A 22 + A 22 2 2 ! + A 22 3 3 ! + … , A 33 + A 33 2 2 ! + A 33 3 3 ! + … , … … ) = d i a g ( e A 11 , e A 22 , e A 33 , … ) \begin{aligned} exp(A)&=I+A+\frac{A^2}{2\text{!}}+\frac{A^3}{3\text{!}}+... \\ &=I+diag\left( A_{11}^{},A_{22}^{},A_{33}^{},… \right) +\frac{diag\left( A_{11}^{2},A_{22}^{2},A_{33}^{2},… \right)}{2\text{!}}+\frac{diag\left( A_{11}^{3},A_{22}^{3},A_{33}^{3},… \right)}{3\text{!}}+... \\ &=diag\left( 1+A_{11}^{}+\frac{A_{11}^{2}}{2!}+\frac{A_{11}^{3}}{3!}+…, A_{22}^{}+\frac{A_{22}^{2}}{2!}+\frac{A_{22}^{3}}{3!}+…, A_{33}^{}+\frac{A_{33}^{2}}{2!}+\frac{A_{33}^{3}}{3!}+…, …… \right) \\ &=\mathrm{diag}\left( e^{A_{11}},e^{A_{22}},e^{A_{33}},… \right) \end{aligned} exp(A)=I+A+2!A2+3!A3+...=I+diag(A11,A22,A33,…)+2!diag(A112,A222,A332,…)+3!diag(A113,A223,A333,…)+...=diag(1+A11+2!A112+3!A113+…,A22+2!A222+3!A223+…,A33+2!A332+3!A333+…,……)=diag(eA11,eA22,eA33,…) 如果 A A A 不是一个对角矩阵,则利用酉变换可以将它对角化: A = U D U † A=UDU^{\dagger} A=UDU†。
则: A n = ( U D U † ) n = ( U D U † ) ( U D U † ) ( U D U † ) … … = U D n U † \begin{aligned} A^n&=\left( UDU^{\dagger} \right) ^n\\ &=\left( UDU^{\dagger} \right)\left( UDU^{\dagger} \right)\left( UDU^{\dagger} \right) ……\\ &=UD^nU^{\dagger}\\ \end{aligned} An=(UDU†)n=(UDU†)(UDU†)(UDU†)……=UDnU† 那么,类似地
exp ( A ) = exp ( U D U † ) = U U † + U D U † + U D 2 U † 2 ! + U D 3 U † 3 ! + . . . = U U † + U D U † + U D 2 2 ! U † + U D 3 3 ! U † + … = U ( I + D + D 2 2 ! + D 3 3 ! + … ) U † = U exp ( D ) U † = U d i a g ( e D 11 , e D 22 , e D 33 , … ) U † \begin{aligned} \exp \left( A \right) &=\exp \left( UDU^{\dagger} \right)\\ &=UU^{\dagger}+UDU^{\dagger}+\frac{UD^2U^{\dagger}}{2\text{!}}+\frac{UD^3U^{\dagger}}{3\text{!}}+...\\ &=UU^{\dagger}+UDU^{\dagger}+U\frac{D^2}{2\text{!}}U^{\dagger}+U\frac{D^3}{3\text{!}}U^{\dagger}+…\\ &=U\left( I+D+\frac{D^2}{2\text{!}}+\frac{D^3}{3\text{!}}+… \right) U^{\dagger}\\ &=U\exp \left( D \right) U^{\dagger}\\ &=U\mathrm{diag}\left( e^{D_{11}},e^{D_{22}},e^{D_{33}},… \right) U^{\dagger}\\ \end{aligned} exp(A)=exp(UDU†)=UU†+UDU†+2!UD2U†+3!UD3U†+...=UU†+UDU†+U2!D2U†+U3!D3U†+…=U(I+D+2!D2+3!D3+…)U†=Uexp(D)U†=Udiag(eD11,eD22,eD33,…)U†
注意:
e x p ( A + B ) ≠ e x p ( A ) e x p ( B ) ≠ e x p ( B ) e x p ( A ) exp\left( A+B \right) \ne exp\left( A \right) exp\left( B \right) \ne exp\left( B \right) exp\left( A \right) exp(A+B)=exp(A)exp(B)=exp(B)exp(A) 我们知道,当 A A A 是表示数的时候等号是成立的,但是当 A 表示是矩阵时,等式成立需要满足一定条件。
通常,下面这种表达形式被称之为以 A A A 为生成元生成的酉变换。
U ( θ ) = e x p ( − i θ A ) U(\theta )=exp(−i\theta A) U(θ)=exp(−iθA) 这种矩阵的指数运算可以利用 Matlab 中的 expm 命令进行方便地计算。
以单位矩阵为生成元,可以构建一种特殊的酉变换 u ( θ ) u(\theta ) u(θ)。
u ( θ ) = e x p ( − i θ I ) = ( e − i θ 0 0 e − i θ ) = e x p ( − i θ ) I u(\theta )=exp(-i\theta I)=\left( \begin{matrix} e^{-i\theta}& 0\\ 0& e^{-i\theta}\\ \end{matrix} \right) =exp(-i\theta )I u(θ)=exp(−iθI)=(e−iθ00e−iθ)=exp(−iθ)I u ( θ ) u(\theta ) u(θ) 作用在态矢上面,相当于态矢每个分量同时乘以一个系数 e − i θ e^{-i\theta} e−iθ。如果将作用后的态矢带入到密度矩阵的表达式中,会发现这一项系数会被消去。
这项系数称为量子态的整体相位。因为任何操作和测量都无法分辨两个相同的密度矩阵,所以量子态的整体相位一般情况下是不会对系统产生任何影响的。
1.3 单量子比特逻辑门
在经典计算机中,单比特逻辑门只有一种——非门(NOT gate),但是在量子计算机中,量子比特情况相对复杂,存在叠加态、相位,所以单量子比特逻辑门会有更加丰富的种类。
量子比特门可以用下面这幅图来表示:
横线表示一个量子比特从左到右按照时序演化的路线,通俗点讲,就是 ∣ ψ 0 > \left|\psi_0\right> ∣ψ0⟩ 演变为 ∣ ψ 1 > \left|\psi_1\right> ∣ψ1⟩ 的路线;
蓝色方框表示量子逻辑门,这个图标表示一个名为 U U U 的逻辑门作用在这条路线所代表的量子比特上。
对于一个处于 ∣ ψ 0 > \left|\psi_0\right> ∣ψ0⟩ 的量子态,将这个量子逻辑门作用在上面时,相当于将这个代表量子逻辑门的酉矩阵左乘这个量子态的矢量,然后得到下一个时刻的量子态 ∣ ψ 1 > \left|\psi_1\right> ∣ψ1⟩:
∣ ψ 1 > = U ∣ ψ 0 > \left|\psi_1\right>=U\left|\psi_0\right> ∣ψ1⟩=U∣ψ0⟩ 这个表达式对于所有的单比特门或者多比特门都是适用的。
对于一个有 n n n 个量子比特的量子系统,它的演化是通过一个 2 n × 2 n 2^n × 2^n 2n×2n 的酉矩阵来表达。
1.3.1 泡利矩阵
泡利矩阵(Pauli matrices)有时也被称作自旋矩阵(spin matrices)。有以下三种形式,分别是:
σ x = ( 0 1 1 0 ) σ y = ( 0 − i i 0 ) σ z = ( 1 0 0 − 1 ) \sigma _x=\left( \begin{matrix} 0& 1\\ 1& 0\\ \end{matrix} \right) \quad \sigma _y=\left( \begin{matrix} 0& -i\\ i& 0\\ \end{matrix} \right) \quad \sigma _z=\left( \begin{matrix} 1& 0\\ 0& -1\\ \end{matrix} \right) σx=(0110)σy=(0i−i0)σz=(100−1) 三个泡利矩阵所表示的泡利算符代表着对量子态矢量最基本的操作。
如将 σ x \sigma_x σx作用到 ∣ 0 > \left| 0 \right> ∣0⟩ 态上,经过矩阵运算,得到的末态为 ∣ 1 > \left| 1 \right> ∣1⟩ 态。
泡利矩阵的线性组合是完备的二维酉变换生成元,即所有满足 U U † = I UU^†=I UU†=I 的 U U U 都能通过下面这种方式得到:
U = e − i θ ( a σ x + b σ y + c σ z ) U=e^{-i\theta \left( a\sigma _x+b\sigma _y+c\sigma _z \right)} U=e−iθ(aσx+bσy+cσz)
1.3.2 常见逻辑门以及含义
· Hadamard (H) 门
形式: H = 1 2 [ 1 1 1 − 1 ] H=\frac{1}{\sqrt{2}}\left[ \begin{matrix} 1& 1\\ 1& -1\\ \end{matrix} \right] H=21[111−1] 线路表示:
功能:
- 作用在单量子比特上:将基态变为叠加态
1 2 [ 1 1 1 − 1 ] ∣ 0 > = ∣ 0 > + ∣ 1 > 2 \frac{1}{\sqrt{2}}\left[ \begin{matrix} 1& 1\\ 1& -1\\ \end{matrix} \right] \left| 0 \right> =\frac{\left| 0 \right> +\left| 1 \right>}{\sqrt{2}} 21[111−1]∣0⟩=2∣0⟩+∣1⟩ 1 2 [ 1 1 1 − 1 ] ∣ 1 > = ∣ 0 > − ∣ 1 > 2 \frac{1}{\sqrt{2}}\left[ \begin{matrix} 1& 1\\ 1& -1\\ \end{matrix} \right] \left| 1 \right> =\frac{\left| 0 \right> -\left| 1 \right>}{\sqrt{2}} 21[111−1]∣1⟩=2∣0⟩−∣1⟩ - 作用在任意量子态 ∣ ψ > = α ∣ 0 > + β ∣ 1 > \left| \psi \right> = \alpha\left| 0 \right> + \beta\left| 1 \right> ∣ψ⟩=α∣0⟩+β∣1⟩ 上:
∣ ψ ′ > = H ∣ ψ > = 1 2 [ 1 1 1 − 1 ] [ α β ] = 1 2 [ α + β α − β ] = α + β 2 ∣ 0 > − α − β 2 ∣ 1 > \left| \psi ' \right> =H\left| \psi \right> =\frac{1}{\sqrt{2}}\left[ \begin{matrix} 1& 1\\ 1& -1\\ \end{matrix} \right] \left[ \begin{array}{c} \alpha\\ \beta\\ \end{array} \right] =\frac{1}{\sqrt{2}}\left[ \begin{array}{c} \alpha +\beta\\ \alpha -\beta\\ \end{array} \right] =\frac{\alpha +\beta}{\sqrt{2}}\left| 0 \right> -\frac{\alpha -\beta}{\sqrt{2}}\left| 1 \right> ∣ψ′⟩=H∣ψ⟩=21[111−1][αβ]=21[α+βα−β]=2α+β∣0⟩−2α−β∣1⟩
· Pauli-X 门
形式: X = σ x = [ 0 1 1 0 ] X=\sigma _x=\left[ \begin{matrix} 0& 1\\ 1& 0\\ \end{matrix} \right] X=σx=[0110] 线路表示:
功能:
- 作用在单量子比特上:是经典计算机 NOT 门的量子等价,即将量子态进行翻转,因此又称 NOT 门。
X ∣ 0 > = [ 0 1 1 0 ] [ 1 0 ] = [ 0 1 ] = ∣ 1 > X\left| 0 \right> =\left[ \begin{matrix} 0& 1\\ 1& 0\\ \end{matrix} \right] \left[ \begin{array}{c} 1\\ 0\\ \end{array} \right] =\left[ \begin{array}{c} 0\\ 1\\ \end{array} \right] =\left| 1 \right> X∣0⟩=[0110][10]=[01]=∣1⟩ X ∣ 1 > = [