My question especially relates to the CNOT because I'd like to carefully understand how Qiskit simulate a CNOT model.
Specifically, from my understanding, two independent qubits are affected by a noise well modeled by i.i.d. pauli operators. This can be implemented with the pauli_error
model to each qubit.
When it comes to the $CNOT$ I don't know if I can stil model it by tensoring the two wires, e.g.:
error = pauli_error([('I', 1 - 3*p), ('X', p), ('Y', p), ('Z', p)])
error = error.tensor(error)
noise_model.add_quantum_error(error, ['cx'], [i,j])
Or it is more appropriate to model it with the depolarizing_error
method as follows:
error = depolarizing_error(p,2)
noise_model.add_quantum_error(error, ['cx'], [i,j])
If they are equivalent, the first one is better because the simulation runs much faster.
EDIT: To me, a noisy $CNOT$ gate can be modeled as a perfect $CNOT$ which mixes up i.i.d. operators through the wires -- according to propagation rules --. So at the end of the gate, the noise is mixed, but, it can still be expressed with i.i.d. Pauli operators.