La computación cuántica ha abierto nuevas fronteras para resolver problemas complejos de optimización.
Entre las herramientas desarrolladas por D-Wave Systems, una de las más útiles para flujos de trabajo híbridos (cuántico + clásico) es QBsolv, un solucionador diseñado para Modelos Cuadráticos Binarios (BQM).
En este artículo exploramos qué es QBsolv, por qué es útil y cómo implementarlo paso a paso en Python.
QBsolv es una herramienta de código abierto incluida en el Ocean SDK de D-Wave.
Su función es descomponer grandes modelos cuadráticos binarios (BQM) en subproblemas más pequeños, más fáciles de resolver, ya sea, bien en una CPU clásica o en un annealer cuántico de D-Wave, si se dispone de acceso.
En otras palabras, QBsolv permite simular o combinar optimización cuántica y clásica sin necesidad de contar con un sistema cuántico completo.
Un BQM representa problemas que pueden expresarse como la minimización de una función cuadrática de variables binarias:
««
[
E(x) = sum_i a_i x_i + sum_{i<j} b_{ij} x_i x_j
]
«««
Donde cada variable es (x_i in {0,1}).
Esta formulación abarca numerosos problemas reales: planificación, partición de grafos, agrupamiento (clustering), aprendizaje automático y finanzas.
El objetivo es encontrar la combinación de variables (x_i) que minimice la energía total (E(x)).
Python es el lenguaje principal del D-Wave Ocean SDK y ofrece:
dwave-system, dimod y neal.Instala todos los paquetes necesarios (incluido dwave-qbsolv) mediante pip:
pip install dwave-ocean-sdk
Esto incluye módulos como dwave-system, dwave-qbsolv y dimod.
En tu script de Python o cuaderno Jupyter:
from dwave.system import DWaveSampler, EmbeddingComposite
from dwave_qbsolv import QBSolv
import dimod
Define un modelo simple utilizando dimod:
# Minimizar: x0 + x1 - 2*x0*x1
bqm = dimod.BinaryQuadraticModel(
linear={'x0': 1, 'x1': 1},
quadratic={('x0', 'x1'): -2},
vartype=dimod.BINARY
)
QBsolv puede resolver el modelo de dos maneras: clásicamente o mediante un sampler cuántico de D-Wave.
response = QBSolv().sample(bqm)
print("Mejor muestra:", response.first.sample)
print("Energía:", response.first.energy)
sampler = EmbeddingComposite(DWaveSampler())
response = QBSolv().sample(bqm, solver=sampler)
print("Mejor muestra:", response.first.sample)
print("Energía:", response.first.energy)
QBsolv devuelve un objeto SampleSet del que puedes revisar sus soluciones con:
for sample, energy in response.data(['sample', 'energy']):
print(sample, "Energía:", energy)
Mejor muestra: {'x0': 1, 'x1': 1}
Energía: 0.0
Implementar D-Wave QBsolv en Python es un proceso directo:
dimod.El verdadero desafío no está en el código, sino en formular correctamente el modelo BQM que representa tu problema.
Una vez definido, Python y el ecosistema de D-Wave se encargan del resto.
La computación cuántica aún está en desarrollo, pero herramientas como QBsolv nos permiten experimentar con su potencial hoy mismo, combinando lo mejor del procesamiento clásico y cuántico en un solo marco de trabajo.
La biografía más vendida del cofundador de Apple, Steve Jobs; escrita por uno de los…
Hubo un tiempo en el que la “seguridad en el hogar” significaba confiar en un…
Elon Musk vuelve a romper todos los esquemas. Los accionistas de Tesla acaban de aprobar…
Los fans de Grand Theft Auto tendrán que esperar un poco más para volver a…
Five Nights at Freddy’s: Into the Pit nos sumerge en un misterioso mundo donde lo…
Adéntrate en el oscuro y retorcido mundo de Bendy and the Ink Machine, donde los…