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

Construye un circuito 2-local de amplitudes reales.

Este circuito es una función de onda de prueba heurística que se utiliza, por ejemplo, como ansatz en aplicaciones de química, optimización o aprendizaje automático. El circuito consta de capas alternas de YY rotaciones y CXCX enredos. El patrón de enredo puede ser definido por el usuario o seleccionado de un conjunto predefinido. Este circuito es de "amplitudes reales", ya que los estados cuánticos preparados sólo tendrán amplitudes reales.

Por ejemplo, un circuito real_amplitudes con 2 repeticiones en 3 qubits con entrelazamiento "reverse_linear" es

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

El enredo puede establecerse utilizando la palabra clave entanglement como cadena o como una lista de pares de índices. Véase la documentación de n_local(). Otras opciones que pueden configurarse son el número de repeticiones, la omisión de las puertas de rotación en los qubits que no están entrelazados, la omisión de la capa de rotación final y la inserción de barreras entre las capas de rotación y entrelazamiento.

Ejemplos:

from qiskit.circuit.library import real_amplitudes

ansatz = real_amplitudes(3, reps=2)  # create the circuit on 3 qubits
ansatz.draw("mpl")
Diagrama del circuito generado por el código anterior.
ansatz = real_amplitudes(3, entanglement="full", reps=2)  # it is the same unitary as above
ansatz.draw("mpl")
Diagrama del circuito generado por el código anterior.
ansatz = real_amplitudes(3, entanglement="linear", reps=2, insert_barriers=True)
ansatz.draw("mpl")
Diagrama del circuito generado por el código anterior.
ansatz = real_amplitudes(4, reps=2, entanglement=[[0,3], [0,2]], skip_unentangled_qubits=True)
ansatz.draw("mpl")
Diagrama del circuito generado por el código anterior.

Parámetros

  • num_qubits (int) – El número de qubits del circuito RealAmplitudes.
  • 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 de amplitudes reales.

Tipo de retorno

QuantumCircuit

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