Обход взвешенного неориентированного графа - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Стоит задача обойти и начальной вершины все вершины графа и вернуться в исходную. Граф неориентированный, взвешенный, каждая вершина связана с другими. Нужно найти оптимальный обход по весам. Сделал следующее. Для каждой вершины ищу наименьший вес среди смежных с ним вершин и иду по этому ребру
Листинг программы
  1. public int[] SearchOptimalWay(int[,] grafMatrix)
  2. {
  3. List<int> way = new List<int>();
  4. way.Add(0);
  5. for (int i = 0; i < grafMatrix.GetLength(0); i++)
  6. {
  7. int min = int.MaxValue;
  8. int minIndex = -1;
  9. //search minimum
  10. for (int j = 0; j < grafMatrix.GetLength(1); j++)
  11. {
  12. if (!Dublicated(way, j) && grafMatrix[i, j] <= min && i != j)
  13. {
  14. min = grafMatrix[i, j];
  15. minIndex = j;
  16. }
  17. }
  18. way.Add(minIndex);
  19. }
  20. return way.ToArray();
  21. }
  22. private bool Dublicated(List<int> way, int j)
  23. {
  24. for (int i = 0; i < way.Count; i++)
  25. {
  26. if (j == way[i])
  27. return true;
  28. }
  29. return false;
  30. }
(код не тестировал, но с виду должен работать) Как изменить код, чтобы находился минимальный из возможных вариантов?

Решение задачи: «Обход взвешенного неориентированного графа»

textual
Листинг программы
  1. int min = array.Min();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы