dwave.graphs.algorithms.markov.sample_markov_network#

sample_markov_network(graph: Graph, sampler: Sampler, fixed_variables: Mapping[Hashable, float | floating | integer] | None = None, return_sampleset: bool = False, **sampler_args) Sequence[Mapping[Hashable, float | floating | integer]] | SampleSet[source]#

Samples from a Markov network using the provided sampler.

Parameters:
  • graph – A Markov network as returned by markov_network(). Potentials data is stored in a node/edge attribute potential.

  • sampler – A dimod sampler.

  • fixed_variables – A dictionary of variable assignments to be fixed in the Markov network.

  • return_sampleset – If True, returns a SampleSet rather than a list of samples.

  • **sampler_args – Additional keyword parameters are passed to the sampler.

Returns:

A list of samples ordered from low-to-high energy or a sample set.

Examples:

>>> import dimod
...
>>> potentials = {('a', 'b'): {(0, 0): -1,
...                            (0, 1): .5,
...                            (1, 0): .5,
...                            (1, 1): 2}}
>>> MN = dwave.graphs.markov_network(potentials)
>>> sampler = dimod.ExactSolver()
>>> samples = dwave.graphs.sample_markov_network(MN, sampler)
>>> samples[0]
{'a': 0, 'b': 0}
>>> import dimod
...
>>> potentials = {('a', 'b'): {(0, 0): -1,
...                            (0, 1): .5,
...                            (1, 0): .5,
...                            (1, 1): 2}}
>>> MN = dwave.graphs.markov_network(potentials)
>>> sampler = dimod.ExactSolver()
>>> samples = dwave.graphs.sample_markov_network(MN, sampler, return_sampleset=True)
>>> samples.first
Sample(sample={'a': 0, 'b': 0}, energy=-1.0, num_occurrences=1)
>>> import dimod
...
>>> potentials = {('a', 'b'): {(0, 0): -1,
...                            (0, 1): .5,
...                            (1, 0): .5,
...                            (1, 1): 2},
...               ('b', 'c'): {(0, 0): -9,
...                            (0, 1): 1.2,
...                            (1, 0): 7.2,
...                            (1, 1): 5}}
>>> MN = dwave.graphs.markov_network(potentials)
>>> sampler = dimod.ExactSolver()
>>> samples = dwave.graphs.sample_markov_network(MN, sampler, fixed_variables={'b': 0})
>>> samples[0]
{'a': 0, 'c': 0, 'b': 0}