def test_2sat_800_clauses_unsatisfiable(): clauses = [] with open("tests/week4_2sat_800_2.txt") as handle: handle.readline() for line in handle: x, y = line.split() clauses.append((int(x), int(y))) reduced_clauses = reduce_clauses(clauses) assert papadimitriou(reduced_clauses) == False
def test_2sat_400_clauses(): clauses = [] with open("tests/week4_2sat_400.txt") as handle: handle.readline() for line in handle: x, y = line.split() clauses.append((int(x), int(y))) assert papadimitriou(clauses) == True reduced_clauses = reduce_clauses(clauses) assert len(reduced_clauses) == 5 assert papadimitriou(reduced_clauses) == True
def main(): results = [] for i in range(1, 7): file = f"tests/week4_2sat{i}.txt" clauses = set() with open(file) as handle: handle.readline() for line in handle: x, y = line.split() clauses.add((int(x), int(y))) reduced_clauses = reduce_clauses(clauses) results.append(int(papadimitriou(reduced_clauses))) return "".join(map(str, results))
def test_2sat_3clauses_with_reduce(): clauses = [(1, -2), (-1, -2), (2, -3)] reduced_clauses = reduce_clauses(clauses) assert len(reduced_clauses) == 0 assert papadimitriou(reduced_clauses) == True
def test_2sat_4clauses_with_reduce_unsatisfiable(): clauses = [(1, -2), (-1, 2), (-2, 4), (-2, -4), (2, 4), (2, -4)] reduced_clauses = reduce_clauses(clauses) assert len(reduced_clauses) == 6 assert papadimitriou(reduced_clauses) == False
def test_2sat_4clauses_with_reduce(): clauses = [(1, 2), (-1, 3), (3, 4), (-2, -4)] reduced_clauses = reduce_clauses(clauses) assert len(reduced_clauses) == 0 assert papadimitriou(reduced_clauses) == True