Exploring Centralized and Distributed Constraint Propagation Algorithms for Solving Constraint Satisfaction Problems