Skip to main content
IBM Quantum Platform

qiskit.circuit.library.efficient_su2

qiskit.circuit.library.efficient_su2(num_qubits, su2_gates=None, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='EfficientSU2')

GitHub

Le circuit 2-local de SU(2)SU(2), efficace sur le plan matériel.

Le circuit efficient_su2 se compose de couches d'opérations sur un seul qubit, traversées par des enchevêtrements SU(2)SU(2) et CX. Il s'agit d'un modèle heuristique qui peut être utilisé pour préparer les fonctions d'onde d'essai pour les algorithmes quantiques variationnels ou les circuits de classification pour l'apprentissage automatique.

SU(2)SU(2) est le groupe unitaire spécial de degré 2, ses éléments sont 2×22 \times 2 matrices unitaires de déterminant 1, telles que les portes de rotation de Pauli.

Avec 3 qubits et en utilisant les rotations de Pauli YY et ZZ comme portes à un qubit, ce circuit est représenté par :

┌──────────┐┌──────────┐ ░            ░       ░ ┌───────────┐┌───────────┐
RY(θ[0]) ├┤ RZ(θ[3]) ├─░────────■───░─ ... ─░─┤ RY(θ[12]) ├┤ RZ(θ[15])
├──────────┤├──────────┤ ░      ┌─┴─┐ ░       ░ ├───────────┤├───────────┤
RY(θ[1]) ├┤ RZ(θ[4]) ├─░───■──┤ X ├─░─ ... ─░─┤ RY(θ[13]) ├┤ RZ(θ[16])
├──────────┤├──────────┤ ░ ┌─┴─┐└───┘ ░       ░ ├───────────┤├───────────┤
RY(θ[2]) ├┤ RZ(θ[5]) ├─░─┤ X ├──────░─ ... ─░─┤ RY(θ[14]) ├┤ RZ(θ[17])
└──────────┘└──────────┘ ░ └───┘      ░       ░ └───────────┘└───────────┘

Exemples :

Par défaut, l'enchevêtrement "reverse_linear" est utilisé, ce qui, dans le cas des portes CX, équivaut à un enchevêtrement tous azimuts :

from qiskit.circuit.library import efficient_su2

circuit = efficient_su2(3, reps=1)
circuit.draw("mpl")
Schéma de circuit produit par le code précédent.

Pour spécifier quelles portes SU(2) doivent être utilisées dans la couche de rotation, nous pouvons définir l'argument su2_gates . En outre, nous pouvons modifier la structure de l'enchevêtrement. Par exemple :

circuit = efficient_su2(4, su2_gates=["rx", "y"], entanglement="circular", reps=1)
circuit.draw("mpl")
Schéma de circuit produit par le code précédent.

Paramètres

  • num_qubits (int) – Le nombre de qubits.
  • su2_gates (str |Gate |Iterable[str |Gate] | None) – SU(2)SU(2) er les portes à un seul qubit à appliquer dans les couches de portes à un seul qubit. Si une seule porte est fournie, la même porte est appliquée à chaque qubit. Si une liste de portes est fournie, toutes les portes sont appliquées à chaque qubit dans l'ordre indiqué.
  • reps (int) – Spécifie la fréquence de répétition de la structure d'une couche de rotation suivie d'une couche d'enchevêtrement.
  • entanglement (str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]] | Callable[[int], str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]]]) – Les indices spécifiant sur quels qubits agissent les blocs d'entrée. Voir n_local() pour plus d'informations.
  • skip_final_rotation_layer (bool) – Si une couche de rotation finale est ajoutée au circuit.
  • skip_unentangled_qubits (bool) – Si True, les portes de rotation n'agissent que sur les qubits intriqués. Si False, les portes de rotation agissent sur tous les qubits.
  • parameter_prefix (str) – Le nom des paramètres libres.
  • insert_barriers (bool) – Si Vrai, des barrières sont insérées entre chaque couche. Si Faux, aucune barrière n'est insérée.
  • name (str) – Le nom du circuit.

Retours

Un circuit efficace SU(2).

Type de retour

QuantumCircuit

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