Diagonalización cuántica de Krylov
En esta lección sobre la diagonalización cuántica de Krylov (KQD) responderemos las siguientes preguntas:
- ¿Qué es el método de Krylov, en general?
- ¿Por qué funciona el método de Krylov y bajo qué condiciones?
- ¿Qué papel juega la computación cuántica?
La parte cuántica de los cálculos se basa principalmente en el trabajo de la Ref [1].
El video a continuación ofrece una visión general de los métodos de Krylov en la computación clásica, motiva su uso y explica cómo la computación cuántica puede desempeñar un papel en ese flujo de trabajo. El texto posterior ofrece más detalles e implementa un método de Krylov tanto de forma clásica como usando un computador cuántico.
1. Introducción a los métodos de Krylov
Un método de subespacios de Krylov puede referirse a cualquiera de varios métodos construidos alrededor de lo que se denomina el subespacio de Krylov. Una revisión completa de estos métodos queda fuera del alcance de esta lección, pero las Refs [2-4] ofrecen una base mucho más completa. Aquí nos centraremos en qué es un subespacio de Krylov, cómo y por qué resulta útil para resolver problemas de valores propios, y finalmente cómo puede implementarse en un computador cuántico.
Definición: Dada una matriz simétrica y semidefinida positiva , el espacio de Krylov de orden es el espacio generado por los vectores obtenidos al multiplicar potencias crecientes de la matriz , hasta , con un vector de referencia .
Aunque los vectores anteriores generan lo que llamamos un subespacio de Krylov, no hay razón para pensar que serán ortogonales. Frecuentemente se utiliza un proceso iterativo de ortonormalización similar a la ortogonalización de Gram-Schmidt. Aquí el proceso es ligeramente diferente: cada nuevo vector se hace ortogonal a los demás a medida que se genera. En este contexto, esto se denomina iteración de Arnoldi. Partiendo del vector inicial , se genera el siguiente vector y luego se asegura que este segundo vector sea ortogonal al primero restando su proyección sobre . Es decir:
Ahora es fácil ver que ya que
Hacemos lo mismo para el siguiente vector, asegurándonos de que sea ortogonal a los dos anteriores:
Si repetimos este proceso para los vectores, tenemos una base ortonormal completa para un espacio de Krylov. Nótese que el proceso de ortogonalización dará cero en cuanto , ya que vectores ortogonales necesariamente abarcan el espacio completo. El proceso también dará cero si algún vector es un vector propio de , ya que todos los vectores siguientes serán múltiplos de ese vector.
1.1 Un ejemplo sencillo: Krylov a mano
Repasemos paso a paso la generación de un subespacio de Krylov sobre una matriz trivialmente pequeña, para poder ver el proceso en detalle. Comenzamos con una matriz inicial de nuestro interés:
Para este pequeño ejemplo, podemos determinar los vectores propios y los valores propios fácilmente incluso a mano. Aquí mostramos la solución numérica.
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-ibm-runtime scipy sympy
# One might use linalg.eigh here, but later matrices may not be Hermitian. So we use linalg.eig in this lesson.
import numpy as np
A = np.array([[4, -1, 0], [-1, 4, -1], [0, -1, 4]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print("The eigenvalues are ", eigenvalues)
print("The eigenvectors are ", eigenvectors)
The eigenvalues are [2.58578644 4. 5.41421356]
The eigenvectors are [[ 5.00000000e-01 -7.07106781e-01 5.00000000e-01]
[ 7.07106781e-01 1.37464400e-16 -7.07106781e-01]
[ 5.00000000e-01 7.07106781e-01 5.00000000e-01]]
Los registramos aquí para comparación posterior:
Nos gustaría estudiar cómo funciona este proceso (o falla) a medida que aumentamos la dimensión de nuestro subespacio de Krylov, . Con este fin, aplicaremos el siguiente proceso:
- Generar un subespacio del espacio vectorial completo comenzando con un vector elegido aleatoriamente (llamarlo si ya está normalizado, como arriba).
- Proyectar la matriz completa sobre ese subespacio y encontrar los valores propios de esa matriz proyectada .
- Aumentar el tamaño del subespacio generando más vectores, asegurando que sean ortonormales, usando un proceso similar a la ortogonalización de Gram-Schmidt.
- Proyectar sobre el subespacio más grande y encontrar los valores propios de la matriz resultante .
- Repetir hasta que los valores propios converjan (o en este caso de juguete, hasta haber generado vectores que abarquen el espacio vectorial completo de la matriz original ).
Una implementación normal del método de Krylov no necesitaría resolver el problema de valores propios para la matriz proyectada sobre cada subespacio de Krylov a medida que se construye. Podrías construir el subespacio de la dimensión deseada, proyectar la matriz sobre ese subespacio y diagonalizar la matriz proyectada. Proyectar y diagonalizar en cada dimensión del subespacio solo se hace para verificar la convergencia.
Dimensión :
Elegimos un vector aleatorio, digamos
Si aún no está normalizado, normalízalo.
Ahora proyectamos nuestra matriz sobre el subespacio de este único vector:
Esta es nuestra proyección de la matriz sobre el subespacio de Krylov cuando solo contiene un único vector, . El valor propio de esta matriz es trivialmente 4. Podemos pensar en esto como nuestra estimación de orden cero de los valores propios (en este caso solo uno) de . Aunque es una estimación pobre, es del orden de magnitud correcto.
Dimensión :
Ahora generamos el siguiente vector en nuestro subespacio mediante la operación de sobre el vector anterior:
Ahora restamos la proyección de este vector sobre nuestro vector anterior para garantizar la ortogonalidad.
Si aún no está normalizado, normalízalo. En este caso, el vector ya estaba normalizado, por lo que
Ahora proyectamos nuestra matriz A sobre el subespacio de estos dos vectores:
Aún nos queda el problema de determinar los valores propios de esta matriz. Pero esta matriz es ligeramente más pequeña que la matriz completa. En problemas con matrices muy grandes, trabajar con este subespacio más pequeño puede ser muy ventajoso.
Aunque esta sigue siendo una estimación pobre, es mejor que la de orden cero. Llevaremos esto a cabo una iteración más para asegurarnos de que el proceso queda claro. Sin embargo, esto socava el propósito del método, ya que terminaremos diagonalizando una matriz 3x3 en la siguiente iteración, lo que significa que no hemos ahorrado tiempo ni potencia computacional.
Dimensión :
Ahora generamos el siguiente vector en nuestro subespacio mediante la operación de A sobre el vector anterior:
Ahora restamos la proyección de este vector sobre ambos vectores anteriores para garantizar la ortogonalidad.
Si aún no está normalizado, normalízalo. En este caso, el vector ya estaba normalizado, por lo que
Ahora proyectamos nuestra matriz sobre el subespacio de estos vectores:
Ahora determinamos los valores propios:
Estos valores propios son exactamente los valores propios de la matriz original . Esto debe ser así, ya que hemos expandido nuestro subespacio de Krylov para abarcar el espacio vectorial completo de la matriz original .
En este ejemplo, el método de Krylov puede no parecer particularmente más sencillo que la diagonalización directa. De hecho, como veremos en secciones posteriores, el método de Krylov solo es ventajoso por encima de cierta dimensión de la matriz; está pensado para ayudarnos a resolver problemas de valores/vectores propios de matrices extremadamente grandes.

Este es el único ejemplo que mostraremos resuelto "a mano", pero la sección 2 a continuación muestra ejemplos computacionales.
Aclaración de términos
Un malentendido común es que solo existe un único subespacio de Krylov para un problema dado. Pero, por supuesto, dado que hay muchos vectores iniciales a los que podría aplicarse nuestra matriz, existen muchos subespacios de Krylov posibles. Solo usaremos la expresión "el subespacio de Krylov" para referirnos a un subespacio de Krylov específico ya definido para un ejemplo concreto. Para enfoques generales de resolución de problemas, nos referiremos a "un subespacio de Krylov". Una última aclaración es que también es válido hablar de un "Krylov espacio". Con frecuencia se le llama "Krylov subespacio" por su uso en el contexto de proyectar matrices de un espacio inicial a un subespacio. Siguiendo ese contexto, aquí lo llamaremos principalmente subespacio.
Comprueba tu comprensión
Lee las preguntas a continuación, piensa en tu respuesta y luego haz clic en el triángulo para revelar cada solución.
Explica por qué no es (a) útil, ni (b) posible, extender la dimensión del subespacio de Krylov más allá de la dimensión de la matriz de interés.
Respuesta:
(a) Como estamos ortonormalizando los vectores a medida que los producimos, un conjunto de tales vectores formará una base completa, lo que significa que cualquier combinación lineal de ellos puede usarse para crear cualquier vector en el espacio. (b) El proceso de ortogonalización consiste en restar la proyección de un nuevo vector sobre todos los vectores anteriores. Si todos los vectores anteriores abarcan el espacio vectorial completo, restar las proyecciones sobre el subespacio completo siempre nos dejará con un vector nulo.
Supongamos que un colega investigador está demostrando el método de Krylov aplicado a una pequeña matriz de juguete ante algunos colegas. Este investigador planea usar la matriz y el vector inicial:
y
¿Hay algo incorrecto en esto? ¿Cómo aconsejarías a tu colega?
Respuesta:
Tu colega ha elegido accidentalmente un vector propio como vector inicial. Al actuar con la matriz sobre el vector inicial simplemente se devuelve el mismo vector escalado por el valor propio. Esto no generará un subespacio de dimensión creciente. Aconseja a tu colega que elija un vector inicial diferente, asegurándose de que no sea un vector propio.
Aplica el método de Krylov a la matriz a continuación, seleccionando un nuevo vector inicial apropiado. Escribe las estimaciones del valor propio mínimo en el orden 0 y el orden 1 de tu subespacio de Krylov.
Respuesta:
Hay muchas respuestas posibles dependiendo de la elección del vector inicial. Elegiremos:
Para obtener aplicamos una vez a , y luego hacemos ortogonal a
En el orden 0, la proyección sobre nuestro subespacio de Krylov es
En el orden 1, la proyección sobre este subespacio de Krylov es
Esto puede hacerse a mano, pero se hace más fácilmente con numpy:
import numpy as np
vstar = np.array([[1/np.sqrt(3),1/np.sqrt(3),1/np.sqrt(3)],[-1/np.sqrt(6),np.sqrt(2/3),-1/np.sqrt(6)]]
)
A = np.array([[1, 1, 0],
[1, 1, 1],
[0, 1, 1]])
v = np.array([[1/np.sqrt(3),-1/np.sqrt(6)],[1/np.sqrt(3),np.sqrt(2/3)],[1/np.sqrt(3),-1/np.sqrt(6)]])
proj = vstar@A@v
print(proj)
eigenvalues, eigenvectors = np.linalg.eig(proj)
print("The eigenvalues are ", eigenvalues)
print("The eigenvectors are ", eigenvectors)
outputs:
[[ 2.33333333 0.47140452]
[ 0.47140452 -0.33333333]]
The eigenvalues are [ 2.41421356 -0.41421356]
The eigenvectors are [[ 0.98559856 -0.16910198]
[ 0.16910198 0.98559856]]
La estimación del valor propio mínimo es -0,414.
1.2 Tipos de métodos de Krylov
Los "métodos de subespacios de Krylov" pueden referirse a cualquiera de varias técnicas iterativas usadas para resolver grandes sistemas lineales y problemas de valores propios. Lo que todos tienen en común es que construyen una solución aproximada a partir de un subespacio de Krylov
donde es la estimación inicial (véase la Ref [5]). Se diferencian en cómo eligen la mejor aproximación de este subespacio, equilibrando factores como la tasa de convergencia, el uso de memoria y el costo computacional total. El foco de esta lección es aprovechar la computación cuántica en el contexto de los métodos de subespacios de Krylov; una discusión exhaustiva de estos métodos queda fuera de su alcance. Las breves definiciones a continuación son solo para contexto e incluyen algunas referencias para investigar estos métodos con más profundidad.
El método del gradiente conjugado (CG): Este método se usa para resolver sistemas lineales simétricos y definidos positivos[6]. Minimiza la norma-A del error en cada iteración, haciéndolo particularmente eficaz para sistemas que surgen de EDPs elípticas discretizadas[7]. Usaremos este enfoque en la siguiente sección para motivar por qué un subespacio de Krylov sería un subespacio eficaz en el que buscar soluciones mejoradas a sistemas lineales.
El método del residuo mínimo generalizado (GMRES): Está diseñado para resolver sistemas lineales generales no simétricos. Minimiza la norma del residuo sobre un espacio de Krylov en cada iteración, haciéndolo robusto pero potencialmente intensivo en memoria para sistemas grandes[7].
El método del residuo mínimo (MINRES): Este método se usa para resolver sistemas lineales simétricos indefinidos. Es similar a GMRES pero aprovecha la simetría de la matriz para reducir el costo computacional[8].
Otros enfoques destacados incluyen el método de ortogonalización completa (FOM), estrechamente relacionado con el método de Arnoldi para problemas de valores propios, el método del gradiente bi-conjugado (BiCG) y el método de reducción de dimensión inducida (IDR).
1.3 Por qué funciona el método del subespacio de Krylov
Aquí motivaremos que el método del subespacio de Krylov debería ser una forma eficiente de aproximar los valores propios de una matriz mediante el refinamiento iterativo de las aproximaciones de los vectores propios, a través de la perspectiva del descenso más pronunciado. Argumentaremos que dada una estimación inicial del estado fundamental, el espacio de correcciones sucesivas a esa estimación inicial que produce la convergencia más rápida es un subespacio de Krylov. No llegamos hasta una demostración rigurosa del comportamiento de convergencia.
Asumamos que nuestra matriz de interés es simétrica y definida positiva. Esto hace que nuestro argumento sea más relevante para el método CG anterior. No hacemos suposiciones sobre la esparsidad aquí; ni tampoco afirmamos que deba ser hermítica (lo cual necesita ser si es un hamiltoniano).
Típicamente deseamos resolver un problema de la forma
Uno podría imaginar que donde es alguna constante, como en un problema de valores propios. Pero nuestro enunciado del problema sigue siendo más general por ahora.
Comenzamos con un vector que es una solución aproximada. Aunque hay paralelismos entre esta estimación y en la Sección 1.1, no los aprovechamos aquí. Nuestra estimación tiene un error, que llamamos
También definimos el residuo
Aquí usamos mayúscula para distinguir el residuo de la dimensión de nuestro subespacio de Krylov .

Ahora queremos dar un paso de corrección de la forma
que esperamos que mejore nuestra aproximación. Aquí es algún vector aún por determinar. Sea el error después de que se realiza la corrección. Entonces

Nos interesa cómo se comporta nuestro error cuando es transformado por nuestra matriz. Así que calculemos la norma- del error. Esto es