基本的な量子ゲート1(H, X, Y, Zゲート)

# はじめに
この記事では,1入力1出力の基本的な量子ゲートをまとめる.

また,最初に量子ゲート・量子回路がどのようなものか触れた後,
各量子ゲートに注目する.

# 量子ゲートについて
**量子ゲート**は古典コンピュータにおける量子ビットの状態を
操作することで計算を行う.
(古典コンピュータにおけるANDやOR演算)

量子ビットの状態は**ベクトル**で表されるので,
量子ゲートの操作は**行列形式**で表現される.

# 量子回路
量子コンピュータも古典コンピュータと同じように,
複数の量子ゲートからなる回路を用いる.

以下が回路の例である.

![スクリーンショット 2024-11-30 180051.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586226/25d39544-e6fc-9053-af86-3ea4ca21a7ed.png)

左端の値が**初期状態**である.

# Xゲート(NOTゲート)
Xゲートは**量子ビット反転**をするゲート.
その性質から**NOTゲート**とも呼ばれる.

Xゲートの行列表現は以下のようになる.

```math
X = 
\left(
\begin{matrix} 
0 & 1\\ 
1 & 0
\end{matrix} 
\right)
```

Xゲートをブラケット記法で表すと以下のようになる.

- $X = |0\rangle \langle 1| + |1\rangle \langle 0|$

以下はXゲートを用いた回路の例となる.

![スクリーンショット 2024-11-30 195149.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586226/a2cb26a1-2244-ecee-c8f8-04a9cab14322.png)


Xゲートは,以下のような記号で表現されることもある.
![スクリーンショット 2024-11-30 200221.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586226/22bd702d-a475-2065-efb6-c85b14535d0a.png)


## 行列での計算例(Xゲート)
Xにより,量子状態$|0\rangle,|1\rangle, \frac{1}{\sqrt{2}}(|0\rangle +|1\rangle), \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)$が
どのように計算されるか以下に示す.

```math
\displaylines{
X|0\rangle 
=
\left(
\begin{matrix} 
0 & 1\\ 
1 & 0
\end{matrix} 
\right)

\left(
\begin{matrix} 
1 \\ 
0
\end{matrix} 
\right)
= 
\left(
\begin{matrix} 
0 \\ 
1
\end{matrix} 
\right)

=

|1\rangle 
\\

X|1\rangle 
=
\left(
\begin{matrix} 
0 & 1\\ 
1 & 0
\end{matrix} 
\right)

\left(
\begin{matrix} 
0 \\ 
1
\end{matrix} 
\right)
= 
\left(
\begin{matrix} 
1 \\ 
0
\end{matrix} 
\right)

=

|0\rangle \\

X
\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)
=
\left(
\begin{matrix} 
0 & 1\\ 
1 & 0
\end{matrix} 
\right)

\left(
\begin{matrix} 
\frac{1}{\sqrt{2}} \\ 
\frac{1}{\sqrt{2}}
\end{matrix} 
\right)

= 

\left(
\begin{matrix} 
\frac{1}{\sqrt{2}} \\ 
\frac{1}{\sqrt{2}}
\end{matrix} 
\right)

=

\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle) \\

X
\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)
=
\left(
\begin{matrix} 
0 & 1\\ 
1 & 0
\end{matrix} 
\right)

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

= 

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

=

-\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle) 
}
```

# Zゲート
Zゲートは**位相を反転**するゲート.

すなわち,$|0\rangle$は変化させないが,$|1\rangle$の符号を反転させる.

Zゲートの行列表現は以下のようになる.

```math
Z
=
\left(
\begin{matrix} 
1 & 0\\ 
0 & -1
\end{matrix} 
\right)
```

Zゲートをブラケット記法で表すと以下のようになる.

- $Z = |0\rangle \langle 0| - |1\rangle \langle 1| $

以下はZゲートを用いた回路の例となる.
![スクリーンショット 2024-11-30 212634.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586226/a50d251f-da1c-899a-a417-b692c76c0844.png)

# 行列での計算例(Zゲート)
Zにより,量子状態$|0\rangle,|1\rangle, \frac{1}{\sqrt{2}}(|0\rangle +|1\rangle), \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)$が
どのように計算されるか以下に示す.

```math
\displaylines{
Z|0\rangle 
=
\left(
\begin{matrix} 
1 & 0\\ 
0 & -1
\end{matrix} 
\right)

\left(
\begin{matrix} 
1 \\ 
0
\end{matrix} 
\right)
= 
\left(
\begin{matrix} 
1 \\ 
0
\end{matrix} 
\right)

=

|0\rangle 
\\

Z|1\rangle 
=
\left(
\begin{matrix} 
1 & 0\\ 
0 & -1
\end{matrix} 
\right)

\left(
\begin{matrix} 
0 \\ 
1
\end{matrix} 
\right)
= 
\left(
\begin{matrix} 
0 \\ 
-1
\end{matrix} 
\right)

=

-|1\rangle \\

Z
\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)
=
\left(
\begin{matrix} 
1 & 0\\ 
0 & -1
\end{matrix} 
\right)

\left(
\begin{matrix} 
\frac{1}{\sqrt{2}} \\ 
\frac{1}{\sqrt{2}}
\end{matrix} 
\right)

= 

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

=

\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle) \\

Z
\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)
=
\left(
\begin{matrix} 
1 & 0\\ 
0 & -1
\end{matrix} 
\right)

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

= 

\left(
\begin{matrix} 
\frac{1}{\sqrt{2}} \\ 
\frac{1}{\sqrt{2}}
\end{matrix} 
\right)

=

\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle) 
}
```

# Yゲート
Yゲートは**量子ビットと位相を反転**するゲート.(X, Zゲートほどよく使わない)

Yゲートの行列表現は以下のようになる.

```math
Y
=
\left(
\begin{matrix} 
0 & -i\\ 
i & 0
\end{matrix} 
\right)
```

Yゲートをブラケット記法で表すと以下のようになる.

- $Y = i(-|0\rangle \langle 1| + |1\rangle \langle 0|)$

以下はYゲートを用いた回路の例となる.
![スクリーンショット 2024-11-30 210447.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586226/1ab13560-0fe7-8ed3-1525-bdcd8f8d0232.png)

# 行列での計算例(Yゲート)
Yにより,量子状態$|0\rangle,|1\rangle, \frac{1}{\sqrt{2}}(|0\rangle +|1\rangle), \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)$が
どのように計算されるか以下に示す.

```math
\displaylines{
Y|0\rangle 
=
\left(
\begin{matrix} 
0 & -i\\ 
i & 0
\end{matrix} 
\right)

\left(
\begin{matrix} 
1 \\ 
0
\end{matrix} 
\right)
= 
\left(
\begin{matrix} 
0 \\ 
i
\end{matrix} 
\right)

=

i|1\rangle 
\\

Y|1\rangle 
=
\left(
\begin{matrix} 
0 & -i\\ 
i & 0
\end{matrix} 
\right)

\left(
\begin{matrix} 
0 \\ 
1
\end{matrix} 
\right)
= 
\left(
\begin{matrix} 
-i \\ 
0
\end{matrix} 
\right)

=

-i|0\rangle \\

Y
\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)
=
\left(
\begin{matrix} 
0 & -i\\ 
i & 0
\end{matrix} 
\right)

\left(
\begin{matrix} 
\frac{1}{\sqrt{2}} \\ 
\frac{1}{\sqrt{2}}
\end{matrix} 
\right)

= 

\left(
\begin{matrix} 
\frac{-i}{\sqrt{2}} \\ 
\frac{i}{\sqrt{2}}
\end{matrix} 
\right)

=

\frac{-i}{\sqrt{2}}(|0\rangle -|1\rangle) \\

Y
\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)
=
\left(
\begin{matrix} 
0 & -i\\ 
i & 0
\end{matrix} 
\right)

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

= 

\left(
\begin{matrix} 
\frac{i}{\sqrt{2}} \\ 
\frac{i}{\sqrt{2}}
\end{matrix} 
\right)

=

-\frac{i}{\sqrt{2}}(|0\rangle +|1\rangle) 
}
```

# Hゲート(Hadamardゲート, アダマールゲート)
Hゲートは**0と1の重ね合わせ状態を生成するような操作**をするゲート.

要するに,**あらゆる場合を等確率で発生させる**ようにするゲートである.

Hゲートは**頻出**なので,しっかりと押さえておきたいゲート.

Hゲートの行列表現は以下のようになる.

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

Hゲートをブラケット記法で表すと以下のようになる.

- $|+\rangle = \frac{1}{\sqrt{2}}(|0\rangle + \langle1|) = H|0\rangle,\quad |-\rangle = \frac{1}{\sqrt{2}}(|0\rangle - \langle1|) = H|1\rangle$とする
- $H = |+\rangle \langle 0| \quad + \quad |-\rangle \langle 1|$

以下はHゲートを用いた回路の例となる.

![スクリーンショット 2024-11-30 182252.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586226/ff08b76a-a8d2-70f9-7aec-6c7d39bd3254.png)

![スクリーンショット 2024-11-30 184044.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3586226/3ab4b775-0429-b1b7-567b-fdd676f8457b.png)

$|0\rangle$は,0が100%の確率で観測されるということである.

しかし,Hゲートを通すことで**1/2の確率(等確率)で0と1が観測される**ようになる.

このように,アダマールゲートを用いることで重ね合わせ状態を生成できる.

また,逆にHゲートを用いると,$\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)$という重ね合わせ状態から,
$|0\rangle$を作ることもできる.(可逆)

## 行列での計算例(Hゲート)
Hにより,量子状態$|0\rangle,|1\rangle, \frac{1}{\sqrt{2}}(|0\rangle +|1\rangle), \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)$が
どのように計算されるか以下に示す.

```math
\displaylines{
H|0\rangle 
=
\frac{1}{\sqrt{2}}

\left(
\begin{matrix} 
1 & 1\\ 
1 & -1
\end{matrix} 
\right)

\left(
\begin{matrix} 
1 \\ 
0
\end{matrix} 
\right)

= 
\frac{1}{\sqrt{2}}

\left(
\begin{matrix} 
1 \\ 
1
\end{matrix} 
\right)

=

\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)\\



H|1\rangle 
=
\frac{1}{\sqrt{2}}

\left(
\begin{matrix} 
1 & 1\\ 
1 & -1
\end{matrix} 
\right)

\left(
\begin{matrix} 
0 \\ 
1
\end{matrix} 
\right)

= 
\frac{1}{\sqrt{2}}

\left(
\begin{matrix} 
1 \\ 
-1
\end{matrix} 
\right)

=

\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)\\

H

\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)

=
\frac{1}{\sqrt{2}}

\left(
\begin{matrix} 
1 & 1\\ 
1 & -1
\end{matrix} 
\right)

\left(
\begin{matrix} 
\frac{1}{\sqrt{2}} \\ 
\frac{1}{\sqrt{2}}
\end{matrix} 
\right)

= 

\left(
\begin{matrix} 
1 \\ 
0
\end{matrix} 
\right)

=

|0\rangle \\

H

\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)

=

\frac{1}{\sqrt{2}}

\left(
\begin{matrix} 
1 & 1\\ 
1 & -1
\end{matrix} 
\right)

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

= 


\left(
\begin{matrix} 
0 \\ 
1
\end{matrix} 
\right)

=

|1\rangle 
}
```

## ブラケット記法による計算例
$|0\rangle=\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle)$, $|1\rangle = \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)$であることを利用すると,
量子状態$\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle), \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)$は以下のように演算できる.
(Hがケットベクトルにかかっているイメージ)

```math
H\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle) 
= \frac{1}{\sqrt{2}}(\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle) + \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)) 
= \frac{1}{\sqrt{2}} (\frac{2}{\sqrt{2}}|0\rangle) 
= |0\rangle
```

```math
H\frac{1}{\sqrt{2}}(|0\rangle -|1\rangle) 
= \frac{1}{\sqrt{2}}(\frac{1}{\sqrt{2}}(|0\rangle +|1\rangle) - \frac{1}{\sqrt{2}}(|0\rangle -|1\rangle)) 
= \frac{1}{\sqrt{2}} (\frac{2}{\sqrt{2}}|1\rangle) 
= |1\rangle
```


# 最後に
行列演算よりも，それぞれのゲートの$|0\rangle, |1\rangle$がどのようになるかを覚えて，
ブラケット記法で演算するのが良い.

次回は,2入力2出力などの複数量子ビットを用いる量子ゲートを扱う.

位相についての理解はまた機会があれば...

# 参考サイト
https://note.com/quantum_note/n/n05aa704504d8

https://www.r-staffing.co.jp/engineer/entry/20221007_1

https://zenn.dev/airev/articles/airev-quantum-05