← Volver

Qué es Quantum Annealing

Introducción al quantum annealing para desarrolladores: cómo transforma problemas de optimización en paisajes de energía y qué papel juegan QUBO e Ising.

Algoritmos CuánticosQUBOD-Wave
Qué es el Quantum Annealing

Cuando un desarrollador se acerca por primera vez a la computación cuántica, lo habitual es encontrarse con puertas, circuitos, cúbits y algoritmos como Grover o Shor, un auténtico galimatías si no te has leído algunos libros de introducción al respecto.

Sin embargo, existe otra forma de utilizar fenómenos cuánticos para resolver problemas: el quantum annealing o “recocido” cuántico (lo dejamos en annealing que “recocido” en castellano suena realmente mal).

La idea fundamental es relativamente sencilla de expresar: en lugar de describir paso a paso un algoritmo mediante un circuito de puertas, formulamos un problema de optimización de tal forma que su mejor solución corresponda al estado de menor energía de un sistema físico. Después dejamos que el sistema evolucione intentando terminar precisamente en ese estado. Este camino es el que actualmente está teniendo mayor aplicabilidad en casos de uso reales, de la mano principalmente de la compañía D-Wave.

Si lo piensas bien, ¿no es eso exactamente lo que hemos hecho siempre cuando traducimos un problema a estructuras de datos y algoritmos en computación clásica?

Para un programador, este cambio de perspectiva es importante: el trabajo no se parece tanto a escribir una secuencia de instrucciones sino modelar y adaptar correctamente el problema que queremos resolver.

De un problema software a un paisaje de energía

Voy a explicar brevemente qué es el quantum annealing.

Supongamos que tenemos que elegir, entre muchas combinaciones posibles, aquel recorrido o camino que minimiza un coste. Puede tratarse de planificación, asignación de recursos, rutas o cualquier otro problema combinatorio susceptible de expresarse mediante variables binarias.

Una formulación habitual es QUBO (Quadratic Unconstrained Binary Optimization):

minimize⁡x∈{0,1}nxTQx\underset{\mathbf{x} \in \{0,1\}^{n}}{\operatorname{minimize}} \quad \mathbf{x}^{T} Q \mathbf{x}

Aquí, xx representa un vector de decisiones binarias y QQ contiene los costes e interacciones entre ellas. Los términos de la diagonal representan contribuciones lineales y los restantes describen interacciones entre variables.

Lo interesante es que un QUBO puede transformarse en un modelo de Ising, una formulación procedente de la física estadística en la que las variables toman valores −1-1 o +1+1:

E(s)=∑ihisi+∑i<jJijsisjE(s)=\sum_i h_i s_i + \sum_{i<j} J_{ij}s_i s_j

Los coeficientes hih_i representan sesgos individuales y JijJ_{ij} las interacciones entre variables. Resolver el problema significa buscar una configuración que minimice E(s)E(s).

Dicho de otro modo: hemos convertido un problema que reconocemos como desarrolladores en un paisaje de energía cuyo punto más bajo representa una buena solución.

Y si te fijas en la formulación matemática anterior, no es complicada en absoluto.

¿Dónde aparece lo cuántico?

El proceso comienza preparando un Hamiltoniano inicial cuyo estado fundamental es sencillo de obtener (puff, lo siento, esto viene de la mecánica cuántica). A continuación, el sistema evoluciona gradualmente hacia otro Hamiltoniano que codifica el problema que realmente queremos resolver.

Idealmente, si la evolución fuese suficientemente lenta y se cumplieran las condiciones del teorema adiabático, el sistema permanecería próximo al estado fundamental durante la evolución. Al finalizar, mediríamos una configuración asociada al mínimo del Hamiltoniano del problema.

En dispositivos reales la situación es más complicada. El sistema interactúa con su entorno, la temperatura no es cero y aparecen efectos dinámicos que hacen que el resultado no tenga por qué ser siempre el mínimo global. Por eso un annealer se utiliza normalmente como un sampler: ejecutamos el problema repetidas veces y obtenemos distintas muestras, cada una acompañada de su energía.

Un mecanismo relevante es el túnel cuántico, que puede permitir al sistema atravesar ciertas barreras del paisaje energético en lugar de tener que superarlas térmicamente. Esta es una diferencia conceptual con el simulated annealing, aunque convertirla en una ventaja computacional práctica depende fuertemente del problema, la formulación y el hardware.

Quantum annealing no es simulated annealing

Los nombres pueden inducir a confusión. El simulated annealing es un algoritmo clásico inspirado en el enfriamiento de materiales. Introduce aleatoriedad y acepta ocasionalmente soluciones peores para escapar de mínimos locales; esa probabilidad disminuye conforme avanza el proceso.

El quantum annealing utiliza un sistema cuántico físico y una evolución controlada de su Hamiltoniano. Ambos enfoques persiguen explorar paisajes de optimización difíciles, pero sus mecanismos físicos y computacionales no son los mismos.

Esta comparación es, además, útil cuando trabajamos experimentalmente: podemos formular el mismo QUBO y comparar un solver clásico basado en simulated annealing con muestras obtenidas de un procesador de quantum annealing.

No nos asegura que encontremos mágicamente el camino óptimo

Que un problema pueda expresarse como QUBO no significa que un quantum annealer vaya a resolverlo mejor que los mejores algoritmos clásicos. Tampoco debemos interpretar cada buen resultado experimental como una demostración de una genuina ventaja cuántica.

Hay costes adicionales que importan: formular correctamente restricciones y penalizaciones, adaptar el problema a la conectividad física disponible y, en determinados casos, realizar un embedding que represente una variable lógica utilizando varios cúbits físicos. Además, los métodos híbridos combinan con frecuencia procesamiento clásico y acceso al QPU.

Precisamente por eso, para un desarrollador el quantum annealing resulta interesante incluso antes de hablar de ventajas. Obliga a practicar algo que conocemos bien en ingeniería del software: la representación del problema determina buena parte de la solución.

Una forma diferente de pensar los algoritmos cuánticos

Quantum annealing amplía nuestra visión de lo que significa programar un computador cuántico, en el sentido de que no todo consiste en construir circuitos de puertas. En este paradigma, programar significa traducir un problema de optimización a variables binarias, construir una función objetivo, expresar restricciones mediante penalizaciones y analizar las muestras devueltas por el sistema.

Ese cambio resulta especialmente natural para quienes venimos del desarrollo de software. Primero modelamos. Después ejecutamos. Finalmente medimos, validamos y comparamos con alternativas clásicas.

Y quizá esa sea la idea más importante con la que quedarse: el quantum annealing no elimina la dificultad del problema; la desplaza hacia una formulación matemática que el hardware pueda explorar físicamente, y este hardware ya existe incluso a nivel comercial. Entender bien esa formulación es mucho más importante que dejarse impresionar por el número de cúbits de una máquina.