相対エントロピーから情報と物理を組み立てる 第6部 第1章 §6.1.1 ★★★ 回路モデルの約束を決め、1量子ビットのゲートが Bloch 球の回転であること、どの回転も z z z ・y y y ・z z z 軸のまわりの3回の回転に分けられることを示す
第3部では、量子状態を密度行列で、確率的な処理を量子チャネルで書き、2つの状態を見分ける問題を相対エントロピーとトレース距離で調べた。この部では向きを変えて、量子系を意図して動かし、計算をさせる側に立つ。そのための約束が回路モデル である。量子ビットを何個か用意して決まった状態から始め、小さなユニタリ(ゲート )を順に当て、最後に測る。古典の計算機が AND・OR・NOT のような論理ゲートの組み合わせで任意の Boolean 関数を作るのと同じように、量子の回路も少数の種類のゲートを並べて作る。
この章で答える問いは3つある。1つ目は、どの種類のゲートをそろえれば任意のユニタリが作れるか(万能性 )である。1量子ビットのゲートをすべてと、2量子ビットのゲート CNOT が1種類あれば、任意の n n n 量子ビットのユニタリを厳密に作ることができる。2つ目は、使えるゲートを有限個の種類(たとえば Hadamard ゲートと T T T ゲートと CNOT)に限ったとき何が起きるかである。有限個のゲートの積は数えられるだけしかないので、連続に広がるユニタリ全体を厳密には作れない。それでも任意の精度で近づけることはでき、Solovay–Kitaev の定理はそのために要るゲートの数が精度の対数の多項式で済むことを保証する。3つ目は、ゲートの数の下限である。ここで情報の見方が役に立つ。L L L 個のゲートの並びは高々 L log 2 K L\log_2K L log 2 K ビット(K K K は1回に選べるゲートの数)で書けてしまうので、見分けられるユニタリの数より多くのものを書き分けることはできない。この数え上げから、ほとんどすべての n n n 量子ビットのユニタリは 4 n 4^n 4 n に比例する数のゲートを要することが分かる。
回路は量子計算の唯一の書き方ではない。測定だけで計算を進める測定型 と、Hamiltonian をゆっくり変える断熱型 も、回路と同じ問題を同じ程度の手間で解けることが証明されている。この2つを5節で調べ、6節では、ゲートを実験装置の時間発展としてどう作るか(物理実装の地図)と、量子力学の授業で習う式との対応を書く。
この章では、量子ビットの Pauli 行列を X , Y , Z X,Y,Z X , Y , Z 、恒等演算子を 1 \mathbf 1 1 と書く(第3部と同じ)。Hadamard ゲートは帽子なしの H H H と書き、Hamiltonian は帽子つきの H ^ \hat H H ^ と書いて区別する。T T T は T T T ゲートを表し、引数つきの T ( ρ ^ , σ ^ ) T(\hat\rho,\hat\sigma) T ( ρ ^ , σ ^ ) だけがトレース距離である。対数は自然対数を既定とし、ビットで数えるときは log 2 \log_2 log 2 と書いて単位を添える。行列の大きさ(作用素ノルム)∥ A ∥ \lVert A\rVert ∥ A ∥ は A A A の最大の特異値である。
回路モデルの約束
定義 6.1.1(回路モデル)
n n n 量子ビットの量子回路 とは、次の手続きのことである。状態空間は ( C 2 ) ⊗ n (\mathbb{C}^2)^{\otimes n} ( C 2 ) ⊗ n で、その正規直交基底 ∣ x 1 x 2 ⋯ x n ⟩ | x_1x_2\cdots x_n \rangle ∣ x 1 x 2 ⋯ x n ⟩ (x j ∈ { 0 , 1 } x_j\in\{0,1\} x j ∈ { 0 , 1 } )を計算基底 と呼ぶ。初めの状態は ∣ 0 ⋯ 0 ⟩ | 0\cdots0 \rangle ∣0 ⋯ 0 ⟩ とする。決められたゲートの集合 G \mathcal G G の元を、選んだ量子ビットに1つずつ順に当てる。ゲートは1個か2個の量子ビットに当たるユニタリで、残りの量子ビットには恒等演算子として当たる。最後に、全部または一部の量子ビットを計算基底で測り、結果のビット列を出力とする。当てたゲートの数 L L L を回路の大きさ と呼ぶ。
約束をこのように狭くしても、一般性は失われない。初めの状態が別の状態でも、それを ∣ 0 ⋯ 0 ⟩ | 0\cdots0 \rangle ∣0 ⋯ 0 ⟩ から作るユニタリを回路の頭に足せばよい。途中で測定をしたり、測定結果に応じて後のゲートを変えたりする手続きも、測定を最後まで遅らせる書き換え(遅延測定。第3部第6章 )で、最後にだけ測る回路に直すことができる。計算基底以外での測定は、測る前に基底を回すユニタリを足せば計算基底での測定になる。
回路は図で書く。量子ビットを横線で表し、時間は左から右へ進む。ゲートは線の上の箱で表す。左から U 1 , U 2 , … , U L U_1,U_2,\dots,U_L U 1 , U 2 , … , U L の順に当てた回路が表すユニタリは U L ⋯ U 2 U 1 U_L\cdots U_2U_1 U L ⋯ U 2 U 1 で、図の並びと行列の積の並びが逆になる 。この逆転は授業の板書でもよく取り違えるので、6節でもう一度扱う。
1量子ビットのゲートは Bloch 球の回転
1量子ビットの状態は Bloch ベクトル r = ( r x , r y , r z ) \bm{r}=(r_x,r_y,r_z) r = ( r x , r y , r z ) で ρ ^ = 1 2 ( 1 + r x X + r y Y + r z Z ) \hat\rho=\tfrac12(\mathbf 1+r_xX+r_yY+r_zZ) ρ ^ = 2 1 ( 1 + r x X + r y Y + r z Z ) と書けた(第3部第1章 )。単位ベクトル n = ( n x , n y , n z ) \bm{n}=(n_x,n_y,n_z) n = ( n x , n y , n z ) と角 θ \theta θ について、
R n ( θ ) ≔ exp ( − i θ 2 n ⋅ σ ) = cos θ 2 1 − i sin θ 2 ( n x X + n y Y + n z Z ) (6.1.1) R_{\bm{n}}(\theta)\coloneqq\exp\Bigl(-\mathrm{i}\frac{\theta}{2}\,\bm{n}\cdot\bm{\sigma}\Bigr)=\cos\frac\theta2\,\mathbf 1-\mathrm{i}\sin\frac\theta2\,(n_xX+n_yY+n_zZ)\tag{6.1.1} R n ( θ ) : = exp ( − i 2 θ n ⋅ σ ) = cos 2 θ 1 − i sin 2 θ ( n x X + n y Y + n z Z ) ( 6.1.1 )
と置く。ここで n ⋅ σ = n x X + n y Y + n z Z \bm{n}\cdot\bm{\sigma}=n_xX+n_yY+n_zZ n ⋅ σ = n x X + n y Y + n z Z である。2つ目の等号は ( n ⋅ σ ) 2 = 1 (\bm{n}\cdot\bm{\sigma})^2=\mathbf 1 ( n ⋅ σ ) 2 = 1 から指数関数の級数を偶数次と奇数次に分ければ出る。n \bm{n} n が座標軸の向きのとき、R x ( θ ) R_x(\theta) R x ( θ ) 、R y ( θ ) R_y(\theta) R y ( θ ) 、R z ( θ ) R_z(\theta) R z ( θ ) と書く。
命題 6.1.2(1量子ビットのゲートは回転)
R n ( θ ) R_{\bm{n}}(\theta) R n ( θ ) を状態に当てると、Bloch ベクトルは軸 n \bm{n} n のまわりに角 θ \theta θ だけ(右ねじの向きに)回る。逆に、任意の 2 × 2 2\times2 2 × 2 のユニタリ U U U は、全体の位相 e i α \mathrm{e}^{\mathrm{i}\alpha} e i α を除いてある R n ( θ ) R_{\bm{n}}(\theta) R n ( θ ) に等しい。
証明 前半は、無限小の回転で確かめればよい。θ = d θ \theta=\mathrm{d}\theta θ = d θ のとき R n ρ ^ R n † = ρ ^ − i 2 d θ [ n ⋅ σ , ρ ^ ] R_{\bm{n}}\hat\rho R_{\bm{n}}^\dagger=\hat\rho-\tfrac{\mathrm{i}}{2}\mathrm{d}\theta\,\left[\bm{n}\cdot\bm{\sigma},\,\hat\rho\right] R n ρ ^ R n † = ρ ^ − 2 i d θ [ n ⋅ σ , ρ ^ ] で、Pauli 行列の交換関係 [ X , Y ] = 2 i Z \left[X,\,Y\right]=2\mathrm{i} Z [ X , Y ] = 2 i Z (と巡回)から − i 2 [ n ⋅ σ , r ⋅ σ ] = ( n × r ) ⋅ σ -\tfrac{\mathrm{i}}{2}\left[\bm{n}\cdot\bm{\sigma},\,\bm{r}\cdot\bm{\sigma}\right]=(\bm{n}\times\bm{r})\cdot\bm{\sigma} − 2 i [ n ⋅ σ , r ⋅ σ ] = ( n × r ) ⋅ σ となる。したがって d r = d θ n × r \mathrm{d}\bm{r}=\mathrm{d}\theta\,\bm{n}\times\bm{r} d r = d θ n × r で、これは軸 n \bm{n} n のまわりの回転である。後半は、det U = e 2 i α \det U=\mathrm{e}^{2\mathrm{i}\alpha} det U = e 2 i α と置いて V = e − i α U V=\mathrm{e}^{-\mathrm{i}\alpha}U V = e − i α U を作ると det V = 1 \det V=1 det V = 1 のユニタリになり、その固有値は e ± i θ / 2 \mathrm{e}^{\pm\mathrm{i}\theta/2} e ± i θ /2 の形をとる。V V V は対角化でき、その固有ベクトルの Bloch ベクトルを ± n \pm\bm{n} ± n とすれば V = R n ( θ ) V=R_{\bm{n}}(\theta) V = R n ( θ ) である。
全体の位相 e i α \mathrm{e}^{\mathrm{i}\alpha} e i α は、1つのゲートだけを見る限り測定の確率に現れない。ただし、そのゲートを別の量子ビットで制御する(2節)と、位相は相対的な位相になって観測にかかる。
よく使うゲートには名前がついている。
H = 1 2 ( 1 1 1 − 1 ) , P ( φ ) = ( 1 0 0 e i φ ) , S = P ( π 2 ) , T = P ( π 4 ) . (6.1.2) H=\frac{1}{\sqrt2}\begin{pmatrix}1&1\\1&-1\end{pmatrix},\quad
P(\varphi)=\begin{pmatrix}1&0\\0&\mathrm{e}^{\mathrm{i}\varphi}\end{pmatrix},\quad
S=P\Bigl(\frac\pi2\Bigr),\quad T=P\Bigl(\frac\pi4\Bigr).\tag{6.1.2} H = 2 1 ( 1 1 1 − 1 ) , P ( φ ) = ( 1 0 0 e i φ ) , S = P ( 2 π ) , T = P ( 4 π ) . ( 6.1.2 )
H H H は Hadamard ゲート、P ( φ ) P(\varphi) P ( φ ) は位相ゲートで、P ( φ ) = e i φ / 2 R z ( φ ) P(\varphi)=\mathrm{e}^{\mathrm{i}\varphi/2}R_z(\varphi) P ( φ ) = e i φ /2 R z ( φ ) である。T 2 = S T^2=S T 2 = S 、S 2 = Z S^2=Z S 2 = Z が成り立つ。H H H は H = ( X + Z ) / 2 H=(X+Z)/\sqrt2 H = ( X + Z ) / 2 と書けるので、式 (6.1.1) と比べると H = e i π / 2 R n ( π ) H=\mathrm{e}^{\mathrm{i}\pi/2}R_{\bm{n}}(\pi) H = e i π /2 R n ( π ) 、n = ( 1 , 0 , 1 ) / 2 \bm{n}=(1,0,1)/\sqrt2 n = ( 1 , 0 , 1 ) / 2 である。つまり H H H は Bloch 球を x x x 軸と z z z 軸の真ん中の軸のまわりに半回転させ、x x x 軸と z z z 軸を入れ替える。式で書けば H X H = Z HXH=Z H X H = Z 、H Z H = X HZH=X H Z H = X で、同じ理由で H R z ( φ ) H = R x ( φ ) HR_z(\varphi)H=R_x(\varphi) H R z ( φ ) H = R x ( φ ) が成り立つ。
3回の回転への分解
定理 6.1.3(ZYZ 分解 ★★★)
任意の 2 × 2 2\times2 2 × 2 のユニタリ U U U は、実数 α , β , γ , δ \alpha,\beta,\gamma,\delta α , β , γ , δ を選んで
U = e i α R z ( β ) R y ( γ ) R z ( δ ) (6.1.3) U=\mathrm{e}^{\mathrm{i}\alpha}R_z(\beta)R_y(\gamma)R_z(\delta)\tag{6.1.3} U = e i α R z ( β ) R y ( γ ) R z ( δ ) ( 6.1.3 )
と書ける。
証明 V = e − i α U V=\mathrm{e}^{-\mathrm{i}\alpha}U V = e − i α U を det V = 1 \det V=1 det V = 1 となるように取る。V V V はユニタリで行列式が 1 1 1 なので、∣ a ∣ 2 + ∣ b ∣ 2 = 1 \lvert a\rvert ^2+\lvert b\rvert ^2=1 ∣ a ∣ 2 + ∣ b ∣ 2 = 1 を満たす複素数 a , b a,b a , b でV = ( a − b ∗ b a ∗ ) V=\begin{pmatrix}a&-b^*\\b&a^*\end{pmatrix} V = ( a b − b ∗ a ∗ ) と書ける。一方、右辺を計算すると、c = cos ( γ / 2 ) c=\cos(\gamma/2) c = cos ( γ /2 ) 、s = sin ( γ / 2 ) s=\sin(\gamma/2) s = sin ( γ /2 ) として
R z ( β ) R y ( γ ) R z ( δ ) = ( e − i ( β + δ ) / 2 c − e − i ( β − δ ) / 2 s e i ( β − δ ) / 2 s e i ( β + δ ) / 2 c ) R_z(\beta)R_y(\gamma)R_z(\delta)=\begin{pmatrix}\mathrm{e}^{-\mathrm{i}(\beta+\delta)/2}c&-\mathrm{e}^{-\mathrm{i}(\beta-\delta)/2}s\\ \mathrm{e}^{\mathrm{i}(\beta-\delta)/2}s&\mathrm{e}^{\mathrm{i}(\beta+\delta)/2}c\end{pmatrix} R z ( β ) R y ( γ ) R z ( δ ) = ( e − i ( β + δ ) /2 c e i ( β − δ ) /2 s − e − i ( β − δ ) /2 s e i ( β + δ ) /2 c )
である。∣ a ∣ = cos ( γ / 2 ) \lvert a\rvert =\cos(\gamma/2) ∣ a ∣ = cos ( γ /2 ) 、∣ b ∣ = sin ( γ / 2 ) \lvert b\rvert =\sin(\gamma/2) ∣ b ∣ = sin ( γ /2 ) となるように γ ∈ [ 0 , π ] \gamma\in[0,\pi] γ ∈ [ 0 , π ] を選び、a a a の偏角を − ( β + δ ) / 2 -(\beta+\delta)/2 − ( β + δ ) /2 、b b b の偏角を ( β − δ ) / 2 (\beta-\delta)/2 ( β − δ ) /2 に合わせればβ , δ \beta,\delta β , δ が決まり、両辺が一致する。
ZYZ 分解は、Euler 角で剛体の向きを3つの角に分けるのと同じことを Bloch 球で行っている。z z z と y y y の2つの軸のまわりの回転が任意の角で作れれば、1量子ビットのゲートはすべて作ることができる。軸は z z z と y y y でなくても、直交する2本ならどれでもよい。
例題 6.1.1 Hadamard ゲートと T ⋅ H T H T\cdot HTH T ⋅ H T H を回転として読む ★★
オリジナル
H = e i π / 2 R y ( π / 2 ) R z ( π ) H=\mathrm{e}^{\mathrm{i}\pi/2}R_y(\pi/2)R_z(\pi) H = e i π /2 R y ( π /2 ) R z ( π ) を確かめ、∣ 0 ⟩ | 0 \rangle ∣0 ⟩ の Bloch ベクトルが H H H でどこへ移るかを、回転 R z ( π ) R_z(\pi) R z ( π ) と R y ( π / 2 ) R_y(\pi/2) R y ( π /2 ) を順に当てて求めよ。
U = T H T H U=T\,HTH U = T H T H が、全体の位相を除いて R z ( π / 4 ) R x ( π / 4 ) R_z(\pi/4)R_x(\pi/4) R z ( π /4 ) R x ( π /4 ) に等しいことを示し、U U U が表す回転の角 θ \theta θ を cos ( θ / 2 ) \cos(\theta/2) cos ( θ /2 ) の形で求めよ。
解答 (1) R z ( π ) = d i a g ( − i , i ) R_z(\pi)=\mathrm{diag}(-\mathrm{i},\mathrm{i}) R z ( π ) = diag ( − i , i ) 、R y ( π / 2 ) = 1 2 ( 1 − 1 1 1 ) R_y(\pi/2)=\frac{1}{\sqrt2}\begin{pmatrix}1&-1\\1&1\end{pmatrix} R y ( π /2 ) = 2 1 ( 1 1 − 1 1 ) なのでR y ( π / 2 ) R z ( π ) = 1 2 ( − i − i − i i ) R_y(\pi/2)R_z(\pi)=\frac{1}{\sqrt2}\begin{pmatrix}-\mathrm{i}&-\mathrm{i}\\-\mathrm{i}&\mathrm{i}\end{pmatrix} R y ( π /2 ) R z ( π ) = 2 1 ( − i − i − i i ) 。e i π / 2 = i \mathrm{e}^{\mathrm{i}\pi/2}=\mathrm{i} e i π /2 = i を掛けると 1 2 ( 1 1 1 − 1 ) = H \frac{1}{\sqrt2}\begin{pmatrix}1&1\\1&-1\end{pmatrix}=H 2 1 ( 1 1 1 − 1 ) = H になる。∣ 0 ⟩ | 0 \rangle ∣0 ⟩ の Bloch ベクトルは ( 0 , 0 , 1 ) (0,0,1) ( 0 , 0 , 1 ) で、z z z 軸のまわりの回転 R z ( π ) R_z(\pi) R z ( π ) では動かない。次の R y ( π / 2 ) R_y(\pi/2) R y ( π /2 ) で z z z 軸の向きは x x x 軸の向きへ移るので、行き先は ( 1 , 0 , 0 ) (1,0,0) ( 1 , 0 , 0 ) 、すなわち ∣ + ⟩ = ( ∣ 0 ⟩ + ∣ 1 ⟩ ) / 2 | + \rangle =(| 0 \rangle +| 1 \rangle )/\sqrt2 ∣ + ⟩ = ( ∣0 ⟩ + ∣1 ⟩) / 2 である。これは H ∣ 0 ⟩ = ∣ + ⟩ H| 0 \rangle =| + \rangle H ∣0 ⟩ = ∣ + ⟩ と一致する。
(2) T = e i π / 8 R z ( π / 4 ) T=\mathrm{e}^{\mathrm{i}\pi/8}R_z(\pi/4) T = e i π /8 R z ( π /4 ) と H R z ( φ ) H = R x ( φ ) HR_z(\varphi)H=R_x(\varphi) H R z ( φ ) H = R x ( φ ) から、H T H = e i π / 8 R x ( π / 4 ) HTH=\mathrm{e}^{\mathrm{i}\pi/8}R_x(\pi/4) H T H = e i π /8 R x ( π /4 ) 。したがって U = e i π / 4 R z ( π / 4 ) R x ( π / 4 ) U=\mathrm{e}^{\mathrm{i}\pi/4}R_z(\pi/4)R_x(\pi/4) U = e i π /4 R z ( π /4 ) R x ( π /4 ) である。c = cos ( π / 8 ) c=\cos(\pi/8) c = cos ( π /8 ) 、s = sin ( π / 8 ) s=\sin(\pi/8) s = sin ( π /8 ) と置き、式 (6.1.1) で積を計算すると
R z ( π / 4 ) R x ( π / 4 ) = ( c − i s Z ) ( c − i s X ) = c 2 1 − i ( c s X + s 2 Y + c s Z ) R_z(\pi/4)R_x(\pi/4)=(c-\mathrm{i} sZ)(c-\mathrm{i} sX)=c^2\,\mathbf 1-\mathrm{i}\bigl(cs\,X+s^2\,Y+cs\,Z\bigr) R z ( π /4 ) R x ( π /4 ) = ( c − i s Z ) ( c − i s X ) = c 2 1 − i ( cs X + s 2 Y + cs Z )
(Z X = i Y ZX=\mathrm{i} Y Z X = i Y を使った)。恒等演算子の係数が cos ( θ / 2 ) \cos(\theta/2) cos ( θ /2 ) なので cos ( θ / 2 ) = cos 2 ( π / 8 ) = 0.8536 \cos(\theta/2)=\cos^2(\pi/8)=0.8536 cos ( θ /2 ) = cos 2 ( π /8 ) = 0.8536 、θ = 1.0961 \theta=1.0961 θ = 1.0961 (62.80 ∘ 62.80^\circ 62.8 0 ∘ )。回転の軸は ( c s , s 2 , c s ) (cs,s^2,cs) ( cs , s 2 , cs ) に比例し、s s s で割れば ( cos π 8 , sin π 8 , cos π 8 ) (\cos\frac\pi8,\sin\frac\pi8,\cos\frac\pi8) ( cos 8 π , sin 8 π , cos 8 π ) の向きである。π / 4 \pi/4 π /4 の回転を2つ続けても、角が π / 4 \pi/4 π /4 の簡単な倍数にならない回転ができた。この角の性質を3節で使う。
AI(Claude)が書いた教材を、木下が勉強しながら公開しています。式と数値は検算していますが、誤りが残っているかもしれません。誤りのご指摘・削除のご依頼をいただければ直します。 連絡先:support@tecktom.com