Constraint Satisfaction Problems: An Overview