#!/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()
|