La clave para hacer una compuerta CNOT es poder encender y apagar las interacciones entre dos qubits.
Siguiendo el sistema físico que propones, digamos que nuestros qubits son los grados de libertad de espín arriba y espín abajo de dos electrones en algunos átomos. Estos espines pueden interactuar con un potencial externo, que es cómo hacemos las rotaciones de un qubit, pero también interactuarán significativamente entre sí si están lo suficientemente cerca juntos. El Hamiltoniano total típicamente se verá así
$H=H_1 + H_2 - g\vec{S_1} \cdot \vec{S_2}$
donde $H_1$, $H_2$ son las interacciones individuales que los átomos tienen con el potencial externo, cada uno de los cuales es independiente del otro. $g$ es solo algún acoplamiento, que dependería de la distancia y posiblemente de otras cosas. La física de esto es que dos espines pueden bajar sus energías alineándose entre sí.
Supongamos que de alguna manera puedes encender y apagar $g$- la forma más fácil de imaginar es simplemente llevando repentinamente los átomos muy cerca uno del otro por un tiempo $T$, luego moviéndolos rápidamente aparte. Esto tiene el siguiente efecto:
$|\uparrow \uparrow> \rightarrow e^{igT} |\uparrow \uparrow> \\ |\uparrow \downarrow> \rightarrow e^{-igT}|\uparrow \downarrow> \\ |\downarrow \uparrow> \rightarrow e^{-igT}|\downarrow \uparrow> \\ |\downarrow \downarrow> \rightarrow e^{igT}|\downarrow \downarrow>$
Es decir, solo hace un desplazamiento de fase que depende de si los espines están alineados. Aunque no es obvio, esto, junto con operaciones de un qubit, es todo lo que se necesita para obtener una compuerta CNOT. Específicamente, una forma de hacer esto es establecer $T = \frac{\pi}{4g}$ y realizar la siguiente secuencia (adaptada de http://www.ohio.edu/people/diao/papers/nmr.pdf):
CNOT = $Z^1_{-\pi/2}Y^2_{-\pi/2}Z^2_{-\pi/2}GY^2_{\pi/2}$, donde $G$ es la compuerta de interacción definida anteriormente, y las compuertas de un solo qubit están etiquetadas por el eje de rotación, ángulo de rotación y el qubit en el que operan. Nota que estos están escritos en el orden en que se aplicarían a un estado en la derecha, por lo que la compuerta $Y^2_{\pi/2}$ se aplica primero y luego se ejecutan de derecha a izquierda.
Hablando en términos generales, lo que sucede es que la primera compuerta toma la entrada y la coloca en una superposición de espín si comenzó en un espín definido, de modo que la interacción pueda darte diferentes fases para las diferentes partes de la superposición (espines alineados vs. antialineados). Luego, las tres rotaciones posteriores convierten estos desplazamientos de fase condicionales en un intercambio de bits condicional.