algorithms for constraint programming