Skip to main content
IBM Quantum Platform

준확률 분해(QPD)

qiskit_addon_cutting.qpd

주요 준확률 분해 기능.

QPDBasis작업을 분해할 기준입니다.
BaseQPDGate준확률 분해를 사용하여 분해할 게이트의 베이스 클래스입니다.
SingleQubitQPDGate준확률 분해를 사용하여 분해할 단일 큐비트 게이트입니다.
TwoQubitQPDGate준확률 분해를 사용하여 분해할 두 큐비트 게이트입니다.

WeightType

class WeightType(value)

GitHub

베이스: Enum

QPD 샘플과 관련된 가중치 유형입니다.

EXACT

기본값: 1

정확한 무게에 비례하여 주어진 가중치

샘플링됨

기본값: 2

일부 샘플링 절차를 통해 결정된 무게입니다

generate_qpd_weights

generate_qpd_weights(qpd_bases, num_samples=1000)

GitHub

공동 준확률 분포에서 가중치를 생성합니다.

절대값이 임계값( 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)

GitHub

회로의 모든 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, /)

GitHub

객체를 생성합니다 QPDBasis 객체를 생성합니다.

메서드를 구현하는 모든 2큐비트 게이트는 to_matrix() 메서드를 구현하는 모든 2쿼비트 게이트가 지원됩니다. 여기에는 언바인딩된 매개변수가 없는 대부분의 게이트가 포함되어야 하지만, 몇 가지 특별한 경우가 있습니다(예: qiskit 이슈 #10396 참조).

작업도 지원됩니다 Move 작업도 지원되어 와이어 컷을 지정하는 데 사용할 수 있습니다.

리턴 유형

QPDBasis

리턴

새로 인스턴스화된 QPDBasis 객체

레이즈

  • ValueError - 인스트럭션이 지원되지 않습니다.
  • ValueError - 바인딩되지 않은 매개변수가 있는 인스트럭션을 분해할 수 없습니다.
  • ValueError - to_matrix 2큐비트 게이트 변환에 실패했습니다.

매개변수

gate (Instruction)

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