Skip to main content
IBM Quantum Platform

슬라이싱

qiskit_addon_utils.slicing

회로 슬라이싱을 위한 유틸리티 메서드.

자세한 내용은 이 서브모듈에 대해 설명하는 방법 가이드를 참조하세요.

combine_slices

combine_slices(slices, include_barriers=False)

GitHub

회로의 N-큐비트 조각을 단일 회로로 결합합니다.

매개변수

  • slices (Sequence[QuantumCircuit]) – N-큐비트 회로 조각.
  • include_barriers (bool) – True 인 경우 각 슬라이스 사이에 장벽을 배치합니다.

리턴

A QuantumCircuit 를 사용하여 슬라이스를 순차적으로 추가합니다.

레이즈

ValueError - 두 개의 입력 슬라이스는 서로 다른 수의 큐비트에 정의되었습니다.

리턴 유형

QuantumCircuit | 없음

slice_by_barriers

slice_by_barriers(circuit)

GitHub

QuantumCircuit 을 전체 회로 장벽을 중심으로 여러 조각으로 분할합니다.

모든 회로 큐비트에 작용하지 않는 배리어는 정상 연산으로 처리되어 슬라이스에 포함됩니다. 모든 큐비트에 작용하는 배리어는 슬라이스 위치로 해석되며 출력 슬라이스에 포함되지 않습니다.

매개변수

circuit (QuantumCircuit) – 분할할 회로입니다.

리턴

객체의 시퀀스 QuantumCircuit 객체의 시퀀스입니다.

리턴 유형

목록 [ QuantumCircuit ]

slice_by_coloring

slice_by_coloring(circuit, coloring)

GitHub

제공된 가장자리 색상을 사용하여 QuantumCircuit 을 조각으로 나눕니다.

CollectOpColor동일한 색상의 큐비트 연결부(가장자리)에 작용하는 2-큐비트 게이트는 를 사용하여 탐욕적 방식으로 슬라이스로 묶일 것입니다. 이는 색상 값(각 에지에 매핑된 정수 값)이 증가하는 순서대로 수행됩니다.

경고

단, 값이 낮은 색상 조각이 회로에서 가장 왼쪽에 위치한다는 의미는 아닙니다. 아래는 이를 강조하기 위한 예시입니다.

>>> from qiskit import QuantumCircuit

>>> circuit = QuantumCircuit(5)
>>> _ = circuit.cx(0, 1)
>>> _ = circuit.cx(3, 4)
>>> _ = circuit.cx(2, 3)

>>> circuit.draw()
q_0: ──■───────
     ┌─┴─┐
q_1: ┤ X ├─────
     └───┘
q_2: ───────■──
          ┌─┴─┐
q_3: ──■──┤ X ├
     ┌─┴─┐└───┘
q_4: ┤ X ├─────
     └───┘

>>> coloring = {(0, 1): 0, (2, 3): 0, (3, 4): 1}

>>> from qiskit_addon_utils.slicing import combine_slices, slice_by_coloring

>>> slices = slice_by_coloring(circuit, coloring)

# for illustration purposes, we are recombining the slices with barriers
>>> recombined = combine_slices(slices, include_barriers=True)
>>> recombined.draw()

q_0: ──────░───■──
           ░ ┌─┴─┐
q_1: ──────░─┤ X ├
           ░ └───┘
q_2: ──────░───■──
           ░ ┌─┴─┐
q_3: ──■───░─┤ X ├
     ┌─┴─┐ ░ └───┘
q_4: ┤ X ├─░──────
     └───┘ ░

CollectOpSize단일 큐비트 게이트는.을 사용하여 단일 슬라이스로 통합될 것입니다.

매개변수

  • circuit (QuantumCircuit) – 분할할 회로입니다.
  • coloring (dict[tuple[int, int], int]) – 에지(정수 쌍)를 색상 값에 매핑하는 사전입니다.

리턴

객체의 시퀀스 QuantumCircuit 객체의 시퀀스입니다.

레이즈

  • ValueError - 입력한 가장자리 색상이 잘못되었습니다.
  • ValueError - 회로 명령에 색상을 할당할 수 없습니다.

리턴 유형

목록 [ QuantumCircuit ]

slice_by_depth

slice_by_depth(circuit, max_slice_depth)

GitHub

QuantumCircuit 을 깊이에 따라 슬라이스로 분할합니다.

이 함수는 입력 회로를 DAGCircuit 에서 출력되는 depth-1 레이어 시퀀스를 일괄 처리합니다 layers()max_slice_depth 을 초과하지 않는 깊이 조각으로 변환합니다. 이는 최대 슬라이스 깊이에 도달할 때까지 레이어를 슬라이스로 구성한 다음 다음 레이어에서 새 슬라이스를 시작하면 됩니다. 최종 슬라이스는 max_slice_depth 레이어보다 적은 수로 구성될 수 있습니다.

매개변수

  • circuit (QuantumCircuit) – 분할할 회로입니다.
  • max_slice_depth (int) – 주어진 슬라이스의 최대 깊이입니다.

리턴

객체의 시퀀스 QuantumCircuit 객체의 시퀀스입니다.

리턴 유형

목록 [ QuantumCircuit ]

slice_by_gate_types

slice_by_gate_types(circuit)

GitHub

QuantumCircuit 을 depth-1 같은 유형의 작업 조각으로 분할합니다.

경고

참고: 공통 큐비트를 공유하지 않는 인접한 슬라이스는 임의로 정렬할 수 있습니다.

매개변수

circuit (QuantumCircuit) – 분할할 회로입니다.

리턴

객체의 시퀀스 QuantumCircuit 객체의 시퀀스입니다.

리턴 유형

목록 [ QuantumCircuit ]

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