Skip to main content
IBM Quantum Platform

Z2Symmetries

class qiskit.quantum_info.Z2Symmetries(symmetries, sq_paulis, sq_list, tapering_values=None, *, tol=1e-14)

GitHub

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

Valeurs déterminant le secteur.

Type

list[ int ] ou None

tol

Le seuil de tolérance pour ignorer les parties réelles et complexes d'un coefficient.

Type

Float

Références

[1] : Bravyi, S., et al, "Tapering off qubits to simulate fermionic Hamiltonians"

arXiv:1701.08213

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)

GitHub

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

SparsePauliOp

find_z2_symmetries

classmethod find_z2_symmetries(operator)

GitHub

Trouve Z2 Symétries de type Pauli d'une SparsePauliOp.

Retours

Une instance Z2Symmetries .

Paramètres

operator (SparsePauliOp)

Type de retour

Z2Symmetries

is_empty

is_empty()

GitHub

Vérifier que le site z2_symmetries est vide ou non.

Retours

Vide ou non.

Type de retour

booléen

taper

taper(operator)

GitHub

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)

GitHub

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

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