Skip to main content
IBM Quantum Platform

SolovayKitaevDecomposition

class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)

GitHub

Bases : object

L'algorithme de décomposition discrète de Solovay Kitaev.

Cette classe est appelée récursivement par la passe de transposition, c'est pourquoi elle est séparée. Pour plus d'informations, voir SolovayKitaev pour plus d'informations.

Remarque

Si basic_approximations est passé en tant que .npy fichier, pickle est utilisé en interne pour charger les données. Il s'agit d'une faille de sécurité potentielle et seuls les fichiers fiables doivent être chargés.

Paramètres

  • basic_approximations (str |dict[str, np.ndarray] | list[GateSequence] | None) –

    Une description des approximations de base de SO(3) en termes de portes discrètes. À chaque itération de cet algorithme, l'erreur restante est estimée à l'aide de la séquence de portes la plus proche dans cet ensemble. Si a est strspécifié, cela indique le nom du fichier à partir duquel charger l'approximation. Si a dict, alors cela contient {gates: effective_SO3_matrix} paires, par exemple {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]}. S'il s'agit d'une liste, celle-ci contient les mêmes informations que le dictionnaire, mais déjà converties en GateSequence objets, qui contiennent la matrice SO(3) et les portes.

    Ce paramètre ou basis_gates et depth peuvent être spécifiés.

  • basis_gates (list[str |Gate] | None) – Une liste de portes standard discrètes (c'est-à-dire non paramétrées). Prend par défaut la valeur ["h", "t", "tdg"].

  • depth (int) – Nombre de combinaisons de portes de base à prendre en compte dans l'ensemble de base. Elle détermine la vitesse de convergence de l'algorithme (et si elle existe) et doit être choisie suffisamment élevée.

  • check_input (bool) – Si True, procéder à des étapes intermédiaires en vérifiant si les matrices sont de la forme attendue.


Attributs

basis_gates

L'ensemble de portes de base des approximations de base.

Si None, la valeur par défaut est ["h", "t", "tdg"].

check_input

Si les données internes doivent faire l'objet d'un contrôle au moment de l'exécution.

depth

La profondeur de grille maximale des approximations de base.


Méthodes

find_basic_approximation

find_basic_approximation(sequence)

GitHub

Trouvez GateSequence dans self._basic_approximations qui se rapproche de sequence.

Obsolète depuis la version 2.3

Cette méthode qiskit.synthesis.discrete_basis.solovay_kitaev.SolovayKitaevDecomposition.find_basic_approximation() est obsolète depuis la version 2.3 de Qiskit. Il sera supprimé au plus tôt 3 mois après la date de publication. Utilisez plutôt query_basic_approximation, qui prend une porte ou une matrice en entrée et renvoie un objet QuantumCircuit.

Paramètres

sequence (GateSequence) – GateSequence pour trouver l'approximation de.

Retours

GateSequence qui se rapproche de sequence.

Type de retour

GateSequence

load_basic_approximations

static load_basic_approximations(data)

GitHub

Charger les approximations de base.

Remarque

Si data est fourni sous forme de chaîne, cette méthode utilise en interne pickle pour charger le fichier. Il s'agit d'une faille de sécurité potentielle et seuls les fichiers fiables doivent être chargés.

Paramètres

data (list |str |dict) – S'il s'agit d'une chaîne, spécifie le chemin d'accès au fichier à partir duquel les données doivent être chargées. S'il s'agit d'un dictionnaire, il spécifie directement les décompositions comme {gates: matrix} ou {gates: (matrix, global_phase)}. Dans ce cas, gates sont les noms des portes produisant la matrice SO(3) matrix, par exemple. {"h t": np.array([[0, 0.7071, -0.7071], [0, -0.7071, -0.7071], [-1, 0, 0]]} et le site global_phase peut être donné pour tenir compte d'une différence de phase globale entre la matrice U(2) des portes quantiques et la matrice SO(3) stockée. Si elle n'est pas indiquée, la valeur de global_phase sera considérée comme égale à 0.

Retours

Une liste d'approximations de base sous forme de type GateSequence.

Augmentations

ValueError - Si le nombre de combinaisons de portes et les matrices associées ne correspondent pas.

Type de retour

liste [GateSequence]

query_basic_approximation

query_basic_approximation(gate)

GitHub

Interroger une approximation de base d'une matrice.

Paramètres

gate (ndarray |Gate)

Type de retour

QuantumCircuit

run

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

GitHub

Exécuter l'algorithme.

Paramètres

  • gate_matrix (np.ndarray | Gate) – La porte d'accès à un qubit unique à l'approximation. Il peut s'agir d'un GateGate.to_matrix() renvoie la matrice, ou une matrice unitaire 2×22\times 2 représentant la porte.
  • recursion_degree (int) – Le degré de récurrence, appelé nn dans le document.
  • return_dag (bool) – Si True renvoie a DAGCircuit, sinon a QuantumCircuit.
  • check_input (bool) – Si True , vérifier que la matrice d'entrée est valide pour la décomposition. Remplace l'attribut de classe portant le même nom, mais uniquement pour cet appel de fonction.

Retours

Un circuit à un qubit approximant le site gate_matrix dans la base discrète spécifiée.

Type de retour

QuantumCircuit | DAGCircuit

save_basic_approximations

save_basic_approximations(filename)

GitHub

Enregistrer les approximations de base dans un fichier.

Il peut ensuite être chargé à nouveau via l'initialisateur de la classe (de préférence) ou via l'option load_basic_approximations():

filename = "approximations.bin"
sk.save_basic_approximations(filename)

new_sk = SolovayKitaevDecomposition(filename)

Paramètres

filename (str) – Le nom du fichier dans lequel les approximations doivent être stockées.

Augmentations

ValueError - Si le nom du fichier a une extension.npy. Le format n'est pas.npy, et le stockage en tant que tel peut entraîner des erreurs lors du chargement du fichier.

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