Clifford¶
- class Clifford(data, validate=True)[source]¶
An N-qubit unitary operator from the Clifford group.
Representation
An N-qubit Clifford operator is stored as a length 2N
StabilizerTable
using the convention from reference [1].Rows 0 to N-1 are the destabilizer group generators
Rows N-1 to 2N-1 are the stabilizer group generators.
The internal
StabilizerTable
for the Clifford can be accessed using thetable
attribute. The destabilizer or stabilizer rows can each be accessed as a length-N Stabilizer table usingdestabilizer
andstabilizer
attributes.A more easily human readible representation of the Clifford operator can be obtained by calling the
to_dict()
method. This representation is also used if a Clifford object is printed as in the following examplefrom qiskit import QuantumCircuit from qiskit.quantum_info import Clifford # Bell state generation circuit qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) cliff = Clifford(qc) # Print the Clifford print(cliff) # Print the Clifford destabilizer rows print(cliff.destabilizer) # Print the Clifford stabilizer rows print(cliff.stabilizer)
Clifford: Stabilizer = ['+XX', '+ZZ'], Destabilizer = ['+IZ', '+XI'] StabilizerTable: ['+IZ', '+XI'] StabilizerTable: ['+XX', '+ZZ']
Circuit Conversion
Clifford operators can be initialized from circuits containing only the following Clifford gates:
IGate
,XGate
,YGate
,ZGate
,HGate
,SGate
,SdgGate
,CXGate
,CZGate
,SwapGate
. They can be converted back into aQuantumCircuit
, orGate
object using theto_circuit()
orto_instruction()
methods respectively. Note that this decomposition is not necessarily optimal in terms of number of gates.Note
A minimally generating set of gates for Clifford circuits is the
HGate
andSGate
gate and either theCXGate
orCZGate
two-qubit gate.Clifford operators can also be converted to
Operator
objects using theto_operator()
method. This is done via decomposing to a circuit, and then simulating the circuit as a unitary operator.References
S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196
Initialize an operator object.
Attributes
The default absolute tolerance parameter for float comparisons.
Return the destabilizer block of the StabilizerTable.
Return tuple (input_shape, output_shape).
Return the number of qubits if a N-qubit operator or None otherwise.
Return the qargs for the operator.
The relative tolerance parameter for float comparisons.
Return the stabilizer block of the StabilizerTable.
Return StabilizerTable
Methods
Clifford.__call__
(qargs)Return a clone with qargs set
Clifford.__getitem__
(key)Return a stabilizer Pauli row
Clifford.__mul__
(other)Clifford.add
(other)Return the linear operator self + other.
Return the conjugate transpose of the Clifford
Clifford.compose
(other[, qargs, front])Return the composed operator.
Return the conjugate of the Clifford.
Make a deep copy of current operator.
Clifford.dot
(other[, qargs])Return the right multiplied operator self * other.
Clifford.expand
(other)Return the tensor product operator other ⊗ self.
Clifford.from_circuit
(circuit)Initialize from a QuantumCircuit or Instruction.
Clifford.from_dict
(obj)Load a Clifford from a dictionary
Clifford.from_label
(label)Return a tensor product of single-qubit Clifford gates.
Clifford.input_dims
([qargs])Return tuple of input dimension for specified subsystems.
Return True if the Clifford table is valid.
Clifford.multiply
(other)Return the linear operator other * self.
Clifford.output_dims
([qargs])Return tuple of output dimension for specified subsystems.
Return the compose of a operator with itself n times.
Clifford.reshape
([input_dims, output_dims])Return a shallow copy with reshaped input and output subsystem dimensions.
Clifford.set_atol
(value)Set the class default absolute tolerance parameter for float comparisons.
Clifford.set_rtol
(value)Set the class default relative tolerance parameter for float comparisons.
Clifford.subtract
(other)Return the linear operator self - other.
Clifford.tensor
(other)Return the tensor product operator self ⊗ other.
Return a QuantumCircuit implementing the Clifford.
Return dictionary represenation of Clifford object.
Return a Gate instruction implementing the Clifford.
Convert operator to Numpy matrix.
Convert to an Operator object.
Return the transpose of the Clifford.
Clifford.__call__
(qargs)Return a clone with qargs set
Clifford.__mul__
(other)