Suponiendo que esté considerando una computadora cuántica basada en compuerta, la forma más fácil de producir un estado enredado es producir uno de los estados de Bell. El siguiente circuito muestra el estado de Bell .El | Φ+⟩
Al examinar , | ψ 1 ⟩ y | ψ 2 ⟩El | ψ0 0⟩El | ψ1⟩El | ψ2⟩ podemos determinar el estado Entagled después de la aplicación de todas las puertas:
1. El | ψ0 0⟩ :
No sucede mucho aquí ya que no se aplicaron puertas en este punto. Por lo tanto, el estado de todo el sistema es solo el producto tensorial de los estados individuales que escribimos así:
El | ψ0 0⟩ = | 0 0 ⟩
El | ψ1⟩ :
La puerta de Hadamard se aplica al primer qubit que da como resultado lo siguiente:
El | ψ1⟩ = ( H⊗ yo) | 0 0 ⟩ = HEl | 0 ⟩ ⊗ | 0 ⟩ = 12-√( | 0 ⟩ + | 1 ⟩ ) | 0 ⟩ = 12-√( | 0 0 ⟩ + | 1 0 ⟩ )
El | ψ2⟩ :
Ahora se aplica una puerta CNOT y voltea el segundo qubit pero solo donde el primero tiene el valor 1. El resultado es
El | ψ2⟩ = 12-√( | 0 0 ⟩ + | 1 1 ⟩ )
El | ψ2⟩ es un estado Entagled y por lo general la forma más natural para llegar a tal situación. Los estados de campana ocurren en muchos algoritmos cuánticos interesantes, como la codificación súper densa o la teletransportación.
Aunque el enfoque anterior puede no parecerte programar en un sentido habitual, aplicar puertas a los estados es básicamente cómo funciona la programación de una computadora cuántica basada en puertas. Existen capas de abstracción que le permiten realizar programación de alto nivel pero traducir los comandos a la aplicación de puertas. La experiencia cuántica de IBM interfaz de proporciona tales características.
En un lenguaje como el Q # de Microsoft, el ejemplo anterior podría parecerse a esto:
operation BellTest () : ()
{
body
{
// Use two qubits
using (qubits = Qubit[2])
{
Set (One, qubits[0]);
Set (Zero, qubits[1]);
// Apply Hadamard gate to the first qubit
H(qubits[0]);
// Apply CNOT gate
CNOT(qubits[0],qubits[1]);
}
}
}
Puede encontrar una versión más detallada (incluida la medición) aquí: Microsoft: Escribir un programa cuántico .