Shortcuts

qiskit.quantum_info.Clifford

class Clifford(data, validate=True)[소스]

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 to 2N-1 are the stabilizer group generators.

The internal StabilizerTable for the Clifford can be accessed using the table attribute. The destabilizer or stabilizer rows can each be accessed as a length-N Stabilizer table using destabilizer and stabilizer 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 example

from 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 a QuantumCircuit, or Gate object using the to_circuit() or to_instruction() methods respectively. Note that this decomposition is not necessarily optimal in terms of number of gates.

참고

A minimally generating set of gates for Clifford circuits is the HGate and SGate gate and either the CXGate or CZGate two-qubit gate.

Clifford operators can also be converted to Operator objects using the to_operator() method. This is done via decomposing to a circuit, and then simulating the circuit as a unitary operator.

참조

  1. S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196

Initialize an operator object.

__init__(data, validate=True)[소스]

Initialize an operator object.

Methods

__init__(data[, validate])

Initialize an operator object.

add(other)

Return the linear operator self + other.

adjoint()

Return the conjugate transpose of the Clifford

compose(other[, qargs, front])

Return the composed operator.

conjugate()

Return the conjugate of the Clifford.

copy()

Make a deep copy of current operator.

dot(other[, qargs])

Return the right multiplied operator self * other.

expand(other)

Return the tensor product operator other ⊗ self.

from_circuit(circuit)

Initialize from a QuantumCircuit or Instruction.

from_dict(obj)

Load a Clifford from a dictionary

from_label(label)

Return a tensor product of single-qubit Clifford gates.

input_dims([qargs])

Return tuple of input dimension for specified subsystems.

is_unitary()

Return True if the Clifford table is valid.

multiply(other)

Return the linear operator other * self.

output_dims([qargs])

Return tuple of output dimension for specified subsystems.

power(n)

Return the compose of a operator with itself n times.

reshape([input_dims, output_dims])

Return a shallow copy with reshaped input and output subsystem dimensions.

set_atol(value)

Set the class default absolute tolerance parameter for float comparisons.

set_rtol(value)

Set the class default relative tolerance parameter for float comparisons.

subtract(other)

Return the linear operator self - other.

tensor(other)

Return the tensor product operator self ⊗ other.

to_circuit()

Return a QuantumCircuit implementing the Clifford.

to_dict()

Return dictionary represenation of Clifford object.

to_instruction()

Return a Gate instruction implementing the Clifford.

to_matrix()

Convert operator to Numpy matrix.

to_operator()

Convert to an Operator object.

transpose()

Return the transpose of the Clifford.

Attributes

atol

The default absolute tolerance parameter for float comparisons.

destabilizer

Return the destabilizer block of the StabilizerTable.

dim

Return tuple (input_shape, output_shape).

num_qubits

Return the number of qubits if a N-qubit operator or None otherwise.

qargs

Return the qargs for the operator.

rtol

The relative tolerance parameter for float comparisons.

stabilizer

Return the stabilizer block of the StabilizerTable.

table

Return StabilizerTable

add(other)

Return the linear operator self + other.

DEPRECATED: use operator + other instead.

매개변수

other (BaseOperator) – an operator object.

반환값

the operator self + other.

반환 형식

BaseOperator

adjoint()[소스]

Return the conjugate transpose of the Clifford

property atol

The default absolute tolerance parameter for float comparisons.

compose(other, qargs=None, front=False)[소스]

Return the composed operator.

매개변수
  • other (Clifford) – an operator object.

  • qargs (list or None) – a list of subsystem positions to apply other on. If None apply on all subsystems [default: None].

  • front (bool) – If True compose using right operator multiplication, instead of left multiplication [default: False].

반환값

The operator self @ other.

반환 형식

Clifford

예외

QiskitError – if operators have incompatible dimensions for composition.

Additional Information:

Composition (@) is defined as left matrix multiplication for matrix operators. That is that A @ B is equal to B * A. Setting front=True returns right matrix multiplication A * B and is equivalent to the dot() method.

conjugate()[소스]

Return the conjugate of the Clifford.

copy()

Make a deep copy of current operator.

property destabilizer

Return the destabilizer block of the StabilizerTable.

property dim

Return tuple (input_shape, output_shape).

dot(other, qargs=None)[소스]

Return the right multiplied operator self * other.

매개변수
  • other (Clifford) – an operator object.

  • qargs (list or None) – a list of subsystem positions to apply other on. If None apply on all subsystems [default: None].

반환값

The operator self * other.

반환 형식

Clifford

예외

QiskitError – if operators have incompatible dimensions for composition.

expand(other)[소스]

Return the tensor product operator other ⊗ self.

매개변수

other (Clifford) – an operator object.

반환값

the tensor product operator other ⊗ self.

반환 형식

Clifford

static from_circuit(circuit)[소스]

Initialize from a QuantumCircuit or Instruction.

매개변수

circuit (QuantumCircuit or Instruction) – instruction to initialize.

반환값

the Clifford object for the instruction.

반환 형식

Clifford

예외

QiskitError – if the input instruction is non-Clifford or contains classical register instruction.

static from_dict(obj)[소스]

Load a Clifford from a dictionary

static from_label(label)[소스]

Return a tensor product of single-qubit Clifford gates.

매개변수

label (string) – single-qubit operator string.

반환값

The N-qubit Clifford operator.

반환 형식

Clifford

예외

QiskitError – if the label contains invalid characters.

Additional Information:

The labels correspond to the single-qubit Cliffords are

    • Label

    • Stabilizer

    • Destabilizer

    • "I"

    • +Z

    • +X

    • "X"

    • -Z

    • +X

    • "Y"

    • -Z

    • -X

    • "Z"

    • +Z

    • -X

    • "H"

    • +X

    • +Z

    • "S"

    • +Z

    • +Y

input_dims(qargs=None)

Return tuple of input dimension for specified subsystems.

is_unitary()[소스]

Return True if the Clifford table is valid.

multiply(other)

Return the linear operator other * self.

DEPRECATED: use other * operator instead.

매개변수

other (complex) – a complex number.

반환값

the linear operator other * self.

반환 형식

BaseOperator

예외

NotImplementedError – if subclass does not support multiplication.

property num_qubits

Return the number of qubits if a N-qubit operator or None otherwise.

output_dims(qargs=None)

Return tuple of output dimension for specified subsystems.

power(n)

Return the compose of a operator with itself n times.

매개변수

n (int) – the number of times to compose with self (n>0).

반환값

the n-times composed operator.

반환 형식

BaseOperator

예외

QiskitError – if the input and output dimensions of the operator are not equal, or the power is not a positive integer.

property qargs

Return the qargs for the operator.

reshape(input_dims=None, output_dims=None)

Return a shallow copy with reshaped input and output subsystem dimensions.

Arg:
input_dims (None or tuple): new subsystem input dimensions.

If None the original input dims will be preserved [Default: None].

output_dims (None or tuple): new subsystem output dimensions.

If None the original output dims will be preserved [Default: None].

반환값

returns self with reshaped input and output dimensions.

반환 형식

BaseOperator

예외

QiskitError – if combined size of all subsystem input dimension or subsystem output dimensions is not constant.

property rtol

The relative tolerance parameter for float comparisons.

classmethod set_atol(value)

Set the class default absolute tolerance parameter for float comparisons.

DEPRECATED: use operator.atol = value instead

classmethod set_rtol(value)

Set the class default relative tolerance parameter for float comparisons.

DEPRECATED: use operator.rtol = value instead

property stabilizer

Return the stabilizer block of the StabilizerTable.

subtract(other)

Return the linear operator self - other.

DEPRECATED: use operator - other instead.

매개변수

other (BaseOperator) – an operator object.

반환값

the operator self - other.

반환 형식

BaseOperator

property table

Return StabilizerTable

tensor(other)[소스]

Return the tensor product operator self ⊗ other.

매개변수

other (Clifford) – a operator subclass object.

반환값

the tensor product operator self ⊗ other.

반환 형식

Clifford

to_circuit()[소스]

Return a QuantumCircuit implementing the Clifford.

For N <= 3 qubits this is based on optimal CX cost decomposition from reference [1]. For N > 3 qubits this is done using the general non-optimal compilation routine from reference [2].

반환값

a circuit implementation of the Clifford.

반환 형식

QuantumCircuit

참조

  1. S. Bravyi, D. Maslov, Hadamard-free circuits expose the structure of the Clifford group, arXiv:2003.09412 [quant-ph]

  2. S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits, Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196

to_dict()[소스]

Return dictionary represenation of Clifford object.

to_instruction()[소스]

Return a Gate instruction implementing the Clifford.

to_matrix()[소스]

Convert operator to Numpy matrix.

to_operator()[소스]

Convert to an Operator object.

transpose()[소스]

Return the transpose of the Clifford.

당신은 다음 언어로 문서를 보고 있다 lang: Korean
언어
English
Japanese
German
Korean