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.
- 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. - 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. - 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()
- 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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? 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.

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-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

Ü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?

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-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? 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
