Pular para o conteúdo principal
Este projeto está em fase beta. Encontrou um bug? Abra uma issue no GitHub. Tem uma pergunta ou ideia? Pergunte no Discussions — adoraríamos receber seu feedback!
Como está a qualidade da tradução nesta página?

Qiskit Fermions

qiskit-fermions estende o Qiskit SDK com ferramentas para trabalhar com sistemas fermiônicos. Dentro de seu escopo, ele oferece o seguinte:

  • Estruturas de dados eficientes para a representação e a manipulação de operadores fermiônicos em diferentes formas

  • Um framework para implementar métodos de conversão de operadores (incluindo codificações férmion-para-qubit)

  • Uma biblioteca de implementações eficientes de métodos de conversão comuns

  • Um framework e uma biblioteca de portas para expressar circuitos fermiônicos

  • Um pipeline de transpilação integrado ao processo do transpilador do Qiskit para sintetizar circuitos fermiônicos em circuitos baseados em qubits

Além disso, o qiskit-fermions se integra com outras ferramentas do ecossistema, como:

  • ffsim para os operadores de ansatz de alto nível e a simulação eficiente de circuitos fermiônicos (veja Relação com o ffsim)

Primeiros passos​

Schematic description of Qiskit Fermions

A descrição esquemática na imagem acima dá uma ideia da amplitude de recursos e do fluxo de trabalho geral que este pacote oferece. Você pode trabalhar no regime fermiônico, tanto com a representação de operadores quanto com a de circuitos, antes de definir uma codificação de férmion para qubit que se conecta ao pipeline de transpilação multirrepresentação do Qiskit.

Todos esses recursos são explicados em vários guias para ajudar você a começar. Para uma visão geral que percorre exatamente o pipeline mostrado acima, comece pelo guia do modelo de Fermi-Hubbard 1D.

Exemplos de casos de uso​

Componentes deste pacote foram usados em pesquisas relacionadas aos seguintes artigos:

  • A compilação aleatorizada de circuitos qDRIFT em [1].

  • A síntese de férmion para qubit durante o processo de transpilação em [2].

Discussão técnica​

Intenções de design​

Este pacote foi projetado deliberadamente para se alinhar ao Qiskit: ele se baseia em um núcleo implementado em Rust e oferece bindings oficiais para Python e C. Sua API procura traçar paralelos com o Qiskit para se integrar sem atritos aos fluxos de trabalho de quem tem experiência em programar com o Qiskit.

Um princípio central do design do qiskit-fermions foi o desacoplamento entre a representação fermiônica dos circuitos e a sua forma em qubits. Em termos mais precisos: os circuitos fermiônicos têm significado por si mesmos e não exigem um mapeamento para o espaço de qubits para serem interpretados. Além disso, a representação fermiônica do circuito não pode fazer suposições sobre a codificação de férmion para qubit aplicada depois. Consequentemente, embora Jordan-Wigner mantenha uma posição e um papel dominantes, ela não é presumida como a codificação de férmion para qubit _padrão_.

Relação com o ffsim​

O ffsim e o qiskit-fermions dividem o trabalho em vez de se sobrepor. O ffsim cuida dos operadores de ansatz de alto nível e da sua simulação rápida: ele constrói um operador UCJ ou UCCSD a partir de amplitudes de coupled-cluster ou de um vetor de parâmetros, e simula estados fermiônicos em um espaço compacto de número fixo de partículas. O qiskit-fermions cuida do lado dos circuitos: ele expressa esse operador como um FermionicCircuit sobre modos fermiônicos e o transpila para um circuito de qubits por meio de qualquer codificação de férmion para qubit.

Esse último ponto é o motivo para trazer um operador do ffsim para cá. As portas Qiskit do próprio ffsim são específicas da transformação de Jordan-Wigner, então reduzir um ansatz por meio de uma codificação diferente (uma codificação local que troca qubits por circuitos mais rasos, por exemplo) é o que este pacote acrescenta. Por outro lado, este pacote não reimplementa a matemática do ansatz, então UCJ e UCC aceitam um operador do ffsim diretamente como entrada.

No lado da simulação, o ffsim é o Backend. As portas e os operadores deste pacote implementam os métodos de protocolo que as funções de simulação do ffsim consomem (_apply_unitary_, _linear_operator_ e _trace_; veja qiskit_fermions.protocols), de modo que as ferramentas do ffsim funcionam com eles nativamente, sem etapa de conversão. Construir operadores, mapeá-los e transpilar os circuitos resultantes não exige o ffsim de forma alguma.

Para o quadro completo, leia o guia da relação com o ffsim.

Problemas conhecidos​

Enquanto a API C do Qiskit ainda não tiver atingido paridade de recursos com a sua API Python, alguns componentes deste pacote continuarão exclusivos da API Python também. Isso inclui toda a biblioteca de circuitos (qiskit_fermions.circuit), bem como os passes do transpilador (qiskit_fermions.transpiler).

Trabalhos futuros​

  • Migrar a biblioteca de circuitos e os passes do transpilador para o núcleo em Rust (e fornecer uma API C para interagir com eles)

  • Ampliar a biblioteca de implementações eficientes de conversão de operadores

  • Ampliar a biblioteca de estruturas de dados eficientes para operadores

Como contribuir​

O código-fonte está disponível no GitHub.

O guia do desenvolvedor está em CONTRIBUTING.md, na raiz do repositório deste projeto. Ao participar, espera-se que você respeite o código de conduta do Qiskit.

Como citar este pacote​

Se você usar este pacote em sua pesquisa, use o arquivo CITATION.bib do repositório deste projeto para citar a(s) referência(s) apropriada(s).

Licença​

Apache License 2.0

Política de descontinuação​

Este pacote segue o versionamento semântico. Mudanças incompatíveis são feitas apenas ocasionalmente, para melhorar a experiência de uso. Quando possível, as interfaces antigas são mantidas e marcadas como obsoletas pelo tempo em que puderem coexistir com as novas. Cada melhoria substancial, mudança incompatível ou descontinuação é documentada nas Notas de versão.

Referências​

[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].