qvm icon indicating copy to clipboard operation
qvm copied to clipboard

add depolarizing stabilizer QVM and error-only QVM

Open ecpeterson opened this issue 1 year ago • 0 comments

The PR introduces two further variants of noisy QVMs:

  1. fowler-qvm: A variant of stabilizer-qvm which injects depolarizing noise after "basic" operations. "Basic" operations are divided into types (identity, nontrivial 1Q, 2Q, measure, reset), and noise can be selectively toggled for each of these types. (I think that in the current implementation these types are explicitly given by named gates, e.g., I and H, as opposed to any ol' 1Q Clifford.) This class type is named fowler-qvm rather than depolarizing-stabilizer-qvm because of this toggling ability, which is a slightly different noise model than straight-up depolarizing noise; to our knowledge, this modified noise model was specified by Austin Fowler in work on topological error correction.
  2. error-qvm: A restriction of fowler-qvm to circuits which, when performed without noise, are guaranteed to always measure 0. Under this assumption, we can propagate through the circuit the Pauli errors arising in depolarizing noise, rather than tracking anything like the underlying quantum state, so that the space complexity becomes linear in qubit count. A similar simulator can be found in Autotune.

This PR is joint work with @karalekas, carried out in 2020 under the Eigenware umbrella.

Happy to take advice; I don't feel that this code perfectly conforms to existing QVM code style.

ecpeterson avatar Jul 30 '22 20:07 ecpeterson