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

O circuito SU(2)SU(2) 2-local eficiente em termos de hardware.

O circuito efficient_su2 consiste em camadas de operações de um único qubit, abrangendo os emaranhados SU(2)SU(2) e CX. Esse é um padrão heurístico que pode ser usado para preparar funções de onda de teste para algoritmos quânticos variacionais ou circuito de classificação para aprendizado de máquina.

SU(2)SU(2) é o grupo unitário especial de grau 2, seus elementos são 2×22 \times 2 matrizes unitárias com determinante 1, como as portas de rotação de Pauli.

Com 3 qubits e utilizando as rotações de Pauli YY e ZZ como portas de qubit único, este circuito é representado por:

┌──────────┐┌──────────┐ ░            ░       ░ ┌───────────┐┌───────────┐
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])
└──────────┘└──────────┘ ░ └───┘      ░       ░ └───────────┘└───────────┘

Exemplos:

Por padrão, o entrelaçamento "reverse_linear" é usado, o que, no caso de portas CX, é equivalente a um entrelaçamento de todos para todos:

from qiskit.circuit.library import efficient_su2

circuit = efficient_su2(3, reps=1)
circuit.draw("mpl")
Diagrama de circuito gerado pelo código anterior.

Para especificar quais portas SU(2) devem ser usadas na camada de rotação, podemos definir o argumento su2_gates . Além disso, podemos alterar a estrutura de emaranhamento. Por exemplo:

circuit = efficient_su2(4, su2_gates=["rx", "y"], entanglement="circular", reps=1)
circuit.draw("mpl")
Diagrama de circuito gerado pelo código anterior.

Parâmetros

  • num_qubits (int) – O número de qubits.
  • su2_gates (str |Gate |Iterable[str |Gate] | None) – SU(2)SU(2) a portas de qubit único para aplicar em camadas de porta de qubit único. Se apenas um portão for fornecido, o mesmo portão será aplicado a cada qubit. Se for fornecida uma lista de portas, todas as portas são aplicadas a cada qubit na ordem fornecida.
  • reps (int) – Especifica a frequência com que a estrutura de uma camada de rotação seguida por uma camada de emaranhamento é repetida.
  • entanglement (str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]] | Callable[[int], str |Iterable[Iterable[int]] | Iterable[str |Iterable[Iterable[int]]]]) – Os índices que especificam em quais qubits os blocos de entrada atuam. Consulte n_local() para obter informações detalhadas.
  • skip_final_rotation_layer (bool) – Se uma camada de rotação final é adicionada ao circuito.
  • skip_unentangled_qubits (bool) – Se True, as portas de rotação atuam somente nos qubits que estão emaranhados. Se False, as portas de rotação atuam em todos os qubits.
  • parameter_prefix (str) – O nome dos parâmetros livres.
  • insert_barriers (bool) – Se for True, serão inseridas barreiras entre cada camada. Se for False, nenhuma barreira será inserida.
  • name (str) – O nome do circuito.

Retorna

Um circuito eficiente-SU(2).

Tipo de retorno

QuantumCircuit

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.