# Discrete Quadratic Models¶

The discrete quadratic model (DQM) is a polynomial over *discrete* variables,
with all terms of degree two or less, where a discrete variable represents some
collection of distinct values, such as `{red, green, blue, yellow}`

or
`{3.2, 67}`

, which are called the variable’s *cases*.

A discrete quadratic model may be defined as

where \(\bf{d}_i\) are the discrete variables, \(a_i()\) and \(b_{i,j}()\) are real-valued functions, and \(c\) is a constant (offset).

You can represent any DQM with an equivalent model over **binary** variables
by replacing each discrete variable, \(\bf{d}_i\), with a vector of binary
variables using one-hot encoding,
where exactly one binary variable is True and all others are False:
\(\sum_a x_{i,a} = 1 \quad \forall i\).

In particular, a discrete quadratic model for \(N\) discrete variables, \(\bf{d}_i\), each with \(n_i\) cases, is then defined by using a binary variable, \(x_{i,u}\), to indicate whether discrete variable \(\bf{d}_i\) is set to case \(u\). The objective function can be expressed by the equation:

Both representations are equivalent over the *feasible space*; that is, the
solutions that meet the one-hot-encoding constraints. The second representation
ascribes energies both to the feasible space (satisfying constraints), and an
infeasible space (violating constraints). The second representation is used
by Ocean tools.

The `dimod.DiscreteQuadraticModel`

class can contain this model and its
methods provide convenient utilities for working with representations
of a problem.

These models and their use in solving problems on the D-Wave system are described in the following documentation:

Example Map Coloring: Hybrid DQM Sampler

Shows an example of using Leap‘s hybrid DQM solver,

`hybrid_binary_quadratic_model_version<x>`

, to solve a map coloring problem.`dimod.DiscreteQuadraticModel`

class documentationDescribes the DQM class and its methods.

`LeapHybridDQMSampler`

class documentationDescribes Leap’s DQM solver API.