generate_time_evolution_circuit

generate_time_evolution_circuit(operator, *, synthesis=None, time=1.0)[source]

Model the time evolution of an operator.

>>> from qiskit.quantum_info import SparsePauliOp
>>> from qiskit.synthesis import SuzukiTrotter
>>> from qiskit.transpiler import CouplingMap
>>> from qiskit_addon_utils.problem_generators import (
...     PauliOrderStrategy,
...     generate_xyz_hamiltonian,
...     generate_time_evolution_circuit,
... )
>>> coupling_map = CouplingMap.from_line(6)
>>> hamiltonian = generate_xyz_hamiltonian(
...     coupling_map,
...     coupling_constants=(0.4, 0.4, 0.0),
...     ext_magnetic_field=(0.0, 0.0, 0.6),
...     pauli_order_strategy=PauliOrderStrategy.InteractionThenColorZigZag,
... )
>>> circ = generate_time_evolution_circuit(
...     hamiltonian, synthesis=SuzukiTrotter(order=2, reps=2), time=2.0
... )
>>> _ = circ.draw("mpl", fold=-1)

(png, hires.png, pdf)

../_images/qiskit_addon_utils-problem_generators-generate_time_evolution_circuit-1.png
Parameters:
  • operator (SparsePauliOp) – The operator for which to model the time evolution.

  • synthesis (EvolutionSynthesis | None) – A synthesis strategy. If None, the default synthesis is the Lie-Trotter product formula with a single repetition.

  • time (float) – The evolution time.

Returns:

A QuantumCircuit implementing a time-evolved operator.

Return type:

QuantumCircuit