HigherOrder Models¶
Sometimes it is nice to work with problems that are not restricted to quadratic interactions.
Binary Polynomials¶

class
BinaryPolynomial
(poly, vartype)[source]¶ A polynomial with binary variables and realvalued coefficients.
Parameters:  poly (mapping/iterable) – Polynomial as a mapping of form {term: bias, …}, where term is a collection of variables and bias the associated bias. It can also be an iterable of 2tuples (term, bias).
 vartype (
Vartype
/str/set) –Variable type for the binary quadratic model. Accepted input values:
Vartype.SPIN
,'SPIN'
,{1, 1}
Vartype.BINARY
,'BINARY'
,{0, 1}
Examples
Binary polynomials can be constructed in many different ways. The following are all equivalent
>>> poly = dimod.BinaryPolynomial({'a': 1, 'ab': 1}, dimod.SPIN) >>> poly = dimod.BinaryPolynomial({('a',): 1, ('a', 'b'): 1}, dimod.SPIN) >>> poly = dimod.BinaryPolynomial([('a', 1), (('a', 'b'), 1)], dimod.SPIN) >>> poly = dimod.BinaryPolynomial({'a': 1, 'ab': .5, 'ba': .5}, dimod.SPIN)
Binary polynomials act a mutable mappings but the terms can be accessed with any sequence.
>>> poly = dimod.BinaryPolynomial({'a': 1, 'ab': 1}, dimod.BINARY) >>> poly['ab'] 1 >>> poly['ba'] 1 >>> poly[{'a', 'b'}] 1 >>> poly[('a', 'b')] 1 >>> poly['cd'] = 4 >>> poly['dc'] 4
Methods¶
BinaryPolynomial.copy () 
Create a shallow copy. 
BinaryPolynomial.energies (samples_like[, dtype]) 
The energies of the given samples. 
BinaryPolynomial.energy (sample_like[, dtype]) 
The energy of the given sample. 
BinaryPolynomial.from_hising (h, J[, offset]) 
Construct a binary polynomial from a higherorder Ising problem. 
BinaryPolynomial.from_hubo (H[, offset]) 
Construct a binary polynomial from a higherorder unconstrained binary optimization (HUBO) problem. 
BinaryPolynomial.normalize ([bias_range, …]) 
Normalizes the biases of the binary polynomial such that they fall in the provided range(s). 
BinaryPolynomial.relabel_variables (mapping) 
Relabel variables of a binary polynomial as specified by mapping. 
BinaryPolynomial.scale (scalar[, ignored_terms]) 
Multiply the polynomial by the given scalar. 
BinaryPolynomial.to_binary ([copy]) 
Return a binary polynomial over {0, 1} variables. 
BinaryPolynomial.to_hising () 
Construct a higherorder Ising problem from a binary polynomial. 
BinaryPolynomial.to_hubo () 
Construct a higherorder unconstrained binary optimization (HUBO) problem from a binary polynomial. 
BinaryPolynomial.to_spin ([copy]) 
Return a binary polynomial over {1, +1} variables. 
Reducing to a Binary Quadratic Model¶
make_quadratic (poly, strength[, vartype, bqm]) 
Create a binary quadratic model from a higher order polynomial. 