Heim Java javaLernprogramm So implementieren Sie den Kruskal-Algorithmus mit Java

So implementieren Sie den Kruskal-Algorithmus mit Java

Sep 19, 2023 am 11:39 AM
java实现 Kruskal-Algorithmus

So implementieren Sie den Kruskal-Algorithmus mit Java

So implementieren Sie den Kruskal-Algorithmus mit Java

Der Kruskal-Algorithmus ist ein Algorithmus, der häufig zur Lösung des Minimum-Spanning-Tree-Problems verwendet wird. Er verwendet Kanten als Einstiegspunkt, um schrittweise einen Minimum-Spanning-Tree aufzubauen. In diesem Artikel erklären wir detailliert, wie der Kruskal-Algorithmus mit Java implementiert wird, und stellen spezifische Codebeispiele bereit.

  1. Algorithmusprinzip
    Das Grundprinzip des Kruskal-Algorithmus besteht darin, alle Kanten nach Gewicht von klein nach groß zu sortieren und dann Kanten in der Reihenfolge ihres Gewichts von klein nach groß auszuwählen, kann jedoch keinen Zyklus bilden. Die konkreten Umsetzungsschritte sind wie folgt:

    • Sortieren Sie alle Kanten nach Gewicht von klein nach groß.
    • Erstellen Sie einen leeren Satz, um die Kanten des minimalen Spannbaums zu speichern.
    • Durchqueren Sie die sortierten Kanten und bestimmen Sie, ob sich die beiden Scheitelpunkte der aktuellen Kante im selben Satz befinden. Wenn nicht im selben Satz, fügen Sie die aktuelle Kante zum Satz der minimal aufspannenden Bäume hinzu und führen Sie die beiden Eckpunkte zu einem Satz zusammen.
    • Fahren Sie weiter, bis die Anzahl der Kanten des minimalen Spannbaums gleich der Anzahl der Scheitelpunkte minus eins ist.
  2. Java-Code-Implementierung
    Das Folgende ist ein Codebeispiel zur Implementierung des Kruskal-Algorithmus mithilfe der Java-Sprache:
import java.util.*;

class Edge implements Comparable<Edge> {
    int src, dest, weight;

    public int compareTo(Edge edge) {
        return this.weight - edge.weight;
    }
}

class Subset {
    int parent, rank;
}

class Graph {
    int V, E;
    Edge[] edges;

    public Graph(int v, int e) {
        V = v;
        E = e;
        edges = new Edge[E];
        for (int i = 0; i < e; ++i)
            edges[i] = new Edge();
    }

    int find(Subset[] subsets, int i) {
        if (subsets[i].parent != i)
            subsets[i].parent = find(subsets, subsets[i].parent);

        return subsets[i].parent;
    }

    void union(Subset[] subsets, int x, int y) {
        int xroot = find(subsets, x);
        int yroot = find(subsets, y);

        if (subsets[xroot].rank < subsets[yroot].rank)
            subsets[xroot].parent = yroot;
        else if (subsets[xroot].rank > subsets[yroot].rank)
            subsets[yroot].parent = xroot;
        else {
            subsets[yroot].parent = xroot;
            subsets[xroot].rank++;
        }
    }

    void KruskalMST() {
        Edge[] result = new Edge[V];
        int e = 0;
        int i = 0;
        for (i = 0; i < V; ++i)
            result[i] = new Edge();

        Arrays.sort(edges);

        Subset[] subsets = new Subset[V];
        for (i = 0; i < V; ++i)
            subsets[i] = new Subset();

        for (int v = 0; v < V; ++v) {
            subsets[v].parent = v;
            subsets[v].rank = 0;
        }

        i = 0;

        while (e < V - 1) {
            Edge next_edge = edges[i++];

            int x = find(subsets, next_edge.src);
            int y = find(subsets, next_edge.dest);

            if (x != y) {
                result[e++] = next_edge;
                union(subsets, x, y);
            }
        }

        System.out.println("Following are the edges in the constructed MST:");
        int minimumCost = 0;
        for (i = 0; i < e; ++i) {
            System.out.println(result[i].src + " -- " + result[i].dest + " == " + result[i].weight);
            minimumCost += result[i].weight;
        }
        System.out.println("Minimum Cost Spanning Tree: " + minimumCost);
    }
}

public class KruskalAlgorithm {
    public static void main(String[] args) {
        int V = 4;
        int E = 5;
        Graph graph = new Graph(V, E);

        graph.edges[0].src = 0;
        graph.edges[0].dest = 1;
        graph.edges[0].weight = 10;

        graph.edges[1].src = 0;
        graph.edges[1].dest = 2;
        graph.edges[1].weight = 6;

        graph.edges[2].src = 0;
        graph.edges[2].dest = 3;
        graph.edges[2].weight = 5;

        graph.edges[3].src = 1;
        graph.edges[3].dest = 3;
        graph.edges[3].weight = 15;

        graph.edges[4].src = 2;
        graph.edges[4].dest = 3;
        graph.edges[4].weight = 4;

        graph.KruskalMST();
    }
}
Nach dem Login kopieren

Der obige Code implementiert eine einfache Diagrammklasse (Graph), einschließlich Kantenklasse (Edge) und Union-Suchklasse (Subset). ) ). In der Hauptfunktion erstellen wir ein Diagrammobjekt, fügen Kanten hinzu und rufen die KruskalMST()-Methode auf, um den minimalen Spannbaum zu erhalten.

  1. Ergebnisanalyse
    Nach dem Testen kann der obige Code die folgenden Ergebnisse korrekt ausgeben:
Following are the edges in the constructed MST:
2 -- 3 == 4
0 -- 3 == 5
0 -- 1 == 10
Minimum Cost Spanning Tree: 19
Nach dem Login kopieren

Dies bedeutet, dass der konstruierte minimale Spannbaum 3 Kanten enthält und die Summe der Gewichte 19 beträgt.

Zusammenfassung:
In diesem Artikel haben wir detailliert beschrieben, wie der Kruskal-Algorithmus mit Java implementiert wird, und spezifische Codebeispiele beigefügt. Ich hoffe, dieser Artikel kann jedem helfen, den Kruskal-Algorithmus besser zu verstehen und anzuwenden.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Kruskal-Algorithmus mit Java. 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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 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)

So implementieren Sie einen dynamischen Programmieralgorithmus mit Java So implementieren Sie einen dynamischen Programmieralgorithmus mit Java Sep 19, 2023 am 11:16 AM

So verwenden Sie Java zur Implementierung eines dynamischen Programmieralgorithmus. Dynamische Programmierung ist eine Optimierungsmethode zur Lösung mehrstufiger Entscheidungsprobleme. Sie zerlegt das Problem in mehrere Stufen. Jede Stufe trifft eine Entscheidung auf der Grundlage bekannter Informationen und zeichnet die Ergebnisse jeder Entscheidung auf die in den nachfolgenden Phasen verwendet wurde. In praktischen Anwendungen wird dynamische Programmierung normalerweise zur Lösung von Optimierungsproblemen verwendet, z. B. kürzester Weg, maximale Teilsequenzsumme, Rucksackproblem usw. In diesem Artikel wird erläutert, wie Sie mithilfe der Java-Sprache dynamische Programmieralgorithmen implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Grundprinzipien dynamischer Programmieralgorithmen

So implementieren Sie den RSA-Verschlüsselungsalgorithmus mit Java So implementieren Sie den RSA-Verschlüsselungsalgorithmus mit Java Sep 20, 2023 pm 02:33 PM

Verwendung von Java zur Implementierung des RSA-Verschlüsselungsalgorithmus RSA (Rivest-Shamir-Adleman) ist ein asymmetrischer Verschlüsselungsalgorithmus, der derzeit einer der am häufigsten verwendeten Verschlüsselungsalgorithmen ist. In diesem Artikel wird erläutert, wie Sie mithilfe der Java-Sprache den RSA-Verschlüsselungsalgorithmus implementieren, und es werden spezifische Codebeispiele bereitgestellt. Ein Schlüsselpaar generieren Zuerst müssen wir ein Paar RSA-Schlüssel generieren, das aus einem öffentlichen Schlüssel und einem privaten Schlüssel besteht. Der öffentliche Schlüssel kann zum Verschlüsseln von Daten und der private Schlüssel zum Entschlüsseln von Daten verwendet werden. Im Folgenden finden Sie ein Codebeispiel zum Generieren eines RSA-Schlüsselpaars: import

Verwendung von Java zur Implementierung der Prüfungsanordnungsanpassungsfunktion des Online-Prüfungssystems Verwendung von Java zur Implementierung der Prüfungsanordnungsanpassungsfunktion des Online-Prüfungssystems Sep 25, 2023 am 08:45 AM

Java-Implementierung der Prüfungsanordnungsanpassungsfunktion des Online-Prüfungssystems Einführung: Mit der Entwicklung der Internet-Technologie entscheiden sich immer mehr Schulen und Ausbildungseinrichtungen für die Verwendung von Online-Prüfungssystemen für Prüfungen und Bewertungen. Die Anpassung des Prüfungsplans ist eine wichtige Funktion im Online-Prüfungssystem, die Administratoren dabei helfen kann, Prüfungszeit und prüfungsbezogene Informationen flexibel an die tatsächliche Situation anzupassen. In diesem Artikel wird detailliert beschrieben, wie Sie mithilfe der Java-Programmierung die Funktion zur Anpassung des Prüfungsplans des Online-Prüfungssystems implementieren, und es werden spezifische Codebeispiele angegeben. Anforderungen an die Anpassungsfunktion der Datenbankdesign-Prüfungsanordnung

So implementieren Sie den Kruskal-Algorithmus mit Java So implementieren Sie den Kruskal-Algorithmus mit Java Sep 19, 2023 am 11:39 AM

Verwendung von Java zur Implementierung des Kruskal-Algorithmus Der Kruskal-Algorithmus ist ein Algorithmus, der häufig zur Lösung des Minimum-Spanning-Tree-Problems verwendet wird. Er verwendet Kanten als Einstiegspunkt, um schrittweise einen Minimum-Spanning-Tree aufzubauen. In diesem Artikel erklären wir detailliert, wie der Kruskal-Algorithmus mit Java implementiert wird, und stellen spezifische Codebeispiele bereit. Algorithmusprinzip Das Grundprinzip des Kruskal-Algorithmus besteht darin, alle Kanten in der Reihenfolge ihres Gewichts von klein nach groß zu sortieren und dann Kanten in der Reihenfolge ihres Gewichts von klein nach groß auszuwählen, kann jedoch keinen Zyklus bilden. Die spezifischen Implementierungsschritte sind wie folgt:

Empfehlungsalgorithmus und Implementierung in Java implementiert Empfehlungsalgorithmus und Implementierung in Java implementiert Jun 18, 2023 pm 02:51 PM

Mit der Entwicklung des Internets ist die Datenmenge im Netzwerk explodiert, was es für Benutzer schwierig macht, bei großen Informationsmengen schnell und genau die Inhalte zu finden, die sie wirklich benötigen. Empfehlungsalgorithmen sind zeitgemäß entstanden und bieten Benutzern personalisierte Dienste und empfohlene Inhalte, indem sie Daten zum Benutzerverhalten aufzeichnen und analysieren und so die Zufriedenheit und Loyalität der Benutzer verbessern. Java ist die Sprache der Wahl für die Softwareentwicklung im großen Maßstab und wird auch gerne bei der Implementierung von Empfehlungsalgorithmen eingesetzt. 1. Empfehlungsalgorithmus Der Empfehlungsalgorithmus ist eine Methode, die Benutzerinteraktions-, Verhaltens- und Interessendaten analysiert und auswertet.

Java implementiert den logischen Prozess eines voll ausgestatteten Online-Buchungssystems für Teambuilding-Aktivitäten Java implementiert den logischen Prozess eines voll ausgestatteten Online-Buchungssystems für Teambuilding-Aktivitäten Jun 27, 2023 am 11:46 AM

Da Teambuilding-Aktivitäten allmählich zur Unternehmenskultur werden, suchen immer mehr Unternehmen nach einer Möglichkeit, Teambuilding-Aktivitäten für Mitarbeiter zu planen und zu buchen. Und es entstand das Online-Buchungssystem für Teambuilding-Aktivitäten. Java ist eine weit verbreitete Programmiersprache, die Unternehmen großen Komfort und Flexibilität bei der Entwicklung von Online-Reservierungssystemen bietet. In diesem Artikel wird Schritt für Schritt der logische Prozess der Verwendung von Java zur Implementierung eines voll ausgestatteten Online-Buchungssystems für Teambuilding-Aktivitäten vorgestellt. Schritt eins: Systemanforderungen und -funktionen ermitteln Bevor Sie mit dem Schreiben von Code beginnen, müssen Sie alle Anforderungen ermitteln, die das System erfüllen muss.

So implementieren Sie mit Java die Bestandsanpassungsfunktion des Lagerverwaltungssystems So implementieren Sie mit Java die Bestandsanpassungsfunktion des Lagerverwaltungssystems Sep 24, 2023 pm 05:09 PM

So implementieren Sie die Bestandsanpassungsfunktion des Lagerverwaltungssystems mit Java. Mit der kontinuierlichen Entwicklung der Logistik- und Lagerbranche ist das Lagerverwaltungssystem zu einem unverzichtbaren Werkzeug für Unternehmen geworden, um die Effizienz und Verwaltungsfähigkeiten zu verbessern. Als wichtiges Funktionsmodul im Lagerverwaltungssystem ist die Bestandsanpassung von großer Bedeutung, um den Bestandsstatus von Waren genau zu erfassen, zeitnahe Anpassungen und Statistiken vorzunehmen und die betriebliche Effizienz zu verbessern. In diesem Artikel wird erläutert, wie die Programmiersprache Java zum Implementieren der Bestandsanpassungsfunktion des Lagerverwaltungssystems verwendet wird, und es werden spezifische Codebeispiele angegeben. Zuerst müssen wir überlegen

So implementieren Sie einen Auswahlsortierungsalgorithmus mit Java So implementieren Sie einen Auswahlsortierungsalgorithmus mit Java Sep 19, 2023 am 09:46 AM

So implementieren Sie den Auswahlsortierungsalgorithmus in Java. Der Auswahlsortierungsalgorithmus ist ein einfacher und intuitiver Sortieralgorithmus. Seine Grundidee besteht darin, das kleinste (oder größte) Element aus den unsortierten Elementen zu finden und es am Ende der sortierten Sequenz einzufügen. So wird nach und nach eine geordnete Abfolge aufgebaut. Im Folgenden stellen wir anhand von Java-Codebeispielen vor, wie der Auswahlsortierungsalgorithmus implementiert wird. Code-Implementierung: publicclassSelectionSort{publicstaticvoidselect

See all articles