public final class BinaryClausesDatabase extends AbstractClausesDatabase
CLAUSE_RATE_AVERAGE, CLAUSE_RATE_I_WANT_THIS_CLAUSE, CLAUSE_RATE_LOW, CLAUSE_RATE_UNSUPPORTED, CLAUSE_RATE_WELL_SUPPORTED, core, databaseIndex, dbStore, MINIMUM_VAR_WATCH_SIZE, pool, trail, watchLists| Constructor and Description |
|---|
BinaryClausesDatabase() |
| Modifier and Type | Method and Description |
|---|---|
int |
addClause(int[] clause,
boolean isModel)
TODO Efficiency,
|
void |
assertLiteral(int literal)
It informs the ClausesDatabase that this literal is set, so that it
can perform unit propagation.
|
void |
backjump(int level)
Do everything needed to return to the given level.
|
boolean |
canRemove(int clauseId)
It tells if the implementation of ClausesDatabase can remove clauses or not
|
int |
rateThisClause(int[] clause)
Indicates how much this database is optimized for this clause.
|
void |
removeClause(int clauseId)
It removes the clause which unique ID is @param clauseId.
|
MapClause |
resolutionWith(int clauseId,
MapClause clause)
It returns the clause obtained by resolution between clauseIndex and clause.
|
int |
size()
number of clauses in the database
|
void |
toCNF(BufferedWriter output)
It creates a CNF description of the clauses stored in this database.
|
addWatch, doesWatch, ensureWatch, getDatabaseIndex, indexToUniqueId, initialize, removeWatch, setDatabaseIndex, swap, toString, toString, uniqueIdToIndexpublic int addClause(int[] clause,
boolean isModel)
Watches require a very large array, but there maybe not so many binary clauses. Maybe a hashmap, connecting variable and list of watched clauses is more appropriate.
clause - the clause to addisModel - defined if the clause is model clausepublic void assertLiteral(int literal)
ClauseDatabaseInterfaceliteral - the literal that is setpublic void removeClause(int clauseId)
ClauseDatabaseInterfaceclauseId - clause idpublic boolean canRemove(int clauseId)
ClauseDatabaseInterfaceclauseId - the unique Id of the clausepublic MapClause resolutionWith(int clauseId, MapClause clause)
ClauseDatabaseInterfaceclauseId - the unique id of the clauseclause - an explanation clause that is modified by resolutionpublic void backjump(int level)
ClauseDatabaseInterfacelevel - the level to return to. Must be < solver.getCurrentLevel().public int rateThisClause(int[] clause)
AbstractClausesDatabaserateThisClause in class AbstractClausesDatabaseclause - a clause to ratepublic int size()
AbstractClausesDatabasesize in interface ClauseDatabaseInterfacesize in class AbstractClausesDatabasepublic void toCNF(BufferedWriter output) throws IOException
AbstractClausesDatabasetoCNF in interface ClauseDatabaseInterfacetoCNF in class AbstractClausesDatabaseoutput - it specifies the target to which the description will be written.IOException - execption from java.io packageCopyright © 2022. All rights reserved.