Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.02.2023
Сообщений: 2

Запрограммировать эвристическое решение задачи коммивояжера. Число узловых точек от 4 до 8

17.02.2023, 16:21. Показов 915. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с курсовой пожалуйста,написать код нужно на C#

Запрограмировать эвристическое решение задачи коммивояжера. Число узловых точек от 4 до 8.
На каждом шаге-min стоимость
Min стоимость на двух шагах
На трех шагах
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2023, 16:21
Ответы с готовыми решениями:

Решение задачи коммивояжера
ребята помогите решить задачу кому не жалко и не лень киньте код с программой в делфи 7 (разработать приложение которое определяет...

Решение задачи коммивояжера
Доброго времени суток! Разработать алгоритм и программу решения задачи коммивояжера методом неявного перебора с использование...

Решение задачи коммивояжера
Нужно сделать задачу коммивояжера, или хоть покажите код прохождение его, я напишу сам, или уже есть на сайте такая темка, дайте ссылку,...

3
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
17.02.2023, 18:06
Keshere41,

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
 
class Program
{
    static int[,] distanceMatrix; // Матрица расстояний между городами
    static int[] bestTour; // Лучший маршрут
    static int bestTourCost = int.MaxValue; // Стоимость лучшего маршрута
    static int n; // Число городов
 
    static void Main(string[] args)
    {
        // Получаем от пользователя число городов
        Console.Write("Введите число городов (от 4 до 8): ");
        n = int.Parse(Console.ReadLine());
 
        // Генерируем матрицу расстояний между городами
        distanceMatrix = new int[n, n];
        Random rand = new Random();
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                int distance = rand.Next(10, 100);
                distanceMatrix[i, j] = distance;
                distanceMatrix[j, i] = distance;
            }
        }
 
        // Находим лучший маршрут
        for (int startCity = 0; startCity < n; startCity++)
        {
            FindBestTour(startCity, new int[] { startCity }, 0, 1);
        }
 
        // Выводим результаты
        Console.WriteLine("Лучший маршрут: " + string.Join(" -> ", bestTour) + " -> " + bestTour[0]);
        Console.WriteLine("Стоимость маршрута: " + bestTourCost);
        Console.ReadKey();
    }
 
    // Функция для нахождения лучшего маршрута, начиная с заданного города и проходящего через заданные города
    static void FindBestTour(int currentCity, int[] visitedCities, int currentCost, int level)
    {
        // Если мы посетили все города, проверяем, является ли текущий маршрут лучшим
        if (visitedCities.Length == n)
        {
            int tourCost = currentCost + distanceMatrix[currentCity, visitedCities[0]];
            if (tourCost < bestTourCost)
            {
                bestTour = visitedCities;
                bestTourCost = tourCost;
            }
            return;
        }
 
        // Для каждого непосещенного города
        for (int nextCity = 0; nextCity < n; nextCity++)
        {
            if (Array.IndexOf(visitedCities, nextCity) == -1)
            {
                // Вычисляем стоимость маршрута, если посетим этот город
                int newCost = currentCost + distanceMatrix[currentCity, nextCity];
 
                // Если стоимость маршрута больше текущей лучшей стоимости, то пропускаем этот город
                if (newCost >= bestTourCost)
                {
                    continue;
                }
 
                // Рекурсивно вызываем эту же функцию для следующего города
                int[] newVisitedCities = new int[visitedCities.Length + 1];
                visitedCities.CopyTo(newVisitedCities, 0);
                newVisitedCities[newVisitedCities.Length - 1] = nextCity;
                FindBestTour(nextCity, newVisitedCities, newCost, level + 1);
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 17.02.2023
Сообщений: 2
17.02.2023, 18:28  [ТС]
А тут же считается стоимость на двух шагах,трёх шагах ?
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
17.02.2023, 18:35
Keshere41, запусти, да увидишь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2023, 18:35
Помогаю со студенческими работами здесь

Решение задачи коммивояжера
Всем привет. Есть вот такая вот задачка, я решил её в лоб. Но, я уверен есть какое-то универсальное решение. Задача: На...

Граф, решение задачи коммивояжера
Решить задачу коммивояжёра (человек выезжает из одного города, должен объехать все остальные вернуться в первоначальный, проехав...

Переделать решение задачи коммивояжера
По примерам с других форумов написал ... ну как написал, сплагиатил и разобрался в коде :) решение задачи коммивояжера. ; поиск дороги...

Матрицы, решение задачи коммивояжера
Привет пжлс-та помогите найти ошибку в программе и исправить.В программе надо в ручную заполнить матрицу в ручную и программа должна решить...

Решение задачи коммивояжера(краш программы)
Решаю задачу коммивояжера жадным алгоритмом. Когда побываем во всех городах, нужно вернуться в стартовый. Количество городов вводится с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru