|
|
- #!/usr/bin/env python3
-
- from util import randomSAT as rdSAT
- import matplotlib.pyplot as plt
- import seaborn as sns
-
- import numpy as np
-
- def test1():
- kSATInstance = rdSAT.generateRandomKSAT(5, 4, 3)
-
- print(kSATInstance.toString())
-
- print("conflicts:")
-
- for conflict in kSATInstance.getConflicts():
- conflictVerified = False
-
- clause1 = kSATInstance.getClause(conflict[0][0])
- clause2 = kSATInstance.getClause(conflict[1][0])
-
- for binding in clause2:
- if binding == conflict[0][1] * -1:
- conflictVerified = True
-
- print(conflict[0], conflict[1], conflictVerified)
-
- def test2():
- data = {}
-
- data["clause"] = []
- data["num"] = []
- data["labels"] = []
-
- for i in range(10000):
- sat = rdSAT.generateRandomKSAT(7, 6, 3)
-
- for ci in range(sat.getNumberOfClauses()):
- clause = sat.getClause(ci)
- clause = list(np.sort(clause))
-
- if clause in data["clause"]:
- clauseIndex = data["clause"].index(clause)
- data["num"][clauseIndex] += 1
- else:
- data["clause"].append(clause)
- data["labels"].append("[{}, {}, {}]".format(clause[0], clause[1], clause[2]))
- data["num"].append(1)
-
-
- print("done ({}) unique clauses".format(len(data["clause"])))
-
- sns.set()
-
- sns.barplot(x=data["labels"], y=data["num"])
-
- plt.show()
-
- test2()
|