量子コンピュータ多世界シミュレーション


## はじめに

グローバーのアルゴリズムを多世界解釈でシミュレートしてみました。
ただし多世界解釈の定義は千差万別なので、ここで紹介するのはその中の一つです。
一般的に量子回路の動作は、コペンハーゲン解釈で説明されています。
コペンハーゲン解釈とは、一つの宇宙の中だけで全ての量子現象を説明するものです。
コペンハーゲン解釈で量子ビットの０状態と１状態の重ね合わせを説明すると次のようになります。
観測するまでは０と１の重ね合わせ状態にある量子ビットは、観測すると瞬時に波束の収縮が起こり０か１に確定します。
コペンハーゲン解釈では一つの宇宙しか考えないので、波束の収縮が必要になりますが、波束の収縮速度が光速を超えるという難点があります。
一方、多世界解釈とは、多数の並行宇宙の存在を認めて量子現象を説明するもので、波束の収縮を考えません。
多世界解釈では、波束の収縮をタイムラインの移動と考えます。
量子ビットの０と１の重ね合わせを例にして多世界解釈を説明すると次のようになります。
この量子状態を表現するのに２つの並行宇宙（宇宙Ａと宇宙Ｂ）を使います。
宇宙Ａの中には０状態の量子ビットが存在し、宇宙Ｂの中には１状態の量子ビットが存在します。
観測すると、観測者のタイムラインがつながっている宇宙が選ばれ、０か１が確定します。

並行宇宙を小さな宇宙をモデルにして説明します。
宇宙は２次元の正方形で２種類の素粒子が２個ずつ存在するとします。
すると、下記の図のように全部で６パターンができます。
![sh30_001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/8e3febda-0443-78fe-d8ad-7aa314635758.jpeg)
一つのパターンは一つの並行宇宙を表します。
つまり、この宇宙は６パターンの時間の存在しない並行宇宙として表すことができます。
現実の宇宙では、観測者はタイムラインに沿って並行宇宙間を常に移動しています。
量子回路を観測している人のタイムラインは、量子回路に依存します。
例えば、量子ビットの出力が必ず０になる量子回路を観測している人のタイムラインは、必ずその並行宇宙に行くことになり、出力が１になる並行宇宙には行きません。
当然ですが、観測者の体が無い並行宇宙には観測者のタイムラインはありません。体が無いとその宇宙を観測することは不可能です。

## ２量子ビットのグローバーのアルゴリズムのシミュレート

多世界解釈では、一つの宇宙の中で量子ビットが重なり合うことはありません。
量子ビットは必ず０か１になります。
量子ビットの重なり合いは、２つの並行宇宙の重なり合いを意味します。
２量子ビットの量子回路を多世界解釈で表現するには４つの並行宇宙が必要です。
２量子ビットの量子回路では、次のように量子ビットの組み合わせが４つ作られます。この組み合わせが４つの並行宇宙に対応しています。
(q1=0 q0=0), (q1=0 q0=1), (q1=1 q0=0), (q1=1 q0=1)

量子ビット０をアダマールゲートを通すと０と１の重なり合った状態になります。
この状態をブロッホ球では横向きベクトルで表します。
多世界解釈では、横向きのベクトルを０と１の２つの縦向きベクトルにして別々の並行宇宙に描きます。
つまり、多世界解釈ではアダマールゲートを通るたびに、「量子回路が使う並行宇宙の数」が２倍になります。
ただし、いくら並行宇宙の数が増えると言っても２量子ビットの量子回路では異なる並行宇宙の数は４つだけなので、量子回路は同じ並行宇宙内で増えることになります。
同じ並行宇宙の中で増えた量子回路は、観測時に加算され一つにまとまります。（フーリエ変換と同じ原理です）

このプログラムは、量子ビットの重ね合わさった量子回路を、別々の並行宇宙の量子回路として表現し視覚化するものです。
上記したように多世界解釈で量子回路を描くと、並行宇宙の数はアダマールゲートの数に比例して増加します。
（アダマールゲート以外にも、回転ゲートなどを使って量子ビットを０と１の間にすると、並行宇宙の数が多くなります）

このプログラムは、２量子ビットのグローバーのアルゴリズムを２通りの方法で描きます。
一つは「制御Ｚ」を使う回路で、もう一つは「制御ノット」を使う量子回路です。
この二つの量子回路では、アダマールゲートの数が違うので並行宇宙の数が違います。（同時に観測不可能な並行宇宙の数は両回路とも４つ）
このプログラムを使って、２つの量子回路（「制御Ｚ」と「制御ノット」）が複数の並行宇宙の中で、どのように推移していくのかを確認することができます。

「制御Ｚ」と「制御ノット」量子回路を設計する手順は下記のようにしました。
●アルゴリズムを行列で書く
●その行列から量子回路を作る

---------------------------------------------------------
### ステップ１
アダマールゲートと自作ゲートを使います。
自作ゲートは、q0とq1が０状態のときq1の位相がマイナスになるゲートです。
（自作ゲートを作った理由は、量子回路が最も単純になるからです。）

アダマールゲート
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 \\
      1 & -1 & -1 & 1 \\
    \end{array}
  \right)
```


自作ゲート
```math
  \left(
    \begin{array}{cccc}
      -1 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 \\
      0 & 0 & 1 & 0 \\
      0 & 0 & 0 & 1 \\
    \end{array}
  \right)
```


量子回路（量子ビットの初期化、重ね合わせ、マーキングの後の回路）
![gazou1_4hb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/be708fd9-c3c2-de44-93d7-68d5c8d98d34.jpeg)


●計算
マーキングで並行宇宙(q1=1,q0=0)のq1の符号をマイナスにしました。
![sh30_005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/18c558f5-eb52-82d7-7a53-e7bf10fce9b1.jpeg)


アダマールゲートを通過
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 \\
      1 & -1 & -1 & 1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
```


自作ゲートを通過
```math
  \left(
    \begin{array}{cccc}
      -1 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 \\
      0 & 0 & 1 & 0 \\
      0 & 0 & 0 & 1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
```




アダマールゲートを通過
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 \\
      1 & -1 & -1 & 1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      -1 \\
      0 \\
      0 
    \end{array}
  \right)
```

入力と出力が一致しているのが分かります。

---------------------------------------------------------
### ステップ２

量子コンピュータに自作ゲートが用意していないので、自作ゲートを３つに分解します。
ノットゲート、制御Ｚゲート、ノットゲートに分解します。
```math
  \left(
    \begin{array}{cccc}
      -1 & 0 & 0 & 0 \\
       0 & 1 & 0 & 0 \\
       0 & 0 & 1 & 0 \\
       0 & 0 & 0 & 1 
    \end{array}
  \right)
 = 
   \left(
    \begin{array}{cccc}
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 \\
      0 & 1 & 0 & 0 \\
      1 & 0 & 0 & 0 
    \end{array}
  \right)
 + 
   \left(
    \begin{array}{cccc}
      1 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 \\
      0 & 0 & 1 & 0 \\
      0 & 0 & 0 & -1 
    \end{array}
  \right)
 + 
   \left(
    \begin{array}{cccc}
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 \\
      0 & 1 & 0 & 0 \\
      1 & 0 & 0 & 0 
    \end{array}
  \right)
```

量子回路（量子ビットの初期化、重ね合わせ、マーキングの後の回路）
![gazou2_2hb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/00c4dbc3-fcf6-d243-b7f2-92f6709dc526.jpeg)


●計算
マーキングで並行宇宙(q1=1,q0=0)のq1の符号をマイナスにしました。
![sh30_005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/ef196ef4-cff4-2695-a7db-7bad2a017059.jpeg)


アダマールゲートを通過

```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 \\
      1 & -1 & -1 & 1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
```

ノットゲートを通過

```math
  \left(
    \begin{array}{cccc}
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 \\
      0 & 1 & 0 & 0 \\
      1 & 0 & 0 & 0 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      1 
    \end{array}
  \right)
```

制御Ｚゲートを通過
```math
  \left(
    \begin{array}{cccc}
      1 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 \\
      0 & 0 & 1 & 0 \\
      0 & 0 & 0 & -1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 
    \end{array}
  \right)
```


ノットゲートを通過
```math
  \left(
    \begin{array}{cccc}
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 \\
      0 & 1 & 0 & 0 \\
      1 & 0 & 0 & 0 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
```

アダマールゲートを通過
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 \\
      1 & -1 & -1 & 1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      -1 \\
      0 \\
      0 
    \end{array}
  \right)
```



入力と出力が一致しているのが分かります。

---------------------------------------------------------
### ステップ３

量子コンピュータに「制御Ｚゲート」が用意してない場合は、「制御Ｚゲート」を３つに分解します。
アダマールゲート(q1だけ)、制御ノットゲート、アダマールゲート(q1だけ)に分解します。
```math
  \left(
    \begin{array}{cccc}
       1 & 0 & 0 & 0 \\
       0 & 1 & 0 & 0 \\
       0 & 0 & 1 & 0 \\
       0 & 0 & 0 & -1 
    \end{array}
  \right)
 = 
   \left(
    \begin{array}{cccc}
      1 & 1 & 0 & 0 \\
      1 & -1 & 0 & 0 \\
      0 & 0 & 1 & 1 \\
      0 & 0 & 1 & -1 
    \end{array}
  \right)
 + 
   \left(
    \begin{array}{cccc}
      1 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 
    \end{array}
  \right)
 + 
   \left(
    \begin{array}{cccc}
      1 & 1 & 0 & 0 \\
      1 & -1 & 0 & 0 \\
      0 & 0 & 1 & 1 \\
      0 & 0 & 1 & -1 
    \end{array}
  \right)
```


量子回路（量子ビットの初期化、重ね合わせ、マーキングの後の回路）
![gazou3_2hb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/fad17fe6-6586-0946-9486-544a142918b2.jpeg)


●計算
マーキングで並行宇宙(q1=1,q0=0)のq1の符号をマイナスにしました。
![sh30_005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/40c06a18-c893-d5ed-4a07-cd1fc509ed56.jpeg)


アダマールゲートを通過
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 \\
      1 & -1 & -1 & 1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
```


ノットゲートを通過
```math
  \left(
    \begin{array}{cccc}
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 \\
      0 & 1 & 0 & 0 \\
      1 & 0 & 0 & 0 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      1 
    \end{array}
  \right)
```


アダマールゲート(q1だけ)を通過
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 0 & 0 \\
      1 & -1 & 0 & 0 \\
      0 & 0 & 1 & 1 \\
      0 & 0 & 1 & -1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      1 \\
      1 \\
      0 
    \end{array}
  \right)
```


制御ノットゲートを通過
```math
  \left(
    \begin{array}{cccc}
      1 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      1 \\
      1 \\
      0 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      1 
    \end{array}
  \right)
```

アダマールゲート(q1だけ)を通過
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 0 & 0 \\
      1 & -1 & 0 & 0 \\
      0 & 0 & 1 & 1 \\
      0 & 0 & 1 & -1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 
    \end{array}
  \right)
```

ノットゲートを通過
```math
  \left(
    \begin{array}{cccc}
      0 & 0 & 0 & 1 \\
      0 & 0 & 1 & 0 \\
      0 & 1 & 0 & 0 \\
      1 & 0 & 0 & 0 
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
```

アダマールゲートを通過
```math
  \left(
    \begin{array}{cccc}
      1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 \\
      1 & -1 & -1 & 1 
    \end{array}
  \right)
  \left(\begin{array}{c}
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      -1 \\
      0 \\
      0
    \end{array}
  \right)
```



入力と出力が一致しているのが分かります。

--------------------------------------------------------------------

#### 「量子コンピュータ多世界シミュレーション」は下記のURLからダウンロードできます（ベクター フリーソフト）
https://www.vector.co.jp/soft/winnt/edu/se525817.html

（注意）このプログラムで表示しているのは、「量子ビットq0,q1の初期化」処理と「アダマールゲートによる量子ビットの重ね合わせ」処理の後の方です。

## プログラムの使い方

### ボタンの説明

#### ●「CZ回路 か CX回路 を選択」
最初に、「CZ回路」と「CX回路」のどちらをシミュレートするか選択します。

#### ●「位相をマイナスにするビットを選択」
検索対象の量子ビットの位相をマイナスにします。
同時に観測できない宇宙の数は４つ [q1=0 q0=0], [q1=1 q0=0], [q1=0 q0=1], [q1=1 q0=1]なので、この中から選択します。
一つの並行宇宙の中で、量子ビットq0とq1のどちらの位相をマイナスにしても結果は同じですが、計算中の動作は違います。

#### ●「実行」
位相をマイナスにする量子ビットを選択したら、「実行」ボタンを押します。
画面上方に、計算結果が表示されます。

#### ●「表示する回路を選択」
このソフトは１ページ内に４つの量子回路しか表示できないので、このボタンで次ページを表示させます。
「CZ回路」は全部で１６量子回路、「CX回路」は全部で６４量子回路があります。
ボタンの横にあるベクトルは、量子回路の左端の量子ビットを表します。

### 量子回路と計算結果の説明

【図１】は「ＣＺ回路を選択」、「並行宇宙[q1=1 q0=0]のq1の位相をマイナス」にした場合の画面の説明です。

【図１】
![sh30_023.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/9fb789c7-6ada-bf93-243f-242d676116d0.jpeg)


#### グローバーのアルゴリズムの原理を、【図２】～【図９】を使って説明します。

上記の自作ゲートを使った量子回路で説明します。
【図２】は入力された量子ビットの組み合わせの（q1=0,q0=0）回路。
【図３】は入力された量子ビットの組み合わせの（q1=1,q0=0）回路。
【図４】は入力された量子ビットの組み合わせの（q1=0,q0=1）回路。
【図５】は入力された量子ビットの組み合わせの（q1=1,q0=1）回路。

左から入力された量子ビットは、アダマールゲート(Ｈゲート)、自作ゲート(Ｊゲート)、アダマールゲート(Ｈゲート)と通過していきます。
各列を説明するために、列に対応する赤色文字を使いました。

#### ●Ａ列
入力された量子ビット（量子ビットの初期化、重ね合わせ、マーキング後）
#### ●Ｂ列
アダマールゲートを通過して、１つの量子ビットが２つの量子ビットの重ね合わせた状態になる。
#### ●Ｃの列
２つの量子ビットの重ね合わせ状態をq0とq1の組み合わせにして表示する。
#### ●Ｄ列
自作ゲートを通過する。q0とq1が共に０状態の場合、q1の位相が反転する。
#### ●Ｅ列
アダマールゲートを通過して、１つの量子ビットが２つの量子ビットの重ね合わせた状態になる。
#### ●Ｆ列
Ｅ列の量子ビットを(q1=0,q0=0)、(q1=1,q0=0)、(q1=0,q0=1)、(q1=1,q0=1)に整理して描く。
それぞれ、q1とq0を掛けて表示する。
黒のベクトルは位相が＋、青のベクトルは位相がー。


### マーキングの有無による２つの量子回路を使って、グローバーのアルゴリズムの原理を説明


#### マーキング無しで、全ての量子ビットで位相の反転が無い場合

並行宇宙１(q1=0,q0=0) [量子ビットの初期化、重ね合わせ後]
【図２】
![sh30_024.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/7be293d0-9d2a-b2ea-2cec-d5a52f59d770.jpeg)

並行宇宙２(q1=1,q0=0) [量子ビットの初期化、重ね合わせ後]
【図３】
![sh30_025.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/9d54bf6b-053f-6da4-ba0b-7583bb052f2a.jpeg)

並行宇宙３(q1=0,q0=1) [量子ビットの初期化、重ね合わせ後]
【図４】
![sh30_027.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/c67c4bb3-41a5-522e-c249-f598afbce541.jpeg)

並行宇宙４(q1=1,q0=1) [量子ビットの初期化、重ね合わせ後]
【図５】
![sh30_028.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/8ae92547-3211-4828-1846-7f9c00848fa0.jpeg)

#### 最終結果
【図６】
![sh30_029.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/f3cedd9e-424b-c6eb-60ce-730c1f4ebd6e.jpeg)




#### 並行宇宙２にマーキングをし、q1の位相をマイナスにした場合
（マーキングの有無で図が違うのは【図３】だけなので、【図３】を【図７】と入れ替えて説明します。）

並行宇宙２(q1=-1,q0=0) [量子ビットの初期化、重ね合わせ、マーキング後]
【図７】
![sh30_026.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/644f5ea9-dff8-d0bd-bec4-173f8d7f8dc2.jpeg)

#### 最終結果
【図８】
![sh30_030.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/e245238e-bd9c-2c4d-f092-8126bf0ceef7.jpeg)

並行宇宙２の出現確率が高くなります。

##### 並行宇宙２のq1をマイナスにすると、なぜ並行宇宙２の出現確率が最大になるのか調べます。
２つの結果を並べて比較すると、ある規則を見つけることができます。
マーキングすると並行宇宙２の量子ビットだけが全て反転しているのが分かります。
そのため合計した結果に違いが生じます。
【図９】
![sh30_031.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/59f6aa8b-8d17-2cf3-d75e-7b82dba6b8a5.jpeg)





### グローバーのアルゴリズムはデータベース検索？？


グローバーのアルゴリズムはデータベース検索と言われていますが本当でしょうか。
Ａを入力するとＡを出力、Ｂを入力するとＢを出力、Ｃを入力するとＣを出力するようなもので役に立ちません。
なぜそうなるかを、３量子ビットのグローバーのアルゴリズムを使って説明します。
【図１０】の量子回路Ａでは、マーキングしたデータと同じデータが測定されます。（この図では111をマーキングしています。）
それは、３つの量子ビットにアダマールゲートを作用（量子回路Ａの１）させて、入力データ000～111が同じ確率で測定されるようにしたためです。
この回路では、どのデータをマーキングしてもマーキングしたデータと同じデータが出力されます。
【図１０】の量子回路Ｂでは、q0とq1にアダマールゲートを作用させ、q2にノットゲートを作用（量子回路Ｂの１）させています。
すると存在するデータは、「100, 101, 110, 111(q2,q1,q0)」の４つになります。
111をマーキングすると、111が測定されます。
【図１０】の量子回路Ｃでは、q0とq1にアダマールゲートを作用（量子回路Ｃの１）させ、q2には何もしません。
すると存在するデータは、「000, 001, 010, 011(q2,q1,q0)」の４つになります。
111をマーキングしても、111は測定されません。
つまり、入力データの中に探しているデータの有無を調べることができます。

【図１０】
![gazou4_3hb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3556981/50586261-fb5e-e2c8-621e-57e029f7a814.jpeg)

##### 【図１０】の量子回路Ｂを回路上の番号に沿って計算しました。
データの並び方
q2 q1 q0
0  0  0
1  0  0
0  1  0
1  1  0
0  0  1
1  0  1
0  1  1
1  1  1

1 (H H X)
```math
  \left(
    \begin{array}{cccccccc}
      0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
      1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
      0 & -1 & 0 & -1 & 0 & -1 & 0 & -1 \\
      1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
      0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 \\
      1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 \\
      0 & -1 & 0 & -1 & 0 & 1 & 0 & 1 \\
      1 & 0 & 1 & 0 & -1 & 0 & -1 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 
    \end{array}
  \right)
```
2 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 
    \end{array}
  \right)
```
3 (C C X)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -1 \\
      1 
    \end{array}
  \right)
```
4 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      -1 
    \end{array}
  \right)
```
5 (H H H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\
      1 & -1 & -1 & -1 & 1 & -1 & -1 & 1 \\
      1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\
      1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\
      1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\
      1 & -1 & -1 & 1 & -1 & 1 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      -1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -1 \\
      1 
    \end{array}
  \right)
```
6 (X X X)
```math
  \left(
    \begin{array}{cccccccc}
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
```
7 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      -1 \\
      0 \\
      -1 \\
      0 \\
      -1 
    \end{array}
  \right)
```
8 (C C X)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      -1 \\
      0 \\
      -1 \\
      0 \\
      -1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      1 \\
      0 \\
      -1 \\
      0 \\
      -1 \\
      -1 \\
      0 
    \end{array}
  \right)
```
9 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      1 \\
      0 \\
      -1 \\
      0 \\
      -1 \\
      0 \\
      -1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      -1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -1 
    \end{array}
  \right)
```
10 (X X X)
```math
  \left(
    \begin{array}{cccccccc}
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      -1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -1 \\
      1 
    \end{array}
  \right)
```
11 (H H H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\
      1 & -1 & -1 & -1 & 1 & -1 & -1 & 1 \\
      1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\
      1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\
      1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\
      1 & -1 & -1 & 1 & -1 & 1 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -1 \\
      1 
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      1 \\
      -1 \\
      -3 
    \end{array}
  \right)
```

##### 【図１０】の量子回路Ｃを回路上の番号に沿って計算しました。
データの並び方
q2 q1 q0
0  0  0
1  0  0
0  1  0
1  1  0
0  0  1
1  0  1
0  1  1
1  1  1

1 (H H I)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
      0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\
      1 & 0 & -1 & 0 & 1 & 0 & -1 & 0 \\
      0 & 1 & 0 & -1 & 0 & 1 & 0 & -1 \\
      1 & 0 & 1 & 0 & -1 & 0 & -1 & 0 \\
      0 & 1 & 0 & 1 & 0 & -1 & 0 & -1 \\
      1 & 0 & -1 & 0 & -1 & 0 & 1 & 0 \\
      0 & 1 & 0 & -1 & 0 & -1 & 0 & 1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0
    \end{array}
  \right)
```
2 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1
    \end{array}
  \right)
```
3 (C C X)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1
    \end{array}
  \right)
```
4 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1 \\
      1
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0
    \end{array}
  \right)
```
5 (H H H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\
      1 & -1 & -1 & -1 & 1 & -1 & -1 & 1 \\
      1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\
      1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\
      1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\
      1 & -1 & -1 & 1 & -1 & 1 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0 \\
      1 \\
      0
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      1 \\
      1 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0
    \end{array}
  \right)
```
6 (X X X)
```math
  \left(
    \begin{array}{cccccccc}
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      1 \\
      1 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1 \\
      1
    \end{array}
  \right)
```
7 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1 \\
      1
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1 \\
      0
    \end{array}
  \right)
```
8 (C C X)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1 \\
      0
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1
    \end{array}
  \right)
```
9 (I I H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & -1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & -1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & -1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1 \\
      -1
    \end{array}
  \right)
```
10 (X X X)
```math
  \left(
    \begin{array}{cccccccc}
      0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\
      0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\
      0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\
      0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
      0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\
      0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
      0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
      1 & 0 & 0 & 0 & 0 & 0 & 0 & 0
    \end{array}
  \right)
  \left(\begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      1 \\
      -1
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      -1 \\
      1 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0
    \end{array}
  \right)
```
11 (H H H)
```math
  \left(
    \begin{array}{cccccccc}
      1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
      1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\
      1 & 1 & -1 & -1 & 1 & 1 & -1 & -1 \\
      1 & -1 & -1 & -1 & 1 & -1 & -1 & 1 \\
      1 & 1 & 1 & 1 & -1 & -1 & -1 & -1 \\
      1 & -1 & 1 & -1 & -1 & 1 & -1 & 1 \\
      1 & 1 & -1 & -1 & -1 & -1 & 1 & 1 \\
      1 & -1 & -1 & 1 & -1 & 1 & 1 & -1
    \end{array}
  \right)
  \left(\begin{array}{c}
      -1 \\
      1 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      0
    \end{array}
  \right)
 = 
   \left(\begin{array}{c}
      0 \\
      -1 \\
      0 \\
      -1 \\
      0 \\
      -1 \\
      0 \\
      -1
    \end{array}
  \right)
```


##### 【図１０】の量子回路ＢをQiskitを使って確認しました。
```python
c = QuantumCircuit(3,3)

c.h(0)
c.h(1)
c.x(2)

c.h(2)
c.ccx(0,1,2)
c.h(2)

c.h(0)
c.h(1)
c.h(2)

c.x(0)
c.x(1)
c.x(2)

c.h(2)
c.ccx(0,1,2)
c.h(2)

c.x(0)
c.x(1)
c.x(2)

c.h(0)
c.h(1)
c.h(2)

#  000       001       010       011       100       101       110       111 (q2,q1,q0)
#[-0.25+0.j -0.25+0.j -0.25+0.j -0.25+0.j  0.25-0.j  0.25-0.j  0.25-0.j -0.75+0.j]
```


##### 【図１０】の量子回路ＣをQiskitを使って確認しました。
```python
c = QuantumCircuit(3,3)

c.h(0)
c.h(1)

c.h(2)
c.ccx(0,1,2)
c.h(2)

c.h(0)
c.h(1)
c.h(2)

c.x(0)
c.x(1)
c.x(2)

c.h(2)
c.ccx(0,1,2)
c.h(2)

c.x(0)
c.x(1)
c.x(2)

c.h(0)
c.h(1)
c.h(2)

#  000      001      010      011      100      101      110      111 (q2,q1,q0)
#[ 0.+0.j   0.-0.j   0.-0.j   0.-0.j  -0.5+0.j -0.5+0.j -0.5+0.j -0.5+0.j]