Solving of constraint satisfaction problems using join trees