Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/68: Рейтинг темы: голосов - 68, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 7
1

Алгоритм Краскала

28.05.2011, 12:57. Показов 12989. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
namespace GraphMethods
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
 
    ///
    /// Class represents graph edge.
    ///
    public class Edge
    {
        public int U;
        public int V;
        public double Weight;
    }
 
    ///
    /// Implementation of Kruskal algorithm.
    ///
    public class Kruskal
    {
        private const int MAX = 100;
        private int _edgesCount;
        private int _verticlesCount;
        private List _edges;
        private int[,] tree;
        private int[] sets;
 
        public List Edges { get { return _edges; } }
        public int VerticlesCount { get { return _verticlesCount; } }
        public double Cost { get; private set; }
 
        public Kruskal(string input)
        {
            tree = new int[MAX, 3];
            sets = new int[MAX];
 
            string[] lines = input.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
            _verticlesCount = int.Parse(lines[0]);
            _edgesCount = int.Parse(lines[1]);
            _edges = new List();
 
            _edges.Add(null);
 
            for (int i = 2; i < lines.Count(); i++)
            {
                string[] line = lines[i].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
 
                _edges.Add(new Edge
                {
                    U = int.Parse(line[0]),
                    V = int.Parse(line[1]),
                    Weight = double.Parse(line[2])
                });
            }
 
            for (int i = 1; i <= _verticlesCount; i++) sets[i] = i;
        }
 
        private void ArrangeEdges(int k)
        {
            Edge temp;
            for (int i = 1; i < k; i++)
            {
                for (int j = 1; j <= k - i; j++)
                {
                    if (_edges[j].Weight > _edges[j + 1].Weight)
                    {
                        temp = _edges[j];
                        _edges[j] = _edges[j + 1];
                        _edges[j + 1] = temp;
                    }
                }
            }
        }
 
        private int Find(int vertex)
        {
            return (sets[vertex]);
        }
 
        private void Join(int v1, int v2)
        {
            if (v1 < v2)
                sets[v2] = v1;
            else
                sets[v1] = v2;
        }
 
        public void BuildSpanningTree()
        {
            int k = _verticlesCount;
            int i, t = 1;
            this.ArrangeEdges(k);
            this.Cost = 0;
            for (i = 1; i <= k; i++)
            {
                for (i = 1; i < k; i++)
                    if (this.Find(_edges[i].U) != this.Find(_edges[i].V))
                    {
                        tree[t, 1] = _edges[i].U;
                        tree[t, 2] = _edges[i].V;
                        this.Cost += _edges[i].Weight;
                        this.Join(_edges[t].U, _edges[t].V);
                        t++;
                    }
            }
        }
 
        public void DisplayInfo()
        {
            Console.WriteLine("The Edges of the Minimum Spanning Tree are:");
            for (int i = 1; i < _verticlesCount; i++)
                Console.WriteLine(tree[i, 1] + " - " + tree[i, 2]);
            Console.ReadLine();
        }
    }
}
 Комментарий модератора 
Используйте теги форматирования кода.


выдаёт три ошибки:
Ошибка 1 Использование универсального тип "System.Collections.Generic.List<T>" требует аргументы типа "1"
Ошибка 2 Использование универсального тип "System.Collections.Generic.List<T>" требует аргументы типа "1"
Ошибка 3 Использование универсального тип "System.Collections.Generic.List<T>" требует аргументы типа "1"

Помогите исправить.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.05.2011, 12:57
Ответы с готовыми решениями:

Ошибка в коде - алгоритм Краскала
Добрый день. Есть код, все вполне прилично. Но минимальное остовное дерево находит неправильно,...

Нахождения минимального остовного дерева. Алгоритм Краскала
как можно после того как прога подсчитает результат, рисовался бы граф чтоб Входные данные для...

Поиск минимального остовного дерева в несвязном графе. Алгоритм Прима-Краскала
Господа. Дело такое - нахожу я минимальное остовное дерево в связном графе (в котором каждая...

Исправить реализацию алгоритма Краскала
/***************************************************************** * File : Kruskal.cs * ...

6
 Аватар для Shymep
13 / 13 / 2
Регистрация: 10.01.2010
Сообщений: 34
28.05.2011, 13:27 2
Укажите тип для списка
C#
1
List<int> list = new List<int>();
1
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 7
28.05.2011, 15:29  [ТС] 3
ды что-то всё равно не работает(
0
 Аватар для Shymep
13 / 13 / 2
Регистрация: 10.01.2010
Сообщений: 34
28.05.2011, 17:34 4
Вы вероятно что-то неправильно делаете.

C#
1
2
private List<int> _edges;
public List<int> Edges { get { return _edges; } }
А на самом деле вместо этих строчек лучше написать так
C#
1
public readonly List<int> Edges;
1
0 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 13
06.11.2013, 17:33 5
Напишите пожалуйста функцию main
0
0 / 0 / 0
Регистрация: 25.05.2017
Сообщений: 2
21.12.2017, 01:46 6
Попробуйте указать тип списка класс, который вы сделали
C#
1
2
3
private List<Edge> _edges;
public List<Edge> Edges { get { return _edges; } }
 _edges = new List<Edge>();
0
Diamante
21.12.2017, 02:00     Алгоритм Краскала
  #7

Не по теме:

и снова некрофилы и гробокопатели...:facepalm:

0
21.12.2017, 02:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2017, 02:00
Помогаю со студенческими работами здесь

Вывести элементы, присутствующие в обоих массивах А и В. Алгоритм сортировки - подсчетом, алгоритм поиска - двоичный
Вывести элементы, присутствующие в обоих массивах А и В. Алгоритм сортировки - подсчетом, алгоритм...

Алгоритм Краскала
Здравствуйте. Передо мной стоит задача реализовать алгоритм Краскала в C++ Builder. Интерфейсная...

Алгоритм Краскала
Можете указать,в чем ошибка в данном коде,почему при вводе данных он выдает ошибку if Comp !=...

Алгоритм Краскала
Народ, кто-нибудь может на естественном языке пояснить суть алгоритма Краскала? Я чето не понял,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru