Kruskal Algorithmus

Gegeben sind Städte auf einer Landkarte. Benötigt wird ein Leitungsnetz, das alle Städte miteinander verbindet und mit minimalen Leitungslängen verwaltet werden kann.

Los geht’s Leg kostenfrei los
Kruskal Algorithmus Kruskal Algorithmus

Erstelle Lernmaterialien über Kruskal Algorithmus mit unserer kostenlosen Lern-App!

  • Sofortiger Zugriff auf Millionen von Lernmaterialien
  • Karteikarten, Notizen, Übungsprüfungen und mehr
  • Alles, was du brauchst, um bei deinen Prüfungen zu glänzen
Kostenlos anmelden

Lerne mit Millionen geteilten Karteikarten

Leg kostenfrei los
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ist Kruskal-Algorithmus Greedy-Algorithmus?

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wahr oder Falsch

Nach dem Do-it-yourself-Motto suchen Greedy-Algorithmen immer nach der lokal optimalen Variante und nehmen daraus das Ziel, auch global für beste Ergebnisse.

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ergänze

 Es basiert auf der Arbeit von Vojtech (1)         , der bereits 1930 die Grundlagen für die Algorithmen von (2)            und Kruskal legte. Dies gibt einen minimalen (3)             zurück.

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wie funktioniert der Algorithmus von Kruskal?

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wahr oder Falsch

Kruskals Algorithmus ist ein "greedy" Algorithmus, der den minimalen Spannbaum eines verbundenen gewichteten ungerichteten Graphen effizient berechnet

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ergänze

Der Kruskal-Algorithmus arbeitet mit einer sortierten (1)         von Kanten. Es besteht aus allen Kanten, die im ursprünglichen (2)           enthalten sind.

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wahr oder Falsch

Beim Kruskal-Algorithmus aus den Teilbäumen wird dann sequentiell ein maximaler Spannbaum aufgebaut. 

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wie wird der Kruskal-Algorithmus initialisiert?

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ergänze

Kruskals Algorithmus nimmt als (1)          einen Graphen G mit einer entsprechenden Gewichtsfunktion w. (2)            ist der minimale Spannbaum T von G. 

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Welche Funktion hat diese Code-Teil:

 " System.out.println("Minimaler Spannbaum: ");
printGraph(mst);
  "

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Gesamtkomplexität von Kruskal-Algorithmus?

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ist Kruskal-Algorithmus Greedy-Algorithmus?

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wahr oder Falsch

Nach dem Do-it-yourself-Motto suchen Greedy-Algorithmen immer nach der lokal optimalen Variante und nehmen daraus das Ziel, auch global für beste Ergebnisse.

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ergänze

 Es basiert auf der Arbeit von Vojtech (1)         , der bereits 1930 die Grundlagen für die Algorithmen von (2)            und Kruskal legte. Dies gibt einen minimalen (3)             zurück.

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wie funktioniert der Algorithmus von Kruskal?

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wahr oder Falsch

Kruskals Algorithmus ist ein "greedy" Algorithmus, der den minimalen Spannbaum eines verbundenen gewichteten ungerichteten Graphen effizient berechnet

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ergänze

Der Kruskal-Algorithmus arbeitet mit einer sortierten (1)         von Kanten. Es besteht aus allen Kanten, die im ursprünglichen (2)           enthalten sind.

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wahr oder Falsch

Beim Kruskal-Algorithmus aus den Teilbäumen wird dann sequentiell ein maximaler Spannbaum aufgebaut. 

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Wie wird der Kruskal-Algorithmus initialisiert?

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Ergänze

Kruskals Algorithmus nimmt als (1)          einen Graphen G mit einer entsprechenden Gewichtsfunktion w. (2)            ist der minimale Spannbaum T von G. 

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Welche Funktion hat diese Code-Teil:

 " System.out.println("Minimaler Spannbaum: ");
printGraph(mst);
  "

Antwort zeigen
  • + Add tag
  • Immunology
  • Cell Biology
  • Mo

Gesamtkomplexität von Kruskal-Algorithmus?

Antwort zeigen

Wandle deine Dokumente mit AI in Karteikarten um

Inhaltsverzeichnis
Inhaltsangabe

    Hast Du schon herausgefunden, wie Du ein solches Problem lösen kannst?

    Das Problem lässt sich zum Beispiel auch mit Backtracking lösen, dafür gibt es aber effektivere Methoden. Eine davon ist der Kruskal-Algorithmus.

    Kruskal Algorithmus Definition

    Wie funktioniert der Algorithmus von Kruskal?

    Joseph Bernard Kruskal (* 1929 in New York) veröffentlichte 1956 in einer Zeitschrift einen Algorithmus zum Auffinden der kürzesten Verbindung von einem Knoten zu allen Knoten in einem Graphen (Single-Source Shortest Path Problem).

    Dieser basiert auf der Arbeit von Vojtech Jarnik, der bereits 1930 die Grundlagen für die Algorithmen von Prim und Kruskal legte. Beide Algorithmen geben einen minimalen Spannbaum zurück.

    Das Prinzip, auf dem das Verfahren beruht, nennt sich sogenanntes Greedy-Prinzip: Greedy-Algorithmen suchen immer nach der lokal optimalen Variante und nehmen daraus das Ziel, auch global für beste Ergebnisse.

    Kruskals Algorithmus ist ein "greedy" Algorithmus, der den minimalen Spannbaum eines verbundenen, gewichteten, ungerichteten Graphen effizient berechnet und dabei in jedem Schritt die gierige/beste Wahl trifft, in der Hoffnung, eine globale Lösung zu finden.

    Die Idee von Kruskals Algorithmus ist ganz einfach:

    • Betrachte jeweils eine Verbindung in der Reihenfolge der Länge (kürzeste zuerst).
    • Eine Kante gehört zur Lösung, wenn sie zwei noch nicht verbundene Knoten verbindet, ansonsten wird die Verbindung ignoriert.
    • Wiederhole dies, bis Du n-1 Verbindungen für die Lösung findest.

    Kruskal Algorithmus minimaler Spannbaum

    Der Kruskal-Algorithmus arbeitet mit einer sortierten Liste von Kanten. Sie besteht aus allen Kanten, die im ursprünglichen Graphen enthalten sind. Eine gute Datenstruktur zum Speichern dieser Kanten ist eine Prioritätswarteschlange, die die Kanten entsprechend ihrer Gewichtung organisiert.

    Jede Kante von dieser Liste wird betrachtet und entweder verworfen oder für die Konstruktion des entsprechenden minimalen Spannbaums ausgewählt. Aus den Teilbäumen wird dann sequentiell ein minimaler Spannbaum aufgebaut.

    Wenn Du mehr über die Spannbäume wissen möchtest, dann ließ Dir doch den Artikel "Prim Algorithmus" durch!

    Kruskal Algorithmus Vorgehensweise

    Die Vorgehensweise ist in den folgenden Zeilen beschrieben:

    1. Der Algorithmus beginnt mit einer leeren Menge von Kanten. Jeder Knoten im Diagramm wird als separate Komponente angezeigt.

    2. Die Kanten des Graphen werden entsprechend ihrer Kantengewichte in einer Prioritätsschlange sortiert.

    3. Aus dieser Priority-Queue wird nun die Kante mit dem geringsten Gewicht gezogen.

    4. Hier wird geprüft, ob die durch diese Kante verbundenen Knoten in unterschiedlichen Komponenten liegen.

      • Wenn ja: Verbindung aus der Warteschlange entfernen, entsprechende Komponenten zusammenfügen und Verbindung zur Ergebnisliste hinzufügen.

      • Falls nein: Entferne nur Kanten aus der Warteschlange.

    5. Wenn die Prioritätswarteschlange nicht leer ist, gehe zu 3.

    6. Ende.

    Kruskal-Algorithmus Anwendung

    Der Algorithmus wird mit einem Wald initialisiert, der aus Bäumen mit einem einzigen Knoten besteht. Kanten werden entsprechend ihrer Gewichtung in Warteschlangen einsortiert.

    Bei jeder Iteration werden Kanten aus der Warteschlange entfernt. Wenn die Endpunkte einer Kante zu verschiedenen Bäumen gehören, werden sie über Kanten hinweg verbunden.

    Dies wird wiederholt, bis alle Knoten zu demselben Baum gehören oder die Warteschlange keine Kanten mehr hat.

    Wie schaut das alles im Pseudocode aus?

    Kruskals Algorithmus nimmt als Input einen Graphen G mit einer entsprechenden Gewichtsfunktion w. Output ist der minimale Spannbaum T von G.

    BEGIN
    
      T ← ∅
    
      queue ← sortiere Kanten E nach l.
    
      FOREACH v in G.V
    
        make-tree(v);
    
      WHILE queue ≠ ∅ AND trees-count > 1 DO
    
        {u, v} ← queue.extractMin()
    
        IF !(T ∪ {{u, v}} enthält Kreis)
    
          T.add({u, v})
    
          merge(tree-of(u), tree-of(v))    
    
    END

    Kruskal Algorithmus Java

    Hier ist ein kleines Beispiel für Kruskals Algorithmus in Java-Code:

    Kruskal-Algorithmus – Minimum Spanning Tree (MST) – Vollständige Java-Implementierung.

    Das Folgende wird als Ausgangsgraph angegeben:

    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.PriorityQueue;
    
    public class KrushkalMST {
        static class Edge {
            int source;
            int destination;
            int weight;
    
            public Edge(int source, int destination, int weight) {
                this.source = source;
                this.destination = destination;
                this.weight = weight;
    
            }
    
        }
    
        static class Graph {
            int vertices;
            ArrayList allEdges = new ArrayList<>();
                     
                    Graph(int vertices) {
                             this.vertices = vertices;
    
            }
    
            public void addEgde(int source, int destination, int weight) {
                Edge edge = new Edge(source, destination, weight);
                allEdges.add(edge); //Zu den Gesamtkanten hinzufügen
    
            }
          public void kruskalMST(){
           PriorityQueue pq = new PriorityQueue<>(allEdges.size(), Comparator.comparingInt(o -> o.weight));
          //Füge alle Kanten zur Prioritätswarteschlange hinzu, 
         //Sortiere die Kanten nach Gewichtungen  
          for (int i = 0; i <allEdges.size(); i++){ 
             pq.add(allEdges.get(i));
    } //Erstellen eines übergeordneten Arrays [] int [] parent = new int[vertices]; //makeset makeSet(parent); ArrayList mst = new ArrayList<>(); // vertices - 1 edges int index = 0; while (inddex<vertices-1){ Edge edge = pq.remove(); //Überprüfe, ob durch Hinzufügen dieser Kante ein Kreis erstellt wird int x_set = find(parent, edge.source); int y_set = find(parent,edge.ddestination); if()x_set==y_set){ //ignorieren, wenn ein Kreis erstellt }else{ //Füge es im Endergebnis hinzu mst.add(edge); index++; union(parent,x_set,y_set); } } //Drücken MST System.out.println("Minimaler Spannbaum: "); printGraph(mst); }public void makeSet(int [] parent){ //Make set- Erstellen eines neuen Elements mit einem Übergeordneten Array for(int i=0;i<vertices;i++){ parent[i]=i; } } public int find(int [] parent, int vertex){ if(parent[vertex]!=vertex) return find(parent, parent[vertex]);; return vertex; }public void union(int [] parent, int x, int y){ int x_set_parent = find(parent, x); int y_set_parent = find(parent, y); //Mache x als übergeordnetes Element von y parent[y_set_parent] = x_set_parent; } public void printGraph(ArrayList edgeList){ for(int i=0;i<edgeList.size();i++){ Edge edge = edgeList.get(i); System.out.println("Kante-" + i + "Start: " + edge.source + " Ziel: " + edge.destination + " Gewicht: " + edge.weigth); } }}public static void main(String[] args) { int vertices = 6; Graph graph = new Graph(vertices); graph.addEgde(0, 1, 4); graph.addEgde(0, 2, 3); graph.addEgde(1, 2, 1); graph.addEgde(1, 3, 2); graph.addEgde(2, 3, 4); graph.addEgde(3, 4, 2); graph.addEgde(4, 5, 6); graph.kruskalMST(); }}
     Output:
     Der minimaler Spannbaum:
    Kante-0 Start: 1 Ziel: 2 Gewicht: 1
    Kante-1 Start: 1 Ziel: 3 Gewicht: 2
    Kante-2 Start: 3 Ziel: 4 Gewicht: 2
    Kante-3 Start: 0 Ziel: 2 Gewicht: 3
    Kante-4 Start: 4 Ziel: 5 Gewicht: 6

    Nach dem Ausführen des Kruskal-Algorithmus bekommt man die folgende MST:

    Kruskal Algorithmus Beispiel

    Das folgende Beispiel soll den Ablauf des Algorithmus verdeutlichen. Basierend auf dem folgenden Diagramm wird ein minimaler Spannbaum erstellt. Kanten und Knoten des minimalen Spannbaums sind rot hinterlegt.

    Kruskal-Algorithmus DurchlaufBeschreibung

    1. Ausgangsgraph

    2. Die Kante mit dem niedrigsten Gewicht wird aus der Prioritätswarteschlange genommen. Dies ist eine Kante(1,2) mit w(1,2) = 10, die aus der Warteschlange entfernt wird.
    3. Die nächstkleinere Kante ist (3,4) mit w(3,4) = 15. Sie verbindet zwei Knoten unterschiedlicher Komponenten und ist daher auch im minimalen Spannbaum enthalten.
    4.Dann wird die Kante (2,3) mit w(2,3) = 20 ausgewählt.
    5. Schließlich wird die Kante (0,1) hinzugefügt. Damit sind alle Knoten verbunden und somit der minimale Spannbaum erstellt.

    Kruskal Algorithmus Laufzeit

    Die Ausführungszeit des Algorithmus hängt stark von Schritt 3 ab. Im Allgemeinen kann jeder Sortieralgorithmus verwendet werden, um die Kanten des Graphen zu sortieren. Wichtig ist hier die Laufzeit des Algorithmus.

    Unter Verwendung der Prioritätswarteschlange als Datenstruktur in Schritt 3 ist das Finden und Entfernen der kleinsten Kante in e O(log |E|) Schritten möglich. Die ersten n Komponenten der Partition können in insgesamt O(n • log n) Schritten kombiniert werden. Der Graph G ist zusammenhängend, hat also mindestens n-1 Kanten.

    Daher ist die Gesamtkomplexität O(|E| • log|E|).

    Kruskal Algorithmus – Das Wichtigste

    • Kruskal-Algorithmus Definition: Kruskals Algorithmus ist ein "greedy" Algorithmus, der den minimalen Spannbaum eines verbundenen gewichteten ungerichteten Graphen effizient berechnet.
    • Kruskal-Algorithmus - minimaler Spannbaum : Der Kruskal-Algorithmus arbeitet mit einer sortierten Liste von Kanten. Jede Kante von dieser Liste wird betrachtet und entweder verworfen oder für die Konstruktion des entsprechenden minimalen Spannbaums ausgewählt.
    • Kruskal-Algorithmus Laufzeit: Der Graph G ist zusammenhängend, hat also mindestens n-1 Kanten.

      Daher ist die Gesamtkomplexität von Kruskal-Algorithmus O(|E| • log|E|).


    Nachweise

    1. algorithms.discrete.ma.tim.de: Der Algorithmus von Kruskal. (31.10.2022)
    2. cermat.org: Der Algorithmus von Kruskal. (31.10.2022)
    3. g-ymnasium.de: Die Algorithmen von Prim und Kruskal. (31.10.2022)
    Häufig gestellte Fragen zum Thema Kruskal Algorithmus

    Ist Kruskal Greedy?

    Das Prinzip, auf dem das Verfahren beruht, nennt sich sogenanntes Greedy-Prinzip: Nach dem Do-it-yourself-Motto suchen Greedy-Algorithmen immer nach der lokal optimalen Variante und nehmen daraus das Ziel, auch global für beste Ergebnisse. 

    Wie funktioniert der Algorithmus von Kruskal? 

    Kruskals Algorithmus ist ein "greedy" Algorithmus, der den minimalen Spannbaum eines verbundenen gewichteten ungerichteten Graphen effizient berechnet (in jedem Schritt die gierige/beste Wahl trifft, in der Hoffnung, eine globale Lösung zu finden). 

    Teste dein Wissen mit Multiple-Choice-Karteikarten

    Wahr oder FalschNach dem Do-it-yourself-Motto suchen Greedy-Algorithmen immer nach der lokal optimalen Variante und nehmen daraus das Ziel, auch global für beste Ergebnisse.

    Wahr oder FalschKruskals Algorithmus ist ein "greedy" Algorithmus, der den minimalen Spannbaum eines verbundenen gewichteten ungerichteten Graphen effizient berechnet

    Wahr oder FalschBeim Kruskal-Algorithmus aus den Teilbäumen wird dann sequentiell ein maximaler Spannbaum aufgebaut. 

    Weiter

    Entdecken Lernmaterialien mit der kostenlosen StudySmarter App

    Kostenlos anmelden
    1
    Über StudySmarter

    StudySmarter ist ein weltweit anerkanntes Bildungstechnologie-Unternehmen, das eine ganzheitliche Lernplattform für Schüler und Studenten aller Altersstufen und Bildungsniveaus bietet. Unsere Plattform unterstützt das Lernen in einer breiten Palette von Fächern, einschließlich MINT, Sozialwissenschaften und Sprachen, und hilft den Schülern auch, weltweit verschiedene Tests und Prüfungen wie GCSE, A Level, SAT, ACT, Abitur und mehr erfolgreich zu meistern. Wir bieten eine umfangreiche Bibliothek von Lernmaterialien, einschließlich interaktiver Karteikarten, umfassender Lehrbuchlösungen und detaillierter Erklärungen. Die fortschrittliche Technologie und Werkzeuge, die wir zur Verfügung stellen, helfen Schülern, ihre eigenen Lernmaterialien zu erstellen. Die Inhalte von StudySmarter sind nicht nur von Experten geprüft, sondern werden auch regelmäßig aktualisiert, um Genauigkeit und Relevanz zu gewährleisten.

    Erfahre mehr
    StudySmarter Redaktionsteam

    Team Informatik Lehrer

    • 8 Minuten Lesezeit
    • Geprüft vom StudySmarter Redaktionsteam
    Erklärung speichern Erklärung speichern

    Lerne jederzeit. Lerne überall. Auf allen Geräten.

    Kostenfrei loslegen

    Melde dich an für Notizen & Bearbeitung. 100% for free.

    Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!

    Die erste Lern-App, die wirklich alles bietet, was du brauchst, um deine Prüfungen an einem Ort zu meistern.

    • Karteikarten & Quizze
    • KI-Lernassistent
    • Lernplaner
    • Probeklausuren
    • Intelligente Notizen
    Schließ dich über 22 Millionen Schülern und Studierenden an und lerne mit unserer StudySmarter App!
    Mit E-Mail registrieren

    Alle Inhalte freischalten mit einem kostenlosen StudySmarter-Account.

    • Sofortiger Zugriff auf Millionen von Lernmaterialien.
    • Karteikarten, Notizen, Übungsprüfungen, AI-tools und mehr.
    • Alles, was du brauchst, um bei deinen Prüfungen zu bestehen.
    Second Popup Banner