Searching for backbones — an efficient parallel algorithm for the traveling salesman problem