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

アダマールゲート(Hadamard Gate)について

$$
\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}}
$$

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

前回までの記事は読むだけでも理解できる内容だったかもしれません(僕には無理ですが)。
今回以降の記事からは適当な紙に数式を書き出しながら読み進めないと理解が困難になるのでは、と僕は思います。偉そうにお節介な事をすみません。

はじめに

前回は量子ゲートの定義等を説明しました。今回は具体的な量子ゲートを紹介しようと思うのですが、全部を話すと長くなってしまうし面白くないので、とりあえず、次回以降で解説予定のDeautch-ZoszaのアルゴリズムやBernstein-Vaziraniのアルゴリズムで使用される量子ゲートだけを説明しておこうと思います。

二進数の変数

本題に入る前に、あまり他の分野では見ない量子情報理論特有(?)の数式表記について説明しておきます。
10進数 $x$は以下のようにに二進数表記されます。

x = x_{n-1}x_{n-2} ... x_{0} \quad where \quad x_k = \left\{0,1 \right\}

また $x\cdot y$という表記は、

x \cdot y = x_{n-1}\cdot y_{n-1} + x_{n-2}\cdot y_{n-2} + \cdots + x_{0}\cdot y_{0}

と計算するルールであることにも注意して下さい。

例えば、$x=7,y=8$ の場合、これを二進数に直すと、

\begin{align}
&x = x_{3} x_{2} x_{1} x_{0} =0111
\\
&y = y_{3} y_{2} y_{1} y_{0} = 1000
\end{align}

と書けます。$x\cdot y$は$56$ではなく、

\begin{align}
x\cdot y &= x_{3}\cdot y_{3} + x_{2}\cdot y_{2} + x_{1}\cdot y_{1} + x_{0}\cdot y_{0}
\\
&= 1\cdot 0 + 0\cdot 1 + 0 \cdot 1 + 0 \cdot 1 = 0 
\end{align}

となります。ここら辺はちょっと躓くポイントなのかなあ、と思ったので注意して下さい。僕は躓きました。

アダマールゲート

では、具体的なゲートを紹介していきましょう。まずはアダマールゲートから。

アダマールゲートは、IntroductionでのVernstein-Vaziraniのアルゴリズムの例え話で出てきた分身に対応するゲートです。
このゲートは以下の行列で定義されます。

H = \frac{1}{\sqrt{2}} \left(\begin{matrix}1&1\\1&-1\end{matrix}\right)

まずは1qubitに作用する場合を考えてみましょう。

1-qubit

この行列を$\ket{0},\ket{1}$に通してみると、

H\ket{0} = \frac{1}{\sqrt{2}} \left( \ket{0} + \ket{1} \right)
\\
H\ket{1} = \frac{1}{\sqrt{2}} \left( \ket{0} - \ket{1} \right)

となります。$\ket{0}$を$H$に通した後の状態 $H\ket{0}$から値$0$と値$1$が観測される確率は、

|\bra{0}H\ket{0}|^2 = \frac{1}{2}  ,\bra{1}H\ket{0}|^2 = \frac{1}{2} 

と計算できます。同様に、$H\ket{1}$の$0$と$1$の観測確率も$1/2$となります。このようにアダマールゲートには、重ね合わせの無い状態から、$0$と$1$が均等に混ざり合った状態を作り出す性質があります。

Hゲートが$\ket{0}$に作用するか$\ket{1}$に作用するかで何が違ってくるのかと言うと、見てわかる通りですが、作用した後の状態の$\ket{1}$の符号が異なってきます。観測確率はいずれにしても$1/2$なので、$H\ket{0},H\ket{1}$ の観測結果に違いは現れません。

絶対値が1となってしまい、観測結果に影響を与えないものを位相因子(Phase factor)と呼ぶことにしましょう。この位相因子は量子計算を行う上で非常に重要な物となり得ます。例えば、$\ket{0}$に $H$ を2回作用させてみましょう。まずは1度目のアダマール変換は

 \ket{\psi_1} = H \ket{0} = \frac{1}{\sqrt{2}} \left(\ket{0}+\ket{1} \right)

となります。ここまでは先ほどと同じですね。では次に2度目のアダマール変換。

\begin{align}
\ket{\psi_2} &= H\ket{\psi_1} = \frac{1}{\sqrt{2}} \left(H\ket{0}+H\ket{1} \right)
\\
&=\frac{1}{2} \left\{ (\ket{0}+\ket{1}) + (\ket{0} - \ket{1}) \right\}
\\
&= \ket{0}
\end{align}

というように、アダマール変換を連続で二回作用させたら状態は再び $\ket{0}$へと戻ります。

これは位相因子の影響によって2度目のアダマール変換の際に$\ket{1}$という値が消え、$\ket{0}$だけが残ったためであることが分かります。

数学的に見ると、

H^2 = \frac{1}{2}\left(\begin{matrix}1&1\\1&-1\end{matrix}\right) \left(\begin{matrix}1&1\\1&-1\end{matrix}\right) = I

なので当たり前じゃないか...と言ったら、本当にその通りなのでそこまでなんですけど、物理的に見ると $H^2$という演算の内部では位相因子が原因となって数値の打ち消し合いが起こっています。

様々な量子アルゴリズムでは位相因子が重要となりますので、その事を気に留めておいて下さい。
(上の例のように不要な数値同士を打ち消し合わせるため等に使用します。)

n-qubitのアダマール変換を説明する前に、1-qubitのアダマール変換を定式化しておきましょう。

\begin{align}
H\ket{x_k} 
&= \frac{1}{\sqrt{2}} \sum^1_{y_k=0} (-1)^{x_k\cdot y_k}\ket{y_k}
= \left\{
\begin{array}{c}\frac{1}{\sqrt{2}}(\ket{0}+\ket{1}) (x_k=0)
\\
\frac{1}{\sqrt{2}}(\ket{0}-\ket{1}) (x_k=1) \end{array}\right.
\end{align}

n-qubit

では、上のの量子回路のようにn-qubitにアダマール変換を施した場合を考えましょう。

x_k = \left\{ 0,1 \right\}

であることに注意して下さい。

\begin{align}
\ket{\psi_1} 
&= H^{\otimes n} \ket{\psi_0}
\\
&= H^{\otimes n} \ket{x_{n-1}x_{n-2} \cdots x_0}
\\
&= H\ket{x_{n-1}} \otimes H \ket{x_{n-2}} \cdots \otimes H\ket{x_0}
\\
&= \frac{1}{\sqrt{2^n}} \sum^1_{y_{n-1}=0} (-1)^{x_{n-1}\cdot y_{n-1}}\ket{y_{n-1}} \otimes \sum^1_{y_{n-2}=0} (-1)^{x_{n-2}\cdot y_{n-2}}\ket{y_{n-2}} \otimes \cdots \otimes \sum^1_{y_{0}=0} (-1)^{x_{0}\cdot y_{0}}\ket{y_{0}}
\\
&= \frac{1}{\sqrt{2^n}} \sum^{11...1}_{y_{n-1}y_{n-2}...y_{0}=00...0} (-1)^{x_{n-1}\cdot y_{n-1} + x_{n-2}\cdot y_{n-2
}+\cdots +x_{n-1}\cdot y_{n-1}} \ket{y_{n-1}y_{n-2}...y_{0}}
\\
&= \frac{1}{\sqrt{2^n}} \sum^{2^n-1}_{y=0} (-1)^{x\cdot y} \ket{y} \quad \left(\because 11...1 = 2^n-1 \right)
\end{align} 

4段目で先ほど定式化した1-qubitのアダマール変換式を使用しています。また、4段目から5段目の式変形は序盤に説明した二進数の記法を使っていることに注意して下さい。

終わりに

どうしてこれを分身に例えたかと言うと、例えば3-qubit、つまりn=3を上の式に代入してみましょう。アダマール変換を施す前の状態を$\ket{0}$、つまり $x=0$とします。

\begin{align}
\ket{\psi_1} &= H^{\otimes 3} \ket{0}
\\
&= \frac{1}{\sqrt{2^3}} \sum^{7}_{y=0} \ket{y}
\\
&= \frac{1}{\sqrt{8}} \left(\ket{0} + \ket{1} + \ket{2} + \ket{3} + \ket{4} + \ket{5} + \ket{6} + \ket{7} \right)
\end{align}

このように、アダマールゲートによって、0という数値から$2^n$個の数値を作り出す事ができるのです。これってなんか分身みたいじゃないですか...?

アダマールゲートにはこのような性質があるので、様々なアルゴリズムで非常に重要な役割を果たします。例えば、0~7までの入力値を作り出した後、同時に$f(0)$~$f(7)$を計算させるとか、そういう時にアダマールゲートが必要となります。

deutsch-jozsaやBernstein-Vaziraniのアルゴリズムで$f(x)$を計算させるために使われるゲートが量子オラクルになります。量子オラクルの説明はあまり長くないのでこの記事にまとめようと思っていたですが、アダマールゲートの話が結構長くなってしまったので次回の記事に持ち越します。

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

参考文献

[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
ユーザーは見つかりませんでした