Skip to main content
IBM Quantum Platform

Diagonalização Quântica Baseada em Amostra (SQD)

A diagonalização quântica baseada em amostras (SQD) combina a álgebra linear clássica e o poder da computação quântica para diagonalizar um Hamiltoniano (matriz) e calcular seus valores e vetores próprios. A diagonalização de matrizes é uma operação matemática importante, pois muitos problemas em ciência, computação e otimização usam o 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 subsequente fornece mais detalhes.


1. Introdução e motivação

Considere a equação de valor próprio de energia, 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 estado próprio) e EE é um valor próprio. Os valores próprios da matriz HH representam os níveis de energia do sistema. Por exemplo, se o sistema for uma molécula, o menor valor próprio representa a energia do estado fundamental da molécula. Em muitos problemas, estamos interessados na estimativa de energia do estado fundamental.

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

Felizmente, nem sempre precisamos de todos os valores e vetores próprios 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 do solo, estamos interessados no menor valor próprio e no vetor próprio 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 uma dimensão de 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, em que 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 e gerar valores e vetores próprios para esse subespaço.

Observe que o subespaço deve ser compatível com o nosso estado próprio alvo (por exemplo, solo). Em outras palavras, o Hamiltoniano projetado HSH_\mathcal{S} deve estar em um subespaço que inclua o menor valor próprio.


2. Projeção e diagonalização

Considere que queremos encontrar o menor valor próprio e o vetor próprio correspondente para a seguinte matriz 8×88 \times 8 Hamiltoniana 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 a matriz completa juntamente 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 (valor próprio mínimo) da matriz HH é 0.5357-0.5357 e a função de onda exata do estado fundamental (vetor próprio) é:

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

ou seja, o estado fundamental da matriz é abrangido por dois estados (vetores) da base computacional 011\vert 011 \rangle e 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. ]

Em seguida, projetaremos a matriz HH em diferentes subespaços e verificaremos se podemos obter o estado fundamental exato. Em particular, projetaremos a matriz em um subespaço abrangido por:

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

2.1 Case-1: O subespaço inclui o estado fundamental

Suponha que queiramos projetar HH em um subespaço ( S\mathcal{S} ) abrangido 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)

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]

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

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

2.2 Case-2: O subespaço exclui alguns ou todos os vetores do estado fundamental

Em seguida, projetamos HH em um subespaço abrangido 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 de 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)

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

O valor próprio 0.2111-0.2111 nesse caso não corresponde ao valor próprio mínimo 0.5357-0.5357 do Hamiltoniano completo. A principal observação aqui é: se projetarmos em um subespaço que exclui os estados da base em nosso estado-alvo (fundamental) - parcial ou totalmente - o estado fundamental estimado será diferente do exato.

2.3 Case-3: O subespaço inclui vetores no estado fundamental e fora do estado fundamental

Em seguida, mostramos um caso em que o subespaço é abrangido por vetores que incluem vetores exatos do estado fundamental junto com vetores indesejados. Suponha que nosso subespaço seja abrangido por x1=011x_1 = |011\rangle, x2=101x_2 = |101\rangle (presente 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)

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. ]

Nesse caso, obtemos novamente 0.5357-0.5357 como o valor próprio mínimo que corresponde à 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 (estado próprio) com amplitudes e vetores computados, 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)

Assim, mesmo que nosso subespaço inclua alguns vetores não-alvo (junto com o conjunto completo de vetores-alvo), podemos calcular o valor próprio e o estado próprio corretos, já que o processo de projeção e diagonalização filtra os vetores não-alvo definindo suas amplitudes para 00. Essa propriedade do SQD proporciona uma tolerância inerente ao ruído.


3. Papel da mecânica quântica no SQD

As análises acima estabelecem a importância dos vetores de abrangência do subespaço, que devem ser compatíveis com o estado-alvo. Isso levanta uma questão importante: Como escolhemos os vetores com suporte ao estado-alvo para a construção do subespaço?

É nesse ponto que os computadores quânticos entram em ação. A sinergia quântica-clássica funciona da seguinte forma no paradigma SQD:

  1. Usando um circuito quântico adequado, tentamos preparar um estado em um computador quântico que gerará estados de base nos quais a função de onda alvo (por exemplo, estado fundamental) tem suporte significativo. Os estados da base amostrada (bitstrings) abrangerão o subespaço para a projeção hamiltoniana.
  2. Um computador clássico projeta o Hamiltoniano no subespaço (abrangido por amostras/vetores do computador quântico) e o diagonaliza para calcular os valores e vetores próprios usando métodos numéricos adequados.
Um diagrama dos componentes quânticos e clássicos do SQD. Na mecânica quântica, você prepara e faz uma amostragem do seu suporte-alvo; em seguida, projeta classicamente sua matriz no subespaço amostrado e diagonaliza a matriz projetada.

Pode haver várias maneiras de preparar esse estado quântico, 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 de Jastrow acoplado unitário local parametrizado (LUCJ) para gerar amostras para um problema químico (estimativa da energia do estado fundamental da molécula N2N_2 ). Inicializaremos o ansatz LUCJ com parâmetros da computação clássica de cluster singles e doubles (CCSD) acoplados.
  2. Na lição 5, faremos uma amostragem dos estados da base de Krylov para abranger o subespaço de um problema de física de matéria condensada. Essa abordagem é de natureza não-variacional.

Além das abordagens específicas do problema acima, uma abordagem genérica para a preparação do estado envolve um ansatz variacional, em que atualizaremos iterativamente os parâmetros do ansatz usando um otimizador clássico.

Um fluxograma que ilustra o processo desde um circuito quântico variacional, passando pela amostragem quântica, até a computação clássica, na qual a matriz é projetada e diagonalizada. Em seguida, os resultados são inseridos em um otimizador clássico, que seleciona novos parâmetros variacionais, e voltamos ao circuito quântico variacional.

As amostras de computadores quânticos tolerantes a falhas anteriores podem ser ruidosas. O SQD emprega um processo de recuperação de configuração autoconsistente para corrigir amostras com ruído [1]. Discutiremos o processo de recuperação de configuração em mais detalhes e o aplicaremos para corrigir amostras ruidosas iterativamente para refinar a estimativa de energia do estado fundamental para um problema químico na Lição 4.

3.1 Notas sobre o suporte ao estado fundamental

Vamos explicar melhor o conceito de suporte de estado básico. O suporte do estado fundamental pode ser definido como o conjunto de estados básicos em que o estado fundamental tem amplitude diferente de zero (até um limite de corte).

Suponha que o estado fundamental exato de um problema de 33 -qubit seja

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

Se fizermos uma amostragem do 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 esses estados 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 a amostragem de muitos outros estados pode nos dar 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}

A preparação e a amostragem de qualquer um dos estados acima gerarão vetores que têm amplitude diferente de zero no estado fundamental, e todos eles se qualificam como tendo suporte do estado fundamental. Observe que a amostragem ψc\vert \psi_c \rangle inclui um vetor extra 101\vert 101 \rangle que tem 00 amplitude no estado fundamental exato. No entanto, mostramos anteriormente que a inclusão desses vetores no subespaço não é problemática, pois a operação de projeção e diagonalização define a amplitude dos vetores indesejados como 00, e podemos obter o valor próprio esperado e reconstruir o estado próprio correto.

Diagramas de apoios corretos e incorretos para o ansatz. Um bom ansatz possui um suporte que contém integralmente o suporte do estado fundamental. Um ansatz inadequado contém apenas parte ou nenhuma do suporte do estado fundamental.

Portanto, a preparação e a amostragem do estado fundamental exato não são necessárias. Na verdade, isso pode ser difícil, pois o estado fundamental exato não é conhecido a priori e, muitas vezes, é vantajoso não preparar e coletar amostras do estado fundamental exato, especialmente se a função de onda (estado) for distorcida, com alguns estados básicos 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 distorcida em que os estados básicos 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 ( sampling probability=amplitude2\text{sampling probability} = \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 (disparos ), é muito provável que nosso conjunto de amostragem contenha apenas 000\vert 000 \rangle e 010\vert 010 \rangle. Conforme mostrado anteriormente, se abrangermos o subespaço com esse conjunto de vetores ausentes, não conseguiremos encontrar o valor próprio mínimo verdadeiro. Portanto, será benéfico (e necessário) coletar amostras de um estado com suporte de estado fundamental.

3.2 Um caso 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, começará a falhar em 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 fizermos uma amostragem uniforme desse espaço com um orçamento de amostragem finito (digamos, 1000010000 vetores para manter o processo de diagonalização viável), o subespaço poderá excluir vetores com suporte de estado fundamental com mais frequência, pois o processo será aleatório. Portanto, precisamos de uma maneira sistemática de obter amostras do suporte do estado fundamental, aproveitando os circuitos quânticos.


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

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

  1. Se a função de onda for ampla (ou seja, muitos estados da base têm amplitudes não negligenciáveis) e não incluirmos vetores com suporte de estado-alvo no subespaço, poderemos acabar com valores e vetores próprios 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 significará um Hamiltoniano maior, cuja diagonalização pode se tornar inviável.

Mostramos o problema com a seguinte matriz ( HnewH_{new} ). O menor valor próprio do HnewH_{new} é 2.2081-2.2081, e a função de onda correspondente (estado próprio) é 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)]}")

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]

Suponha que projetemos o HnewH_{new} em um subespaço abrangido por quatro vetores: 000|000\rangle, 010|010\rangle, 101|101\rangle, e 110|110\rangle e calcular o valor próprio.

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

O exemplo acima mostra que, quando a função de onda é ampla e não incluímos estados básicos no subespaço, o cálculo do valor próprio fica incorreto.


5. SQD vs. VQE

Conforme observado anteriormente, o SQD pode precisar de um circuito quântico variacional e de atualizações iterativas de parâmetros para preparar e obter amostras do suporte do estado fundamental. Como essa rotina de atualização iterativa de parâmetros é semelhante à VQE, pode-se perguntar como esses métodos são diferentes e quais são as vantagens do SQD em relação à VQE? Nesta seção, comparamos os métodos e discutimos as vantagens do SQD com uma molécula N2N_2 descrita com um conjunto de base mínima (sto-3g) como exemplo.

 
VQE
SQD
Custos indiretos de mediçãoMuitos termos de Pauli, muitos circuitos de medição: O Hamiltoniano da molécula tem 29512951 termos de Pauli exclusivos. 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 mudar a base de medição para avaliar esses termos. Quando otimizados para medições, os termos de 29512951 podem ser agrupados em 11871187 grupos, onde cada grupo pode ser avaliado usando um único circuito. Portanto, precisamos de pelo menos 11871187 circuitos exclusivos para avaliar todos os termos de Pauli. Muitos disparos por circuito para uma variação mais estreita. Novamente, o valor da expectativa avaliada de cada termo de Pauli tem uma variação associada a ele que depende inversamente de shots\sqrt{shots}. Portanto, para estimar com precisão cada termo, precisamos alocar muitas fotos por circuito. Por exemplo, para obter precisão química ( 11 kcal/mol), normalmente precisamos de disparos da ordem de 10510^5 - 10710^7 por circuito. Portanto, o VQE precisa de muitos circuitos de medição e cada circuito com um determinado número de disparos. Em casos práticos, essa sobrecarga de medição pode ser restritiva.No SQD, não precisamos de circuitos de medição diferentes para cada termo de Pauli agrupado. Normalmente, medimos um único circuito para um número fixo de disparos. Embora possamos definir o número de disparos para um valor grande, dependendo do problema, a sobrecarga permanece muito menor do que a do VQE. Além disso, as estimativas de energia que usam o processo de diagonalização são exatas, o que significa que os autovalores computados são exatos nesse subespaço e não têm uma variância associada a eles, como o VQE. (No caso da amostragem de estado da base de Krylov (Lição 5), precisamos medir vários circuitos, mas o número de circuitos permanece muito menor do que o VQE).
Limite de energia estimadoNo VQE, as estimativas de energia não são limitadas e podem ser inferiores aos valores mínimos reais 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 verdadeira energia do estado fundamental.
Tolerância ao ruídoA estimativa de energia VQE é suscetível ao ruído de computadores quânticos tolerantes a falhas.A SQD tem tolerância inerente a ruídos. Os computadores quânticos tolerantes a falhas podem produzir amostras com ruídos. Mesmo se incluirmos 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. Na 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 valores e vetores próprios.
  2. As amostras geradas devem ser do suporte do estado-alvo (solo).
  3. Dependendo do problema, a preparação do estado quântico e o fluxo de geração de amostras podem ser iterativos ou não iterativos.
  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 projeção clássica e a operação de diagonalização caras.
  5. O SQD tem várias vantagens sobre o VQE, como menor sobrecarga de medição e limite superior para a energia estimada do estado fundamental, o que o torna mais escalável.

Referências

[1] J. Robledo-Moreno et al, "Química além das soluções exatas em um supercomputador centrado em quantum" (2024). arXiv:quant-ph/2405.05068.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.