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

O ansatz da função de onda com preservação da excitação heurística.

O circuito excitation_preserving preserva a proporção dos estados 00|00\rangle, 01+10|01\rangle + |10\rangle e 11|11\rangle. Para isso, esse circuito usa interações de dois qubits da 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 o modo "fsim" ou com eiϕ=1e^{-i\phi} = 1 para o modo "iswap".

Observe que outras funções de onda, como as UCC-ansatzes, também preservam a excitação. No entanto, eles podem se tornar complexos rapidamente, enquanto esse circuito motivado pela heurística segue um padrão mais simples.

Esta função de onda experimental consiste em camadas de rotações de tipo “ ZZ ” com entrelaçamentos de 2 qubits. O entrelaçamento é criado por meio de rotações d XX+YYXX+YY e e, opcionalmente, de um portão de fase controlada para o modo "fsim".

Exemplos:

Com o entrelaçamento linear, esse circuito é dado por:

from qiskit.circuit.library import excitation_preserving

ansatz = excitation_preserving(3, reps=1, insert_barriers=True, entanglement="linear")
ansatz.draw("mpl")
Diagrama de circuito gerado pelo código anterior.

A estrutura de emaranhamento pode ser explicitamente especificada com o argumento entanglement . O modo "fsim" inclui um parâmetro adicional CPhaseGate em cada bloco:

ansatz = excitation_preserving(3, reps=1, mode="fsim", entanglement=[[0, 2]])
ansatz.draw("mpl")
Diagrama de circuito gerado pelo código anterior.Diagrama de circuito gerado pelo código anterior.

Parâmetros

  • num_qubits (int) – O número de qubits.
  • mode (str) – Escolha o modo de emaranhamento, que pode ser "iswap" ou "fsim".
  • 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 de preservação de excitação.

Tipo de retorno

QuantumCircuit

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