最初の原則からのプレゼンテーションについては、Ryan O'Donnellの回答が好きです。しかし、少し高いレベルの代数的処理のために、ここでそれをどのように行うかを示します。
ユニタリに対する制御操作の主な特徴は、単一のキュービットの値に応じて、いくつかのキュービットに対して(コヒーレントに)操作を実行することです。これを明示的に代数的に(最初のキュービットを制御して)書く方法は次のとおりです。
ここで、はと同じ次元の単位行列です。ここで、およびは、状態およびへのプロジェクターですU C UUU1 U | 0 ⟩
CU=|0⟩⟨0|⊗1+|1⟩⟨1|⊗U
1U| 1 ⟩|0⟩⟨0|| 0 ⟩ | 1 ⟩|1⟩⟨1||0⟩|1⟩ 制御キュービットの—しかしここではそれらを測定の要素として使用するのではなく、最初のキュービットの状態空間のいずれかのサブスペースに依存する他のキュービットへの影響を説明するために使用します。
我々は、ゲートのための行列を導出するためにこれを使用することができ行う量子ビット3の操作を、コヒーレント制御-として本の考え方によって、量子ビット1の状態を条件量子ビット2および3の操作:
X( 1 2CX1,3XC X 1 、3(12⊗X)
CX1,3=|0⟩⟨0|⊗14+|1⟩⟨1|⊗(12⊗X)=[140404(12⊗X)]=⎡⎣⎢⎢⎢12020202021202020202X02020202X⎤⎦⎥⎥⎥,
ここで、後者の2つは、スペース(および健全性)を節約するためのブロック行列表現です。
さらに良いこと:テンソル因子の順序が一定の順序である必要がないことを自分で認識できる数学的レベルでは、操作の制御とターゲットは任意の2つのテンソル上にあることが認識できます。そして、他のすべてのキュービットの演算子の説明を埋めることができること。これにより、表現に直接ジャンプできます
C X 1 、312
CX1,3==|0⟩⟨0|control⊗12uninvolved⊗12target⎡⎣⎢⎢⎢12020202021202020202020202020202⎤⎦⎥⎥⎥+|1⟩⟨1|control⊗12uninvolved⊗Xtarget+⎡⎣⎢⎢⎢02020202020202020202X02020202X⎤⎦⎥⎥⎥
また、コントロールとターゲットの役割が逆になった場合の対処方法をすぐに確認できます。
CX3,1===12target⊗12uninvolved⊗|0⟩⟨0|control⎡⎣⎢⎢⎢⎢⎢|0⟩⟨0||0⟩⟨0||0⟩⟨0||0⟩⟨0|⎤⎦⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢10000000000001000010000000000001+Xtarget⊗12uninvolved⊗|1⟩⟨1|control+⎡⎣⎢⎢⎢⎢⎢|1⟩⟨1||1⟩⟨1||1⟩⟨1||1⟩⟨1|⎤⎦⎥⎥⎥⎥⎥00001000010000000000001000010000⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥.
しかし何よりも、これらの演算子を代数的に書き留めることができれば、ような式を使用して代数的にこれらの演算子について推論する代わりに、巨大な行列を完全に省くための最初のステップを取ることができます
および
CX1,3=|0⟩⟨0|⊗12⊗12+|1⟩⟨1|⊗12⊗XCX3,1=12⊗12⊗|0⟩⟨0|+X⊗12⊗|1⟩⟨1|。もちろん、これらを使ってできることには制限があります—表現の単純な変更は、困難な量子アルゴリズムを効率的に解ける可能性は低く、手作業による計算も扱いにくいですが、単純な回路をはるかに効果的に推論できます巨大な空間を食べる行列よりもこれらの式を使用します。