Skip to main content
IBM Quantum Platform

qiskit.circuit.library.efficient_su2

qiskit.circuit.library.efficient_su2(num_qubits, su2_gates=None, entanglement='reverse_linear', reps=3, skip_unentangled_qubits=False, skip_final_rotation_layer=False, parameter_prefix='θ', insert_barriers=False, name='EfficientSU2')

GitHub

El circuito hardware-eficiente SU(2)SU(2) 2-local.

El circuito efficient_su2 consiste en capas de operaciones de qubit único atravesadas por SU(2)SU(2) y enredos CX. Se trata de un patrón heurístico que puede utilizarse para preparar funciones de onda de prueba para algoritmos cuánticos variacionales o circuitos de clasificación para el aprendizaje automático.

SU(2)SU(2) es el grupo unitario especial de grado 2, sus elementos son 2×22 \times 2 matrices unitarias con determinante 1, como las puertas de rotación de Pauli.

Con 3 qubits y utilizando las rotaciones de Pauli YY y ZZ como puertas de un solo qubit, este circuito se representa así:

┌──────────┐┌──────────┐ ░            ░       ░ ┌───────────┐┌───────────┐
RY(θ[0]) ├┤ RZ(θ[3]) ├─░────────■───░─ ... ─░─┤ RY(θ[12]) ├┤ RZ(θ[15])
├──────────┤├──────────┤ ░      ┌─┴─┐ ░       ░ ├───────────┤├───────────┤
RY(θ[1]) ├┤ RZ(θ[4]) ├─░───■──┤ X ├─░─ ... ─░─┤ RY(θ[13]) ├┤ RZ(θ[16])
├──────────┤├──────────┤ ░ ┌─┴─┐└───┘ ░       ░ ├───────────┤├───────────┤
RY(θ[2]) ├┤ RZ(θ[5]) ├─░─┤ X ├──────░─ ... ─░─┤ RY(θ[14]) ├┤ RZ(θ[17])
└──────────┘└──────────┘ ░ └───┘      ░       ░ └───────────┘└───────────┘

Ejemplos:

Por defecto, se utiliza el entrelazamiento "reverse_linear" , que, en el caso de las puertas CX, equivale a un entrelazamiento de todos contra todos:

from qiskit.circuit.library import efficient_su2

circuit = efficient_su2(3, reps=1)
circuit.draw("mpl")
Diagrama del circuito generado por el código anterior.

Para especificar qué puertas SU(2) deben utilizarse en la capa de rotación, podemos establecer el argumento su2_gates . Además, podemos cambiar la estructura de enredo. Por ejemplo:

circuit = efficient_su2(4, su2_gates=["rx", "y"], entanglement="circular", reps=1)
circuit.draw("mpl")
Diagrama del circuito generado por el código anterior.

Parámetros

  • num_qubits (int) – El número de qubits.
  • su2_gates (str |Gate |Iterable[str |Gate] | None) – SU(2)SU(2) a puertas de un solo qubit para aplicar en capas de puertas de un solo qubit. Si solo se proporciona una puerta, se aplica la misma puerta a cada qubit. Si se proporciona una lista de puertas, todas las puertas se aplican a cada qubit en el orden proporcionado.
  • 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 eficiente-SU(2).

Tipo de retorno

QuantumCircuit

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