Heim Backend-Entwicklung Python-Tutorial Wie implementiert man Kruskals Algorithmus mit Python?

Wie implementiert man Kruskals Algorithmus mit Python?

Sep 19, 2023 pm 03:30 PM
python实现 最小生成树 Kruskals Algorithmus

Wie implementiert man Kruskals Algorithmus mit Python?

Wie implementiert man Kruskals Algorithmus mit Python?

Einführung:
Kruskals Algorithmus ist ein klassischer Algorithmus zur Lösung des minimalen Spannbaums, der den Spannbaum mit dem minimalen Gesamtgewicht in einem gegebenen gewichteten verbundenen Diagramm finden kann. In diesem Artikel wird die Implementierung des Kruskal-Algorithmus mit Python vorgestellt und detaillierte Codebeispiele bereitgestellt.

  1. Einführung in den Algorithmus:
    Die Grundidee des Kruskal-Algorithmus besteht darin, alle Kanten im verbundenen Diagramm nach ihrem Gewicht zu sortieren und dann die Kanten von klein nach groß auszuwählen, wenn die aktuell ausgewählte Kante nicht gebildet wird ein Zyklus, dann wird es dem minimalen Spannbaum beitreten und ihn als besucht markieren. Bis die Anzahl der Kanten im minimalen Spannbaum gleich der Anzahl der Eckpunkte im Diagramm minus eins ist.
  2. Implementierungsschritte:
    (1) Definieren Sie die Klasse des Diagramms und initialisieren Sie die Anzahl der Scheitelpunkte und Kanten des Diagramms.
    (2) Definieren Sie die Klasse jeder Kante und initialisieren Sie den Startpunkt, den Endpunkt und das Gewicht der Kante.
    (3) Schreiben Sie eine Funktion zum Implementieren und Initialisieren des Satzes, einschließlich der Suche nach dem Wurzelknoten und dem Zusammenführen von Sätzen.
    (4) Schreiben Sie die Hauptfunktion zur Implementierung des Kruskal-Algorithmus, einschließlich Sortieren von Kanten, Auswahl von Kanten nacheinander, um zu bestimmen, ob sie einen Zyklus bilden, Hinzufügen von Kanten zum minimalen Spannbaum und Berechnen des Gesamtgewichts des minimalen Spannbaums.
  3. Codebeispiel:
class Graph:
    def __init__(self, vertices):
        self.V = vertices  # 顶点数
        self.graph = []

    # 添加边
    def add_edge(self, u, v, weight):
        self.graph.append([u, v, weight])

    # 查找根节点
    def find(self, parent, i):
        if parent[i] == i:
            return i
        return self.find(parent, parent[i])

    # 合并集合
    def union(self, parent, rank, x, y):
        root_x = self.find(parent, x)
        root_y = self.find(parent, y)
        if rank[root_x] < rank[root_y]:
            parent[root_x] = root_y
        elif rank[root_x] > rank[root_y]:
            parent[root_y] = root_x
        else:
            parent[root_y] = root_x
            rank[root_x] += 1

    # 克鲁斯卡尔算法
    def kruskal_algorithm(self):
        result = []
        i = 0
        e = 0
        self.graph = sorted(self.graph, key=lambda item: item[2])  # 按照权值排序
        parent = []
        rank = []

        for node in range(self.V):
            parent.append(node)
            rank.append(0)

        while e < self.V - 1:
            u, v, weight = self.graph[i]
            i += 1
            x = self.find(parent, u)
            y = self.find(parent, v)

            if x != y:
                e += 1
                result.append([u, v, weight])
                self.union(parent, rank, x, y)

        # 打印最小生成树
        print("最小生成树:")
        for u, v, weight in result:
            print(f"{u} -- {v}     {weight}")

        # 计算最小生成树的总权值
        total_weight = sum(weight for u, v, weight in result)
        print("最小生成树的总权值:", total_weight)


if __name__ == '__main__':
    g = Graph(6)
    g.add_edge(0, 1, 4)
    g.add_edge(0, 2, 3)
    g.add_edge(1, 2, 1)
    g.add_edge(1, 3, 2)
    g.add_edge(2, 3, 4)
    g.add_edge(2, 4, 3)
    g.add_edge(3, 4, 2)
    g.add_edge(3, 5, 1)
    g.add_edge(4, 5, 6)

    g.kruskal_algorithm()
Nach dem Login kopieren
  1. Ergebnisanalyse:
    Der obige Code ist ein typisches Beispiel, bei dem ein gewichteter ungerichteter Graph mit 6 Eckpunkten erstellt und der Kruskal-Algorithmus verwendet wird, um seinen minimalen Spannbaum zu lösen. Das Programm gibt die Kanten im minimalen Spannbaum und das Gesamtgewicht des minimalen Spannbaums aus.

Fazit:
Kruskals Algorithmus ist eine effiziente Methode, um den minimalen Spannbaum eines verbundenen Graphen zu lösen. Durch Sortieren der Kanten und Zusammenführen von Mengen kann ein Spannbaum mit dem minimalen Gesamtgewicht erhalten werden. Die Verwendung von Python zur Implementierung des Kruskal-Algorithmus kann uns helfen, die Prinzipien und Prozesse des Algorithmus besser zu verstehen und ihn einfach auf praktische Probleme anzuwenden.

Das obige ist der detaillierte Inhalt vonWie implementiert man Kruskals Algorithmus mit Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man den Algorithmus von Prim in C++ verwendet Wie man den Algorithmus von Prim in C++ verwendet Sep 20, 2023 pm 12:31 PM

Titel: Verwendung des Prim-Algorithmus und Codebeispiele in C++ Einführung: Der Prim-Algorithmus ist ein häufig verwendeter Minimum-Spanning-Tree-Algorithmus, der hauptsächlich zur Lösung des Minimum-Spanning-Tree-Problems in der Graphentheorie verwendet wird. In C++ kann der Algorithmus von Prim durch sinnvolle Datenstrukturen und Algorithmusimplementierung effektiv genutzt werden. In diesem Artikel wird die Verwendung des Prim-Algorithmus in C++ vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Einführung in den Prim-Algorithmus Der Prim-Algorithmus ist ein gieriger Algorithmus. Er beginnt mit einem Scheitelpunkt und erweitert schrittweise den Scheitelpunktsatz des minimalen Spannbaums, bis er ihn enthält

Wie implementiert man den Huffman-Codierungsalgorithmus mit Python? Wie implementiert man den Huffman-Codierungsalgorithmus mit Python? Sep 20, 2023 am 10:49 AM

Wie implementiert man den Huffman-Codierungsalgorithmus mit Python? Zusammenfassung: Die Huffman-Codierung ist ein klassischer Datenkomprimierungsalgorithmus, der basierend auf der Häufigkeit des Auftretens von Zeichen eindeutige Codes generiert und so eine effiziente Komprimierung und Speicherung von Daten erreicht. In diesem Artikel wird erläutert, wie Sie mit Python den Huffman-Codierungsalgorithmus implementieren, und es werden spezifische Codebeispiele bereitgestellt. Verstehen Sie die Idee der Huffman-Codierung. Die Kernidee der Huffman-Codierung besteht darin, etwas kürzere Codes für häufiger vorkommende Zeichen und etwas längere Codes für seltener vorkommende Zeichen zu verwenden, um eine Codierung zu erreichen.

So implementieren Sie die Offline-Karten-Download-Funktion in der Baidu Map API in Python So implementieren Sie die Offline-Karten-Download-Funktion in der Baidu Map API in Python Jul 29, 2023 pm 02:34 PM

Python-Methode zur Implementierung der Offline-Karten-Download-Funktion in der Baidu Map API Mit der rasanten Entwicklung des mobilen Internets wird die Nachfrage nach Offline-Karten-Download-Funktionen immer dringlicher. Mit der Offline-Karten-Download-Funktion können Benutzer weiterhin die Kartennavigation und andere Funktionen ohne Internetverbindung nutzen, was den Benutzern ein besseres Benutzererlebnis bietet. In diesem Artikel wird erläutert, wie Sie mit Python die Offline-Karten-Download-Funktion in der Baidu Map API implementieren. Die Baidu Map API bietet einen vollständigen Satz offener Schnittstellen, einschließlich Offline-Karten-Download-Funktionen. im Einsatz

Verwenden Sie Python, um das Andocken der Baidu AI-Schnittstelle zu implementieren und Ihr Programm intelligenter und leistungsfähiger zu machen Verwenden Sie Python, um das Andocken der Baidu AI-Schnittstelle zu implementieren und Ihr Programm intelligenter und leistungsfähiger zu machen Aug 13, 2023 am 09:29 AM

Verwenden Sie Python, um das Andocken der Baidu-KI-Schnittstelle zu implementieren und Ihr Programm intelligenter und leistungsfähiger zu machen. Mit der kontinuierlichen Weiterentwicklung der Technologie der künstlichen Intelligenz haben immer mehr Entwickler damit begonnen, intelligente Funktionen zu implementieren, um die Intelligenz ihrer Programme zu verbessern. Die Baidu AI-Schnittstelle ist ein leistungsstarkes Tool, das uns bei der Implementierung mehrerer intelligenter Funktionen wie Spracherkennung, Bilderkennung und Verarbeitung natürlicher Sprache helfen kann. In diesem Artikel erfahren Sie, wie Sie mit Python eine Verbindung zur Baidu AI-Schnittstelle herstellen und Ihr Programm intelligenter und leistungsfähiger machen. Zuerst müssen wir zur Baidu AI Open Platform (h

Python implementiert Methoden und Case-Sharing zum automatisierten Testen von Webseiten mithilfe von Headless-Browser-Akquisitionsanwendungen Python implementiert Methoden und Case-Sharing zum automatisierten Testen von Webseiten mithilfe von Headless-Browser-Akquisitionsanwendungen Aug 08, 2023 am 08:29 AM

Überblick über die Python-Methoden und Fallbeispiele für automatisierte Webseitentests mit Headless-Browser-Akquisitionsanwendungen: Im heutigen Internetzeitalter ist das automatische Testen von Webseiten zu einem wichtigen Mittel zur Verbesserung der Softwarequalität und -effizienz geworden. Als Programmiersprache auf hohem Niveau verfügt Python über eine Fülle von Bibliotheken und Tools von Drittanbietern, sodass Python einfach und schnell für automatisierte Webseitentests verwendet werden kann. In diesem Artikel wird die Verwendung eines Headless-Browsers zum Sammeln von Anwendungen und zum Implementieren automatisierter Tests von Webseiten vorgestellt und relevante Codebeispiele bereitgestellt. 1. Was ist Headless Browsing?

Boruvka-Algorithmus in C++ für minimalen Spanning Tree Boruvka-Algorithmus in C++ für minimalen Spanning Tree Aug 27, 2023 pm 02:53 PM

In der Graphentheorie ist das Finden des Minimum Spanning Tree (MST) eines verbundenen gewichteten Graphen ein häufiges Problem. MST ist die Teilmenge der Kanten des Diagramms, die alle Eckpunkte verbindet und das Gesamtkantengewicht minimiert. Ein effizienter Algorithmus zur Lösung dieses Problems ist der Boruvka-Algorithmus. Syntax structEdge{intsrc,dest,weight;};//Definethestructuretorepresentasubsetforunion-findstructSubset{intparent,rank;};Algorithmus Lassen Sie uns nun die Schritte skizzieren, die mit dem Boruvka-Algorithmus verbunden sind, um den minimalen Spanning Tree zu finden. − Initialisieren Sie den MST mit der leeren Menge . für jeden Scheitelpunkt

Python implementiert die Seitensimulations-Klick- und Scroll-Funktionsanalyse für Headless-Browser-Sammlungsanwendungen Python implementiert die Seitensimulations-Klick- und Scroll-Funktionsanalyse für Headless-Browser-Sammlungsanwendungen Aug 09, 2023 pm 05:13 PM

Python implementiert die Seitensimulations-Klick- und Scroll-Funktionsanalyse für Headless-Browser-Erfassungsanwendungen. Beim Sammeln von Netzwerkdaten ist es häufig erforderlich, Benutzervorgänge wie das Klicken auf Schaltflächen, das Scrollen im Dropdown-Menü usw. zu simulieren. Eine gängige Methode zur Durchführung dieser Vorgänge ist die Verwendung eines Headless-Browsers. Ein Headless-Browser ist eigentlich ein Browser ohne Benutzeroberfläche, der Benutzervorgänge durch Programmierung simuliert. Die Python-Sprache bietet viele Bibliotheken zur Implementierung kopfloser Browseroperationen. Die am häufigsten verwendete davon ist die Selenium-Bibliothek. Selen

Wie kann man den Greedy-Algorithmus verwenden, um die optimale Lösung des Minimum-Spanning-Tree-Problems in PHP zu erreichen? Wie kann man den Greedy-Algorithmus verwenden, um die optimale Lösung des Minimum-Spanning-Tree-Problems in PHP zu erreichen? Sep 19, 2023 pm 06:33 PM

Wie kann man den Greedy-Algorithmus verwenden, um die optimale Lösung des Minimum-Spanning-Tree-Problems in PHP zu erreichen? Das Problem des minimalen Spannbaums (MinimumSpanningTree) besteht darin, einen Teilbaum in einem verbundenen ungerichteten Diagramm zu finden, sodass dieser Teilbaum alle Scheitelpunkte im Diagramm enthält und die Summe der Gewichte aller Kanten am kleinsten ist. Der Greedy-Algorithmus ist eine der gängigen Methoden zur Lösung dieses Problems. Er findet nach und nach die globale optimale Lösung, indem er jedes Mal die aktuell optimale Lösung auswählt. Zuerst müssen wir eine Graphklasse definieren, um die Struktur des Graphen und die Gewichte der Kanten zu speichern. Das Folgende ist ein Beispiel dafür

See all articles