슬라이싱
qiskit_addon_utils.slicing
회로 슬라이싱을 위한 유틸리티 메서드.
자세한 내용은 이 서브모듈에 대해 설명하는 방법 가이드를 참조하세요.
combine_slices
combine_slices(slices, include_barriers=False)
회로의 N-큐비트 조각을 단일 회로로 결합합니다.
매개변수
- slices (Sequence[QuantumCircuit]) – N-큐비트 회로 조각.
- include_barriers (bool) –
True인 경우 각 슬라이스 사이에 장벽을 배치합니다.
리턴
A QuantumCircuit 를 사용하여 슬라이스를 순차적으로 추가합니다.
레이즈
ValueError - 두 개의 입력 슬라이스는 서로 다른 수의 큐비트에 정의되었습니다.
리턴 유형
QuantumCircuit | 없음
slice_by_barriers
slice_by_barriers(circuit)
QuantumCircuit 을 전체 회로 장벽을 중심으로 여러 조각으로 분할합니다.
모든 회로 큐비트에 작용하지 않는 배리어는 정상 연산으로 처리되어 슬라이스에 포함됩니다. 모든 큐비트에 작용하는 배리어는 슬라이스 위치로 해석되며 출력 슬라이스에 포함되지 않습니다.
매개변수
circuit (QuantumCircuit) – 분할할 회로입니다.
리턴
객체의 시퀀스 QuantumCircuit 객체의 시퀀스입니다.
리턴 유형
목록 [ QuantumCircuit ]
slice_by_coloring
slice_by_coloring(circuit, coloring)
제공된 가장자리 색상을 사용하여 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)
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)
QuantumCircuit 을 depth-1 같은 유형의 작업 조각으로 분할합니다.
참고: 공통 큐비트를 공유하지 않는 인접한 슬라이스는 임의로 정렬할 수 있습니다.
매개변수
circuit (QuantumCircuit) – 분할할 회로입니다.
리턴
객체의 시퀀스 QuantumCircuit 객체의 시퀀스입니다.
리턴 유형
목록 [ QuantumCircuit ]