qiskit-documentation/docs/api/qiskit/0.40/qiskit.transpiler.passes.So...

126 lines
6.1 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: SolovayKitaevSynthesis
description: API reference for qiskit.transpiler.passes.SolovayKitaevSynthesis
in_page_toc_min_heading_level: 1
python_api_type: class
python_api_name: qiskit.transpiler.passes.SolovayKitaevSynthesis
---
# SolovayKitaevSynthesis
<Class id="qiskit.transpiler.passes.SolovayKitaevSynthesis" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.23/qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py" signature="SolovayKitaevSynthesis" modifiers="class">
Bases: [`qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin")
A Solovay-Kitaev Qiskit unitary synthesis plugin.
This plugin is invoked by [`transpile()`](qiskit.compiler.transpile "qiskit.compiler.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()`](qiskit.compiler.transpile "qiskit.compiler.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
<Function id="qiskit.transpiler.passes.SolovayKitaevSynthesis.run" signature="SolovayKitaevSynthesis.run(unitary, **options)">
Run synthesis for the given unitary matrix
**Parameters**
* **unitary** (*numpy.ndarray*) The unitary matrix to synthesize to a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") object
* **options** The optional kwargs that are passed based on the output the `support_*` methods on the class. Refer to the documentation for these methods on [`UnitarySynthesisPlugin`](qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin "qiskit.transpiler.passes.synthesis.plugin.UnitarySynthesisPlugin") to see what the keys and values are.
**Returns**
The dag circuit representation of the unitary. Alternatively, you can return a tuple of the form `(dag, wires)` where `dag` is the dag circuit representation of the circuit representation of the unitary and `wires` is the mapping wires to use for [`qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag()`](qiskit.dagcircuit.DAGCircuit#substitute_node_with_dag "qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag"). If you return a tuple and `wires` is `None` this will behave just as if only a [`DAGCircuit`](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit") was returned. Additionally if this returns `None` no substitution will be made.
**Return type**
[DAGCircuit](qiskit.dagcircuit.DAGCircuit "qiskit.dagcircuit.DAGCircuit")
</Function>
## Attributes
### max\_qubits
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.max_qubits">
Maximum number of supported qubits is `1`.
</Attribute>
### min\_qubits
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.min_qubits">
Minimum number of supported qubits is `1`.
</Attribute>
### supported\_bases
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supported_bases">
The plugin does not support bases for synthesis.
</Attribute>
### supports\_basis\_gates
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supports_basis_gates">
The plugin does not support basis gates. By default it synthesis to the `["h", "t", "tdg"]` gate basis.
</Attribute>
### supports\_coupling\_map
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supports_coupling_map">
The plugin does not support coupling maps.
</Attribute>
### supports\_gate\_errors
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supports_gate_errors">
The plugin does not support gate errors.
</Attribute>
### supports\_gate\_lengths
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supports_gate_lengths">
The plugin does not support gate lengths.
</Attribute>
### supports\_natural\_direction
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supports_natural_direction">
The plugin does not support natural direction, it does not assume bidirectional two qubit gates.
</Attribute>
### supports\_pulse\_optimize
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supports_pulse_optimize">
The plugin does not support optimization of pulses.
</Attribute>
### supports\_target
<Attribute id="qiskit.transpiler.passes.SolovayKitaevSynthesis.supports_target">
Whether the plugin supports taking `target` as an option
`target` will be a [`Target`](qiskit.transpiler.Target "qiskit.transpiler.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`](qiskit.transpiler.Target "qiskit.transpiler.Target") class. If a plugin returns `True` for this attribute, it is expected that the plugin will use the [`Target`](qiskit.transpiler.Target "qiskit.transpiler.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).
</Attribute>
</Class>