Search algorithms for discrete optimization