Vecs2Pauli solves the Local-Pauli-Transformation task (and more)

Local-Pauli-Transformation Task: find all matrices of the form α · P 1 ⊗ P2 ... ⊗ Pn which map one given vector s⃗ to another vector t⃗, where By setting t⃗ equal to s⃗, the solution to the task are precisely the (Pauli) stabilisers of s⃗. So Vecs2Pauli will find all (Pauli) stabilisers of a vector.


Example 1: take as source vector s⃗ = (0.71, 0.71) and as target vector the same: t⃗ = (0.71, 0.71). Then Vecs2Pauli finds all Local Pauli matrices which map s⃗ to itself, i.e. it finds the stabilisers of s⃗. These stabilisers are I and X, which can be written as X to the power zero and X to the power one. Hence, X is a generator for the group of stabilisers.

Example 2: take as source vector s⃗ = (1, 0, 0, 1) and as target t⃗ = (0, 1, -1, 0) (both are so-called (unnormalised) Bell states). Then s⃗ is mapped to t⃗ by precisely all Local Pauli matrices which can be written as -i · Y ⊗ I times g, where g is any operator that can be written as a multiplication of X ⊗ X and Z ⊗ Z (the stabilisers of s⃗).

Notation: in general, a state of n quantum bits can be represented as a vector consisting of 2n complex numbers. Typically, these are written as a sum of terms of the form c |x⟩ where x is a string of n bits and c the complex number which is found as the x-th position of the vector (so-called Dirac notation). For example, the vector s⃗ from Example 1 is written 0.71 |0⟩ + 0.71 |1⟩, and the vectors from Example 2 are 0|00⟩ + 1|01⟩ + 1|10⟩ + 0|00⟩ = |01⟩ + |10⟩ and |01⟩ - |10⟩.


Algorithm

The underlying algorithm of Vecs2Pauli which solves the Local-Pauli-Transformation task is based on our earlier work on a new data structure for simulation of quantum computing, combining decision diagrams and the stabilizer formalism. A full description of the algorithm will be made public soon.