Skip to main content
IBM Quantum Platform

Funzioni di filtraggio

qf_ferm_op_filter_diagonal_terms

void qf_ferm_op_filter_diagonal_terms(QfFermionOperator *op)

Esclude i termini di un operatore che sono diagonali nella base dei numeri di occupazione.

In questo modo vengono rimossi tutti i termini dall'espressione fornita QfFermionOperator che siano un prodotto di operatori numerici ( aiaia^\dagger_i a_i ). Ciò include il termine costante (un prodotto di zero operatori numerici), i singoli operatori numerici, nonché i prodotti di ordine superiore come ninj=aiajajain_i n_j = a^\dagger_i a^\dagger_j a_j a_i.

Suggerimento

Una delle ragioni principali per filtrare tali termini emerge nel corso dell'evoluzione temporale degli operatori, dove tali termini diagonali non influenzano l'evoluzione temporale se non introducendo una fase globale. Di conseguenza, le stringhe di bit campionate da uno stato che ha subito un’evoluzione temporale non subiscono alcuna variazione. Si raccomanda quindi di rimuoverli, ad esempio quando si prepara un hamiltoniano della struttura elettronica per l’evoluzione temporale qDRIFT utilizzata da SqDRIFT,, poiché ciò evita un sovraccarico di campionamento altrimenti superfluo.

Attenzione

L'operatore fornito deve essere ordinato secondo l'ordine normale! Si tratta di un presupposto fondamentale dell'implementazione che non viene verificato! Vedi qf_ferm_op_normal_ordered() per sapere come ottenere un operatore di quella forma.

1QfFCIDump *fcidump = qf_fcidump_from_file("molecule.fcidump");
2QfFermionOperator *op = qf_ferm_op_from_fcidump(fcidump);
3
4QfFermionOperator *normal = qf_ferm_op_normal_ordered(op, NULL);
5
6qf_ferm_op_filter_diagonal_terms(normal);
Nota

L'operatore viene modificato direttamente. Se tiene traccia degli indici di gruppo (vedi qf_ferm_op_get_groups()), i termini rimanenti mantengono il loro raggruppamento relativo, ma gli indici di gruppo vengono riassegnati a un intervallo contiguo a partire da 0. Non bisogna quindi fare affidamento sul fatto che l'indice specifico di gruppo di un termine venga mantenuto durante l'esecuzione di questa funzione.

Parametri

  • op – Un puntatore all’operatore fermionico ordinato normalmente i cui termini devono essere filtrati (modificati in loco).
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.