概 要
前部の第 9 部で量子論情報論、観測問題の理論的な側面をみてきた。2020 年の現在、量子的な重ね合わせの原理から量子コンピューターの実機が稼働するようになった。デバイスではまだ、課題が多いがソフトウェ
アとして量子論を扱えるものが増えてきている。Python グループの qutip や Microsoft の Q#などがある。
機械学習が AI の進歩が激しく Mathematica や MatLAB なども量子情報を扱うことができるようになってきている。
その中でも IBM の Qisikit は一般端末の PC からクラウドを経由して実機にアクセスできるようになった。今後急速に進歩していくことも予想される。そこで本部では量子論の理論的な課題は第 9 部で考察するとし、とりあえず確率解釈を含む量子原理を認めて、その応用として量子コンピュータを扱う。
本部では本部は未完成部分が多く、今後加筆修正する予定である。参考文献を見て学習に役立ててほしい。

量子コンピューター

1

第 9 部で見たように量子論は観測の問題や相対論との関係など多くの課題を持つが、確率密度の流れとして、解釈し、多くの疑問はとりあえず保留しておいて、現実的な結果を利用していくことで発展してきた分野
が量子コンピューターである。
古典的なスーパーコンピューターより、複雑な問題ほど早く結果を出せる可能性があり、近年では IBM や

Google 等でその結果が実際に実験できるようになってきた。さらに注目すべきはこれらを扱うソフトウエアはMathematica や Python などで個人的にシミュレーションできる環境が充実してきたことである。ここでも主目的からそれるようではあるが、応用例をいくつかみて、逆にそこから理論へのフィードバックを見いだし、主目的にせまれるか考察してみたい。まず、量子コンピュータの基礎をしっかりと学ぶ。

1.1

古典的計算機コンピューターは input と output の関係からできている。古典的な関係を復習しておく。
実際には次のようなトランジスタ MOSFET を利用する。

図 1.1: n 型 MOSFET

n 型半導体がソース S とドレイン D にあり、ゲート G には導体がある。
従って DS 間の電流は GS 間の電圧がある閾値を超えた時のみ流れる。
通常は VDS = 5.0V で VGS = 0.2VDS である。

1.1.1

NOT 回路NOT 回路をこのトランジスタで組むと次のようになる。|0⟩ は電圧が LOW、|1⟩ は HIGH とする。
この例ではあらかじめ VDS は HIGH にしておく。
入力に VGS をあてたので、これが HIGH になると IDS が流れる。従って出力は LOW である。
逆に VGS が LOW であれば IDS は流れない。従って出力は HIGH である。

1

図 1.2: NOT 回路
これは 1 ビットのフリップとみることができる。すなわち|0⟩ → |1⟩

|1⟩ → |0⟩
となる。

1.1.2

OR 回路

これは 2 ビットから 1 ビットを次のように出力する。すなわち |1⟩ が含まれていれば |1⟩ を出力する。

|0⟩ |0⟩ → |0⟩|0⟩ |1⟩ → |1⟩|1⟩ |0⟩ → |1⟩|1⟩ |1⟩ → |1⟩
となる。

1.1.3

NOR 回路OR の否定をとれば NOR である。これについてトランジスタ回路で表してみよう。
入力を ai , bi 、出力を cf とする。この場合はトランジスタを 2 つ並列に利用する。
下図のように ai , bi のどちらかが HIGH であれば IDS が流れるので出力 cf は LOW である。

ai , bi のどちらも LOW の時のみ電流 IDS は流れないので cf は HIGH になる。これを真理値表で表すと下のようになる。
これに NOT 回路を組み合わせれば OR 回路ができる。

2

図 1.3: NOR 回路

ai

bi

cf

0

0

1

0

1

0

1

0

0

1

1

0
表 1: NOR 回路の真理値表

1.1.4

AND 回路これも 2 ビットから 1 ビットを次のように出力する。かけ算を表している。

|0⟩ |0⟩ → |0⟩|0⟩ |1⟩ → |0⟩|1⟩ |0⟩ → |0⟩|1⟩ |1⟩ → |1⟩となる。

図 1.4: 古典的論理ゲート

3

NAND 回路

1.1.5

AND を否定した、この例もトランジスタを使って表してみよう。こんどは 2 つのトランジスタを直列に利用する。
下図のように ai , bi のどちらかが LOW であれば IDS が流れないので出力 cf は HIGH である。

ai , bi のどちらも HIGH の時のみ電流 IDS は流れるので cf は LOW になる。これを真理値表で表すと下のようになる。

図 1.5: NAND 回路

ai

bi

cf

0

0

1

0

1

1

1

0

1

1

1

0
表 2: NAND 回路の真理値表

1.1.6

XOR 回路これも 2 ビットから 1 ビットを次のように出力する。異なった積になっているときのみ |1⟩ を出力する。

|0⟩ |0⟩ → |0⟩|0⟩ |1⟩ → |1⟩|1⟩ |0⟩ → |1⟩|1⟩ |1⟩ → |0⟩となる。この回路は後に重要な役割を果たす。
回路記号では次のように書く。

4

図 1.6: [131] より：XOR 回路
さらに 3 ビットの入力回路を 1 ビット |0⟩ に固定すると、次の図のようになる。

× は NOT が入ることをあらわす。
例えば 1 行目は 00 で 0 になるが反転して 1 と 0 で 10 の AND で 0 になる。
2 行目は同じく 00 で 0 になるが反転して 1 と 1 で 11 の AND で 1 になる。
3 行目は 10 で 0 になるが反転して 1 と 0 の AND で 0 になる。
4 行目では 10 で 0 になり、反転して 1 と 1 の AND で 1 になる。

図 1.7: [98] より：AND と NO があればあと 1 つビットを足し、全ての出力が作れる

1.1.7

全加算器と半加算器

論理演算で和をとるとき、桁上げを設けないものが半加算器で、桁上げのための bit を追加したものが全加算器である。
次に回路記号と真理表を示す。

5

図 1.8: 半加算器と全加算器

1.2

量子計算機 [98]1.2.1

ユニタリー演算子と複製 [124]古典情報でればデジタル的に複製をすることができる。では量子状態を複製することを考えよう。
そこで制御量子ビット (controlled qubit) を量子ビット C とし、
標的量子ビット (target_quibit) を T とする。
そこでこれらの合成として次のユニタリー演算子を考える。ただしテンソル積 ⊗ は省略する。

Û (CN OT ) = |0⟩C ⟨0|C (|0⟩T ⟨0|T + |1⟩T ⟨1|T ) + |1⟩C ⟨1|C (|1⟩T ⟨0|T + |0⟩T ⟨1|T )
これは |0⟩ ⟨0| や |1⟩ ⟨1| が射影演算子であったので |0⟩C ⟨0|C や |1⟩C ⟨1|C は C のヒルベルト空間に射影演算子を作用させ、T のヒルベルト空間には |1⟩T ⟨0|T や |0⟩T ⟨1|T の単位演算子が作用する。
P̂C = |0⟩C ⟨0|C + |1⟩C ⟨1|C

IˆT = |1⟩T ⟨0|T + |0⟩T ⟨1|T
C の添え字と T の添え字間は交換する。
この Û (CN OT ) を実装しているデバイスは量子制御ノットゲート (Quantum Not gate) と呼ばれ、量子計算機 (Quantum computation) の基礎的な素子となっている。
例えば標的ビットの始状態を |0⟩T とし、制御ビットの始状態を互いに直交している |0⟩C か |1⟩C のどちらかにとる。
これに Û (CN OT ) を作用させるとÛ (CN OT ) |0⟩C |0⟩T = |0⟩C |0⟩T
Û (CN OT ) |1⟩C |0⟩T = |1⟩C |1⟩T
これで見るように C については保存されて、T の終状態は C の状態と一致する。
これを制御ビットにある古典的な情報を標的ビットに複製したとみる。

6ただし、これはビット対が増えると指数関数的に合成ユニタリ演算子が必要になる。

(

Û (CN OT ))⊗N

この演算子を扱えるコンピューターができれば、次のように確定的古典情報に対応する N 量子ビット列の複製機をつくることができる。

(

Û (CN OT ))⊗N(|b1 ⟩ C1 |b2 ⟩ C2 · · · |bN ⟩ CN ) (|0⟩ T 1 |0⟩ T 2 · · · |0⟩ TN )= (|b1 ⟩ C1 |b2 ⟩ C2 · · · |bN ⟩ CN ) (|b1 ⟩ T 1 |b2 ⟩ CT 2 · · · |bN ⟩ CTN )これは標的ビット状態 |0⟩ T 1 |0⟩ T 2 · · · |0⟩ TN が複製機により、2 つの同じ古典ビット列が出力されたことを表している。
しかし、後で示すように、この制御 NOT ゲートに量子的な重ね合わせ|ψ⟩C = α |0⟩C + β |1⟩Cをいれても量子複製不可能定理が働くので()
Û (CN OT ) |ψ⟩C |0⟩T = α |0⟩C |0⟩T + β |1⟩C |1⟩T

(1.1)

となり、C 状態が保存され、T の終状態は C の状態に一致する。この時、

αβ |0⟩C |1⟩Tのような干渉項が出てこない。面白いｌことに重ね合わせになる量子状態は複製ができない。
これは量子力学の観測とユニタリー演算子との操作にある普遍的なことである。

1.2.2

量子複製禁止定理

一般化して量子複製禁止定理をみておく。複製の原本を |ψ⟩ に書き込んでおく。
この量子系を S として、複製をつくる量子系を S ′ とする。そして、コピー機として働くデバイスを含む補助量子系を D とする。
ただし、S と S ′ の次元は等しく、一方で D はいくらでも大きな次元を持てるとし、マクロな系でもよいとする。
この合成系をヒルベルト空間上に考えて、コピー操作を表す演算子をÛSS ′ Dとする。合成系 S ′ D の始状態 |0⟩S ′ D には |ψ⟩ は依存しないとする。
仮に複製を実現することを要求すると |ϕ⟩D を |ψ⟩ に依存してもよい D の純粋状態として

ÛSS ′ D |ψ⟩S |0⟩S ′ D = |ψ⟩S |ψ⟩S ′ |ϕ⟩Dという関係が満たされる必要がある。
ここで、直交しない、異なる 2 つの量子状態を |ψ1 ⟩ , |ψ2 ⟩ とする。この複製をつくるとÛSS ′ D |ψ1 ⟩S |0⟩S ′ D = |ψ1 ⟩S |ψ1 ⟩S ′ |ϕ1 ⟩D(1.2)

ÛSS ′ D |ψ2 ⟩S |0⟩S ′ D = |ψ2 ⟩S |ψ2 ⟩S ′ |ϕ2 ⟩D

(1.3)

7

が成り立つことになるが、ÛSS ′ D はユニタリだから†Iˆ = ÛSS′ D ÛSS ′ D

が成り立つ。よって |0⟩S ′ D |ψ2 ⟩ = |ψ2 ⟩ |0⟩S ′ D だから†⟨ψ1 |S ⟨0|S ′ D ÛSS
′ D ÛSS ′ D |0⟩S ′ D |ψ2 ⟩ = ⟨ψ1 |ψ2 ⟩= ⟨ψ1 |ψ2 ⟩が得られるが、一方で 1.2,1.3 より†⟨ψ1 |S ⟨0|S ′ D ÛSS
′ D ÛSS ′ D |ψ2 ⟩ |0⟩S ′ D = (⟨ϕ1 |D ⟨ψ1 |S ′ ⟨ψ1 |S ) (|ψ2 ⟩S |ψ2 ⟩S ′ |ϕ2 ⟩D )2

= ⟨ψ1 |ψ2 ⟩ ⟨ϕ1 |ϕ2 ⟩と表すこともできる。左辺が等しいとすると右辺も等しくなり、
2⟨ψ1 |ψ2 ⟩ = ⟨ψ1 |ψ2 ⟩ ⟨ϕ1 |ϕ2 ⟩となる。両辺を 2 乗すると
2

42

⟨ψ1 |ψ2 ⟩ = ⟨ψ1 |ψ2 ⟩ ⟨ϕ1 |ϕ2 ⟩
となるので
2

2

|⟨ψ1 |ψ2 ⟩| |⟨ϕ1 |ϕ2 ⟩| = 1となる。これは量子測定で ψ1 =
̸ ψ2 の時に状態の一致はあり得ないという仮定
2|⟨ψ1 |ψ2 ⟩| < 1を用いると
2|⟨ϕ1 |ϕ2 ⟩| > 1となってしまうので矛盾をきたす。
例えば素粒子の散乱で結合定数 g を測定し、決まった粒子の散乱における g を確定する実験をしたとしよう。
量子複製ができるということは 1 回の実験で得たデータからいくつかの g を複製で得て、決定することと、実験を複数回繰り返して、g を決定することが同じになってしまう。
この考察の結果、そのようなことがおこらないということで、実験をごまかせない。

1.2.3

混合状態の複製禁止定理

重要なのは混合状態の場合への拡張である。原本である S の任意の密度行列を ρ̂ とする。コピーが作られ′

る S 側の始状態は ρ̂ に依存しない、ω̂ とする。この混合系の始状態はρ̂S ⊗ ω̂S ′で表す。この状態から ρ̂ に依存しない量子操作をしたとして、ρ̂S ⊗ ω̂S ′ → ρ̂S ⊗ ρ̂S ′という状態になったとすると、混合状態にコピー機能が存在したことになる。
これは少し、条件を緩和して、複製を定義すると操作後の状態が S と S ′ の直積状態 ρ̂S ⊗ ρ̂S ′ にならなく、Ω̂SS ′ になったとするとしても、対角和ρ̂S = TrS [Ω̂SS ′ ], ρ̂S ′ = TrS ′ [Ω̂SS ′ ]
8

(1.4)

が成り立てば密度行列が複製されたことと実質的に同じである。
つまり、S と S ′ が離れた場所にあって Ω̂SS ′ に対して、S と S ′ の書く領域内の局所的な操作しかできないとすると、Ω̂SS ′ と ρ̂S ⊗ ρ̂S ′ は原理的に区別できない。
従って、式 1.4 で表される操作は操作後に直積状態 ρ̂S ⊗ ρ̂S ′ にならなく、Ω̂SS ′ になり、
これは広域的にS → S′の複製がされているので、これを量子ブロードキャスティング (quantum broadcasting) という。ただし、Ω̂SS ′ = ρ̂S ⊗ ρ̂S ′となる場合も特殊例として含むとする。
重要なのは非可換な 2 つの混合状態を送る量子ブロードキャスティングは不可能であることである。
これは任意の密度演算子の完全な複製はできないことを示す複製禁止定理でもある。
では近似的にはどうかという問題がある。次に示すように、近似的には複製できるのである。
そこで次の物理操作を考えよう。

ρ̂S ⊗ ω̂S ′ → Ω̂SS ′この状態変化において、対環境が入れ替わるので対角和の S → S ′ としてρ̂′S = TrS ′ [Ω̂′ SS ′ ], ρ̂S ′ = TrS [Ω̂SS ′ ]これから同じ ρ̂′ を作ることはできるが、同じ原本 ρ̂ を入力して得られる ρ̂′ は

ρ̂ ̸= ρ̂′となり、必ずずれる。そこでこの時の複製忠実度 F をρ̂ = |ψ⟩ ⟨ψ|F = ⟨ψ| ρ̂′ |ψ⟩として定義する。

ρ̂ = ρ̂′ の時のみ
F = ⟨ψ| ρ̂′ |ψ⟩ = ⟨ψ|ψ⟩ ⟨ψ|ψ⟩ = 1
をとるが、後に示すように近似複製をすると

F ≤

2
3

となる。

1.2.4

ゲートモデル

量子的な演算がユニタリ行列で表されることを見たので、計算機を考える時に大切なのは、はじめをどうするかである。
いつでも初期状態をつくれないと利用価値が下がる。そのためにいつでも全てのビットを|0⟩にして、これにユニタリ変換 U を施し、測定結果を得る次の図のモデルが基本になる。

9

図 1.9: [128] より：量子コンピューター
しかし、これだと巨大なユニタリー行列ができてしまうので現実的ではない。そこでユニタリー変換を

1 つの量子ビットと、2 つの量子ビットのエンタングルメントの状態で 2 量子ビットの量子ゲートを定義して 1 つの単位にしてしまう方法が考えられた。このメリットは 1 量子ビットの量子操作と、制御ビットとなる

2 量子ビットの量子操作で、どんな複雑な計算もこなせることになる。特に有限個のゲートで任意の量子計算ができるようなものに現在次のようなものが見つかっている。
詳しくは次節でみるがこれらはユニバーサルゲート集合 (universal_gete_set) と呼ばれる。

• 1 量子ビットとエンタングルド (2 量子ビット）• Hadamard ゲート、フェーズゲート、π/8 ゲートと CNOT ゲート• Toﬀoi ゲート (3 量子ビットゲート) と Hadamard ゲート
次に巨大なユニタリー変換を分解する例として量子アルゴリズムが必要になる。
例えば素因数分解を高速にする Shor のアルゴリズムの例が次の表になる。

図 1.10: [128] より：量子計算回路の例

1.2.5

量子誤り訂正古典的なコンピュータでも 1 ビットの情報を正確に保持していくかを判断するためにいくつかの情報を付加してセットにするロジカルビットという処理をさせることがある。この量子版を考えておこう。
ここには量子論独特の方法が必要になる。なぜなら、量子的な情報は直接観測できない。前章で見たきたよ
うにこれをするとその情報が壊れてしまうのである。

10

そこで次の図のように、射影空間でその成分変化を見ようというわけである。本来のベクトル |ψ⟩ が誤りを含み |ψ ′ ⟩ にわずかに変化したとする。
量子情報を表すベクトルがヒルベルト空間でユニタリ変換により回転したので、本来あるべき状態がわかっていれば

1 − |⟨ψ ′ |ψ⟩|2の確率で間違った状態へ変化する。これは状態の中身を見ないで得られるので、この測定を誤り兆候測定 (error_syndorome_mesurement) という。

図 1.11: [128] より：状態ベクトルの誤り成分による回転
この補正をして、1 量子ビットを守るには最低でも回転と並進の自由度分の 5 量子ビットが必要になる。
ここでは単純化して、1 つの方向成分のみを扱うことにする。

|ψ⟩ = α |0⟩ + β |1⟩とすると状態ベクトルの変化 |0⟩ → |1⟩ の回転を σx 、位相の回転を σy が担うとし、ここでは σx の方向のずれのみを直すことを考えよう。これは古典的な Hamming 符号と同じで次のように 3 つの量子ビットを用いる。

α |0⟩ + β |1⟩ → α |000⟩ + β |111⟩
これは次の図のように制御 NOT と呼ばれる方法と同じなる。

図 1.12: [128] より：3 量子ビットの誤り訂正
まず、1 つめの量子ビットがずれた場合を見ていく。σx によるずれは x 軸の回転であるから、この回転角を

θ1 とすると
α |0⟩ + β |1⟩ → cos θ1 (α |0⟩ + β |1⟩) + i sin θ1 (α |1⟩ + β |0⟩)11

先の回転図のように回転したので y 成分にはじめには見えていない直交成分が見えてくることに留意する。
これを 1 番目の量子ビットにあてはめると

α |000⟩ + β |111⟩ → cos θ1 (α |000⟩ + β |111⟩) + i sin θ1 (α |100⟩ + β |011⟩)(1.5)

次に 2 番目の量子ビットに回転 θ2 のずれを生じさせると

α |000⟩ + β |111⟩ → cos θ1 cos θ2 (α |000⟩ + β |111⟩)+ i cos θ1 sin θ2 (α |010⟩ + β |101⟩)+ i sin θ1 cos θ2 (α |100⟩ + β |011⟩)+ i sin θ1 sin θ2 (α |110⟩ + β |001⟩)(1.6)となり、これは 1 行目が正しい状態、2，3 行目が 1 つのビットが反転した誤りの状態、4 行目は 2 つのビットが反転した誤りの状態を表している。
よって式 1.5 の第 2 項以後の大きさをとれば、これが、誤りベクトル成分の大きさになる。これを pe とす
ると
2|pe | = |i sin θ1 |

2である。
同様にして 3 つめのビットにも同じことをすると式 1.6 の第 1 項に対応する正しい状態の成分がcos θ1 cos θ2 cos θ3となる。量子ビットの誤りは反転することに等しいので、まとめると次のようになる。

1．正しい状態：
α |000⟩ + β |111⟩
2．量子ビット 1 つが反転した状態：確率は pe
α |100⟩ + β |011⟩
α |010⟩ + β |101⟩
α |001⟩ + β |110⟩
3．量子ビット 2 つが反転した状態：確率は p2e
α |110⟩ + β |001⟩
α |101⟩ + β |010⟩
α |011⟩ + β |100⟩
4．量子ビット 2 つが反転した状態：確率は p3e
α |111⟩ + β |000⟩
誤り確率 pe が小さければ p2e , p3e は無視できる。

12

1.2.6

パリティチェック

古典的に信号の正誤チェックをパリティで行うことがよく用いられたのでここでもそれを利用する。
ここでは pe と p2e が区別できる測定をしたとして、次の図のように 1,2 番目の量子ビットと、2,3 番目の量子ビットのパリティを測定することを考える。状態を符号化して、A のパリティを測るために付属量子ビット(ancilla_qubit) を 1 つ初期状態に用意する。このビットのみを注目して、パリティを測る。

図 1.13: [128] より：量子ビットのパリティ
量子計算機をつくろうとすると、状態を反転させる N OT 演算子がユニタリー性によく合う。
そこで制御 NOT(controlled-Not_gate) をが古典計算機の XOR に対応した 2 キュービットゲートで次のよ
うに定義する。
これは 1 であれば付属量子ビットを反転する。CN OTn の添え字 n でペアになっている 1，2 番目に作用させるとしてパリティが偶の場合(α |00⟩ + β |11⟩) |0⟩ CN OT1 α |00⟩ |0⟩ + β |11⟩ |1⟩ CN OT2 (α |00⟩ + β |11⟩) |0⟩−−−−−−−→−−−−−−−→(1.7)

1 回目で量子ビットに CNOT を作用させて、第 2 項の付属量子ビットは |0⟩ → |1⟩ に反転するが、2 回目の量子ビットに CNOT を作用させた時に第 2 項の付属量子ビットは |1⟩ → |0⟩ で元に戻る。
パリティが奇の場合(α |10⟩ + β |01⟩) |0⟩ CN OT1 α |10⟩ |1⟩ + β |01⟩ |0⟩ CN OT2 (α |10⟩ + β |01⟩) |1⟩−−−−−−−→−−−−−−−→(1.8)

1 回目で量子ビットに CNOT を作用させて、第 1 項の付属量子ビットは |0⟩ → |1⟩ に反転し、2 回目の量子ビットに CNOT を作用させた時に第 2 項の付属量子ビットも |0⟩ → |1⟩ に反転する。
よって付属ビットを見て、測定結果が 0 であれば偶パリティ、1 であれば奇パリティとなる。
これを 1 番目だけでなく 2，3 番目にも施すとパリティが 2 つなので全部で 4 つの測定パターンが、付属ビットに対して次のように出てくる。

0, 0 → α |000⟩ + β |111⟩
1, 0 → α |100⟩ + β |011⟩
1, 1 → α |010⟩ + β |101⟩
0, 1 → α |001⟩ + β |110⟩
つまり、4 つの状態がパリティチェックで区別できる。付属量子ビットの測定結果が 0,1 であれば、上式の 4行目のように3 番目の量子ビットに反転操作であるビットフリップゲートをかけて誤りが訂正できる。
同様に結果が 1,1 であれば 2 番目、1,0 であれば 1 番目をビットフリップすれば訂正ができる便利な方法である。

13

これを次の図で表す。これは量子回路と呼ばれ、ゲートがつきた時に終了になるとする。
量子回路は時間の流れを左から右とする。

図 1.14: パリティチェックの量子回路
このように 2 進法のビットで補正をするときにはビットフリップの単純操作になるので便利である。
ただし、はじめに指摘したように、さらにもう一つの向きである位相方向のエラーをここでは考えなかった。
これもビット操作として位相フリップエラーと呼ばれるエラーに対して補正をすればよい。
これは σx の固有状態である |+⟩ , |−⟩ を反転させるエラーと考えて同じように扱うことができ、これらはShor の誤り符号補正として知られている。

1.2.7

量子制御

前節の内容を一般的にして、より複雑な量子回路を扱えるために次のように改めて定義する。
次の図にあるように 2 つの入力ビットのうち 1 方を制御ビット (control_bit)、
他方を標的ビット (target_bit) という。
制御ビットには • がつけられている。図左から入力され、図右に出力される。
このような図を量子回路図という。
時間の流れは左から右向きで、縦の線がビット数に対応する。

図 1.15: [98] より：制御 NOT ゲート

14

制御ビットが |0⟩ の時には標的ビットに遷移はおこらない。制御ビットが |1⟩ の時には NOT ゲートとして働く。
これは制御ビット、標的ビットを |a⟩ , |b⟩ の時に標的ビットに|a + b mod 2⟩(1.9)

が現れる。従って古典計算機の XOR に対応する。
これが重要なのはこの制御 NOT と 1 ビットのユニタリー変換の組み合わせで全てのユニタリー変換が実行できることである。
この詳しい証明は後節で見る。
図の横線が古典チューリングマシンの１マスに相当し、量子では |0⟩ と |1⟩ の重ね合わせで qubit を表す。
縦線はゲートと呼ばれ、qbit 間の相互作用を表す。ゲートを通過すると何らかのユニタリー変換を qbit が受けることになる。
従って次のような 1 つ飛びの制御 NOT ゲートは複数の制御 NOT ゲートの組み合わせと同等である。

図 1.16: [98] より：1 つ飛びの制御 NOT ゲート
右の回路では左から右に読むのではじめに制御 NOT を作り、3 番目の bit にコピーする。
次に 2 番目を制御 NOT で元に戻す。
改めて、2 番目と 3 番目で制御 NOT をつくる。
制御ビットと標的ビットのテンソル積を次で表す。

|0⟩ |0⟩ →t (1000)|0⟩ |1⟩ →t (0100)|1⟩ |0⟩ →t (0010)|1⟩ |1⟩ →t (0001)(1.10)

ここでは基底ベクトルのように考えればよい。
制御ビットが |0⟩ の場合を行列の 1,2 行、1,2 列で表し、制御ビットが |1⟩ の場合を行列の 3,4 行、3,4 列で表すと制御 NOT を表す行列を A は次を満たす。



1 0


 0 1
A=
 0 0

0 0
15

0
0
0
1

0




0 

1 

0

つまり対角の 2 × 2 の部分行列は制御ビット |0⟩ に対応し、単位行列になるが、下部分の 2 × 2 の部分行列は反転の行列になる。
この行列が可逆になることに留意する。
制御ビットと標的ビットを |0⟩ に作用させた場合の式|a⟩ |b⟩ |0⟩ → |a⟩ |b⟩ |a + b mod 2⟩(1.11)

これを量子回路で書くと次のようになる。

図 1.17: [98] より：|a + b mod 2⟩ をつくる回路
具体的に

1.2.8

|0⟩ |0⟩ |0⟩ → |0⟩ |0⟩ |0 + 0

mod 2⟩ = |0⟩ |0⟩ |0⟩|0⟩ |1⟩ |0⟩ → |0⟩ |1⟩ |0 + 1

mod 2⟩ = |0⟩ |0⟩ |1⟩|1⟩ |0⟩ |0⟩ → |1⟩ |0⟩ |1 + 0

mod 2⟩ = |1⟩ |0⟩ |1⟩|1⟩ |1⟩ |0⟩ → |1⟩ |1⟩ |1 + 1

mod 2⟩ = |1⟩ |0⟩ |0⟩

量子複製不可能定理

量子情報は観測の原理から極めて特徴のある量子複製不可能定理 (no_cloning_thorem) がある。
前節の制御 NOT は古典的にはターゲットを |0⟩ に固定した時、制御ビットが |0⟩ であれば出力は標的ビットが |0⟩ になり、制御ビットが |1⟩ であれば出力は標的ビットが |1⟩ になる。これは 1 つのコピーと考えることとができる。

図 1.18: [98] より：制御 NOT によるコピー
しかし、重ね合わせの状態をコピーすることができない。
背理法で証明する。
コピーができるとすると独立な |a⟩ , |b⟩ について制御ビットを標準ビットへコピーする作用 C を

C |a⟩ |0⟩ = |a⟩ |a⟩16

C |b⟩ |0⟩ = |b⟩ |b⟩とする。これを重ね合わせに適応すると α ̸= 0, β ̸= 0 として

C (α |a⟩ + β |b⟩) |0⟩ = α |a⟩ |a⟩ + β |b⟩ |b⟩となるが α |a⟩ + β |b⟩ の複製は

(α |a⟩ + β |b⟩) (α |a⟩ + β |b⟩) = α2 |a⟩ |a⟩ + β 2 |b⟩ |b⟩ + αβ |a⟩ |b⟩ + βα |b⟩ |a⟩となるべきで、これはα = 1, β = 0 or α = 0, β = 1の場合でしか成立しない。この場合ははじめに重ね合わせに状態にあることに矛盾している。

1.2.9

量子チューリングマシン

量子計算は任意の SU(2) 行列 U に対して制御 NOT が 2 個と 1qbit の 3 個のユニタリー行列 A, B, C を持ってくれば下図にあるような一般的な制御-U ゲートを作ることができる。
これは制御ビットが |1⟩ の時のみに標的ビットが変換を受ける量子論理ゲートである。

図 1.19: [98] より：U ゲートと制御 U ゲート
ただし、NOT ゲートは |0⟩ , |1⟩ の基底ではパウリ行列
(
)
0 1
X=
1 0
であり、

ABC = 1AXBXC = Uとなるように選ぶ。すると U は次のように z 軸、y 軸、z 軸での連続回転に対応しU = Rz (α)Ry (β)Rz (γ)

17とえらび、例えば(
A = Rz

α−γ
2

)

)
(
)
(
α+γ
β
Ry −
B = Rz −22( )β
C = RyRz (γ)
2と選べばよい。

1 ビットのユニタリー変換と 2 ビットの CNOT で任意のユニタリー変換をつくることができる。
これから量子万能コンピューター（チューリングマシン）ができあがる。
次節で詳しく見る。

1.2.10基本回路 [131]はじめに、今後利用する量子回路素子が文献 [130] でまとめられているので引用する。

図 1.20: [130] より：回路記号 1
回路記号と行列表示の続き

18図 1.21: [130] より：回路記号 21.2.11qubit[130]

前章の式から改めて量子情報の基本単位になる qubit と呼ばれる 1 ビットの量子的な重ね合わせを|ψ⟩ = α |0⟩ + β |1⟩で定義する。基底ベクトルは直交しているとする。大きさは 1 として
2

2|α| + |β| = 1
であるとする。
例えば、次のような qbit の状態が考えられる。

11√ |0⟩ + √ |1⟩
2
2
この場合は 0 または 1 が得られる確率が共に 50%になる。
具体的には次の図のように 2 状態の原子モデルで基底状態と励起状態がそれぞれ |0⟩ と |1⟩ に対応する。

19

図 1.22: [130] より:2 準位状態のある原子
このベクトルの大きさは 1 であるが、次の図のように 3 次元空間では回転の 2 つの自由度がある。
一般には次のように位相項をかけて表すことができる。
(
)
θ
θ
iγ
iϕ
|ψ⟩ = ecos |0⟩ + e sin |1⟩2
2
だだし、後節で議論するが大局的にかかる位相 γ は観測値に影響を与えないのでここでは無視する。
または常に

γ=0
を選択していると考えてよい。
従って次のように状態ベクトルを表すことができる。

|ψ⟩ cosθθ|0⟩ + eiϕ sin |1⟩22

このような重ね合わせの状態は SuperPosition と呼ばれる。
これを表したのが前章でも扱った下図のブロッホ球である。

図 1.23: [130] より:ブロッホ球
この |1⟩ , |0⟩ の重ね合わせを表すベクトルは qubit と呼ばれ、ブロッホ球の表面に無限につくることができる。
しかし、前章でみたようにいったん観測が行われると 1 か 0 しかとらない。前章で議論したように、観測により情報を失う。
つまり、位相情報は消えてスカラー値を実軸上に得るわけである。
ただし、図の |0⟩ と |1⟩ は π 離れて直交している。

|0⟩ ̸= − |1⟩のように結ばれないので注意する。

20

基本ゲート [130]1.3

基本的に量子ゲートは入力状態に時間の進行に伴う演算子を作用して出力状態を得ることである。
従って、量子コンピューターでも今のところ時間の進みは順方向のみを考える。

∆E · ∆t ≥ ℏが効いてくるような短い時間は考えない。
これまでみてきたように 1bit は

(
|0⟩ =
(
|1⟩ =

1
0
0

)
)

1

から重ね合わせ|ψ⟩ = α |0⟩ + β |1⟩を基本として、α, β は複素数とする。

1.3.1

位相ゲート

例えば状態ベクトルの時間変化をユニタリ演算子(⟨0| U |0⟩U≡
⟨1| U |0⟩⟨0| U |1⟩)

⟨1| U |1⟩を用いて一般に|ψ⟩IN = U |ψ⟩OU Tのようにかける。
これからU |ψ⟩ = (⟨0| U |0⟩ α + ⟨0| U |1⟩ β) |0⟩ + (⟨1| U |0⟩ α + ⟨1| U |1⟩ β) |1⟩のように展開ができる。以前用いた(
U = |0⟩ ⟨0| + e |1⟩ ⟨1| =iϕとすると、これは次のように作用した。
(

U |0⟩ =(
U |1⟩ =

1

0

0

eiϕ

1

0

0

eiϕ

)(

)(

)

1

0

eiϕ

(

)

1

0

=

0
0

1

1

)
= |0⟩

0
(

iϕ

=e

0
1

)

)
= eiϕ |1⟩

これからそれぞれの固有値が 1, eiϕ であることがわかる。さらにこのユニタリ演算子 U は状態ベクトルの位相をグローバルに変化させる。例えば

1|+⟩ = √ (|0⟩ + |1⟩)
2

21

を考え、これに U を作用させると

(
U

(
)
)
)
1
1
1 (
1
√ (|0⟩ + |1⟩) = √ |0⟩ + eiϕ |1⟩ = √
2
2
2
eiϕ

となる。
そこで次を位相ゲート (phase_gate) という。

(
U (ϕ) =

1.3.2

1

0

0

eiϕ

)
(1.12)NOT ゲート

さらにすでに登場しているものに否定ゲート (NOT_gate)()
0 1
UN OT =
1 0
これによって次のように状態は入れ替わる。

(
UN OT
恒等変換も 1 つの重要なゲートになる。

)

α

=

β
(

UI =

(

1

0

0

1

β

)

α
)

これらはユニタリである。

1.3.3

Z ゲート

ブロッホ球状でのユニタリ変換は他にもいくつかあり、
例えば Z ゲート (z_gate) として次を定義する。これはパウリ行列 σz である。
(
)
1 0
Z=
0 −1

(1.13)

これはブロッホ球上で、|0⟩ 成分は変えないで、|1⟩ 成分は反転させる。

1.3.4

ハダマールゲート

量子コンピューターで重要なのは重ね合わせをつくるハダマールゲート H である。
次の図のように y 軸回転を加えてハダマールゲート (Hadamard_gate) を次で定義する。
(
)
1 1
1
H=√
2
1 −1

22

(1.14)

図 1.24: [130] より:ブロッホ球状でのｙ軸回転とｚ軸反転でハダマールゲートをつくる
このゲートははじめの列で |0⟩ ベクトルを|0⟩ →|0⟩ + |1⟩√
2

として、|0⟩ と |1⟩ の間の状態をつくり、次に 2 番目の列で|1⟩ →|0⟩ − |1⟩
√
2

つまり、

図 1.25: [131] より:ハダマールゲートは和と差を作る
このハダマール演算子は

H2 = Iという関係があるので 2 回作用させると元にもどる。つまり、密度行列を同じような作用をする。

1.4

論理ゲート

3 つの基本ゲート X, Z, H はロジックゲート (logic_gate) と呼ばれ次の図のようになる。

図 1.26: [130] より:基本的な論理ゲート X,Z,H
例えばはじめに扱ったシュテルン・ゲルラッハの実験では次の図のように()()
1 1 3πi
1 1 3πi|0⟩ → HST H →− e 4 |0⟩ ++ e 4 |1⟩
2 2
2 2

23

となるので |0⟩ の期待値は 85.3%、|1⟩ は14.7%となる。

図 1.27: S. M. Blinder より：シュテルンゲルラッハの実験
そこで一般に単一 quibit の変換 U を表すことを考えると。実数 α, β, γ, δ の 4 つを使って次のような回転演
算子で表すことができる。α は大局的な位相変換で、γ は y 軸の任意の回転、β, δ はｚ軸の任意の回転である。
)(
)
(
)(
γ
γ
−iδ/2
−iβ/2
e
0
e
0
cos
−
sin
2
2
U = eiα
cos γ2
0
eiδ/2
0
eiβ/2
sin γ2
これは一般的に角運動量で扱ったスピン演算子で一般には次のようにパウリ行列で書くことができた
(
)
1 0
s
− i sin (α/2) σjDj (α) = cos (α/2)
0 −1
具体的に x, y, z 軸周りの回転は(Dxs (α) =cos α2−i sin α2−i sin α2

cos α2(Dys (α) =(Dzs (α) =cos α2− sin α2sin α2cos α2e−iα/2

0

0

eiα/2

)

)

)

これらから次が導ける。

Dys (π/2) σz Dys (π/2) = σx
Dys (π/2) σz = H
Dys (−π/2) σz = H

1.4.1

制御 NOT ゲート

前節でみた制御 NOT ゲート (CNOT ゲート) は入力 A, B, 出力を A′ , B ′ とすると

A′ = AB′ = A ⊕ B
24

となった。つまり、A′ については A がそのまま出力され、B ′ は A = 0 の時に B をそのまま、A = 1 の時に B̄ が出力される。

B ′ は XOR と同じである。回路記号と真理表は次のようになる。

図 1.28: [131] より CNOT ゲート
これらの回路記号と、CNOT の行列表示 UCN を次に示す。

CNOT はターゲットビットに XOR をつくる。
これから CNOT は一般化 XOR ゲート (general) とみなすことができる。

図 1.29: [130] より
確率を保存するために UCN はユニタリであることが確かめられる。
†
UCN
UCN = I

この CNOT の性質は後に重要な役割をする。
では他の論理回路を表す行列はユニタリになるだろうか()
0 1
UN OT =
1 0
とすると

(
†
UN
OT UN OT =

0

1

1

0

)(

0 1
1 0

)

(
=

1

0

0

1

となるが、XOR や NAND は古典的に表してしまうと逆がつくれない。

25)

たとえば XOR は|00⟩ → |0⟩|01⟩ → |1⟩|10⟩ → |1⟩|11⟩ → |0⟩となり、ビット数が消えてしまう。このような XOR は標準 (regular) とよぶ。
したがって、古典的な論理ゲートが qubit になれるためには、回転や反転といった演算ができないといけない。
これは量子回路が可逆である必要性を意味している。
つまり、前章でみたようにエトロピーが増大していく過程では干渉性の維持は難しい。

1.4.2

論理回路の量子化

次に複数の quibit を扱う。前節での古典回路と基本的には同じである。
特に古典的な NAND はユニバーサルゲートと呼ばれた。これに対し、XOR や NOT はユニバーサルではない。
つまり、入力する x, y が同じパリティをもっていれば式 1.7,1.8 のように同じパリティを返す。
では量子ゲートの場合はどうか、留意すべきはこれらは直積になることである。
つまり、1 ビットの場合次のように |qA ⟩ ⊗ |qB ⟩ は 2 × 2 の 4 元ベクトルになるはずである。
式 1.10 に対応して



1





0





0





0





 
 


 0 
 
 


 , |01⟩ =  1  , |10⟩ =  0  , |11⟩ =  0 |00⟩ = 
 0 
 0 
 1 
 0 


 
 


0
0
0
1

(1.15)のように縦ベクトルで構成しておかないといけない。
複合的な quibit となる論理 gate は前節でみた CNOTgate である。
このゲートはターゲットと制御の 2 つの入力ゲートをもつ。
次のように制御ビットが 1 であれば反転をするが、0 であれば何もしない。

U |00⟩ → |00⟩
U |01⟩ → |01⟩
U |10⟩ → |11⟩
U |11⟩ → |10⟩
後半 2 行が逆転しているのでこれまでも見てきたように 2 ビット CNOT は次のようにかけることがわかる。



1 0


 0 1
U =
 0 0


0

0 0

1

0
0

0




0 

1 

0

これは式 1.11 と同じで次のようにかくことができる。

|A, B⟩ → |A, B ⊕ A⟩

|A, B⟩ → |A, XOR(A, B)⟩
26(1.16)

一般に n 量子ビットは 2n 元のベクトルになる。
以下でいくつかの 2 ビットの場合の量子ゲート例を紹介する。

1.4.3

制御位相ゲート

CNOT を見たのでいくつかの 2 量子ビットの場合の制御ゲートを考えよう。
次のようなゲートを制御位相ゲートという。

A = 0 → A′ = A = 0 ∩ B ′ = 0
A = 1 → A′ = A = 1 ∩ B ′ ̸= B

図 1.30: [131] より CPhase ゲート
この制御位相ゲートを UCph とすると 1.12 から次のようにおけばよい。

 
1 0
0
0
1 0

 
 0 1
  0 100 UCph (ϕ) = 
 0 0 ⟨0| U |0⟩ ⟨0| U |1⟩  =  0 0 
0 0 ⟨1| U |0⟩ ⟨1| U |1⟩
0 0

1.4.4

独立ハダマールゲート

次にA → H → A′
B → H → B′を考える。

図 1.31: [131] より:独立 H ゲート
具体的な計算は次のようにおこなう。このゲートを UIH とすると

27

0
0
1
0

0




0 

0 

eiϕ

(1.17)

1
1
UIH |00⟩ = √ (|0⟩ + |1⟩)A ⊗ √ (|0⟩ + |1⟩)B
2
2
1= (|00⟩ + |01⟩ + |10⟩ + |11⟩)2
1
1
UIH |01⟩ = √ (|0⟩ + |1⟩)A ⊗ √ (|0⟩ − |1⟩)B
2
2
1= (|00⟩ − |01⟩ + |10⟩ − |11⟩)2
1
1
UIH |10⟩ = √ (|0⟩ − |1⟩)A ⊗ √ (|0⟩ + |1⟩)B
2
2
1= (|00⟩ + |01⟩ − |10⟩ − |11⟩)2
1
1
UIH |11⟩ = √ (|0⟩ − |1⟩)A ⊗ √ (|0⟩ − |1⟩)B
2
2
1= (|00⟩ − |01⟩ − |10⟩ + |11⟩)2
次に係数を縦にして、左から行列をつくると


1


 1
UIH = 
 1

1

1

1

−1

1

1

−1

−1

−1

1




−1 

−1 

1

となりこれはTr [UIH ] = 0
である。

1.4.5

制御ハダマールゲート

制御ハダマールゲートを UCH としよう。これは制御 NOT と同じように何もしない bit があるので回路記号は次のようになる。

図 1.32: [131] より:制御ハダマールゲート
この行列は直接対角に I, H をおいてもよいが、具体的な計算は次のようにおこなう。

UCH |00⟩ = |00⟩
28

UCH |01⟩ = |01⟩
1
UCH |10⟩ = |1⟩A ⊗ √ (|0⟩ + |1⟩)B2
1= √ (|10⟩ + |11⟩)2

1
UCH |11⟩ = |1⟩A ⊗ √ (|0⟩ − |1⟩)B2
1= √ (|10⟩ − |11⟩)2
次に係数を縦にして、左から行列をつくると式 1.15 から

1 0
0

 0 1
0
UCH =  0 0 1/√2
√0 0 1/ 2



0



0
√ 
1/ 2 √ −1/ 2となりこれはTr [UIH ] = 2
である。

1.4.6

Swap ゲート

2bit の状態ベクトルを交換するゲートは swap ゲートとよばれ次で表す。

図 1.33: [131] より:swap ゲート
行列は USW P として



1


 0
UCH =  00となる。例えば



1


 0

 0

0

0

0

0

1

1

0

0

0

0

0

0
1

1
0


0 

0 


0

0

1



a



0



0



a




 


 

0 
 b  =  c 0  c   b 

d
d
1

29

(1.18)

これは 2 つの qubit の状態を入れ替える。次のような過程をとっている。

|a, b⟩ → |a, a ⊕ b⟩
→ |a ⊕ (a ⊕ b), a ⊕ b)⟩ = |b, a ⊕ b⟩
→ |b, (a ⊕ b) ⊕ b⟩ = |b, a⟩つまり、次の図のように CNOT ゲート上下のビットで交互におこなっている。

図 1.34: [130] より:swapping two qubits
このように量子回路の特徴は閉回路になっていない、環形式ではない。これを acylic という。
古典的なデジタル回路で知られている入出力の線の数、FANIN、FANOUT を増やせば、回路の深さを減らせる技術があるが、量子回路ではユニタリー性が優先するために、これらを完全に利用することができない。
また、このような交換ゲートは古典的には入力と出力をクロス結線すればよく、1 対 1 の通信等でよく用いる。
しかし、量子論の場合は量子状態の時間的変化を回路が表すので、別な粒子と交換することになるので単純
ではない。

1.4.7

Fredkin-gate

制御交換ゲートと呼ばれるのが次の Fredkin-gate である。

3qubit の場合は次の働きをする。
A′ = A()
B ′ = Ā · B ⊕ (A · C)()
C ′ = Ā · B ⊕ (A · B)
すなわち、A′ には A がそのまま入り、B ′ , C ′ には次のような条件が入る。
ケース 1.

A = 0 の時、入力 B, C がそのまま出力 B ′ , C ′ になる。

ケース 2.

A = 1 の時、入力 B, C は交換され、主力 C ′ , B ′ になる。

真理表と回路記号は次のようになる。

30

図 1.35: Fredkin-gate

1.4.8

Toﬀoli-gate

トッフォリゲートは制御 CNOT ゲートと呼ばれ、3qubit で、次の条件式を用いる。

A′ = AB′ = BC ′ = C ⊕ (A · B)
真理表と回路記号は次のようになる。

図 1.36: [131] より Toﬀoli ゲート
このゲートは A = 1 であれば CNOT ゲートであり、C = 0 であれば C ′ = A · B で AND 回路になっている。
つまり、入力のどこを固定して、出力のどこを観測するかは任意で、多くの組み合わせができる。
ただし、そのためには入力と出力が 1 対 1 の対応が必要で、そのため、このゲートは次のようなユニタリ演

31

算子 UT で表される。行列のランクが 23 になっている。

1 0 0 0
 0 1 0 0

 0 0 1 0
 0 0 0 1
UT = 
 0 0 0 0
 0 0 0 0

 0 0 0 0

0 0 0 0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

1

0

0

0

0

0

1

0

0




0 

0 


0 

0 


0 

1 

0

(1.19)

例えばこの、Toﬀoli-gate と CNOT を使うと式の半加算器、全加算器を次のようにつくることができる。

図 1.37: 図左が半加算器、図右は桁上 bit を加えた全加算器

1.4.9

制御ユニバーサルゲート

以上から量子コンピューターでは、論理ゲートのユニタリー性が重要になる。そこで一般に次の図で制御
ユニタリーゲートを考えよう。これが、制御ユニバーサルゲートである。
これは n 個の qubit を扱うことができるとする。ただし、中身は常に 1 つの制御 qubit と、n 個のターゲッ
ト qubit が U の箱の中にあると考える。

図 1.38: [130] より:制御 U ゲート
従って制御ビットが 0 にセットされれば、何もおこさないが、1 にセットされるとアクションをおこす。
例えば次の図のように U = X 演算子で置き換えれば、これは制御 NOT ゲートになる。

32

図 1.39: [130] より:制御 NOT の 2 つの表現
さらに重要なのは第 1 章でみたフォン・ノイマンのポインター測定のように、量子測定には確率密度波の解釈が入る。
観測が入ると、これは 1 つの古典的な観測値に収縮するので、観測がどこで行われたかを示す必要がある。
そのために次のような、ポインター絵を用いて観測を示すことにする。

図 1.40: [130] より:観測の記号2

スーパーポジション

2.1

ブロッホ球
前部で qubit がブッロホ球上の単位ベクトルで表されることをみた。

量子回路はこのブッロホ球面上で qubit を変化させていくことに等しい。まさに SU(2) 変換をしていくことになり、そのメインはユニタリー演算子である。しかし、ブロッホ球は 3 次元球とは異なるので注意がいる。
ここでいくつかの基本的な例をみておこう。はじめに

X ゲートで反転をしみる。このときはじめの位置は|ψ⟩ = 1 |0⟩ + 0 |1⟩であり次の図の赤い矢印のように北極を向く。これに X をかけると

X |ψ⟩ = 0 |0⟩ + 1 |1⟩のように反転する。これが図の緑の矢印である。これは元のベクトルにマイナスをかけたわけではないので注意する。
前節でみたように

(
X=

0

1

1

0

という行列を演算させている。

33)

図 2.1: X ゲート：|ψ⟩ = 1 |0⟩ + 0 |1⟩ と X |ψ⟩ = 0 |0⟩ + 1 |1⟩
次に量子的な重ね合わせをつくるアダマールゲートを作用させてみよう

1
H |ψ⟩ = √ (|0⟩ + |1⟩)
2
(
)
1 1
1
H=√
2
1 −1
だから

34

図 2.2: H ゲート
さらに位相反転の Z ゲートも見ておく。これは |1⟩ のみを反転させるので、最初の |ψ⟩ のままだと下図左のように結果は同じになる。

Z |ψ⟩ = 1 |0⟩ − |1⟩
(
)
1 0
Z=
0 −1
そこで、はじめの状態を先に H ゲートで動かして、Z を作用させると図右のようになる。

1|ψ ′ ⟩ = H |ψ⟩ = √ (|0⟩ + |1⟩)
2
1
Z |ψ ′ ⟩ = ZH |ψ⟩ = √ (|0⟩ − |1⟩)235

図 2.3: Z ゲート

Bell 状態

2.2

重ね合わせを 2 ビットでつくると興味あるエンタングルドな状態ができる。ここで、その取り扱いを考えよう。
古典的な 2 つのビットを含む時には |00⟩ , |01⟩ , |10⟩ , |11⟩ の 4 つの状態を考えた。
これらの状態がスーパーポジションにある場合はブロッホ球上で|ψ⟩ = α00 |00⟩ + α01 |01⟩ + α10 |10⟩ + α11 |11⟩のように拡張して表現でき、規格化条件も∑

2|αx | = 1x∈{0,1}2である。ただし、ここでの記号 {0, 1}2 は 0 または 1 のペアを表す。
このような 2quibit の系では部分観測ができる。例えば始めに 1 つの quibit を観測して 0 を得られたとすると、測定後の状態は

α00 |00⟩ + α01 |01⟩
|ψ ′ ⟩ = √22|α00 | + |α01 |のように再規格化をする。
これは第 1 章であつかった EPR 状態またはベル状態と呼ばれる。
簡単なのは |00⟩ , |11⟩ のペアで|β⟩ =|00⟩ + |11⟩
√
2

(2.1)

と表すことができる。第 1 章でみたように、|00⟩ , |11⟩ の状態はエンタングルドしていて前部でみたようにエンタングルド状態とは部分系の量子状態の直積で記述できない場合である。
そこで一般にベル状態を次のように定義する。2 進数を考えているので、ȳ = −y の状態として次のようになる。

x|βxy ⟩ ≡|0, y⟩ + (−1) |1, ȳ⟩√2

これは次のように式 1.18 のハダマールゲートとの組合わせで表すことができる。

36

(2.2)

図 2.4: [130] より:ベル状態
各ケットベクトルには相互的な 1,0 が並ぶ。重ね合わせの符号 ± が第一ビットのｘの累乗

(−1)

x

(2.3)

がかかり、これは位相の見返り (Phase_kickback) と呼ばれる。今後よく登場するので留意する。

2.2.1

エンタングルド状態

前節でもみたが、CNOT ゲートは quibt の複写の役割を果たす。
次の図のように重ね合わせの状態に CNOT を作用させる。
これははじめに未知な状態|ψ⟩ = a |0⟩ + b |1⟩(2.4)に CNOT をコントールビットを 0 にして入力すると|ψ⟩1 = [a |0⟩ + b |1⟩] |0⟩ → a |00⟩ + b |10⟩という 2qubit 状態ができる。同様にコントールビットを 1 にして入力すると、反転されるから|ψ⟩2 = [a |0⟩ + b |1⟩] |1⟩ → a |01⟩ + b |10⟩を得る。これはコントロールビットが 0 なら標的ビットが必ず 1 で、コントロールビットが 1 なら標的ビットが 0 になることを示す。
つまり、どちらか一方を観測すると、他方は必ず決まってしまうという EPR 状態である。

|01⟩ + |10⟩という状態は積にすることができない。エンタングルドな状態という。
この結果を見ると上位ビットに元の |ψ⟩ = a |0⟩ + b |1⟩ が複製されているように見える。
出力は入力ゲートのテンソル和になる。

図 2.5: [130] より:CNOT ゲートの働き37しかし、前節でみた式 1.1 のように量子回路では古典的な情報は複製できるが、式 2.4 のような、重ね合わせの状態を複製することは原理的にできない。
例えば 2quibit 状態は|ψ⟩ |ψ⟩ = a2 |00⟩ + ab |01⟩ + ba |10⟩ + b2 |11⟩となるが、|ψ⟩ を CNOT に入れると[a |0⟩ + b |1⟩] |0⟩ = a |00⟩ + b |10⟩となり、

ab = ba = 0(2.5)

でないといけないことになるが、これは最初の状態が重ね合わせであることと矛盾する。
複製元の情報を知るために観測をおこなうと、その状態はもはや観測前の状態になることが不可能になる。
これが量子回路がループを持てない大きな問題である。
ところが基礎量子論の位置演算子と運動量演算子から次のような非エルミートの生成消滅演算子を作成した。

1aˆ† = √ (x̂ − ip̂)2
1aˆ = √ (x̂ + ip̂)2とすると交換関係は[] 1â, â† = ([x̂, x̂] − i [x̂, p̂] + i [p̂, q̂] + [p̂, p̂])2=1である。また、反交換関係][
â, â† + = ââ† + â† â
1= (x̂x̂ + ix̂p̂ − ip̂x̂ + p̂p̂ + x̂x̂ − ix̂p̂ + ip̂x̂ + p̂p̂)2= x̂x̂ + p̂p̂ = 1
どちらにしても虚数単位を別側面から考えると、波の重ね合わせである。この詳細は第 6 部で議論をした。
従って 2.5 は重ね合わせがある条件でおきたと考えることができる。

2.3

量子テレポーテーション

第 1 章でみたようにベル状態はアインシュタインの局所原理を破る量子テレポーテーションが起きる。これを 2qubit で見ていこう。
はじめに EPR ペアである状態 |ψ⟩ を用意して、これを Alice と Bob に重ね合わせを維持した状態で送る。
この状態の時にはまだ、00, 01, 10, 11 の係数を波動関数は持っている。
ところが次に Alice が観測すると観測結果は古典的に00, 01, 10, 11のどれかになる。この状態でも Bob の持っている波動関数は 00, 01, 10, 11 の係数を維持している。

38

次に Alice はどの状態かを Bob に伝える。Bob はこの瞬間に持っていた最初の状態 |ψ⟩ は失い、古典的な情報のみを見ることになる。これは量子論の特徴で前部で見たように、量子論の状態が環境の波動関数の対角和から作られることが関係する。量子論で話題になる分野であるが、基礎理論としては未だ不完全なところが多い。時空間の接続や計量とあわせて、相対論との関係を後に明らかにしていたい。ここでは量子コンピュータとしての応用を進めよう。
このベル状態を回路図にしたものが次の図のようになる。
テレポーテーションは状態|ψ⟩ = α |0⟩ + β |1⟩
ただし、α, β の係数は未定である。
入力する状態を |ψ0 ⟩ として次のようなベル状態とする。
また、|β00 ⟩ は図のように上下 2 つのルートがある。
上のラインが Alice で、下のラインが Bob に相当する。
はじめはどちらも同じ“ ベル情報 |00⟩ + |11⟩“を持っている。式 2.1 から

1|β00 ⟩ = √ (|00⟩ + |11⟩)2
として、Alice と Bob に渡すと

|ψ0 ⟩ = |ψ⟩ |β00 ⟩1= √ [α |0⟩ (|00⟩ + |11⟩) + β |1⟩ (|00⟩ + |11⟩)]2となり、最初の項が Alice, 最後の項が Bob を表す。
この、Alice と Bob の第 2qubit ペアが EPR、ベル状態を表す。

図 2.6: [130] より:ベル状態
はじめに Alice は自分の qubit を CNOT ゲートに入れる。この時、次のように |1⟩ がある後者の上位ビットが反転する。

1|ψ1 ⟩ = √ [α |0⟩ (|00⟩ + |11⟩) + β |1⟩ (|10⟩ + |01⟩)]
2
次に Alice はハダマールゲートを通す。これは式 1.14 から次のように和と差の形になる。

1[α (|0⟩ + |1⟩) (|00⟩ + |11⟩) + β (|0⟩ − |1⟩) (|10⟩ + |01⟩)]2
これを次のように 4 つの項に書き換える。
|ψ2 ⟩ =

1[|00⟩ (α |0⟩ + β |1⟩) + |01⟩ (α |1⟩ + β |0⟩) + |10⟩ (α |0⟩ − β |1⟩) + |11⟩ (α |1⟩ − β |0⟩)]2
すると次のような解釈ができる。
|ψ2 ⟩ =

39

第１項の |00⟩ は Alice の qubits である。Bob の最初の状態は重ね合わせである。

α |0⟩ + β |1⟩
これらは Alice の観測 M1 により次のように Bob の測定が変化する。

00 → |ψ3 (00)⟩ ≡ [α |0⟩ + β |1⟩]

01 → |ψ3 (01)⟩ ≡ [α |1⟩ + β |0⟩]
10 → |ψ3 (10)⟩ ≡ [α |0⟩ − β |1⟩]
11 → |ψ3 (11)⟩ ≡ [α |1⟩ − β |0⟩]
留意すべきは Bob の状態は量子的な重ね合わせをこの時点では保っていることである。
この後 Bob が観測をすると、古典的な観測値が決まる。
従って、Alice が得た情報により、Bob の観測が影響を受けることになる。

EPR パラロックスや、ベル不等式のところで議論したように、この影響はアインシュタインの局所原理を破り、超光速で伝達が可能になるかもしれない。これが量子テレポーテーションと呼ばれる現象である。
しかし、今のところ超光速な実験例はない。
それは次のように Alice の情報によって Bob は最初の状態に修正することができるが、そのためには、古典的な情報の伝達を含むこのになるからである。
例えば Alice から

00 の情報を受け取れば、何もしなくてよい。
01 の情報の場合は bit 反転する必要があるので X ゲートに入力する。
10 の情報を受け取れば、位相反転する必要があるので Z ゲートに入れる。
11 の情報を受け取れば、両方を反転する必要があるので X ゲートに入れてからさらに Z ゲートに入れれば
よい。
この変換を

Z M1 X M2のように書く。
これにより Bob ははじめの状態 |ψ⟩ を保つことができる。

3

量子アルゴリズム [137]2020 年の現在、いくつかの量子デバイスが実用化され、量子コンピューターが小 bit ながら動くようになっている。
しかし、ノイズの問題など、課題があるが、一般市民の端末からもアクセスができるようになってきた。
この章では現在いくつかあるシミュレーションソフトとして IBM の Qiskit を利用する。
クラウドから実機にアクセスできる上、QASM と Python の 2 つのプログラムインターフェイスを持っている。
具体的な量子コンピューターの基礎プログラムを作る基礎になるだろう。

40

3.1

古典コンピューターと量子コンピューター
古典的なコンピューターのロジック回路を量子コンピューターでシミュレーションできだろうか。

答えは Yes である。しかし、直接実現することはできない。
基本的に量子コンピューターは可逆であるが、前節で見た古典的な論理回路は不可逆なので、この問題を克服しないといけない。
そこで可逆な古典的なロジック回路で 3bit を持つ式 1.19 の Toﬀoli ゲートを考える。
これは次の図のような 3bit の INPUT と OUTPUT を持ったので次のように改めて割り当てる。
図の最初の 2bit が制御ビットと呼ばれる役割をする。

3 番目の bit が標的ビット (target_bit) とよばれる。
つまり、はじめの 2 つの bit が共に 1 にセットされた時のみ、標的ビットは値を反転する。
その真偽表も下図に共にあるで、これを見ると、OUTPUT は INPUT と 1 対 1 に対応しているので可逆であることがわかる。

図 3.1: [130] より：古典的な Toﬀoli ゲート
このゲートのふるまいは後にも重要になる。特に図右側は回路図で表記され、次の操作と同じである。

(a, b, c) → (a, b, c ⊕ ab)
従って OUTPUT を input すると INPUT が得られる。

(a, b, c ⊕ ab) → (a, b, c)
従って c = 1 と固定すると Toﬀoli ゲートは次のように NAND ゲートをシミュレートできる。

図 3.2: [130] より：Toﬀoli ゲートを NAND ゲートにする
さらに次のように入力を (1, a, 0) と固定すると結果は a をコピーする FANOUT として動作する。

41

図 3.3: [130] より：Toﬀoli ゲートを FANOUT ゲートにする
このように上位に 2bit の制御 bit をおけば古典論理回路を量子コンピューターで再現できる。
量子コンピューターは古典的な結果である 1,0 から状態 |0⟩ を選んでも、ハダマールゲートに入れると式 1.14
から

|0⟩ →

|0⟩ + |1⟩√2のような重ね合わせになる。その後測定をすると、1,0 はそれぞれ 50 ％の確率で得られることになる。
さて、これでは量子コンピューターのメリットがないのではないかと思うかもしれない。
しかし、多くのゲートと大きな qubit を使う時に量子コンピューターはその本領を発揮する。
その例として Deutsch-Josa のアルゴリズムを次で見る。

3.2

量子並列化
量子コンピューターにおいて並列処理をどうするかはとても重要な問題になる。

これは古典コンピューターにはできない、重ね合わせの状態を入力できるので、一度に並列処理をしていくことが可能になる。
そこで、次のような 1bit の集合と範囲を持つ関数を用意する。

f (x) : {0, 1} → {0, 1}
入力には 2qubit を持つ状態|x, y⟩
を考える。この下位ビットに次のように操作を与える Uf ゲートを考える。

Uf : |x, y⟩ → |x, y ⊕ f (x)⟩(3.1)

前節式 1.9 でもみたようにテンソル和 ⊕ は 2 の剰余を加えることに等しい。

y ⊕ f (x) → y + f (x) mod 2
また、これは y = 0 であればUf : |x, 0⟩ → |x, f (x)⟩であり、下位ビットに f (x) そのものを得ることになる。
この Uf はオラクル演算子と呼ばれる。
前節 1.16 でみた CNOT ゲートがこの役割をする。
例えば次のような回路を考える。

42

(3.2)

図 3.4: [132] より：量子並列化
これを式で表すと1|ψ⟩ = Uf H |0, 0⟩ = Uf √ {|0, 0⟩ + |1, 0⟩}21= √ {|0, f (0)⟩ + |1, f (1)⟩}2となる。これは状態 |ψ⟩ が関数 f (0) と f (1) を両方を線形結合として持っていることになる。
これは、同時に処理される。つまり、量子的な干渉状態であるかわりに、同じ時間で作用するわけである。
これが量子コンピューターの並列化になるわけであるが、量子論としての時間の考え方に示唆を与えている。
さらにこの回路は多重化できる。次のように重ね合わせた状態を制御ポートに入れることができる。

図 3.5: [130] より：Uf ゲート
このゲートは INPUT として、|0⟩ をハダマールゲートに通して、スーパーポジションにある状態を選ぶこと
ができる。
つまり、

Uf :

|0⟩ + |1⟩
√
, |0⟩
2

⟩
→

⟩
|0⟩ + |1⟩1√
, f (x) = √ (|0, f (0)⟩ + |1, f (1)⟩)
2
2

(3.3)

となる。
これは量子並列化と呼ばれ、量子論に独特なものである。
古典的な並列処理と異なるのは量子的な可干渉性を持つ、スパーポジションを維持していることである。
異なる状態である f (0) と f (1) は古典的には干渉することはあり得ない。
ハダマールゲートのこうした特性はさらに今後深い考察がいるだろう。
この手続きは大きな n-qubit に対しても簡単に応用が効く。これを n-Hadamard 変換と呼ぶことがある。
例えば n = 2 の場合について |0⟩ を INPUT した場合には次のような OUTPUT になる。

(

|0⟩ + |1⟩√2)(

|0⟩ + |1⟩√
2)⇒|00⟩ + |01⟩ + |10⟩ + |11⟩2

これを H ⊗2 と書く。つまり、2 つのハダマールゲートの平行作用である。

43

図 3.6: ハダマール変換 H ⊗2
さらに拡張し、1-qubit を OUTPUT に n-bit を x に INPUT する処理を考えよう。
これは n + 1qubit の状態で
⊗n

|0⟩

|0⟩

とかけるから、次に上位の n-bit をハダマール変換に入れると式 3.3 の回路 Uf を用いて、次の状態に移る。

|ψ⟩ = H ⊗n |0⟩ = H ⊗ H ⊗ · · · ⊗ H |00 · · · 0⟩111
= √ (|0⟩ + |1⟩) ⊗ √ (|0⟩ + |1⟩) ⊗ · · · √ (|0⟩ + |1⟩)2
2
2
1
= √ {|00 · · · 0⟩ + |00 · · · 1⟩ + · · · + |11 · · · 1⟩}
2n
2
1 ∑
=√
|x⟩
2n x=0n−1となる。
これは指数関数的な 2n 個の状態を n 個の H ゲートで計算できることを示す。
つまり、式 3.3 のようにコンピューターにある関数

f : x → f (x)の処理をさせる演算を Uf で定義し、状態 |ψi ⟩ に作用させると(|ψ ′ ⟩ = Uf (|ψ⟩ |0⟩) = Uf

2 −1
1 ∑
√
|x0⟩
2n x=0
n

)
(3.4)

2 −1
1 ∑
√
|x⟩ |f (x)⟩2n x=0nとなる。これは上位の x を観測すれば f (x) が決まることを示す。
これは量子論の重ね合わせの原理が、並列処理として利用できる可能性を示す。
少ない bit では古典的な計算でも問題はないが、古典的に指数関数的に増える計算を、この並列処理の原理から多項式計算にまで落とせることが計算機としては有用になる。これは次節で詳しくみる。

3.3

Qiskit 計算例

ここで実際の量子コンピューターの動きを感覚的につかむために Qiskit を用いて具体的にみていこう。

3qubit をここでは用いる。ここに 2 つのハダマールで重ね合わせをつくり、2 つの CNOT を通して結果を見よう。
はじめに Qiskit の QASM を利用し次の回路をつくる。

44

図 3.7: Qiskit による CNOT 回路 1
点線のある右では観測が行われ、古典レジスタに結果を入れている。
もちろん古典レジスタに入るのは 1 か 0 のどちらかしかない。
この回路で 3 つの量子ビットがどういう割合で重ねあわさっているかを予想してほしい。
最初の CNOT の制御ビットには 0 が目的ビットには重ね合わせが入力されている。
この時は CNOT は目的ビットはそのまま通す。
次に 2 番目の CNOT の目的ビットには重ね合わせが入り、目的ビット重ね合わせが入る。
従って、制御ビットが 0 か 1 でも目的ビットは 0 か、反転して 1 を通すことになる。
従って最終的に量子ビットの状態は第 2CNOT の制御ビットが 0 なら|000⟩ , |001⟩の 2 つが等しい確率であらわれ、第 2CNOT の制御ビットが 1 なら|011⟩ , |010⟩
が等しい確率で現れる。この結果を Qiskit のヒストグラムを用いて表示すると次のようになる。

図 3.8: CNOT 回路 1 のヒストグラム
この結果表示は今後もよく使うが、留意点として回路の下段から上にビットを並べているので、3 ビットの並びが実際と反対になっているに注意する。

Qiskit には観測結果をヒストグラム化する方法もあるので、これを使うと並びは反対にならない。
しかし、ここでは全てのパターンを表示できる方法を選ぶ。Qiskit は密度行列を表示することもできる。
予想された結果に一致していることがわかる。
ではもう一つ例題として次の回路の結果のヒストグラムを予想してほしい。

45

図 3.9: Qiskit による CNOT 回路 2この回路では最初の CNOT の制御ビットに重ね合わせを入れて、目的ビットにも重ね合わせが入る。
次の CNOT には制御ビットに重ね合わせが入り、目的ビットには 0 が入る。
従って第一ビットは 0 か 1 が等しい確率でそのままはいる。第 2 ビットが 0 か 1 で第 3 ビットは 1 か 0 が出力される。
これはエンタングルドの状態で第 2 ビットと第 3 ビットは相関がある。
結果を表すと次のようになる。

図 3.10: CNOT 回路 2 のヒストグラム
先の留意点に注意し、反対から読むと|011⟩ , |111⟩が等しい確率で生じ|000⟩ , |100⟩が等しい確率で生じている。
これらが重ね合わせって処理されているところが古典コンピューターとの違いである。
では次の問題を考えてみよう。ただし、3qubit でおこなうとする。H ゲート CNOT ゲートは最大 3 とする。
問題. 入力 |a⟩ , |b⟩ から出力として |a + b mod 2⟩ をつくる量子回路をつくれ。
解. 次のような CNOT3 つの回路をつくる。2 進であるから次の 4 パターンしかない|a = 0⟩ , |b = 0⟩ → |a + b mod 2⟩ = |0⟩|a = 0⟩ , |b = 1⟩ → |a + b

mod 2⟩ = |1⟩|a = 1⟩ , |b = 0⟩ → |a + b mod 2⟩ = |1⟩|a = 1⟩ , |b = 1⟩ → |a + b mod 2⟩ = |0⟩46従って次が等確率で出てくる回路を考えればよい。

|000⟩ , |011⟩ , |101⟩ , |110⟩
これは次のように CNOT を 3 つ使う。

図 3.11: a + b mod 2 を作る量子回路例
結果は次のようになる。ただし、せっかくなので実機にアクセスして結果を返してみた。
コロナウィルスが広がっていた 2020 年の 3 月に試行回数は標準の 1024 回を IBM の実機に入力している。
まもなくして次の結果が返ってきた。
これは観測結果を確率表記していることに注意する。
結果は全て 25 ％ではない。いくつかのノイズの問題が実機にはあることがわかるが、だれもが自分の量子回路を実機で試行できるようになったことは数年前からみれは驚きである。

図 3.12: Qiskit による回路変更

図 3.13: Qiskit による IBM 実機計算結果
これは順番を戻すと|000⟩ , |011⟩ , |101⟩ , |110⟩
47

3.4

ドイチェのアルゴリズム

3.4.1

Deutch-Joza のアルゴリズム

量子コンピューターの並列化の歴史となる Deutch-Josza のアルゴリズムを見てみよう。
これは次の問題から始まる。
問題. Deutch-Joza のアルゴリズム

2n 個の整数の集合を考えて、
Z2n = {0, 1, · · · , 2n − 1}から

Z2 = {0, 1}への関数 f

f : Z 2n → Z 2が与えられたとする。この時、次の命題のうち、真となるものを見つける量子アルゴリズムを見つけよ。

a) f は定数関数ではないb) f (Zi )(i = 0, 1, 2, · · · , 2n − 1) の 0 の数は 2n−1 個ではない。
この解は次のようになる。
解. 2 つの命題のうちすくなとも 1 つは真であることをまず、証明する。
この命題が否定形で書かれていので、その否定をとると肯定形になることに留意する。

a) が真ではないとすると、f (Zi ) は定数関数であるので 0 または 1 になる。よってｂ) は真である。
b) が真ではないとすると、f (Zi ) は 2n−1 個の 0 と、2n − 2n−1 = 2n−1 (2 − 1) = 2n−1 個の 1 を与える関数になる。
これは定数関数ではない。よって a) が真になる。
()
一般に f (Zi ) が n′ 個 n′ ̸= 2n−1 , n′ ̸= 2n の 0 を与え、2n − n′ 個の 1 を与えたとすると a),b) 共に真になる。

図 3.14: a),b) が真 (T) になる領域
これを古典的なコンピューターで解くと2n−1 + 1
回の処理をさせるプログラムが必要になる。
ところが次のように量子コンピューターを使うとたかだか 2 回の処理で済む。
まず、入力ビットを xi 、出力ビットを f (xi ) として、次のような状態を考える。

|xi , f (xi )⟩次に始状態として次のように 2n 個の重ね合わせ状態を用意する。

48

2
1 ∑
|ψi ⟩ = √|xi , 0⟩2n xi =0n−1

これを使って出力ビットに関数値が出るような演算が Uf であると見なせるので中間状態 1 として

2 −1
1 ∑
|ψ1 ⟩ = Uf |ψi ⟩ = √|xi , f (xi )⟩2n xi =0nをつくる。
さらに出力ビットの位相を求めるためにI ⊗ σZを考える。これは式 1.13 の Z ゲート (z_gate) である。
)
(
1 0
Z=
0 −1
中間状態 1 にこれを作用させ、中間状態 2 をつくると|ψ2 ⟩ = Z |ψ1 ⟩ = ZUf |ψi ⟩() 2n −1∑
1 0=|xi , f (xi )⟩
0 −1
xi =0
2 −1
1 ∑
=√
(−1)f (xi ) |x, f (x)⟩2n x=0nf (x)となる。Z ゲートがかかると (−1)

のように符号が f (x) 依存になるところが重要である。

さらに Uf−1 を作用させると、結局演算子

Uf−1 ZUfが対角化され、出力ビットに影響を与えなくなる。
よって式 3.4 から終状態 |ψf ⟩ として|ψf ⟩ = Uf−1 |ψ2 ⟩ = Uf−1 |ψ2 ⟩ = Uf−1 Z |ψ1 ⟩ = Uf−1 ZUf |ψi ⟩
2 −1
1 ∑
=√
(−1)f (xi ) |xi , 0)⟩2n xi =0nが得られる。この始状態から終状態への確率が求められ
2

P ≡ |⟨ψf |ψi ⟩|

2
`
n−1
2n −1
2∑
1 ∑
1
= ⟨xi , 0| √(−1)f (xi ) √|xi , 0⟩2n xi =02n xi =0

(
=

1
2n

n
)2 2∑
−1

2

(−1)

f (xi )

x=0が得られる。

49

この後半部分 ||2 は量子論に特徴的なものである。つまり xi は 1, 0 であるが、f (xi ) に符号が依存するので1b) = True, a) = Flase


P = 0
a) = True, b) = False
0 < P < 1 a) = True, b) = Trueとなる。これは実際の計算で Uf , Uf−1 を 1 回処理させれば可能になる。ここに注目がいきがちであるが、この結果は0≤P ≤1のアナログ的な確率が Uf によりつくられる。P の領域を先の図にふると、次のようになる。

図 3.15: Deutch-Joza のアルゴリズム

3.4.2

ドイチェ問題Uf ゲートを具現化した最初の例が 1992 年に Deutsch が示した前節の Deutsch’s-algolithum である。
これを具体的に量子コンピューターで使う方法を考えよう。ドイチェは 2 進変数 x = {0, 1} が同じ 2 進変数の関数

f (x) = {0, 1}
として、次の性質をもつものがあるとした。

1.Constantf (0) = f (1)2.Balancedf (0) ̸= f (1)1 は Constant 関数 (定数) と呼ばれ、変数に何をいれてもつにに一定である。
2 は Balanced 関数 (均等) と呼ばれ、変数をいえると均一に変化を与える。
この時、ドイチェは変数 x に値を入れ、関数 f (x) を 1 回だけ調べて 1 か 2 を判定できるかという問題を出した。
これが前節でみたドイチェ問題である
古典的にはどうしても 2 回の調べる必要があるが、量子コンピューターを使うと 1 回ですませることができる。
これを量子回路に組んでいこう。
ドイチェ問題で関数 f(x) を調べることはオラクル（神託）と呼ばれる。
この部分は前節でみたいわばブラックボックスのユニタリー変換 Uf である。

50

図 3.16: オラクルの中身、CNOT により y ⊕ f (x) → y + f (x) mod 2 をつくる
はじめにハダマールゲートを用いて重ね合わせの状態を次のように作る。

|0⟩ + |1⟩√→x
2|0⟩ → H →これをｘレジスタに入れて、さらにハダマールゲートを用いて、次を y レジスタに入れる。

|0⟩ − |1⟩√→y2

|1⟩ → H →これで INPUT 状態 |01⟩ をつくる。

|ψ0 ⟩ = |01⟩
とおく。この回路は次の図のようになり、これを Deutsch’s-algolithum という。

図 3.17: [130] より：Deutsch’s-algolithum を利用した回路
従って図の |ψ1 ⟩ は |ψ0 ⟩ が 2 つのハダマールを通った結果次のようになる。

[|ψ1 ⟩ =

|0⟩ + |1⟩√2][|0⟩ − |1⟩√
2]

式 3.3 の Uf ゲートに次の状態を入れると|x⟩|0⟩ − |1⟩ Uf|0⟩ − |1⟩√
→ → (−1)f (x) |x⟩ √
2
2

(3.5)

となるので Uf を |ψ1 ⟩ にいれると次のようになる。

 [
][
]
|0⟩−|1⟩
± |0⟩+|1⟩√√
if f (0) = f (1)
2 ][
2 ]
[
|ψ2 ⟩ =
|0⟩−|1⟩|0⟩−|1⟩
±√√if f (0) ̸= f (1)
2
2
3.4.3

シミュレーション

次に実際にプログラムとしてコンピュータ上で走らせる。

51

(3.6)

量子回路のシミュレーションはいくつかあるが、ここでは IBM の Qisikit が文献が豊富で、実機で実際に試すこともできる。
これをドイチェ問題に利用しみよう。
まず具体的に次のように第 2 ビットをアダマール変換で囲む。

図 3.18: [137] より：Uf ゲートの作成
これにより、出力ビットには前節の式 3.5 から
f (x)

(−1)

|x⟩ |1⟩が作られる。係数 (−1)f (x) は Uf に拡張されたときの位相の見返りである。
そこでドイチェ問題を解くために、次のようにオラクル Uf をアダマール変換で囲む。

図 3.19: [137] より：4 つの H ゲートで挟んだ回路
これにより入力を |0⟩ |1⟩ とすると

|f (0) ⊕ f (1)⟩ |1⟩が得られる。つまり、出力ビットの上位ビットを観測すれば、一定な関数か、均等な関数かが 1 回で判別できる。
実際に Qiskit に次の回路を入力してみる。
結果は図のように |11⟩ が 100 ％である。Qiskit では結果の棒グラフと、密度行列を表示できる。

52

図 3.20: Qiskit の結果：上位ビットは 1
この回路の実行結果は |11⟩ が 100 ％になる。
従って出力の上位ビットが 1 であり、このオラクルは均等なランダム関数である。
この場合は均等になるのは

f (0) = 0, f (1) = 1 or f (0) = 1, f (1) = 0
この時の出力はどちらも|f (0) ⊗ f (1)⟩ = |1⟩になる。
定数になるのはf (0) = f (1) = 1 or f (0) = f (1) = 0の場合で、この時の出力はどちらも|f (0) ⊗ f (1)⟩ = |0⟩となる。
そこで次に 2 つのオラクルを並列に並べて、上位は定数を、下位には均等になるように回路をつくる。

4 つのアダマールを上位には Not、下位には CNOT で囲んで次のような回路をつくる。

53

図 3.21: 上位に定数、下位に均等のドイチェ問題の判定
結果は 1110 が 100 ％にっているがこれは Qiskit が下位のビットから先に読んでいるからで次の結果表示のように |01⟩ が 100 ％であることを表す。

図 3.22: Qiskit による結果のヒストグラム

3.4.4

ドイチェ・ジョサ問題

前節の例を多ビットに拡張していくことは簡単のように思われる。
例えば、３ビットの場合は次のようになる。Qiskit(IBM) をもちいてシミュレーションをする。次の回路を
つくる。

54

図 3.23: qiskit を用いた回路図
この回路の実行結果は |11⟩ が 100 ％になる。

図 3.24: qiskit を用いた棒グラフ
３ビット以上でも一定か、均等かの判定回路をつくることができるが、次のようにこのどちらかしかおこらない。という約束をつける必要がある。これを約束アルゴリズムと呼ぶことがある。
例えば変数ｘが２ビットの時、２進表記では

f (00), f (01), f (10), f (11)の４通りがある。0,1 をとるので全部でN = 24 = 16
通りあることになるが、約束アルゴリズムでは関数 f が一定か、均等かのどちらかしかとらないとするのでまず、一定な関数はf (00) = f (01) = f (10) = f (11) = 0 or 1の 8 通りしかない。
次に均等な関数はf (00) = f (01) = 0, f (10) = f (11) = 1
f (00) = f (11) = 0, f (01) = f (10) = 1
f (00) = f (10) = 0, f (01) = f (11) = 1
f (00) = f (01) = 1, f (10) = f (11) = 0
f (00) = f (11) = 0, f (01) = f (10) = 0
f (00) = f (10) = 0, f (01) = f (11) = 0の 6 通りしかない。
従って約束アルゴリズムでは全部で 23 = 8 通りあることになり、これを判定していかないといけない。

55

従って、古典的なアルゴリズムで少なくとも 3 回の問い合わせが必要になる。
これに対し、量子的なアルゴリズムの問い合わせは 1 回ですむ。
これは N が増えても同じであり、量子コンピューターの優位なところである。

3.5

ショアの因数分解のアルゴリズム

3.5.1

古典コンピューターでの因数分解 [137]

はじめに古典的因数分解のアルゴリズムを見ておく。例として N = 15 を用いる。

15 を因数分解するために N より小さな互いに素の整数 a を次の範囲でランダムに選ぶ。
a ∈ [2, N − 1]
ここでは

a=7
とする。
次に N を法とした余り関数 f (x) を

f (x) = ax

mod N

(3.7)

これは合同式と呼ばれる。
幾何学のように f (x) と ax は N の整数倍であれば位置の差を無視して、同じものと見なそうというわけである。
この x を a の N を法とした位数 (order) と呼ぶ。
整数 a はランダムに与えたので次にf (x) = f (x + r)

(3.8)

を満たす最小の周期 r を求める。そのために

armod N = 1となる最初の位数 x を求めればよい。そうすると式 3.7,3.8 から

f (x + r) = ax+r

mod N = ax

mod N = 1 = f (x)となり、確かに周期性をもつ。
次にこの周期 r が偶数でれば次のようにユークリッドの互除法を用いて因数を求める。

(

ar mod N − 1 = 0)()
ar/2 − 1 ar/2 + 1
mod N = 0

これか最大公約数 gcd を

gcd (ar ± 1, N )(3.9)

を求めればよい。
この f (x) の周期性を見いだすことで因数分解が次のように求まる。

f (x) が周期関数で、f (x) = 1 の時式 3.13 はar ≡ 1 mod Nとなり、r が a の mod N の位数で r が偶数なら()()
ar − 1 = ar/2 − 1 ar/2 + 1 = nN

56

(3.10)

とかける。この時 ar/2 ± 1 と N の最大公約数 gcd から()()
gcd ar/2 + 1, N , gcd ar/2 − 1, N

(3.11)が N の因数になる確率が高い。ただし、r ̸= 0 とする。
さらに f (x) が周期関数であることは式 3.13,3.10 から位数 r も f (x) と同じ周期性を持っている。
これから因数分解するのに f (x) の周期を見つければよいことになる。
しかし、この方法では偶数の周期 r を求めるまで、a を選びなおさないといけない。
例えば N = 15, a = 7 の場合は

f (0) = 70

mod 15 = 1

f (1) = 7

mod 15 = 7

f (2) = 72

mod 15 = 4

f (3) = 73

mod 15 = 13

f (4) = 74

mod 15 = 1

f (5) = 75

mod 15 = 7··· = ···
f (8) = 78

mod 15 = 1(3.12)となるので周期 r = 4 が得られ

ar/2 ± 1 = 72 ± 1 = 48, 50となるから式 3.9 より()
gcd ar/2 − 1, N = gcd(48, 15) = 3()
gcd ar/2 + 1, N = gcd(50, 15) = 5となり、3, 5 が N = 15 の因数であることがわかった。
しかし、a = {4, 11, 14} の場合は

f (0) = 40

mod 15 = 1

f (1) = 4

mod 15 = 42

mod 15 = 1

f (3) = 43

mod 15 = 4

f (2) = 4となるので周期 r = 2 が得られ式 3.9 より a = 4 の場合()
gcd 4r/2 − 1, N = gcd(3, 15) = 3()
gcd 4r/2 + 1, N = gcd(5, 15) = 5を得る。
この方法から合同関数を先にコンパイルしておくコンパイラ版量子回路が次の量子コンピューターで用いられるようになった。

3.5.2

量子コンピューターの利用

量子コンピューターの並列化が有用な 1 つの例が因数分解である。

57

例えば次の 20 桁を因数分解させることを考えよう。

N = 3977291623907209103
そこでこの N が因数 p, q を持つとするとN = pqとかけるから、少なくと p, q のどちらかは√N より小さい。よって N を 1 からればよい。
しかし、これは桁数が多いと高性能な PC でも大変で、この場合は√√N の数で実際に割ってみN が 10 桁になるので数十億回の割り算をすることになる。
この時の古典的なアルゴリズムは√1

N = 2 2 log2 N

回の処理をする。つまり、N は指数の型に入るので桁数が大きいと処理回数は指数関数的に増える。
しかし、

p = 6257493337
q = 6536046119
2 つの積を求める門内は 1 回程度の処理で済む。
ショアはこれを使い量子コンピューターを用いれば多項式程度の計算で因数分解ができることを示した。
そのために前節の合同式を

f (x) ≡ ax

mod N

(3.13)

として再定義する。
具体的に N = 15 の場合の量子回路を考えよう。そのために次のようなプログラムを考えればよい。
まず、N より小さく N と互いに素な数 a を探求する。ここでは

a=7
とする。
次に合同式

y = f (x) = 7x

mod 15(3.14)

を量子関数にすることを考える。天下り的ではあるが、ここでは変数 x は前節の結果から 4 まで調べれば求まったから 3qubit を使う。
さらに関数値も最大で 13 であったのでこれには 4qubit を使う。
よって変数 x0 , x1 , x2 関数 y0 , y1 , y2 , y3 を用意して式 3.12 の結果から 2 進表記で

y0 = f (x = 0) = 70

mod 15 = 1

1

mod 15 = 7 = 111

y2 = f (x = 10) = 72

mod 15 = 4 = 100

y1 = f (x = 1) = 7

y3 = f (x = 111) = 73となるので次の表のように対応する。

58

mod 15 = 13 = 1101

図 3.25: [137] より
これらを X ゲートや CX ゲートをつかって作成する。

Qiskit では QASM が使えるのでいろいろリアルタイムで試行してつくることができる。
例えば次のような回路を QASM で作る。
上位 3 ビットがｘ、下位 4 ビットがｙである。

図 3.26: QSAM をつかった 15 の因数分解例
ｘでは全てハダマールゲートを通して 1, 0 の重ね合わせにする。
こｋ 3.3 から CNOT を使えばｘレジスタに 0 を入力したときのｙレジスタの出力が f (x) そのものになった。
そのため第一ビットはそのままにして、x レジスタの第 2 ビットと第 3 ビットを CNOT の x ゲートに y レ
ジスタを y ゲートに入れる。
最後に観測値を得るために y レジスタに CCX を利用して入れて、これを古典レジスタに入れ、観測値を得る。
この回路の実行例は次のようになる。

59ただし、この結果はビットを反転して0001 → 1
0100 → 40111 → 71101 → 13に対応することに留意する。

図 3.27: ｙレジスタの観測結果
結果は {1, 4, 7, 13} の重ね合わせになっていることを表している。
次に周期を求める方法を考える。
⊗n

一般的には合同式を満たす整数 r を探すために初期状態 |0⟩|1⟩ の第一レジスタに n 回アダマール変換を

行う。
2
1 ∑
|1⟩ = √|x⟩ |1⟩2n a=0
n−1

H

⊗n

|0⟩

⊗n

ここで

f (x) ≡ ax

mod N

を計算させて第 2 レジスタに書く。例えば

f (0) = 70

mod 15 = 1

f (1) = 7

mod 15 = 7

f (2) = 72

f (3) = 73

mod 15 = 4
mod 15 = 13

4

mod 15 = 1

f (5) = 75

mod 15 = 7

f (4) = 7··· = ···
f (8) = 782
1 ∑√|x⟩ |ax
2n a=0

mod 15 = 1

n−1

1
mod N ⟩ = √ [|0⟩ |1⟩ + |1⟩ |7⟩ + |2⟩ |5⟩ + |3⟩ |4⟩ + · · · ]2n

次に第 2 レジスタを観測して ar = 1 mod N となる位数 r を探すと上の式から

r = 0, 4, 8, · · ·60この回路の例として Qikist を用いると次のようになる。

図 3.28: Shor のアルゴリズム:Qisikit による 15 の因数分解

量子フーリエ変換 [132]3.6

前章での式の量子フーリエ変換をここで量子コンピューターに応用する。

q 個のデータ u0 , u1 , · · · uq−1 に重みをつけた和を
1 ∑fn = √
uk e2πink/q (n = 0, 1, · · · q − 1)q
q−1

(3.15)

k=0を考える。第 6 部での異なる波長、振幅の平面波の重ね合わせとみることができる。
この時に得られる f0 · · · fq−1 を u0 , · · · uq−1 の離散フーリエ変換という。
また、逆変換を1 ∑ −2πikn/q
uk = √e(k = 0, 1, · · · q − 1)
q n=0
q−1

と書くことができる。従って、fn は uk を

e−2πikn/q = cos((3.16)

)
(
)
2πn
2πn
k − i sinkqqで展開しているときの係数とみなせる。これは角周波数

ωn =

2πn
q

を単位ベクトルのように思えば、uk はその成分に等しい。
このフーリエ変換を量子論理回路で実行することを量子フーリエ変換 (quanrum_Fourier_transform) といい、QFT と呼ぶ。従って q 個の正規直交状態にあるベクトルに対し、0 ≤ k ≤ q − 1 として、

U : |k⟩ →

q−1
∑ 1 ∑
e2πikn/q |n⟩√q n=0(3.17)と変換するユニタリ変換を見つければよい。これは、異なる波長の足し合わせでもあるが、無限和でないことに留意する。
しかし、前節で観測は環境の対角和をとったように、ある状態は双対する状態の全ての和をとらないといけない。
コンピューター上ではフーリエ変換はサンプリング数に留意がいるが、より高速な FFT のアルゴリズムを使うことができる。
例えば基底 |a⟩ の成分が u0 · · · uq−1 である状態ベクトル |A⟩ を QFT で成分が f0 · · · fq−1 の状態ベクトルに変換ができる。

|A⟩ =

∑
k

61

uk |a⟩

とすると、式 3.17 は式 3.15 より|B⟩ = U |A⟩

(
)
q−1
∑ 1 ∑
2πian/q
=
e
|n⟩
ua
√
q n=0
a
n
)
(
q−1
∑ 1 ∑ ∑
2πian/q
uk
e
|n⟩
=
√
q
n
n=0
k
∑
=
fn |n⟩∑n

そこで 3bit の場合で具体的に考えてみよう。
この時、q = 23 = 8 になる。

a = 20 a0 + 21 a1 + 22 a2とし、変換後に

n = 2 0 n0 + 2 1 n1 + 2 2 n2となるとして、3 ビットの複合状態の変換を 2πm → 0 に注意して次のように計算できる。

1 ∑ ∑ ∑ 2πi(a0 +2a1 +4a2 )(n0 +2n1 +4n2 )/8|a2 a1 a0 ⟩ → √e|n2 n1 n0 ⟩8 n2 =0 n1 =0 n0 =0()
1
1 ∑ 2πi(4n2 )(a0 +2a1 +4a2 )/8= √e|n2 ⟩22 n2 =0)(1
1 ∑ 2πi(2n1 )(a0 +2a1 +4a2 )/8e|n1 ⟩1⊗ √2 n1 =0()
1
1 ∑ 2πi(2n0 )(a0 +2a1 +4a2 )/8⊗ √e|n0 ⟩0
2 n0 =0)
1 (= √ |0⟩2 + e2πi·a0 /2 |1⟩2
2)
1 (⊗ √ |0⟩1 + e2πi·(a0 /2+a0 /4) |1⟩1
2)
1 (⊗ √ |0⟩0 + e2πi·(a0 /2+a0 /4+a0 /8) |1⟩0
2
1

1

1

となる。結果として |0⟩ からの位相変化として、ブロッホ球内で |1⟩ が回転していくとみなせる。
これらはテンソル積であり、bit 数が増えると計算も増えていく。
しかし、それが古典計算ほどではないことを示そう。
これを回路で表すことを考えてみよう。
最初の項を見ると a0 = 0 の時に

a0 = 1 の時には

1
√ (|0⟩ + |1⟩)
2
1
√ (|0⟩ − |1⟩)2となるので、これは |a0 ⟩ のハダマール変換になっている。

)
a0
1 (
|a0 ⟩ → H → √ |0⟩ + e2πi· 2 |1⟩2で表される。

62(3.18)

次の項は a0 = 0 の時に

e2πi·a0 /4 = 1
a0 = 1 の時には
e2πi·a0 /4 = eπi/2 = iとなる。従って位相を π/2 ずらす必要が加わる。そこで 1.12 の位相ゲートを加えて次の図のようにつくる。

図 3.29: [132] より：H + U01
同様に最後の項もさらに位相ゲートをたして次のようになる。

図 3.30: [132] より：H + U01 + U12
よって、全ての項をまとめて式 3.18 は次のように書くことができる。
ただし、最後に上位ビットと下位ビットの反転をおこなう必要がある。

図 3.31: [132] より：3qubit のフーリエ変換
この 3qubit の FFT は次のように逐次計算で示すことがある。u0 (0, 0, 0) と u4 (1, 0, 0) から

u0 + u4 , u1 + W 4 u4をつくり、いったん保存し、以下図のように繰り返す。ただし、√
W = e2πi/8 = (1 + i) 2であり、n ビットであれば 1 の n 乗根がかかる。この場合も上位と下位とを最後に反転する必要がある。

63

図 3.32: [130] より：3qubit の高速フーリエ変換
データがｎ bit、2n ある場合、離散フーリエ変換の式 3.16 では O(q 2 ) = O(22n ) の計算をすることになる。
しかし、FFT が使えればステップが n 回になるので

q log q = 2n × n log 2 ∼ n2nとできるから O(n2n ) の計算まで減らすことができる。
ところが QFT ではさらにn − gates → (n − 1)gates → · · · → 1gate
までを 1 つの計算で終わらすことができる。よって全部で()
O(n2 ) = O (log q)2の計算で終わることになる。

3.7

ユニタリ変換 [98]

3.7.1

はきだし法

これまで見たように量子計算はユニタリ変換と観測のくみ合わせである。
これは固有値と演算子、ベクトルと組合わさる。固有方程式が無限に連結していくようなイメージであろうか。
古典論と異なり、我々は常に環境の影響を考えないといけない。そのためにどうしても制御線が 1 つ入り条件分離される。
ドイチらのグループにより、任意のユニタリー変換が 2qubit の制御 NOT(CNOT) と、1qubit のユニタリー変換で表すとができることを示した。
これを万能量子チューリングマシンと呼ぶことにする。
この原理が、今後発展するであろう量子コンピューターの基本原理になる。そこでこのユニタリー変換の特性を見ておこう。

64

任意の SU (2) 行列を U とする。CNOT を 2 つ、1qubit を 3 つのユニタリー行列を A, B, C とする。
これから次の図のような一般化制御 U ゲートが作れる。

図 3.33: [98] より：制御 U ゲートのユニタリ変換での表現
つまり、制御 U ゲートは 2 つの制御 NOT ゲート X を挟んで連結するようにユニタリ変換が 3 つ入る。
一般的な SU (2) は 3 次元の空間回転に対応できたから、第 2 部の角運動量で学んだオイラー回転をもちいてU = Rz (α)Ry (β)Rz (γ)と表すことができる。ユニタリーの条件 3 つの行列 A, B, C については

ABC ＝ I, AXBXC = U(3.19)

を満たすのでA = Rz (

)
)
(
(
( )
α−γ
β
α+γ
β
), B = Rz −Ry −, C = RyRz (γ)22
22とすれば条件式 3.19 を満たす。
さらに、全体に位相ゲート 1.12 をかけても問題ない。
定義. 基本原理 1：1bit のユニタリー変換と 2bit の CNOT ートの組合わせが任意のユニタリー変換をつくる。
証明は次のように任意の 2bit の場合で示す。

Proof. まず任意の基底 |1⟩ |1⟩ を任意の次の状態に変換する回路を考える。{} はあらゆる要素の組合わせをとるとして、|1⟩ |1⟩ →∑cab |a⟩ |b⟩ , cab ∈ C

a,b={0,1}

ただし、次のように規格化されている。

∑

2|cab | = 1

a,b={0,1}

この逆変換をϕ11 :∑cab |a⟩ |b⟩ → |1⟩ |1⟩a,b={0,1}

とする。

65

(3.20)

任意の CNOT ゲートを式 1.17 から基底をブロッホ球の全軸|00⟩ , |01⟩ , |10⟩ , |11⟩を基底にとる。この恒等部分行列は次のように 2 通りでユニタリ行列の中に入れることができる。
第 1bit を制御 bit、第 2bit を標的 bit に選ぶと



1


 0
U12 = 
 0


0

0

0

1

0

0

u11

0

0

u21




0 

u12 

u22

とおける。同様にして第 2bit を制御 bit、第 1bit を標的 bit に選ぶと



1


 0
V12 = 
 0

0

0

0

v11

0

0

1

v21

0

0




v12 

0 

u22

となる。ただし、u, v は 1, 0 の値しかとらない。
これらは既に式 1.15 などで、1bit のユニタリー変換と CNOT で表すことができたから基底を先にもやったように |0⟩ |0⟩ , |0⟩ |1⟩ と |1⟩ |0⟩ , |1⟩ |1⟩ に分けて考える。
はじめに第 1bit を制御、第 2bit をターゲットにする U12 を用いると、
(
)
I 0
U12 →
0 U

(

とみなして |1⟩ |1⟩ を掃き出すと
∑

I
0

0
U

)(

cab |a⟩ |b⟩ →a,b={0,1}

a
b

)

(
=

∑

a
Ub

)

ca1 |a⟩ |1⟩ → |1⟩ |1⟩

a={0,1}のようにすすめると|c10 |2 + |c11 |2 + |c01 |2 + |c00 |2 = 1∑|c11 |2 = |c01 |2 + |c00 |2 = 1
cab |a⟩ |b⟩ = c10 |1⟩ |0⟩ + c11 |1⟩ |1⟩a,b={0,1},a,b=(1,0)となり、U12 (c10 |1⟩ |0⟩ + c11 |1⟩ |1⟩) = c10 |1⟩ |1⟩ + c11 |1⟩ |1⟩が成り立つので U12 を使うと式 3.20 から∑
U12 ψ1 = U12 cab |a⟩ |b⟩a,b={0,1}=∑

cab |a⟩ |b⟩ +a,b={0,1},a,b̸=(1,0)

66√|c10 |2 + |c11 |2 |1⟩ |1⟩

となる。
次に |0⟩ |1⟩ を掃き出すと

U12 (c00 |0⟩ |0⟩ + c01 |0⟩ |1⟩) = c00 |0⟩ |1⟩ + c01 |0⟩ |1⟩∑

U12 ψ1 =cab |a⟩ |b⟩ +√|c00 |2 + |c01 |2 |0⟩ |1⟩a,b={0,1},a,b̸=(1,0)

次に第 1bit に NOT を書けて同様に |0⟩ |0⟩ を書き出すと√√|c00 |2 + |c01 |2 |0⟩ |1⟩ + |c10 |2 + |c11 |2 |1⟩ |1⟩となる。
最後に第 2 ビットを制御ビット、第 1 ビットを標的にする V21 を用いて |0⟩ |1⟩ を掃き出すと |1⟩ |1⟩が得られる。
つまり、次が全て得られる。

∑

cab |a⟩ |b⟩ → |0⟩ |0⟩a,b={0,1}∑

cab |a⟩ |b⟩ → |0⟩ |1⟩a,b={0,1}∑

cab |a⟩ |b⟩ → |1⟩ |0⟩a,b={0,1}∑

cab |a⟩ |b⟩ → |1⟩ |1⟩a,b={0,1}

例えば、∑

cab |a⟩ |b⟩ → |1⟩ |1⟩a,b={0,1}の回路図は次のようになる。

図 3.34: [98] より：|1⟩ |1⟩ を作る回路

3.7.2

基本原理

任意の 2 ビットのユニタリー変換 S の固有ベクトルを |ψn ⟩ , n = 0, 1, 2, 3 とする。
ここでは標準基底を {|n⟩} で表す。

{|0⟩ = |0⟩ |0⟩ , |1⟩ = |0⟩ |1⟩ , |2⟩ = |1⟩ |0⟩ , |3⟩ = |1⟩ |1⟩}
先の結果から基底をつくるユニタリー変換が存在し、

G (ψn ) |ψn ⟩ = |n⟩67

とおく、これを用いてユニタリー行列は
3∏S=

G (ψn )−1

Xn G(ψn )n=0と書くことができる。
これは次のように示すことができる。Xn は CU と N OT を組み合わせてつくることができて、パウリ行列を用いて、回転を表すと、

X0 = eiσ0 |0⟩ ⟨0| + |1⟩ ⟨1| + |2⟩ ⟨2| + |3⟩ ⟨3|
X1 = |0⟩ ⟨0| + eiσ1 |1⟩ ⟨1| + |2⟩ ⟨2| + |3⟩ ⟨3|
X2 = |0⟩ ⟨0| + |1⟩ ⟨1| + eiσ2 |2⟩ ⟨2| + |3⟩ ⟨3|
X3 = |0⟩ ⟨0| + |1⟩ ⟨1| + |2⟩ ⟨2| + eiσ3 |3⟩ ⟨3|のように書くことができる。
まず、G (ψ0 )−1

X0 G(ψ0 ) はユニタリ変換であり、第 4 部で見たようにこれは回転の演算子と見なせるから−1

G (ψ0 )X0 G(ψ0 ) |ψ0 ⟩ = eiσ0 |ψ0 ⟩eiσ0 |0⟩ = |0⟩が成り立つ。そこでこれを |ψn ⟩ の状態に作用させると、完全性の条件−1

G (ψ0 )X0 G(ψ0 ) |ψn ⟩ = G (ψ0 )= G (ψ0 )−1 ( iσ0e∑n |n⟩ ⟨n| = I から)
|0⟩ ⟨0| + |1⟩ ⟨1| + |2⟩ ⟨2| + |3⟩ ⟨3| G(ψn ) |ψn ⟩−1(|0⟩ ⟨0| + |1⟩ ⟨1| + |2⟩ ⟨2| + |3⟩ ⟨3|) G(ψn ) |ψn ⟩−1

G(ψn ) |ψn ⟩= G (ψn )= |ψn ⟩となる。従って、一般に−1

G (ψm )−1

G (ψn )Xm G(ψm ) |ψm ⟩ = eiσm |ψm ⟩Xn G(ψn ) |ψn ⟩ = eiσm δnm |ψm ⟩eiσn δmn |m⟩ = |m⟩が成り立つ。
今 |ψm ⟩ は S の任意の固有ベクトルであるが、S が |ψm ⟩ に作用すると、n = m のところだけ位相が変化し、後は恒等変換である。
選択的に位相変換されることはある方向に対し、変化が伝達する。従って、

S |ψm ⟩ = eiσm |ψm ⟩ (m = 0, 1, 2, 3)が成り立ち、これから

S=

3
∏
n=0

3
∏

eiσn |ψn ⟩ ⟨ψn | =−1

G (ψn )Xn G(ψn )n=0が示された。
これを回路図で表すと次のように、量子回路 Qn は G と CNOT から作ることができる。

68

図 3.35: [98] より：量子回路の中身

並列計算例

3.8

CNOT と 1qubit の組み合わせで、量子的なエンタングルド状態を作る例として|a⟩ |b⟩ |0⟩ → |a⟩ |b⟩ |a + b mod 2⟩をもう一度見てみよう。すでに式 1.11 で見たように次のような回路を作ればよい。

図 3.36: [98] より：並列計算例
この時の出力は最終状態が掛け合わされ、∑|a⟩ |b⟩ |a + b mod 2⟩a,bとなる。この回路には CNOT が 3 つ入っている。量子回路は左から右に時間進行するので、順に見ていく。
はじめに左の CNOT で a + b mod 2 を第 2 ビットに計算し、次の CNOT でこれを第 3 ビットにコピーしている。
そして最後の CNOT は第 2 ビットを元にもどすことをする。最終結果がそれぞれのビットのテンソル積になる。
一見すると何気ないかもしれないが、古典的なコンピューターでは 1 つ 1 つ掛けて演算する処理を量子コン
ピューターは 1 度におこなうことができることをしめしている。これを平行処理という。量子コンピューターの優れた特徴になる。
つまり、∑
a,b=0,1|a⟩ |b⟩ |0⟩ →∑a,b=0,169|a⟩ |b⟩ |a + b mod 2⟩

は上図のように入力を|0⟩ + |1⟩が許されるので、これをアダマール変換でつくれば(|0⟩ |0⟩ |0⟩ →
(
→

1
√
2
1
√
2

)2 ∑

|a⟩ |b⟩ |0⟩a,b=0,1)2 ∑|a⟩ |b⟩ |a + b mod 2⟩a,b=0,1となる。ただし、この回路には観測が入っていないので、a + b mod 2 は見えていない。
観測するためには古典ゲートをプラスして、観測器をつければよい。

3.8.1

CNOT の拡張

前節で CNOT を使うことが量子コンピューターの特徴であることを見たが、ここでは、この CNOT で 2つの制御をかけることを考える。

3qubit の場合を考えて、2 個の制御ビット、1 つの標的ビットをつくり、制御ビットが 2 つとも |1⟩ であれば標的ビットを反転させる。
逆に残りのパターン|1⟩ |0⟩ , |0⟩ |1⟩ , |0⟩ |0⟩の時は標的ビットは変化しない。
これを実現していくためにまず次の恒等式に注意する。

x + y − (x ⊕ y) = 2xy
ただし、(x ⊕ y) ≡ x + y

mod 2

で定義する。明らかに

x + y − (x + y

3.8.2

mod 2) = y − ymod 2

具体例 1 ＋ 1

もっとも単純な 1 ＋ 1 の量子計算をみておくことは教育的である。

2 進法でおこなうので前章でみた、全加算器の桁上げを処理する必要がある。
そのために次のような回路を考える。

70

図 3.37: [98] より：1 の足し算
これは CNOT を利用しているので、古典的な処理ではなく、重ね合わせを用いて

参考文献
[1]

菅野礼治

ゲージ理論の解析力学[2]

G.M. ザスラフスキー 三島信彦、斉藤徹也、新藤 茂 訳

[3]

内山龍雄

[4]

Tristan Needham Visual complex analysis[5]

J.W.Noh, A.Foug’eres, and L.Mandel Operational approach to the phase of quantum field

相対性理論

2007
1989 カオス-古典および量子力学系-

岩波全書

1977

1997

培風館

1992 Physical Review A 45
[6]

D.T.Pegg, S.M.Barnett Phase properties of quantized single-mode electromagnetic field
1989 Physical Review A 39

[7]

小林昭七

接続の微分幾何とゲージ理論 1989

[8]

野水克己

現代微分幾何入門

[9]

佐藤光

[10]

Tristan Needham Visual Complex Analysis 1997 OXFORD

[11]

小沢哲也

曲線・曲面と接続の幾何

[12]

中原幹生

理論物理学のための幾何学とトポロジー I,II

[13]

丹羽雅昭

超伝導の基礎[14]矢吹治一

量子論における位相

群と物理

1992

1969

裳華房

裳華房

丸善株式会社1997 倍風館

2002 東京電機大学出版局
1998

日本評論社

71

2000 ピアソン・エデュケーション

[15]Tai Tsun Wu,Chen Ning Yang

Concept of nonintegrable factors and global formulationof gauge fields 1975 Physical Review D 12
[16]

R.Glies

Reconstruction of gauge potentials from Wilson loops

1981 Physical Review

D 24
[17]

Pratul Bandyopadhyay Geometry,Topology and Quantum Field Theory

[18]

深谷賢治

[19]

Shinichi Deguchi Kazuo Fujikawa Second-quantized formulation of geometric phases 2005

双曲幾何

岩波書店

2004

Physical Review A72
[20]

大貫義朗

鈴木増雄

[21]

柏

サイエンス社 新版[22]

J.David Jackson

[23]

中村

[24]

Matthew N.O. Elements of Eletromagnetic[25]

Lectures on Cliﬀord(Geometric) Algebras and Appliations Rafal Ablamowicz Garret

太郎

柏太郎

経路積分の方法 岩波

現代の物理学演習 場の量子論

Classic Electrodynamics 2001

哲・須藤彰三 電磁気学

朝倉書店

2012

Sobczyk 2003
[26]

Julian Schwinger シュウインガ

量子力学 Springer 2000

[27]

野村健太郎

[28]

安藤陽一

[29]

Brian R. Greene STRING THEORY ON CALABI-YAU MANIFOLDS Columbia Uni-

トポロジカル絶縁体・超伝導体の基礎理論 September 11, 2013
トポロジカル絶縁体入門

2014versity[30]

深谷

賢治 ゲージ理論とトポロジー[31]

Joseph L.Birman Geometry,Particles,and Fields Springer[32]

Charles Nash Sinddhartha Sen Topoloy and geometry for Physics Mineola,New York

[33]

二木

[34]

Andre Weil ケーラー多様体論入門

[35]

天野勝利

Hopf 代数とは 筑波大学

[36]

谷村省吾

トポロジー・圏論・微分幾何

[37]

坪井

幾何学３

[38]

Louis H.Kauﬀman KNOTS AND PHYICS World Sientific 1993

[39]

服部昌夫

[40]

David W. Lyons An Elementary Introduction to the Hopf Fibration Lebanon Valley

1995 Springer

昭人 微分幾何講義-一般理論と現代物理への応用

俊

微分形式

多様体のトポロジー

サイエンス社

1958 Springer

サイエンス社 SGC-52

東京大学出版

岩波

2003

College72

[41]Nicholas Wheeler Transformational principles latent in the theory of CLIFFORD ALGEBRAS Reed College Physics Department 2003

[42]

Mathematica

Demonstration

RichardHennigan

Rotating

the

Hopf

Fibration

http://www.wolfram.com/[43]

Ana Cannas da Silva Lectures on Symplectic Geometry 2006

[44]

Rotations of the three-sphere and symmetry of the Cliford Torus John McCuan andLafe Spietz October 5,1998[45]

Maris Ozols Geometry of qubit 2007

[47]

Rupert Way Dynamics in the Hopf bundle, the geometric phase and implications for
dynamical systems University of Surrey U.K 2008

[48]

Chris J Isham Modern Diﬀerential Geometry for Physicists[50]

Robert Gilmore Lie Groups, Lie Algebras,and Some or Their Applications[51]

Bo-Yu Hou, Bo-Yuan Hou DIFFERRENTIAL GEOMETRY FOR PHYSICS World Scientific 1997

[52]

Thomas J.Briidges The Orr-Sommerfeld equation on a manifold

[53]

佐古彰史

超対称性ゲージ理論と幾何学

[54]

早川尚男

連続体力学

[55]

岡部洋一

電磁気学

[56]

Bjorn Felsager Geometry,Particles,and Fields Springer 1997

[57]

及川正行

偏微分方程式 岩波書店 1955

[60]

三尾典克

変形体の力学 東京大学

[61]

Daniel Z.Freedman and Antoine Van Proeyen Supergravity CAMBRIGE[62]

V.P Nair Quantum Field Theory 2005 Springer[63]

Diagrammatica The Path to Feynman Rules Martinus Veltman 1995 Cambride University

2007 日本評論社

京都大学大学院 平成 17 年
放送大学 2015

Press
[64]

Martin Ammon Johanna Erdmenger Gauge/Gravity Duality: Foundations and Applications 2005 Cambride University Press[65]

Kawamura Yoshiharu 相対論的量子力学 裳華房[66]

泰泉寺雅夫 数物系のためのミラー対称性入門

[67]

堀川穎二

[68]

Shiing-shen Chern Complex Manifolds Without Potential Theory 1995 Springer Verlag

複素代数幾何学入門安藤哲也

コホモロジー

サイエンス社

岩波書店

New York,LLC
[69]

2014

2002 日本評論社

73

[70]

Joseph Polchinski String Theory I,II Cambride University Press 1998

[71]

坂本眞人

[72]

Barton Zwiebach A First Course in STRING THEORY 2009 Cambride University Press

[73]

深谷

賢治 編

[74]

白水

徹也 アインシュタイン方程式[75]

唐木田健一 ひとりで学べる一般相対性理論

[76]

深谷賢治

数学者による数学者のための StrigDuality

[77]

坪井

幾何学

[78]

佐藤秀司・佐藤周友 代数的サイクルとエタールコホモロジー[79]

石橋延幸・村上公一 弦の場の理論

[80]

伊藤克司

共形場理論

[81]

高柳

匡

ホログラフィー原理と量子エンタングルメント サイエンス社

[82]

江沢

洋、渡辺敬二、鈴木増雄、田崎晴明

[83]

今村

洋介 超弦理論の基礎

[84]

江口

徹

[85]

西森

秀稔 相転移・臨界現象の統計物理学[86]

Michael E.Peskin, Daniel V.Schroeder An introduction to quantum Field Theory[87]

Charles Kittel and Herbrt Kroemer THERMAL PHYSICS W.H.Freeman and Company 1980

[88]

J.J Sakurai Modern Quantum Mechanics 1985 The Benbjamin/Cumming Publishng Com-俊

量子力学から超対称性へ

SGC ライブラリ 96

ミラー対称性入門菅原サイエンス社20122009 日本評論社

ホモロージ入門2012 SGO ライブラリ サイエンス社
講談社 2015
京都大学

東京大学出版会

Springer

20122012 SGO ライブラリ サイエンス社

2011 SGO ライブラリ サイエンス社

繰り込み群の方法

1999 岩波書店

2010 SGO ライブラリ サイエンス社

祐二 共形場理論

2015 岩波書店
倍風館

pany,Inc.
[89]

松田

哲

複素関数

理工系の基礎数学５ 岩波書店

[90]

小林

昭七 複素幾何[91]早川尚男 非平衡統計力学[92]

Mukund Rangamani & Tadashi Takayanagi “Holographic Entanglement Entropy“ 2017

[93]

松枝

[94]

治部眞里

[95]

V.P．ナイア著 阿部泰裕 磯暁 訳 現代的視点からの場の量子論

[96]

大津

元一 現代光科学[97]

日置善郎 相対論的量子場

[98]

細谷

暁夫 量子コンピューターの基礎

岩波書店

2005

サイエンス社

SGC ライブラリ

宏明 量子系のエンタングルメントと幾何学
高橋康

1995

2006

森北出版 2016

添削形式による場の量子論 日本評論社 1997、

光の物理的基礎朝倉書店 1994

吉岡書店 2008
サイエンス社 1999

74

Springer 2005

[99]Michael A. Nielsen & Isaac L. Chuang Quantum Computation and Quantum Information
Cambride University press 2010[100]

Brian C.Hall Lie Groups,Lie Algebras, and Represetations An Elementary Introduction Springer 2015[101]

谷村省吾 ホロノミーと力学系[102]

Raﬀaele Rani On Parallel Transport and Curvature 2009

[103]

塩濱

[104]

大槻 知忠

[105]

鈴木

[106]

Anastasios Mallios MODERN DIFFERENTIAL GEOMETRY IN GAUGE THEP-

勝博,

成

名古屋大学

慶明 曲面の微分幾何学 日本評論社

2005

結び目の不変量 共立出版 2015

増雄 統計力学

岩波書店 1994

RIES Springer 2009[107]

Lectures on Geometry Edited by N.M,J.WOODHOUSE OXFORD university press 2017[108]

田中利夫・村上斉

[109]

川村嘉春

基礎物理から理解するゲージ理論

[110]

細谷

ゲージヒッグス統合理論 サイエンス社

[111]

堺井義秀

[112]

鈴木 増雄 経路積分と量子解析 サイエンス社 2017[113]

David Tong Quantum Field Theory Universith of Cambridge 2006[114]

並木美喜雄 大場一郎 散乱の量子力学 岩波書店 1997[115]

福田礼次郎 フーリエ解析 岩波書店 1995

[116]

Adam Lupu-Sax Quantum Scattering Theory and Applications Harvard University 1998

[117]

佐藤文隆

児玉英雄 一般相対性理論 岩波書店 1992

[118]

松本幸夫

多様体の基礎 東京大学出版 1989

[119]

Wulf Rossmann Lie Groups OXFORD 2002

[120]

佐武一郎

[121]

F. シャトラン 行列の固有値

[122]

生西明夫

中神

[123]

黒田成俊

関数解析

[124]

堀田昌寛

量子情報と時空の物理

[125]

砂田利一

行列と行列式 岩波 2003

[126]

太田 浩一

電磁気学の基礎[127]

J. マトウシェク著 岡本吉央訳 離散幾何学講義 丸善

裕

トポロジー入門 サイエンス社

山田憲和

リー群の話

SGC ライブラリ 42

サイエンス社

野尻美保子 素粒子物理学

SGC ライブラリ 42

SGC ライブラリ 42

臣 作用素環入門 1

1988

岩波

2006

共立出版 1980
第 2 版 サイエンス社 2019東京大学出版会 2013

75

2017

2018

KEK 2012

日本評論社 1982

Springer

2005

2001

[128]

根本香絵

量子力学の考え方

物理で読み解く量子情報論の基礎

[129]

甘利

[130]

Michael A.Nielsen Isaac L. Cauang Quantum Computation and Quantum Information[131]

佐川弘幸/吉田宣章 量子情報理論[132]

Leo.P.Kadanoﬀ and Gordon Baym 1962 量子情報理論 丸善プラネット[133]

Rodney Loudon The quantum theory of light Oxford University Press 1983

[134]

Leo.P.Kadanoﬀ and Gordon Baym Quantum Statistical Mechanics PerseusBooks Publishing

俊一 情報幾何学の新展開

サイエンス社

第 3 版 丸善

サイエンス社

2014

2019

1962
[135]

長島順清 粒子と場 大阪大学

[136]

MARK THOMSON Modern Particle Physics University of Cambridge 2013

[137]

中山

茂

Qsikit 量子プログラミング入門

76

2008

Gaia 教育シリーズ 17 2019