Search algorithms for constraint satisfaction