Skip to main content
IBM Quantum Platform

경계

qiskit_addon_slc.bounds

바운드 연산 함수.

이 모듈은 음영 처리된 광뿔을 구성하는 오차 범위를 계산하기 위한 다양한 함수를 제공합니다.

compute_forward_bounds

compute_forward_bounds(circuit, noise_model_paulis, /, observable, *, evolution_max_terms=1000000, eigval_max_qubits=14, atol=1e-08, atol_simplify=1e-08, atol_eigenvalue=1e-08, **kwargs)

GitHub

전진 진화된 불균등 시간 교환자 상한을 계산한다.

회로의 끝 부분부터 시작하여, 대상 회로 내 각 잡음이 있는 층의 모든 파울리 오차 항에 대해 전진 진화된 불균등 시간 교환자 상한을 계산한다.

즉, 모든 오차 항에 대해 [EF,AF]2\| \left[ E_F, A_F \right] \|_2 를 계산하고, EFE_F 를 구하되, 여기서 AFA_F 는 에서 측정될 observable 목표값이다 circuit.

오차항 EIE_I 은 에 의해 결정된다 noise_model_paulis. 이 사전은 잡음 모델 식별자(samplomatic.InjectNoise.ref)를 파울리 오차 항의 목록에 매핑합니다. 에 대한 반복 처리 과정에서 일치하는 주석이 InjectNoise 달린 BoxOp 가 발견될 때마다 해당 용어가 사용될 것입니다 circuit.

0.2.0 버전부터 사용 중단됨

qiskit_addon_slc.bounds.forward.compute_forward_bounds()’의 인수는 qiskit-addon-slc 0.2.0 부터 더 이상 사용되지 않습니다 atol . 출시일로부터 3개월이 지나기 전에는 삭제되지 않습니다. 대신 atol_simplify와 atol_eigenvalue를 사용하십시오.

매개변수

  • circuit (QuantumCircuit) – 대상 회로.
  • noise_model_paulis (dict[str, QubitSparsePauliList]) – 각 잡음 모델에 대해 고려해야 할 파울리 오차 항.
  • observable (Pauli |PauliList |SparseObservable |SparsePauliOp) – 회로 끝단에서 측정될 대상 관측량.
  • evolution_max_terms (int) – 진화 과정에서 추적해야 할 연산자 항의 최대 개수.
  • eigval_max_qubits (int) – 고유값을 여전히 계산하려고 시도하는 커뮤테이터의 최대 큐비트 수. 이 값을 초과할 경우, 더 간단하고 느슨한 삼각 부등식을 통해 상한을 근사적으로 구합니다.
  • atol (float) – 사용 중단됨. atol_eigenvalue 대신 atol_simplify 와 를 사용하세요!
  • atol_simplify (float) – 커뮤테이터에서 항을 제거하는 데 사용되는 절대 허용 오차. 이 허용 오차를 완화하면 커뮤테이터 항의 절단 정도가 커지게 되어, 고유값 계산의 계산 비용은 줄어들지만 정확도는 떨어지게 됩니다.
  • atol_eigenvalue (float) – 커뮤테이터의 고유값 수렴 여부를 판별하는 데 사용되는 절대 허용오차. 이 허용 오차를 완화하면, 반복적 데이비슨 고유값 해법기로 계산된 고유값의 정확도가 떨어지게 됩니다.
  • kwargs – 추가된 키워드 인수는 모두 로 전달됩니다 compute_bounds().

리턴

불균등 시간 교환자 상한.

인상

NotImplementedError – 에 폴리 항이 하나 이상 observable 포함될 때. 이러한 상황이 발생하면, 대상 파울리 각각에 대해 이 함수를 호출해야 합니다.

리턴 유형

dict [ str, PauliLindbladMap ]

tighten_with_speed_limit

tighten_with_speed_limit(bounds, circuit, noise_model_paulis, /, observable)

GitHub

정보 전파 속도에 대한 제한을 적용하여 주어진 범위를 좁혀라.

리브-로빈슨 상한의 개념에서 영감을 얻은 이 함수는 정보 전파 속도에 대한 제한을 활용하여, 이전에 계산된 전진 진화 불균등 시간 교환자 상한을 더욱 엄격하게 만듭니다(참조 compute_forward_bounds()).

매개변수

리턴

불균등 시간 커뮤테이터 상한에 대한 강화된 결과.

인상

  • NotImplementedError – 에 폴리 항이 하나 이상 observable 포함될 때. 이러한 상황이 발생하면, 대상 파울리 각각에 대해 이 함수를 호출해야 합니다.
  • ValueError – 2개 이상의 큐비트에 영향을 미치는 게이트를 만나게 될 때.

리턴 유형

dict [ str, PauliLindbladMap ]

compute_backward_bounds

compute_backward_bounds(circuit, noise_model_paulis, /, *, evolution_max_terms=1000000, **kwargs)

GitHub

역진화된 불균등 시간 교환자 상한을 계산한다.

회로의 시작 부분부터 시작하여, 대상 회로 내 각 잡음이 있는 레이어의 모든 파울리 오차 항에 대해 역진화 방식의 불균등 시간 교환자 상한을 계산한다.

즉, 모든 오차 항 EIE_I 에 대해 (샤텐 1-노름, 일명 핵 노름을 사용하여) [EI,ρI]1\| \left[ E_I, \rho_I \right] \|_1 를 계산한다. 여기서 ρI\rho_I 는 의 모든 활성 큐비트에 대해 모두 0인 상태, 즉 00\ket{0 \ldots 0} 로 가정한다 circuit.

오차항 EIE_I 은 에 의해 결정된다 noise_model_paulis. 이 사전은 잡음 모델 식별자(samplomatic.InjectNoise.ref)를 파울리 오차 항의 목록에 매핑합니다. 에 대한 반복 처리 과정에서 일치하는 주석이 InjectNoise 달린 BoxOp 가 발견될 때마다 해당 용어가 사용될 것입니다 circuit.

주의

범위를 계산하기 전에, 이 함수는 에서 모든 연산을 Measure 제거합니다 circuit. 이 과정이 필요한 이유는, 회로가 역순으로 처리되기 전에 반전되기 때문이며, 이를 통해 (반전된 회로에서) 역방향 진행을 순방향 진행처럼 다룰 수 있게 됩니다.

매개변수

  • circuit (QuantumCircuit) – 대상 회로.
  • noise_model_paulis (dict[str, QubitSparsePauliList]) – 각 잡음 모델에 대해 고려해야 할 파울리 오차 항.
  • evolution_max_terms (int) – 진화 과정에서 추적해야 할 연산자 항의 최대 개수. (연산자가 이 크기를 초과할 경우, 가장 작은 항들이 잘립니다).
  • kwargs – 추가된 키워드 인수는 모두 로 전달됩니다 compute_bounds().

리턴

역진화 불균등 시간 교환자 상한.

리턴 유형

dict [ str, PauliLindbladMap ]

merge_bounds

merge_bounds(circuit, forward_bounds, backward_bounds, /, noise_rates=None, *, is_clifford_circuit=False)

GitHub

앞쪽 및 뒤쪽 경계를 병합합니다.

후방 경계 사용에서 전방 경계 사용으로 전환되는 단계는 모든 큐비트에 대해 동일할 것입니다. 이는 제공된 학습 데이터를 고려하여 결정됩니다 noise_rates. 이러한 정보가 제공되지 않을 경우, 일률적인 소음 수준이 적용된 것으로 간주합니다. 비록 이것이 비현실적인 가정일지라도, 병합된 경계를 미리 확인해 보는 것은 여전히 유용할 수 있습니다.

매개변수

리턴

병합된 경계.

인상

  • ValueError – 제공된 두 경계값이 모두 None.일 때.
  • KeyError – 대상에 나타나지 않거나 circuit 그 값이 발견되지 InjectNoise.ref 않는 InjectNoise.modifier_ref 키를 bounds 포함하는 경우.
  • ValueError – 주어진 에 대해 계산된 상한값을 갖는 소음 모델의 파울리 항이 와 forward_bounds 사이에서 일치하지 InjectNoise.modifier_ref 않는 경우 backward_bounds.
  • NotImplementedError – 가 is_clifford_circuit 일 때 True.

리턴 유형

dict [ str, PauliLindbladMap ] | None

compute_local_scales

compute_local_scales(circuit, bounds, /, noise_rates, *, sampling_cost_budget=inf, bias_tolerance=0.0)

GitHub

의 인수 local_scales 값을 계산합니다 Samplex.

local_scales 인수는 어떤 개별 오차 항을 완화할지 지정하는 데 사용됩니다.

또는 sampling_cost_budget 중 하나를 지정해야 bias_tolerance 합니다. 전자는 표본 추출 비용에 상한을 설정하는 반면, 후자는 허용 가능한 잔여 편향에 상한을 설정한다.

참고

bounds 에서 파울리 항의 순서가 일치하지 않는 noise_rates 경우, 이 함수의 출력은 스케일이 에도 제공될 속도와 호환되도록 하기 위해 noise_rates 에서 정한 순서를 따르게 됩니다 QuantumProgram.

매개변수

  • circuit (QuantumCircuit) – 대상 회로.
  • bounds (dict[str, PauliLindbladMap]) – 음영 처리된 광뿔의 경계.
  • noise_rates (dict[str, PauliLindbladMap | None]) – 학습된 노이즈 모델의 평가 점수.
  • sampling_cost_budget (float) – 허용할 수 있는 최대 샘플링 비용.
  • bias_tolerance (float) – 허용 가능한 최대 편차.

리턴

  • 해당 local_scales 사전은.에 직접 입력으로 제공되어야 합니다 samplomatic.samplex.Samplex.inputs().
  • .의 표본 추출을 수행하는 데 필요한 표본 추출 비용 오버헤드( γ2\gamma^2 ) local_scales.
  • 이러한 상한과 하한을 사용하여 계산된 기대값에 남아 있는 편향.

리턴 유형

길이가 3인 튜플로, 그 원소들은 다음과 같습니다

인상

  • ValueError – 두 항목 모두에 기본값이 아닌 값이 지정된 경우, 및 sampling_cost_budget bias_tolerance.
  • KeyError – 에서 발견된 어떤 잡음 모델 식별자 (InjectNoise.ref)에 대한 항목이 누락된 noise_rates 경우 circuit.

이 모듈에는 일반적으로 최종 사용자가 직접 호출하지는 않지만, 이 패키지를 기반으로 한 추가 개발에 유용할 수 있는 몇 가지 저수준 함수도 포함되어 있습니다.

compute_bounds

compute_bounds(circuit, noise_model_paulis, light_cone, norm_fn, *, backwards, max_num_boxes=None, num_processes=1, timeout=None)

GitHub

불균등 시간 교환자 상한을 계산합니다.

주어진 회로에 개의 BoxOp 명령어와 개의 주석이 InjectNoise 포함되어 있고, 잡음 모델 식별자 (InjectNoise.ref)를 파울리 오차 항 목록 (noise_model_paulis)에 매핑하는 경우, 이 함수는 불등식 시간 교환자 상한을 계산합니다(이에 대한 세부 구현은 에 의해 수행됩니다 norm_fn). 이 과정에서, 관측 가능한 대상의 광뿔(에 의해 초기화됨 light_cone) 내에 위치한 게이트만을 고려합니다. 이렇게 계산된 경계는 음영 처리된 광뿔의 기초가 됩니다.

이 함수는 장시간 소요되는 계산을 수행하기 때문에 KeyboardInterrupt 예외를 원활하게 처리하여, 사용자가 임의의 시점에서 계산을 중단하더라도 그 시점까지 계산된 결과를 얻을 수 있도록 합니다.

매개변수

  • circuit (QuantumCircuit) – 대상 회로.
  • noise_model_paulis (dict[str, QubitSparsePauliList]) – 각 잡음 모델에 대해 고려해야 할 파울리 오차 항.
  • light_cone (LightCone) – 초기화되고 상태를 유지하는 LightCone 트래커.
  • norm_fn (Callable[[Pauli, RotationGates], CommutatorBounds]) – 특정 불균등 시간 교환자를 구현하는 함수.
  • backwards (bool) – 를 역순으로 circuit 반복할지 여부.
  • max_num_boxes (int | None) – 경계를 계산할 상자의 최대 개수. 추가 상자에 대한 경계값은 2.02.0 라는 자명한 상한값이 부여됩니다.
  • num_processes (int) – 사용할 병렬 프로세스 수.
  • timeout (float | None) – 선택 사항인 타임아웃(초 단위)이 지나면, 남아 있는 모든 레이어가 2.0.의 단순한 수치 범위로 채워집니다. 단, 이는 엄격한 타임아웃이 아니며, 이 타임아웃에 도달한 시점에 처리 중인 레이어는 정상적으로 완료됩니다.

리턴

계산된 불균등 시간 커뮤테이터의 상한값.

리턴 유형

dict [ str, PauliLindbladMap ]

CommutatorBounds

class CommutatorBounds(commutator_bound, truncation_bias, fallback_to_tri_ineq)

GitHub

베이스: NamedTuple

계산된 교환자 경계에 대한 메타데이터를 저장하기 위한 데이터 클래스입니다.

CommutatorBounds(commutator_bound, truncation_bias, fallback_to_tri_ineq)의 새 인스턴스를 생성합니다

매개변수

  • commutator_bound (float)
  • truncation_bias (float)
  • fallback_to_tri_ineq (bool)

commutator_bound

유형: float

가환자에 대한 상한.

이 상한값은 용도에 따라 서로 다른 방식으로 계산됩니다. 예를 들어, 역방향 상한은 핵 노름(섀튼 1-노름)을 계산하는 반면, 순방향 상한은 일반적으로 스펙트럼 노름(섀튼 무한대 노름)을 사용하여 계산됩니다.

노름 계산이 지정된 난이도 한도를 초과할 경우, 삼각 부등식을 기반으로 한 더 간단한 상한값으로 대체되며, 이는 가 로 fallback_to_tri_ineq 설정됨으로써 표시됩니다 True.

이 값은 교환자 상한값의 계산이 중단되었을 때 NaN 나타날 수 있습니다. 이는 이미 truncation_bias 의 이론적 한계를 초과했을 때 발생할 수 있습니다 2.0.

fallback_to_tri_ineq

유형: bool

이 값이 간단한 삼각 부등식을 이용해 “대략적으로” 계산되었는지 commutator_bound 여부.

min

min()

GitHub

이 메타데이터에 인코딩된 최소 경계를 반환합니다.

최소 상한은 와 commutator_bound 의 합과 truncation_bias 의 이론적 상한 중 더 작은 값이다 2.0.

의 값이 사용되는 2.0 이유는, 범위 에서 유한한 파울리 관측량이 보다 더 큰 편향을 가질 수 없기 [-1, +1] 때문이다 2.0.

리턴 유형

부동

truncation_bias

유형: float

교환자의 절단으로 인해 경계에 발생하는 편향.

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