Skip to main content
IBM Quantum Platform

FermionicCircuit

class FermionicCircuit(num_modes)

Basi: object

Un wrapper attorno a QuantumCircuit per rappresentare circuiti fermionici.

Questa classe presenta un'API ridotta rispetto all'API completa del. sottostante QuantumCircuit. Ciò viene fatto per evitare di rivelare (tra le altre cose) la possibilità di applicare porte basate su qubit a un circuito fermionico, operazione che, in generale, non sarebbe ben definita.

L'inizializzazione di un'istanza di circuito può essere effettuata utilizzando gli argomenti elencati di seguito.

Parametri

num_modes (int) – il numero di modi fermionici su cui agisce questo circuito.


Attributi

metadata

Riespone metadata.

modes

La modalità fermionica su bits cui agisce questo circuito.

register

Tipo: FermionicRegister

Il circuito interno FermionicRegister...


Metodi

append

append(gate, fargs, cargs=None, *, copy=True)

Aggiunge un FermionicGate a questo circuito.

Parametri

  • gate (FermionicGate) – il gate fermionico da applicare.

  • fargs (Qubit |QuantumRegister |int |slice |Sequence[Qubit |int]) – le modalità fermioniche su cui agisce questo gate.

  • cargs (None) –

    i bit classici su cui agisce questa porta logica.

    Avvertenza

    Al momento non sono supportati cancelli di questo tipo.

  • copy (bool) – inoltrato a append().

Aumenti

ValueError – se l’oggetto fornito non è gate un’istanza di FermionicGate.

Tipo di restituzione

Nessuna

count_ops

count_ops()

Riespone count_ops().

Tipo di restituzione

OrderedDict [ str, int ]

decompose

decompose(gates_to_decompose=None, reps=1)

Riespone decompose().

Parametri

Tipo di restituzione

FermionicCircuit

draw

draw(*args, **kwargs)

Espone direttamente il metodo draw() del circuito interno.

Tipo di restituzione

Qualsiasi

Metodi del protocollo

_apply_unitary_

_apply_unitary_(vec, norb, nelec, copy)

Applica questo circuito a un vettore di stato ffsim, implementando il protocollo ffsim.

Questo percorre il circuito in ordine topologico e applica l’effetto unitario di ciascuna istruzione al vettore di stato tramite il protocollo ffsim.SupportsApplyUnitary di ffsim (riprodotto localmente come SupportsApplyUnitary). Per ogni istruzione che agisce su un sottoinsieme del registro, le modalità fermioniche vengono rietichettate con i rispettivi indici assoluti (globali) prima dell’applicazione.

Per _apply_unitary_placed_() i dettagli, si veda [...]; questo metodo presuppone che le modalità del circuito corrispondano alle modalità del vettore 0..num_modes (ovvero una disposizione delle modalità identitaria).

Parametri

  • vec (ndarray) – il vettore di stato a cui applicare questo circuito. Se il circuito è vuoto, restituisce il valore senza modifiche.
  • norb (int) – il numero di orbitali spaziali.
  • nelec (int |tuple[int, int]) – o un singolo numero intero che rappresenta il numero di fermioni in un sistema senza spin, oppure una coppia di numeri interi che indica il numero di fermioni con spin alfa e beta.
  • copy (bool) – se copiare il vettore prima di eseguire operazioni su di esso.

Risultati

Il vettore trasformato.

Aumenti

  • TypeError – se un’istruzione di circuito non implementa il protocollo ffsim.SupportsApplyUnitary di ffsim.
  • ValueError – se un’istruzione di circuito rifiuta di applicare il proprio principio di unitarità per i valori dati norb e nelec; oppure se un’istruzione che implementa solo il protocollo _apply_unitary_ semplice viene inserita in un sottoinsieme in modalità non identità.

Tipo di restituzione

ndarray

_apply_unitary_placed_

_apply_unitary_placed_(vec, norb, nelec, copy, freg_indices)

Applica questo circuito dopo aver inserito le sue modalità nelle modalità globali del vettore.

Questo percorre il circuito in ordine topologico e applica l'effetto unitario di ciascuna istruzione al vettore di stato tramite il protocollo ffsim.SupportsApplyUnitary di ffsim. Le modalità specifiche di ciascuna istruzione vengono innanzitutto mappate tramite la disposizione di questo circuito: una modalità locale al circuito viene mappata m sulla modalità globale freg_indices[m], pertanto una sottoistruzione che agisce sulle modalità locali al circuito [m0, m1, ...] viene applicata alle modalità globali [freg_indices[m0], freg_indices[m1], ...]. Con il posizionamento identitario, questo freg_indices == 0..num_modes è esattamente il caso _apply_unitary_(); un posizionamento su un sottoinsieme consente a questo circuito di fungere da definizione di una porta posizionata su un sottoinsieme di un registro più grande (ad es. UCJ). Questa estensione sensibile alla posizione è documentata come SupportsApplyUnitaryPlaced – un protocollo specifico del pacchetto che non ha un equivalente in ffsim.

Un'istruzione viene inserita nelle sue modalità assolute solo se implementa l'estensione _apply_unitary_placed_ sensibile al posizionamento (SupportsApplyUnitaryPlaced). Un'istruzione che implementa solo la versione semplice ( _apply_unitary_SupportsApplyUnitary ) di ffsim – che non ha alcun argomento di modalità e quindi agisce sulle modalità del 0..k vettore – può essere eseguita solo quando il suo posizionamento è l'identità [0, 1, ..., k-1]; su qualsiasi altro sottoinsieme il posizionamento non può essere espresso e l'istruzione viene rifiutata anziché essere applicata silenziosamente alle modalità errate.

Parametri

  • vec (ndarray) – il vettore di stato a cui applicare questo circuito. Se il circuito è vuoto, restituisce il valore senza modifiche.
  • norb (int) – il numero di orbitali spaziali del vettore di stato globale.
  • nelec (int |tuple[int, int]) – o un singolo numero intero che rappresenta il numero di fermioni in un sistema senza spin, oppure una coppia di numeri interi che indica il numero di fermioni con spin alfa e beta.
  • copy (bool) – se copiare il vettore prima di eseguire operazioni su di esso.
  • freg_indices (list[int]) – gli indici delle modalità assolute (globali) a cui si mappano le modalità di questo circuito.

Risultati

Il vettore trasformato.

Aumenti

  • TypeError – se un’istruzione di circuito non implementa il protocollo ffsim.SupportsApplyUnitary di ffsim.
  • ValueError – se un’istruzione di circuito rifiuta di applicare il proprio principio di unitarità per i valori dati norb e nelec; oppure se un’istruzione che implementa solo il protocollo _apply_unitary_ semplice viene inserita in un sottoinsieme in modalità non identità.

Tipo di restituzione

ndarray

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.