def test_pfs_traverse_disconnected_some_visited(self): eid = EnergyImpactDecomposer(size=None, traversal='pfs') bqm = dimod.BinaryQuadraticModel({}, {'ab': 1, 'bc': 1, 'cd': 1, 'da': 1, 'ef': 1, 'fg': 1}, 0.0, dimod.SPIN) priority = collections.OrderedDict(zip('abcdefg', itertools.count(0, -1))) var = eid.traverse(bqm=bqm, sample=None, ordered_priority=priority, visited=set('abc'), size=3) # pick 'd' from first graph component, and 'ef' from the second self.assertEqual(var, set('def'))
def test_pfs_traverse_connected_too_small(self): eid = EnergyImpactDecomposer(size=None, traversal='pfs') bqm = dimod.BinaryQuadraticModel({}, {'ab': 1, 'bc': 1, 'cd': 1, 'da': 1}, 0.0, dimod.SPIN) priority = collections.OrderedDict(zip('bdac', itertools.count(0, -1))) var = eid.traverse(bqm=bqm, sample=None, ordered_priority=priority, visited=set(), size=5) # start from 'b', try to pick more then there is (get complete graph back) self.assertEqual(var, set('abcd'))
def test_pfs_traverse_connected_some_visited(self): eid = EnergyImpactDecomposer(size=None, traversal='pfs') bqm = dimod.BinaryQuadraticModel({}, {'ab': 1, 'bc': 1, 'cd': 1, 'da': 1, 'bd': 1}, 0.0, dimod.SPIN) priority = collections.OrderedDict(zip('bdac', itertools.count(0, -1))) var = eid.traverse(bqm=bqm, sample=None, ordered_priority=priority, visited=set('b'), size=3) # start with 'b' visited, so use 'd' as root and pick 2 more neighbors self.assertEqual(var, set('dac'))
def test_pfs_traverse_connected(self): eid = EnergyImpactDecomposer(size=None, traversal='pfs') bqm = dimod.BinaryQuadraticModel({}, {'ab': 1, 'bc': 1, 'cd': 1, 'da': 1}, 0.0, dimod.SPIN) priority = collections.OrderedDict(zip('bdac', itertools.count(0, -1))) var = eid.traverse(bqm=bqm, sample=None, ordered_priority=priority, visited=set(), size=3) # start from 'b', pick 2 connected variables, traversed in order of best energy (priority) self.assertEqual(var, set('bad'))
def test_energy_traverse(self): eid = EnergyImpactDecomposer(size=1, traversal='energy') priority = collections.OrderedDict((v, v) for v in range(1, 4)) var = eid.traverse(bqm=None, sample=None, ordered_priority=priority, visited=[2, 1], size=2) self.assertEqual(var, [3])