Skip to main content
IBM Quantum Platform

문제 생성기

qiskit_addon_utils.problem_generators

문제 생성을 위한 유틸리티 방법.

generate_xyz_hamiltonian

generate_xyz_hamiltonian(coupling, *, coupling_constants=(1.0, 1.0, 1.0), ext_magnetic_field=(0.0, 0.0, 0.0), pauli_order_strategy=PauliOrderStrategy.ColorThenInteraction, coloring=None)

GitHub

양자 XYZ 유형 모델을 나타내는 연결 인식 큐비트 연산자를 생성합니다.

이 함수는 다음과 같은 해밀턴을 구현합니다:

H^=(j,k)E(Jxσjxσkx+Jyσjyσky+Jzσjzσkz)+jV(hxσjx+hyσjy+hzσjz)\hat{H} = \sum_{(j,k)\in E} (J_{x} \sigma_j^{x} \sigma_{k}^{x} + J_{y} \sigma_j^{y} \sigma_{k}^{y} + J_{z} \sigma_j^{z} \sigma_{k}^{z}) + \sum_{j\in V} (h_{x} \sigma_j^{x} + h_{y} \sigma_j^{y} + h_{z} \sigma_j^{z})

여기서 G(V,E)는 제공된 coupling 지도의 그래프입니다.

참고

이 방정식의 합계에 12-\frac{1}{2} 계수가 포함되는 경우가 많습니다. 이 요소는 내부적으로 적용되지 않으므로 coupling_constantsext_magnetic_field 입력에 고려해야 합니다.

>>> from qiskit.transpiler import CouplingMap
>>> from qiskit_addon_utils.problem_generators import generate_xyz_hamiltonian

>>> coupling_map = CouplingMap.from_line(10)
>>> hamiltonian = generate_xyz_hamiltonian(
...     coupling_map,
...     coupling_constants=(0.4, 0.4, 0.0),
...     ext_magnetic_field=(0.0, 0.0, 0.6),
... )
>>> print(hamiltonian)
SparsePauliOp(['IIIIIIIXXI', 'IIIIIIIYYI', 'IIIIIXXIII', 'IIIIIYYIII',
               'IIIXXIIIII', 'IIIYYIIIII', 'IXXIIIIIII', 'IYYIIIIIII',
               'IIIIIIIIXX', 'IIIIIIIIYY', 'IIIIIIXXII', 'IIIIIIYYII',
               'IIIIXXIIII', 'IIIIYYIIII', 'IIXXIIIIII', 'IIYYIIIIII',
               'XXIIIIIIII', 'YYIIIIIIII', 'IIIIIIIIIZ', 'IIIIIIIIZI',
               'IIIIIIIZII', 'IIIIIIZIII', 'IIIIIZIIII', 'IIIIZIIIII',
               'IIIZIIIIII', 'IIZIIIIIII', 'IZIIIIIIII', 'ZIIIIIIIII'],
            coeffs=[0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j,
                    0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j, 0.4+0.j,
                    0.4+0.j, 0.4+0.j, 0.6+0.j, 0.6+0.j, 0.6+0.j, 0.6+0.j, 0.6+0.j, 0.6+0.j,
                    0.6+0.j, 0.6+0.j, 0.6+0.j, 0.6+0.j])

매개변수

  • coupling (CouplingMap |PyGraph |PyDiGraph) – 해밀턴을 매핑할 큐비트 하위 그래프입니다. 그래프 에지의 방향성은 무시되며, 연산자를 생성하는 동안 평행 에지는 단일 에지로 처리됩니다.
  • coupling_constants (Sequence[float]) – 각 데카르트 축의 실수값 결합 상수 JiJ_i 입니다.
  • ext_magnetic_field (Sequence[float]) – 계수 hih_i 는 각 데카르트 축을 따라 자기장을 나타냅니다.
  • pauli_order_strategy (PauliOrderStrategy) – 폴리 용어가 생성될 반복 전략을 나타냅니다. 참조 PauliOrderStrategy 를 참조하세요.
  • coloring (dict[tuple[int, int], int] | None) – 해밀턴 용어를 정렬하는 데 사용되는 그래프 색상을 인코딩하는 선택적 사전입니다. 이 사전은 에지 레이블(정수 쌍 형태)을 색상 값(단순 정수)에 매핑합니다. 해밀턴 상호작용 조건은 색상 값을 증가시킴으로써 추가됩니다. 각 색상 내에서 가장자리가 정렬되어 물리적으로 아무것도 변경되지 않지만 결과를 더 쉽게 읽을 수 있습니다.

리턴

양자 XYZ형 모델을 설명하는 큐비트 연산자입니다. 연산자의 i-번째 큐비트는 커플링 맵의 i 인덱스에 있는 노드에 해당합니다.

레이즈

  • ValueError - 연결 상수는 부동 소수점 값의 length-3 시퀀스로 지정해야 합니다.
  • ValueError - 외부 자기장은 부동 소수점 값의 length-3 시퀀스로 지정해야 합니다.

리턴 유형

SparsePauliOp

generate_time_evolution_circuit

generate_time_evolution_circuit(operator, *, synthesis=None, time=1.0)

GitHub

작업자의 시간 변화를 모델링합니다.

>>> 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)
이전 코드의 출력입니다.

매개변수

  • operator (SparsePauliOp) – 시간 진화를 모델링할 연산자입니다.
  • synthesis (EvolutionSynthesis | None) – 합성 전략. None 이면 기본 합성은 한 번 반복되는 거짓말 트로터 제품 공식입니다.
  • time (float) – 진화 시간입니다.

리턴

A QuantumCircuit 시간 진화 연산자를 구현합니다.

리턴 유형

QuantumCircuit

PauliOrderStrategy

class PauliOrderStrategy(value)

GitHub

베이스: Enum

다양한 폴리 순서의 열거입니다.

색상이 지정된 가장자리 집합에 해밀턴을 구성할 때 생성된 폴리 항을 다양한 방식으로 정렬할 수 있습니다. 해밀턴의 이러한 용어 순서는 시간이 진화하는 동안 유지되므로 결과물인 양자 회로에 직접적인 영향을 미칩니다.

ColorThenInteraction

기본값: 1

이 전략은 먼저 모든 가장자리(색상 값으로 정렬)를 반복한 다음 상호 작용( X, Y, Z 로 정렬)을 반복합니다.

InteractionThenColor

기본값: 2

이 전략은 ColorThenInteraction 과 반대되는 전략입니다. 먼저 상호 작용( X, Y, Z 로 정렬)을 반복한 다음 모든 가장자리(색상 값으로 정렬)를 반복합니다.

InteractionThenColorZigZag

기본값: 3

이 전략은 InteractionThenColor 전략과 유사합니다. 그러나 한 인터랙션에서 다음 인터랙션으로 이동할 때 색상 값을 증가 및 감소시켜 가장자리를 반복하는 방식을 번갈아 사용합니다. 예를 들어 XY 상호 작용만 포함되고 세 가지 색상 값({1, 2, 3})이 사용되는 경우 다음과 같은 순서가 됩니다: ["X on 1", "X on 2", "X on 3", "Y on 3", "Y on 2", "Y on 1"].

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