TrotterQRTE#

class TrotterQRTE(product_formula=None, estimator=None, num_timesteps=1, *, insert_barriers=False)[source]#

Bases: RealTimeEvolver

Quantum Real Time Evolution using Trotterization.

The type of Trotterization is defined by the ProductFormula provided to the algorithm.

Examples

from qiskit.quantum_info import Pauli, SparsePauliOp
from qiskit import QuantumCircuit
from qiskit_algorithms import TrotterQRTE, TimeEvolutionProblem
from qiskit.primitives import Estimator

operator = SparsePauliOp([Pauli("X"), Pauli("Z")])
initial_state = QuantumCircuit(1)
time = 1
evolution_problem = TimeEvolutionProblem(operator, time, initial_state)
# LieTrotter with 1 rep
estimator = Estimator()
trotter_qrte = TrotterQRTE(estimator=estimator)
evolved_state = trotter_qrte.evolve(evolution_problem).evolved_state
Parameters:
  • product_formula (ProductFormula | None) – A Lie-Trotter-Suzuki product formula. If None provided (default), the LieTrotter first order product formula with a single repetition is used. reps should be 1 to obtain a number of time-steps equal to num_timesteps and an evaluation of TimeEvolutionProblem.aux_operators at every time-step. If reps is larger than 1, the true number of time-steps will be num_timesteps * reps.

  • estimator (BaseEstimator | None) – An estimator primitive used for calculating expectation values of TimeEvolutionProblem.aux_operators.

  • num_timesteps (int) – The number of time-steps the full evolution time is divided into (repetitions of product_formula).

  • insert_barriers (bool) – If True, insert a barrier after the initial state and after each Trotter step.

Attributes

estimator#

Returns an estimator.

num_timesteps#

Returns the number of timesteps.

product_formula#

Returns a product formula.

Methods

evolve(evolution_problem)[source]#

Evolves a quantum state for a given time using the Trotterization method based on a product formula provided. The result is provided in the form of a quantum circuit. If auxiliary operators are included in the evolution_problem, they are evaluated on the init_state and on the evolved state at every step (num_timesteps times) using an estimator primitive provided.

Parameters:

evolution_problem (TimeEvolutionProblem) – Instance defining evolution problem. For the included Hamiltonian, Pauli or SparsePauliOp are supported by TrotterQRTE.

Returns:

Evolution result that includes an evolved state as a quantum circuit and, optionally, auxiliary operators evaluated for a resulting state on an estimator primitive.

Raises:
  • ValueError – If t_param is not set to None in the TimeEvolutionProblem (feature not currently supported).

  • ValueError – If aux_operators provided in the time evolution problem but no estimator provided to the algorithm.

  • ValueError – If the initial_state is not provided in the TimeEvolutionProblem.

  • ValueError – If an unsupported Hamiltonian type is provided.

Return type:

TimeEvolutionResult

classmethod supports_aux_operators()[source]#

Whether computing the expectation value of auxiliary operators is supported.

Returns:

True if aux_operators expectations in the TimeEvolutionProblem can be evaluated, False otherwise.

Return type:

bool