BrauerStates
BrauerStates | |
Produces all Brauer states | |
Other toolboxes required | none |
---|---|
Related functions | MaxEntangled |
Function category | Special states, vectors, and operators |
BrauerStates is a function that returns all "Brauer" states: state that are the $p$-fold tensor product of the standard pure maximally-entangled state. Note that there are $(2p)!/(p!\cdot 2^p)$ such states, since this is the number of ways of choose $p$ pairs out of $2p$ objects (here, each pair corresponds to two subsystems that are maximally-entangled). Note that the states returned are unnormalized (i.e., all of their entries are 0 or 1, rather than being scaled so that the norm of each state is 1) and sparse.
Brauer states are interesting because they span the subspace that is invariant under the action of $X^{\otimes 2p}$ for every real orthogonal matrix $X$.
Contents
Syntax
- B = BrauerStates(D,P)
Argument descriptions
- D: The dimension of each local subsystem.
- P: Half of the number of parties (i.e., the states that this function computes will live in $(\mathbb{C}^D)^{\otimes 2P}$).
Examples
Four-qubit Brauer States
The following code generates a matrix whose columns are all Brauer states on 4 qubits:
>> full(BrauerStates(2,2)) ans = 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1
Indeed, the first column of the output above is the state that is maximally-entangled between qubits 1 and 2, and maximally-entangled between qubits 3 and 4. The second column is the state that is maximally-entangled between qubits 1 and 3 and between qubits 2 and 4. Finally, the third column is the state that is maximally-entangled between qubits 1 and 4 and between qubits 2 and 3.
Notes
- In general, the output of this function will be a $N^{2P}$-by-$(2P)!/(P!\cdot 2^P)$ matrix.
- The term "Brauer state" is not standard: it is used here because these states encode the Brauer algebra's relationship with the orthogonal group in the natural way.
Source code
Click on "expand" to the right to view the MATLAB source code for this function.
%% BRAUERSTATES Produces all Brauer states
% This function has two required arguments:
% D: the local dimension
% P: half of the number of parties (i.e., the states will live in
% (2*P)-partite space)
%
% B = BrauerStates(D,P) is a matrix whose columns are all of the
% (unnormalized) "Brauer" states: states that are the P-fold tensor
% product of the standard maximally-entangled state pure state on D local
% dimensions. There are many such states, since there are many different
% ways to group the 2*P parties into P pairs (with each pair
% corresponding to one maximally-entangled state). The exact number of
% such states is (2*P)!/(P!*2^P), which is the number of columns of B.
%
% URL: http://www.qetlab.com/BrauerStates
% requires: iden.m, MaxEntangled.m, opt_args.m, perfect_matchings.m,
% PermuteSystems.m, Tensor.m
%
% author: Nathaniel Johnston (nathaniel@njohnston.ca)
% package: QETLAB
% last updated: November 12, 2014
function B = BrauerStates(d,p)
phi = Tensor(MaxEntangled(d,1,0),p); % sparse, unnormalized
% The Brauer states are computed from perfect matchings of the complete
% graph. So compute all perfect matchings first.
pm = perfect_matchings(2*p);
npm = size(pm,1);
B = sparse(d^(2*p),npm);
% Now just turn these perfect matchings into the corresponding states.
for j = 1:npm
B(:,j) = PermuteSystems(phi,pm(j,:),d*ones(1,2*p));
end