UPBSepDistinguishable

From QETLAB
Jump to: navigation, search
UPBSepDistinguishable
Determines whether or not a UPB is distinguishable by separable measurements

Other toolboxes required cvx
Related functions LocalDistinguishability
Function category Distinguishing objects

UPBSepDistinguishable is a function that determines whether or not a given UPB is perfectly distinguishable by separable measurements. This question is interesting because it is known that all UPBs are indistinguishable by LOCC measurements [1], and all UPBs are distinguishable by PPT measurements. Separable measurements lie between these two classes.

Syntax

  • DIST = UPBSepDistinguishable(U,V,W,...)

Argument descriptions

  • U,V,W,...: Matrices, each with the same number of columns as each other, whose columns are the local vectors of the UPB.

Examples

Qutrit UPBs are distinguishable

It was shown in [2] that all UPBs in $\mathbb{C}^3 \otimes \mathbb{C}^3$ are distinguishable by separable measurements. We can verify this fact for the "Tiles" UPB as follows:

>> [u,v] = UPB('Tiles'); % generates the "Tiles" UPB
>> UPBSepDistinguishable(u,v)
 
ans =
 
     1

The Feng UPB is indistinguishable

It was shown in [3] that the UPB in $\mathbb{C}^4 \otimes \mathbb{C}^4$ found by K. Feng is indistinguishable by separable measurements. We can confirm this fact as follows:

>> [u,v] = UPB('Feng4x4'); % generates the "Feng" UPB
>> UPBSepDistinguishable(u,v)
 
ans =
 
     0

Source code

Click on "expand" to the right to view the MATLAB source code for this function.

  1. %%  UPBSEPDISTINGUISHABLE    Determines whether or not a UPB is distinguishable by separable measurements
  2. %
  3. %   DIST = UPBSepDistinguishable(U,V,W,...) returns 1 or 0, indicating that
  4. %   the UPB specified by the local vectors U, V, W, ... is or is not
  5. %   distinguishable by separable measurements. U, V, W, ... should be
  6. %   matrices, each with the same number of columns, whose columns are the
  7. %   local vectors of a UPB (i.e., each matrix corresponds to one party).
  8. %
  9. %   See [1] for a description of how this computation is carried out.
  10. %
  11. %   URL: http://www.qetlab.com/UPBSepDistinguishable
  12. %
  13. %   References:
  14. %   [1] S. Bandyopadhyay, A. Cosentino, N. Johnston, V. Russo, J. Watrous,
  15. %       and N. Yu. Limitations on separable measurements by convex
  16. %       optimization. E-print: arXiv:1408.6981 [quant-ph], 2014.
  17.  
  18. %   requires: cvx (http://cvxr.com/cvx/), opt_args.m, vec_partitions.m
  19. %   author: Nathaniel Johnston (nathaniel@njohnston.ca)
  20. %   last updated: October 30, 2014
  21.  
  22. function dist = UPBSepDistinguishable(varargin)
  23.  
  24.     % First, compute all of the "replacement vectors" for this UPB.
  25.     P = upb_replacement_vectors(varargin{:});
  26.  
  27.     % Convert the replacement vectors that were found above into the projection
  28.     % onto those vectors.
  29.     ct = 1;
  30.     for j = 1:length(P)
  31.         for k = 1:size(P{j}{1},2)
  32.             Q{ct} = P{j}{1}(:,k);
  33.             for l = 2:length(P{j})
  34.                 Q{ct} = kron(Q{ct},P{j}{l}(:,k));
  35.             end
  36.             Q{ct} = Q{ct}*Q{ct}';
  37.             ct = ct + 1;
  38.         end
  39.     end
  40.     dim = length(Q{1});
  41.  
  42.     % Now solve the LP based on these projections that determines whether or
  43.     % not this UPB is distinguishable by separable measurements.
  44.     cvx_begin sdp quiet
  45.         cvx_precision high;
  46.         variable lam(ct)
  47.  
  48.         P_sum = 0;
  49.         for j = 1:ct-1
  50.             P_sum = P_sum + lam(j)*Q{j};
  51.         end
  52.  
  53.         minimize norm(P_sum - eye(dim),'fro')
  54.         subject to
  55.             lam >= 0;
  56.     cvx_end
  57.     dist = real(cvx_optval);
  58.  
  59.     % Convert the output into a form that the user expects (0 = no, 1 = yes).
  60.     if(dist <= sqrt(eps))
  61.         dist = 1;
  62.     else
  63.         dist = 0;
  64.     end
  65. end
  66.  
  67. % This function computes all of the "replacement vectors" of a UPB. That
  68. % is, it removes one vector from the UPB and finds all product vectors
  69. % orthogonal to the remaining UPB vectors.
  70. function P = upb_replacement_vectors(varargin)
  71.  
  72.     p = nargin; % number of parties in the UPB
  73.     s = size(varargin{1},2); % number of states in the UPB
  74.     for j = p:-1:1 % get local dimension of each party
  75.         dim(j) = size(varargin{j},1);
  76.     end
  77.  
  78.     for j = s:-1:1
  79.         P{j} = cell(p,1);
  80.     end
  81.  
  82.     % Loop through each of the s states in the UPB, removing them one at a
  83.     % time.
  84.     for j = s:-1:1
  85.         cind = setdiff(1:s,j); % the indices of the states that have not been removed
  86.  
  87.         pt = vec_partitions(cind,p,dim-1); % all possible partitions of the states among the different parties
  88.         num_pt = length(pt); % number of partitions to loop through
  89.  
  90.         for k = 1:num_pt % loop through the partitions
  91.             num_orth = 1;
  92.             for l = p:-1:1 % loop through the parties
  93.                 V = varargin{l}(:,pt{k}{l}); % these are the local states that we are choosing on the l-th party
  94.                 orth_state{l} = null(V.');
  95.                 num_orth = num_orth*size(orth_state{l},2);
  96.             end
  97.  
  98.             if(num_orth > 1)
  99.                 error('upb_replacement_vectors:NotUPB','The set of local vectors provided do not form a UPB.');
  100.  
  101.             % If the found state really is orthogonal to all others, add it to
  102.             % the output.
  103.             elseif(num_orth == 1)
  104.                 % First, make sure that this state isn't already in P{j}.
  105.                 if(size(P{j}{1},2) > 0)
  106.                     trow = ones(1,size(P{j}{1},2));
  107.                     for l = p:-1:1
  108.                         trow = trow.*(orth_state{l}'*P{j}{l});
  109.                     end
  110.                     new_col = (max(abs(trow)) < 1 - eps*size(P{j}{1},2)^p);
  111.                 else
  112.                     new_col = 1;
  113.                 end
  114.  
  115.                 % OK, this state really is new.
  116.                 if(new_col)
  117.                     for l = p:-1:1
  118.                         P{j}{l} = [P{j}{l},orth_state{l}];
  119.                     end
  120.                 end
  121.             end
  122.         end
  123.     end
  124. end

References

  1. C. Bennett, D. DiVincenzo, T. Mor, P. Shor, J. Smolin, and B. Terhal. Unextendible product bases and bound entanglement. Physical Review Letters, 82(26):5385–5388, 1999. E-print: arXiv:quant-ph/9808030
  2. D. DiVincenzo, T. Mor, P. W. Shor, J. Smolin, and B. Terhal. Unextendible product bases, uncompletable product bases and bound entanglement. Communications in Mathematical Physics, 238(3):379–410, 2003. E-print: arXiv:quant-ph/9908070
  3. S. Bandyopadhyay, A. Cosentino, N. Johnston, V. Russo, J. Watrous, and N. Yu. Limitations on separable measurements by convex optimization. E-print: arXiv:1408.6981 [quant-ph], 2014.