Digamos que temos um problema de otimização no formato:
onde é uma função objetiva, são restrições de desigualdade e 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 ?
fonte
Respostas:
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
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} vEu∈ V WEu≥ 0 vEu vj Weu j≥ 0 P 1P 1
Fonte
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 = 13 5 + 6 + 1 = 12 → P= 25 P 2P 2
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 , 1 }n sEu= 0 → vEu s i = 1 → v i w i jsEu= 1 → vEu Weu j= 0 vEu, 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 = 100011 s1= s5= s6= 1 → v1, v5, v6 s2= s3= s4= 0
Isso nos permite escreverP( s ) = ∑EusEuWEu+ ∑i , jsEu( 1 - sj) weu j
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 sEu= 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 .s P( S ) P( S ) s P( 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 0⟩ P( s0 0) P( S ) H | s ⟩ ∈ { | 0 ⟩ , | 1 ⟩ } eu - ZH^ |s⟩∈{|0⟩,|1⟩} I−Z2|s⟩=s|s⟩→ define s^i=I−Zi2
Onde é o Pauli agindo no qubit . Agora obtemos nosso Hamiltoniano substituindo por (e 1 por ) emZi Z i ss s^ I P
Isso pode ser limpo expandindo e vendo∑i , j( ZEu- Zj)=0→
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
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.s0 P(s)
A última coisa que precisamos é de um Hamiltoniano inicial , que lentamente (adiabaticamente) transformamos em nosso Hamiltoniano final, para que possamos definir o Hamiltoniano completoH0 H HT(t)=(1−f(t))H0+f(t)H:f(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)∝t tf 3 t
Então, queremos um tal queH0
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 |+⟩⊗n H⊗n |0⟩⊗n
Com essa escolha de e tomando , terminamos. Nosso Hamiltoniano éH0 f(t)=t/tf
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⟩=H⊗n|0⟩⊗n tf tf s=s0 P(s)
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.5 ∑isi−5=0 Hc=−α(∑is^i- 5 I)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 um5 k O ( N2 k) k kº 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 comof( X ) f( X ) f( X ) f^( X ) f^( X ) | x ⟩ = f( X ) | x ⟩ H= ∑xf^( X ) | x ⟩ ⟨ x |
É 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.
fonte