Hello,

I'm interested in simulating next-to-nearest neighbor (nnn) interactions using trotter gates, which requires swap gates.

For a lattice of site N, this requires implementing 6(N-2) gates when doing a right/left sweep

- Swap gate between j+1,j+2
- nnn gate between j,j+2
- swap gate between j+1,j+2
- repeat for right sweep

However, one could think about first ordering the sites in an odd/even order, apply the nnn gates right and left and reorder the sites again. This method only requires 4(N-2) gates.

- Swap gates such that the final order is: 1357...2468...
- Apply the nnn gates in the right sweep: (13)(35)...(24)(46)...
- Apply the nnn gates in the left sweep
- Inverse swap gates such that the final order is: 12345....

My question are the following:

- if I'm careful enough to check that the position is set to the first site before applying the nnn gates, does this construction respect the orthogonality condition?
- Since swap gates don't accept two sites far apart, I was thinking about grouping the swap gates into an MPO and use applyMPO. However, this MPO scales with N because we will swap sites very far apart. Could one instead apply the gates without the svdBond and the position steps?

Thank you for the help!