Skip to main content
IBM Quantum Platform

프로토콜

이 모듈은 패키지 전반에 걸쳐 사용되는 다양한 프로토콜을 제공합니다.

A는 클래스가 이를 명시적으로 상속받지 않더라도 구조적으로 구현할 수 있는 인터페이스입니다 typing.Protocol . 예를 들어, 어떤 __len__ 메서드를 구현하는 클래스는 그 클래스 계층 구조의 어느 곳에도 명시되어 있든 없든 상관없이 해당 조건을 만족합니다 Sized.

이 모듈에 포함된 프로토콜들은 모두 같은 개념을 따르지만, 각각은 그 자체로는 특별할 것 없는 단일한 ‘dunder’ 스타일 메서드(예: _majorana_operator_)를 중심으로 합니다. 해당 메서드를 구현하는 클래스는 그로 인해 (SupportsMajoranaOperator 이 예시에서) 해당 프로토콜을 준수하게 되며, 별도의 명시적 등록 절차 없이도 해당 프로토콜이 요구되는 모든 곳에서 사용할 수 있게 됩니다. “프로토콜”이라는 용어는 때때로 인터페이스 그 자체를 가리키는 것이 아니라, 프로토콜을 기반으로 구축된 타입에 구애받지 않는 디스패치 함수(예: fermion_operator())를 지칭하는 데 광범위하게 사용되기도 하므로, 문맥을 통해 이 구분을 명확히 파악해야 합니다.

아래의 일부 프로토콜에는, 전달된 객체가 무엇이든 해당 객체의 프로토콜 메서드로 호출을 전달하는, 타입에 구애받지 않는 작은 헬퍼 함수가 함께 제공됩니다.

프로토콜
방법
헬퍼 함수
SupportsFermionOperator_fermion_operator_(self)fermion_operator()
SupportsMajoranaOperator_majorana_operator_(self)majorana_operator()
SupportsApplyUnitaryPlaced_apply_unitary_placed_(self, vec, norb, nelec, copy, freg_indices)–
SupportsCommutators_commutator_, _anti_commutator_, _double_commutator_ (모두 @staticmethod)commutator(), anti_commutator(), double_commutator()
칼럼 1
칼럼 2
SupportsApplyUnitaryPlaced(*args, **kwargs).의 패키지별 확장 기능 ffsim.SupportsApplyUnitary.
SupportsCommutators(*args, **kwargs)효율적인 커뮤테이터 생성을 지원하는 프로토콜.
SupportsFermionOperator(*args, **kwargs)이 패키지의 연산자 변환 계약은 연산자를 FermionOperator.로 변환합니다.
SupportsMajoranaOperator(*args, **kwargs)마요라나 연산자를 대상으로 하는 해당 SupportsFermionOperator 프로토콜의 등가물.

ffsim에서 구현된 프로토콜

시뮬레이션은 ffsim의 담당 분야이며, 관련 프로토콜은 이곳에서 다시 설명하기보다는 ffsim에서 정의되어 있습니다. 이 패키지의 게이트와 오퍼레이터는 다음을 구현하므로, ffsim의 디스패처가 이를 직접 수용합니다:

ffsim 프로토콜
방법
다음에 의해 구현됨
ffsim.SupportsApplyUnitary_apply_unitary_(self, vec, norb, nelec, copy)FermionicCircuit 그리고 모든 FermionicGate
ffsim.SupportsLinearOperator_linear_operator_(self, norb, nelec)FermionOperator
ffsim.SupportsTrace_trace_(self, norb, nelec)FermionOperator
주의

ffsim.SupportsFermionOperator 이 _fermion_operator_ 메서드 이름은 이 패키지의 메서드 이름과 동일하지만 SupportsFermionOperator, 두 계약은 서로 다릅니다. 즉, 이 메서드는 ffsim의 관련 없는 유형 FermionOperator 대신 이 패키지의 유형을 반환합니다. 이 메서드는 순전히 메서드 이름만을 기준으로 ffsim.fermion_operator() 호출되므로, 이 패키지의 객체에 대해 이 메서드를 호출하면 해당 타입이 반환됩니다.

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