Skip to main content
IBM Quantum Platform

CommutationChecker

class qiskit.circuit.CommutationChecker(standard_gate_commutations=None, cache_max_entries=1000000, *, gates=None)

GitHub

베이스: object

두 작업의 변환을 확인합니다.

nn 쿼비트에서 AABB 두 개의 유니테리가 다음과 같은 경우 출퇴근합니다

2nFprocess(AB,BA)+12n+1>1ε,\frac{2^n F_{\text{process}}(AB, BA) + 1}{2^n + 1} > 1 - \varepsilon,

여기서,

Fprocess(U1,U2)=Tr(U1U2)2n2,F_{\text{process}}(U_1, U_2) = \left|\frac{\mathrm{Tr}(U_1 U_2^\dagger)}{2^n} \right|^2,

ε\varepsilon 로 설정하고, 몇 큐비트 시스템에서 반올림 오류를 고려하여 101210^{-12} 로 설정했습니다. 이 메트릭은 키스킷의 다른 근접성 검사와의 일관성을 위해 선택되었습니다.

가능한 경우, 치환 관계는 조회 테이블에서 조회됩니다. 이는 매개변수가 없는 표준 게이트(예: XGate 또는 HGate)나 자유 매개변수를 갖는 게이트(예: RXGate 각도가 ParameterExpression 인 )의 경우에 해당합니다. approximation_degree그렇지 않은 경우, 행렬 기반의 검증이 수행되며, 이 때 교환 연산을 수행할 때의 평균 게이트 충실도가 특정 임계값을 초과하면 두 연산이 교환된다고 한다(참조).

2.5.0 버전부터 사용 중단됨

qiskit.circuit.commutation_checker.CommutationChecker.__init__()’의 인수는 cache_max_entries Qiskit 2.5.0 부터 더 이상 사용되지 않습니다. Qiskit 3.0 에서 제거될 예정입니다.


메소드

매개변수

  • standard_gate_commutations (dict | None)
  • cache_max_entries (int)
  • gates (set[str] | None)

check_commutation_entries

check_commutation_entries(first_op, first_qargs, second_op, second_qargs)

GitHub

저장된 정류 관계가 있는 경우 반환합니다

매개변수

  • first_op (Operation) – 첫 번째 작업.
  • first_qargs (list) – 첫 번째 연산의 큐비트.
  • second_op (Operation) – 두 번째 작업.
  • second_qargs (list) – 두 번째 연산의 큐비트.

리턴

게이트가 출퇴근하는 경우 참이고 그렇지 않은 경우 거짓입니다.

리턴 유형

부울

clear_cached_commutations

clear_cached_commutations()

GitHub

캐시된 통근을 보유한 사전을 지웁니다

더 이상 내부 캐시가 없기 때문에 이 메서드는 아무 작업도 수행하지 않습니다

2.5 버전부터 사용 중단됨

이 메서드는 qiskit.circuit.commutation_checker.CommutationChecker.clear_cached_commutations() Qiskit 2.5 부터 더 이상 사용되지 않습니다. Qiskit 3.0 에서 제거될 예정입니다.

commute

commute(op1, qargs1, cargs1, op2, qargs2, cargs2, max_num_qubits=None, approximation_degree=1.0, matrix_max_num_qubits=3)

GitHub

두 연산이 교환 가능한지 확인합니다. 의 반환 값은 연산들이 True 진정으로 교환 가능함을 의미하며, 의 반환 값은 연산들이 교환 가능하지 False 않거나 교환성 검사가 생략되었음을 의미합니다(예를 들어, 연산에 조건이 있거나 큐비트가 너무 많은 경우).

매개변수

  • op1 (Operation) – 첫 번째 작업.
  • qargs1 (Sequence[Qubit |int]) – 첫 번째 연산의 큐비트.
  • cargs1 (Sequence[Qubit |int]) – 첫 번째 연산의 clbits.
  • op2 (Operation) – 두 번째 작업.
  • qargs2 (Sequence[Qubit |int]) – 두 번째 연산의 큐비트.
  • cargs2 (Sequence[Qubit |int]) – 두 번째 연산의 clbits.
  • max_num_qubits (int | None) – 고려할 큐비트의 최대 개수이며, 어느 한 연산의 큐비트 수가 이 수치를 초과할 경우 검사를 생략할 수 있습니다. 기본값은 로 None, 이는 제한이 없음을 의미합니다. 또한 참조: 계산된 행렬의 matrix_max_num_qubits 차원을 제한하기 위해.
  • approximation_degree (float) – 두 작업 사이의 평균 게이트 충실도가 이 수치(최대 1e-12)보다 높으면 통근하는 것으로 간주합니다.
  • matrix_max_num_qubits (int) – 행렬 표현을 계산할 수 있는 큐비트의 최대 개수. 예를 들어 사용자 정의 게이트와 같이 즉시 사용할 수 있는 효율적인 검사 방법이 없는 경우 이 방법이 필요합니다.

리턴

두 연산이 교환법칙을 만족하는지 여부.

리턴 유형

부울

commute_nodes

commute_nodes(op1, op2, max_num_qubits=3, approximation_degree=1.0)

GitHub

DAGOpNode 객체가 교환 관계에 있는지 확인합니다.

이는 와 commute() 동일하지만, 연산, 큐비트 및 클비트가 객체에 DAGOpNode 묶여 있다는 점이 다릅니다. 자세한 내용은 여기를 참조하십시오 commute() .

매개변수

리턴 유형

부울

num_cached_entries

num_cached_entries()

GitHub

캐시된 항목 수를 반환합니다

더 이상 내부 캐시가 없기 때문에 이 메서드는 항상 0을 반환합니다.

2.5 버전부터 사용 중단됨

이 메서드는 qiskit.circuit.commutation_checker.CommutationChecker.num_cached_entries() Qiskit 2.5 부터 더 이상 사용되지 않습니다. Qiskit 3.0 에서 제거될 예정입니다.

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