Clifford¶
- class Clifford(data, validate=True, copy=True)[fuente]¶
Bases:
BaseOperator
,AdjointMixin
,Operation
An N-qubit unitary operator from the Clifford group.
Representation
An N-qubit Clifford operator is stored as a length 2N × (2N+1) boolean tableau using the convention from reference [1].
Rows 0 to N-1 are the destabilizer group generators
Rows N to 2N-1 are the stabilizer group generators.
The internal boolean tableau for the Clifford can be accessed using the
tableau
attribute. The destabilizer or stabilizer rows can each be accessed as a length-N Stabilizer table usingdestab
andstab
attributes.A more easily human readable 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.to_labels(mode="D")) # Print the Clifford stabilizer rows print(cliff.to_labels(mode="S"))
Clifford: Stabilizer = ['+XX', '+ZZ'], Destabilizer = ['+IZ', '+XI'] ['+IZ', '+XI'] ['+XX', '+ZZ']
Circuit Conversion
Clifford operators can be initialized from circuits containing only the following Clifford gates:
IGate
,XGate
,YGate
,ZGate
,HGate
,SGate
,SdgGate
,SXGate
,SXdgGate
,CXGate
,CZGate
,CYGate
,DXGate
,SwapGate
,iSwapGate
,ECRGate
. 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.Nota
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.Referencias
S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196
Initialize an operator object.
Methods
Return the adjoint of the Operator.
Return the operator composition with another Clifford.
Return the conjugate of the Clifford.
Make a deep copy of current operator.
Return the right multiplied operator self * other.
Return the reverse-order tensor product with another Clifford.
Initialize from a QuantumCircuit or Instruction.
Load a Clifford from a dictionary
Return a tensor product of single-qubit Clifford gates.
Create a Clifford from a unitary matrix.
Create a Clifford from a operator.
Return tuple of input dimension for specified subsystems.
Return True if the Clifford table is valid.
Return tuple of output dimension for specified subsystems.
Return the compose of a operator with itself n times.
Return a shallow copy with reshaped input and output subsystem dimensions.
Return the tensor product with another Clifford.
Return a QuantumCircuit implementing the Clifford.
Return dictionary representation of Clifford object.
Return a Gate instruction implementing the Clifford.
Convert a Clifford to a list Pauli (de)stabilizer string labels.
Convert operator to Numpy matrix.
Convert to an Operator object.
Return the transpose of the Clifford.
Attributes
- destab¶
The destabilizer array for the symplectic representation.
- destab_phase¶
Return phase of destaibilizer with boolean representation.
- destab_x¶
The destabilizer x array for the symplectic representation.
- destab_z¶
The destabilizer z array for the symplectic representation.
- destabilizer¶
Return the destabilizer block of the StabilizerTable.
Obsoleto desde la versión 0.24.0: The property
qiskit.quantum_info.operators.symplectic.clifford.Clifford.destabilizer
is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. Use Clifford.destab properties instead.
- dim¶
Return tuple (input_shape, output_shape).
- name¶
Unique string identifier for operation type.
- num_clbits¶
Number of classical bits.
- num_qubits¶
Return the number of qubits if a N-qubit operator or None otherwise.
- phase¶
Return phase with boolean representation.
- qargs¶
Return the qargs for the operator.
- stab¶
The stabilizer array for the symplectic representation.
- stab_phase¶
Return phase of stablizer with boolean representation.
- stab_x¶
The stabilizer x array for the symplectic representation.
- stab_z¶
The stabilizer array for the symplectic representation.
- stabilizer¶
Return the stabilizer block of the StabilizerTable.
Obsoleto desde la versión 0.24.0: The property
qiskit.quantum_info.operators.symplectic.clifford.Clifford.stabilizer
is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. Use Clifford.stab properties instead.
- symplectic_matrix¶
Return boolean symplectic matrix.
- table¶
Return StabilizerTable
Obsoleto desde la versión 0.24.0: The property
qiskit.quantum_info.operators.symplectic.clifford.Clifford.table
is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. Use Clifford.stab and Clifford.destab properties instead.
- x¶
The x array for the symplectic representation.
- z¶
The z array for the symplectic representation.