Skip to main content
IBM Quantum Platform

qiskit.circuit.library.real_amplitudes

qiskit.circuit.library.real_amplitudes(num_qubits, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='RealAmplitudes')

GitHub

Construire un circuit 2-local à amplitudes réelles.

Ce circuit est une fonction d'onde d'essai heuristique utilisée, par exemple, comme ansatz dans des applications de chimie, d'optimisation ou d'apprentissage automatique. Le circuit consiste en une alternance de couches de rotations YY et d'enchevêtrements CXCX. Le modèle d'enchevêtrement peut être défini par l'utilisateur ou sélectionné à partir d'un ensemble prédéfini. Ce circuit est à "amplitudes réelles" puisque les états quantiques préparés n'auront que des amplitudes réelles.

Par exemple, un circuit real_amplitudes avec 2 répétitions sur 3 qubits avec "reverse_linear" est

┌──────────┐ ░            ░ ┌──────────┐ ░            ░ ┌──────────┐
Ry(θ[0]) ├─░────────■───░─┤ Ry(θ[3]) ├─░────────■───░─┤ Ry(θ[6])
├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤ ░      ┌─┴─┐ ░ ├──────────┤
Ry(θ[1]) ├─░───■──┤ X ├─░─┤ Ry(θ[4]) ├─░───■──┤ X ├─░─┤ Ry(θ[7])
├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤ ░ ┌─┴─┐└───┘ ░ ├──────────┤
Ry(θ[2]) ├─░─┤ X ├──────░─┤ Ry(θ[5]) ├─░─┤ X ├──────░─┤ Ry(θ[8])
└──────────┘ ░ └───┘      ░ └──────────┘ ░ └───┘      ░ └──────────┘

L'enchevêtrement peut être défini à l'aide du mot-clé entanglement sous la forme d'une chaîne de caractères ou d'une liste de paires d'index. Voir la documentation de n_local(). D'autres options peuvent être définies, notamment le nombre de répétitions, l'omission des portes de rotation sur les qubits qui ne sont pas intriqués, l'omission de la couche de rotation finale et l'insertion de barrières entre la couche de rotation et la couche d'intrication.

Exemples :

from qiskit.circuit.library import real_amplitudes

ansatz = real_amplitudes(3, reps=2)  # create the circuit on 3 qubits
ansatz.draw("mpl")
Schéma de circuit produit par le code précédent.
ansatz = real_amplitudes(3, entanglement="full", reps=2)  # it is the same unitary as above
ansatz.draw("mpl")
Schéma de circuit produit par le code précédent.
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
ansatz.draw("mpl")
Schéma de circuit produit par le code précédent.
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
ansatz.draw("mpl")
Schéma de circuit produit par le code précédent.

Paramètres

  • num_qubits (int) – Le nombre de qubits du circuit RealAmplitudes.
  • 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 qui sont 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 False, aucune barrière n'est insérée.
  • name (str) – Le nom du circuit.

Retours

Un circuit d'amplitude réelle.

Type de retour

QuantumCircuit

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