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

El ansatz heurístico de la función de onda que preserva la excitación.

El circuito excitation_preserving conserva la relación de estados 00|00\rangle, 01+10|01\rangle + |10\rangle y 11|11\rangle. Para ello, este circuito utiliza interacciones de dos qubits de la forma

(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}

para el modo "fsim" o con eiϕ=1e^{-i\phi} = 1 para el modo "iswap".

Obsérvese que otras funciones de onda, como las UCC-ansatzes, también preservan la excitación. Sin embargo, éstos pueden volverse complejos rápidamente, mientras que este circuito heurísticamente motivado sigue un patrón más sencillo.

Esta función de onda de prueba está formada por capas de rotaciones de tipo « ZZ » con entrelazamientos de dos qubits. El entrelazamiento se crea mediante rotaciones de tipo « XX+YYXX+YY » y, opcionalmente, una puerta de fase controlada para el modo "fsim".

Ejemplos:

Con entrelazamiento lineal, este circuito viene dado por:

from qiskit.circuit.library import excitation_preserving

ansatz = excitation_preserving(3, reps=1, insert_barriers=True, entanglement="linear")
ansatz.draw("mpl")
Diagrama del circuito generado por el código anterior.

La estructura de enredo puede especificarse explícitamente con el argumento entanglement . El modo "fsim" incluye un parámetro adicional CPhaseGate en cada bloque:

ansatz = excitation_preserving(3, reps=1, mode="fsim", entanglement=[[0, 2]])
ansatz.draw("mpl")
Diagrama del circuito generado por el código anterior.Diagrama del circuito generado por el código anterior.

Parámetros

  • num_qubits (int) – El número de qubits.
  • mode (str) – Elige el modo de enredo, puede ser "iswap" o "fsim".
  • reps (int) – Especifica la frecuencia con la que se repite la estructura de una capa de rotación seguida de una capa de enredo.
  • entanglement (str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]] | Callable[[int], str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]]]) – Los índices que especifican sobre qué qubits actúan los bloques de entrada. Consulte n_local() para obtener información detallada.
  • skip_final_rotation_layer (bool) – Si se añade una capa de rotación final al circuito.
  • skip_unentangled_qubits (bool) – Si True, las puertas de rotación sólo actúan sobre los qubits que están enredados. Si False, las puertas de rotación actúan sobre todos los qubits.
  • parameter_prefix (str) – El nombre de los parámetros libres.
  • insert_barriers (bool) – Si es True, se insertan barreras entre cada capa. Si es False, no se insertan barreras.
  • name (str) – El nombre del circuito.

Devuelve

Un circuito que preserva la excitación.

Tipo de retorno

QuantumCircuit

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.