Skip to main content
IBM Quantum Platform
이 페이지는 Qiskit SDK 의 이전 버전에서 가져온 것으로, 최신 버전에는 존재하지 않습니다. 최신 버전으로 업데이트하시기를 권장합니다. 자세한 정보는 릴리스 정보를 참조하십시오.

qiskit.algorithms.time_evolvers.variational


Variational Quantum Time Evolutions

qiskit.algorithms.time_evolvers.variational

Algorithms for performing Variational Quantum Time Evolution of quantum states, which can be tailored to near-term devices. VarQTE base class exposes an interface, compliant with the Quantum Time Evolution Framework in Qiskit Terra, that is implemented by VarQRTE and VarQITE classes for real and imaginary time evolution respectively. The variational approach is taken according to a variational principle chosen by a user.

Example

import numpy as np

from qiskit.algorithms import TimeEvolutionProblem, VarQITE
from qiskit.algorithms.time_evolvers.variational import ImaginaryMcLachlanPrinciple
from qiskit.circuit.library import EfficientSU2
from qiskit.quantum_info import SparsePauliOp

observable = SparsePauliOp.from_list(
    [
        ("II", 0.2252),
        ("ZZ", 0.5716),
        ("IZ", 0.3435),
        ("ZI", -0.4347),
        ("YY", 0.091),
        ("XX", 0.091),
    ]
)

ansatz = EfficientSU2(observable.num_qubits, reps=1)
init_param_values = np.zeros(len(ansatz.parameters))
for i in range(len(ansatz.parameters)):
    init_param_values[i] = np.pi / 2
var_principle = ImaginaryMcLachlanPrinciple()
time = 1
evolution_problem = TimeEvolutionProblem(observable, time)
var_qite = VarQITE(ansatz, var_principle, init_param_values)
evolution_result = var_qite.evolve(evolution_problem)

Variational Principles

With variational principles we can project time evolution of a quantum state onto the parameters of a model, in our case a variational quantum circuit.

They can be divided into two categories: Variational Quantum _Real_ Time Evolution, which evolves the variational ansatz under the standard Schroediger equation and Variational Quantum _Imaginary_ Time Evolution, which evolves under the normalized Wick-rotated Schroedinger equation.

VariationalPrinciple(qgt, gradient)A Variational Principle class.
RealVariationalPrinciple(qgt, gradient)Class for a Real Variational Principle.
ImaginaryVariationalPrinciple(qgt, gradient)Abstract class for an Imaginary Variational Principle.
RealMcLachlanPrinciple([qgt, gradient])Class for a Real McLachlan's Variational Principle.
ImaginaryMcLachlanPrinciple([qgt, gradient])Class for an Imaginary McLachlan's Variational Principle.

ODE solvers

ODE solvers that implement the SciPy ODE Solver interface. The Forward Euler Solver is a preferred choice in the presence of noise. One might also use solvers provided by SciPy directly, e.g. RK45.

ForwardEulerSolver(function, t0, y0, t_bound)Forward Euler ODE solver.
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.