Рубрики
Без рубрики

Алгоритм Крускала: Реализация в Python

В Python алгоритм Крускала используется для создания MST из неориентированного, взвешенного и связного графа. Это делается путем добавления ребер

Автор оригинала: Team Python Pool.

Алгоритм Крускала: Реализация в Python

Привет, кодеры!! В этой статье мы будем копаться в алгоритме Крускала и узнаем, как реализовать его на Python. Давайте сначала разберемся, что это значит. Этот алгоритм используется для создания href=”https://en.wikipedia.org/wiki/Minimum_spanning_tree”>минимальное связующее дерево из взвешенного графа. Теперь мы подробно рассмотрим эту тему. href=”https://en.wikipedia.org/wiki/Minimum_spanning_tree”>минимальное связующее дерево из взвешенного графа. Теперь мы подробно рассмотрим эту тему.

Алгоритм Крускала для минимального остовного дерева:

Алгоритм Крускала реализован для создания MST из неориентированного, взвешенного и связного графа. Ребра сортируются по возрастанию href=”https://en.wikipedia.org/wiki/Higher-order_programming”>упорядочить веса и добавлять один за другим, пока все вершины не будут включены в него. Это Жадный алгоритм, поскольку ребра выбираются в порядке возрастания весов. В этом алгоритме цикл не создается. href=”https://en.wikipedia.org/wiki/Higher-order_programming”>упорядочить веса и добавлять один за другим, пока все вершины не будут включены в него. Это Жадный алгоритм, поскольку ребра выбираются в порядке возрастания весов. В этом алгоритме цикл не создается.

  1. Сначала мы отсортируем ребра в порядке возрастания их веса.
  2. После этого выберите край, имеющий минимальный вес, и добавьте его к САМОМУ БОЛЬШОМУ. Если ребро создает цикл, мы отвергаем его.
  3. Повторите описанные выше шаги, пока мы не покроем все вершины.

Иллюстрация алгоритма Крускала:

Возьмем в качестве примера следующий график:

Рассмотрим этот график для иллюстрации алгоритма крускала python

Ход: 0

Теперь ребра в порядке возрастания их весов равны:

  • 0-2: 5
  • 3-4: 7
  • 0-1: 8
  • 1-2: 9
  • 2-4: 10
  • 1-3: 11

Теперь мы выберем минимальное взвешенное ребро, то есть 0-2, и добавим его в MST:

ребро 0-2 добавляется в алгоритм крускала python

Ход: 1

Следующее ребро, которое мы добавим к нашему MST, – это ребро 3-4:

край 3-4 добавляется

Ход: 2

Теперь мы добавим ребро 0-1:

добавлено ребро 1-0

Ход: 3

Теперь у нас есть ребро 1-2 далее, однако, мы добавим это ребро, после чего будет создан цикл. В результате это ребро будет отвергнуто.

После добавления ребра 2-4, MST будет завершен, так как все вершины теперь включены.

Финал MST

Минимальное Связующее Дерево

Реализация алгоритма Крускала в Python:

class Graph:
    def __init__(self, vertex):
       
        self.graph = []

    def add_edge(self, u, v, w):
        self.graph.append([u, v, w])


    def search(self, parent, i):
        if parent[i]:
            return i
        return self.search(parent, parent[i])

    def apply_union(self, parent, rank, x, y):
       .search(parent, x)
       .search(parent, y)
        if rank[xroot] < rank[yroot]:
           
        elif rank[xroot] > rank[yroot]:
           
        else:
           
            rank[xroot]

 
    def kruskal(self):
        result = []
        i,, 0
       (self.graph, item: item[2])
        parent = []
        rank = []
        for node in range(self.V):
            parent.append(node)
            rank.append(0)
        while e < self.V - 1:
            u, v,.graph[i]
            + 1
           .search(parent, u)
           .search(parent, v)
            if x:
                + 1
                result.append([u, v, w])
                self.apply_union(parent, rank, x, y)
        for u, v, weight in result:
            print("Edge:",u,)
            print("-",weight)

(5)
g.add_edge(0, 1, 8)
g.add_edge(0, 2, 5)
g.add_edge(1, 2, 9)
g.add_edge(1, 3, 11)
g.add_edge(2, 3, 15)
g.add_edge(2, 4, 10)
g.add_edge(3, 4, 7)
g.kruskal()

Выход:

вывод алгоритма Крускала python

Выход

Временная сложность:

Временная сложность Алгоритма Крускала такова: O(E log V)

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

  • Это легко реализовать
  • Он обеспечивает хороший контроль над результирующим MST

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

  • Используется для изготовления схемы электропроводки
  • Используется для подключения к локальной сети
  • Сеть труб для питьевой воды или природного газа.
  • Однозвенный Кластер.

Надо Читать

  • Понимание Python Bubble Sort с примерами
  • Топ-10 алгоритмов для науки о данных
  • Реализация Ханойской башни на Python
  • 10 Алгоритмов машинного обучения для начинающих
  • Сортировка по ячейкам в Python С алгоритмом и фрагментом кода

Вывод:

Все дело в алгоритме Крускала. Мы подробно изучили алгоритм, а также его реализацию на python. МЫ также увидели его преимущества и различные области применения в повседневных нуждах.

Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.

Счастливого Пифонирования!