$\newcommand{\ket}[1]{|{#1}\rangle}\newcommand{\bra}[1]{\langle{#1}|}$Queremos transmitir un estado cuántico binario $\rho = \ket{0}\bra{0} = \left[\begin{smallmatrix}1&0\\0&0\end{smallmatrix}\right]$ sobre un canal \begin{align*} U = \frac{1}{\sqrt{2}} \left[\begin{matrix}+1&+1\\+1&-1\end{matrix}\right],\quad U^H = U, \end{align*} donde la matriz $U$ se asume conocida en el receptor. En este caso, la salida del canal está dada por \begin{align*} \sigma = U \rho U^{H} = \frac{1}{2} \left[\begin{matrix}1&1\\1&1\end{matrix}\right]. \end{align*}
import numpy as np
ket0 = np.array([[1], [0]])
rho = ket0@ket0.conj().T
U = np.array([[1, 1], [1, -1]]) / np.sqrt(2)
sigma = U @ rho @ U.conj().T
print('rho =\n', rho, '\nU =\n', U, '\nsigma =\n', sigma)
rho = [[1 0] [0 0]] U = [[ 0.70710678 0.70710678] [ 0.70710678 -0.70710678]] sigma = [[0.5 0.5] [0.5 0.5]]
Para recuperar el estado original, invertimos la transformación introducida por el canal \begin{align*} \hat\rho &= U^{H} \sigma U = \frac{1}{4} \left[\begin{matrix}1&1\\1&-1\end{matrix}\right] \left[\begin{matrix}1&1\\1&1\end{matrix}\right] \left[\begin{matrix}1&1\\1&-1\end{matrix}\right] = \left[\begin{matrix}1&0\\0&0\end{matrix}\right] = \rho. \end{align*}
rho_hat = U.conj().T @ sigma @ U
print('rho_hat =\n', rho_hat)
rho_hat = [[1.00000000e+00 6.22328532e-19] [3.25176795e-17 5.97792087e-34]]
Podemos ver que hemos recuperado el estado original. Esto ocurre no solo para el estado considerado en este ejercicio, sino para para cualquier estado $\rho$ a la entrada del canal. Entonces, con este esquema podemos transmitir sin errores un cúbit de información a través de este canal cuántico binario.