2016-11-22 7 views
0

Эта версия алгоритма Крускаля представляет собой ребра с списком смежности. Как изменить псевдокод, чтобы вместо этого использовать матрицу смежности?Алгоритм Kruskal's. Измените структуру матричных данных?

Kruskal Pseudo-code

Я думал вам, что мы должны были бы использовать вес ребер, например, (I, J), пока его не равна нулю. Присвоение вершин i, j. Возможно, я немного смущен этим псевдокодом Крускалса.

+2

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

ответ

2

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

Для матрицы смежности вам просто нужно отсканировать каждую запись вашей матрицы, чтобы отсортировать края графика G в строке 4. И вы делаете то же самое при использовании представления списка смежности.

В вашем случае вы можете, например, использовать PriorityQueue для сортировки ребер по весу в неубывающем порядке и сброса записей с отсоединенными вершинами. Затем вы можете перебрать эту структуру данных в for-loop в строке 5.