はじめに
今日はCZ回路を少しみてみたいと思います。量子ニューロンをみていたらCZ回路が頻繁に出ます。
CZ回路とは?
CZ回路は量子計算の中で「コントロールビット」と「ターゲットビット」を持ち、コントロールゲートが1の時にターゲットビットの位相を反転させます。
a -----*-----
|
b -----Z-----
CZ回路はCXもしくはCNOTゲートにHゲートを適用することで実現できます。
a -----*-----
|
b ---H-X-H---
CZ回路はリバーシブル!
なんかCZ回路は「コントロールビット」と「ターゲットビット」がリバーシブルのようです。つまり、
a -----*----- a -----Z-----
| = |
b -----Z----- b -----*-----
つまり、、、
a -----*-----
|
b -----*-----
こういう風に書けそうです!
ユニタリ行列を確認
教えてもらいました。。。CZのユニタリ行列は、
CZ = [[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 -1]]
こうなりますが、行列変換を考えると、、、下記見辛いですが、[a,b,c,d]のベクトルにユニタリ行列をかけて、[a’,b’,c’,d’]をえます。
[a' = [[1 0 0 0] @ [a
b' [0 1 0 0] b
c' [0 0 1 0] c
d'] [0 0 0 -1]] d]
ユニタリ変換のmatrixは入出力を対応させると列が入力、行が出力に対応します。
a b c d
[[1 0 0 0] a'
[0 1 0 0] b'
[0 0 1 0] c'
[0 0 0 -1]] d'
もとの状態ベクトルに対応させると、
|00> |01> |10> |11>
[[1 0 0 0] |00>'
[0 1 0 0] |01>'
[0 0 1 0] |10>'
[0 0 0 -1]] |11>'
列の入力に対応して行の出力が対応します。上記のCZ回路のユニタリ変換だと、|11>の入力が-|11>となりますが、コントロールビットとターゲットビットを入れ替えてももともと両方|11>の回路が位相反転するだけなので、CZのユニタリ行列は変わりません。
見方を変えてみる
普通に式で書いてみても、やはり11の回路の確率振幅だけを符号反転させれば良さそうです。
CZ(01)(a|00>+b|01>+c|10>+d|11>) = a|00>+b|01>+c|10>-d|11>
CZ(10)(a|00>+b|01>+c|10>+d|11>) = a|00>+b|01>+c|10>-d|11>
まとめ
CZ回路は制御Z回路で、Z軸周りの回転を制御します。ユニタリ行列の形から反転可能ということがわかりました。以上です。