protected override Variable selectUnassignedVariable(Assignment assignment, CSP csp)
{
switch (selectionStrategy)
{
case MRV:
return applyMRVHeuristic(csp, assignment).get(0);
case MRV_DEG:
List<Variable> vars = applyMRVHeuristic(csp, assignment);
return applyDegreeHeuristic(vars, assignment, csp).get(0);
default:
foreach (Variable var in csp.getVariables())
{
if (!(assignment.hasAssignmentFor(var)))
return var;
}
}
return null;
}