Результаты
Задаём граф с помощью матрицы смежности и записываем в файл in.txt:
10
10000 4 10000 10000 6 10000 10000 7 10000 10000
4 10000 3 5 10000 10000 10000 10000 10000 10000
10000 3 10000 2 10000 8 10000 10000 10000 10000
10000 5 2 10000 10 9 10000 10000 10000 10000
6 10000 10000 10 10000 10000 11 5 10000 10000
10000 10000 8 9 10000 10000 10000 10000 5 10000
10000 10000 10000 10000 11 10000 10000 3 4 10000
7 10000 10000 10000 5 10000 3 10000 10000 2
10000 10000 10000 10000 10000 5 4 10000 10000 1
10000 10000 10000 10000 10000 10000 10000 2 1 10000
Поиск методом Прима:
10
10000 4 10000 10000 6 10000 10000 10000 10000 10000
4 10000 3 10000 10000 10000 10000 10000 10000 10000
10000 3 10000 2 10000 10000 10000 10000 10000 10000
10000 10000 2 10000 10000 10000 10000 10000 10000 10000
6 10000 10000 10000 10000 10000 10000 5 10000 10000
10000 10000 10000 10000 10000 10000 10000 10000 5 10000
10000 10000 10000 10000 10000 10000 10000 3 10000 10000
10000 10000 10000 10000 5 10000 3 10000 10000 2
10000 10000 10000 10000 10000 5 10000 10000 10000 1
10000 10000 10000 10000 10000 10000 10000 2 1 10000
Поиск методом Крускала:
10
10000 4 10000 10000 6 10000 10000 10000 10000 10000
4 10000 3 10000 10000 10000 10000 10000 10000 10000
10000 3 10000 2 10000 10000 10000 10000 10000 10000
10000 10000 2 10000 10000 10000 10000 10000 10000 10000
6 10000 10000 10000 10000 10000 10000 5 10000 10000
10000 10000 10000 10000 10000 10000 10000 10000 5 10000
10000 10000 10000 10000 10000 10000 10000 3 10000 10000
10000 10000 10000 10000 5 10000 3 10000 10000 2
10000 10000 10000 10000 10000 5 10000 10000 10000 1
10000 10000 10000 10000 10000 10000 10000 2 1 10000
Время выполнения алгоритма Прима имеет порядок О(п2).
Время выполнения алгоритма Крускала O (M log N + N*N). Сортировка рёбер потребует O (M log N) операций. Принадлежность вершины тому или иному поддереву хранится просто с помощью массива tree_id - в нём для каждой вершины хранится номер дерева, которому она принадлежит. Для каждого ребра мы за O (1) определяем, принадлежат ли его концы разным деревьям. Наконец, объединение двух деревьев осуществляется за O (N) простым проходом по массиву tree_id. Учитывая, что всего операций объединения будет N-1, мы и получаем асимптотику O (M log N + N2).
Вывод
Алгоритм Прима работает быстрее чем алгоритм Крускала.