English
Languages
English
Bengali
French
German
Japanese
Korean
Portuguese
Spanish
Tamil

SolovayKitaevSynthesis

class SolovayKitaevSynthesis[source]

Bases: qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin

A Solovay-Kitaev Qiskit unitary synthesis plugin.

This plugin is invoked by transpile() when the unitary_synthesis_method parameter is set to "sk".

This plugin supports customization and additional parameters can be passed to the plugin by passing a dictionary as the unitary_synthesis_plugin_config parameter of the transpile() function.

Supported parameters in the dictionary:

basis_approximations (str | dict):

The basic approximations for the finding the best discrete decomposition at the root of the recursion. If a string, it specifies the .npy file to load the approximations from. If a dictionary, it contains {label: SO(3)-matrix} pairs. If None, a default based on the specified basis_gates and depth is generated.

basis_gates (list):

A list of strings specifying the discrete basis gates to decompose to. If None, defaults to ["h", "t", "tdg"].

depth (int):

The gate-depth of the the basic approximations. All possible, unique combinations of the basis gates up to length depth are considered. If None, defaults to 10.

recursion_degree (int):

The number of times the decomposition is recursively improved. If None, defaults to 3.

Methods

run

Run synthesis for the given unitary matrix

Attributes

max_qubits

Maximum number of supported qubits is 1.

min_qubits

Minimum number of supported qubits is 1.

supported_bases

The plugin does not support bases for synthesis.

supports_basis_gates

The plugin does not support basis gates. By default it synthesis to the ["h", "t", "tdg"] gate basis.

supports_coupling_map

The plugin does not support coupling maps.

supports_gate_errors

The plugin does not support gate errors.

supports_gate_lengths

The plugin does not support gate lengths.

supports_natural_direction

The plugin does not support natural direction, it does not assume bidirectional two qubit gates.

supports_pulse_optimize

The plugin does not support optimization of pulses.

supports_target

Whether the plugin supports taking target as an option

target will be a Target object representing the target device for the output of the synthesis pass.

By default this will be False since the plugin interface predates the Target class. If a plugin returns True for this attribute, it is expected that the plugin will use the Target instead of the values passed if any of supports_gate_lengths, supports_gate_errors, supports_coupling_map, and supports_basis_gates are set (although ideally all those parameters should contain duplicate information).