Skip to main content
IBM Quantum Platform

PauliTwoDesign

class qiskit.circuit.library.PauliTwoDesign(num_qubits=None, reps=3, seed=None, insert_barriers=False, name='PauliTwoDesign')

GitHub

Bases : TwoLocal

L'ansatz de Pauli à deux conceptions.

Cette classe met en œuvre une forme particulière d'un circuit de type « 2-design » [1], qui fait souvent l'objet d'études dans la littérature consacrée à l'apprentissage automatique quantique, notamment dans le cadre de l'analyse des plateaux stériles dans les algorithmes variationnels [2].

Le circuit est constitué de couches alternées de rotation et d'intrication, avec une couche initiale de portes d' H=RY(π/4)\sqrt{H} = RY(\pi/4). Les couches de rotation contiennent des rotations de Pauli à un seul qubit, dont l'axe est choisi de manière aléatoire et uniforme parmi les axes X, Y ou Z. Les couches d'intrication sont constituées de portes CZ par paires d'une profondeur totale de 2.

Par exemple, le circuit pourrait ressembler à ceci (mais notez que le choix d'une graine différente produit des rotations de Pauli différentes).

     ┌─────────┐┌──────────┐       ░ ┌──────────┐       ░  ┌──────────┐
q_0: ┤ RY(π/4) ├┤ RZ(θ[0]) ├─■─────░─┤ RY(θ[4]) ├─■─────░──┤ RZ(θ[8]) ├
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░  ├──────────┤
q_1: ┤ RY(π/4) ├┤ RZ(θ[1]) ├─■──■──░─┤ RY(θ[5]) ├─■──■──░──┤ RX(θ[9]) ├
     ├─────────┤├──────────┤    │  ░ ├──────────┤    │  ░ ┌┴──────────┤
q_2: ┤ RY(π/4) ├┤ RX(θ[2]) ├─■──■──░─┤ RY(θ[6]) ├─■──■──░─┤ RX(θ[10]) ├
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░ ├───────────┤
q_3: ┤ RY(π/4) ├┤ RZ(θ[3]) ├─■─────░─┤ RX(θ[7]) ├─■─────░─┤ RY(θ[11]) ├
     └─────────┘└──────────┘       ░ └──────────┘       ░ └───────────┘

Exemples

from qiskit.circuit.library import PauliTwoDesign
circuit = PauliTwoDesign(4, reps=2, seed=5, insert_barriers=True)
circuit.draw('mpl')
Schéma de circuit produit par le code précédent.
Voir aussi

La fonction pauli_two_design() construit le même circuit sur le plan fonctionnel, mais plus rapidement.

Références

[1] : Nakata et al, Dessins unitaires à deux niveaux à partir d'unités diagonales X et Z aléatoires.

arXiv:1502.07514

[2] : McClean et al, Plateaux stériles dans les paysages de formation des réseaux neuronaux quantiques.

arXiv:1803.11173

Déclassé depuis la version 2.1

La classe qiskit.circuit.library.n_local.pauli_two_design.PauliTwoDesign est obsolète depuis Qiskit 2.1. Elle sera supprimée à Qiskit 3.0. Utilisez plutôt la fonction qiskit.circuit.library.pauli_two_design.

Paramètres

  • num_qubits (int | None) – Le nombre de qubits du circuit de Pauli à double conception.
  • reps (int) – Spécifie la fréquence de répétition d'un bloc composé d'une couche de rotation et d'une couche d'enchevêtrement.
  • seed (int | None) – La graine pour le choix aléatoire des axes des rotations de Pauli.
  • insert_barriers (bool) – Si True, des barrières sont insérées entre chaque couche. Si False, aucune barrière n'est insérée. La valeur par défaut est False.
  • name (str) – Le nom à attribuer au circuit généré.

Attributs

num_parameters_settable

Renvoie le nombre de paramètres réglables.

Retours

Le nombre de paramètres éventuellement distincts.

name

Type : str

Un nom lisible par l'homme pour le circuit.

Exemple

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.