private Symbol getSymbolWhoseFlipMaximisesSatisfiedClauses(
List<Sentence> clauses, List<Symbol> symbols, Model model)
{
if (symbols.Count > 0)
{
Symbol retVal = symbols[0];
int maxClausesSatisfied = 0;
for (int i = 0; i < symbols.Count; i++)
{
Symbol sym = symbols[i];
if (getNumberOfClausesSatisfiedIn(clauses, model.flip(sym)) > maxClausesSatisfied)
{
retVal = sym;
maxClausesSatisfied = getNumberOfClausesSatisfiedIn(
clauses, model.flip(sym));
}
}
return retVal;
}
else
{
return null;
}
}