dimod.utilities.ising_to_qubo¶
-
ising_to_qubo(h, J, offset=0.0)[source]¶ Convert an Ising problem to a QUBO problem.
Map an Ising model defined on spins (variables with {-1, +1} values) to quadratic unconstrained binary optimization (QUBO) formulation \(x' Q x\) defined over binary variables (0 or 1 values), where the linear term is contained along the diagonal of Q. Return matrix Q that defines the model as well as the offset in energy between the two problem formulations:
\[s' J s + h' s = offset + x' Q x\]See
qubo_to_ising()for the inverse function.Parameters: - h (dict[variable, bias]) – Linear biases as a dict of the form {v: bias, …}, where keys are variables of the model and values are biases.
- J (dict[(variable, variable), bias]) – Quadratic biases as a dict of the form {(u, v): bias, …}, where keys are 2-tuples of variables of the model and values are quadratic biases associated with the pair of variables (the interaction).
- offset (numeric, optional, default=0) – Constant offset to be applied to the energy. Default 0.
Returns: A 2-tuple containing:
dict: QUBO coefficients.
float: New energy offset.
Return type: Examples
This example converts an Ising problem of two variables that have positive biases of value 1 and are positively coupled with an interaction of value 1 to a QUBO problem.
>>> import dimod >>> h = {1: 1, 2: 1} >>> J = {(1, 2): 1} >>> dimod.ising_to_qubo(h, J, 0.5) # doctest: +SKIP ({(1, 1): 0.0, (1, 2): 4.0, (2, 2): 0.0}, -0.5)