Help us understand the problem. What is going on with this article?

量子ゲートの定義とユニタリー性について

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

量子情報理論・量子アルゴリズムについて勉強した事をまとめています。
投稿記事は間違っている箇所があること前提で読んで下さい。
間違え・質問等がありましたら指摘いただけると幸いです。

初めに

前回は量子ビットの記述方法を説明しました。例えば、一般の1qubitは

\ket{\psi} = \alpha \ket{0} + \beta \ket{1}

と書けて、ケット(ベクトル)が数値を、係数$\alpha,\beta$の絶対値の二乗がそれぞれの数値の出現確立を表すのでした。

計算を行うためには、量子ビットの状態を変化させて $\ket{\psi}$の内部にある数値の出現確立を操作していく必要があります。状態を変化させるためには量子ゲートを用います。※古典コンピュータのOR回路やAND回路みたいなものです。
本記事と次の記事では量子ゲートについて説明しようと思います。

今回書く内容は、すごく大切であることは間違い無いのですが、飛ばしたら今後書く予定の記事が理解できなくなるか?というと、別にそんな事はないのでは...と思います。なので、量子力学に馴染みが無ければ、出てくる用語に馴染みが無ければ、混乱を避けるためにとりあえず後回しにするのが吉なのでは...と、僕は思います。(見慣れない言葉が多く出てくるから難しそうに見えるだけであって、結構単純な話ですが)

ちなみに、次回の記事で書くことはその次以降の内容を理解する上で必須の知識となります。

シュレディンガー方程式

量子ゲートはシュレディンガー方程式から定義されるのですが、まずはこの式について簡単に説明します。
間違った解釈をしていたらご指摘頂けるとありがたいです。

ある粒子の状態$\ket{\psi(\boldsymbol{r},t)}$とハミルトニアン $\hat{H}$ の間には次の関係が成立します。
$ \hat{H}$というのはエネルギーに対応する演算子です。

ih \frac{d}{dt}\ket{\psi(\boldsymbol{r},t)} = \hat{H} \ket{\psi(\boldsymbol{r},t)}

この式をシュレディンガー方程式と呼びます。初めて見ると難しそうですが、この式は運動方程式の量子(粒子)バージョンみたいなものだと僕は考えています。

どういう事かと言いますと、運動方程式は

m\boldsymbol{a}(t) = m \frac{d^2}{dt^2}\boldsymbol{r}(t) = \boldsymbol{F}(t)

と書けました。この式は、着目した物体に働く力$\boldsymbol{F}$によって加速度$\boldsymbol{a}$が決定することを意味していますね。運動方程式は物体の状態の時間発展を表す式と言そうです。

量子と呼べるスケールまで物体を十分に小さくすると、運動方程式では説明できない現象が起こります。そこで、その現象を記述するためにシュレディンガー方程式を導入します。(この方程式が正しいものであることは、この方程式から得られた全ての結論が実験結果と一致することによって証明されています。←参考文献[2]からの引用文です。)

見て分かるように、シュレディンガー方程式は量子の状態 $\ket{\psi}$の時間発展を表す式と言えそうです。

量子ゲートの定義

では、シュレディンガー方程式を(一応は)説明したところで、この式から量子ゲートを定義したいと思います。※$\boldsymbol{r}$は変化しないとします。

ih\frac{d}{dt} \ket{\psi(t)} = \hat{H} \ket{\psi(t)} 

この式の両辺を$t_1 \rightarrow t_2$で時間積分します。

\int^{t_2}_{t_1} \frac{1}{\ket{\psi}(t)} d\ket{\psi(t)} =\int^{t_2}_{t_1} \frac{\hat{H}}{ih} dt
\\
\log{\frac{\ket{\psi(t_2)}}{\ket{\psi(t_1)}}} = -i \frac{\hat{H}}{h} (t_2 - t_1)
\\
\ket{\psi(t_2)} = \exp \left[ -i \frac{\hat{H}}{h} (t_2 - t_1) \right] \ket{\psi(t_1)}

この最終式より一般の量子ゲート$U$を定義します。

U = \exp \left[ -i \frac{\hat{H}}{h} (t_2 - t_1) \right]

ユニタリー性について

ハミルトニアン $\hat{H}$はエネルギーという物理量に対応した演算子なので、エルミートです。

\hat{H} = \hat{H}^\dagger

※ちなみに、前回も使いましたが肩の$\dagger$は転置共役を表しています。

ここで、

UU^{\dagger}=\exp \left[-i \frac{\hat{H}}{h} (t_2 - t_1) \right]\exp \left[ i \frac{\hat{H}^\dagger}{h} (t_2 - t_1) \right] = I

同様に、$U^{\dagger}U =I$となるので、

UU^{\dagger}=U^{\dagger}U=I

より、一般の量子ゲートUはユニタリー行列であることが分かります。何らかの量子ゲートを考えたときに、ユニタリー性が無ければ定義に反するので実現不可能ということになります。

ユニタリーだと何が嬉しいのかと言うと、この性質によってqubitをゲートに通した後も規格化条件が守られる事が保証されます。つまり...

\braket{\psi_1}{\psi_1} = \bra{\psi_0}U^{\dagger}U\ket{\psi_0} =\braket{\psi_0}{\psi_0} = 1

より、内積が保存されている事が分かります。例えば、「1bitに何らかの量子ゲートを作用させたとき、その量子ビットから観測される値は必ず$0$か$1$のいずれかであって、別の何かよく分からない観測結果は出現しない」という事がユニタリー性によって保障されます。

量子回路

量子ゲートは下図のような量子回路を用いて図示されます。時間は左から右へと流れており、真ん中にアルファベットが書かれた四角が量子ゲートを表しています。

ビット数がn個の量子回路を考えるとき、それぞれのビットに同一の量子ゲートが作用する場合には以下のように表記することもあります。

終わりに

というわけで、今回は量子ゲートの定義等を述べました。具体的な話をしないと何だかよく分からないと思います。基本的な事を長々とすみませんでした。次回は具体的な量子ゲートを紹介したいと思います。

最後に、これは本当に蛇足ですが、

\braket{\psi_1}{\psi_1} = \bra{\psi_0}U^{\dagger}U\ket{\psi_0} =\braket{\psi_0}{\psi_0} = 1

となることを実際に計算で確かめてみましょう。(無意味なので飛ばしてください)
まず、

U = \left(\begin{matrix}a&b\\c&d\end{matrix}\right) ,U^{\dagger} = \left(\begin{matrix}a^*&b^*\\c^*&d^*\end{matrix}\right)

とします。

UU^{\dagger} = \left(\begin{matrix}a&b\\c&d\end{matrix}\right) \left(\begin{matrix}a^*&c^*\\b^*&d^*\end{matrix}\right) =\left(\begin{matrix}|a|^2+|b|^2&ac^*+bd^*\\a^*c+b^*d&|c|^2+|d|^2\end{matrix}\right) 
\\
U^{\dagger}U = \left(\begin{matrix}a^*&c^*\\b^*&d^*\end{matrix}\right) \left(\begin{matrix}a&b\\c&d\end{matrix}\right)=\left(\begin{matrix}|a|^2+|c|^2&a^*b+c^*d\\ab^*+cd^*&|b|^2+|d|^2\end{matrix}\right) 

と計算できますが、ユニタリー性より$UU^{\dagger}=U^{\dagger}U=I$なので、

\left\{\begin{array}{c}|a|^2+|b|^2=1\\|c|^2+|d|^2=1\\|a|^2+|c|^2=1\\|b|^2+|d|^2=1\end{array}\right.  \left\{\begin{array}{c}ac^*+bd^*=0\\a^*c+b^*d=0\\a^*b+c^*d=0\\ab^*+cd^*=0\end{array}\right.

となります。例えば、一般の状態を

\ket{\psi_0} = \left(\begin{matrix}\alpha\\\beta\end{matrix}\right) (|\alpha|^2 + |\beta|^2 = 1)

とおき、これにUを作用させたものを

\ket{\psi_1} = \left(\begin{matrix}a&b\\c&d\end{matrix}\right) \left(\begin{matrix}\alpha\\\beta\end{matrix}\right) = \left(\begin{matrix}a\alpha+b\beta\\c\alpha+d\beta\end{matrix}\right)

とします。ここで状態$\psi_1$の内積を計算してみると、

\begin{align}
\braket{\psi_1}{\psi_1} 
&=\left(\begin{matrix}a^*\alpha^*+b^*\beta^*&c^*\alpha^*+d^*\beta^*\end{matrix}\right)\left(\begin{matrix}a\alpha+b\beta\\c\alpha+d\beta\end{matrix}\right)
\\
&=(|a|^2+|c|^2)|\alpha| + (ab^*+cd^*)\alpha\beta^* + (a^*b+c^*d)\alpha^*\beta + (|b|^2+|d|^2)|\beta|^2
\\
&=|\alpha|^2 +|\beta|^2 = 1
\end{align} 

となり、ゲートを作用させる前と後で状態の内積が変わらず1を保っている、つまり確率が保存されている事が確認できます。

もしここまで読んで下さった方がいましたらありがとうございました。

参考文献

[1] 中山茂(2014) 『量子アルゴリズム』技報堂出版
[2] 猪木慶治+川合光(2008)『量子力学Ⅰ』講談社サイエンティフィク
[3]「量子コンピュータ授業 #1 量子ビットと量子ゲート」
  https://www.youtube.com/watch?v=R2fyLl7KZXM

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした