Vérifications
qiskit_paulice.checks
Fonctionnalité permettant de trouver des vérifications de Pauli efficaces dans l'espace-temps.
add_pauli_checks
add_pauli_checks(circuit, target_qubits, noise_model, cost='gamma', cost_nshots=10000, method='windowed', ancilla_qubits=None, check_creg_name='checks_c', check_qreg_name='checks_q', seed=None)
Ajouter des vérifications de Pauli spatio-temporelles à un circuit de Clifford.
L'algorithme de sélection des tests identifie les tests valides et de faible poids pour chaque qubit cible, dans l'ordre où ils sont spécifiés dans target_qubits , et choisit le test qui offre la meilleure couverture de détection d'erreurs (c'est-à-dire qui minimise la cost valeur de ). Une fois qu'une vérification a été validée sur target_qubits[0], elle sera retenue pour le reste de l'algorithme et la recherche d'une vérification valide sur target_qubits[1] commencera. C'est pourquoi l'ordre dans lequel les éléments sont spécifiés target_qubits peut avoir une incidence sur l'ensemble des vérifications générées par la fonction.
Cette fonction génère qiskit_paulice.CheckedCircuit des instances contenant un nombre de vérifications allant de 0 à une vérification par qubit cible. Il peut être instructif d'observer la convergence de la fonction de coût à mesure que l'on ajoute des vérifications, car on peut constater que la convergence de la fonction de coût s'obtient avec un nombre moindre de vérifications.
Pour plus de détails sur la recherche de contrôles de Pauli efficaces dans l'espace-temps, voir Section complémentaire II-VI de Martiel, Javadi.
Paramètres
-
circuit (QuantumCircuit) – Le circuit de Clifford à associer aux carreaux de Pauli dans l'espace-temps. Le circuit doit se terminer par une mesure effectuée sur au moins un qubit. Le circuit peut être défini sur des qubits virtuels ou physiques.
ancilla_qubitsSi le circuit dispose d'un schéma de disposition, l'utilisateur doit le fournir. -
target_qubits (Sequence[int]) – Les indices des
circuitqubits qui serviront à créer un enchevêtrement entre les qubits de contrôle et la charge utile. Lorsquecircuita une configuration (mode ISA), il s'agit d'indices de qubits physiques, dans le même espace d'indices queancilla_qubits. -
noise_model (NoiseModel) – Un modèle de bruit décrivant l'effet du bruit sur l'appareil cible. Ce modèle servira à estimer l'impact d'un contrôle donné au cours du processus de sélection des contrôles. Même s'il est possible de générer un modèle de bruit à partir du bruit de Pauli-Lindblad appris, une approximation plus grossière du bruit généré à partir des données de référence du backend suffit souvent. Les bords d'ancillaire/cible introduits par l'insertion de vérifications qui ne figurent pas dans les données fournies
GateWiseNoiseouLayeredNoisesont déduits automatiquement (taux médian par paire de Pauli sur l'ensemble des données fournies); indiquez-les explicitement pour les remplacer. -
cost (Literal['gamma', 'LER']) –
Indicateur à optimiser. Peut être
"gamma"ou"LER"(taux d'erreur logique)."gamma": La valeur gamma associée au canal de bruit logique inverse (c'est-à-dire le canal de bruit constitué des erreurs présentes dans le cône de lumière de mesure et indétectables par les contrôles)."LER": Taux d'erreur logique empirique après la post-sélection. Effectue des simulations de Monte Carlo afin de calculer la proportion de tirs présélectionnés affectés par du bruit logique non couvert.
-
cost_nshots (int) – Nombre de simulations Monte Carlo utilisées par les indicateurs de coût basés sur la méthode de Monte Carlo (actuellement uniquement
"LER"). -
method (Literal['windowed', 'genetic', 'windowed_genetic']) –
Sélectionnez la méthode de prélèvement (
"windowed","genetic", ou"windowed_genetic"). Chaque méthode ajoutera des vérifications lestarget_qubitsunes après les autres. Une fois qu'une vérification a été validée pour un qubit cible donné, elle ne sera pas annulée même si d'autres vérifications viennent s'y ajouter. Chaque méthode sélectionne les contrôles qui offrent une capacité maximale de détection des erreurs (c'est-à-dire le plus faiblecost)."windowed": Échantillonner de petits sous-ensembles de fils sur chaque qubit cible afin de trouver de bons contrôles"genetic": Élaborer un ensemble de vérifications candidates à partir de l'espace de Wire complet de chaque qubit cible"windowed_genetic": Effectuer une recherche génétique sur des fenêtres aléatoires de liaisons entre les qubits cibles
-
ancilla_qubits (Sequence[int] | None) – Liste des indices des qubits physiques (un par indice dans
target_qubits) précisant où placer les ancilles de vérification dans le circuit de sortie. Obligatoire lorsquecircuit.layoutn'est pasNone.ancilla_qubits[i]partagera des portes d'intrication avectarget_qubits[i]lors de la mise en œuvre dui-ième contrôle. -
check_creg_name (str) – Nom du registre classique pour les mesures de contrôle (par défaut : « checks_c »)
-
check_qreg_name (str) – Nom du registre quantique contenant les ancilles de vérification dans les circuits de sortie (par défaut : « checks_q »). Ignoré en mode ISA.
-
seed (int | None) – Graine aléatoire permettant de contrôler le caractère aléatoire lors de la recherche de bons contrôles. Bien que cette graine permette de contrôler une partie du caractère aléatoire de l'algorithme, un certain non-déterminisme subsiste lors de l'utilisation
LERde la fonction de coût ou de l'une ou l'autre des méthodes de sélection génétique. La combinaison decost="gamma"etmethod="windowed"est entièrement déterministe siseedn'est pasNone.
Retours
Une liste qiskit_paulice.CheckedCircuit d'instances – des instances contenant le circuit de base sans vérification et une instance pour chaque vérification ajoutée. L'élément final de la sortie contient les qiskit_paulice.CheckedCircuit avec des vérifications sur chaque qubit cible, en supposant qu'un ensemble valide de vérifications ait pu être trouvé.