public Assignment solve(CSP csp) { Assignment assignment = generateRandomAssignment(csp); fireStateChanged(assignment, csp); for (int i = 0; i < maxSteps; i++) { if (assignment.isSolution(csp)) { return(assignment); } else { List <Variable> vars = getConflictedVariables(assignment, csp); Variable var = Util.selectRandomlyFromList(vars); Object value = getMinConflictValueFor(var, assignment, csp); assignment.setAssignment(var, value); fireStateChanged(assignment, csp); } } return(null); }