Approximation Algorithms for Traveling Salesman Problems