Fermioni Qiskit
qiskit-fermions amplia l' Qiskit SDK, aggiungendo strumenti per lavorare sui sistemi fermionici. Nell'ambito del proprio campo di applicazione, prevede quanto segue:
- Strutture dati efficienti per la rappresentazione e la manipolazione di operatori fermionici in diverse forme
- Un quadro di riferimento per l'implementazione dei metodi di conversione degli operatori (comprese le codifiche da fermioni a qubit)
- Una raccolta di implementazioni efficienti dei metodi di conversione più comuni
- Un framework e una libreria di porte logiche per la rappresentazione di circuiti fermionici
- Una pipeline di transpilazione integrata con il processo di transpilazione di Qiskit per sintetizzare circuiti fermionici in circuiti basati su qubit
Inoltre, si integra qiskit-fermions con altri strumenti dell'ecosistema, quali:
- ffsim per gli operatori di ansatz di alto livello e la simulazione efficiente dei circuiti fermionici (vedi " Relazione con ffsim ")
Introduzione
La descrizione schematica riportata nell'immagine qui sopra offre una panoramica dell'ampiezza delle funzionalità e del flusso di lavoro generale offerti da questo pacchetto. È possibile operare nel regime fermionico utilizzando sia la rappresentazione operazionale che quella circuitale, prima di definire una codifica da fermioni a qubit che si integri nella pipeline del transpiler multirappresentazione di Qiskit.
Tutte queste funzionalità sono illustrate in diverse guide pensate per aiutarti a muovere i primi passi. Per una panoramica che illustri passo dopo passo la pipeline mostrata sopra, inizia con la guida su Fermi-Hubbard disponibile all’indirizzo 1D.
Esempi di casi di utilizzo
Gli elementi di questo pacchetto sono stati utilizzati in ricerche relative ai seguenti articoli:
- La compilazione randomizzata dei circuiti dell’ qDRIFT, riportata in [1].
- La sintesi da fermioni a qubit durante il processo di transpilazione descritto in [2].
Discussione tecnica
Obiettivi progettuali
Questo pacchetto è stato appositamente progettato per essere compatibile con Qiskit: si basa su un nucleo implementato in Rust e fornisce binding nativi per i linguaggi Python e e C. La sua API mira a rispecchiare quella di Qiskit, al fine di integrarsi senza soluzione di continuità nei flussi di lavoro degli utenti che hanno esperienza nella programmazione con Qiskit.
Un principio fondamentale alla base della progettazione di qiskit-fermions è stato il disaccoppiamento della sua rappresentazione in termini di circuiti fermionici dalla sua forma quantizzata in qubit. Per essere più precisi: i circuiti fermionici hanno un significato intrinseco e non richiedono una mappatura nello spazio dei qubit per essere interpretabili. Inoltre, la rappresentazione del circuito fermionico non può formulare alcuna ipotesi riguardo alla codifica da fermioni a qubit che verrà applicata in seguito. Di conseguenza, sebbene la codifica di Jordan-Wigner mantenga una posizione e un ruolo predominanti, non viene considerata la codifica _predefinita_ da fermioni a qubit.
Relazione con ffsim
ffsim e qiskit-fermions dividere il lavoro invece di sovrapporlo. ffsim gestisce gli operatori di tipo "ansatz" di alto livello e la loro simulazione veloce: costruisce un operatore UCJ o UCCSD a partire da ampiezze del metodo "coupled-cluster" o da un vettore di parametri e simula stati fermionici in uno spazio compatto a numero fisso di particelle. qiskit-fermions controlla il lato del circuito: esprime quell’operatore come un FermionicCircuit sui modi fermionici e lo traspone in un circuito di qubit tramite una qualsiasi codifica da fermioni a qubit.
È proprio quest'ultimo punto il motivo per cui è opportuno ricorrere a un operatore ffsim in questo caso. I gate Qiskit propri di ffsim sono specifici per la trasformazione di Jordan-Wigner, quindi questo pacchetto offre la possibilità di semplificare un ansatz tramite una codifica diversa (ad esempio, una codifica locale che sostituisce i qubit con circuiti meno complessi). Al contrario, questo pacchetto non reimplementa la matematica dell’ansatz, quindi e UCJ UCC accettano direttamente come input un operatore ffsim.
Per quanto riguarda la simulazione, ffsim funge da backend. I gate e gli operatori di questo pacchetto implementano i metodi del protocollo utilizzati dalle funzioni di simulazione di ffsim (_apply_unitary_, e _linear_operator_ _trace_; vedi qiskit_fermions.protocols), pertanto gli strumenti di ffsim funzionano su di essi in modo nativo, senza alcuna fase di conversione. Poiché ffsim dipende da PySCF,, che non supporta Windows, per ora la simulazione su Windows richiede l'utilizzo del Sottosistema Windows per l' Linux. Gli operatori di costruzione, la loro mappatura e la transpilazione dei circuiti risultanti non richiedono nulla di tutto ciò e funzionano ovunque.
Per avere un quadro completo della situazione, leggi la guida alle relazioni di ffsim.
Problemi noti
Finché l’API C di Qiskit non avrà raggiunto la parità di funzionalità con la sua API Python, anche alcuni componenti di questo pacchetto rimarranno esclusivi dell’API Python. Ciò include l'intera libreria di circuiti (qiskit_fermions.circuit) e i passaggi del transpiler (qiskit_fermions.transpiler).
Lavori futuri
- Migrare la libreria dei circuiti e le fasi del transpiler nel core di Rust (e fornire un'API in C per interagire con essi)
- Ampliare la libreria delle implementazioni efficienti delle conversioni tra operatori
- Ampliare la libreria di strutture dati operatoriali efficienti
contribuzione
Il codice sorgente è disponibile su GitHub.
La guida per gli sviluppatori si trova all'indirizzo CONTRIBUTING.md nella directory principale del repository di questo progetto. Partecipando, ci si aspetta che tu rispetti il codice di condotta di Qiskit.
Riferimento a questo pacchetto
Se utilizzi questo pacchetto nella tua ricerca, fai riferimento al file “ CITATION.bib ” presente nel repository di questo progetto per citare i riferimenti bibliografici appropriati.
Licenza
Politica di obsolescenza
Questo pacchetto segue le regole del versioning semantico. Le modifiche che comportano incompatibilità vengono apportate solo occasionalmente, al fine di migliorare l'esperienza utente. Quando possibile, le vecchie interfacce vengono mantenute e contrassegnate come obsolete fintanto che possono coesistere con quelle nuove. Ogni miglioramento significativo, modifica che comporta incompatibilità o funzionalità deprecata è documentato nelle Note di rilascio.
Riferimenti
[ 1 ]
Samuele Piccinelli e altri, Chimica quantistica con convergenza dimostrabile tramite diagonalizzazione quantistica di Krylov basata su campioni casuali, arXiv:2508.02578 [quant-ph].
[ 2 ]
Anthony Gandon e altri, Simulazione quantistica basata su stabilizzatori della dinamica dei fermioni con codifiche locali dei qubit, arXiv:2512.11418 [quant-ph].