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 attributepotential.sampler – A dimod sampler.
fixed_variables – A dictionary of variable assignments to be fixed in the Markov network.
return_sampleset – If True, returns a
SampleSetrather 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}