경계
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)
전진 진화된 불균등 시간 교환자 상한을 계산한다.
회로의 끝 부분부터 시작하여, 대상 회로 내 각 잡음이 있는 층의 모든 파울리 오차 항에 대해 전진 진화된 불균등 시간 교환자 상한을 계산한다.
즉, 모든 오차 항에 대해 를 계산하고, 를 구하되, 여기서 는 에서 측정될 observable 목표값이다 circuit.
오차항 은 에 의해 결정된다 noise_model_paulis. 이 사전은 잡음 모델 식별자(samplomatic.InjectNoise.ref)를 파울리 오차 항의 목록에 매핑합니다. 에 대한 반복 처리 과정에서 일치하는 주석이 InjectNoise 달린 BoxOp 가 발견될 때마다 해당 용어가 사용될 것입니다 circuit.
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)
정보 전파 속도에 대한 제한을 적용하여 주어진 범위를 좁혀라.
리브-로빈슨 상한의 개념에서 영감을 얻은 이 함수는 정보 전파 속도에 대한 제한을 활용하여, 이전에 계산된 전진 진화 불균등 시간 교환자 상한을 더욱 엄격하게 만듭니다(참조 compute_forward_bounds()).
매개변수
- bounds (dict[str, PauliLindbladMap]) – 앞서 계산된 전방 진화 불균등 시간 교환자 상한.
- circuit (QuantumCircuit) – 대상 회로.
- noise_model_paulis (dict[str, QubitSparsePauliList]) – 각 잡음 모델에 대해 고려해야 할 파울리 오차 항.
- observable (Pauli |PauliList |SparseObservable |SparsePauliOp) – 회로 끝단에서 측정될 대상 관측량.
리턴
불균등 시간 커뮤테이터 상한에 대한 강화된 결과.
인상
- NotImplementedError – 에 폴리 항이 하나 이상
observable포함될 때. 이러한 상황이 발생하면, 대상 파울리 각각에 대해 이 함수를 호출해야 합니다. - ValueError – 2개 이상의 큐비트에 영향을 미치는 게이트를 만나게 될 때.
리턴 유형
dict [ str, PauliLindbladMap ]
compute_backward_bounds
compute_backward_bounds(circuit, noise_model_paulis, /, *, evolution_max_terms=1000000, **kwargs)
역진화된 불균등 시간 교환자 상한을 계산한다.
회로의 시작 부분부터 시작하여, 대상 회로 내 각 잡음이 있는 레이어의 모든 파울리 오차 항에 대해 역진화 방식의 불균등 시간 교환자 상한을 계산한다.
즉, 모든 오차 항 에 대해 (샤텐 1-노름, 일명 핵 노름을 사용하여) 를 계산한다. 여기서 는 의 모든 활성 큐비트에 대해 모두 0인 상태, 즉 로 가정한다 circuit.
오차항 은 에 의해 결정된다 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)
앞쪽 및 뒤쪽 경계를 병합합니다.
후방 경계 사용에서 전방 경계 사용으로 전환되는 단계는 모든 큐비트에 대해 동일할 것입니다. 이는 제공된 학습 데이터를 고려하여 결정됩니다 noise_rates. 이러한 정보가 제공되지 않을 경우, 일률적인 소음 수준이 적용된 것으로 간주합니다. 비록 이것이 비현실적인 가정일지라도, 병합된 경계를 미리 확인해 보는 것은 여전히 유용할 수 있습니다.
매개변수
- circuit (QuantumCircuit) – 대상 회로.
- forward_bounds (dict[str, PauliLindbladMap] | None) – 전방 경계 (참조
compute_forward_bounds()). - backward_bounds (dict[str, PauliLindbladMap] | None) – 하한 (참조
compute_backward_bounds()). - noise_rates (dict[str, PauliLindbladMap | None] | None) – 대상 백엔드에서 학습된 노이즈 비율.
- is_clifford_circuit (bool) – 대상 회로가 완전 클리포드 회로인지 여부.
리턴
병합된 경계.
인상
- 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)
의 인수 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(). - .의 표본 추출을 수행하는 데 필요한 표본 추출 비용 오버헤드( )
local_scales. - 이러한 상한과 하한을 사용하여 계산된 기대값에 남아 있는 편향.
리턴 유형
길이가 3인 튜플로, 그 원소들은 다음과 같습니다
인상
- ValueError – 두 항목 모두에 기본값이 아닌 값이 지정된 경우, 및
sampling_cost_budgetbias_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)
불균등 시간 교환자 상한을 계산합니다.
주어진 회로에 개의 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) – 경계를 계산할 상자의 최대 개수. 추가 상자에 대한 경계값은 라는 자명한 상한값이 부여됩니다.
- num_processes (int) – 사용할 병렬 프로세스 수.
- timeout (float | None) – 선택 사항인 타임아웃(초 단위)이 지나면, 남아 있는 모든 레이어가
2.0.의 단순한 수치 범위로 채워집니다. 단, 이는 엄격한 타임아웃이 아니며, 이 타임아웃에 도달한 시점에 처리 중인 레이어는 정상적으로 완료됩니다.
리턴
계산된 불균등 시간 커뮤테이터의 상한값.
리턴 유형
dict [ str, PauliLindbladMap ]
CommutatorBounds
class CommutatorBounds(commutator_bound, truncation_bias, fallback_to_tri_ineq)
베이스: NamedTuple
계산된 교환자 경계에 대한 메타데이터를 저장하기 위한 데이터 클래스입니다.
CommutatorBounds(commutator_bound, truncation_bias, fallback_to_tri_ineq)의 새 인스턴스를 생성합니다
매개변수
commutator_bound
유형: float
가환자에 대한 상한.
이 상한값은 용도에 따라 서로 다른 방식으로 계산됩니다. 예를 들어, 역방향 상한은 핵 노름(섀튼 1-노름)을 계산하는 반면, 순방향 상한은 일반적으로 스펙트럼 노름(섀튼 무한대 노름)을 사용하여 계산됩니다.
노름 계산이 지정된 난이도 한도를 초과할 경우, 삼각 부등식을 기반으로 한 더 간단한 상한값으로 대체되며, 이는 가 로 fallback_to_tri_ineq 설정됨으로써 표시됩니다 True.
이 값은 교환자 상한값의 계산이 중단되었을 때 NaN 나타날 수 있습니다. 이는 이미 truncation_bias 의 이론적 한계를 초과했을 때 발생할 수 있습니다 2.0.
fallback_to_tri_ineq
유형: bool
이 값이 간단한 삼각 부등식을 이용해 “대략적으로” 계산되었는지 commutator_bound 여부.
min
min()
이 메타데이터에 인코딩된 최소 경계를 반환합니다.
최소 상한은 와 commutator_bound 의 합과 truncation_bias 의 이론적 상한 중 더 작은 값이다 2.0.
의 값이 사용되는 2.0 이유는, 범위 에서 유한한 파울리 관측량이 보다 더 큰 편향을 가질 수 없기 [-1, +1] 때문이다 2.0.
리턴 유형
truncation_bias
유형: float
교환자의 절단으로 인해 경계에 발생하는 편향.