add depth-first and simulated annealing