def test_star(self): graph = nx.star_graph(10) F = TseitinFormula(graph) self.assertEqual(len(list(F.variables())), 10) self.assertEqual(len(F), 2**9 + 10) self.assertEqual(len([C for C in F if len(C) == 10]), 2**9) self.assertEqual(len([C for C in F if len(C) == 1]), 10) for C in F: if len(C) == 1: self.assertFalse(C[0][0])
def test_star(self): graph=nx.star_graph(10) F = TseitinFormula(graph) self.assertEquals(len(list(F.variables())),10) self.assertEquals(len(list(F.clauses())),2**9+10) self.assertEquals(len([C for C in F.clauses() if len(C)==10]),2**9) self.assertEquals(len([C for C in F.clauses() if len(C)==1]),10) for C in F.clauses(): if len(C)==1: self.assertFalse(C[0][0])
def test_null(self): dimacs = """\ p cnf 0 0 """ graph = nx.null_graph() F = TseitinFormula(graph) self.assertCnfEqualsDimacs(F, dimacs)
def test_empty_graph(self): dimacs = """\ p cnf 0 1 0 """ graph = nx.empty_graph(10) F = TseitinFormula(graph) self.assertCnfEqualsDimacs(F, dimacs)
def test_one_edge(self): dimacs = """\ p cnf 1 2 1 0 -1 0 """ graph = nx.path_graph(2) F = TseitinFormula(graph) self.assertCnfEqualsDimacs(F, dimacs)
def test_multi_edge(self): dimacs = """\ p cnf 2 4 1 -2 0 -1 2 0 1 2 0 -1 -2 0 """ graph = nx.MultiGraph() graph.add_nodes_from((0, 1)) graph.add_edges_from(((0, 1), (0, 1))) F = TseitinFormula(graph) self.assertCnfEqualsDimacs(F, dimacs)
def test_cycle(self): for n in range(3, 8): graph = nx.cycle_graph(n) F = EvenColoringFormula(graph) G = TseitinFormula(graph, [1] * n) self.assertCnfEquivalentModuloVariables(F, G)
def test_charge_odd(self): graph=nx.star_graph(10) F = TseitinFormula(graph,[1]*11) for C in F.clauses(): if len(C)==1: self.assertTrue(C[0][0])
def test_parameters(self): for sz in range(1, 5): parameters = ["cnfgen", "-q", "tseitin", "--complete", sz] graph = nx.complete_graph(sz) F = TseitinFormula(graph) self.checkFormula(sys.stdin, F, parameters)
def test_charge_first(self): graph = nx.star_graph(10) F = TseitinFormula(graph, [1]) G = TseitinFormula(graph) self.assertCnfEqual(F, G)
def test_charge_odd(self): graph = nx.star_graph(10) F = TseitinFormula(graph, [1] * 11) for C in F.clauses(): if len(C) == 1: self.assertTrue(C[0][0])
def test_cycle(self): for n in range(3, 8): graph = nx.cycle_graph(n) F = PerfectMatchingPrinciple(graph) G = TseitinFormula(graph, [1] * n) self.assertCnfEquivalentModuloVariables(F, G)
def test_charge_even(self): graph = nx.star_graph(10) F = TseitinFormula(graph, [0] * 11) for C in F: if len(C) == 1: self.assertFalse(C[0][0])