def test_pubo_degree_reduction_pairs(): pubo = PUBO({ ('x0', 'x1'): -1, ('x1', ): 1, ('x1', 'x2'): -1, ('x2', ): 1, ('x3', 'x2'): -1, ('x3', ): 1, ('x4', 'x3'): -1, ('x4', ): 1, ('x4', 'x5'): -1, ('x5', ): 1, ('x5', 'x6'): -1, ('x6', ): 1, ('x7', 'x6'): -1, ('x7', ): 1, ('x8', 'x7'): -1, ('x8', ): 1, ('x9', 'x8'): -1, ('x9', ): 1 })**2 pairs = {('x0', 'x1'), ('x1', 'x2'), ('x2', 'x3'), ('x3', 'x4'), ('x4', 'x5'), ('x5', 'x6'), ('x6', 'x7'), ('x7', 'x8'), ('x8', 'x9')} qubo1 = pubo.to_qubo() qubo2 = pubo.to_qubo(pairs=pairs) assert qubo1.num_binary_variables - pubo.num_binary_variables > 9 assert qubo2.num_binary_variables - pubo.num_binary_variables == 9 quso1 = pubo.to_quso() quso2 = pubo.to_quso(pairs=pairs) assert quso1.num_binary_variables - pubo.num_binary_variables > 9 assert quso2.num_binary_variables - pubo.num_binary_variables == 9
def test_pubo_degree_reduction_lam(): pubo = PUBO({ ('x0', 'x1'): -1, ('x1',): 1, ('x1', 'x2'): -1, ('x2',): 1, ('x3', 'x2'): -1, ('x3',): 1, ('x4', 'x3'): -1, ('x4',): 1, }) ** 2 # just make sure it runs pubo.to_qubo(lam=4) pubo.to_qubo(lam=lambda v: v) pubo.to_qubo(lam=Symbol('lam')) pubo.to_qubo(lam=lambda v: v * Symbol('lam')) pubo.to_quso(lam=4) pubo.to_quso(lam=lambda v: v) pubo.to_quso(lam=Symbol('lam')) pubo.to_quso(lam=lambda v: v * Symbol('lam'))