Vai al contenuto principale
Questo progetto è in fase beta. Hai trovato un bug? Apri una issue su GitHub. Hai una domanda o un'idea? Chiedi su GitHub Discussions — apprezziamo il tuo feedback!
Com'è la qualità della traduzione su questa pagina?

Qiskit Fermions

qiskit-fermions estende l'SDK Qiskit con strumenti per lavorare su sistemi fermionici. Nel suo ambito fornisce quanto segue:

  • Strutture dati efficienti per la rappresentazione e la manipolazione di operatori fermionici in forme diverse

  • Un framework per implementare metodi di conversione degli operatori (incluse le codifiche fermione-qubit)

  • Una libreria di implementazioni efficienti dei metodi di conversione più comuni

  • Un framework e una libreria di gate per esprimere circuiti fermionici

  • Una pipeline di transpilazione integrata con il processo del transpiler di Qiskit per sintetizzare circuiti fermionici in circuiti basati su qubit

Inoltre, qiskit-fermions si integra con altri strumenti dell'ecosistema, come:

  • ffsim per gli operatori ansatz di alto livello e la simulazione efficiente di circuiti fermionici (vedi Relazione con ffsim)

Per iniziare​

Schematic description of Qiskit Fermions

La descrizione schematica nell'immagine qui sopra offre un assaggio dell'ampiezza delle funzionalità e del flusso di lavoro generale che questo pacchetto fornisce. Puoi lavorare nel regime fermionico sia con la rappresentazione degli operatori sia con quella dei circuiti, prima di definire una codifica fermione-qubit che si inserisce nella pipeline del Transpiler multi-rappresentazione di Qiskit.

Tutte queste funzionalità sono spiegate in diverse guide per aiutarti a iniziare. Per una panoramica che percorre esattamente la pipeline mostrata sopra, inizia con la guida al modello di Fermi-Hubbard 1D.

Esempi di casi d'uso​

Componenti di questo pacchetto sono stati utilizzati in ricerche legate ai seguenti articoli:

  • La compilazione randomizzata di circuiti qDRIFT in [1].

  • La sintesi fermione-qubit durante il processo di transpilazione in [2].

Discussione tecnica​

Intenzioni di progettazione​

Questo pacchetto è progettato deliberatamente per essere allineato a Qiskit: si basa su un nucleo implementato in Rust e fornisce binding ufficiali per Python e C. La sua API intende stabilire parallelismi con Qiskit, in modo da integrarsi senza attriti nei flussi di lavoro degli utenti con esperienza nella programmazione con Qiskit.

Un principio fondamentale nella progettazione di qiskit-fermions è stato il disaccoppiamento della rappresentazione dei circuiti fermionici dalla loro forma qubitizzata. Più precisamente: i circuiti fermionici hanno significato di per sé e non richiedono una mappatura sullo spazio dei qubit per essere interpretabili. Inoltre, la rappresentazione dei circuiti fermionici non può fare alcuna ipotesi sulla codifica fermione-qubit applicata in seguito. Di conseguenza, sebbene Jordan-Wigner mantenga una posizione e un ruolo dominanti, non si assume che sia la codifica fermione-qubit _predefinita_.

Relazione con ffsim​

ffsim e qiskit-fermions si dividono il lavoro anziché sovrapporsi. ffsim gestisce gli operatori ansatz di alto livello e la loro simulazione veloce: costruisce un operatore UCJ o UCCSD a partire da ampiezze coupled-cluster o da un vettore di parametri, e simula stati fermionici in uno spazio compatto a numero di particelle fisso. qiskit-fermions gestisce il lato dei circuiti: esprime tale operatore come un FermionicCircuit su modi fermionici e lo traspila in un circuito di qubit tramite qualsiasi codifica fermione-qubit.

Quest'ultimo punto è il motivo per portare qui un operatore ffsim. I Gate Qiskit propri di ffsim sono specifici della trasformazione di Jordan-Wigner, quindi abbassare un ansatz tramite una codifica diversa (per esempio una codifica locale che scambia qubit con circuiti meno profondi) è ciò che questo pacchetto aggiunge. Viceversa, questo pacchetto non reimplementa la matematica dell'ansatz, quindi UCJ e UCC accettano direttamente un operatore ffsim come input.

Sul lato della simulazione, ffsim è il Backend. I Gate e gli operatori di questo pacchetto implementano i metodi di protocollo che le funzioni di simulazione di ffsim utilizzano (_apply_unitary_, _linear_operator_ e _trace_; vedi qiskit_fermions.protocols), quindi gli strumenti di ffsim funzionano su di essi in modo nativo, senza alcun passaggio di conversione. Costruire operatori, mapparli e traspilare i circuiti risultanti non richiede affatto ffsim.

Per il quadro completo, leggi la guida alla relazione con ffsim.

Problemi noti​

Finché la C API di Qiskit non avrà raggiunto la parità di funzionalità con la sua API Python, alcuni componenti di questo pacchetto resteranno esclusivi della sua API Python. Ciò include l'intera libreria di circuiti (qiskit_fermions.circuit) così come i pass del Transpiler (qiskit_fermions.transpiler).

Lavori futuri​

  • Migrare la libreria di circuiti e i pass del Transpiler nel nucleo Rust (e fornire una C API per interagire con essi)

  • Estendere la libreria di implementazioni efficienti di conversione degli operatori

  • Estendere la libreria di strutture dati efficienti per gli operatori

Contribuire​

Il codice sorgente è disponibile su GitHub.

La guida per sviluppatori si trova in CONTRIBUTING.md nella radice del repository di questo progetto. Partecipando, ti si chiede di rispettare il codice di condotta di Qiskit.

Citare questo pacchetto​

Se usi questo pacchetto nella tua ricerca, usa il file CITATION.bib nel repository di questo progetto per citare i riferimenti appropriati.

Licenza​

Apache License 2.0

Politica di deprecazione​

Questo pacchetto segue il versionamento semantico. Le modifiche incompatibili vengono apportate solo occasionalmente, per migliorare l'esperienza utente. Quando possibile, le vecchie interfacce vengono mantenute e contrassegnate come deprecate finché possono coesistere con quelle nuove. Ogni miglioramento sostanziale, modifica incompatibile o deprecazione è documentato nelle Note di rilascio.

Riferimenti​

[1]

Samuele Piccinelli, et al., Quantum chemistry with provable convergence via randomized sample-based Krylov quantum diagonalization, arXiv:2508.02578 [quant-ph].

[2]

Anthony Gandon, et al., Stabilizer-based quantum simulation of fermion dynamics with local qubit encodings, arXiv:2512.11418 [quant-ph].