$\newcommand{\ket}[1]{|{#1}\rangle}\newcommand{\bra}[1]{\langle{#1}|}$La idea de la transmisión de información por entrelazamiento aparece representada en la siguiente figura:
Definimos el estado máximamente entrelazado \begin{align*} \delta^{AB} = \frac{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*} donde el superíndice $AB$ hace referencia a que la primera parte del estado pertenece a Alice y la segunda a Bob.
import numpy as np
deltaAB = np.array([[1,0,0,1],[0,0,0,0],[0,0,0,0],[1,0,0,1]])/2
print('deltaAB =\n', deltaAB)
deltaAB = [[0.5 0. 0. 0.5] [0. 0. 0. 0. ] [0. 0. 0. 0. ] [0.5 0. 0. 0.5]]
Consideramos los proyectores de medida: \begin{align*} \Pi_{0}^A=\begin{bmatrix}1&0\\0&0\end{bmatrix},\quad \Pi_{1}^A=\begin{bmatrix}0&0\\0&1\end{bmatrix},\quad \Pi_{+}^A=\frac{1}{2}\begin{bmatrix}+1&+1\\+1&+1\end{bmatrix},\quad \Pi_{-}^A=\frac{1}{2}\begin{bmatrix}+1&-1\\-1&+1\end{bmatrix}. \end{align*}
Pi0A = np.array([[1,0],[0,0]])
Pi1A = np.array([[0,0],[0,1]])
PipA = np.array([[+1,+1],[+1,+1]])/2
PimA = np.array([[+1,-1],[-1,+1]])/2
print('Pi0A =\n', Pi0A, '\nPi1A =\n', Pi1A,'\nPipA =\n', PipA,'\nPimA =\n', PimA)
Pi0A = [[1 0] [0 0]] Pi1A = [[0 0] [0 1]] PipA = [[0.5 0.5] [0.5 0.5]] PimA = [[ 0.5 -0.5] [-0.5 0.5]]
Ahora, Alice aplica una medida a su parte del estado compartido con Bob:
Para aplicar la medida al estado conjunto, definimos las matrices de dimensión $4\times 4$ dadas por $\Pi_k^{AB} = \Pi_k^A \otimes \boldsymbol{I}_2^B$, donde $k\in\{0,1,+,-\}$.
I2B = np.array([[1,0],[0,1]]) # Bob no hace nada en su parte
# Definimos las medidas conjuntas:
Pi0AB = np.kron(Pi0A,I2B)
Pi1AB = np.kron(Pi1A,I2B)
PipAB = np.kron(PipA,I2B)
PimAB = np.kron(PimA,I2B)
print('Pi0AB =\n', Pi0AB, '\nPi1AB =\n', Pi1AB,'\nPipAB =\n', PipAB,'\nPimAB =\n', PimAB)
Pi0AB = [[1 0 0 0] [0 1 0 0] [0 0 0 0] [0 0 0 0]] Pi1AB = [[0 0 0 0] [0 0 0 0] [0 0 1 0] [0 0 0 1]] PipAB = [[0.5 0. 0.5 0. ] [0. 0.5 0. 0.5] [0.5 0. 0.5 0. ] [0. 0.5 0. 0.5]] PimAB = [[ 0.5 0. -0.5 -0. ] [ 0. 0.5 -0. -0.5] [-0.5 -0. 0.5 0. ] [-0. -0.5 0. 0.5]]
Si Alice aplica el POVM$_{01}= \bigl\{\Pi_{0}^A,\Pi_{1}^A\bigr\}$, y teniendo en cuenta que Bob no puede conocer el resultado de la medida, obtenemos el nuevo estado conjunto: \begin{align*} \theta_{01}^{AB} = \Pi_{0}^{AB} \delta^{AB} \Pi_{0}^{AB} + \Pi_{1}^{AB} \delta^{AB} \Pi_{1}^{AB} = \frac{1}{2} \left[\begin{smallmatrix} 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 \end{smallmatrix}\right]. \end{align*}
theta01AB = Pi0AB@deltaAB@Pi0AB + Pi1AB@deltaAB@Pi1AB
print('theta01AB =\n', theta01AB)
theta01AB = [[0.5 0. 0. 0. ] [0. 0. 0. 0. ] [0. 0. 0. 0. ] [0. 0. 0. 0.5]]
Si Alice aplica el POVM$_{+-} =\bigl\{\Pi_{+}^A,\Pi_{-}^A\bigr\}$, como Bob no conoce el resultado de la medida, obtenemos: \begin{align*} \theta_{+-}^{AB} = \Pi_{+}^{AB} \delta^{AB} \Pi_{+}^{AB} + \Pi_{-}^{AB} \delta^{AB} \Pi_{-}^{AB} = \frac{1}{4} \left[\begin{smallmatrix} 1 & 0 & 0 & 1\\ 0 & 1 & 1 & 0\\ 0 & 1 & 1 & 0\\ 1 & 0 & 0 & 1 \end{smallmatrix}\right]. \end{align*}
thetapmAB = PipAB@deltaAB@PipAB + PimAB@deltaAB@PimAB
print('thetapmAB =\n', thetapmAB)
thetapmAB = [[0.25 0. 0. 0.25] [0. 0.25 0.25 0. ] [0. 0.25 0.25 0. ] [0.25 0. 0. 0.25]]
El estado conjunto tras aplicar la medida es diferente en los dos casos, $\theta_{01}^{AB} \neq \theta_{+-}^{AB}$.
Sin embargo, Bob no tiene acceso a este estado conjunto, sino solo a una parte del mismo. Para conocer el estado desde el punto de vista de Bob, debemos marginalizar $\theta^{AB}$ eliminando la parte de Alice. Se tiene que \begin{align*} \sigma^B_{01} = \text{Tr}_A\bigl[\theta_{01}^{AB}\bigr] = \frac{1}{2} \left[\begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix}\right],\qquad \sigma^B_{+-} = \text{Tr}_A\bigl[\theta_{+-}^{AB}\bigr] = \frac{1}{2} \left[\begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix}\right]. \end{align*}
def traceA(delta): # traces out part A of a bipartite system
return np.array([[delta[0, 0] + delta[2, 2], delta[0, 1] + delta[2, 3]],
[delta[1, 0] + delta[3, 2], delta[1, 1] + delta[3, 3]]])
sigma_01B = traceA(theta01AB)
sigma_pmB = traceA(thetapmAB)
print('sigma_01B =\n', sigma_01B, '\nsigma_pmB =\n', sigma_pmB)
sigma_01B = [[0.5 0. ] [0. 0.5]] sigma_pmB = [[0.5 0. ] [0. 0.5]]
Podemos ver que $\sigma^B_0 = \sigma^B_1$. Así, Bob no puede distinguir ambos casos teniendo aceso únicamente a su parte del estado. Por tanto, la comunicación no es posible con este esquema.