hybrid.utils.bqm_induced_by#

bqm_induced_by(bqm, variables, sample)[source]#

Induce a binary quadratic model by fixing values of boundary variables.

The function is optimized for len(variables) << len(bqm), that is, for fixing the majority of variables.

Parameters:
  • bqm (dimod.BinaryQuadraticModel) – Binary quadratic model (BQM).

  • variables (list/set) – Subset of variables to keep in the reduced BQM, typically a subgraph.

  • sample (dict/list) – Mapping of variable labels to values or a list when labels are sequential integers. Values are required only for boundary variables, that is, for variables with interactions with variables (having edges with non-zero quadratic biases connected to the subgraph).

Returns:

A BQM induced by fixing values of those variables adjacent to its subset of variables and setting the energy offset to zero.

Return type:

dimod.BinaryQuadraticModel

Examples

This example induces a 2-variable BQM from a 6-variable path graph—the subset of nodes 2 and 3 of nodes 0 to 5—by fixing values of boundary variables 1 and 4.

>>> import dimod
>>> import networkx as nx
>>> bqm = dimod.BinaryQuadraticModel({},
...     {edge: edge[0] + 0.5 for edge in set(nx.path_graph(6).edges)}, 0, 'BINARY')
>>> sample = {1: 3, 4: 3}
>>> len(bqm_induced_by(bqm, [2, 3], sample))
2