1量子ビット#
ここから先はさきほど学んだ量子を情報へつなげていきます.
1量子ビットの表記方法#
超伝導という方式の量子コンピュータでは電子がペアになった状態が回路上のある素子で,例えば電荷量子ビットという量子ビットでは左に偏っているか,右に偏っているかを\(0,1\)というラベルに対応させることが可能です.ブラケットの記法を使い,今回\(0,1\)に対応させる量子の状態を\(|0\rangle,|1\rangle\)と表記します.
古典的なコンピュータの情報の最小単位は\(0\)と\(1\)です.量子情報では上記の\(|0\rangle,|1\rangle\)をそのまま情報の最小単位として扱ってしまうのです.この先からは量子の状態である\(|0\rangle,|1\rangle\)をどのようにして扱うのか,量子の計算とは一体何なのか?に関して焦点を当てて説明をしていきます.
行列での表記方法#
\(|0\rangle,|1\rangle\)は測定にてそれぞれ識別可能であるため,\(|0\rangle,|1\rangle\)は正規直交条件を満たす必要があります.そこで,前のセクションにならって\(|0\rangle,|1\rangle\)を行列表示すると,
となります.また,\(|0\rangle,|1\rangle\)の係数である\(\alpha,\beta\)を用いると全体の波動関数は
と表され,規格化条件より
となります.なお,\(\alpha,\beta\)のことを確率振幅と呼びます.
また,\(|0\rangle,|1\rangle\)は一次独立になっており,\(|0\rangle,|1\rangle\)の線形結合だけで空間全体を表現できるため,これらは基底であるともいえます.
測定#
量子力学では測定という動作によって量子の状態は収縮します.つまり,ある量子状態に対して\(1\)回だけ測定を行った時,\(1\)が得られるか\(0\)が得られるかどちらかの状況しか起こらなず波動関数は
と収縮します.前のセクションで説明したように
とでき,それぞれ\(0,1\)を一回の測定で得られる確率(\(\text{Pr}(0),\text{Pr}(1)\))は複素振幅\(\alpha,\beta\)の絶対値の二乗になるため
となります.複数回同じ量子状態が生成できて,複数回測定ができ,\(0,1\)の出現回数をヒストグラムなどで表すと,\(|\alpha|^2,|\beta|^2\)という確率の分布が見えてくることでしょう.ただ,(後で説明をしますが,工夫をしない限り)確率振幅である\(\alpha,\beta\)を直接得ることはできません.
以下では実際にある特定の量子状態に対して1000回測定を行った時の\(0,1\)を得られた回数の記録です.以下では\(0,1\)がほとんど同じ回数だけ得られており,この測定を行った量子状態は\( \left|\alpha\right|^2= \left|\beta\right|^2 =1/2\)を満たす可能性が高いことが予想できます.(ただし以下では量子シミュレーターを用いています.)
Show code cell source
import numpy as np
from qiskit import *
qc = QuantumCircuit(2,1)
qc.rx(np.pi/3 ,0)
qc.cx(0,1)
qc.sx(1)
qc.measure(1,0)
backend_sim = Aer.get_backend('qasm_simulator')
job_sim = execute(qc, backend_sim, shots=1000)
result_sim = job_sim.result().get_counts(qc)
#qc.draw('mpl')
print(result_sim)
{'1': 503, '0': 497}
以下は具体例です.
具体例
の時それぞれ\(0,1\)を得る確率は
になります.
Bloch球(ブロッホ球)上での表現#
任意の量子状態は
と表せるのでした. \(|\alpha|^2 + |\beta|^2 = 1\) の条件から実数のパラメータ \(\theta , \phi\) を用いて \( 0 \le \theta \le \pi, 0 \le \phi \le 2\pi \) の範囲のもとで
と量子状態を表すことができます.(簡単のためglobal phaseと呼ばれる位相は無視しています.) \(\phi\) はrelative phase(相対的位相)と呼ばれます.導入した \(\theta,\phi\) は以下の図のように3次元単位球の極座標表示におけるパラメータと同様の範囲を持つので,任意の量子状態を3次元の単位球面上の点 \((\sin{\theta}\cos{\phi}, \sin{\theta}\sin{\phi}, \cos{\theta})\) に対応付けられます.この単位球のことをBloch球と呼び,量子状態の幾何学的表現としてよく用います.

ブロッホ球#
Bloch球上での測定の可視化#
Bloch球上で表現された場合でも測定の原理は変わりません.繰り返し測定を行うと,それぞれ\(0,1\)の得られる確率分布を得ることができます.Bloch球上ではそれぞれ\(0,1\)が得られる確率はどのように表されるのでしょうか?
とした時,それぞれ\(0\)と\(1\)が得られる確率は以下の通りです:
つまり,観測される確率は\(\phi\)の成分が消えることが分かります.
以下のアニメーションはある量子状態があった時,\(z\)軸に量子状態を射影した時のそれぞれの長さに比例していることが分かります.つまり,球体の頂点から量子状態の\(z\)成分までの長さは\(1\)を得る確率に比例し,逆の箇所は\(0\)を得る確率に比例しています.
単一量子ビットの計算#
ここから先は単一量子ビットを実際に変化させていきましょう!(古典では,足し算などの四則演算をNOTゲートなどの単純なゲートのみで表現することができました.量子ゲートは古典ゲートの量子版に当たるもので,目的の形に変化させること自体が実際の計算に当たります.)
すべての量子の操作は行列を作用させることで表現されます.例えば,量子ビット\(|0\rangle,|1\rangle\)を\(|1\rangle,|0\rangle\)にNOTゲートのように変化させる行列は
で書かれてそれぞれ行列を作用させると以下のようになり,たしかにNOTゲートのように作用していることが分かります.
以上のように行列で量子状態を操作することができるのですが, 操作後も量子の状態がBloch球上にいる必要があります.実際に作用させる行列はなんでも良いわけではなく,ユニタリ行列と呼ばれる行列を作用させる必要があります.このユニタリ行列を作用させた後でもBloch球上に量子状態がとどまります.
(もっと知りたい人のために) なぜユニタリ行列でないといけないか?の説明
操作をしてもBloch球上にとどまるようにしないといけないためには,ある行列\(U\)に対して\(|\psi' = U |\psi\rangle\)とすると,
と言う条件を満たす必要があります.書き換えると
であり,もとより,行列を作用させる前の量子の状態はBloch球上にいたため,
という条件は満たされていました.よって,行列の作用後にBloch球上にとどまるための条件は
になります.これを満たすような行列のことをユニタリ行列と言い,ます.
量子ゲート#
特に量子ビットに作用する代表的なユニタリ行列のことを量子ゲートと呼びます.以下では代表的な量子ゲートをまとめています.
\(X\)ゲート#
\(X\)ゲートとは,先ほど説明したNOTゲートに対応しています.以下のアニメーションのように,ブロッホ球上で\(x\)軸を中心に\(\pi\)だけ回転させるゲートです.
\(Y\)ゲート#
\(Y\)ゲートとは,以下のアニメーションのように,ブロッホ球上で\(y\)軸を中心に\(\pi\)だけ回転させるゲートです.
\(Z\)ゲート#
\(Z\)ゲートとは,ブロッホ球上で\(z\)軸を中心に\(\pi\)だけ回転させるゲートです.行列の表記は
\(H\)ゲート#
\(H\)ゲートは上記とは少し異なっています.\(H\)ゲートとは,ブロッホ球上で,\(x\)軸と\(z\)軸の中間となる軸を中心に\(\pi\)だけ回転させます.つまり.以下のアニメーションの軸を中心に状態を\(\pi\)だけ回転させるのです.
回転ゲート#
その他に代表的なゲートとして回転ゲートと呼ばれるゲートがあります.ブロッホ球上で\(x,y,z\)方向にそれぞれ\(\theta_x,\theta_y,\theta_z\)だけ回転するゲートは以下の通りです.
なお,以上の\(\exp\)の部分から具体的な行列の形への変換の導出は以下の行列指数関数の性質1を利用して行っています.また,量子ゲートである\(X,Y,Z\)を恒等行列である
の行列は以下のパウリ行列と呼ばれておりこれからの表記方法を以下にまとめています.
パウリ行列
パウリ行列とは以上で見てきた基本的な量子ゲートである\(X,Y,Z\)と のことを表し,まとめて\(\sigma_i, (i = \{ X,Y,Z,I \})\)などと表現します.
行列指数関数の性質1
パウリ行列\(\sigma_i\)に対して
となります.なお,\(\sigma_I\)は恒等行列\(I\)を表します.証明は以下の通りです:
指数関数を展開すると
となります.ただし,パウリ行列の二乗は単位行列\(\sigma_I\)であるという性質を利用しています:
その他のゲート#
その他に重要なゲートは\(S_X\)ゲートです.\(S_X\)ゲートは第二章で説明するトランズモン量子ビットで肝心であり,以下の行列で与えれます.
ここで,\(S_X = e^{i\pi/4}X_{\pi/2}\)となりましたが,\(e^{i\pi/4}\)の部分はglobal位相に当たる部分であるため測定結果に影響を与えません.
超伝導方式の量子ゲートはシュレディンガー方程式の時間発展
始めてこの量子ゲートを学んだ時,理論的にはただの行列操作を行っているだけでこのようなゲート操作は本当に実装されているのか?もしできているとしたらどのように?とずっと疑問に思っていました.
しかし,次のように考えると超伝導方式の場合の量子ゲートの実装の概略が見えてきます.量子ビットと,量子ビットを操作する素子が何か実装できているとします,この時,量子ビットと操作する素子を含めたハミルトニアンを定義することができ,このハミルトニアンを時間積分して得られる時間発展演算子がそれぞれ\(X,Y,Z,H\)ゲートなどに当たるのです.(もちろんそれぞれのゲートでは,量子ビットを操作する素子にて,パルスの形,外部磁場などの操作できるものを設定しています.)
第二章ではこの話をより詳しく記載しています.
量子ゲートを複数回作用させてみる#
これまではそれぞれの量子ゲートに関して述べましたが,実際の量子コンピュータではこれらの量子ゲートを組み合わせることで量子の計算を行っています.
多えば\(|0\rangle\)の状態に量子ゲートを\(X\to Y\)の順番で複数回作用させ様子を模式化すると以下の通りになります.
となります.このようにして,複数の量子ゲートを作用させることが可能です.複数量子ゲートの様子を以下のアニメーションにしました.それぞれのゲートを作用させた後の状態を考えながらアニメーションを動かしてみてください.
状態を取り出す#
さきほど説明した測定では,Bloch球の\(z\)軸の成分である,\(\cos\theta\)の値を得ることができました.すると,
「測定を通じて量子の状態がBloch球のどこにいるのかを推測ことは不可能なのでは?」と思うでしょう.(つまり,「測定」を行うと\(\theta\)は得られるが,\(\phi\)は得られてないため「測定」という過程ではBloch球で量子状態がどこにいるかを掌握することは不可能ではないか?ということです.)
しかし,量子状態がBloch球上でどの位置にいるのかは,正確な計算が行えているかどうかの判定や,実際の計算結果を取り出すために非常に重要な事柄です.実はさきほど説明した各量子ゲートを使うことによって量子状態がBloch球上のどこにいるのかを推定することが可能になるのです.
X 測定#
これまで\(z\)軸の成分を確率で取り出すことは可能であったためまずは\(x\)軸の成分を取り出すことを考えてみましょう.唐突ですが,ある量子状態:
に対して\(H\)ゲートを作用させて,それぞれ\(|0\rangle,|1\rangle\)の確率を取り出してみます:
となるので,それぞれの確率は
になります.極座標での\(x\)の値は\( \sin\theta\cos\phi \)となるので,\(H\)ゲートを通して測定を繰り返し,得られた統計データである\(\text{Pr}(0),\text{Pr}(1)\)から\(\text{Pr}(0)-\text{Pr}(1)\)を計算すると,量子状態のブロッホ球での\(x\)軸の成分を取り出せていることが分かります.
\(H\)ゲートというユニタリ行列は\(x,z\)軸を中心に量子状態を\(\pi\)だけ回転させる行列でした.ここでは,量子状態だけではなく,もともとあった座標も見かけ上回転させるとして\(H\)ゲートを作用させます.(実際には座標は回転しないためここでいう\(H\)ゲートが座標を回転させるような性質を持っているわけではないです.あくまで見かけ上です.)ここで,量子状態と,\(x\)軸のなす角を\(\theta_x\)とすると,内積より,
であることを利用してアニメーションで表すと次のようになります.
Y測定#
\(Y\)測定は,先ほど説明した\(S_X\)ゲートというゲートを作用させることで実現できます.ある量子状態:
に対して作用させて計算をすると以下の通りになります.
となるためそれぞれ\(|0\rangle,|1\rangle\)を観測する確率は
になります.極座標での\(y\)の値は\( \sin\theta\sin\phi \)となるので,\(S_X\)ゲートを通して測定を繰り返し,得られた統計データである\(\text{Pr}(1),\text{Pr}(0)\)の\(\text{Pr}(0)-\text{Pr}(1)\)を計算すると,量子状態のブロッホ球での\(y\)軸の成分を取り出せていることが分かります.
イメージとしては以下のアニメーションになります:
以上より,測定から得られる統計データを下に量子状態を求められることが分かりました.
重要
仮に繰り返し同じ量子状態を生成して測定ができる場合,relative phase(相対的位相)を含めた量子状態を得ることができます:
また,このように一般的に量子の状態を測定を通じて再構築することを量子統計推定または量子状態トモグラフィーと言います.(ここで再構築と言っているのは人間が行う「測定」という行為によって量子状態が壊れてしまい,壊れてしまった量子状態を「測定」によって推定するという行為はまさしく再 構築に値することだからです.)