Skip to main content
IBM Quantum Platform

qiskit.circuit.library.excitation_preserving

qiskit.circuit.library.excitation_preserving(num_qubits, mode='iswap', entanglement='full', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='ExcitationPreserving')

GitHub

L'ansatz heuristique de la fonction d'onde préservant l'excitation.

Le circuit excitation_preserving préserve le rapport entre les états 00|00\rangle, 01+10|01\rangle + |10\rangle et 11|11\rangle. À cette fin, ce circuit utilise des interactions à deux qubits de la forme

(10000cos(θ/2)isin(θ/2)00isin(θ/2)cos(θ/2)0000eiϕ)\providecommand{\rotationangle}{\theta/2} \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\left(\rotationangle\right) & -i\sin\left(\rotationangle\right) & 0 \\ 0 & -i\sin\left(\rotationangle\right) & \cos\left(\rotationangle\right) & 0 \\ 0 & 0 & 0 & e^{-i\phi} \end{pmatrix}

pour le mode "fsim" ou avec eiϕ=1e^{-i\phi} = 1 pour le mode "iswap".

Notez que d'autres fonctions d'onde, telles que les UCC-ansatzes, préservent également l'excitation. Cependant, ces circuits peuvent devenir rapidement complexes, alors que ce circuit heuristiquement motivé suit un schéma plus simple.

Cette fonction d'onde d'essai est constituée de couches de rotations de type « ZZ » associées à des intriques à deux qubits. L'intrication est créée à l'aide de rotations de type « XX+YYXX+YY » et, éventuellement, d'une porte à phase contrôlée pour le mode "fsim".

Exemples :

Avec un enchevêtrement linéaire, ce circuit est donné par :

from qiskit.circuit.library import excitation_preserving

ansatz = excitation_preserving(3, reps=1, insert_barriers=True, entanglement="linear")
ansatz.draw("mpl")
Schéma de circuit produit par le code précédent.

La structure de l'enchevêtrement peut être spécifiée explicitement avec l'argument entanglement . Le mode "fsim" comprend une fonction supplémentaire paramétrée CPhaseGate dans chaque bloc :

ansatz = excitation_preserving(3, reps=1, mode="fsim", entanglement=[[0, 2]])
ansatz.draw("mpl")
Schéma de circuit produit par le code précédent.Schéma de circuit produit par le code précédent.

Paramètres

  • num_qubits (int) – Le nombre de qubits.
  • mode (str) – Choisissez le mode d'enchevêtrement, qui peut être "iswap" ou "fsim".
  • 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 Faux, aucune barrière n'est insérée.
  • name (str) – Le nom du circuit.

Retours

Un circuit préservant l'excitation.

Type de retour

QuantumCircuit

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