Skip to main content
IBM Quantum Platform

SuzukiTrotter

class qiskit.synthesis.SuzukiTrotter(order=2, reps=1, insert_barriers=False, cx_structure='chain', atomic_evolution=None, wrap=False, preserve_order=True, *, atomic_evolution_sparse_observable=False)

GitHub

베이스: ProductFormula

(상위) 스즈키 트로터 제품 공식.

스즈키-트로터 공식은 거짓말-트로터 근사치의 오차를 개선합니다. 예를 들어, 두 번째 차수 분해는 다음과 같습니다

eA+B≈eB/2eAeB/2.e^{A + B} \approx e^{B/2} e^{A} e^{B/2}.

고차 분해는 재귀를 기반으로 합니다(참고. [1에서] 자세한 내용을 확인하세요.

이 구현에서 연산자는 폴리 연산자의 합계 조건으로 제공됩니다. 예를 들어, 2 차 스즈키-트로터 분해에서는 다음과 같이 대략적으로 계산합니다

e−it(XI+ZZ)=e−it/2XIe−itZZe−it/2XI+O(t3).e^{-it(XI + ZZ)} = e^{-it/2 XI}e^{-it ZZ}e^{-it/2 XI} + \mathcal{O}(t^3).

참조

[1] : D. 베리, G. 아호카스, R. 클레브, B. 샌더스, "희소 해밀턴 시뮬레이션을 위한 효율적인 양자 알고리즘"(2006). arXiv:quant-ph/0508139 [2] : N. 하타노와 M. 스즈키, "고차 지수의 지수 곱 공식 찾기"(2005). arXiv:math-ph/0506007

매개변수

  • order (int) – 곱의 공식에서 항의 순서.
  • reps (int) – 시간 단계의 수.
  • insert_barriers (bool) – 원자 진화 과정 사이에 장벽을 삽입할지 여부.
  • cx_structure (str) – 파울리 진화를 위해 CX 게이트를 어떻게 배치할지에 대해서는, 인접 큐비트 간 연결을 사용하는 경우인 또는 모든 큐비트가 하나의 큐비트에 연결되는 경우인 "chain"``"fountain"중 하나를 선택할 수 있다. 이는 다음의 경우에만 적용됩니다 atomic_evolution is None.
  • atomic_evolution (Callable[[QuantumCircuit, qiskit.quantum_info.Pauli |SparsePauliOp, float], None] | None) – 회로에 단일 항 또는 가환 Pauli 항들만의 SparsePauliOp 진화를 적용하는 함수. 이 함수는 세 개의 인자를 받습니다: 진화 과정을 추가할 회로, 진화시킬 파울리 연산자, 그리고 진화 시간입니다. 기본적으로, 하나의 파울리 진화는 일련의 CX 게이트와 하나의 RZ 게이트로 분해됩니다.
  • wrap (bool) – 원자적 진화를 사용자 정의 게이트 객체로 감쌀지 여부. 이는 다음의 경우에만 적용됩니다 atomic_evolution is None.
  • preserve_order (bool) – 만약 False, 이라면 연산자의 항들을 재배열하여 더 얕은 진화 회로를 얻을 수 있다. 단일 항으로 연산자를 합성할 때는 해당되지 않습니다.
  • atomic_evolution_sparse_observable (bool) – 아직 SparseObservables를 입력으로 지원하지 않는 사용자 정의 유형이 전달된 atomic_evolution 경우, 이 인수를 False 로 설정하여 s에 대한 변환을 자동으로 적용하십시오 SparsePauliOp. 이 주장은 Qiskit 2.2 버전까지는 타당하지만, 해당 버전부터는 모든 원자 진화 연산이 SparseObservables를 입력으로 지원해야 합니다.

레이즈

ValueError – order가 짝수가 아닐 경우


속성

settings

객체를 재구성하는 데 사용할 수 있는 사전의 설정을 반환합니다.

리턴

이 제품 공식의 설정이 포함된 사전입니다.

레이즈

NotImplementedError – 직렬화할 수 없는 사용자 정의 원자적 진화가 설정된 경우.


메소드

expand

expand(evolution)

GitHub

해밀턴을 스즈키-트로터 수열의 희소 게이트로 확장합니다.

예를 들어, 진화 시간 t 및 2차 공식에 대한 1회의 반복에 대한 해밀턴( H = IX + ZZ )은 (pauli, indices, rz_rotation_angle) 을 포함하는 3-튜플 목록으로 분해됩니다:

("X", [0], t), ("ZZ", [0, 1], 2t), ("X", [0], t)

회전각에는 2라는 계수가 포함되어 있다는 점에 유의하십시오. 따라서 시간에 따른 파울리 벡터( PP )의 변화 tt 는 eitPe^{itP} 이며, 이는 로 표현됩니다 (P, indices, 2 * t).

N 반복의 경우, 이 시퀀스를 N 번 반복하고 계수를 N 로 나눕니다.

매개변수

evolution (PauliEvolutionGate) – 확장을 위한 진화 게이트.

리턴

폴리 네트워크가 트로터 확장을 구현하고 있습니다.

리턴 유형

list [ tuple [ str, list [ int ], ParameterValueType ]]

synthesize

synthesize(evolution)

GitHub

합성 PauliEvolutionGate.

매개변수

evolution (PauliEvolutionGate) – 합성을 위한 진화 게이트입니다.

리턴

진화를 구현하는 회로입니다.

리턴 유형

QuantumCircuit

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