O algoritmo QAOA - Como entende-lo de forma simples
Sempre tive interesse em algoritmos variacionais, mas QAOA sempre me pareceu como algo de outro mundo.
Mesmo utilizando vários artifícios matemáticos,acredito que encontrei uma maneira relativamente simples de explicar o algoritmo.
Tudo não passa de rotações nos eixos X e Z em busca de encontrar o estado de menor energia.
Quando definimos um Hamiltoniano com nosso problema, queremos encontrar o estado que de a menor energia para ele, o seu eigenvalue para algum eigenstate.
Quando aplicamos as rotações na esfera de Bloch, o que estamos fazendo é, através dos parâmetros que otimizamos, estamos testando estados e avaliando com base na expectativa em relação ao Hamiltoniano.
Para mim, as camadas sempre foram estranhas. Sempre pensei, por que raios um Unitário com o Hamiltonian e outro sendo o Mixer. Mas agora tudo faz sentido, o unitário que codifica o Hamiltonian é usado para aplicar rotações no eixo Z (saindo dos eigenvalues de X, já que rotações em X não teriam qualquer resultado aqui) e com base na estrutura codificada do problema, essas rotações são aplicadas, seguindo de fato a função de custo. Já o mixer age como uma maneira de buscar esses eigenstates em Z, tentando projetar esses valores de volta em Z e assim explorando se aquele estado era promissor com base no problema.
Eu expliquei um pouco mais disso no meu post https://dpbm.vercel.app/posts/qaoa-the-simple-way-kkx4dygabjwbm/, espero que gostem.
Vale notar que não sou especialista, então qualquer bobagem que eu tenha dito estou aberto a aprender mais!