Pular para o conteúdo principal

Sample-based Quantum Diagonalization (SQD)

A diagonalização quântica baseada em amostras (SQD, do inglês sample-based quantum diagonalization) combina álgebra linear clássica e o poder da computação quântica para diagonalizar um Hamiltoniano (matriz) e calcular seus autovalores e autovetores. A diagonalização de matrizes é uma operação matemática importante, pois muitos problemas em ciência, computação e otimização fazem uso desse método.

O vídeo abaixo apresenta uma visão geral do SQD, o que determina sua utilidade e o que o torna mais rápido do que muitas outras abordagens. O texto a seguir entra em mais detalhes.

1. Introdução e motivação

Considere a equação de autovalores de energia tornada famosa por Schrödinger, como exemplo.

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

HH é o Hamiltoniano de um sistema, ψ|\psi\rangle é a função de onda (também conhecida como autoestado) e EE é um autovalor. Os autovalores da matriz HH representam os níveis de energia do sistema. Por exemplo, se o sistema for uma molécula, o menor autovalor representa a energia do estado fundamental da molécula. Em muitos problemas, estamos interessados na estimativa da energia do estado fundamental.

Aplicando técnicas de diagonalização exata da álgebra linear, podemos diagonalizar a matriz HH completa. No entanto, a abordagem torna-se computacionalmente cara (ou até impossível) à medida que a matriz cresce. Por exemplo, mesmo para pequenas moléculas químicas, HH pode ser proibitivamente grande (por exemplo, o Hamiltoniano da molécula N2N_2 com a base cc-PVDZ tem dimensão 65780×65780).65780 \times 65780).

Felizmente, nem sempre precisamos de todos os autovalores e autovetores de um Hamiltoniano HH, e portanto a diagonalização da matriz completa não é necessária em muitos casos práticos. Por exemplo, no caso da estimativa do estado fundamental, estamos interessados no menor autovalor e no autovetor correspondente. Isso nos permite aplicar o conceito de projeção em um subespaço (útil).

Considere uma matriz N×NN \times N, HH, em que o espaço vetorial completo (espaço de Hilbert) tem dimensão NN (NN é grande). Em seguida, selecionamos um subespaço (S\mathcal{S}) — que é um subconjunto do espaço de Hilbert completo — de dimensão MM, onde MM é suficientemente pequeno. Após projetar HH nesse subespaço, a matriz projetada (digamos, HSH_\mathcal{S}) será menor (M×MM \times M). A HSH_\mathcal{S} menor pode ser diagonalizada usando um método numérico clássico adequado, gerando autovalores e autovetores para aquele subespaço.

Observe que o subespaço deve ter suporte no nosso autoestado alvo (por exemplo, o estado fundamental). Em outras palavras, o Hamiltoniano projetado HSH_\mathcal{S} deve estar em um subespaço que inclua o menor autovalor.

2. Projeção e Diagonalização

Considere que queremos encontrar o menor autovalor e o autovetor correspondente para a seguinte 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}

Vamos diagonalizar a matriz completa junto com diferentes versões projetadas (HSH_\mathcal{S}) para diferentes subespaços, a fim de demonstrar a escalabilidade e a importância da escolha do subespaço.

A energia do estado fundamental (autovalor mínimo) da matriz HH é 0.5357-0.5357 e a função de onda (autovetor) exata do estado fundamental é:

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

ou seja, o estado fundamental da matriz é gerado por dois estados da base computacional (vetores) 011\vert 011 \rangle e 101\vert 101 \rangle.

# Added by doQumentation — required packages for this notebook
!pip install -q numpy scipy
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)])
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 seguir, vamos projetar a matriz HH em diferentes subespaços e verificar se conseguimos obter o estado fundamental exato. Em particular, vamos projetar a matriz em um subespaço gerado por:

  1. vetores do estado fundamental exato (011\vert 011 \rangle e 101\vert 101 \rangle).
  2. vetores que excluem alguns ou todos os vetores do estado fundamental exato (por exemplo, 000\vert 000 \rangle, 011\vert 011 \rangle e 110\vert 110 \rangle).
  3. vetores que incluem tanto o estado fundamental exato quanto vetores fora do estado fundamental (mas não todos os vetores possíveis no espaço de Hilbert).

2.1 Caso 1: o subespaço inclui o estado fundamental

Suponha que queremos projetar HH em um subespaço (S\mathcal{S}) gerado por dois vetores x1=011x_1 = |011\rangle e x2=101x_2 = |101\rangle. O Hamiltoniano projetado é definido 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)
[[-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)]}")
Minimum eigenvalue: -0.535656000064295
Eigenvector for minimum eigenvalue: [-0.8 -0.6]

Podemos fazer várias observações importantes aqui.

  • Como geramos o subespaço com dois vetores, a dimensão da matriz projetada (HSH_\mathcal{S}) é 2×22 \times 2, menor do que a matriz completa HH (8×88 \times 8).
  • O autovalor mínimo da matriz projetada coincide com o autovalor do estado fundamental exato.
  • Os valores na variável eigvecs representam a amplitude dos vetores que geram o subespaço, e com eles podemos reconstruir o autoestado (estado fundamental). Nesse caso, chegamos ao estado fundamental exato (a menos de uma fase global):
ψ=(0.8011+0.6101)|\psi \rangle = - (0.8 |011\rangle + 0.6 |101\rangle)

2.2 Caso 2: o subespaço exclui alguns ou todos os vetores do estado fundamental

A seguir, projetamos HH em um subespaço gerado por três vetores x1=000x_1 = |000\rangle, x2=011x_2 = |011\rangle e x3=110x_3 = |110\rangle. Escolhemos deliberadamente os vetores de modo a excluir um vetor do estado fundamental (101\vert 101 \rangle). O Hamiltoniano projetado é definido 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)
[[ 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()}")
Minimum eigenvalue: -0.21108858736702252

O autovalor 0.2111-0.2111 nesse caso não coincide com o autovalor mínimo 0.5357-0.5357 do Hamiltoniano completo. A observação principal aqui é: se projetarmos em um subespaço que exclui estados da base presentes no nosso estado alvo (fundamental) — parcialmente ou completamente — o estado fundamental estimado será diferente do exato.

2.3 Caso 3: o subespaço inclui tanto vetores do estado fundamental quanto vetores que não pertencem ao estado fundamental

A seguir, mostramos um caso em que o subespaço é gerado por vetores que incluem os vetores do estado fundamental exato junto com vetores indesejados. Suponha que nosso subespaço seja gerado por x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (presentes no estado fundamental exato) e x3=111x_3 = |111\rangle (ausente no estado fundamental exato).

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)
[[-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)]}")
Minimum eigenvalue: -0.53565600006461
Eigenvector for minimum eigenvalue: [ 0.8 0.6 -0. ]

Nesse caso, obtemos novamente 0.5357-0.5357 como o autovalor mínimo, que coincide com a matriz completa (ou seja, o estado fundamental exato). Outro resultado interessante é a amplitude de x3x_3 retornada pelo processo de projeção e diagonalização. A amplitude é 00, e quando reconstruímos a função de onda (autoestado) com as amplitudes e vetores calculados, obtemos:

ψ=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)

Portanto, mesmo que nosso subespaço inclua alguns vetores que não são o alvo (juntamente com o conjunto completo de vetores alvo), ainda conseguimos calcular o autovalor e o autoestado corretos, pois o processo de projeção e diagonalização filtra os vetores indesejados definindo suas amplitudes como 00. Essa propriedade do SQD proporciona uma tolerância inerente ao ruído.

3. O papel do quantum no SQD

As análises acima estabelecem a importância dos vetores que abrangem o subespaço, os quais precisam estar no suporte do estado alvo. Isso levanta uma questão importante: Como escolhemos vetores com suporte no estado alvo para a construção do subespaço?

É aqui que os computadores quânticos entram em cena. A sinergia quântico-clássica funciona da seguinte forma no paradigma do SQD:

  1. Usando um circuito quântico adequado, tentamos preparar um estado em um computador quântico que irá gerar estados de base nos quais a função de onda alvo (por exemplo, o estado fundamental) tem suporte significativo. Os estados de base amostrados (bitstrings) vão abranger o subespaço para a projeção do Hamiltoniano.
  2. Um computador clássico projeta o Hamiltoniano no subespaço (abrangido pelas amostras/vetores do computador quântico) e o diagonaliza para calcular autovalores e autovetores usando métodos numéricos adequados. Um diagrama dos componentes quântico e clássico do SQD. No lado quântico, você prepara e amostra a partir do suporte alvo; no lado clássico, você projeta sua matriz no subespaço amostrado e diagonaliza a matriz projetada. Existem várias maneiras de preparar um estado quântico assim, e elas podem ser variacionais ou não variacionais dependendo do problema.

Nas próximas duas lições, mostraremos dois exemplos específicos de preparação de estados e amostragem a partir deles.

  1. Na Lição 4, usaremos um ansatz paramétrico LUCJ (unitary coupled Jastrow local) para gerar amostras para um problema de química (estimativa de energia do estado fundamental da molécula N2N_2). Vamos inicializar o ansatz LUCJ com parâmetros provenientes de um cálculo clássico de coupled cluster com singles e doubles (CCSD).
  2. Na Lição 5, vamos amostrar a partir de estados da base de Krylov para abranger o subespaço em um problema de física da matéria condensada. Essa abordagem é de natureza não variacional.

Além das abordagens específicas ao problema acima, uma abordagem genérica para a preparação de estados envolve um ansatz variacional, onde atualizaremos iterativamente os parâmetros do ansatz usando um otimizador clássico. Um fluxograma que vai de um circuito quântico variacional, passa pela amostragem quântica e chega à computação clássica, onde a matriz é projetada e diagonalizada. Os resultados são então enviados a um otimizador clássico, que seleciona novos parâmetros variacionais, e retornamos ao circuito quântico variacional. Amostras de computadores quânticos pré-tolerantes a falhas podem ser ruidosas. O SQD emprega um processo de recuperação de configuração autoconsistente para corrigir amostras ruidosas [1]. Vamos discutir o processo de recuperação de configuração com mais detalhes e aplicá-lo para corrigir amostras ruidosas iterativamente, refinando a estimativa de energia do estado fundamental de um problema de química na Lição 4.

3.1 Notas sobre o suporte do estado fundamental

Vamos explicar melhor o conceito de suporte do estado fundamental. O suporte do estado fundamental pode ser definido como o conjunto de estados de base onde o estado fundamental tem amplitude não nula (até um limiar de corte).

Suponha que o estado fundamental exato de um problema de 33 qubits seja

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

Se amostrarmos o estado acima, devemos obter um conjunto de estados de base computacional {000\{\vert 000 \rangle, 111}\vert 111 \rangle \} (outros estados de base computacional têm amplitude zero no estado fundamental e, portanto, idealmente não aparecerão durante a amostragem).

Idealmente, o conjunto de vetores de base para esse estado consiste em {000,111}\{ \vert 000 \rangle, \vert 111 \rangle \} (em outras palavras, o subespaço desse estado é abrangido por esses dois vetores de base).

Na prática, não precisamos preparar o estado fundamental exato, pois amostrar muitos outros estados pode nos fornecer o mesmo conjunto de vetores. Por exemplo:

ψ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}

Preparar e amostrar a partir de qualquer um dos estados acima vai gerar vetores que têm amplitude não nula no estado fundamental, e todos eles se qualificam como tendo suporte do estado fundamental. Vale notar que amostrar ψc\vert \psi_c \rangle inclui um vetor extra 101\vert 101 \rangle que tem amplitude 00 no estado fundamental exato. No entanto, mostramos anteriormente que incluir tais vetores no subespaço não é problemático, pois a operação de projeção e diagonalização define a amplitude dos vetores indesejados como 00, e podemos obter o autovalor esperado e reconstruir o autoestado correto.

Diagramas de suportes de ansatz bom e ruim. Um bom ansatz tem suporte que contém completamente o suporte do estado fundamental. Um ansatz ruim contém apenas parte ou nenhum do suporte do estado fundamental.

Portanto, preparar e amostrar a partir do estado fundamental exato não é necessário. Na verdade, fazer isso pode ser difícil, pois o estado fundamental exato não é conhecido a priori, e muitas vezes é vantajoso não preparar e amostrar a partir do estado fundamental exato, especialmente se a função de onda (estado) for assimétrica, com alguns estados de base tendo probabilidades muito altas. Considere a seguinte função 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

Essa é uma função de onda assimétrica em que os estados de base 000\vert 000 \rangle e 010\vert 010 \rangle têm amplitudes muito maiores em comparação com 101\vert 101 \rangle e 111\vert 111 \rangle. Quando amostrados, obteremos 000\vert 000 \rangle e 010\vert 010 \rangle com mais frequência (probabilidade de amostragem=amplitude2\text{probabilidade de amostragem} = \vert \text{amplitude} \vert^{2} 49%\approx 49\% para 000\vert 000 \rangle e 010\vert 010 \rangle cada, 1%\approx 1\% para 101\vert 101 \rangle e 0,01%\approx 0,01\% para 111\vert 111 \rangle). Com um orçamento de amostragem finito (shots), é muito provável que nosso conjunto amostrado contenha apenas 000\vert 000 \rangle e 010\vert 010 \rangle. Como mostramos anteriormente, se abrangermos o subespaço com um conjunto assim, com vetores faltando, não seremos capazes de encontrar o autovalor mínimo verdadeiro. Portanto, será vantajoso (e necessário) amostrar a partir de um estado com suporte no estado fundamental.

3.2 Um argumento contra a amostragem uniforme

Pode ser tentador extrair amostras de uma distribuição uniforme para abranger o subespaço. Embora isso possa funcionar para problemas pequenos, vai começar a falhar para problemas maiores e mais práticos. Para problemas grandes com muitos qubits, o espaço de Hilbert pode ser proibitivamente grande. Por exemplo, um espaço de Hilbert de 32 qubits tem mais de 44 bilhões de vetores de base possíveis (232=4.294.967.2962^{32} = 4.294.967.296). Se amostramos uniformemente desse espaço com um orçamento de amostras finito (digamos, 1000010000 vetores para manter o processo de diagonalização viável), o subespaço pode excluir vetores com suporte no estado fundamental com mais frequência, já que o processo será aleatório. Portanto, precisamos de uma forma sistemática de amostrar a partir do suporte do estado fundamental aproveitando circuitos quânticos.

4. SQD e a esparsidade da função de onda

A lacuna entre o espaço de Hilbert completo e as dimensões de subespaço viáveis traz outro aspecto importante do SQD: a esparsidade da função de onda. A abordagem SQD funciona bem para funções de onda esparsas ou concentradas, onde uma pequena fração dos estados de base tem amplitudes não desprezíveis. Há dois motivos para isso:

  1. Se a função de onda for ampla (isto é, muitos estados de base têm amplitudes não desprezíveis) e não incluirmos vetores com suporte no estado alvo no subespaço, podemos acabar com autovalores e autovetores incorretos.
  2. Para evitar o problema acima, precisamos incluir muitos vetores no subespaço. No entanto, a dimensão do Hamiltoniano projetado está diretamente relacionada à dimensão do subespaço. Um subespaço maior significa um Hamiltoniano maior, que pode se tornar inviável de diagonalizar.

Demonstramos o problema com a seguinte matriz (HnewH_{new}). O menor autovalor de HnewH_{new} é 2.2081-2.2081, e a função de onda (autoestado) correspondente é ampla:

ψ=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)]}")
Minimum eigenvalue: -2.208137504726661
Eigenvector for minimum eigenvalue: [0.3536 0.3536 0.3536 0.3536 0.3535 0.3536 0.3535 0.3535]

Suponha que projetamos HnewH_{new} em um subespaço abrangido por quatro vetores: 000|000\rangle, 010|010\rangle, 101|101\rangle e 110|110\rangle, e calculamos o autovalor.

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)
[[-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()}")
Minimum eigenvalue: -1.4266552340586673

O exemplo acima mostra que, quando a função de onda é ampla e não incluímos estados de base no subespaço, o cálculo do autovalor se torna incorreto.

5. SQD vs. VQE

Como mencionado anteriormente, o SQD pode precisar de um circuito quântico variacional e atualizações iterativas de parâmetros para preparar e amostrar a partir do suporte do estado fundamental. Como essa rotina iterativa de atualização de parâmetros é semelhante ao VQE, pode-se perguntar como esses métodos diferem e quais são as vantagens do SQD sobre o VQE. Nesta seção, comparamos os métodos e discutimos as vantagens do SQD usando uma molécula N2N_2 descrita com um conjunto de base mínimo (sto-3g) como exemplo.

 VQESQD
Sobrecarga de mediçãoMuitos termos de Pauli, muitos circuitos de medição: O Hamiltoniano para a molécula tem 29512951 termos de Pauli únicos. Como os termos de Pauli podem conter termos XX e YY, e as medições quânticas típicas são feitas na base ZZ, precisamos de uma mudança de base de medição para avaliar esses termos. Quando otimizados para medições, os 29512951 termos podem ser agrupados em 11871187 grupos, onde cada grupo pode ser avaliado usando um único circuito. Assim, precisamos de pelo menos 11871187 circuitos únicos para avaliar todos os termos de Pauli. Muitos shots por circuito para menor variância. Além disso, o valor esperado avaliado de cada termo de Pauli tem uma variância associada a ele, que depende inversamente de shots\sqrt{shots}. Portanto, para estimar com precisão cada termo, precisamos alocar muitos shots por circuito. Por exemplo, para atingir precisão química (11 kcal/mol), normalmente precisamos de shots na ordem de 10510^5-10710^7 por circuito. Assim, o VQE precisa de muitos circuitos de medição, cada um com um certo número de shots. Em casos práticos, essa sobrecarga de medição pode ser restritiva.No SQD, não precisamos de diferentes circuitos de medição para cada grupo de termos de Pauli. Normalmente, medimos um único circuito para um número fixo de shots. Embora possamos definir o número de shots como um valor grande dependendo do problema, a sobrecarga permanece muito menor do que no VQE. Além disso, as estimativas de energia usando o processo de diagonalização são exatas, o que significa que os autovalores calculados são exatos naquele subespaço e não têm variância associada a eles como no VQE. (No caso de amostragem de estados da base de Krylov (Lição 5), precisamos medir vários circuitos, mas o número de circuitos permanece muito menor do que no VQE).
Limite da energia estimadaNo VQE, as estimativas de energia não são limitadas e podem ser menores do que os valores mínimos verdadeiros devido ao ruído.O processo de estimativa de energia no SQD sempre produz um limite superior para a energia do estado fundamental, e a energia estimada nunca será menor do que a energia do estado fundamental verdadeiro.
Tolerância a ruídoA estimativa de energia do VQE é suscetível ao ruído de computadores quânticos pré-tolerantes a falhas.O SQD tem tolerância inerente ao ruído. Computadores quânticos pré-tolerantes a falhas podem produzir amostras ruidosas. Mesmo que incluamos essas amostras no subespaço, a diagonalização subsequente pode suprimir essas amostras definindo suas amplitudes como zero. Além disso, discutiremos um método chamado recuperação de configuração em relação ao SQD que melhora ainda mais a tolerância ao ruído do SQD.

6. Resumo

  1. No SQD, um computador quântico gera amostras e um computador clássico projeta um Hamiltoniano em um subespaço abrangido pelas amostras e o diagonaliza para calcular autovalores e autovetores.
  2. As amostras geradas devem provir do suporte do estado alvo (fundamental).
  3. Dependendo do problema, o fluxo de preparação do estado quântico e geração de amostras pode ser iterativo ou não iterativo.
  4. O SQD funciona melhor para funções de onda esparsas. Uma função de onda ampla exigirá um subespaço grande para soluções precisas, o que torna a operação clássica de projeção e diagonalização custosa.
  5. O SQD tem várias vantagens sobre o VQE, como menor sobrecarga de medição e limite superior para a energia do estado fundamental estimada, o que o torna mais escalável.

Referências

[1] J. Robledo-Moreno et al., "Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer" (2024). arXiv:quant-ph/2405.05068.