Skip to main content
IBM Quantum Platform

RossSelingerSynthesis

class qiskit.transpiler.passes.synthesis.ross_selinger_plugin.RossSelingerSynthesis

GitHub

Bases : UnitarySynthesisPlugin

Un plugin de synthèse unitaire Ross-Selinger Qiskit.

L'algorithme est décrit au point [1]. Le code source (en Rust) est disponible à l'adresse https://github.com/qiskit-community/rsgridsynth.

Ce plugin est appelé lorsque transpile() le unitary_synthesis_method paramètre est défini sur "gridsynth".

Ce plugin prend en charge la personnalisation; il est possible de lui transmettre des paramètres supplémentaires en passant un dictionnaire en tant que unitary_synthesis_plugin_config paramètre de la transpile() fonction.

Paramètres pris en charge dans le dictionnaire :

epsilon ( f64 ) :

L'erreur d'approximation autorisée.

Références :

[1] Neil J. Ross, Peter Selinger, Approximation optimale sans ancilla Clifford+T des rotations z,

arXiv:1403.2975


Attributs

max_qubits

Le nombre maximal de qubits pris en charge est 1.

min_qubits

Le nombre minimum de qubits pris en charge est 1.

supported_bases

Le plugin ne prend pas en charge les bases pour la synthèse.

supports_basis_gates

Le plugin ne prend pas en charge les portes de base. Par défaut, il synthétise à la base ["h", "s", "t", "x"] de la porte.

supports_coupling_map

Le plugin ne prend pas en charge les cartes de couplage.

supports_gate_errors

Le plugin ne prend pas en charge les erreurs de porte.

supports_gate_errors_by_qubit

Renvoie si le plugin prend en charge la prise en charge gate_errors_by_qubit

Cela diffère de supports_gate_errors/gate_errors en utilisant une vue différente des mêmes données. Au lieu d'être indexé par nom de porte, il est indexé par qubit et utilise Gate des instances pour représenter les portes (au lieu des noms de portes).

gate_errors_by_qubit sera un dictionnaire sous la forme de {(qubits,): [Gate, error]}. Par exemple :

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

Veuillez noter que ce dictionnaire peut ne pas être complet ou être vide, car il dépend du backend cible qui signale les erreurs de porte pour chaque qubit. Les taux d'erreur de porte signalés dans gate_errors sont fournis par l'objet du Backend périphérique cible et leur signification exacte peut varier en fonction du backend.

La valeur par défaut est False

supports_gate_lengths

Le plugin ne prend pas en charge les longueurs de porte.

supports_gate_lengths_by_qubit

Renvoie si le plugin prend en charge la prise en charge gate_lengths_by_qubit

Cela diffère de supports_gate_lengths/gate_lengths en utilisant une vue différente des mêmes données. Au lieu d'être indexé par nom de porte, il est indexé par qubit et utilise Gate des instances pour représenter les portes (au lieu des noms de portes)

gate_lengths_by_qubit sera un dictionnaire sous la forme de {(qubits,): [Gate, length]}. Par exemple :

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

où la length valeur est exprimée en secondes.

Veuillez noter que ce dictionnaire peut être incomplet ou vide, car il dépend du backend cible qui signale les longueurs de porte pour chaque qubit.

La valeur par défaut est False

supports_natural_direction

Le plugin ne prend pas en charge la direction naturelle, il ne suppose pas de portes bidirectionnelles à deux qubits.

supports_pulse_optimize

Le plugin ne prend pas en charge l'optimisation des impulsions.

supports_target

Si le plugin prend target en charge l'option

target sera un Target objet représentant le périphérique cible pour la sortie du passage de synthèse.

Par défaut, ce sera False car l'interface du plugin est antérieure à la Target classe. Si un plugin renvoie True pour cet attribut, il est prévu que le plugin utilise le Target au lieu des valeurs transmises si l'un des supports_gate_lengthsparamètres supports_gate_errors, supports_coupling_map, et supports_basis_gates est défini (bien que, dans l'idéal, tous ces paramètres devraient contenir des informations en double).


Méthodes

run

run(unitary, **options)

GitHub

Exécutez le plugin de synthèse Ross-Selinger sur l'unitaire donné.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.