+1 vote
asked by (960 points) 1 flag

For instance, the entanglement between two sites in the middle of the chain and the rest of the chain.

1 Answer

0 votes
answered by (70.1k points)

Hi Jon,
For a small number of sites (like two) in the middle of the chain, you can compute the reduced density matrix like this:

  1. Make sure the gauge center is at one of the sites (call .position(j) where j is the first site, say).

  2. Make the "bond tensor" B by doing
    auto B = psi.A(j) * psi.A(j+1);

  3. Make the reduced density matrix rho by doing
    auto rho = prime(B,Site) * dag(B);

  4. Use the diagHermitian function to diagonalize rho:
    auto spec = diagHermitian(rho,U,D);
    You'll need to declare U and D first (they can just be default initialized). For more info on diagHermitian see: http://itensor.org/docs.cgi?page=classes/decomp

  5. The diagHermitian function returns a Spectrum object which you can use to get the density matrix eigenvalues conveniently and compute the entropy just like in this code formula:

commented by (960 points)
Miles, do you think there is a publication waiting for someone that carefully compares these different methods of computing block entanglements? I'd really like to know which one to choose but I don't want to perform a full study unless I can publish it.
commented by (70.1k points)
Hi Jon,
As far as I know there is not a publication on this subject. But the main way I would know would be by doing a careful search via Google Scholar on related papers and keywords. So a paper on the subject could have appeared since the last time I was thinking about it a few years ago and I may have not noticed. But I think there is very little in the literature about efficient methods for getting the entanglement entropy of a "central" region meaning a region "A" where the full system is BAB and B is the complement of A.

A few people I know told me that the sampling approach was clear to them, and I had gone as far to write a draft about it, but never published as it got pretty tedious to do the sampling really well.

So that's why I think a non-sampling approach based on a tree tensor network would be nice assuming it works well.

- Miles
commented by (960 points)
edited by
Hi Miles,

I re-read your machine learning article on a Tree Tensor Network application, and I just want to make sure I know how to implement the steps.

At the first step of the procedure, we produce a 2-site reduced density matrix.
Question: As usual, do we move the orthogonality center into one of these sites before making the reduced density matrix?

We then move to a new pair of sites, we move the orthogonality center before generating isometries for each pair of sites.
Question: Is this correct?

After generating all the isometries, we contract them with the original MPS to produce a lower-rank MPS. Where is the orthogonality center during this stage -- is it moved to each MPS pair before contraction?

My misunderstanding seems rooted in misunderstanding the DMRG procedure (and the role of the orthogonality center) so I'll review that, however, I probably still need your help to understand it completely. I noticed that your machine learning paper doesn't discuss the orthogonality center at all, so either the paper is too short to include all of the details, or it isn't necessary in that application -- correct?
commented by (70.1k points)
Hi Jon, the answer to your question is that the MPS I am using to compute reduced density matrices in the machine learning context are all product states (bond dimension 1). So every site is automatically an orthogonality center and there is no need in that case to shift it. But you're on the right track, in the sense that if one was coarse graining an MPS (or a sum of MPS like in the machine learning paper) then one might want to place the orthogonality center on one of the two sites being optimized. The reason I say "might" is if one wants to "shortcut" the process of computing the full reduced density matrix. But this is an efficient thing to compute so in principle one can just compute it and not worry about the orthogonality. Similarly when coarse graining with a tree the orthogonality isn't an important consideration (it can be a different story for a MERA though).

In a nutshell the main situation where the ortho center is important is if you are making some change to the MPS and need to do an SVD with a truncation. If the thing you're doing doesn't involve an SVD (such as the coarse graining step) then most likely you don't need to think about the ortho center.

But it's hard to give general "always" or "never" advice. Each situation is a bit different and in the end you just need to really understand the arguments or principles behind each step.
commented by (960 points)
Ok, so for my application in which I want to compute entropy for a region of a wavefunction cut from a middle (two-boundary) portion of the 1-D MPS, I can move the ortho center to the first site inside the region of interest (as was suggested at the start of this thread for a two-site portion of the MPS),  and then build up a set of isometries for pairs of sites. The isometries won't require that I move the ortho center, so long as the ortho center is left within the interval of interest?

Thanks again.
Welcome to ITensor Support Q&A, where you can ask questions and receive answers from other members of the community.

Formatting Tips:
  • To format code, indent by four spaces
  • To format inline LaTeX, surround it by @@ on both sides
  • To format LaTeX on its own line, surround it by $$ above and below
  • For LaTeX, it may be necessary to backslash-escape underscore characters to obtain proper formatting. So for example writing \sum\_i to represent a sum over i.
If you cannot register due to firewall issues (e.g. you cannot see the capcha box) please email Miles Stoudenmire to ask for an account.

To report ITensor bugs, please use the issue tracker.