Skip to main content
IBM Quantum Platform

qiskit.circuit.library.evolved_operator_ansatz

qiskit.circuit.library.evolved_operator_ansatz(operators, reps=1, evolution=None, insert_barriers=False, name='EvolvedOps', parameter_prefix='t', remove_identities=True, flatten=None)

GitHub

Construa um ansatz a partir de evoluções de operadores.

Para um conjunto de operadores [O1,...,OJ][O_1, ..., O_J] e repetições RR (reps), esse circuito é definido como

r=1R(j=J1eiθj,rOj)\prod_{r=1}^{R} \left( \prod_{j=J}^1 e^{-i\theta_{j, r} O_j} \right)

onde os exponenciais exp(iθOj)exp(-i\theta O_j) são expandidos usando a fórmula de produto especificada por evolution.

Exemplos:

from qiskit.circuit.library import evolved_operator_ansatz
from qiskit.quantum_info import Pauli

ops = [Pauli("ZZI"), Pauli("IZZ"), Pauli("IXI")]
ansatz = evolved_operator_ansatz(ops, reps=3, insert_barriers=True)
ansatz.draw("mpl")
Diagrama de circuito gerado pelo código anterior.

Parâmetros

  • operators (BaseOperator | Sequence[BaseOperator]) – As operadoras devem evoluir. Pode ser um único operador ou uma sequência deles.
  • reps (int) – O número de vezes para repetir os operadores evoluídos.
  • evolution (EvolutionSynthesis | None) – Uma especificação de qual síntese de evolução usar para o PauliEvolutionGate. O padrão é Trotterização de primeira ordem. Observe que os operadores do tipo Operator são evoluídos usando o HamiltonianGatepois não há termos hamiltonianos a serem expandidos na troterização.
  • insert_barriers (bool) – Se deve inserir barreiras entre cada evolução.
  • name (str) – O nome do circuito.
  • parameter_prefix (str | Sequence[str]) – Defina os nomes dos parâmetros do circuito. Se for uma string, o mesmo prefixo será usado para cada parâmetro. Também pode ser uma lista para especificar um prefixo por operador.
  • remove_identities (bool) – Se True, ignore os operadores de identidade (observe que não verificamos as Operator entradas). Isso também removerá os parâmetros associados às identidades.
  • flatten (bool | None) – Se True, um circuito plano é retornado em vez de ser aninhado em várias camadas de objetos de porta. Definir isso como False é significativamente menos eficiente, especialmente para a vinculação de parâmetros, mas pode ser desejável para uma visualização mais limpa.

Tipo de retorno

QuantumCircuit

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