import choco.kernel.solver.search.integer.AbstractIntVarSelector; import choco.kernel.solver.variables.integer.IntDomainVar; import choco.kernel.solver.variables.AbstractVar; import choco.kernel.memory.IStateInt; public class StaticMinDegreeHeuristic extends AbstractIntVarSelector { private IntDomainVar[] vars; // 0/1 decision variables private int n; // number of decision variables private IStateInt[] deg; // degree of v[i] in candidate set, reversible private ReversibleSortedArray candidateSet; // the uninstantiated variables private void sort(){ // into ascending order int[] degree = new int[n]; int tempD = -1; IntDomainVar tempV = null; for (int i=0;i0;i--) for (int j=0;j degree[j+1]){ tempD = degree[j]; degree[j] = degree[j+1]; degree[j+1] = tempD; tempV = vars[j]; vars[j] = vars[j+1]; vars[j+1] = tempV; } } public StaticMinDegreeHeuristic(IntDomainVar[] vars,IStateInt[] deg,ReversibleSortedArray candidateSet){ this.vars = vars; n = vars.length;this.deg = deg; this.candidateSet = candidateSet; sort(); } public IntDomainVar selectIntVar(){ for (int i=0;i