Probabilistic Techniques For Constraint Satisfaction Problems