Skip to main content
IBM Quantum Platform

qiskit.circuit.library.hamiltonian_variational_ansatz

qiskit.circuit.library.hamiltonian_variational_ansatz(hamiltonian, reps=1, insert_barriers=False, name='HVA', parameter_prefix='t')

GitHub

해밀턴의 변형 안식을 구축합니다.

용어 HkH_k 가 통근 폴리스로만 구성되고 서로 통근하지 않는 용어 [Hk,Hk]0[H_k, H_{k'}] \neq 0 인 해밀턴식 H=k=1KHkH = \sum_{k=1}^K H_k 의 경우 해밀턴식 변형 안사츠(HVA)는 다음과 같습니다

r=1R(k=K1eiθk,rHk)\prod_{r=1}^{R} \left( \prod_{k=K}^1 e^{-i\theta_{k, r} H_k} \right)

여기서 지수 exp(iθHk)exp(-i\theta H_k) 는 정확히 [1, 2로] 구현됩니다. 이는 연산자 구조에 대한 가정이 없는 evolved_operator_ansatz()와는 다른데, 연산자 구조에 대한 가정이 이루어지지 않습니다.

해밀턴은 다음과 같이 전달할 수 있습니다 SparsePauliOp로 전달할 수 있으며, 이 경우 해밀턴을 통근항 {Hk}k\{H_k\}_k 으로 분할합니다. 이 방법은 최적이 아닐 수 있으며, 최소 통근 항의 집합을 알고 있는 경우 이 함수에 수열로 전달할 수 있습니다.

예:

한 명의 운영자가 자동으로 출퇴근 시간으로 분할됩니다:

from qiskit.quantum_info import SparsePauliOp
from qiskit.circuit.library import hamiltonian_variational_ansatz

# this Hamiltonian will be split into the two terms [ZZI, IZZ] and [IXI]
hamiltonian = SparsePauliOp(["ZZI", "IZZ", "IXI"])
ansatz = hamiltonian_variational_ansatz(hamiltonian, reps=2)
ansatz.draw("mpl")
이전 코드에서 출력한 회로도입니다.

또는 약관을 직접 제공할 수도 있습니다:

from qiskit.quantum_info import SparsePauliOp
from qiskit.circuit.library import hamiltonian_variational_ansatz

zz = SparsePauliOp(["ZZI", "IZZ"])
x = SparsePauliOp(["IXI"])
ansatz = hamiltonian_variational_ansatz([zz, x], reps=2)
ansatz.draw("mpl")
이전 코드에서 출력한 회로도입니다.

매개변수

  • hamiltonian (SparsePauliOp |Sequence[SparsePauliOp]) – 진화시킬 해밀토니안. 단일 연산자로 주어지면, 교환 가능한 항들로 분해됩니다. 순열이 SparsePauliOp인 경우, 각 원소는 서로 교환 가능한 항들로 구성되어 있다고 가정하지만, 원소들끼리는 서로 교환 가능하지 않다.
  • reps (int) – 진화한 연산자를 반복할 횟수입니다.
  • insert_barriers (bool) – 각 진화 사이에 장벽을 삽입할지 여부를 설정합니다.
  • name (str) – 서킷의 이름입니다.
  • parameter_prefix (str) – 회로 파라미터의 이름을 지정합니다. 문자열인 경우, 각 매개변수에 동일한 접두사가 사용됩니다. 연산자별로 접두사를 지정하는 목록일 수도 있습니다.

리턴 유형

QuantumCircuit

참조 자료:

[1] D. Wecker et al. 실용적인 양자 변형 알고리즘을 향한 진전 (2015) Phys Rev A 92, 042303

[2] R. Wiersema et al. 해밀턴 변형 안사츠 내에서 얽힘과 최적화 탐색하기 (2020) arXiv:2008.02941

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.