Skip to main content
IBM Quantum Platform

Protocolli

Questo modulo mette a disposizione i vari protocolli utilizzati in tutto il pacchetto.

A typing.Protocol è un'interfaccia che una classe può implementare a livello strutturale, senza ereditarne esplicitamente le proprietà. Ad esempio, qualsiasi classe che implementi un metodo __len__ soddisfa tale condizione Sized, indipendentemente dal fatto che ciò sia indicato o meno nella sua gerarchia di classi.

I protocolli presenti in questo modulo seguono lo stesso principio, ma ciascuno di essi è incentrato su un unico metodo in stile "dunder", di per sé piuttosto banale (ad esempio _linear_operator_). Una classe che implementa quel metodo soddisfa quindi il protocollo corrispondente – SupportsLinearOperator in questo esempio – e diventa utilizzabile ovunque sia richiesto quel protocollo, senza alcuna registrazione esplicita. Si noti che il termine “protocollo” viene talvolta utilizzato in senso lato per indicare la funzione di invio indipendente dal tipo implementata su un protocollo (ad esempio linear_operator()) piuttosto che l’interfaccia stessa; la distinzione dovrebbe risultare chiara dal contesto.

La maggior parte dei protocolli riportati di seguito segue questo schema, abbinato a una piccola funzione di supporto indipendente dal tipo che invia la chiamata al metodo del protocollo su qualsiasi oggetto le venga passato:

Protocollo
Metodo
Funzione di supporto
SupportsFermionOperator_fermion_operator_(self)fermion_operator()
SupportsMajoranaOperator_majorana_operator_(self)majorana_operator()
SupportsLinearOperator_linear_operator_(self, norb, nelec)linear_operator()
SupportsApplyUnitary_apply_unitary_(self, vec, norb, nelec, copy)apply_unitary()
SupportsApplyUnitaryPlaced_apply_unitary_placed_(self, vec, norb, nelec, copy, freg_indices)
SupportsCommutators_commutator_, _anti_commutator_, _double_commutator_ (tutti @staticmethod)commutator(), anti_commutator(), double_commutator()
SupportsApplyUnitary(*args, **kwargs)Una copia del protocollo ffsim.SupportsApplyUnitary .
SupportsApplyUnitaryPlaced(*args, **kwargs)Un’estensione specifica per un pacchetto che contiene SupportsApplyUnitary un posizionamento di modalità.
SupportsCommutators(*args, **kwargs)Un protocollo che indica il supporto per la generazione efficiente di commutatori.
SupportsFermionOperator(*args, **kwargs)Un equivalente del protocollo ffsim.SupportsFermionOperator .
SupportsLinearOperator(*args, **kwargs)Una copia del protocollo ffsim.SupportsLinearOperator .
SupportsMajoranaOperator(*args, **kwargs)Un equivalente del protocollo SupportsFermionOperator , incentrato sugli operatori di Majorana.
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.