move unit test to test.hpp. fix bug.
add hillclimbing, beam search, simulated annealing.
add and or search.