¿Existe un método general para expresar el problema de optimización como hamiltoniano?

9

Digamos que tenemos un problema de optimización en la forma:

minxf(x)gi(x)0,i=1,...,mhj(x)=0,j=1,...,p,

donde f(x) es una función objetivo, gi(x) son restricciones de desigualdad y hj(x) son restricciones de igualdad.

Recientemente estaba leyendo sobre la computación cuántica adiabática . La Wikipedia dice:

Primero, se encuentra un hamiltoniano (potencialmente complicado) cuyo estado fundamental describe la solución al problema de interés. A continuación, se prepara un sistema con un Hamiltoniano simple y se inicializa al estado fundamental. Finalmente, el hamiltoniano simple evoluciona adiabáticamente al hamiltoniano complicado deseado. Según el teorema adiabático, el sistema permanece en el estado fundamental, por lo que al final el estado del sistema describe la solución del problema. La computación cuántica adiabática ha demostrado ser polinomialmente equivalente a la computación cuántica convencional en el modelo de circuito.

¿Existe algún método general para expresar el problema de optimización (por ejemplo, como se presentó anteriormente) en el formalismo hamiltoniano utilizado en la computación cuántica adiabática ?

brzepkowski
fuente
1
No estoy seguro de qué tan formal es la respuesta que desea, pero generalmente define una función de costo que está lejos de la solución y es mínima en la solución. Luego traduce esta función de costo al lenguaje de giro Pauli (supongo que es este paso que le gustaría aclarar). Una vez que su función de costo está en el idioma de giro, es su Hamiltoniano. Si estaba buscando cadenas binarias, por ejemplo, puede usar el hecho de que (I-Zi) / 2 devolverá el valor del bit i. Si esto es lo que quieres, puedo intentar escribirlo mañana si tengo tiempo
bRost03
¿Podría mostrar algún ejemplo como respuesta? Sería maravilloso :)
brzepkowski
Consulte arxiv.org/abs/1302.5843 (Lucas Ising 2014) para ver muchos ejemplos.
Paradoja

Respuestas:

6

Como se solicitó en los comentarios, aquí hay un ejemplo trabajado. El cuerpo principal se ocupa de minimizar para un problema específico. En la parte inferior sigue una breve discusión de las restricciones y luego una breve discusión sobre el caso general.f(x)

Vamos a resolver el problema de corte máximo ponderado ya que esto

  1. Es un ejemplo relativamente sencillo
  2. Es duro clásicamente
  3. Es un ejemplo relativamente común en la literatura (por ejemplo, https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.90.067903 )
  4. Tiene una conexión clara con un hamiltoniano físico (Ising spin-glasses)

Para comprender el problema, comenzamos con un gráfico no dirigido de vértices , donde cada vértice tiene un peso y cada borde que conecta y tiene un peso . Luego cortamos el gráfico en dos partes. No es necesario que el corte sea recto, pero no debe auto-intersectarse y no puede cortar ningún borde dos veces. Luego calculamos un " pago " para nuestro corte. El pago es la suma de los pesos de los bordes que cortamos, más la suma de los pesos de los vértices en un lado del corte. n{V}viVwi0vivjwij0P 1P1

Fuenteingrese la descripción de la imagen aquí

En esta imagen, el pago sería, para los bordes más para los vértices (suponiendo que el número dentro de cada vértice sea su peso) . El problema de optimización es maximizar para un gráfico dado . 1+4+3+3+2=135+6+1=12P=25P2

Para escribir esto matemáticamente, podemos pensar en términos de cadenas de bits. Definimos un corte por una cadena donde no se cuenta en la suma y se cuenta en la suma. Para hacer las matemáticas un poco más limpias, si el gráfico no está completamente conectado, haga que el gráfico esté completamente conectado y establezca para cualquier par no conectado .s{0,1}nsi=0vi si=1vi wij=0vi,vj

Por ejemplo, mirando de nuevo la imagen de arriba, interpretemos los números dentro de los vértices como el índice de vértice en lugar del peso como supusimos anteriormente. Entonces el corte dibujado corresponde a . están en el lado "bueno" del corte y se cuentan, mientras que están en el lado "malo" del corte y no se cuentan .s=100011s1=s5=s6=1v1,v5,v6s2=s3=s4=0

Esto nos permite escribir

P(s)=isiwi+i,jsi(1sj)wij

El primer término solo cuenta los pesos de todos los vértices en el lado "bueno" del corte. El segundo término cuenta el peso de un borde si los vértices que conecta están en lados opuestos del corte. Tenga en cuenta que esto no cuenta dos veces, ya que solo cuenta el borde cuando y no cuando .si=1,sj=0si=0,sj=1

Entonces, nuestro problema de optimización es encontrar la cadena que maximiza . La idea aquí es pensar en como una medida de energía de un sistema como el estado del sistema. Esto significa que podemos relacionar con nuestro hamiltoniano. Aquí hay una ligera sutilidad de que estamos tratando de maximizar pero generalmente hablamos de encontrar el estado fundamental de un hamiltoniano. Esto no es un problema, pero quería señalarlo: en su lugar, podemos ver el estado excitado con la energía más alta (estado anti-tierra si lo desea) o usar como nuestra función de energía y luego trabajar con el estado fundamental como normal El trabajo de Let con el más alto estado excitado y maximizar .sP(s)P(s)sP(s)P(s)P(s)P

Nos gustaría crear un hamiltoniano de modo que su estado de energía más alto sea modo que sea ​​máximo. Esencialmente queremos convertir , una función de energía, en , un operador de energía. Hacemos esto al notar que para tenemos|s0P(s0)P(s)H^|s{|0,|1}

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

Donde es el Pauli actuando en qubit . Ahora obtenemos nuestro Hamiltoniano reemplazando con (y 1 con ) enZiZiss^IP

H=is^iwi+i,js^i(Is^j)wi,j=iIZi2wi+i,jIZi2(IIZj2)wi,j

Esto se puede limpiar expandiendo y viendoi,j(ZiZj)=0

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

Podemos limpiar esto aún más multiplicando por 2 y eliminando un cambio de energía constante (elimine los términos ). Nuevo hamiltoniano con los mismos estados propios con valores propios escalados y desplazados (claramente la energía máxima no se ve afectada por estas transformaciones)I

H=iwiZii<jwijZiZj

Si eres un físico de materia condensada, probablemente reconocerás a este hamiltoniano como un vidrio giratorio Ising. No es realmente relevante para el problema, pero creo que es genial.

Entonces ahora tenemos un hamiltoniano cuyo estado (anti-) fundamental codifica la cadena de bits que maximiza y resuelve el problema.s0P(s)

Lo último que necesitamos es un Hamiltoniano inicial , que lentamente (adiabáticamente) transformamos en nuestro Hamiltoniano final para que podamos definir el Hamiltoniano completoH0H

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

Como punto de partida, se usa a menudo por simplicidad. El mínimo determinado por la precisión deseada y la brecha espectral . La brecha espectral es la diferencia de energía mínima, sobre todo , entre el estado (anti-) fundamental y el siguiente estado de energía. El análisis de la brecha es altamente no trivial (consulte https://arxiv.org/abs/quant-ph/0509162 ) y determina la complejidad / eficiencia del algoritmo. No se garantiza que un algoritmo con 0 gap funcione en absoluto.f(t)ttf3t

Entonces queremos un tal queH0

  1. Podemos encontrar y preparar fácilmente su (anti) estado fundamental
  2. La brecha espectral de no es exponencialmente pequeña en el tamaño del problemaH

Para este problema, un buen Hamiltoniano inicial es porque su estado de energía más alto es fácil de encontrar, es . Es fácil de preparar, simplemente aplique a . No tengo tiempo para entrar en el análisis de la brecha espectral, pero es poco probable que este hamiltoniano sea ideal en ese sentido (ver https://arxiv.org/abs/1701.05584 ).H0=iXi|+nHn|0n

Con esta elección de y tomando hemos terminado. Nuestro hamiltoniano esH0f(t)=t/tf

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

Comenzando en el estado , evolucionando según el Hamiltoniano anterior para el tiempo (elegir un adecuado es, nuevamente, generalmente altamente no trivial ) luego, medir en la base computacional debería devolver (con alta probabilidad) la cadena que maximiza .|ψ0=Hn|0ntftfs=s0P(s)

1 Esto es ambiguo ya que por simetría cualquier lado lo hará. Podemos hacer esto riguroso, por ejemplo, haciendo el corte dirigido y luego tomando los vértices a la izquierda del corte al caminar a lo largo de la dirección del corte.

2 Había dicho en el comentario que minimizamos una función de costo, si te gusta más, solo toma cost pago y minimiza el costo.=

3 Estoy barriendo algunos detalles sobre lo que significa "lento" debajo de la alfombra pero puede estar relacionado con la escala de energía del problema (es decir, multiplicar por una constante cambiará la velocidad).H

Restricciones

Digamos que queremos modificar el problema anterior para requerir que exactamente vértices estén en el lado "bueno" de nuestro corte. Matemáticamente esto es . Para hacer cumplir esto, agregamos un término de penalización en nuestro Hamiltoniano para soluciones que rompan esta restricción. Entonces, agregamos un término como eligiendo suficientemente grande como para garantizar que un estado que viola esta restricción no puede ser el estado de mayor energía.5isi5=0Hc=α(is^i5I)2α

Digamos que queremos exigir que no haya más de vértices en el lado "bueno" de nuestro corte. Esto, al parecer, es bastante difícil de hacer. En https://arxiv.org/abs/1702.06248 afirman que la aproximación de una restricción de desigualdad al orden requiere -spin acoplamientos que requerirían aún más sobrecarga para divídalos en acoplamientos de 2 qubits, que a menudo es necesario en una arquitectura dada. Esencialmente, la estrategia es aproximar una función de paso usando un5kO(N2k) kkthorden polinomial. Esto parece una forma terrible de hacerlo, pero no puedo pensar en una mejor manera. Esto viene de Troyer en 2017, por lo que es relativamente poco probable, aunque ciertamente posible, que actualmente se conozca una mejor manera.

El caso general

La pregunta se refiere a un método general para codificar un problema de optimización en un hamiltoniano. Específicamente, queremos minimizar sujeto a un conjunto de restricciones. En la sección anterior discutí agregar las restricciones al hamiltoniano. Entonces, para una completamente general , ¿hay alguna forma de codificarla en un hamiltoniano? El método general para esto en la literatura es asumir que tenemos acceso a un oráculo cuántico eficiente que implementa . Podemos pensar que esto tiene una operación de caja negra (es decir, oráculo cuántico) tal que . Entonces podemos construir nuestro Hamiltoniano como f(x)f(x)f ( x ) f ( x ) f ( x ) | x = f ( x ) | x H = Σ x f ( x ) | x x | F ( x ) f ( x )f(x)f^(x)f^(x)|x=f(x)|x

H=xf^(x)|xx|
Por supuesto, esto simplemente empuja la parte difícil a encontrar / construir . De hecho, los argumentos de conteo simples muestran que casi todos (en el sentido matemático) los oráculos cuánticos son exponencialmente ineficientes para implementar (ver http://www.ar-tiste.com/imp-oracles/imps2.pdf ). Entonces, si bien esta es una codificación general de un problema de optimización en un Hamiltoniano, no es realmente práctico. Parecería ser el caso de que si desea codificar su problema de optimización en un Hamiltoniano de una manera útil , deberá aprovechar alguna estructura de . Tengo entendido que los detalles específicos de cómo hacer esto y cómo hacerlo de la mejor maneraf^(x)f(x) no se entiende completamente y es objeto de una investigación activa.

bRost03
fuente
El problema de maxcut está bien explicado en esta respuesta. Sin embargo, el problema de optimización se plantea de una manera que se desvía un poco del problema de corte máximo con respecto a las restricciones de igualdad y desigualdad.
Bram
No hago demasiado con la optimización en mi trabajo. ¿Puedes dar un ejemplo específico que se ajuste a la forma dada? Puedo
tratar de encontrar
He editado la respuesta para incluir una restricción de igualdad y discutir la dificultad de implementar una restricción de desigualdad
bRost03
Editado más para agregar una propaganda sobre el caso general
bRost03
¡Gran respuesta! Me interesaba especialmente en la parte que explica transición entre y . sss^
brzepkowski