준확률 분해(QPD)
qiskit_addon_cutting.qpd
주요 준확률 분해 기능.
QPDBasis | 작업을 분해할 기준입니다. |
BaseQPDGate | 준확률 분해를 사용하여 분해할 게이트의 베이스 클래스입니다. |
SingleQubitQPDGate | 준확률 분해를 사용하여 분해할 단일 큐비트 게이트입니다. |
TwoQubitQPDGate | 준확률 분해를 사용하여 분해할 두 큐비트 게이트입니다. |
WeightType
class WeightType(value)
베이스: Enum
QPD 샘플과 관련된 가중치 유형입니다.
EXACT
기본값: 1
정확한 무게에 비례하여 주어진 가중치
샘플링됨
기본값: 2
일부 샘플링 절차를 통해 결정된 무게입니다
generate_qpd_weights
generate_qpd_weights(qpd_bases, num_samples=1000)
공동 준확률 분포에서 가중치를 생성합니다.
절대값이 임계값( 1 / num_samples ) 이상인 각 가중치는 정확히 평가됩니다. 그러면 나머지 가중치(분포의 꼬리에 있는 가중치)에서 샘플링되어 최대 num_samples 고유 가중치가 생성됩니다.
매개변수
- qpd_bases (
Sequence[QPDBasis]) – 가중치를 생성하는QPDBasis가중치를 생성할 객체 - num_samples (
float) – 생성할 가중치 수를 제어합니다
리턴 유형
dict[tuple[int, ...], tuple[float, WeightType]]
리턴
주어진 분해에서 무게로 매핑합니다. 키는 인덱스의 튜플(입력당 하나의 인덱스)입니다 QPDBasis. 인덱스는 기준의 특정 분해 매핑에 해당합니다.
값은 튜플입니다. 첫 번째 요소는 기여의 가중치에 해당하는 숫자입니다. 두 번째 요소는 WeightTypeEXACT 또는 SAMPLED 입니다.
decompose_qpd_instructions
decompose_qpd_instructions(circuit, instruction_ids, map_ids=None, *, inplace=False)
회로의 모든 QPD 명령어를 로컬 키스킷 연산 및 측정으로 대체합니다.
매개변수
- circuit (QuantumCircuit) – QPD 명령이 포함된 회로
- instruction_ids (Sequence[Sequence[int]]) – 2D 시퀀스로, 각 내부 시퀀스는 회로에서 하나의 분해를 구성하는 명령어의 인덱스에 해당합니다. 공통 시퀀스 내의 요소는 공통 분해에 속하므로 함께 샘플링해야 합니다.
- map_ids (Sequence[int] | None) – 회로의 분해에 적용할 특정 선형 매핑에 대한 인덱스입니다. 맵 ID가 제공되지 않으면 회로는 분해의 공동 확률 분포에 따라 무작위로 분해됩니다.
- inplace (bool) –
True이면circuit이 제자리에서 수정됩니다.
리턴 유형
QuantumCircuit
리턴
모든 인스턴스가 로컬 작업으로 분해된 BaseQPDGate 인스턴스가 로컬 연산으로 분해되었습니다.
이 회로에는 QPD 측정 결과를 포함하는 새로운 최종 클래식 레지스터가 포함됩니다( retval.cregs[-1] 에서 액세스 가능).
레이즈
- ValueError -
instruction_ids의 인덱스는 인스턴스가 아닌 게이트에 해당합니다BaseQPDGate인스턴스에 해당합니다. - ValueError - instruction_ids 내의 목록은 길이가 1 또는 2가 아닙니다.
- ValueError -
instruction_ids의 총 인덱스 수가 회로의 인스턴스 수와 같지 않습니다BaseQPDGate인스턴스 수와 같지 않습니다. - ValueError - 동일한 분해 내의 게이트는 서로 다른 QPD 베이스를 보유합니다.
- ValueError -
map_ids의 길이가 회로의 분해 횟수와 같지 않습니다.
qpdbasis_from_instruction
qpdbasis_from_instruction(gate, /)
객체를 생성합니다 QPDBasis 객체를 생성합니다.
메서드를 구현하는 모든 2큐비트 게이트는 to_matrix() 메서드를 구현하는 모든 2쿼비트 게이트가 지원됩니다. 여기에는 언바인딩된 매개변수가 없는 대부분의 게이트가 포함되어야 하지만, 몇 가지 특별한 경우가 있습니다(예: qiskit 이슈 #10396 참조).
작업도 지원됩니다 Move 작업도 지원되어 와이어 컷을 지정하는 데 사용할 수 있습니다.
리턴 유형
리턴
새로 인스턴스화된 QPDBasis 객체
레이즈
- ValueError - 인스트럭션이 지원되지 않습니다.
- ValueError - 바인딩되지 않은 매개변수가 있는 인스트럭션을 분해할 수 없습니다.
- ValueError -
to_matrix2큐비트 게이트 변환에 실패했습니다.
매개변수
gate (Instruction)