Rozważmy układ kwantowy składający się z dwu podukładów $A$ oraz $B$. Przestrzeń Hilberta takie układu ma strukturę iloczynu tensorowego
$\mathcal{H}=\mathcal{H}_A\otimes \mathcal{H}_B$
przy czym rozważamy przypadek, gdy wymiar przestrzeni jest skończony $dim\mathcal{H}<\infty$.
Dowolny stan układu $AB$ można zapisać w wybranej bazie ortonormalnej następująco:
$ \rho=\sum_{i,j,k,l} q_{i,j,k,l} |i,j\rangle\langle k,l| $
gdzie $|i,j\rangle\langle k,l|=|i\rangle\langle k|\otimes |j\rangle\langle l|$.
Sumowanie przebiega od $1$ do wymiaru odpowiedniej przestrzeni Hilberta. W szczególności w przypadku pary qubitów sumowanie jest sumą poczwórną od $1$ do $2$ każda.
Problem rozpoznania, czy stan czysty $\rho$ jest splątany jest prawie trywialny. Obliczamy ślad częściowy po dowolnym podukładzie:
$\rho_A=\mbox{Tr}_B \rho$
a następnie sparwdzamy, czy uzyskany stan $\rho_A$ jest mieszany obliczając na przykład jego entropię liniową:
$S_L[\rho_A]=1-\mbox{Tr}\rho_A^2$
$S_L=0$ wtedy i tyko wtedy, gdy $\rho$ jest separowalny.
W przypadku stanów mieszanych sytuacja się komplikuje. W pierwszym kroku musimy zdefiniować, co znaczy splatany w odniesieniu do stanu mieszanego. Już tu napotykamy na trudność. Definicja jest zaskakująca:
Definicja
Jeśli stan układu $AB$ możemy zapisać nastepująco:
$\rho=\sum_i p_i \rho_i^A \otimes \rho_i^B \,\,\,\,\,\,\,\, (\bullet)$
gdzie $\rho_i^{A,B}$ są pewnymi stanami podukładów $A$ oraz $B$ to stan $\rho$ nie jest splątany.
"Nie jest splątany"- a więc jaki ? Rozważmy sytuacje:
a. $p_i=\delta_{i,j}$ wówczas stan jest separowalny
b. $p_i \neq \delta_{i,j}$ wówczas stan nazwiemy niesplątanym, skorelowanym klasycznie.
jeżeli stan $\rho$ nie daje się zapisać w żadnej z powyższych postaci może być splątany. Na mocy kontrapozycji: jeżeli jest splątany to nie da się go zapisać w postaci $(\bullet)$.
Kryterium Peresa
Aby rozpoznać, czy stan jest w postaci $(\bullet)$ wykorzystamy operację częściowej transpozycji :
$ \rho^{PT}=\sum_{i,j,k,l} q_{i,j,k,l} |i\rangle\langle k|^T\otimes |j\rangle\langle l| $
operacja ta działa jak transpozycja na jednym z podukładów dając macierz:
$ \rho^{PT}=\sum_{i,j,k,l} q_{i,j,k,l} |k\rangle\langle i|\otimes |j\rangle\langle l| $
Zauważmy, że w przypadku stanu ($\bullet$) wynikiem częściowej transpozycji stanu $\rho$ jest nowy stan $\rho'$:
$\rho^{PT}=\sum_i p_i [\rho_i^A]^T \otimes \rho_i^B =\rho'$
gdyż stany $\rho_i^A$ są hermitowskie.
Może się jednak zdarzyć, że częsciowa traspozycja daje macierz, która nie jest stanem:
$\rho^{PT}\neq \rho'$
i nie jest nieujemnie określona (ma ujemne wartości własne). Jeśli tak się zdarzy wiemy, że stan $\rho$ jest splątany. Taki typ stanu splątanego nazywamy stanem NPT (negative wr. to partial transposition).
Uwaga Stany NPT nie są jedynymi stanami splatanymi. W ogólności istnieją stany splatane, których częściowa transpozycja prowadzi do innego stanu, Są to stany splatane PPT.
Twierdzenie Horodeckich
W przypadku, gdy układ $AB$ składa się z pary qubitów (wymiar $2\otimes 2$) lub pary qubit-qutrit (wymiar $2\otimes 3$) wszystkie stany splątane są NPT.
Ujemność (negativity)
Kryterium Peresa pozwala na kostrukcję użytecznej miary splatania. Ujemność pozwala ocenić jak bardzo stan jest splatany. Miara ta zdefiniowana jest następująco:
$ N[\rho]=\sum_i (|\lambda_i|-\lambda_i)$
gdzie $\rho^{PT}|\lambda_i\rangle = \lambda_i|\lambda_i\rangle$, innymi słowy, $\lambda_i$ to wartości własne macierzy $\rho^{PT}$.
Jeśli $N[\rho]>0$ to stan $\rho$ jest stanem splątanym (NPT).
Uwaga Detekcja stanów splątanych PPT za pomocą ujemności jest niemożliwa.
Ujemność jest miarą alternatywną do concurrence. Zaletą $N$ jest łatwość jej obliczenia niezależnie od wymiaru przestrzeni stanów.
Przystąpimy do konstrujcji narzędzia numerycznego do obliczania ujemności. Rozpocznijmy od pobrania odpowiednich narzędzi:
from qutip import *
from pylab import *
%pylab inline
Populating the interactive namespace from numpy and matplotlib
WARNING: pylab import has clobbered these variables: ['power', 'linalg', 'draw_if_interactive', 'random', 'save', 'load', 'info', 'fft'] `%pylab --no-import-all` prevents importing * from pylab and numpy
Jako przykład wykorzystamy jeden ze stanów Bella:
B0=(tensor(basis(2,0),basis(2,0))+tensor(basis(2,1),basis(2,1))).unit()
Ujemność obliczać będziemy za pomocą zdefiniowanej poniżej funkcji negat() wykorzystującej funkcję QuTipa partial_transpose():
def negat(rho):
xx=partial_transpose(rho,[0,1])
vv=xx.eigenenergies()
n=0.0
for i1 in range(0,rho.shape[0]):
n=n+abs(vv[i1])-vv[i1]
return n
Dalej przedstawimy wizualizację ujemności dla następującej rodziny stanów:
$\rho=(1-p)\rho_{Bell}+\frac{p}{4}\mathbf{I}, p\in[0,1]$
czyli zdepolaryzowanych stanów Bella. Należy zauważyć, że wybór ten pozwala na weryfikację uzyskanych wyników poprzez porównanie z wynikami analitycznymi.
plist=linspace(0,1,50)
nlist=zeros(len(plist))
Po zdefiniowaniu list zawierających wartości $p$ i $N$ obliczmy:
for i1 in range(len(plist)):
p=plist[i1]
rho=(1.0-p)*ket2dm(B0)+p/4.0*tensor(qeye(2),qeye(2))
nlist[i1]=negat(rho)
A następnie wykreślmy wynik:
plot(plist,nlist,'-',label='', linewidth=4)
xlabel('p',fontsize=20)
ylabel('N',fontsize=20)
show()