Existe um método geral de expressar o problema de otimização como um hamiltoniano?

9

Digamos que temos um problema de otimização no formato:

minxf(x)gEu(x)0 0,Eu=1,...,mhj(x)=0 0,j=1,...,p,

onde f(x) é uma função objetiva, gEu(x) são restrições de desigualdade e hj(x) são restrições de igualdade.

Recentemente, eu estava lendo sobre a computação quântica adiabática . A Wikipedia diz:

Primeiro, é encontrado um hamiltoniano (potencialmente complicado) cujo estado fundamental descreve a solução para o problema de interesse. Em seguida, um sistema com um hamiltoniano simples é preparado e inicializado para o estado fundamental. Finalmente, o hamiltoniano simples é adiabaticamente evoluído para o hamiltoniano complicado e desejado. Pelo teorema adiabático, o sistema permanece no estado fundamental, portanto, no final, o estado do sistema descreve a solução para o problema. A computação quântica adiabática demonstrou ser polinomialmente equivalente à computação quântica convencional no modelo de circuito.

Existe algum método geral de expressar o problema de otimização (por exemplo, como apresentado acima) no formalismo hamiltoniano usado na computação quântica adiabática ?

brzepkowski
fonte
1
Não tenho certeza do quanto você deseja uma resposta formal, mas geralmente você define uma função de custo que é grande longe da solução e mínima na solução. Então você traduz essa função de custo para a linguagem de rotação Pauli (presumo que seja esta etapa que você gostaria de esclarecer?). Uma vez que sua função de custo está no idioma de rotação, é o seu Hamiltoniano. Se você estava pesquisando sobre cadeias binárias, por exemplo, pode usar o fato de que (I-Zi) / 2 retornará o valor do bit i. Se é isso que você quiser eu posso tentar escrevê-lo até amanhã, se eu tiver tempo
bRost03
Você poderia mostrar algum exemplo como resposta? Seria maravilhoso :)
brzepkowski
Veja arxiv.org/abs/1302.5843 (Lucas Ising 2014) para muitos exemplos.
Paradox

Respostas:

6

Conforme solicitado nos comentários, aqui está um exemplo trabalhado. O corpo principal lida com a minimização de para um problema específico. Na parte inferior, segue-se uma breve discussão sobre restrições e, em seguida, uma breve discussão sobre o caso geral.f(x)

Vamos resolver o problema de corte máximo ponderado, pois

  1. É um exemplo relativamente direto
  2. É difícil classicamente
  3. É um exemplo relativamente comum na literatura (por exemplo, https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.90.067903 )
  4. Possui uma conexão clara com um Hamiltoniano físico (óculos Ising)

Para entender o problema, começamos com um gráfico não direcionado de vértices , em que cada vértice tem peso e cada aresta que conecta e tem peso . Em seguida, cortamos o gráfico em dois pedaços. O corte não precisa ser reto, mas não deve se auto-interceptar e não pode cortar nenhuma aresta duas vezes. Em seguida, calculamos um " pagamento " para o nosso corte. O pagamento é a soma dos pesos das arestas pelas quais cortamos, mais a soma dos pesos dos vértices em um lado do corte. n{V}vEuVWEu0 0vEuvjWEuj0 0P 1P1

Fonteinsira a descrição da imagem aqui

Nesta imagem, o pagamento seria: para as arestas mais para os vértices (assumindo que o número dentro de cada vértice seja o seu peso) . O problema de otimização é maximizar para um determinado gráfico . 1+4+3+3+2=135+6+1=12P=25P 2P2

Para escrever isso matematicamente, podemos pensar em termos de cadeias de bits. Definimos um corte por uma string que não é contado na soma e é contado na soma. Para tornar a matemática um pouco mais limpa, se o gráfico não estiver totalmente conectado, faça com que o gráfico esteja totalmente conectado e defina para quaisquer pares não conectados .s{0 0,1}nsEu=0 0vEu s i = 1 v i w i jsEu=1vEu WEuj=0 0vEu,vj

Por exemplo, olhando a imagem acima novamente, vamos interpretar os números dentro dos vértices como o índice de vértices, em vez do peso, como assumimos acima. Então o corte desenhado corresponde a . estão no lado "bom" do corte e são contados, enquanto estão no lado "ruim" do corte e não são contados .s=100011s1=s5=s6=1v1,v5,v6s2=s3=s4=0 0

Isso nos permite escrever

P(s)=EusEuWEu+Eu,jsEu(1-sj)WEuj

O primeiro termo conta apenas os pesos de todos os vértices no lado "bom" do corte. O segundo termo conta o peso de uma aresta se os vértices que ela conectar estiverem em lados opostos do corte. Observe que isso não conta duas vezes, pois só conta a aresta quando e não quando .sEu=1,sj=0 0sEu=0 0,sj=1

Então agora nosso problema de otimização é encontrar a string que maximiza . A idéia aqui é pensar em como uma medida de energia de um sistema como o estado do sistema. Isso significa que podemos relacionar ao nosso Hamiltoniano. Aqui está um pouco sutil que estamos tentando maximizar mas geralmente falamos em encontrar o estado fundamental de um Hamiltoniano. Isso não é um problema, mas eu queria salientar - podemos observar o estado de excitação mais alta de energia (estado anti-terra, se ) ou usar como nossa função de energia e trabalhar com o estado fundamental como normal. O trabalho de Let com a mais alta animado estado e maximizar .sP(s)P(s)sP(s)P(s)-P(s)P

Gostaríamos de criar um hamiltoniano de modo que seu estado de energia mais alto seja modo que seja o máximo. Essencialmente, queremos transformar , uma função de energia, em , um operador de energia. Fazemos isso observando que, para , temos|s0 0P(s0 0)P(s)H | s { | 0 , | 1 } eu - ZH^|s{|0,|1}

IZ2|s=s|s define s^i=IZi2

Onde é o Pauli agindo no qubit . Agora obtemos nosso Hamiltoniano substituindo por (e 1 por ) emZiZisss^EuP

H=Eus^EuWEu+Eu,js^Eu(Eu-s^j)WEu,j=EuEu-ZEu2WEu+Eu,jEu-ZEu2(Eu-Eu-Zj2)WEu,j

Isso pode ser limpo expandindo e vendoi,j(ZiZj)=0

H=iwi2(IZi)+i,jwij4(IZiZj)=iwi2(IZi)+i<jwij2(IZiZj)

Podemos limpar isso ainda mais, multiplicando por 2 e removendo uma constante mudança de energia (exclua os termos ). Novo Hamiltoniano com os mesmos valores próprios com valores próprios redimensionados e deslocados (claramente a energia máxima não é afetada por essas transformações)I

H=iwiZii<jwijZiZj

Se você é um físico de matéria condensada, provavelmente reconhecerá esse hamiltoniano como um vidro de spin de Ising. Não é realmente relevante para o problema, mas acho que é legal.

Então agora temos um hamiltoniano cujo estado (anti-) fundamental codifica a sequência de bits que maximiza e resolve o problema.s0P(s)

A última coisa que precisamos é de um Hamiltoniano inicial , que lentamente (adiabaticamente) transformamos em nosso Hamiltoniano final, para que possamos definir o Hamiltoniano completoH0H

HT(t)=(1f(t))H0+f(t)H:f(0 0)=0 0,f(tf)=1

Como ponto de partida, é frequentemente usado para simplificar. O mínimo determinado pela precisão desejada e pelo intervalo espectral . O intervalo espectral é a diferença mínima de energia, acima de todos os , entre o estado (anti-) fundamental e o próximo estado energético. A análise da lacuna é altamente não trivial (consulte https://arxiv.org/abs/quant-ph/0509162 ) e determina a complexidade / eficiência do algoritmo. Um algoritmo com 0 intervalo não é garantido para funcionar.f(t)ttf3t

Então, queremos um tal queH0

  1. Podemos encontrar e preparar facilmente seu (anti) estado fundamental
  2. O intervalo espectral de não é exponencialmente pequeno no tamanho do problemaH

Para esse problema, um bom Hamiltoniano inicial é porque é fácil encontrar o estado de energia mais alto, é . É fácil de preparar, basta aplicar a . Não tenho tempo para entrar na análise da lacuna espectral, mas é improvável que esse hamiltoniano seja ideal nesse sentido (consulte https://arxiv.org/abs/1701.05584 ).H0=iXi|+nHn|0n

Com essa escolha de e tomando , terminamos. Nosso Hamiltoniano éH0f(t)=t/tf

H(t)=(1f(t))iXif(t)[iwiZi+i<jwijZiZj]

Começando no estado , evoluindo de acordo com o Hamiltoniano acima para o tempo (escolher um adequado é, novamente, geralmente altamente não trivial ), então a medição na base computacional deve retornar (com alta probabilidade) a string que maximiza .|ψ0=Hn|0ntftfs=s0P(s)

1 Isso é ambíguo, pois por simetria os dois lados o farão. Podemos fazer isso rigoroso, por exemplo, direcionando o corte e levando os vértices para a esquerda do corte ao caminhar na direção do corte.

2 Eu disse no comentário que minimizamos uma função de custo; se você prefere isso, basta pegar o custo pagamento e minimizar o custo.=

3 Estou examinando alguns detalhes sobre o que "lento" significa embaixo do tapete, mas pode estar relacionado à escala de energia do problema (por exemplo, multiplicar por uma constante mudará a velocidade).H

Restrições

Digamos que queremos modificar o problema acima para exigir que exatamente vértices estejam do lado "bom" do nosso corte. Matematicamente, isso é . Para impor isso, adicionamos um termo de penalidade ao Hamiltoniano para soluções que quebram essa restrição. Portanto, adicionamos um termo como escolhendo grande o suficiente para garantir que um estado que viole essa restrição não seja o estado de energia mais alta.5isi5=0Hc=-α(Eus^Eu-5Eu)2α

Digamos que, em vez disso, queremos exigir que não haja mais de vértices no lado "bom" do nosso corte. Parece que isso é bastante difícil de fazer. Em https://arxiv.org/abs/1702.06248, eles afirmam que aproximar uma restrição de desigualdade para ordenar requer acoplamentos de -pin que exigiriam ainda mais sobrecarga para divida-os em acoplamentos de 2 qubit, o que geralmente é necessário em uma determinada arquitetura. Essencialmente, a estratégia é aproximar uma função de etapa usando um5kO(N2k) kkºordem polinomial. Parece uma maneira terrível de fazer isso - mas não consigo pensar em uma maneira melhor. Como vem de Troyer em 2017, é relativamente improvável, embora certamente possível, que atualmente seja conhecida uma maneira melhor.

O caso geral

A pergunta é sobre um método geral para codificar um problema de otimização em um hamiltoniano. Especificamente, queremos minimizar sujeito a um conjunto de restrições. Na seção acima, discuti a adição de restrições ao Hamiltoniano. Então, para um completamente geral , existe uma maneira de codificá-lo para um hamiltoniano? O método geral para isso na literatura é assumir que temos acesso a um oráculo quântico eficiente que implementa . Podemos pensar nisso como ter uma operação de caixa preta (ou seja, oráculo quântico) modo que . Então, podemos construir nosso Hamiltoniano como f(x)f(x)f(x)f^(x)f^(x)|x=f(x)|x

H=xf^(x)|xx|
É claro que isso apenas empurra a parte difícil para encontrar / construir . De fato, argumentos simples de contagem mostram que quase todos (no sentido matemático) oráculos quânticos são exponencialmente ineficientes para implementar (consulte http://www.ar-tiste.com/imp-oracles/imps2.pdf ). Portanto, embora essa seja uma codificação geral de um problema de otimização para um Hamiltoniano - não é realmente prático. Parece que se você quiser codificar seu problema de otimização em um hamiltoniano de uma maneira útil - precisará aproveitar alguma estrutura de . Meu entendimento é que as especificidades de exatamente como fazer isso e como fazer isso da melhor maneiraf^(x)f(x) maneira não é totalmente compreendida e é objeto de pesquisa ativa.

bRost03
fonte
O problema maxcut está bem explicado nesta resposta. No entanto, o problema de otimização é afirmado de uma maneira que se desvia um pouco do problema de corte máximo em relação às restrições de igualdade e desigualdade.
Bram
Eu não faço muito com otimização no meu trabalho. Você pode dar um exemplo específico que esteja em conformidade com o formulário fornecido? Eu posso tomar uma facada em esbarra com um Hamiltoniano para ele
bRost03
Eu editei a resposta para incluir uma restrição de igualdade e discutir a dificuldade de implementar uma restrição de desigualdade
bRost03
Edição adicional para adicionar um resumo sobre o caso geral
bRost03 11/11/19
Ótima resposta! Eu estava especialmente interessado na parte que explica a transição entre e . ss^
brzepkowski