$\newcommand{\ket}[1]{|{#1}\rangle}\newcommand{\bra}[1]{\langle{#1}|}$Utilizando un entorno de programación matemática, simule el protocolo de teletransporte cuántico para transmitir el estado:
\begin{align*} \mu = \begin{bmatrix} 3/4 & 1/8\\ 1/8 & 1/4 \end{bmatrix}. \end{align*}Definimos el estado a transmitir:
import numpy as np
mu = np.array([[3/4, 1/8], [1/8, 1/4]])
El protocolo de teletransporete está ilustrado en el siguiente diagrama de bloques:
Vamos a simular el protocolo de teletransporte paso a paso:
Paso 1: Alice y Bob comparten un ebit formado por $\rho^A$ y $\sigma^B$, descrito por el estado compuesto
\begin{align*} \delta^{AB} = \dfrac{1}{2} \left[\begin{smallmatrix} 1 & 0 & 0 & 1\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0\\ 1 & 0 & 0 & 1 \end{smallmatrix}\right]. \end{align*}# Generamos el estado entrelazado compartido:
Paso 2: Alice tiene acceso al cúbit $\mu^A = \mu$ a transmitir y aplica una medida conjunta sobre $\mu^A$ y su parte $\rho^A$ del ebit compartido utilizando el POVM $\bigl\{\Pi_{0}, \Pi_{1}, \Pi_{2}, \Pi_{3}\bigr\}$ visto en el protocolo de codificación superdensa, tal que
\begin{align*} \Pi_{0} = \dfrac{1}{2} \left[\begin{smallmatrix} 1 & 0 & 0 & 1\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0\\ 1 & 0 & 0 & 1 \end{smallmatrix}\right],\quad \Pi_{1} = \dfrac{1}{2} \left[\begin{smallmatrix} 0 & 0 & 0 & 0\\ 0 & 1 & 1 & 0\\ 0 & 1 & 1 & 0\\ 0 & 0 & 0 & 0 \end{smallmatrix}\right],\quad \Pi_{2} = \dfrac{1}{2} \left[\begin{smallmatrix} 0 & 0 & 0 & 0\\ 0 & 1 &-1 & 0\\ 0 &-1 & 1 & 0\\ 0 & 0 & 0 & 0 \end{smallmatrix}\right],\quad \Pi_{3} = \dfrac{1}{2} \left[\begin{smallmatrix} 1 & 0 & 0 &-1\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0\\ -1 & 0 & 0 & 1 \end{smallmatrix}\right]. \end{align*}Para poder modelar esta medida, es necesario considerar el estado del sistema completo, dado por
\begin{align*} \theta^{AAB} = \mu^A\otimes\delta^{AB}. \end{align*}En la medida Alice observa un resultado $m\in\{0,1,2,3\}$, por lo que el estado conjunto pasa a ser
\begin{align*} \theta^{AAB}_m = \frac{1}{p_m}\bigl( \Pi_{m} \otimes I_2\bigr) \theta^{AAB} \bigl( \Pi_{m}^H \otimes I_2\bigr). \end{align*}# Generamos el estado conjunto incluyendo el estado muA y el ebit compartido
# Definimos el POVM para la medida
# Aplicamos la medida. El estado resultante en función del valor observado es
Paso 3: Alice envía el resultado de la medida $m\in\{0,1,2,3\}$ (equivalente a dos bits de información clásica) a Bob utilizando dos usos de un canal clásico ideal, por lo que Bob conoce a cuál de las 4 opciones ha colapsado el sistema.
Paso 4: En función del valor de $m$ recibido, Bob aplica una puerta de Pauli $\{I,X,Y,Z\}$ a su parte $\sigma^B$ del estado global $\theta^{AAB}_m$. Para modelar este proceso, definimos las matrices unitarias correspondientes al sistema completo:
\begin{align*} &U_0^{AAB} = I_2 \otimes I_2 \otimes I,\quad &U_1^{AAB} = I_2 \otimes I_2 \otimes X,\\ &U_2^{AAB} = I_2 \otimes I_2 \otimes Y,\quad &U_3^{AAB} = I_2 \otimes I_2 \otimes Z, \end{align*}y obtenemos el nuevo estado tras aplicar la transformación correspondiente
\begin{align*} \phi^{AAB}_m = U_m^{AAB} \theta^{AAB}_m \bigl(U_m^{AAB}\bigr)^H,\quad m=0,1,2,3. \end{align*}# Preparamos las transformaciones a aplicar al estado completo
# Aplicamos la transformación correspondiente para cada valor de m
Paso 5: Como resultado de aplicar esta operación, la parte $\sigma^B$ del estado compuesto se transforma en el estado $\mu$ que se desaba transmitir. Para ver esto marginalizamos el estado compuesto $\phi^{AAB}_m$ por medio de la traza parcial
\begin{align*} \sigma_m^B = \text{Tr}_{AA} \bigl[ \phi^{AAB}_m \bigr], \end{align*}y se puede comprobar que $\sigma_m^B = \mu$.
# La marginalización de las dos partes de Alice se puede llevar a cabo con esta operación:
def traceAA(phiAAB):
sigmaB = phiAAB[0:2, 0:2] + phiAAB[2:4, 2:4] + phiAAB[4:6, 4:6] + phiAAB[6:8, 6:8]
return sigmaB
# La aplicamos para cada una de las posibilidades
Cuestión 1. Compruebe que el estado de salida $\mu^B$ coincide con el estado original.
Cuestión 2. Compruebe que el estado original se ha destruido en el proceso.
Para ver como ha quedado la parte $\mu^A$ en Alice, es necesario descartar la parte $\rho^A$ y $\sigma^B$ del sistema completo. Esto se puede hacer con la siguinete operación de traza parcial:
def traceAB(phiAAB):
muA = np.array([[np.trace(phiAAB[0:4, 0:4]), np.trace(phiAAB[0:4, 4:8])],
[np.trace(phiAAB[4:8, 0:4]), np.trace(phiAAB[4:8, 4:8])]])
return muA
# La aplicamos para cada una de las posibilidades