¿Cómo escriben programas para DWave?

El lenguaje de más alto nivel disponible para las computadoras cuánticas es Quipper, que se basa en Haskell, pero aún es de nivel bastante bajo cuando se trata de la parte cuántica. Sin embargo, al menos hace cosas como generar circuitos cuánticos reversibles a partir del código clásico (y todo tipo de otras operaciones de generación de circuitos), y realiza un seguimiento de dónde tiene bits y dónde – qubits (utilizando el sistema de tipos de Haskell).

Pero probablemente notaste que dije “circuitos cuánticos”. Este es un lenguaje para QC de modelo de circuito, que no es el D-Wave. Para la D-Wave, la programación es en mi humilde opinión mucho más difícil: debe tomar el problema y asignarlo a un problema de optimización binaria cuadrática sin restricciones (QUBO), y sintonizar un grupo de parámetros (la optimización cuántica adiabática funciona configurando la inicial estado, y lentamente dejando que el sistema caiga al mínimo de energía, que es la configuración de la solución, y qué significa exactamente “lentamente” es una pregunta importante).

De http://arxiv.org/pdf/1309.3575.pdf

[…] Un proceso de programación cuántica adiabática comienza con la reducción de un problema clásico de optimización combinatoria a un problema de optimización binaria cuadrática no restringida (QUBO). El problema QUBO se asigna a los parámetros de un ising hamiltoniano lógico equivalente. El Ising Hamiltonian lógico debe asignarse al procesador como un Ising Hamiltonian físico, un proceso definido como incrustación. Esta transformación del problema reducido en un programa físicamente realizable depende tanto del diseño del hardware como de los controles de hardware disponibles. En última instancia, la solución calculada dependerá de todas las decisiones anteriores, así como de la física real subyacente al procesador.

TL; DR: Aún no estamos en la etapa de “ensamblador”, todavía estamos en la etapa de “programación de computadoras con memoria de batería”, donde necesitabas un conocimiento detallado de la forma en que funciona el hardware real para hacer algo.

Tengo entendido que Dwave se limita a resolver problemas matemáticos que se pueden lanzar como optimización binaria cuadrática sin restricciones. Esto puede describirse como sigue. Sea Q una matriz real simétrica y sea b un vector n por 1. Q yb están dados.

Buscamos resolver [math] min_x (xb) ‘Q (xb) [/ math]

Donde x es menos uno o uno en cada entrada.

Por lo tanto, no se necesita mucha codificación, simplemente ingresa las matrices