A search algorithm for the traveling salesman problem