第3章CNOTと制御ゲート

この章の目標

3.1 制御ゲートの記号と一般形

ステップ1第5章で導入したCNOTを回路記号で書くと:

q0: ──●──        ●  = 制御 (control)
      │
q1: ──⊕──        ⊕ = 標的 (target, Xを適用)

一般に、任意の1量子ビットユニタリ $U$ に対して制御$U$(制御が $|1\rangle$ のときだけ標的に $U$)が定義できます:

定義(制御$U$) $$CU = \begin{pmatrix} I & 0 \\ 0 & U \end{pmatrix} = |0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes U$$

右の表式が実戦向きです:「制御が $|0\rangle$ の成分には $I$、$|1\rangle$ の成分には $U$」という場合分けをそのまま演算子にした形。$U = X$ でCNOT、$U = Z$ でCZになります。

計算のコツはステップ1と同じく基底ごとの場合分け+線形性です。重ね合わせが入力されたら、基底成分ごとに「制御は0か1か→標的に$U$を掛けるか」を判定して足し合わせる。機械的にやれば間違えません。

例: CZは「どちらが制御か」の区別がない $$CZ = \mathrm{diag}(1, 1, 1, -1)$$

CZ は「両方が $|1\rangle$ のときだけ符号 $-1$」を付ける対角行列で、制御と標的が対称です。回路記号も ●─● と両側を点で書きます。実機(特に超伝導量子ビット)ではCZの方がネイティブなことも多く、CNOTとは $H$ で行き来できます(演習3-4)。

3.2 制御+重ね合わせ=エンタングルメント(復習と一般化)

ベル回路(ステップ1演習5-6)を回路図で再掲します。これがこのステップの「Hello, World」です:

q0: |0⟩ ──[H]──●──      |00⟩ → (H⊗I) → (|00⟩+|10⟩)/√2 → CNOT → (|00⟩+|11⟩)/√2
               │
q1: |0⟩ ───────⊕──

ワイヤを増やせばGHZ状態 $\frac{|000\rangle + |111\rangle}{\sqrt2}$ も同じパターンで作れます(演習3-5)。「$H$ で分岐を作り、CNOTで分岐に印を付けて回りに伝播させる」——エンタングルメント生成の基本イディオムです。

3.3 位相キックバック — 制御ゲートの裏の顔

ステップ1の総合演習6-5で、CNOTの標的に $|-\rangle$ を入れると制御側の位相が反転する現象を計算しました。これを一般化します。本章で一番大事な節です。

位相キックバック

$|u\rangle$ が $U$ の固有状態($U|u\rangle = e^{i\lambda}|u\rangle$)のとき、制御$U$に制御側 $\alpha|0\rangle + \beta|1\rangle$、標的側 $|u\rangle$ を入力すると: $$CU\big((\alpha|0\rangle + \beta|1\rangle) \otimes |u\rangle\big) = \big(\alpha|0\rangle + \beta e^{i\lambda}|1\rangle\big) \otimes |u\rangle$$ 標的は変化せず、$U$ の固有値の位相 $e^{i\lambda}$ が制御側の相対位相に移る。

導出は1行です:$|0\rangle|u\rangle$ 成分はそのまま、$|1\rangle|u\rangle$ 成分は $|1\rangle(U|u\rangle) = e^{i\lambda}|1\rangle|u\rangle$。位相 $e^{i\lambda}$ はテンソル積のどちらに付けても同じなので、「標的に掛かったはずの位相」を制御側の係数と読み替えられる——それだけのことです。しかしこの読み替えが強力で:

ステップ3のDeutsch-Jozsa、そしてShorの心臓部である位相推定は、この仕掛けの反復です。ここで手に馴染ませておくと、ステップ3の学習コストが半減します。

3.4 CNOTだけで組む小道具

CNOTを組み合わせると便利な部品が作れます。代表2つ:

SWAP(状態の交換)              逆向きCNOT(Hで挟む)
q0: ──●──⊕──●──               q0: ──[H]──⊕──[H]──      q0: ──●──
      │  │  │          =            │            =        │
q1: ──⊕──●──⊕──               q1: ──[H]──●──[H]──      q1: ──⊕──

SWAPは「CNOT3連(向き交互)」で実現できます(演習3-6)。逆向きCNOTの等式は「$H$ で挟むと $X$ と $Z$ が入れ替わる」の2量子ビット版で、CZ の対称性を経由すると鮮やかに示せます(演習3-4)。実機では物理的に隣接した量子ビット間でしか2量子ビットゲートが打てないため、SWAPで状態を「運ぶ」操作が頻繁に挿入されます——回路最適化でSWAPを減らすことが実用上の大テーマです。

実験3: 2量子ビット回路プレイグラウンド

2本のワイヤにゲートを積んで、回路図と状態ベクトル・測定確率を確認できます。試すべきこと:(1) H(q0)→CNOT でベル状態。(2) X(q0) を先に入れてから同じ回路で $|\Phi^-\rangle$。(3) H(q0)→H(q1)→CZ→H(q1) が CNOT と同じ結果になること。(4) 位相キックバック: X(q1)→H(q1)→H(q0)→CNOT で q0 が $|-\rangle$ に変わること。

q0: q1:
2量子ビット:
P(00)
P(01)
P(10)
P(11)

表記は |q0 q1⟩ の順(教科書式)。Qiskitの出力とは左右逆になることに注意。

Qiskitで試す
qc = QuantumCircuit(2)
qc.x(1); qc.h(1)      # 標的を |−⟩ に
qc.h(0)               # 制御を |+⟩ に
qc.cx(0, 1)           # 位相キックバック発生
qc.h(0)               # 相対位相を確率に変換
print(Statevector.from_instruction(qc))  # q0 は |1⟩ に確定しているはず
制御ゲートは qc.cx(制御, 標的), qc.cz(0,1), qc.swap(0,1), さらに任意ゲートの制御化 qc.cp(θ, 0, 1)(制御位相)など。上のコードは演習3-7の答え合わせに使えます。

演習3

問 3-1ウォームアップ

CNOT(制御q0)を次の状態に作用させよ。(a) $|10\rangle$ (b) $\frac{|00\rangle + |10\rangle}{\sqrt2}$ (c) $|+\rangle|+\rangle$

解答を見る

(a) 制御が1なので標的反転:$|11\rangle$。(b) 基底ごとに:$|00\rangle \to |00\rangle$, $|10\rangle \to |11\rangle$、よって $\frac{|00\rangle + |11\rangle}{\sqrt2}$(ベル状態)。(c) $|+\rangle|+\rangle = \frac12(|00\rangle + |01\rangle + |10\rangle + |11\rangle)$ の各項を変換すると $\frac12(|00\rangle + |01\rangle + |11\rangle + |10\rangle)$ で元と同じ。$|+\rangle|+\rangle$ はCNOTの固有状態(固有値1)です。「CNOTを掛けても何も起きない入力がある」——固有状態の感覚を養う例です。

問 3-2ウォームアップ

制御$U$の定義 $|0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes U$ に $U = Z$ を代入し、CZ の $4 \times 4$ 行列 $\mathrm{diag}(1,1,1,-1)$ を導け。

解答を見る

$|0\rangle\langle 0| \otimes I = \mathrm{diag}(1,1,0,0)$、$|1\rangle\langle 1| \otimes Z = \mathrm{diag}(0,0,1,-1)$。和は $\mathrm{diag}(1,1,1,-1)$ ✓。射影 $|0\rangle\langle 0|, |1\rangle\langle 1|$(ステップ1演習1-10)が「場合分け」の実装部品として働いています。この「射影で場合分けを書く」パターンは制御ゲート全般の設計図です。

問 3-3ウォームアップ

次の回路の出力を求めよ(ベル回路の変種)。

q0: |0⟩ ──[H]──●──[H]──
               │
q1: |0⟩ ───────⊕───────

解答を見る

CNOTまでで $\frac{|00\rangle + |11\rangle}{\sqrt2}$。最後の $H \otimes I$ で $\frac{|+\rangle|0\rangle + |-\rangle|1\rangle}{\sqrt2} = \frac{|00\rangle + |10\rangle + |01\rangle - |11\rangle}{2}$。4つの確率はすべて $\frac14$。ベル状態に片側だけ $H$ を掛けると相関が「見えなく」なる——どの基底で見るかで相関の見え方が変わる例です(ベル状態の相関はX基底同士で見ればまだ残っています。第4章演習で再訪)。

問 3-4基本

$(I \otimes H)\,\mathrm{CZ}\,(I \otimes H) = \mathrm{CNOT}$ を示せ。ヒント: 制御$U$の表式を使うと $(I \otimes H)(|0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes Z)(I \otimes H)$ が整理できる。また、この等式とCZの対称性から「CNOTの向きはHで挟むと反転する」を導け。

解答を見る

$(I \otimes H)(|0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes Z)(I \otimes H) = |0\rangle\langle 0| \otimes HIH + |1\rangle\langle 1| \otimes HZH = |0\rangle\langle 0| \otimes I + |1\rangle\langle 1| \otimes X = \mathrm{CNOT}$ ✓($HZH = X$ を使用)。

後半:CZ は上下対称なので、CNOT(0→1) $= (I \otimes H)\,\mathrm{CZ}\,(I \otimes H)$、CNOT(1→0) $= (H \otimes I)\,\mathrm{CZ}\,(H \otimes I)$。2式からCZを消去すると、CNOTの向き反転は両ワイヤを $H$ で挟むことに等しい:$(H \otimes H)\,\mathrm{CNOT}_{0\to1}\,(H \otimes H) = \mathrm{CNOT}_{1\to0}$。「どちらが制御か」すら基底の取り方次第——X基底で見ると制御と標的の役割が入れ替わります。

問 3-5基本

GHZ状態 $\frac{|000\rangle + |111\rangle}{\sqrt2}$ を作る回路を書き、各ステップの状態を計算して確かめよ。

解答を見る
q0: |0⟩ ──[H]──●─────
               │
q1: |0⟩ ───────⊕──●──
                  │
q2: |0⟩ ──────────⊕──

$|000\rangle \to \frac{|000\rangle + |100\rangle}{\sqrt2} \to \frac{|000\rangle + |110\rangle}{\sqrt2} \to \frac{|000\rangle + |111\rangle}{\sqrt2}$ ✓。CNOT(0→1)とCNOT(0→2)の2本でも作れます(どちらの回路も正解)。「分岐の印をバケツリレーで増やす」パターンは何量子ビットでも同じです。

問 3-6基本

SWAP = CNOT(0→1)·CNOT(1→0)·CNOT(0→1) を、基底状態 $|01\rangle$ と $|10\rangle$ について追跡して確かめよ($|00\rangle, |11\rangle$ は明らかに不変)。古典プログラミングの「XOR3回でスワップ」(a^=b; b^=a; a^=b)と同じ仕掛けであることに注目。

解答を見る

$|01\rangle$: CNOT(0→1)で制御q0=0、不変 $|01\rangle$ → CNOT(1→0)で制御q1=1、q0反転 $|11\rangle$ → CNOT(0→1)で制御q0=1、q1反転 $|10\rangle$ ✓。$|10\rangle$ も同様に $|10\rangle \to |11\rangle \to |01\rangle$ ✓。まさに「テンポラリ変数なしのXORスワップ」の量子版で、CNOTが「標的 ⊕= 制御」というXOR代入であることがよく分かります。線形性により、基底で正しければ任意の重ね合わせ状態の交換も正しく動きます。

問 3-7基本

【位相キックバックの実戦形】入力 $|+\rangle \otimes |-\rangle$ にCNOTを掛けたあと、制御側に $H$ を掛けて標準基底で測定する。q0の測定結果を予言せよ。次に、CNOTの代わりに「何もしない($I$)」場合の結果と比較せよ。

解答を見る

キックバック($X|-\rangle = -|-\rangle$、固有値 $-1$)で制御側は $|+\rangle \to |-\rangle$。$H|-\rangle = |1\rangle$ なのでq0は確率1で1。CNOTなしなら制御は $|+\rangle$ のままで $H|+\rangle = |0\rangle$、確率1で0。つまりこの回路は「CNOTが挿入されたか否か」を1回の測定で確実に判定します。「ゲートが作用したかどうかを、標的の状態を一切変えずに($|-\rangle$ のまま)制御側で検出する」——Deutsch-Jozsaアルゴリズム(ステップ3)は、この判定器で関数の性質を1回のクエリで見抜きます。

問 3-8考え方

制御$T$($T$ の固有値は $1$ と $e^{i\pi/4}$)に、制御側 $|+\rangle$、標的側 $|1\rangle$ を入れると、制御側の状態はどうなるか。この操作を $k$ 回繰り返すと制御側はどうなるか。この「固有値の位相を制御側に累積させる」操作が、位相推定アルゴリズム(ステップ3)の原型です。

解答を見る

$T|1\rangle = e^{i\pi/4}|1\rangle$(固有値 $e^{i\pi/4}$)なので、キックバックで制御側は $\frac{|0\rangle + e^{i\pi/4}|1\rangle}{\sqrt2}$。$k$ 回繰り返すと位相が累積して $\frac{|0\rangle + e^{ik\pi/4}|1\rangle}{\sqrt2}$(ブロッホ球の赤道を45°ずつ回る)。標的は常に $|1\rangle$ のまま。未知のユニタリの固有値 $e^{i\lambda}$ を、制御回数 $k$ を変えながらキックバックで「巻き取り」、H–位相–H変換で読み出す——これが位相推定の全体構想で、Shorのアルゴリズムはこれで周期を抽出します。部品はもう全部あなたの手元にあります。

問 3-9考え方

「CNOTの制御ビットは変化しない」という説明は、標準基底の入力については正しい。しかし問3-7では制御側が $|+\rangle$ から $|-\rangle$ に変化した。矛盾しないのはなぜか。「制御ビットは変化しない」という言明の正確な適用範囲を述べよ。

解答を見る

「制御は不変」は標準基底の入力($|0\rangle$ か $|1\rangle$)に限った言明です。CNOTの行列を見ると確かに制御ビットの値(第1ビット)はどの基底状態でも保存されます。しかし重ね合わせの入力では、各分岐に付く位相の違い($|1\rangle|u\rangle$ 分岐だけ $e^{i\lambda}$)が制御側の相対位相として現れ、標準基底以外で見ると状態変化になります。教訓:「このゲートは○○する」という日本語の説明はたいてい標準基底での話で、重ね合わせに対する振る舞いは行列(または線形性)でしか正確に語れません。回路の直観的説明を聞いたら「それはどの基底での話か?」と問い返す癖をつけてください。

理解チェックリスト