private Tour ConstructTour(List <Stop> stops)
        {
            var tour = new Tour(stops);

            _travelService.NormalizeStops(tour.Stops);
            _travelService.CalculateDistanceMatrix(tour);

            var(stop0, stop1) = tour.GetFarthestPair();
            tour.TourStops.Add(stop0);
            tour.TourStops.Add(stop1);
            tour.TourStops.Add(stop0);


            while (tour.TourStops.Count < stops.Count() + 1)
            {
                var farthestStop = tour.FindFarthestStop();
                tour.InsertAtLeastExpensiveEdge(farthestStop);
            }

            if (tour.TourStops.First() != tour.Stops.First())
            {
                var desiredStart = tour.TourStops.Single(ts => ts == tour.Stops.First());
                tour.TourStops = Helper.Reorder(tour.TourStops, desiredStart);
            }

            return(tour);
        }