Diagonalización cuántica basada en muestras (SQD)
Este paquete implementa la diagonalización cuántica basada en muestras (SQD), una técnica para encontrar autovalores y autovectores de operadores cuánticos, como el hamiltoniano de un sistema cuántico [1–6]. Puede abordar hamiltonianos expresados como combinaciones lineales de operadores de Pauli o de operadores fermiónicos en segunda cuantización. Los flujos de trabajo basados en SQD se pueden ejecutar en computadores cuánticos actuales y se ha demostrado que escalan a tamaños de problema más allá de lo que era posible con métodos variacionales, e incluso más allá del alcance de los métodos exactos de diagonalización clásica.
Los flujos de trabajo basados en SQD implican primero preparar uno o más estados cuánticos en un dispositivo cuántico y muestrearlos. Después, se usa computación distribuida clásica para procesar esas muestras ruidosas. Este procesamiento ocurre de forma iterativa en dos pasos: primero, un paso de recuperación de configuraciones corrige las muestras ruidosas usando información sobre el problema de entrada; segundo, el hamiltoniano se proyecta y se diagonaliza en el subespacio generado por esas muestras. Estos pasos se repiten de forma autoconsistente hasta la convergencia. El resultado es una aproximación del menor autovalor (energía) y del estado propio de menor energía de un hamiltoniano dado. SQD es robusto frente a muestras corrompidas por ruido cuántico; de hecho, siempre que se pueda extraer una señal útil del computador cuántico, el resultado de SQD será insensible a las cadenas de bits ruidosas.
qiskit-addon-sqd se puede usar en la práctica para procesar clásicamente muestras extraídas de una variedad de circuitos cuánticos. Por ejemplo:
- Un ansatz de circuito variacional con parámetros elegidos de modo que muestrear el circuito produzca configuraciones electrónicas en las que la función de onda objetivo (por ejemplo, el estado fundamental) tenga soporte significativo. Esto resulta atractivo para aplicaciones de química donde los hamiltonianos pueden tener millones de términos de interacción [1]. Para un ejemplo de este enfoque aplicado a la química con un circuito LUCJ, consulta el tutorial para aproximar la energía del estado fundamental de la molécula de N2.
- Se prepara un conjunto de estados de la base de Krylov en intervalos de tiempo crecientes. Suponiendo un buen estado inicial y dispersión del estado fundamental, se ha demostrado que este enfoque converge de manera eficiente. Como hay que preparar circuitos de evolución temporal trotterizada en un dispositivo cuántico, este enfoque es ideal para aplicaciones a modelos de red [2] en lugar de hamiltonianos complejos de muchos cuerpos como los de la química cuántica. Para un ejemplo de este enfoque aplicado a hamiltonianos de red fermiónicos, consulta el tutorial para aproximar la energía del estado fundamental de un modelo de Anderson de una sola impureza simplificado.
- Un conjunto de estados de la base de Krylov implementados con compilación aleatorizada qDRIFT del operador de evolución temporal. Este enfoque produce circuitos de menor profundidad que las descomposiciones basadas en Trotter de la evolución temporal y, por tanto, se puede usar para hamiltonianos de química cuántica. Esta técnica se ha aplicado a la energía del estado fundamental de hidrocarburos aromáticos policíclicos [6].
Primeros pasos
Una guía sencilla para ayudarte a empezar rápidamente con este paquete está disponible en la guía de inicio rápido.
Ejemplos de casos de uso
La técnica de diagonalización cuántica basada en muestras se puede usar para implementar un conjunto diverso de flujos de trabajo. Algunos ejemplos de dónde se ha usado incluyen:
-
Cálculos de estructura electrónica de las energías del estado fundamental de cúmulos de hierro-azufre
-
Estimación de energías del estado fundamental para predecir bandas prohibidas de dieléctricos
-
Estimación de estados excitados moleculares de baja energía
-
Simulación de interacciones entre moléculas
-
Estudio de interacciones soluto-disolvente en simulaciones de estructura electrónica
-
Análisis de capa abierta de la disociación molecular
-
Modelado de rutas de reacción para problemas de fotoquímica
-
Combinación con entanglement forging para estudiar rutas de reacción de degradación de materiales mediante abstracción de hidrógeno
-
Construcción de subespacios a partir de estados base de Krylov cuánticos para realizar simulaciones del estado fundamental de modelos de impurezas en sistemas fermiónicos
-
Uso de la compilación aleatorizada qDRIFT para reducir el coste de implementar estados base de Krylov para Hamiltonianos químicos y con aplicación a una molécula que presenta una topología electrónica de semi-Möbius
-
Uso de SQD como solucionador en el contexto de métodos de incrustación y fragmentación para sistemas moleculares, por ejemplo para calcular energías de anillos de hidrógeno y ciclohexano y de complejos bi- y trimetálicos, estudiar la reacción de reducción de oxígeno, estimar energías de proteínas y de complejos proteína-ligando, y predecir la especiación del tritio.
Discusión técnica
Tamaños de sistema y requisitos computacionales
El coste computacional de SQD está dominado por las llamadas al solucionador de estados propios. En cada paso de la iteración de recuperación autoconsistente de configuraciones se realizan n_batches llamadas al solucionador de estados propios. Las distintas llamadas son trivialmente paralelizables. En este tutorial, esas llamadas están dentro de un bucle for. Se recomienda encarecidamente realizar estas llamadas en paralelo.
La función qiskit_addon_sqd.fermion.solve_fermion() es multihilo y es capaz de manejar sistemas con ~25 orbitales espaciales y ~10 electrones con dimensiones de subespacio de ~$10^7$, usando ~10-30 núcleos.
Elección de las dimensiones del subespacio
La elección de la dimensión del subespacio afecta a la precisión y al tiempo de ejecución del solucionador de estados propios. Cuanto mayor es el subespacio, más precisos son los cálculos, a costa de aumentar el tiempo de ejecución y los requisitos de memoria. Se desconoce el tamaño óptimo del subespacio para un sistema dado; por ello, se puede realizar un estudio de convergencia con la dimensión del subespacio, como se describe en esta guía.
Acotación de la dimensión del subespacio
El argumento samples_per_batch de qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() establece el número de cadenas de bits contenidas en cada lote y, de este modo, controla la dimensión del subespacio de forma indirecta: en el caso de las aplicaciones de química cuántica, su valor fija una cota superior para la dimensión del subespacio. La dimensión que resulta realmente depende de cuántas de las cadenas de bits muestreadas son distintas, y crece a lo largo de las iteraciones de recuperación autoconsistente de configuraciones, por lo que no se conoce de antemano. Consulta este ejemplo para más detalles.
El argumento max_dim de la misma función acota la dimensión directamente, limitando el número de cadenas CI que se conservan en cada sector de espín. Dado que el subespacio está generado por el producto cartesiano de los dos sectores de espín, max_dim=d limita la dimensión del subespacio a d**2, mientras que una tupla max_dim=(d_a, d_b) limita por separado los sectores de espín alfa y espín beta, acotando la dimensión del subespacio a d_a * d_b (con symmetrize_spin=True, los dos límites deben ser iguales). Cuando un lote produce más cadenas CI de las que permite el límite, se conservan de forma preferente las cadenas solicitadas mediante include_configurations y las arrastradas de la iteración anterior, y los espacios restantes se rellenan con las cadenas muestreadas con más frecuencia. Dado que limita el tamaño de la mayor diagonalización que se le pedirá realizar al solucionador de estados propios, max_dim es una forma cómoda de mantener el solucionador dentro de un presupuesto de tiempo de ejecución y de memoria. Consulta esta guía para más detalles.
Solucionadores
Los pasos de proyección y diagonalización los realiza un solucionador clásico. Aquí proporcionamos dos solucionadores genéricos, uno para sistemas fermiónicos y otro para sistemas de qubits. Los usuarios pueden conectar otros solucionadores que podrían ser más eficientes para sistemas específicos.
Trim SQD
El SQD estándar diagonaliza cada lote submuestreado de forma independiente y conserva el mejor resultado, por lo que el número de configuraciones que puede considerar está limitado a lo que cabe en un único subespacio asequible. Trim SQD, en cambio, divide las cadenas de bits en lotes, realiza una diagonalización intermedia de cada lote y después realiza una diagonalización mayor usando los determinantes de mayor peso de cada partición. Este método se basa en una investigación conjunta de la Cleveland Clinic Foundation, RIKEN e IBM [7], y se puede habilitar pasando un objeto TrimPolicy a la función diagonalize_fermionic_hamiltonian().
Contribuir
El código fuente está disponible en GitHub.
La guía para desarrolladores se encuentra en CONTRIBUTING.md, en la raíz del repositorio de este proyecto. Al participar, se espera que respetes el código de conducta de Qiskit.
Usamos GitHub issues para hacer seguimiento de solicitudes y errores.
Cómo citar este paquete
Si usas este paquete en tu investigación, utiliza el archivo CITATION.bib del repositorio de este proyecto para citar la(s) referencia(s) adecuada(s).
Agradecimientos
Este paquete incluye una estrategia de muestreo opcional dentro del bucle de recuperación autoconsistente de configuraciones que recorta determinantes en función de los resultados de la diagonalización intermedia. La implementación se basa en una investigación conjunta de la Cleveland Clinic Foundation, RIKEN e IBM. Si usas esta funcionalidad en tu investigación, utiliza también la cita del artículo, que se encuentra en el archivo CITATION.bib con la clave de cita merz2026crossing. Se espera que pronto esté disponible en GitHub una implementación del flujo de trabajo completo de ese artículo.
Licencia
Política de obsolescencia
Seguimos el versionado semántico. Ocasionalmente podemos introducir cambios incompatibles para mejorar la experiencia de usuario. Cuando sea posible, mantendremos las interfaces antiguas y las marcaremos como obsoletas, siempre que puedan coexistir con las nuevas. Cada mejora sustancial, cambio incompatible u obsolescencia quedará documentado en las notas de la versión.
Referencias
-
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].