Descripción general de la diagonalización cuántica basada en muestras (SQD)
La diagonalización cuántica basada en muestras (SQD, por sus siglas en inglés) es una técnica clásica de posprocesamiento que actúa sobre las muestras obtenidas de un circuito cuántico tras su ejecución en una QPU. Es útil para encontrar valores propios y vectores propios de operadores cuánticos, como el Hamiltoniano de un sistema cuántico, y combina la computación cuántica con la computación clásica distribuida. Esta técnica de posprocesamiento puede ser especialmente útil para usuarios que simulan sistemas químicos u otros sistemas cuánticos.
La computación clásica se utiliza para procesar las muestras obtenidas de un procesador cuántico, y para proyectar y diagonalizar un Hamiltoniano objetivo en un subespacio generado por ellas. Esto permite que SQD sea robusto frente a muestras corrompidas por ruido cuántico y que gestione Hamiltonianos grandes, como sistemas químicos con millones de términos en interacción, que están más allá del alcance de los métodos de diagonalización exacta.
La herramienta SQD puede trabajar con Hamiltonianos expresados como combinaciones lineales de operadores de Pauli u operadores fermiónicos de segunda cuantización. Las muestras de entrada se obtienen de circuitos cuánticos definidos por el usuario, que se considera que son buenas representaciones de los estados propios (por ejemplo, el estado base) de un operador objetivo. La tasa de convergencia de SQD en función del número de muestras mejora con la dispersión del estado propio objetivo.
Instalar el paquete SQD
Hay dos formas de instalar el paquete SQD: mediante PyPI o compilando desde el código fuente. Se recomienda instalar estos paquetes en un entorno virtual para garantizar la separación entre las dependencias de los paquetes.
Instalar desde PyPI
La forma más sencilla de instalar el paquete qiskit-addon-sqd es mediante PyPI.
pip install qiskit-addon-sqd
Compilar desde el código fuente
Haz clic aquí para leer cómo instalar este paquete manualmente
Si deseas contribuir a este paquete o quieres instalarlo manualmente, primero clona el repositorio:
git clone git@github.com:Qiskit/qiskit-addon-sqd.git
e instala el paquete mediante pip. El repositorio también contiene cuadernos de ejemplo que puedes ejecutar. Si planeas desarrollar en el repositorio, puedes instalar las dependencias de dev.
Ajusta las opciones según tus necesidades.
pip install tox notebook -e '.[notebook-dependencies, dev]'
Fundamentos teóricos
El flujo de trabajo de SQD con recuperación de configuración autocongruente se explica en detalle en [1]. Esta sección proporciona una descripción general de la técnica representada en el siguiente diagrama.

Aquí es un conjunto de muestras ruidosas que contienen, en el contexto del Hamiltoniano que se está simulando, configuraciones físicas y no físicas (representadas como cadenas de bits) obtenidas de la ejecución en una QPU. Las configuraciones no físicas se deben al ruido y pueden procesarse mediante el método sqd.configuration_recovery.recover_configurations() para refinar las muestras en un nuevo conjunto .
A partir de este conjunto, se recopilan lotes de configuraciones según una distribución proporcional a las frecuencias empíricas de cada en . Cada lote de configuraciones muestreadas abarca un subespacio, , en el que el Hamiltoniano se proyecta y diagonaliza:
donde es el Hamiltoniano de un subespacio dado.
El núcleo del flujo de trabajo de SQD reside aquí, donde se diagonaliza cada uno de estos Hamiltonianos de subespacio. Los estados base obtenidos de cada uno de estos subespacios, , se usan para producir una estimación de un vector de referencia de ocupaciones promediado sobre cada uno de los subespacios. A continuación, se genera un nuevo conjunto de configuraciones invirtiendo probabilísticamente bits individuales en función de esta ocupación promedio y del número total conocido de partículas (peso de Hamming) en el sistema. Este proceso de recuperación de configuración se repite preparando un nuevo conjunto de subespacios para diagonalizar, obteniendo nuevos estados propios y una nueva ocupación orbital promediada, y generando un nuevo conjunto de configuraciones. Este bucle se itera hasta que se cumple un criterio especificado por el usuario, y el proceso general es análogo al filtrado de una señal ruidosa para mejorar su fidelidad.
Próximos pasos
- Lee la página de introducción a SQD.
- Lee el tutorial sobre cómo mejorar la estimación de energía con SQD.
Referencias
[1] Robledo-Moreno, Javier, et al. "Chemistry beyond exact solutions on a quantum-centric supercomputer" arXiv preprint arXiv:2405.05068 (2024).