예제 #1
0
        /// <summary>
        /// Получение лучшего пути за оба дня.
        /// </summary>
        /// <returns></returns>
        public List <Sight> GetAllSights()
        {
            List <Sight> firstDay = GetSights();
            List <Sight> temp     = new List <Sight>();

            temp.AddRange(originalSightList);
            foreach (var item in firstDay)
            {
                temp.Remove(item);
            }

            ExhaustiveAlgorithm exhaustiveAlgorithm = new ExhaustiveAlgorithm(16, temp);

            exhaustiveAlgorithm.MakeAllSets(temp);
            List <Sight> secondDay = exhaustiveAlgorithm.GetSights();

            firstDay.AddRange(secondDay);
            return(firstDay);
        }
예제 #2
0
        static void Main(string[] args)
        {
            SightList    sights     = new SightList();
            List <Sight> randomList = sights.GetRandomSights(10);
            List <Sight> list       = sights.GetSights();

            ExhaustiveAlgorithm exhaustiveAlgorithm = new ExhaustiveAlgorithm(16, randomList);
            GreedyAlgorithm     greedyAlgorithm     = new GreedyAlgorithm();
            MyAlgorithm         myAlgorithm         = new MyAlgorithm();

            Console.WriteLine("Случайный набор достопримечательностей:");
            foreach (var item in randomList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine();

            Console.WriteLine("Алгоритм полного перебора для случайных достопримечательностей:");
            exhaustiveAlgorithm.MakeAllSets(randomList);
            var          sum           = 0;
            List <Sight> optimalRoute1 = exhaustiveAlgorithm.GetAllSights();

            foreach (var item in optimalRoute1)
            {
                sum += item.Importance;
                Console.WriteLine(item);
            }
            Console.WriteLine($"Суммарная важность = {sum}");
            Console.WriteLine();

            Console.WriteLine("Жадный алгоритм для случайных достопримечательностей:");
            List <Sight> optimalRoute2 = greedyAlgorithm.GreedySort(randomList);

            sum = 0;
            foreach (var item in optimalRoute2)
            {
                sum += item.Importance;
                Console.WriteLine(item);
            }
            Console.WriteLine($"Суммарная важность = {sum}");
            Console.WriteLine();

            Console.WriteLine("Собственный алгоритм для случайных достопримечательностей:");
            List <Sight> optimalRoute3 = myAlgorithm.Sort(randomList);

            sum = 0;
            foreach (var item in optimalRoute3)
            {
                sum += item.Importance;
                Console.WriteLine(item);
            }
            Console.WriteLine($"Суммарная важность = {sum}");
            Console.WriteLine();


            Console.WriteLine("Выбор оптимального маршрута с использованием жадного алгоритма");
            List <Sight> finalRoute1 = greedyAlgorithm.GreedySort(list);

            sum = 0;
            foreach (var item in finalRoute1)
            {
                sum += item.Importance;
                Console.WriteLine(item);
            }
            Console.WriteLine($"Суммарная важность = {sum}");
            Console.WriteLine();

            Console.WriteLine("Выбор оптимального маршрута с использованием собственного алгоритма");
            List <Sight> finalRoute2 = myAlgorithm.Sort(list);

            sum = 0;
            foreach (var item in finalRoute2)
            {
                sum += item.Importance;
                Console.WriteLine(item);
            }
            Console.WriteLine($"Суммарная важность = {sum}");
            Console.ReadLine();
        }