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

Construa um circuito 2-local de amplitudes reais.

Esse circuito é uma função de onda experimental heurística usada, por exemplo, como ansatz em aplicações de química, otimização ou aprendizado de máquina. O circuito consiste em camadas alternadas de rotações YY e emaranhados CXCX. O padrão de emaranhamento pode ser definido pelo usuário ou selecionado a partir de um conjunto predefinido. Esse circuito é de "amplitudes reais", pois os estados quânticos preparados terão apenas amplitudes reais.

Por exemplo, um circuito real_amplitudes com 2 repetições em 3 qubits com emaranhamento "reverse_linear" é

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

O entrelaçamento pode ser definido usando a palavra-chave entanglement como string ou uma lista de pares de índices. Consulte a documentação do n_local(). As opções adicionais que podem ser definidas incluem o número de repetições, ignorando as portas de rotação em qubits que não estão emaranhados, deixando de fora a camada de rotação final e inserindo barreiras entre as camadas de rotação e emaranhamento.

Exemplos:

from qiskit.circuit.library import real_amplitudes

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

Parâmetros

  • num_qubits (int) – O número de qubits do circuito RealAmplitudes.
  • 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 amplitudes reais.

Tipo de retorno

QuantumCircuit

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