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')
O circuito 2-local eficiente em termos de hardware.
O circuito efficient_su2 consiste em camadas de operações de um único qubit, abrangendo os emaranhados 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.
é o grupo unitário especial de grau 2, seus elementos são matrizes unitárias com determinante 1, como as portas de rotação de Pauli.
Com 3 qubits e utilizando as rotações de Pauli e 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")
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")
Parâmetros
- num_qubits (int) – O número de qubits.
- su2_gates (str |Gate |Iterable[str |Gate] | None) – 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. SeFalse, 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