SolovayKitaevDecomposition
class qiskit.synthesis.SolovayKitaevDecomposition(basic_approximations=None, *, basis_gates=None, depth=12, check_input=False)
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.
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 adict, 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 enGateSequenceobjets, qui contiennent la matrice SO(3) et les portes.Ce paramètre ou
basis_gatesetdepthpeuvent ê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)
Trouvez GateSequence dans self._basic_approximations qui se rapproche de sequence.
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)
Charger les approximations de base.
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)
Interroger une approximation de base d'une matrice.
Paramètres
Type de retour
run
run(gate_matrix, recursion_degree, return_dag=False, check_input=True)
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
GateoùGate.to_matrix()renvoie la matrice, ou une matrice unitaire représentant la porte. - recursion_degree (int) – Le degré de récurrence, appelé dans le document.
- return_dag (bool) – Si
Truerenvoie aDAGCircuit, sinon aQuantumCircuit. - 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
save_basic_approximations
save_basic_approximations(filename)
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.