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

алгоритм

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

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

Шаги алгоритма Крускера

1. Отсортировать все ребра в исходном графе по весу от меньшего к большему.

2. Начиная с ребра с наименьшим весом, если две вершины, соединенные этим ребром, не находятся в одном связном ребре графа, запишите вершину как выбранную.

3. Повторяйте шаг 2, пока все узлы в графе не будут связаны, и не будет найдено минимальное остовное дерево связного графа.

Временная сложность алгоритма Крускера

Предположим, у нас есть V для количества вершин в графе и E для количества ребер в графе. Средняя временная сложностьO(E \log V ).

Пример алгоритма Крускера

Найдите минимальное остовное дерево взвешенного связного графа, используя алгоритм Крускера.

Путем сортировки весов всех ребер в графе минимальный вес ребра AD равен 5, и он выделяется.

Затем следующее ребро с наименьшим весом — это FH с весом 6, которое выделяется. (Будьте осторожны, чтобы не образовать кольца)

Тогда следующее ребро с наименьшим весом имеет два AB и EH, а вес равен 7. Произвольно выбираем ребро AB и подсвечиваем его. (Будьте осторожны, чтобы не образовать кольца)

Затем следующее ребро с наименьшим весом — это EH, которое имеет вес 7 и подсвечивается. (Будьте осторожны, чтобы не образовать кольца)

Тогда следующим ребром с наименьшим весом будет HG с весом 8, и оно будет выделено. (Будьте осторожны, чтобы не образовать кольца)

Последнее ребро с наименьшим весом — DE с весом 9 и выделено. Теперь все вершины в графе связаны, красное связное ребро является минимальным остовным деревом, а сумма весов минимального остовного дерева равна 42.

Примечание. Для ребер с одинаковым весом мы можем произвольно выбрать ребро, но выбранное ребро не может образовать кольцо с предыдущим ребром. Если ребро с наименьшим весом образует кольцо с выбранным ребром, пропустите текущее ребро и перейдите к следующему ребру с наименьшим весом.

Суммировать

Алгоритм Крускелла, как и алгоритм Прима, представляет собой алгоритм нахождения минимального остовного дерева.

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

PS:
Чистые горы и чистые воды начинаются с пыли, а знания ценнее усердия.
У меня есть вино, у тебя есть история?
Публичный аккаунт WeChat: "болтать".
Добро пожаловать в чат и поговорим о коде.