1量子ビットゲート

1量子ビットゲート(1量子ゲート)は,量子コンピュータ・量子計算を扱う上で何度も登場する重要な概念です。

各種の1量子ビットゲートについて,数式を用いて解説していきます。

量子回路の読み方

量子回路について,詳細は別記事にて解説予定ですので,この記事では詳細は説明しません。この記事の1量子ビットゲートの解説のために必要な部分について触れます。

いま,量子状態 ψ| \psi \rangle に,ユニタリ行列で表される操作 UU を行ったとき,量子状態が ϕ| \phi \rangle に変化したとします。

ϕ=Uψ | \phi \rangle = U | \psi \rangle

この操作を表す量子回路は例えば以下のように書きます。

QC-ex1

量子回路図では,時間は左から右に進みます。また,図の最も左側の状態が入力,最も右側の状態が出力となっています。

別の例についても量子回路を書いてみます。いま,量子状態 ψ| \psi \rangle に,ユニタリ行列で表される操作 U1,U2U_1, U_2 をこの順で行ったとき,量子状態が ϕ| \phi \rangle に変化したとします。これは数式では以下のように表すことができます。

ϕ=U2U1ψ | \phi \rangle = U_2 U_1 | \psi \rangle

この操作を表す量子回路は例えば以下のように書きます。

QC-ex2

量子回路図では左から U1,U2U_1, U_2 の順で並びますが,数式上では左から U2,U1U_2, U_1 の順で並ぶことに注意してください。

パウリゲート

パウリゲートとは,Xゲート,Yゲート,Zゲートの3つの総称です。

Xゲート

Xゲートとは,以下のように表される行列です。

X=(0110) \begin{aligned} X = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \end{aligned}

Xゲートは,計算基底 0,1| 0 \rangle, | 1 \rangle に以下のように作用します。

X0=(0110)(10)=(01)=1 \begin{aligned} X | 0 \rangle &= \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \end{pmatrix} \\ &= \begin{pmatrix} 0 \\ 1 \end{pmatrix} = | 1 \rangle \end{aligned}

X1=(0110)(01)=(10)=0 \begin{aligned} X | 1 \rangle &= \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} \begin{pmatrix} 0 \\ 1 \end{pmatrix} \\ &= \begin{pmatrix} 1 \\ 0 \end{pmatrix} = | 0 \rangle \end{aligned}

このように,Xゲートはビットあるいはスピンをフリップさせるという役割を持っています。量子ビットにおいて0を1,1を0に変換しているという観点から,古典コンピュータにおけるNOT演算子としてはたらいているとも考えることができます。

量子回路では,Xゲートは以下のように表されます。

Xgate

Yゲート

Yゲートとは,以下のように表される行列です。

Y=(0ii0) \begin{aligned} Y = \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \end{aligned}

Yゲートは,計算基底 0,1| 0 \rangle, | 1 \rangle に以下のように作用します。

Y0=(0ii0)(10)=(0i)=i1 \begin{aligned} Y | 0 \rangle &= \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \end{pmatrix} \\ &= \begin{pmatrix} 0 \\ i \end{pmatrix} = i | 1 \rangle \end{aligned}

Y1=(0ii0)(01)=(i0)=i0 \begin{aligned} Y | 1 \rangle &= \begin{pmatrix} 0 & -i \\ i & 0 \end{pmatrix} \begin{pmatrix} 0 \\ 1 \end{pmatrix} \\ &= \begin{pmatrix} -i \\ 0 \end{pmatrix} = -i | 0 \rangle \end{aligned}

量子回路では,Yゲートは以下のように表されます。

Ygate

Zゲート

Zゲートとは,以下のように表される行列です。

Y=(1001) \begin{aligned} Y = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} \end{aligned}

Zゲートは,計算基底 0,1| 0 \rangle, | 1 \rangle に以下のように作用します。

Z0=(1001)(10)=(10)=0 \begin{aligned} Z | 0 \rangle &= \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \end{pmatrix} \\ &= \begin{pmatrix} 1 \\ 0 \end{pmatrix} = | 0 \rangle \end{aligned}

Z1=(1001)(01)=(01)=1 \begin{aligned} Z | 1 \rangle &= \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix} \begin{pmatrix} 0 \\ 1 \end{pmatrix} \\ &= \begin{pmatrix} 0 \\ -1 \end{pmatrix} = - | 1 \rangle \end{aligned}

これより,Zゲートは 0| 0 \rangle には何もしないが,1| 1 \rangle は位相を反転させるという役割があります。

また,Zゲートは 0| 0 \rangle および 1| 1 \rangle を固有ベクトルに持つということもわかります。

Zゲートが 0| 0 \rangle および 1| 1 \rangle を固有ベクトルに持つということを,線形代数の知識から確認しておきます。

固有方程式 ZtE=0|| Z - t E|| = 0 を解くことを考えます。

ZtE=1t001t=(1t)(1t)=0 \begin{aligned} || Z - t E|| &= \begin{Vmatrix} 1 -t & 0 \\ 0 & -1-t \end{Vmatrix} \\ &= (1 - t)(-1 - t) = 0 \end{aligned}

t=±1 \therefore t = \pm 1

t=1t = 1 に対応する固有ベクトル v+=(x+,y+)T\vec{v}_+ = (x_+, y_+)^T を求めます。

Zv+=v+ Z \vec{v}_+ = \vec{v}_+

(1001)(x+y+)=(x+y+)=(x+y+) \therefore \begin{aligned} \begin{pmatrix} 1 & 0 \\ 0 & -1 \\ \end{pmatrix} \begin{pmatrix} x_+ \\ y_+ \end{pmatrix} = \begin{pmatrix} x_+ \\ -y_+ \end{pmatrix} = \begin{pmatrix} x_+ \\ y_+ \end{pmatrix} \end{aligned}

y+=0,x+R \therefore y_+ = 0, x_+ \in \mathbb{R}

規格化を考えて,x+=1x_+ = 1 と求められます。したがって,v+=0\vec{v}_+ = | 0 \rangle です。

次に,t=1t = - 1 に対応する固有ベクトル v=(x,y)T\vec{v}_- = (x_-, y_-)^T を求めます。

Zv=v Z \vec{v}_- = - \vec{v}_-

(1001)(xy)=(xy)=(xy) \therefore \begin{aligned} \begin{pmatrix} 1 & 0 \\ 0 & -1 \\ \end{pmatrix} \begin{pmatrix} x_- \\ y_- \end{pmatrix} = - \begin{pmatrix} x_- \\ -y_- \end{pmatrix} = \begin{pmatrix} -x_- \\ y_- \end{pmatrix} \end{aligned}

x=0,yR \therefore x_- = 0, y_- \in \mathbb{R}

規格化を考えて,y=1y_- = 1 と求められます。したがって,v=1\vec{v}_- = | 1 \rangle です。

量子回路では,Zゲートは以下のように表されます。

Zgate

パウリゲートと単位行列

これらのパウリゲートは,2乗すると単位行列 II になります。すなわち

X2=Y2=Z2=I X^2 = Y^2 = Z^2 = I

これは簡単な計算によって確かめられます。ぜひ練習問題としてやってみてください。

アダマールゲート

アダマールゲートは,以下のように表される行列です。

H=12(1111) H = \dfrac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}

アダマールゲートは,計算基底 0,1| 0 \rangle, | 1 \rangle に以下のように作用します。

H0=12(1111)(10)=12(11)=12(0+1)=+ \begin{aligned} H | 0 \rangle &= \dfrac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \end{pmatrix} \\ &= \dfrac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ 1 \end{pmatrix} \\ &= \dfrac{1}{\sqrt{2}} (| 0 \rangle + | 1 \rangle) = | + \rangle \end{aligned}

H1=12(1111)(01)=12(11)=12(01)= \begin{aligned} H | 1 \rangle &= \dfrac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} 0 \\ 1 \end{pmatrix} \\ &= \dfrac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ -1 \end{pmatrix} \\ &= \dfrac{1}{\sqrt{2}} (| 0 \rangle - | 1 \rangle) = | - \rangle \end{aligned}

状態 +,| + \rangle, | - \rangle については,量子ビットとブロッホ球 も併せてご覧ください。

アダマールゲートの特徴は,+,| + \rangle, | - \rangle に作用させると,0,1| 0 \rangle, | 1 \rangle に戻るという点です。

H+=12(1111)(11)=12(20)=(10)=0 \begin{aligned} H | + \rangle &= \dfrac{1}{2} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} 1 \\ 1 \end{pmatrix} \\ &= \dfrac{1}{2} \begin{pmatrix} 2 \\ 0 \end{pmatrix} \\ &= \begin{pmatrix} 1 \\ 0 \end{pmatrix} = | 0 \rangle \end{aligned}

H=12(1111)(11)=12(02)=(01)=1 \begin{aligned} H | - \rangle &= \dfrac{1}{2} \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} \begin{pmatrix} 1 \\ -1 \end{pmatrix} \\ &= \dfrac{1}{2} \begin{pmatrix} 0 \\ 2 \end{pmatrix} \\ &= \begin{pmatrix} 0 \\ 1 \end{pmatrix} = | 1 \rangle \end{aligned}

量子回路では,アダマールゲートは例えば以下のように表されます。

Hgate

アダマールゲートと単位行列

アダマールゲートも,パウリゲート同様,2乗すると単位行列 II になります。

H2=I H^2 = I

これも簡単な計算により確かめられますので,ぜひ手を動かしてみてください。

Sゲート,Tゲート

Sゲート,Tゲートのはたらき

Sゲート,Tゲートはそれぞれ以下のように表される行列です。

S=(100i),S=(100i) S = \begin{pmatrix} 1 & 0 \\ 0 & i \end{pmatrix}, S^\dagger = \begin{pmatrix} 1 & 0 \\ 0 & -i \end{pmatrix}

T=(100eiπ/4),T=(100eiπ/4) T = \begin{pmatrix} 1 & 0 \\ 0 & e^{i \pi/4} \end{pmatrix}, T^\dagger = \begin{pmatrix} 1 & 0 \\ 0 & e^{- i \pi/4} \end{pmatrix}

SゲートとTゲートは,ブロッホ球上での位相の回転に対応しています。Sゲートは位相を π/2\pi/2,Tゲートは位相を π/4\pi/4 だけ回転させることができます。これを計算により確かめてみましょう。

いま,ブロッホ球上の任意の量子状態 ψ| \psi \rangle は,2つの角度 θ,φ\theta, \varphi を用いて以下のように表すことができるのでした。(量子ビットとブロッホ球 も併せてご覧ください。)

ψ=cosθ20+eiφsinθ21=(cosθ2eiφsinθ2) | \psi \rangle = \cos{\dfrac{\theta}{2}} | 0 \rangle + e^{i \varphi}\sin{\dfrac{\theta}{2}} | 1 \rangle = \begin{pmatrix} \cos{\dfrac{\theta}{2}} \\ e^{i \varphi}\sin{\dfrac{\theta}{2}} \end{pmatrix}

Bloch-state

この量子状態に,SゲートとTゲートをそれぞれ作用させてみましょう。i=eiπ/2i = e^{i \pi/2} に注意して

Sψ=(100eiπ/2)(cosθ2eiφsinθ2)=(cosθ2ei(φ+π/2)sinθ2)=cosθ20+ei(φ+π/2)sinθ21 \begin{aligned} S | \psi \rangle &= \begin{pmatrix} 1 & 0 \\ 0 & e^{i \pi/2} \end{pmatrix} \begin{pmatrix} \cos{\dfrac{\theta}{2}} \\ e^{i \varphi}\sin{\dfrac{\theta}{2}} \end{pmatrix} \\ &= \begin{pmatrix} \cos{\dfrac{\theta}{2}} \\ e^{i (\varphi + \pi/2)}\sin{\dfrac{\theta}{2}} \end{pmatrix} \\ &= \cos{\dfrac{\theta}{2}} | 0 \rangle + e^{i (\varphi + \pi/2)}\sin{\dfrac{\theta}{2}} | 1 \rangle \end{aligned}

Tψ=(100eiπ/4)(cosθ2eiφsinθ2)=(cosθ2ei(φ+π/4)sinθ2)=cosθ20+ei(φ+π/4)sinθ21 \begin{aligned} T | \psi \rangle &= \begin{pmatrix} 1 & 0 \\ 0 & e^{i \pi/4} \end{pmatrix} \begin{pmatrix} \cos{\dfrac{\theta}{2}} \\ e^{i \varphi}\sin{\dfrac{\theta}{2}} \end{pmatrix} \\ &= \begin{pmatrix} \cos{\dfrac{\theta}{2}} \\ e^{i (\varphi + \pi/4)}\sin{\dfrac{\theta}{2}} \end{pmatrix} \\ &= \cos{\dfrac{\theta}{2}} | 0 \rangle + e^{i (\varphi + \pi/4)}\sin{\dfrac{\theta}{2}} | 1 \rangle \end{aligned}

よって,Sゲートは位相を π/2\pi/2,Tゲートは位相を π/4\pi/4 だけ回転させることが確かめられました。

Sゲート,Tゲートは,量子回路では例えば下図のように表すことができます。

Sgate

Tgate

Sゲート,Tゲートと他のゲートとの対応

以下の数式が成り立つことが,簡単な計算により確かめることができます。

SS=TT=I S S^\dagger = T T^\dagger = I

S2=Z S^2 = Z

T2=S T^2 = S

この関係式からも,Zゲートがブロッホ球上で π\pi 回転に対応していることがわかります。

位相ゲート

ブロッホ球上で任意の角度 ϕ\phi だけ回転させる位相ゲート PϕP_\phi を考えることができます。Sゲート,Tゲートの計算により,PϕP_\phi は以下のように表されることがわかります。

Pϕ=(100eiϕ) P_\phi = \begin{pmatrix} 1 & 0 \\ 0 & e^{i \phi} \end{pmatrix}

回転ゲート

ブロッホ球上の 0,1| 0 \rangle, | 1 \rangle を通っている軸を zz 軸としたときの,x,y,zx, y, z 軸それぞれの周りで原点周りに 回転させるゲート Rx,Ry,RzR_x, R_y, R_z を考えることができます。これは,それぞれ以下のように表すことができます。

RX=exp(iϕ2X)=(cosϕ2isinϕ2isinϕ2cosϕ2) R_X = \exp{\left( -i \dfrac{\phi}{2} X \right)} = \begin{pmatrix} \cos{\dfrac{\phi}{2}} & - i \sin{\dfrac{\phi}{2}} \\ -i \sin{\dfrac{\phi}{2}} & \cos{\dfrac{\phi}{2}} \end{pmatrix}

RY=exp(iϕ2Y)=(cosϕ2sinϕ2sinϕ2cosϕ2) R_Y = \exp{\left( -i \dfrac{\phi}{2} Y \right)} = \begin{pmatrix} \cos{\dfrac{\phi}{2}} & - \sin{\dfrac{\phi}{2}} \\ \sin{\dfrac{\phi}{2}} & \cos{\dfrac{\phi}{2}} \end{pmatrix}

RZ=exp(iϕ2Z)=(exp(iθ2)00exp(iθ2)) R_Z = \exp{\left( -i \dfrac{\phi}{2} Z \right)} = \begin{pmatrix} \exp \left( -i \dfrac{\theta}{2} \right) & 0 \\ 0 & \exp \left( i \dfrac{\theta}{2} \right) \end{pmatrix}

ここでは,RXR_X の中辺 = 右辺となることを確かめます。簡単のため,t=iϕ2t =-i \dfrac{\phi}{2} とおきます。

exp(tX)=I+tX+12!t2X2+13!t3X3+... \exp{\left( t X \right)} = I + t X + \dfrac{1}{2!} t^2 X^2 + \dfrac{1}{3!} t^3 X^3 + ...

ここで,X2=IX^2 = I となることを考えると,

exp(tX)=(1+12!t2+14!t4+...)I+(t+13!t3+15!t5+...)X \exp{\left( t X \right)} = \left( 1 + \dfrac{1}{2!} t^2 + \dfrac{1}{4!} t^4 + ... \right) I + \left( t + \dfrac{1}{3!} t^3 + \dfrac{1}{5!} t^5 + ... \right) X

と整理できます。いま,

A=1+12!t2+14!t4+...,B=t+13!t3+15!t5+... A = 1 + \dfrac{1}{2!} t^2 + \dfrac{1}{4!} t^4 + ... , \, B = t + \dfrac{1}{3!} t^3 + \dfrac{1}{5!} t^5 + ...

とおきます。t=iϕ2t =-i \dfrac{\phi}{2} より,それぞれ

A=112!(ϕ2)2+14!(ϕ2)4+...=n=0(1)n(2n)!(ϕ2)2n=cosϕ2 \begin{aligned} A &= 1 - \dfrac{1}{2!} \left( \dfrac{\phi}{2} \right )^2 + \dfrac{1}{4!} \left( \dfrac{\phi}{2} \right )^4 + ... \\ &= \sum_{n = 0}^{\infty} \dfrac{(-1)^n}{(2n)!} \left( \dfrac{\phi}{2} \right )^{2n} \\ &= \cos{\dfrac{\phi}{2}} \end{aligned}

B=iϕ2+i3!(ϕ2)3i5!(ϕ2)5+...=in=0(1)n(2n+1)!(ϕ2)2n+1=isinϕ2 \begin{aligned} B &= -i \dfrac{\phi}{2} + \dfrac{i}{3!} \left( \dfrac{\phi}{2} \right )^3 - \dfrac{i}{5!} \left( \dfrac{\phi}{2} \right )^5 + ... \\ &= -i \sum_{n = 0}^{\infty} \dfrac{(-1)^{n}}{(2n+1)!} \left( \dfrac{\phi}{2} \right )^{2n+1} \\ &= -i \sin{\dfrac{\phi}{2}} \end{aligned}

ここでは,cos,sin\cos, \sin のテイラー変換の知識を使いました。

したがって

RX=exp(iϕ2X)=cosϕ2Iisinϕ2X R_X = \exp \left(-i \dfrac{\phi}{2} X \right) = \cos{\dfrac{\phi}{2}} I - i \sin{\dfrac{\phi}{2}} X

同様の計算により

RY=exp(iϕ2Y)=cosϕ2Iisinϕ2Y R_Y = \exp \left(-i \dfrac{\phi}{2} Y \right) = \cos{\dfrac{\phi}{2}} I - i \sin{\dfrac{\phi}{2}} Y

RZ=exp(iϕ2Z)=cosϕ2Iisinϕ2Z R_Z = \exp \left(-i \dfrac{\phi}{2} Z \right) = \cos{\dfrac{\phi}{2}} I - i \sin{\dfrac{\phi}{2}} Z

であることも確かめられます。

cos,sin\cos, \sin のテイラー展開については,基本的なテイラー展開・マクローリン展開公式一覧) なども併せてご覧ください。

【補足】1量子ビットゲートとユニタリ性

ここまでいくつか1量子ビットゲートを紹介してきました。これらは全てユニタリ行列になっているという特徴があります。

ユニタリ行列については

も併せてご覧ください。

各1量子ビットゲートがユニタリ行列になっているというのは,簡単な計算により確かめられるので,ぜひやってみてください。

量子コンピュータ「らしい」話になってきたのではないでしょうか。