You are viewing the API reference for an old version of Qiskit SDK. Switch to latest version

# SolovayKitaevDecomposition

class SolovayKitaevDecomposition(basic_approximations=None)

GitHub(opens in a new tab)

Bases: object

The Solovay Kitaev discrete decomposition algorithm.

This class is called recursively by the transpiler pass, which is why it is separeted. See qiskit.transpiler.passes.SolovayKitaev for more information.

Parameters

basic_approximations – A specification of the basic SU(2) approximations in terms of discrete gates. At each iteration this algorithm, the remaining error is approximated with the closest sequence of gates in this set. If a str, this specifies a .npy filename from which to load the approximation. If a dict, then this contains {gates: effective_SO3_matrix} pairs, e.g. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}. If a list, this contains the same information as the dict, but already converted to GateSequence objects, which contain the SO(3) matrix and gates.

## Methods

### find_basic_approximation

SolovayKitaevDecomposition.find_basic_approximation(sequence)

Finds gate in self._basic_approximations that best represents sequence.

Parameters

sequence (GateSequence) – The gate to find the approximation to.

Return type

Gate

Returns

Gate in basic approximations that is closest to sequence.

SolovayKitaevDecomposition.load_basic_approximations(data)

Parameters

data (list | str | dict) – If a string, specifies the path to the file from where to load the data. If a dictionary, directly specifies the decompositions as {gates: matrix}. There gates are the names of the gates producing the SO(3) matrix matrix, e.g. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}.

Return type

list[GateSequence]

Returns

A list of basic approximations as type GateSequence.

Raises

ValueError – If the number of gate combinations and associated matrices does not match.

### run

SolovayKitaevDecomposition.run(gate_matrix, recursion_degree, return_dag=False, check_input=True)

Run the algorithm.

Parameters

• gate_matrix (np.ndarray) – The 2x2 matrix representing the gate. This matrix has to be SU(2) up to global phase.
• recursion_degree (int) – The recursion degree, called $n$ in the paper.
• return_dag (bool) – If True return a DAGCircuit, else a QuantumCircuit.
• check_input (bool) – If True check that the input matrix is valid for the decomposition.

Return type

QuantumCircuit’ | ‘DAGCircuit

Returns

A one-qubit circuit approximating the gate_matrix in the specified discrete basis.