Skip to main content
IBM Quantum Platform

Diagonalización cuántica basada en muestras (SQD)

La diagonalización cuántica basada en muestras (SQD) combina el álgebra lineal clásica y la potencia de la computación cuántica para diagonalizar un hamiltoniano (matriz) y calcular sus valores y vectores propios. La diagonalización de matrices es una operación matemática importante, ya que muchos problemas científicos, computacionales y de optimización utilizan este método.

El siguiente vídeo ofrece una visión general del SQD, qué determina su utilidad y qué lo hace más rápido que muchos otros enfoques. El texto siguiente ofrece más detalles.


1. Introducción y motivación

Consideremos, por ejemplo, la ecuación de valores propios de la energía, famosa por Schrödinger.

Hψ=EψH \vert \psi \rangle = E \vert \psi \rangle

HH es el Hamiltoniano de un sistema, ψ|\psi\rangle es la función de onda (también conocida como estado propio), y EE es un valor propio. Los valores propios de la matriz HH representan los niveles de energía del sistema. Por ejemplo, si el sistema es una molécula, el valor propio más bajo representa la energía de estado básico de la molécula. En muchos problemas, estamos interesados en la estimación de la energía del estado básico.

Aplicando las técnicas de diagonalización exacta del álgebra lineal, podemos diagonalizar la matriz HH completa. Sin embargo, este enfoque se vuelve costoso (incluso imposible) a medida que la matriz aumenta de tamaño. Por ejemplo, incluso para moléculas químicas pequeñas, HH puede ser prohibitivamente grande (por ejemplo, el Hamiltoniano para la molécula N2N_2 con una base cc-PVDZ tiene una dimensión de 65780×65780).65780 \times 65780).

Afortunadamente, no siempre necesitamos todos los valores y vectores propios de un Hamiltoniano HH, y por lo tanto, la diagonalización de la matriz completa no es necesaria en muchos casos prácticos. Por ejemplo, en el caso de la estimación del estado básico, nos interesa el valor propio más bajo y el vector propio correspondiente. Esto nos permite aplicar el concepto de proyección sobre un subespacio (útil).

Consideremos una matriz N×NN \times N, HH, donde el espacio vectorial completo (espacio de Hilbert) tiene una dimensión de NN ( NN es grande). A continuación, seleccionamos un subespacio ( S\mathcal{S} ) -que es un subconjunto del espacio de Hilbert completo- de dimensión MM, donde MM es suficientemente pequeño. Después de proyectar HH en este subespacio, la matriz proyectada (digamos, HSH_\mathcal{S} ) será más pequeña ( M×MM \times M ). La matriz HSH_\mathcal{S} más pequeña puede diagonalizarse utilizando un método numérico clásico adecuado, y generar valores propios y vectores propios para ese subespacio.

Tenga en cuenta que el subespacio debe estar en apoyo de nuestro objetivo (por ejemplo, suelo) eigenstate. En otras palabras, el Hamiltoniano proyectado HSH_\mathcal{S} debe estar en un subespacio que incluya el valor propio más bajo.


2. Proyección y diagonalización

Consideremos que queremos encontrar el menor valor propio y el correspondiente vector propio para la siguiente matriz hamiltoniana 8×88 \times 8 HH.

H=[0.22350.03900.10350.08180.17460.10910.11650.01040.03900.66210.07060.19640.07820.26190.10950.00290.10350.07060.99610.17240.10670.22990.18170.15710.08180.19640.17240.17730.10190.47780.12720.04140.17460.07820.10670.10190.14180.13590.17930.07660.10910.26190.22990.47780.13590.10140.16960.05520.11650.10950.18170.12720.17930.16960.42270.27020.01040.00290.15710.04140.07660.05520.27020.4456]H = \begin{bmatrix} 0.2235 & -0.0390 & -0.1035 & -0.0818 & 0.1746 & 0.1091 & 0.1165 & -0.0104 \\ -0.0390 & 0.6621 & 0.0706 & -0.1964 & -0.0782 & 0.2619 & 0.1095 & 0.0029 \\ -0.1035 & 0.0706 & 0.9961 & 0.1724 & 0.1067 & -0.2299 & -0.1817 & 0.1571 \\ -0.0818 & -0.1964 & 0.1724 & -0.1773 & 0.1019 & -0.4778 & -0.1272 & -0.0414 \\ 0.1746 & -0.0782 & 0.1067 & 0.1019 & 0.1418 & -0.1359 & -0.1793 & -0.0766 \\ 0.1091 & 0.2619 & -0.2299 & -0.4778 & -0.1359 & 0.1014 & 0.1696 & 0.0552 \\ 0.1165 & 0.1095 & -0.1817 & -0.1272 & -0.1793 & 0.1696 & 0.4227 & 0.2702 \\ -0.0104 & 0.0029 & 0.1571 & -0.0414 & -0.0766 & 0.0552 & 0.2702 & 0.4456 \\ \end{bmatrix}

Diagonalizaremos la matriz completa junto con diferentes versiones proyectadas ( HSH_\mathcal{S} ) para diferentes subespacios para demostrar la escalabilidad y la importancia de la elección del subespacio.

La energía del estado básico (valor propio mínimo) de la matriz HH es 0.5357-0.5357 y la función de onda exacta del estado básico (vector propio) es:

GSexact=0.8011+0.6101.\text{GS}_{\text{exact}} = 0.8 * |011\rangle + 0.6 * |101\rangle.

es decir, el estado fundamental de la matriz está abarcado por dos estados (vectores) base de cálculo 011\vert 011 \rangle y 101\vert 101 \rangle.

import numpy as np
from scipy.linalg import eigh

np.set_printoptions(precision=4, sign="-", suppress=True, linewidth=100)

H = np.array(
    [
        [0.2235, -0.039, -0.1035, -0.0818, 0.1746, 0.1091, 0.1165, -0.0104],
        [-0.0390, 0.6621, 0.0706, -0.1964, -0.0782, 0.2619, 0.1095, 0.0029],
        [-0.1035, 0.0706, 0.9961, 0.1724, 0.1067, -0.2299, -0.1817, 0.1571],
        [-0.0818, -0.1964, 0.1724, -0.1773, 0.1019, -0.4778, -0.1272, -0.0414],
        [0.1746, -0.0782, 0.1067, 0.1019, 0.1418, -0.1359, -0.1793, -0.0766],
        [0.1091, 0.2619, -0.2299, -0.4778, -0.1359, 0.1014, 0.1696, 0.0552],
        [0.1165, 0.1095, -0.1817, -0.1272, -0.1793, 0.1696, 0.4227, 0.2702],
        [-0.0104, 0.0029, 0.1571, -0.0414, -0.0766, 0.0552, 0.2702, 0.4456],
    ]
)
eigvals, eigvecs = eigh(H)

print("Eigenvalues:")
print(eigvals)
print(f"Minimum eigenvalue: {eigvals.min()}")

print("\nEigenvectors (columns represent vectors):")
print(eigvecs)
print("\nEigenvector for the minimum eigenvalue (ground state)")
print(eigvecs[:, np.argmin(eigvals)])

Output:

Eigenvalues:
[-0.5357 -0.1321  0.1049  0.1258  0.3616  0.6405  0.947   1.3039]
Minimum eigenvalue: -0.5356560029438817

Eigenvectors (columns represent vectors):
[[-0.     -0.5612  0.098  -0.0024  0.8051 -0.0806  0.0643  0.1288]
 [-0.     -0.1403 -0.1985 -0.4249 -0.0092  0.585  -0.5952  0.2526]
 [ 0.      0.0416  0.3041  0.2122  0.1509 -0.0139 -0.5794 -0.7086]
 [ 0.8    -0.1936 -0.0127 -0.4376 -0.1081 -0.0838  0.1557 -0.2966]
 [ 0.      0.6716 -0.3535 -0.2552  0.5395  0.0954  0.1449 -0.1941]
 [ 0.6     0.258   0.017   0.5834  0.1441  0.1118 -0.2076  0.3954]
 [ 0.      0.3088  0.5504 -0.4197  0.0626 -0.468  -0.2625  0.3657]
 [-0.     -0.1146 -0.6559  0.0356 -0.0394 -0.6352 -0.3856  0.0418]]

Eigenvector for the minimum eigenvalue (ground state)
[-0.  -0.   0.   0.8  0.   0.6  0.  -0. ]

A continuación, proyectaremos la matriz HH en diferentes subespacios y comprobaremos si podemos obtener el estado básico exacto. En concreto, proyectaremos la matriz sobre un subespacio abarcado por:

  1. vectores exactos del estado básico ( 011\vert 011 \rangle y 101\vert 101 \rangle ).
  2. vectores que excluye algunos o todos los vectores exactos del estado básico (por ejemplo, 000\vert 000 \rangle, 011\vert 011 \rangle, y 110\vert 110 \rangle ).
  3. vectores que incluyen tanto el estado terreno exacto como el estado fuera del terreno (pero no todos los vectores posibles en el espacio de Hilbert).

2.1 Case-1: El subespacio incluye el estado fundamental

Supongamos que queremos proyectar HH en un subespacio ( S\mathcal{S} ) abarcado por dos vectores x1=011x_1 = |011\rangle y x2=101x_2 = |101\rangle. El Hamiltoniano proyectado se define por:

HS=[x1Hx1x1Hx2x2Hx1x2Hx2]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle \\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle \end{bmatrix}
x1 = np.zeros(8)
x1[3] = 1  # binary 011 is 3 in decimal. |011> = |3> = [0,0,0,1,0,0,0,0]

x2 = np.zeros(8)
x2[5] = 1  # binary 101 is 5 in decimal

Hs = np.array([[x1 @ H @ x1.T, x1 @ H @ x2.T], [x2 @ H @ x1.T, x2 @ H @ x2.T]])
print(Hs)

Output:

[[-0.1773 -0.4778]
 [-0.4778  0.1014]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")

Output:

Minimum eigenvalue: -0.535656000064295
Eigenvector for minimum eigenvalue: [-0.8 -0.6]

Aquí podemos hacer varias observaciones clave.

  • Como abarcamos el subespacio con dos vectores, la dimensión de la matriz proyectada ( HSH_\mathcal{S} ) es 2×22 \times 2, que es menor que la matriz completa HH ( 8×88 \times 8 ).
  • El valor propio mínimo de la matriz proyectada coincide con el valor propio exacto del estado sólido.
  • Los valores en la variable eigvecs denotan la amplitud de los vectores que abarcan el subespacio, y utilizándolos podemos reconstruir el estado propio (estado fundamental). En este caso, terminamos con el estado básico exacto (hasta una fase global):
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Case-2: El subespacio excluye algunos o todos los vectores del estado fundamental

A continuación, proyectamos HH en un subespacio abarcado por tres vectores x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle y x3=110x_3 = |110\rangle. Elegimos deliberadamente los vectores de manera que excluya un vector de estado fundamental ( 101\vert 101 \rangle ). El Hamiltoniano proyectado se define por:

HS=[x1Hx1x1Hx2x1Hx3x2Hx1x2Hx2x2Hx3x3Hx1x3Hx2x3Hx3]H_\mathcal{S} = \begin{bmatrix} \langle x1 | H | x1 \rangle & \langle x1 | H | x2 \rangle & \langle x1 | H | x3 \rangle\\ \langle x2 | H | x1 \rangle & \langle x2 | H | x2 \rangle & \langle x2 | H | x3 \rangle \\ \langle x3 | H | x1 \rangle & \langle x3 | H | x2 \rangle & \langle x3 | H | x3 \rangle \\ \end{bmatrix}
x1 = np.zeros(8)
x1[0] = 1

x2 = np.zeros(8)
x2[3] = 1

x3 = np.zeros(8)
x3[6] = 1

Hs = np.array(
    [
        [x1 @ H @ x1.T, x1 @ H @ x2.T, x1 @ H @ x3.T],
        [x2 @ H @ x1.T, x2 @ H @ x2.T, x2 @ H @ x3.T],
        [x3 @ H @ x1.T, x3 @ H @ x2.T, x3 @ H @ x3.T],
    ]
)
print(Hs)

Output:

[[ 0.2235 -0.0818  0.1165]
 [-0.0818 -0.1773 -0.1272]
 [ 0.1165 -0.1272  0.4227]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")

Output:

Minimum eigenvalue: -0.21108858736702252

El valor propio 0.2111-0.2111 en este caso no coincide con el valor propio mínimo 0.5357-0.5357 del Hamiltoniano completo. La observación clave aquí es: si proyectamos sobre un subespacio que excluye estados base en nuestro estado objetivo (base) -ya sea parcial o completamente- el estado base estimado será diferente del exacto.

2.3 Case-3: El subespacio incluye tanto vectores en estado fundamental como vectores en estado no fundamental

A continuación, mostramos un caso en el que el subespacio está abarcado por vectores que incluyen vectores exactos del estado básico junto con vectores no deseados. Supongamos que nuestro subespacio está abarcado por x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (presente en el estado básico exacto) y x3=111x_3 = |111\rangle (ausente en el estado básico exacto).

x1 = np.zeros(8)
x1[3] = 1

x2 = np.zeros(8)
x2[5] = 1

x3 = np.zeros(8)
x3[7] = 1

Hs = np.array(
    [
        [x1 @ H @ x1.T, x1 @ H @ x2.T, x1 @ H @ x3.T],
        [x2 @ H @ x1.T, x2 @ H @ x2.T, x2 @ H @ x3.T],
        [x3 @ H @ x1.T, x3 @ H @ x2.T, x3 @ H @ x3.T],
    ]
)
print(Hs)

Output:

[[-0.1773 -0.4778 -0.0414]
 [-0.4778  0.1014  0.0552]
 [-0.0414  0.0552  0.4456]]
eigvals, eigvecs = eigh(Hs)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")

Output:

Minimum eigenvalue: -0.53565600006461
Eigenvector for minimum eigenvalue: [ 0.8  0.6 -0. ]

En este caso, volvemos a obtener 0.5357-0.5357 como el valor propio mínimo que coincide con la matriz completa (es decir, el estado básico exacto). Otro resultado interesante es la amplitud de x3x_3 devuelta por el proceso de proyección y diagonalización. La amplitud es 00, y cuando reconstruimos la función de onda (eigenstate) con amplitudes y vectores calculados, obtenemos:

ψ=0.8011+0.6101+0.0111=0.8011+0.6101(exact ground state)\vert \psi \rangle = 0.8 |011\rangle + 0.6 |101\rangle + 0.0 |111\rangle = 0.8 |011\rangle + 0.6 |101\rangle \left( \text{exact ground state} \right)

Así, aunque nuestro subespacio incluya algunos vectores no objetivo (junto con el conjunto completo de vectores objetivo), podemos calcular el valor propio y el estado propio correctos, ya que el proceso de proyección y diagonalización filtra los vectores no objetivo ajustando sus amplitudes a 00. Esta propiedad de SQD proporciona una tolerancia inherente al ruido.


3. El papel de la cuántica en la SQD

Los análisis anteriores establecen la importancia de los vectores que abarcan el subespacio, que deben estar en apoyo del estado objetivo. Esto plantea una cuestión importante: ¿Cómo elegimos vectores con soporte de estado objetivo para la construcción de subespacios?

Aquí es donde entran en juego los ordenadores cuánticos. La sinergia cuántico-clásica funciona como sigue en el paradigma SQD:

  1. Utilizando un circuito cuántico adecuado, intentamos preparar un estado en un ordenador cuántico que genere estados base en los que la función de onda objetivo (por ejemplo, el estado fundamental) tenga un soporte significativo. Los estados base muestreados (cadenas de bits) abarcarán el subespacio para la proyección hamiltoniana.
  2. Un ordenador clásico proyecta el hamiltoniano en el subespacio (abarcado por las muestras/vectores del ordenador cuántico) y lo diagonaliza para calcular los valores y vectores propios utilizando métodos numéricos adecuados.
Un diagrama de los componentes cuánticos y clásicos del SQD. En mecánica cuántica, se prepara y se toma una muestra del soporte objetivo; a continuación, se proyecta de forma clásica la matriz sobre el subespacio muestreado y se diagonaliza la matriz proyectada.

Puede haber varias formas de preparar un estado cuántico de este tipo, y pueden ser variacionales o no variacionales dependiendo del problema.

En las dos próximas lecciones, mostraremos dos ejemplos concretos de preparación de estados y muestreo a partir de ellos.

  1. En la Lección 4, utilizaremos un ansatz Jastrow local unitario acoplado parametrizado (LUCJ) para generar muestras para un problema de química (estimación de la energía del estado fundamental de la molécula N2N_2 ). Inicializaremos el ansatz LUCJ con parámetros del cálculo clásico de clústeres simples y dobles acoplados (CCSD).
  2. En la Lección 5, muestrearemos a partir de estados base de Krylov para abarcar el subespacio de un problema de física de la materia condensada. Este enfoque es de naturaleza no variacional.

Además de los enfoques específicos del problema mencionados anteriormente, un enfoque genérico para la preparación del estado implica un ansatz variacional, en el que actualizaremos iterativamente los parámetros del ansatz utilizando un optimizador clásico.

Un diagrama de flujo que va desde un circuito cuántico variacional, pasando por el muestreo cuántico, hasta la computación clásica, en la que la matriz se proyecta y se diagonaliza. A continuación, los resultados se introducen en un optimizador clásico que selecciona nuevos parámetros variacionales, y volvemos al circuito cuántico variacional.

Las muestras de los ordenadores cuánticos anteriores a la tolerancia a fallos pueden ser ruidosas. SQD emplea un proceso de recuperación de configuración autoconsistente para corregir las muestras ruidosas [1]. Discutiremos el proceso de recuperación de la configuración con más detalle y lo aplicaremos para corregir muestras ruidosas de forma iterativa para refinar la estimación de la energía del estado fundamental para un problema de química en la Lección 4.

3.1 Notas sobre el soporte del estado fundamental

Expliquemos mejor el concepto de apoyo al estado básico. El soporte del estado base puede definirse como el conjunto de estados base en los que el estado base tiene una amplitud distinta de cero (hasta un umbral de corte).

Supongamos que el estado básico exacto de un problema 33 -qubit es

ψ=12000+12111\vert \psi \rangle = \frac{1}{\sqrt{2}} \vert 000 \rangle + \frac{1}{\sqrt{2}} \vert 111 \rangle

Si muestreamos el estado anterior, deberíamos obtener un conjunto de estados base computacionales {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (otros estados base computacionales tienen amplitud cero en el estado fundamental, y por lo tanto, idealmente no aparecerán durante el muestreo).

Idealmente, el conjunto de vectores base para este estado consiste en {000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (en otras palabras, el subespacio de este estado está abarcado por estos dos vectores base).

En la práctica, no necesitamos preparar el estado básico exacto, ya que el muestreo de muchos otros estados puede darnos el mismo conjunto de vectores. Por ejemplo:

ψa=0.8000+0.6111Sampling{000,111}ψb=12000+32111Sampling{000,111}ψc=12000+12111+12101Sampling{000,101,111}\begin{align} \vert \psi_a \rangle = 0.8 \vert 000 \rangle + 0.6 \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_b \rangle = \frac{1}{2} \vert 000 \rangle + \frac{\sqrt{3}}{2} \vert 111 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 111 \rangle \} \\ \vert \psi_c \rangle = \frac{1}{2} \vert 000 \rangle + \frac{1}{2} \vert 111 \rangle + \frac{1}{\sqrt{2}} \vert 101 \rangle &\xrightarrow{\text{Sampling}} \{ \vert 000 \rangle, \vert 101 \rangle, \vert 111 \rangle \} \end{align}

La preparación y el muestreo de cualquiera de los estados anteriores generará vectores que tienen amplitud distinta de cero en el estado fundamental, y todos ellos califican como tener soporte de estado fundamental. Nótese que, el muestreo ψc\vert \psi_c \rangle incluye un vector extra 101\vert 101 \rangle que tiene 00 amplitud en el estado básico exacto. Sin embargo, anteriormente hemos demostrado que incluir tales vectores en el subespacio no es problemático, ya que la operación de proyección y diagonalización fija la amplitud de los vectores no deseados en 00, y podemos obtener el valor propio esperado y reconstruir el estado propio correcto.

Diagramas que muestran cómo debe y cómo no debe ser el apoyo del ansatz. Un buen ansatz tiene un soporte que contiene por completo el soporte del estado fundamental. Un ansatz deficiente solo contiene una parte del soporte del estado fundamental, o bien carece por completo de él.

Por lo tanto, no es necesario preparar y tomar muestras del estado básico exacto. De hecho, hacerlo puede ser difícil ya que el estado básico exacto no se conoce a priori, y a menudo es beneficioso no preparar y muestrear a partir del estado básico exacto, especialmente si la función de onda (estado) está sesgada con algunos estados base que tienen probabilidades muy altas. Consideremos la siguiente función de onda:

ψ=0.70000.7010+0.11010.01111\vert \psi \rangle = 0.7 \vert 000 \rangle - 0.7 \vert 010 \rangle + 0.1 \vert 101 \rangle - 0.01 \vert 111 \rangle

Se trata de una función de onda sesgada en la que los estados base 000\vert 000 \rangle y 010\vert 010 \rangle tienen amplitudes mucho mayores en comparación con 101\vert 101 \rangle y 111\vert 111 \rangle. Al muestrear, obtendremos 000\vert 000 \rangle y 010\vert 010 \rangle con mayor frecuencia ( sampling probability=amplitude2\text{sampling probability} = \vert \text{amplitude} \vert^{2} 49%\approx 49\% para 000\vert 000 \rangle y 010\vert 010 \rangle cada uno, 1%\approx 1\% para 101\vert 101 \rangle, y 0.01%\approx 0.01\% para 111\vert 111 \rangle ). Con un presupuesto de muestreo finito (disparos ), es muy probable que nuestro conjunto muestreado sólo contenga 000\vert 000 \rangle y 010\vert 010 \rangle. Como se ha demostrado anteriormente, si abarcamos el subespacio con un conjunto de este tipo con vectores que faltan, no seremos capaces de encontrar el verdadero valor propio mínimo. Por lo tanto, será beneficioso (y necesario) tomar muestras de un estado con apoyo del estado básico.

3.2 Un caso contra el muestreo uniforme

Puede resultar tentador extraer muestras de una distribución uniforme para abarcar el subespacio. Aunque puede funcionar para problemas pequeños, empezará a fallar para problemas más grandes y prácticos. Para problemas grandes con muchos qubits, el espacio de Hilbert puede ser prohibitivamente grande. Por ejemplo, un espacio Hilbert de 32 qubits tiene más de 44 mil millones de posibles vectores base ( 232=4,294,967,2962^{32} = 4,294,967,296 ). Si tomamos muestras uniformes de ese espacio con un presupuesto muestral finito (digamos 1000010000 vectores para mantener factible el proceso de diagonalización), el subespacio puede excluir vectores con soporte de estado fundamental más a menudo, ya que el proceso será aleatorio. Por lo tanto, necesitamos una forma sistemática de muestrear el soporte del estado básico aprovechando los circuitos cuánticos.


4. SQD y dispersión de la función de onda

La brecha entre el espacio de Hilbert completo y las dimensiones del subespacio factible, trae otro aspecto importante de SQD, y es la escasez de la función de onda. El enfoque SQD funciona bien para funciones de onda dispersas o concentradas en las que una pequeña fracción de estados base tiene amplitudes no despreciables. Hay dos razones para ello:

  1. Si la función de onda es amplia (es decir, muchos estados base tienen amplitudes no despreciables), y omitimos incluir vectores con soporte de estado objetivo en el subespacio, podemos acabar con valores propios y vectores propios incorrectos.
  2. Para evitar el problema anterior, debemos incluir muchos vectores en el subespacio. Sin embargo, la dimensión del hamiltoniano proyectado está directamente relacionada con la dimensión del subespacio. Un subespacio más grande significará un Hamiltoniano más grande, que puede resultar inviable de diagonalizar.

Mostramos la cuestión con la siguiente matriz ( HnewH_{new} ). El valor propio más bajo de HnewH_{new} es 2.2081-2.2081, y la función de onda correspondiente (estado propio) es amplia:

ψ=000+001+010+011+100+101+110+1118|\psi\rangle = \frac{|000\rangle + |001\rangle + |010\rangle + |011\rangle + |100\rangle + |101\rangle + |110\rangle + |111\rangle}{\sqrt{8}}
H_new = np.array(
    [
        [-0.958, 0.1853, -0.2663, -0.3875, -0.0524, -0.3779, -0.0145, -0.3369],
        [0.1853, -0.4081, -0.8549, -0.2312, 0.0615, -0.2493, -0.3804, -0.3312],
        [-0.2663, -0.8549, -0.6929, -0.0063, -0.0478, -0.0236, -0.2494, -0.0669],
        [-0.3875, -0.2312, -0.0063, -0.4468, -0.6301, -0.4627, -0.1188, 0.0753],
        [-0.0524, 0.0615, -0.0478, -0.6301, -0.6664, -0.1514, -0.3571, -0.3644],
        [-0.3779, -0.2493, -0.0236, -0.4627, -0.1514, -0.9605, 0.0137, 0.0035],
        [-0.0145, -0.3804, -0.2494, -0.1188, -0.3571, 0.0137, -1.1449, 0.0433],
        [-0.3369, -0.3312, -0.0669, 0.0753, -0.3644, 0.0035, 0.0433, -1.2307],
    ]
)
eigvals, eigvecs = eigh(H_new)
print(f"Minimum eigenvalue: {eigvals.min()}")
print(f"Eigenvector for minimum eigenvalue: {eigvecs[:,np.argmin(eigvals)]}")

Output:

Minimum eigenvalue: -2.208137504726661
Eigenvector for minimum eigenvalue: [0.3536 0.3536 0.3536 0.3536 0.3535 0.3536 0.3535 0.3535]

Supongamos que proyectamos HnewH_{new} en un subespacio abarcado por cuatro vectores: 000|000\rangle, 010|010\rangle, 101|101\rangle, y 110|110\rangle y calculamos el valor propio.

x1 = np.zeros(8)
x1[0] = 1

x2 = np.zeros(8)
x2[2] = 1

x3 = np.zeros(8)
x3[5] = 1

x4 = np.zeros(8)
x4[6] = 1

H_new_s = np.array(
    [
        [x1 @ H_new @ x1.T, x1 @ H_new @ x2.T, x1 @ H_new @ x3.T, x1 @ H_new @ x4.T],
        [x2 @ H_new @ x1.T, x2 @ H_new @ x2.T, x2 @ H_new @ x3.T, x2 @ H_new @ x4.T],
        [x3 @ H_new @ x1.T, x3 @ H_new @ x2.T, x3 @ H_new @ x3.T, x3 @ H_new @ x4.T],
        [x4 @ H_new @ x1.T, x4 @ H_new @ x2.T, x4 @ H_new @ x3.T, x4 @ H_new @ x4.T],
    ]
)
print(H_new_s)

Output:

[[-0.958  -0.2663 -0.3779 -0.0145]
 [-0.2663 -0.6929 -0.0236 -0.2494]
 [-0.3779 -0.0236 -0.9605  0.0137]
 [-0.0145 -0.2494  0.0137 -1.1449]]
eigvals, eigvecs = eigh(H_new_s)
print(f"Minimum eigenvalue: {eigvals.min()}")

Output:

Minimum eigenvalue: -1.4266552340586673

El ejemplo anterior muestra que cuando la función de onda es amplia, y no incluimos estados base en el subespacio, el cálculo de valores propios se vuelve incorrecto.


5. SQD frente a VQE

Como se ha señalado anteriormente, SQD puede necesitar un circuito cuántico variacional y actualizaciones iterativas de parámetros para preparar y muestrear a partir del soporte del estado básico. Dado que esta rutina iterativa de actualización de parámetros es similar a VQE, cabe preguntarse en qué se diferencian estos métodos y cuáles son las ventajas de SQD sobre VQE En esta sección, comparamos los métodos y discutimos las ventajas de SQD con una molécula N2N_2 descrita con un conjunto de bases mínimas (sto-3g) como ejemplo.

 
VQE
SQD
Gastos generales de mediciónMuchos términos de Pauli, muchos circuitos de medida: El Hamiltoniano de la molécula tiene 29512951 términos de Pauli únicos. Como los términos de Pauli pueden contener términos XX y YY, y las mediciones cuánticas típicas se realizan en la base ZZ, necesitamos un cambio de base de medición para evaluar esos términos. Cuando se optimizan para mediciones, los términos 29512951 pueden agruparse en grupos 11871187, donde cada grupo puede evaluarse utilizando un único circuito. Por lo tanto, necesitamos al menos 11871187 circuitos únicos para evaluar todos los términos de Pauli. Muchos disparos por circuito para una mayor varianza. De nuevo, el valor de expectativa evaluado de cada término de Pauli tiene una varianza asociada que depende inversamente de shots\sqrt{shots}. Por lo tanto, para estimar con precisión cada término, necesitamos asignar muchos disparos por circuito. Por ejemplo, para alcanzar una precisión química ( 11 kcal/mol), normalmente necesitamos tomas del orden de 10510^5 - 10710^7 por circuito. Por lo tanto, VQE necesita muchos circuitos de medición y cada circuito con cierto número de disparos. En casos prácticos, esta sobrecarga de medición puede ser restrictiva.En SQD, no necesitamos circuitos de medida diferentes para cada término de Pauli agrupado. Normalmente, medimos un solo circuito durante un número fijo de disparos. Aunque podemos ajustar el número de disparos a un valor grande dependiendo del problema, la sobrecarga sigue siendo mucho menor que VQE. Además, las estimaciones de energía que utilizan el proceso de diagonalización son exactas, lo que significa que los valores propios calculados son exactos en ese subespacio y no tienen una varianza asociada a ellos como VQE. (En el caso del muestreo de estados de base Krylov (Lección 5), necesitamos medir múltiples circuitos, pero el número de circuitos sigue siendo mucho menor que VQE).
Energía estimada límiteEn VQE, las estimaciones de energía no están acotadas y pueden ser inferiores a los valores mínimos reales debido al ruido.El proceso de estimación de energía en SQD siempre produce un límite superior a la energía del estado fundamental y la energía estimada nunca será inferior a la verdadera energía del estado fundamental.
Tolerancia al ruidoLa estimación de la energía VQE es susceptible al ruido de los ordenadores cuánticos con tolerancia previa a fallos.El SQD tiene una tolerancia inherente al ruido. Los ordenadores cuánticos tolerantes a fallos pueden producir muestras ruidosas. Incluso si incluimos esas muestras en el subespacio, la diagonalización posterior puede suprimir esas muestras poniendo sus amplitudes a cero. Además, hablaremos de un método llamado recuperación de la configuración en relación con el SQD que mejora aún más la tolerancia al ruido del SQD.

6. Resumen

  1. En SQD, un ordenador cuántico genera muestras y un ordenador clásico proyecta un Hamiltoniano en un subespacio abarcado por las muestras y lo diagonaliza para calcular los valores y vectores propios.
  2. Las muestras generadas deben proceder del soporte del estado objetivo (suelo).
  3. Dependiendo del problema, el flujo de preparación del estado cuántico y de generación de muestras puede ser iterativo o no iterativo.
  4. SQD funciona mejor con funciones de onda dispersas. Una función de onda amplia requerirá un subespacio grande para obtener soluciones precisas, lo que hace que la proyección clásica y la operación de diagonalización sean costosas.
  5. SQD tiene varias ventajas sobre VQE, como una menor sobrecarga de medición y un límite superior para la energía estimada del estado base, lo que lo hace más escalable.

Referencias

[1] J. Robledo-Moreno et al., "Química más allá de las soluciones exactas en un superordenador centrado en la cuántica" (2024). arXiv:quant-ph/2405.05068.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.