MPS simplification#

The first and most fundamental algorith, on top of which all other algorithms can be rigorously constructed, is the simplification. This is the search for a matrix-product state \(\xi\) that approximates another matrix-product state \(\psi\), with the goal to make it simpler: i.e., typically reduce the size of the bond dimensions.

Mathematically, we are solving the minimization of the norm-2 distance:

\[\mathrm{argmin}_{\xi \in \mathcal{MPS}_{D'}} \Vert{\xi-\psi}\Vert^2\]

There are two variants of the algorithm. The first one simplify() approximates just a single state. The second one approximates a linear combination of states and weights \(\psi_i\) and \(w_i\), as in

\[\mathrm{argmin}_{\xi \in \mathcal{MPS}_{D'}} \Vert{\xi- \sum w_i \psi_i}\Vert^2\]

This second algorithm is the one used to convert seemps.state.MPSSum objects into ordinary seemps.state.MPS states (see MPS combination). Both are implemented using the same front-end function.

It is possible to extend this algorithm to MPOs by recasting them as an MPS.

simplify(state[, strategy, direction, guess])

Simplify an MPS state transforming it into another one with a smaller bond dimension, sweeping until convergence is achieved.

simplify_mpo(operator[, strategy, ...])

Simplify an MPO state transforming it into another one with a smaller bond dimension, sweeping until convergence is achieved.