Open GTorlai opened 3 years ago
Yes, and I imagine the naive way would be to apply half the circuit to the zero state, and half the circuit (dag) to the product state of interest, and then taking an inner product of two MPSs.
Yeah. A slightly more sophisticated method beyond exactly splitting the circuit in half would be to do something like apply one gate at a time, and switch which state you apply the gate to depending on which state has the lower maximal bond dimension (so that the costs automatically stay balanced).
EDIT: a disadvantage is that splitting the circuit in half up front would allow doing the two halves in parallel, which would be more challenging with the gate-by-gate approach.
Also @LinjianMa has a working prototype for an ITensor wrapper for the tensor network optimization methods available in AutoHOOT (which uses opt_einsum as a backend), which we can use for a full state simulation to compare with whatever MPS method we put into PastaQ. See here: https://github.com/LinjianMa/AutoHOOT.jl though it is very new so interfaces may change.
This functionality now requires contraction graph optimization, which is underway within ITensor
Would the operation involve projecting an MPS onto a series of product states?