Heim Backend-Entwicklung C++ 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
最小生成树 Prim-Algorithmus

Wie man den Algorithmus von Prim in C++ verwendet

Titel: Verwendung und Codebeispiele des Prim-Algorithmus 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, der von einem Scheitelpunkt ausgeht und den Scheitelpunktsatz des minimalen Spannbaums schrittweise erweitert, bis alle Scheitelpunkte enthalten sind. Es erstellt einen minimalen Spannbaum, indem kontinuierlich die Kante mit dem geringsten Gewicht ausgewählt wird, die mit dem aktuellen Satz verbunden ist.

2. Implementierungsschritte des Prim-Algorithmus

  1. Erstellen Sie einen leeren minimalen Spanning Tree-Satz und eine Prioritätswarteschlange zum Speichern von Kantengewichten und verbundenen Scheitelpunkten.
  2. Wählen Sie zufällig einen Scheitelpunkt als Startscheitelpunkt aus und fügen Sie ihn dem minimalen Spannbaumsatz hinzu.
  3. Fügen Sie die mit dem Startscheitelpunkt verbundene Kante zur Prioritätswarteschlange hinzu.
  4. Wiederholen Sie die folgenden Schritte, bis der minimale Spannbaum alle Eckpunkte enthält:
    a. Entfernen Sie die Kante mit dem kleinsten Gewicht und die verbundenen Eckpunkte aus der Prioritätswarteschlange.
    b. Wenn sich der Scheitelpunkt bereits im minimalen Spannbaumsatz befindet, ignorieren Sie die Kante.
    c. Andernfalls fügen Sie den Scheitelpunkt zum minimalen Spannbaumsatz hinzu und fügen Sie die mit dem Scheitelpunkt verbundenen Kanten zur Prioritätswarteschlange hinzu.
  5. Geben Sie den minimalen Spanning Tree-Satz aus.

3. C++-Codebeispiel
Das Folgende ist ein Codebeispiel mit C++ zur Implementierung des Prim-Algorithmus, der eine Adjazenzmatrix zur Darstellung des Diagramms verwendet:

#include<iostream>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;

const int MAX = 100;
const int INF = 9999;

vector<vector<int>> graph(MAX, vector<int>(MAX, INF));

void prim(int start, int n)
{
    vector<int> key(n, INF);  // 存储每个顶点到最小生成树的最小权重
    vector<bool> visited(n, false);  // 标记顶点是否已经加入最小生成树
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;  // 优先队列,按权重升序排列

    key[start] = 0;  // 起始顶点到自身的权重置为0
    pq.push(make_pair(0, start));

    while (!pq.empty())
    {
        int u = pq.top().second;
        pq.pop();

        visited[u] = true;

        for (int v = 0; v < n; v++)
        {
            if (graph[u][v] != INF && !visited[v] && graph[u][v] < key[v])
            {
                key[v] = graph[u][v];
                pq.push(make_pair(graph[u][v], v));
            }
        }
    }

    // 输出最小生成树的边
    for (int i = 1; i < n; i++)
    {
        cout << "Edge: " << i << " - " << key[i] << endl;
    }
}

int main()
{
    int n, e;
    cout << "Enter the number of vertices: ";
    cin >> n;
    cout << "Enter the number of edges: ";
    cin >> e;

    cout << "Enter the edges and weights: " << endl;
    int u, v, w;
    for (int i = 0; i < e; i++)
    {
        cin >> u >> v >> w;
        graph[u][v] = w;
        graph[v][u] = w;
    }

    int start;
    cout << "Enter the starting vertex: ";
    cin >> start;

    cout << "Minimum Spanning Tree edges: " << endl;
    prim(start, n);

    return 0;
}
Nach dem Login kopieren

Dieser Artikel stellt vor, wie man den Prim-Algorithmus in C++ verwendet. und bietet ein detailliertes Beispiel für einen Absatzcode. Minimale Spannbäume können durch die Verwendung geeigneter Datenstrukturen und Algorithmusimplementierungen effizient berechnet werden. Ich hoffe, dieser Artikel wird Ihnen bei der Verwendung des Prim-Algorithmus zur Lösung des Minimum-Spanning-Tree-Problems hilfreich sein.

Das obige ist der detaillierte Inhalt vonWie man den Algorithmus von Prim in C++ verwendet. 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
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen 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

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

So implementieren Sie einen topologischen Sortieralgorithmus für Graphen mit Java So implementieren Sie einen topologischen Sortieralgorithmus für Graphen mit Java Sep 19, 2023 pm 03:19 PM

So verwenden Sie Java, um einen topologischen Sortieralgorithmus für Graphen zu implementieren. Einführung: Graph ist eine sehr verbreitete Datenstruktur und hat ein breites Anwendungsspektrum im Bereich der Informatik. Der topologische Sortieralgorithmus ist ein klassischer Algorithmus der Graphentheorie, der einen gerichteten azyklischen Graphen (DAG) sortieren kann, um die Abhängigkeiten zwischen Knoten im Graphen zu bestimmen. In diesem Artikel wird anhand spezifischer Java-Codebeispiele erläutert, wie Sie mithilfe der Programmiersprache Java den topologischen Sortieralgorithmus von Diagrammen implementieren. 1. Definieren Sie die Datenstruktur des Diagramms. Bevor wir den topologischen Sortieralgorithmus implementieren, müssen wir ihn zunächst definieren

So richten Sie in PPT zwei Bilder ein, die gleichzeitig animiert werden sollen So richten Sie in PPT zwei Bilder ein, die gleichzeitig animiert werden sollen Mar 26, 2024 pm 08:40 PM

1. Doppelklicken Sie, um das Testdokument zu öffnen. 2. Nachdem Sie auf den Job geklickt haben, um das erste PPT-Dokument zu erstellen, klicken Sie im Menü auf Einfügen – Bild – Aus Datei. 3. Wählen Sie die eingefügte Datei aus und klicken Sie auf Einfügen. 4. Fügen Sie auf die gleiche Weise ein weiteres Bild ein und ziehen Sie die beiden Bilder an die entsprechende Position. 5. Wählen Sie zwei Bilder gleichzeitig aus, klicken Sie mit der rechten Maustaste – Gruppe – Gruppe, sodass die beiden Bilder eins werden. 6. Wählen Sie die zusammengeführte Grafik aus, klicken Sie mit der rechten Maustaste – Animation anpassen. 7. Klicken Sie auf Effekt hinzufügen, wählen Sie einen Effekt aus und klicken Sie auf OK. Wenn Sie sich die PPT ansehen, werden Sie feststellen, dass sich die beiden Bilder zusammen bewegen.

So implementieren Sie den Hamilton-Zyklus-Algorithmus von Graphen mit Java So implementieren Sie den Hamilton-Zyklus-Algorithmus von Graphen mit Java Sep 21, 2023 am 09:03 AM

So verwenden Sie Java, um den Hamilton-Zyklus-Algorithmus für Graphen zu implementieren. Ein Hamilton-Zyklus ist ein Rechenproblem in der Graphentheorie, bei dem es darum geht, einen geschlossenen Pfad zu finden, der alle Eckpunkte in einem bestimmten Graphen enthält. In diesem Artikel stellen wir detailliert vor, wie der Hamilton-Zyklus-Algorithmus mithilfe der Programmiersprache Java implementiert wird, und stellen entsprechende Codebeispiele bereit. Diagrammdarstellung Zunächst müssen wir das Diagramm mithilfe einer geeigneten Datenstruktur darstellen. In Java können wir Diagramme mithilfe von Adjazenzmatrizen oder verknüpften Adjazenzlisten darstellen. Hier entscheiden wir uns für die Verwendung einer Adjazenzmatrix zur Darstellung des Diagramms. Definieren Sie eine Datei namens

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

So implementieren Sie mit Java den stark verbundenen Komponentenalgorithmus von Diagrammen So implementieren Sie mit Java den stark verbundenen Komponentenalgorithmus von Diagrammen Sep 21, 2023 am 11:09 AM

So verwenden Sie Java, um den stark verbundenen Komponentenalgorithmus von Graphen zu implementieren. Einführung: Graph ist eine häufig verwendete Datenstruktur in der Informatik und kann uns bei der Lösung vieler praktischer Probleme helfen. In einem Diagramm bezieht sich eine verbundene Komponente auf eine Reihe von Eckpunkten im Diagramm, die über für beide Seiten erreichbare Pfade verfügen. Eine starke Zusammenhangskomponente bedeutet, dass es einen bidirektionalen Pfad zwischen zwei beliebigen Eckpunkten in einem gerichteten Graphen gibt. In diesem Artikel wird erläutert, wie Sie mithilfe von Java den stark verbundenen Komponentenalgorithmus von Diagrammen implementieren, um den Lesern ein besseres Verständnis der Konnektivität von Diagrammen zu ermöglichen. 1. Diagrammdarstellung In Java können wir Adjazenzmatrix oder Adjazenz verwenden

Eingehende Untersuchung der Anwendungs- und Implementierungsmethoden nichtlinearer Datenstrukturen von Bäumen und Diagrammen in Java Eingehende Untersuchung der Anwendungs- und Implementierungsmethoden nichtlinearer Datenstrukturen von Bäumen und Diagrammen in Java Dec 26, 2023 am 10:22 AM

Bäume und Diagramme in Java verstehen: Anwendungen und Implementierungen nichtlinearer Datenstrukturen erkunden Einführung In der Informatik sind Datenstrukturen die Art und Weise, wie Daten in Computern gespeichert, organisiert und verwaltet werden. Datenstrukturen können in lineare Datenstrukturen und nichtlineare Datenstrukturen unterteilt werden. Bäume und Diagramme sind die beiden am häufigsten verwendeten Arten nichtlinearer Datenstrukturen. Dieser Artikel konzentriert sich auf die Konzepte, Anwendungen und Implementierung von Bäumen und Diagrammen in Java und gibt spezifische Codebeispiele. Das Konzept und die Anwendung von Baum Ein Baum ist ein abstrakter Datentyp, eine Sammlung von Knoten und Kanten. Jeder Knoten des Baums enthält eine Zahl

See all articles