Skip to main contentIBM Quantum Documentation Mirror

SolovayKitaevDecomposition

class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None)

GitHub(opens in a new tab)

Bases: object(opens in a new tab)

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 (str(opens in a new tab) |dict(opens in a new tab)[str(opens in a new tab), np.ndarray] | list(opens in a new tab)[GateSequence] | None) – 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

find_basic_approximation(sequence)

GitHub(opens in a new tab)

Find GateSequence in self._basic_approximations that approximates sequence.

Parameters

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

Returns

GateSequence in self._basic_approximations that approximates sequence.

Return type

GateSequence

load_basic_approximations

static load_basic_approximations(data)

GitHub(opens in a new tab)

Load basic approximations.

Parameters

data (list(opens in a new tab) |str(opens in a new tab) |dict(opens in a new tab)) – 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} or {gates: (matrix, global_phase)}. 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]]} and the global_phase can be given to account for a global phase difference between the U(2) matrix of the quantum gates and the stored SO(3) matrix. If not given, the global_phase will be assumed to be 0.

Returns

A list of basic approximations as type GateSequence.

Raises

ValueError(opens in a new tab) – If the number of gate combinations and associated matrices does not match.

Return type

list(opens in a new tab)[GateSequence]

run

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

GitHub(opens in a new tab)

Run the algorithm.

Parameters

Returns

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

Return type

QuantumCircuit’ | ‘DAGCircuit