Jedną z bramek realizującą zadania na dwóch kubitach jest bramka CNOT, która na bazie bitu kontrolnego decyduje czy zastosować operację X do drugiego kubitu.
Klasyczne komputery bardzo często wykorzystując operację kopiowania.
Zobaczmy jak taka operacja wygląda dla kubitów.
Rozwazmy obwod z operatorem C, który w działaniu na dwa kubity kopiuje wartość pierwszego kubitu na wynik drugiego. Drugi kubit mozna na początku ustawić w dowolnym stanie.
Chcemy skopiować stan \(\ket{\psi_0} = a\ket{0} + b\ket{1}\)
Stan początkowy układu: \(\ket{\psi_0} \otimes \ket{0}\)
Chcemy przekształcić na \(\ket{\psi_0} \otimes \ket{\psi_0}\) czyli
\[
C \left(\ket{\psi_0} \otimes \ket{0}\right) = \ket{\psi_0} \otimes \ket{\psi_0}
\]
Lewa strona
\[
C \left(\ket{\psi_0} \otimes \ket{0}\right) = C\left( (a\ket{0} + b\ket{1} ) \otimes \ket{0} \right)
\]\[
C\left( a\ket{0} \otimes \ket{0} + b\ket{1}\otimes \ket{0} \right) = a C \left(\ket{0} \otimes \ket{0}\right) + b C \left( \ket{1}\otimes \ket{0}\right)
\]\[
a \ket{00} + b \ket{11}
\]
dwa bity wejsciowe są takie same (00, 11) i dają na prawym bicie odpowiedzi 0.
dwa bity wejsciowe są rózne (10,01) i dają na prawym bicie odpowiedzi 1.
Aby napisać prawidłowe rozwiązanie musimy stworzyć bramki, które będą rozpoznawać czy dwa kubity są takie same czy tez rózne. Dla przypomnienia - klasycznie rolę taką pełni bramka XOR.