# Iterative MPS Compression

**URL:** <https://itensor.discourse.group/t/iterative-mps-compression/2005>\
**Category:** DMRG and Numerical Methods\
**Tags:** julia\
**Created:** [September 23, 2024, 5:43pm UTC](https://itensor.discourse.group/t/iterative-mps-compression/2005 "2024-09-23T17:43:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![corbett5](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/corbett5/32/886_2.png) [@corbett5](https://itensor.discourse.group/u/corbett5)\
**Post date:** [September 23, 2024, 5:43pm UTC](https://itensor.discourse.group/t/iterative-mps-compression/2005/1 "2024-09-23T17:43:48Z")

</div>

I am curious if anyone has implemented a iterative MPS compression algorithm as described in  
[The density-matrix renormalization group in the age of matrix product states: Section 4.5.2](https://doi.org/10.1016/j.aop.2010.09.012). In particular I am very interested in finding a representation \ket{\tilde{\psi}} \approx H \ket{\psi} where H \ket{\psi} is too large to do much of anything with except take inner products such as \braket{\tilde{\psi} | H | \psi}.

If not, this seems like a useful new `truncate` and or `contract` algorithm.

Thanks!  
Ben

---

<div class="post-metadata">

**Author:** ![miles](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/miles/32/6_2.png) [@miles](https://itensor.discourse.group/u/miles)\
**Post date:** [September 23, 2024, 6:42pm UTC](https://itensor.discourse.group/t/iterative-mps-compression/2005/2 "2024-09-23T18:42:35Z")

</div>

Within the ITensor team, we have tended to think of that algorithm as a variant of DMRG. So then a question for us was: we want to have this algorithm but how do we offer it without having a second DMRG-like code that we have to also maintain etc. ?

So we have an experimental implementation of the algorithm (which I would call the “fitting” algorithm for applying an MPO to an MPS) which is offered through the `contract` function in the [ITensorTDVP](https://github.com/ITensor/ITensorTDVP.jl) codes. Note that, as mentioned in the README of the ITensorTDVP repo, that to access those codes we recommend just doing `using ITensorMPS` since ITensorMPS reexports the ITensorTDVP interface.

So you can try that `contract` function to see if it suits your purposes. The upcoming ITensorNetworks package will also offer this algorithm, since the ITensorTDVP package was kind of like an experimental system that we made a better version of for ITensorNetworks.

---

<div class="post-metadata">

**Author:** ![corbett5](https://yyz2.discourse-cdn.com/free1/user_avatar/itensor.discourse.group/corbett5/32/886_2.png) [@corbett5](https://itensor.discourse.group/u/corbett5)\
**Post date:** [September 23, 2024, 6:46pm UTC](https://itensor.discourse.group/t/iterative-mps-compression/2005/3 "2024-09-23T18:46:53Z")

</div>

Exactly what I was looking for, thank you!

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/itensor/original/1X/d3072b13e047cd06df7f3981547c0917d940dfa4.png) [@system](https://itensor.discourse.group/u/system)\
**Post date:** [October 3, 2024, 6:47pm UTC](https://itensor.discourse.group/t/iterative-mps-compression/2005/4 "2024-10-03T18:47:19Z")

</div>

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