Алгоритм Крускала - изменить матричную структуру данных?

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

Псевдокод Крускала

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


person Asia x3    schedule 22.11.2016    source источник
comment
В псевдокоде нет ничего, определяющего, какие структуры данных должны использоваться. Но сортировка ребер по весу будет затруднена в матрице без вспомогательного представления.   -  person Henry    schedule 22.11.2016
comment
Что бы это ни стоило, этот псевдокод очень похож на тот, который можно увидеть в Википедии, который в в преамбуле указано использование структуры данных с непересекающимся набором.   -  person Daniel R. Collins    schedule 31.05.2019


Ответы (1)


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

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

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

person chiwangc    schedule 22.11.2016