:py:mod:`state_opt.ppt_distinguishability` ========================================== .. py:module:: state_opt.ppt_distinguishability .. autoapi-nested-parse:: PPT distinguishability. Module Contents --------------- Functions ~~~~~~~~~ .. autoapisummary:: state_opt.ppt_distinguishability.dual_problem state_opt.ppt_distinguishability.ppt_distinguishability state_opt.ppt_distinguishability.primal_problem .. py:function:: dual_problem(states, probs = None, dist_method = 'min-error') Calculate dual problem for PPT distinguishability. The minimum-error semidefinite program implemented is defined as: .. math:: \begin{aligned} \text{minimize:} \quad & \frac{1}{k} \text{Tr}(Y) \\ \text{subject to:} \quad & Y - \rho_j \geq \text{T}_{\mathcal{A}} (Q_j), \quad j = 1, \ldots, k, \\ & Y \in \text{Herm}(\mathcal{A} \otimes \mathcal{B}), \\ & Q_1, \ldots, Q_k \in \text{Pos}(\mathcal{A} \otimes \mathcal{B}). \end{aligned} The unambiguous semidefinite program implemented is defined as: .. math:: \begin{aligned} \text{minimize:} \quad & \frac{1}{k} \text{Tr}(Y) \\ \text{subject to:} \quad & Y - \rho_j + \sum_{\substack{i \leq i \leq k \\ i \not= j}} y_{i,j} \rho_i \geq T_{\mathcal{A}}(Q_j), \quad j = 1, \ldots, k, \\ & Y \geq T_{\mathcal{A}}(Q_{k+1}), \\ & Y \in \text{Herm}(\mathcal{A} \otimes \mathcal{B}), \\ & Q_1, \ldots, Q_k \in \text{Pos}(\mathcal{A} \otimes \mathcal{B}), \\ & y_{i,j} \in \mathcal{R}. \quad 1 \leq i, j \leq k, \quad i \not= j. \end{aligned} :param states: A list of states provided as either matrices or vectors. :param probs: Respective list of probabilities each state is selected. :param dist_method: Method of distinguishing to use. :return: The optimal value of the PPT dual problem SDP. .. py:function:: ppt_distinguishability(states, probs = None, dist_method = 'min-error', strategy = False) Compute probability of optimally distinguishing a state via PPT measurements :cite:`Cosentino_2013_PPT`. Implements the semidefinite program (SDP) whose optimal value is equal to the maximum probability of perfectly distinguishing orthogonal maximally entangled states using any PPT measurement; a measurement whose operators are positive under partial transpose. This SDP was explicitly provided in :cite:`Cosentino_2013_PPT`. One can specify the distinguishability method using the :code:`dist_method` argument. For :code:`dist_method = "min-error"`, this is the default method that yields the probability of distinguishing quantum states via PPT measurements that minimize the probability of error. For :code:`dist_method = "unambiguous"`, Alice and Bob never provide an incorrect answer, although it is possible that their answer is inconclusive. For more info, go to the tutorial in the documentation :ref:`ref-label-state-dist-ppt`. .. rubric:: Examples Consider the following Bell states: .. math:: \begin{equation} \begin{aligned} |\psi_0 \rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}, &\quad |\psi_1 \rangle = \frac{|01\rangle + |10\rangle}{\sqrt{2}}, \\ |\psi_2 \rangle = \frac{|01\rangle - |10\rangle}{\sqrt{2}}, &\quad |\psi_3 \rangle = \frac{|00\rangle - |11\rangle}{\sqrt{2}}. \end{aligned} \end{equation} It was illustrated in :cite:`Yu_2012_Four` that for the following set of states .. math:: \begin{equation} \begin{aligned} \rho_1^{(2)} &= |\psi_0 \rangle | \psi_0 \rangle \langle \psi_0 | \langle \psi_0 |, \\ \rho_2^{(2)} &= |\psi_1 \rangle | \psi_3 \rangle \langle \psi_1 | \langle \psi_3 |, \\ \rho_3^{(2)} &= |\psi_2 \rangle | \psi_3 \rangle \langle \psi_2 | \langle \psi_3 |, \\ \rho_4^{(2)} &= |\psi_3 \rangle | \psi_3 \rangle \langle \psi_3 | \langle \psi_3 |, \\ \end{aligned} \end{equation} that the optimal probability of distinguishing via a PPT measurement should yield :math:`7/8 \approx 0.875` as was proved in :cite:`Yu_2012_Four`. >>> from toqito.states import bell >>> from toqito.state_opt import ppt_distinguishability >>> # Bell vectors: >>> psi_0 = bell(0) >>> psi_1 = bell(2) >>> psi_2 = bell(3) >>> psi_3 = bell(1) >>> >>> # YDY vectors from :cite:`Yu_2012_Four`. >>> x_1 = np.kron(psi_0, psi_0) >>> x_2 = np.kron(psi_1, psi_3) >>> x_3 = np.kron(psi_2, psi_3) >>> x_4 = np.kron(psi_3, psi_3) >>> >>> # YDY density matrices. >>> rho_1 = x_1 * x_1.conj().T >>> rho_2 = x_2 * x_2.conj().T >>> rho_3 = x_3 * x_3.conj().T >>> rho_4 = x_4 * x_4.conj().T >>> >>> states = [rho_1, rho_2, rho_3, rho_4] >>> probs = [1 / 4, 1 / 4, 1 / 4, 1 / 4] >>> ppt_distinguishability(states, probs) 0.875 .. rubric:: References .. bibliography:: :filter: docname in docnames :param states: A list of states provided as either matrices or vectors. :param dist_method: The method of distinguishing states. :param probs: Respective list of probabilities each state is selected. :param dist_method: Method of distinguishing to use. :param strategy: Returns strategy if :code:`True` and does not otherwise. :return: The optimal probability with which the states can be distinguished via PPT measurements. .. py:function:: primal_problem(states, probs = None, dist_method = 'min-error') Calculate primal problem for PPT distinguishability. The minimum-error semidefinite program implemented is defined as: .. math:: \begin{aligned} \text{maximize:} \quad & \sum_{j=1}^k \langle P_j, \rho_j \rangle \\ \text{subject to:} \quad & P_1 + \cdots + P_k = \mathbb{I}_{\mathcal{A}} \otimes \mathbb{I}_{\mathcal{B}}, \\ & P_1, \ldots, P_k \in \text{PPT}(\mathcal{A} : \mathcal{B}). \end{aligned} The unambiguous semidefinite program implemented is defined as: .. math: \begin{aligned} \text{maximize:} \quad & \sum_{j=1}^k \langle P_j, \rho_j \rangle \\ \text{subject to:} \quad & P_1 + \cdots + P_k = \mathbb{I}_{\mathcal{A}} \otimes \mathbb{I}_{\mathcal{B}}, \\ & P_1, \ldots, P_k \in \text{PPT}(\mathcal{A} : \mathcal{B}), \\ & \langle P_i, \rho_j \rangle = 0, \quad 1 \leq i, j \leq k, \quad i \not= j. \end{aligned} :param states: A list of states provided as either matrices or vectors. :param probs: Respective list of probabilities each state is selected. :param dist_method: Method of distinguishing to use. :return: The optimal value of the PPT primal problem SDP.