Improving backtracking efficiency
n General-purpose methods can give huge
gains in speed:
n Which variable should be assigned next?
n In what order should its values be tried?
n Can we detect inevitable failure early?