initial support for weighted model countign
This commit is contained in:
@@ -24,7 +24,9 @@ class CircuitNode
|
||||
CircuitNode (const Clauses& clauses, string explanation = "")
|
||||
: clauses_(clauses), explanation_(explanation) { }
|
||||
|
||||
const Clauses& clauses (void) { return clauses_; }
|
||||
const Clauses& clauses (void) const { return clauses_; }
|
||||
|
||||
Clauses clauses (void) { return clauses_; }
|
||||
|
||||
virtual double weight (void) const { return 0; }
|
||||
|
||||
@@ -43,6 +45,8 @@ class OrNode : public CircuitNode
|
||||
OrNode (const Clauses& clauses, string explanation = "")
|
||||
: CircuitNode (clauses, explanation),
|
||||
leftBranch_(0), rightBranch_(0) { }
|
||||
|
||||
double weight (void) const;
|
||||
|
||||
CircuitNode** leftBranch (void) { return &leftBranch_; }
|
||||
CircuitNode** rightBranch (void) { return &rightBranch_; }
|
||||
@@ -74,6 +78,8 @@ class AndNode : public CircuitNode
|
||||
string explanation = "")
|
||||
: CircuitNode ({}, explanation),
|
||||
leftBranch_(leftBranch), rightBranch_(rightBranch) { }
|
||||
|
||||
double weight (void) const;
|
||||
|
||||
CircuitNode** leftBranch (void) { return &leftBranch_; }
|
||||
CircuitNode** rightBranch (void) { return &rightBranch_; }
|
||||
@@ -117,6 +123,8 @@ class LeafNode : public CircuitNode
|
||||
{
|
||||
public:
|
||||
LeafNode (const Clause& clause) : CircuitNode ({clause}) { }
|
||||
|
||||
double weight (void) const;
|
||||
};
|
||||
|
||||
|
||||
@@ -125,6 +133,8 @@ class SmoothNode : public CircuitNode
|
||||
{
|
||||
public:
|
||||
SmoothNode (const Clauses& clauses) : CircuitNode (clauses) { }
|
||||
|
||||
double weight (void) const;
|
||||
};
|
||||
|
||||
|
||||
@@ -133,6 +143,8 @@ class TrueNode : public CircuitNode
|
||||
{
|
||||
public:
|
||||
TrueNode () : CircuitNode ({}) { }
|
||||
|
||||
double weight (void) const;
|
||||
};
|
||||
|
||||
|
||||
@@ -153,8 +165,10 @@ class LiftedCircuit
|
||||
|
||||
void smoothCircuit (void);
|
||||
|
||||
double getWeightedModelCount (void) const;
|
||||
|
||||
void exportToGraphViz (const char*);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
void compile (CircuitNode** follow, const Clauses& clauses);
|
||||
|
Reference in New Issue
Block a user