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')
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 et d'enchevêtrements . 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")
ansatz = real_amplitudes(3, entanglement="full", reps=2) # it is the same unitary as above
ansatz.draw("mpl")
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
ansatz.draw("mpl")
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
ansatz.draw("mpl")
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. 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 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