Diagonalização quântica baseada em amostras (SQD)
Este pacote implementa a diagonalização quântica baseada em amostras (SQD), uma técnica para encontrar autovalores e autovetores de operadores quânticos, como o Hamiltoniano de um sistema quântico [1–6]. Ela pode ter como alvo Hamiltonianos expressos como combinações lineares de operadores de Pauli ou de operadores fermiônicos em segunda quantização. Fluxos de trabalho baseados em SQD podem ser executados em computadores quânticos atuais e já mostraram escalar para tamanhos de problema além do que era possível com métodos variacionais, e até além do alcance de métodos clássicos exatos de diagonalização.
Fluxos de trabalho baseados em SQD envolvem primeiro preparar um ou mais estados quânticos em um dispositivo quântico e amostrá-los. Em seguida, a computação clássica distribuída é usada para processar essas amostras ruidosas. Esse processamento ocorre iterativamente em duas etapas: primeiro, uma etapa de recuperação de configuração corrige as amostras ruidosas usando informações sobre o problema de entrada; depois, o Hamiltoniano é projetado e diagonalizado no subespaço gerado por essas amostras. Essas etapas são repetidas de forma autoconsistente até a convergência. O resultado é uma aproximação do menor autovalor (energia) e do autoestado de menor energia de um dado Hamiltoniano. O SQD é robusto a amostras corrompidas por ruído quântico; de fato, desde que um sinal útil possa ser extraído do computador quântico, o resultado do SQD será insensível a bitstrings ruidosas.
Na prática, o qiskit-addon-sqd pode ser usado para processar classicamente amostras obtidas de uma variedade de circuitos quânticos. Por exemplo:
- Um ansatz de circuito variacional com parâmetros escolhidos de modo que a amostragem do circuito produza configurações eletrônicas nas quais a função de onda alvo (por exemplo, o estado fundamental) tenha suporte significativo. Isso é atraente para aplicações em química, onde os Hamiltonianos podem ter milhões de termos de interação [1]. Para um exemplo dessa abordagem aplicada à química usando um circuito LUCJ, consulte o tutorial para aproximar a energia do estado fundamental da molécula de N2.
- Um conjunto de estados da base de Krylov é preparado ao longo de intervalos de tempo crescentes. Supondo um bom estado inicial e a esparsidade do estado fundamental, está provado que essa abordagem converge de forma eficiente. Como é preciso preparar circuitos de evolução temporal trotterizada em um dispositivo quântico, essa abordagem é mais adequada para aplicações a modelos de rede [2] do que a Hamiltonianos complexos de muitos corpos, como os da química quântica. Para um exemplo dessa abordagem aplicada a Hamiltonianos de rede fermiônicos, consulte o tutorial para aproximar a energia do estado fundamental de um modelo de Anderson de impureza única simplificado.
- Um conjunto de estados da base de Krylov implementados com compilação aleatorizada qDRIFT do operador de evolução temporal. Essa abordagem produz circuitos de menor profundidade em comparação com as decomposições baseadas em Trotter da evolução temporal e, por isso, pode ser usada para Hamiltonianos de química quântica. Essa técnica foi aplicada à energia do estado fundamental de hidrocarbonetos aromáticos policíclicos [6].
Primeiros passos
Um guia simples para ajudar você a começar rapidamente com este pacote está disponível no guia de início rápido.
Exemplos de casos de uso
A técnica de diagonalização quântica baseada em amostras pode ser usada para implementar um conjunto diversificado de fluxos de trabalho. Alguns exemplos de onde ela foi usada incluem:
-
Cálculos de estrutura eletrônica das energias do estado fundamental de clusters de ferro-enxofre
-
Estimativa de energias do estado fundamental para prever band gaps de dielétricos
-
Estimativa de estados excitados moleculares de baixa energia
-
Simulação de interações entre moléculas
-
Estudo de interações soluto-solvente em simulações de estrutura eletrônica
-
Análise de camada aberta da dissociação molecular
-
Modelagem de caminhos de reação para problemas de fotoquímica
-
Combinação com entanglement forging para estudar caminhos de reação na degradação de materiais por meio de abstração de hidrogênio
-
Construção de subespaços a partir de estados da base de Krylov quântica para realizar simulações do estado fundamental de modelos de impureza em sistemas fermiônicos
-
Uso da compilação aleatorizada qDRIFT para reduzir o overhead de implementar estados da base de Krylov para Hamiltonianos de química e com aplicação a uma molécula que apresenta uma topologia eletrônica de meio Möbius
-
Uso do SQD como solver no contexto de métodos de embedding e fragmentação para sistemas moleculares, por exemplo para calcular energias de anéis de hidrogênio e ciclo-hexano e de complexos bi e trimetálicos, estudar a reação de redução de oxigênio, estimar energias de proteínas e complexos proteína-ligante, e prever a especiação do trítio.
Discussão técnica
Tamanhos de sistema e requisitos computacionais
O custo computacional do SQD é dominado pelas chamadas ao solver de autoestados. Em cada passo da iteração de recuperação de configurações autoconsistente, são realizadas n_batches chamadas ao solver de autoestados. As diferentes chamadas são embaraçosamente paralelas. Neste tutorial, essas chamadas ficam dentro de um laço for. É altamente recomendável executar essas chamadas em paralelo.
A função qiskit_addon_sqd.fermion.solve_fermion() é multithread e capaz de lidar com sistemas com ~25 orbitais espaciais e ~10 elétrons, com dimensões de subespaço de ~$10^7$, usando ~10-30 núcleos.
Escolhendo as dimensões do subespaço
A escolha da dimensão do subespaço afeta a precisão e o tempo de execução do solver de autoestados. Quanto maior o subespaço, mais precisa é a computação, ao custo de maior tempo de execução e maiores requisitos de memória. O tamanho ótimo do subespaço de um dado sistema não é conhecido; por isso, pode-se realizar um estudo de convergência com a dimensão do subespaço, como descrito neste guia.
Limitando a dimensão do subespaço
O argumento samples_per_batch de qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() define o número de bitstrings contidas em cada lote e, assim, controla a dimensão do subespaço de forma indireta: em aplicações de química quântica, seu valor define um limite superior para a dimensão do subespaço. A dimensão que de fato resulta depende de quantas das bitstrings amostradas são distintas e cresce ao longo das iterações de recuperação de configurações autoconsistente, portanto não é conhecida de antemão. Veja este exemplo para mais detalhes.
O argumento max_dim da mesma função limita a dimensão diretamente, restringindo o número de strings CI retidas em cada setor de spin. Como o subespaço é gerado pelo produto cartesiano dos dois setores de spin, max_dim=d limita a dimensão do subespaço a d**2, enquanto uma tupla max_dim=(d_a, d_b) limita separadamente os setores de spin alfa e spin beta, limitando a dimensão do subespaço a d_a * d_b (com symmetrize_spin=True, os dois limites precisam ser iguais). Quando um lote produz mais strings CI do que o limite permite, as strings solicitadas por meio de include_configurations e aquelas trazidas da iteração anterior são retidas com preferência, e as vagas restantes são preenchidas com as strings amostradas com mais frequência. Como limita o tamanho da maior diagonalização que o solver de autoestados terá de realizar, max_dim é uma forma conveniente de manter o solver dentro de um orçamento de tempo de execução e memória. Veja este guia para mais detalhes.
Solucionadores
As etapas de projeção e diagonalização são realizadas por um solver clássico. Fornecemos aqui dois solvers genéricos, um para sistemas fermiônicos e outro para sistemas de qubits. Outros solvers que possam ser mais eficientes para sistemas específicos podem ser integrados pelos usuários.
Trim SQD
O SQD padrão diagonaliza cada lote subamostrado de forma independente e mantém o melhor resultado, de modo que o número de configurações que ele pode considerar fica limitado ao que um único subespaço viável comporta. O Trim SQD, em vez disso, divide as bitstrings em lotes, realiza uma diagonalização intermediária de cada lote e depois realiza uma diagonalização maior usando os determinantes de maior peso de cada partição. Este método se baseia em uma pesquisa conjunta da Cleveland Clinic Foundation, do RIKEN e da IBM [7], e pode ser ativado passando um objeto TrimPolicy para a função diagonalize_fermionic_hamiltonian().
Contribuindo
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.
Usamos as issues do GitHub para rastrear solicitações e bugs.
Citando este pacote
Se você usar este pacote em sua pesquisa, use o arquivo CITATION.bib no repositório deste projeto para citar a(s) referência(s) apropriada(s).
Agradecimentos
Este pacote inclui uma estratégia de amostragem opcional dentro do laço de recuperação de configurações autoconsistente, que elimina determinantes com base nos resultados da diagonalização intermediária. A implementação se baseia em uma pesquisa conjunta da Cleveland Clinic Foundation, do RIKEN e da IBM. Se você usar este recurso em sua pesquisa, use também a citação do artigo, que pode ser encontrada no arquivo CITATION.bib com a chave de citação merz2026crossing. Espera-se que uma implementação do fluxo de trabalho completo desse artigo esteja disponível no GitHub em breve.
Licença
Política de descontinuação
Seguimos o versionamento semântico. Ocasionalmente, podemos fazer mudanças incompatíveis para melhorar a experiência do usuário. Quando possível, manteremos as interfaces antigas e as marcaremos como descontinuadas, desde que possam coexistir com as novas. Cada melhoria substancial, mudança incompatível ou descontinuação será documentada nas notas de versão.
Referências
-
Javier Robledo-Moreno, et al., Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer, arXiv:2405.05068 [quant-ph].
-
Jeffery Yu, et al., Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization, arXiv:2501.09702 [quant-ph].
-
Keita Kanno, et al., Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers, arXiv:2302.11320 [quant-ph].
-
Kenji Sugisaki, et al., Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer, arXiv:2412.07218 [quant-ph].
-
Mathias Mikkelsen, Yuya O. Nakagawa, Quantum-selected configuration interaction with time-evolved state, arXiv:2412.13839 [quant-ph].
-
Samuele Piccinelli, et al., Quantum chemistry with provable convergence via randomized sample-based Krylov quantum diagonalization, arXiv:2508.02578 [quant-ph].
-
Kenneth M. Merz Jr., et al., Crossing the 12,000-atom barrier with heterogeneous quantum-classical supercomputing: quantum chemistry of protein-ligand complexes, arXiv:2605.01138 [quant-ph].