GHZ状態 作成回路のいろいろ

# はじめに
GHZ状態とは

* https://en.wikipedia.org/wiki/Greenberger%E2%80%93Horne%E2%80%93Zeilinger_state

にもある通り、

![450px-The_quantum_logic_gates_that_generates_the_3-qubit_GHZ_state.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/e696f9f9-0ec5-7186-35fb-3f93b8d529b3.png)

こんな感じで、利用量子ビットについてすべて0状態と、全て１の状態の重ね合わせ状態です。
この、GHZの作成回路には、なにやらバリエーションがありそうなので、列挙してみたいと思います。
（あまり、内容の無い記事で恐縮です。）

また、他の量子コンピュータ関係の他の記事は、下記で紹介しています。

https://qiita.com/shnchr/items/41fa7fd1284d74007a7c


$$
% basic braket 
\newcommand{\bra}[1]{\left\langle #1 \right|}
\newcommand{\ket}[1]{\left| #1 \right\rangle}
\newcommand{\bracket}[2]{\left\langle #1 \middle| #2 \right\rangle}
\newcommand{\ketbra}[2]{\left| #1 \right\rangle \left\langle #2 \right|}
\newcommand{\ketbraket}[3]{\left| #1 \right\rangle \left\langle #2 \middle| #3 \right\rangle}
% small-size
\newcommand{\bras}[1]{\left\langle {\scriptsize #1}  \right|}
\newcommand{\kets}[1]{\left| {\scriptsize #1}  \right\rangle}
\newcommand{\brackets}[2]{\left\langle {\scriptsize #1} \middle| {\scriptsize #2} \right\rangle}
\newcommand{\ketbras}[2]{\left| {\scriptsize #1} \right\rangle \left\langle {\scriptsize #2} \right|}
\newcommand{\ketbrakets}[3]{\left| {\scriptsize #1} \right\rangle \left\langle {\scriptsize #2} \middle| {\scriptsize #3} \right\rangle}
% Matrix
\newcommand{\tate}[2]{\begin{bmatrix} #1 \\ #2 \end{bmatrix}}
\newcommand{\yoko}[2]{\begin{bmatrix} #1 & #2 \end{bmatrix}}
\newcommand{\mtrx}[4]{\begin{bmatrix} #1 & #2 \\ #3 & #4 \end{bmatrix}}
$$

# GHZ状態はどんな状態？
## 000と111の重ね合わせ
下記は３量子ビットですので、3ビットともに0の$\ket{000}$と、3ビットともに1の$\ket{111}$の重ね合わせとなっています。

![450px-The_quantum_logic_gates_that_generates_the_3-qubit_GHZ_state.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/e696f9f9-0ec5-7186-35fb-3f93b8d529b3.png)

[Quirkで見てみる](https://algassert.com/quirk#circuit={%22cols%22:[[%22H%22],[%22%E2%80%A2%22,%22X%22],[1,%22%E2%80%A2%22,%22X%22],[%22Chance3%22]]})とこんな感じで、000と111の重ね合わせになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/f48bee93-3af1-562a-49ed-afb39945f8ca.png)

## 余談（均等重ね合わせ）
では、余談ですが、これはどうでしょう？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/a88be5ac-786a-36dc-4651-fa515d6e6061.png)

これは、下記8個の状態の均等な重ね合わせなので、GHZ状態ではありません。

```math
\ket{\psi} = \frac{1}{2\sqrt{2}}
\left(
\ket{000} + \ket{001} + \ket{010} + \ket{011}
 + \ket{100} + \ket{101} + \ket{110} + \ket{111} 
\right)
```
[Quirkで見てみる](https://algassert.com/quirk#circuit={%22cols%22:[[%22H%22,%22H%22,%22H%22],[%22%E2%80%A6%22,%22%E2%80%A6%22,%22%E2%80%A6%22],[%22Chance3%22]]})とこんな感じで、8状態の均等な重ね合わせになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/5dff77bf-cabc-8661-a704-d5f90ce9d6c9.png)

## Nビットでは
Nビットに対しては[^1]、

```math
\ket{GHZ} = \frac{1}{\sqrt{2}} \left(\ket{0}^{\otimes N} + \ket{1}^{\otimes N} \right)
```

となり、こんな感じで連鎖的に$Cnot$を適用することで、Nビットの$GHZ$状態が作成できます

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3131393734372f30346336313138662d356465352d366666632d336366382d3465313466366462383031392e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/23f35a14-81bf-1720-96a1-133103da4712.png)

# 基本形？
これが、一番一般的な形かと思うのですが、この回路でGHZ状態になるかを確認しておきましょう。

![450px-The_quantum_logic_gates_that_generates_the_3-qubit_GHZ_state.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/e696f9f9-0ec5-7186-35fb-3f93b8d529b3.png)

```math
\displaylines{
\ket{000} 
\xrightarrow{H_1} 
\frac{1}{\sqrt{2}}\left( \ket{0} + \ket{1} \right) \otimes \ket{00}
\\
\xrightarrow{Cnot_{12}} 
\frac{1}{\sqrt{2}}\left( \ket{000} + \ket{110} \right)   
\\
\xrightarrow{Cnot_{23}} 
\frac{1}{\sqrt{2}}\left( \ket{000} + \ket{111} \right)   
}
```

なお、Quirkで状態が確認できるようリンクしておきます

 * [Quirkで開く（基本形？）](https://algassert.com/quirk#circuit={%22cols%22:[[%22H%22],[%22%E2%80%A2%22,%22X%22],[1,%22%E2%80%A2%22,%22X%22],[%22Chance3%22]]})


# 変形１
当たり前ではあるのですが、これでもGHZ状態が作れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/f2e86d0e-966c-f38f-1d79-6c689fff1fdc.png)

数式で確認すると、上記式の最後の矢印の$Cnot_{23}$が$Cnot_{13}$になりますが、
**制御ビットが、1ビット目でも2ビット目でもどちらでも1となっているので**結果は変わりません。

```math
\displaylines{
\ket{000} 
\xrightarrow{H_1} 
\frac{1}{\sqrt{2}}\left( \ket{0} + \ket{1} \right) \otimes \ket{00}
\\
\xrightarrow{Cnot_{12}} 
\frac{1}{\sqrt{2}}\left( \ket{000} + \ket{\color{red}{11}0} \right)   
\\
\xrightarrow{\color{red}{Cnot_{13}}} 
\frac{1}{\sqrt{2}}\left( \ket{000} + \ket{111} \right)   
}
```
なお、Quirkで状態が確認できるようリンクしておきます

 * [Quirkで開く（変形１）](https://algassert.com/quirk#circuit={%22cols%22:[[%22H%22],[%22%E2%80%A2%22,%22X%22],[%22%E2%80%A2%22,1,%22X%22],[%22Chance3%22]]})

# 変形２
こんなのでも、GHZ状態が作れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/abbccdd9-43e8-7909-3411-65438660854f.png)

計算過程は、[こちらの記事](https://qiita.com/m_rafa0110/items/28f68436dc2039af2ead)に分かりやすく解説されているのでリンクさせていただきます。

なお、Quirkで状態が確認できるようリンクしておきます

 * [Quirkで開く（変形２）](https://algassert.com/quirk#circuit={%22cols%22:[[%22H%22,%22H%22,%22X%22],[1,%22%E2%80%A2%22,%22X%22],[%22%E2%80%A2%22,1,%22X%22],[%22H%22,%22H%22,%22H%22],[%22Chance3%22]]})

# まとめ
見つけたバリエーションとしては、３パターンでした。
いずれの回路も、結果は下記のように000と111の重ね合わせでした。[^1]

```math
\ket{GHZ} = \frac{1}{\sqrt{2}} \left( \ket{000} + \ket{111} \right)
```

||回路図|
|:--:|:--:|
|基本形?|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/56db9be8-fb6c-6dd5-be5f-9c039686e832.png)|
|変形１|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/43619fac-da9a-4c08-3211-9e38d37535d8.png)|
|変形２|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183826/9d1dc37d-dcc8-2161-c087-f9e6996046cf.png)|

[^1]: $\ket{111}$の符号が＋／－か（相対位相）は問わず、000と111の重ね合わせをGHZ状態と呼ぶようです。（と理解しています）