The Traveling Salesman Problem and its Variations