Z2Symmetries
class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)
Bases : object
Le convertisseur de symétrie $Z_2$ identifie les symétries du hamiltonien du problème et les utilise pour fournir une représentation effilée - plus efficace - des opérateurs comme Paulis pour ce problème. Pour chaque symétrie identifiée, un qubit peut être éliminé dans la représentation de Pauli au prix du test de deux secteurs de symétrie (pour les deux valeurs propres possibles de la symétrie). Dans certains problèmes tels que la recherche de l'état fondamental de l'opérateur principal, il est possible d'identifier a priori le secteur de symétrie de la solution et de réduire ainsi efficacement la charge de calcul.
Les attributs suivants peuvent être lus et mis à jour une fois que l'objet Z2Symmetries a été construit.
tapering_values
tol
Références
[1] : Bravyi, S., et al, "Tapering off qubits to simulate fermionic Hamiltonians"
Paramètres
- symmetries (Iterable[Pauli]) – Objet représentant la liste des symétries $Z_2$. Ils correspondent aux générateurs du groupe de symétrie $langle tau_1, tau_2dots rangle>$.
- sq_paulis (Iterable[Pauli]) – Objet représentant la liste des opérateurs de Pauli $sigma^x_ {q(i)} $ anti-commutant avec la symétrie $tau_i$ et commuant avec toutes les autres symétries $tau_ {jneq i} $. Ces opérateurs sont utilisés pour construire les opérateurs unitaires de Clifford.
- sq_list (Iterable[int]) – La liste des indices $q(i)$ des opérateurs de Pauli à qubit unique utilisés pour construire les opérateurs de Clifford.
- tapering_values (Iterable[int] | None) – Liste des valeurs propres déterminant le secteur de symétrie pour chaque symétrie.
- tol (float) – Seuil de tolérance pour ignorer les parties réelles et complexes d'un coefficient.
Augmentations
QiskitError – Paulis non valides. Les listes de symétries, de valeurs de support de Pauli pour les qubits uniques et de valeurs de tapering doivent être de même longueur. Cette longueur correspond au nombre de symétries appliquées et se traduit directement par le nombre de qubits éliminés.
Attributs
cliffords
Obtenez des opérateurs de clifford, construits sur la base de symétries et d'un qubit X unique.
Retours
Une liste d'unités utilisées pour diagonaliser l'hamiltonien.
settings
Retourner les réglages de l'opérateur.
sq_list
Retourner la liste sq.
sq_paulis
Retour sq paulis.
symmetries
Retourner les symétries.
Méthodes
convert_clifford
convert_clifford(operator)
Cette méthode opère la première partie de l'effilage. Il convertit l'opérateur en le composant avec les unitaires de clifford définis dans la symétrie courante.
Paramètres
operator (SparsePauliOp) – L'opérateur qui doit être mis en place.
Retours
SparsePauliOp correspondant à l'opérateur converti.
Type de retour
find_z2_symmetries
classmethod find_z2_symmetries(operator)
Trouve Z2 Symétries de type Pauli d'une SparsePauliOp.
Retours
Une instance Z2Symmetries .
Paramètres
operator (SparsePauliOp)
Type de retour
is_empty
is_empty()
Vérifier que le site z2_symmetries est vide ou non.
Retours
Vide ou non.
Type de retour
taper
taper(operator)
La réduction d'un opérateur est basée sur l'information z2_symmetries et sur le secteur défini par tapering_values. Renvoie l'opérateur si l'objet de symétrie est vide.
Le tapering est un algorithme en deux étapes qui convertit d'abord l'opérateur en un opérateur de Pauli SparsePauliOp avec les mêmes valeurs propres, mais où certains qubits ne sont affectés que par les opérateurs de Pauli I ou X. Le nombre M de ces qubits redondants est égal au nombre M de symétries identifiées.
La deuxième étape de la réduction consiste à remplacer ces qubits par les valeurs propres possibles du X de Pauli correspondant, ce qui donne 2^M de nouveaux opérateurs avec M qubits en moins. Si un secteur de valeurs propres a été précédemment identifié pour la solution, cela se réduit à un nouvel opérateur avec M qubits en moins.
Paramètres
operator (SparsePauliOp) – L'opérateur qui doit être mis en place.
Retours
[SparsePauliOp]; sinon, SparsePauliOp.
Type de retour
Si tapering_values est Aucun
taper_clifford
taper_clifford(operator)
Opérer la deuxième partie de l'effilage. Cette fonction suppose que les opérateurs d'entrée ont déjà été transformés à l'aide de la fonction convert_clifford(). Les qubits redondants dus aux symétries sont supprimés et remplacés par leurs deux valeurs propres possibles.
Paramètres
operator (SparsePauliOp) – Opérateur partiellement effilé résultant d'un appel à convert_clifford().
Retours
[SparsePauliOp]; sinon, SparsePauliOp.
Type de retour
Si tapering_values est Aucun