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.
AvvertenzaAl momento non sono supportati cancelli di questo tipo.
Aumenti
ValueError – se l’oggetto fornito non è gate un’istanza di FermionicGate.
Tipo di restituzione
Nessuna
count_ops
decompose
decompose(gates_to_decompose=None, reps=1)
Riespone decompose().
Parametri
- gates_to_decompose (str |type[Instruction] | Sequence[str |type[Instruction]] | None)
- reps (int)
Tipo di restituzione
draw
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.SupportsApplyUnitarydi ffsim. - ValueError – se un’istruzione di circuito rifiuta di applicare il proprio principio di unitarità per i valori dati
norbenelec; oppure se un’istruzione che implementa solo il protocollo_apply_unitary_semplice viene inserita in un sottoinsieme in modalità non identità.
Tipo di restituzione
_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.SupportsApplyUnitarydi ffsim. - ValueError – se un’istruzione di circuito rifiuta di applicare il proprio principio di unitarità per i valori dati
norbenelec; oppure se un’istruzione che implementa solo il protocollo_apply_unitary_semplice viene inserita in un sottoinsieme in modalità non identità.
Tipo di restituzione