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

Construir un ansatz a partir de evoluciones de operadores.

Para un conjunto de operadores [O1,...,OJ][O_1, ..., O_J] y repeticiones RR (reps), este circuito se define como

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

donde los exponenciales exp(−iθOj)exp(-i\theta O_j) se expanden utilizando la fórmula del producto especificada en evolution.

Ejemplos:

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 del circuito generado por el código anterior.

Parámetros

  • operators (BaseOperator | Sequence[BaseOperator]) – Los operadores a evolucionar. Puede ser un único operador o una secuencia de ellos.
  • reps (int) – El número de veces que se deben repetir los operadores evolucionados.
  • evolution (EvolutionSynthesis | None) – Una especificación de qué síntesis de evolución utilizar para el PauliEvolutionGate. Por defecto, Trotterización de primer orden. Obsérvese que los operadores de tipo Operator se evolucionan utilizando el HamiltonianGateya que no hay términos hamiltonianos que expandir en la trotterización.
  • insert_barriers (bool) – Si se deben insertar barreras entre cada evolución.
  • name (str) – El nombre del circuito.
  • parameter_prefix (str | Sequence[str]) – Establece los nombres de los parámetros del circuito. Si se trata de una cadena, se utilizará el mismo prefijo para cada parámetro. También puede ser una lista para especificar un prefijo por operador.
  • remove_identities (bool) – Si True, ignora los operadores de identidad (ten en cuenta que no comprobamos las entradas Operator ). Esto también eliminará los parámetros asociados a las identidades.
  • flatten (bool | None) – Si True, se devuelve un circuito plano en lugar de anidarlo dentro de varias capas de objetos de puerta. Establecer este valor en False reduce considerablemente el rendimiento, sobre todo en lo que respecta a la asignación de parámetros, pero puede resultar conveniente para obtener una visualización más clara.

Tipo de retorno

QuantumCircuit

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.