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')
Le circuit 2-local de , 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 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.
est le groupe unitaire spécial de degré 2, ses éléments sont matrices unitaires de déterminant 1, telles que les portes de rotation de Pauli.
Avec 3 qubits et en utilisant les rotations de Pauli et 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")
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")
Paramètres
- num_qubits (int) – Le nombre de qubits.
- su2_gates (str |Gate |Iterable[str |Gate] | None) – 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. SiFalse, 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