Почему делают Kruskal и Prim, алгоритмы MST имеют различное время выполнения для редких и плотных графиков?

Я пытаюсь понять, почему Prim и Kruskal имеют различные сложности времени когда дело доходит до редких и плотных графиков. После использования нескольких апплетов, которые демонстрируют, как каждый работает, меня все еще оставляют немного смущенным тем, как плотность графика влияет на алгоритмы. Я надеюсь, что кто-то мог дать мне пошаговое перемещение в правильном направлении.

8
задан templatetypedef 6 July 2012 в 20:23
поделиться

3 ответа

Википедия дает сложность этих алгоритмов с точки зрения E, количества ребер и V, что является хорошей практикой, так как позволяет делать именно такой анализ.

Алгоритм Крускаля - это O(E log V). Сложность Prim зависит от того, какую структуру данных вы для него используете. Используя матрицу дополнений, это O(V2).

Теперь, если вы подключаете V2 для E, то увидите сложности, которые вы цитировали в комментарии для плотных графов, и если вы подключаете V для E, то получите разреженные.

Почему мы подключаем V2 для плотного графика? Ну, даже на самом плотном графе не может быть столько граней, сколько V2, поэтому ясно E = O(V2).

Почему мы подключаем V для разреженного графа? Ну, вы должны определить, что вы имеете в виду под "разреженным", но предположим, что мы называем граф разреженным, если каждая вершина имеет не более пяти рёбер. Я бы сказал, что такие графы довольно разрежены: как только вы встанете в тысячи вершин, матрица примыкания будет в основном пустым местом. Это бы означало, что для разреженных графов E ≤ 5 V, так что E = O(V).

.
4
ответ дан 5 December 2019 в 23:15
поделиться
[

] Случайно ли это разные сложности с количеством вершин?[

] [

] Часто встречается, слегка ручной, аргумент, который говорит для разреженного графа, что число рёбер E = O(V), где V - число вершин, для плотного графа E = O(V^2). Поскольку оба алгоритма потенциально имеют сложность, зависящую от E, при преобразовании в сложность, зависящую от V, вы получаете различные сложности в зависимости от плотного или разреженного графа[

] [

]редактирования: [

] [

] различные структуры данных будут также влиять на сложность, конечно, Википедия имеет пробой на [] это [] [

]
1
ответ дан 5 December 2019 в 23:15
поделиться
[

]Алгоритмы Cormen et al. действительно дают анализ, в обоих случаях используя разреженное представление графика. С помощью алгоритма Крускаля (связывание вершин в разобщенных компонентах до тех пор, пока все не соединится) первым шагом является сортировка ребер графика, что занимает время O(E lg E), и они просто устанавливают, что ничто не занимает больше времени, чем это. С помощью алгоритма Прайма (расширить текущее дерево, добавив в него ближайшую вершину, которой еще нет) они используют кучу Фибоначчи для хранения очереди отложенных вершин и получают O(E + V lgV), потому что с помощью дерева Фибоначчи, уменьшающего расстояние до вершин в очереди, получается только O(1), и вы делаете это максимум один раз на каждое ребро.[

].
0
ответ дан 5 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: