bsc-quantic / Tenet.jl

Composable Tensor Network library in Julia
https://bsc-quantic.github.io/Tenet.jl/
Apache License 2.0
17 stars 1 forks source link

Canonical form for `MatrixProductState` and `MatrixProductOperator` #45

Closed jofrevalles closed 8 months ago

jofrevalles commented 1 year ago

Summary

Add a canonical form transformation for a given MatrixProductState. This will be useful for different algorithms.

mofeing commented 1 year ago

There is only canonical form. Whether it is right- or left-canonical it's just the direction of the isometries (and the location of the weights) so for me there is only 1 canonical transformation, with some parameter to choose the orthogonality center (could be one site or a range of sites).

jofrevalles commented 1 year ago

Okay, makes sense. I will update the issue description. Nevertheless, we should store the orthogonality center somewhere.

mofeing commented 1 year ago

We could also think about adding a way to check the canonical form of a Tensor in a MatrixProductState. Should we store this in meta?

This could be nice to avoid extra computation but I'm not sure we could always rely on it. First let's implement the canonical transformation, then a function that computes the orthogonality center and we'll figure out how to do this last part as we see how the design evolves.

For functions that could benefit from caching the orthogonality center, we could let the user pass it as an argument, just like quimb does.

mofeing commented 8 months ago

Code moved to Qrochet.jl.