Retrieve bipartite reduced density matrix

Hi Miles and Matt (and any other admin),

In the typical calculation of von Neumann (or Renyi) entropy, one gauge the center and then perform SVD around the gauge center (hence bipartition the chain into left/right bipartition etc) and obtain U, S, and V matrices respectively where U contains ket(a){left}, S is non-negative singular values s_a (from which we use to get n-th Renyi entropy) and V contains the basis set ket(a){right}.

If I want to instead get bipartite reduced density matrix, say rho_{left}, do we have to resort to constructing it from the row vectors of U and construct rho_{left} = \sum_a s_a^2 ket{a}{left} bra{a}{left} from scratch, or is there more efficient or built-in algorithm within iTensor Julia that can do the job easily?

I need rho_{left} (or rho_{right)}, and not any arbitrary n-sites reduced density matrix that is shown in the tutorial “construct two site reduced density matrix”, which if I understand correctly scales exponentially with number of sites. Since what I want is bipartition, presumably it shouldn’t scale exponentially?

I need the bipartite reduced density matrix to construct something known in literature called “symmetry-resolved entanglement” (to compute things like Eqn (3) in the MPS context, like this paper (done for exact diagonalization I think): Entanglement asymmetry as a probe of symmetry breaking | Nature Communications ).

Best,
Brian.

(1) To clarify my question, I knew of (currently) a way Julia construct reduced density matrix of any arbitrary site that is exponential in the number of sites ‘left’ (like in this example, two-site reduced density matrix that is not too expensive to compute):

In C++: ITensor

Constructing EE in arbitrary sites: How do I evaluate Block Entanglement for sub-blocks that do not extend to the end of the lattice? - ITensor Support Q&A

In Julia version, the following discussion link: Two-site reduced density matrix

For this method, am I right to presume that if I want to, say, compute an expectation value like Tr_A ( rho_A Q), where A is the remains site/index in the reduced density matrix rho_A (in the two sites example above, that would be the two remaining sites) that is not traced out and Q is an MPO acting on sites contained in A, all I need to do is to make sure their site indices match in the iTensor Julia algorithm?

(2) In the computation of the bipartite (left/right partition) entanglement entropy, all you need is to cast the MPS into mixed canonical form (choosing a gauge center), and then perform SVD on the gauge center link index and obtain the spectrum of the non-negative singular values in the SVD decomposition, like in this code below:

C++ version: ITensor

Is there a way to take ‘advantage’ of the fact that if all we are interested is bipartition, we can ‘extract’ the MPS from the U matrix (for left partition) or the V matrix (for the right partition) in the MPS code:

U, S, V = svd( psi, {indices of U} )

and then construct rho_{left} out of say, eigenstates contained in U coupled with the non-singular values in S (since doing the above operation is essentially Schmidt decomposition)? Is Julia iTensor smart enough to retain index information (if I, say, construct reduced density matrix out of U and S) of the original indices in the MPS psi so that we can do operation like Tr_left (rho_left Q)?

(3) If approach outlined in Q(2) works, will it be classically efficient (that is, not scaling exponentially like one in Q(1)?

I think I partly understand your question, but not fully. It seems to me it is more of a question about the theory of MPS rather than about Julia or ITensor specifically. There is most likely not a built-in function or feature to compute the quantity you are after, but it is likely computable by contracting the correct tensors coming from an MPS.

Is your question about how, from an MPS, one can efficiently obtain an expression for the reduced density matrix of the left half of the system?

Hi Miles,

Sorry for being vague. Yes a one sentence summary would be what you have just stated (theory of MPS).

I will also appreciate the more practical aspect of the question you have just restated, i.e., any way of implementing it in Julia iTensor specifically (without contracting indices, which I believe to be highly inefficiently for something like half chain reduced density matrix)?

Best,
Brian.

Hi,

did you ever figure out the question of being able to “efficiently” extract bipartite RDM from the U and V matrices of the SVD operation on an orthogonalization/gauge center? I am interested in this as well.

1 Like

Hi Brian, Aditya, here are some notes that hopefully answer this question. Brian, sorry I never got back to you last summer when you asked the follow-up question.

Got it, thanks a lot Miles. I also came across a couple of similar posts (from you and others) after my query here, which also helped clarify the matter.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.