Inhaltsverzeichnis
Anwendungsmethode
Breite-zuerst-Ansatz
Algorithmus
Beispiel
Ausgabe
Fazit
Heim Backend-Entwicklung C++ Bei der Breitensuche werden keine Warteschlangen verwendet

Bei der Breitensuche werden keine Warteschlangen verwendet

Sep 16, 2023 pm 09:57 PM
搜索 Nicht verwendet Breite zuerst

Bei der Breitensuche werden keine Warteschlangen verwendet

Breadth First, Look (BFS) ist eine Graph-Traversal-Berechnung, mit der das Zentrum in der Breitenbewegung in einem Diagramm untersucht wird. Die normale Verwendung von BFS nutzt die Leitungsinformationsstruktur, um eingehende Hubs zu verfolgen. Unabhängig davon ist es denkbar, andere Informationsstrukturen zu nutzen, um BFS durchzuführen, ohne explizite Verbindungen zu verwenden.

Eine alternative Möglichkeit, BFS ohne Kabel zu implementieren, besteht darin, zwei Cluster oder Datensätze zu verwenden: einen für den Hub auf der aktuellen Ebene, der untersucht wird, und einen für den Hub auf der nächsten Ebene, der untersucht werden soll. Die aktuelle Ebenenliste enthält zunächst das Quellzentrum.

Die Berechnung hebt zuerst die aktuelle Levelliste hervor und geht zu jedem Hub. Für jeden durchlaufenen Hub werden die benachbarten Hubs überprüft. Wenn ein benachbarter Hub nicht besucht wird, wird er als besucht markiert und zur Liste der anderen Ebenen hinzugefügt. Das Handle wird fortgesetzt, bis alle Hubs in der aktuellen Ebenenliste passiert wurden.

Sobald die aktuelle Ebenenliste vollständig durchlaufen ist, wird die Berechnung mit einer anderen Ebenenliste fortgesetzt und der Weg zum Hub erneut gehasht und auf die nächste Ebenenliste zugegriffen. Diese Vorbereitung wird fortgesetzt, bis keine nicht besuchten Knoten mehr vorhanden sind.

Anwendungsmethode

Breite-zuerst-Ansatz

Breite-zuerst-Ansatz

Der BFS-Algorithmus startet vom Quell-Hub, untersucht seine Nachbarn und wechselt zuletzt zu einer anderen Ebene von Nachbarn. Nutzen Sie die Linieninformationsstruktur, um den Überblick über die von Ihnen besuchten Hubs zu behalten. In jedem Zyklus besucht die Berechnung einen Hub, markiert ihn als abgeschlossen und stellt nicht besuchte benachbarte Hubs in die Warteschlange. Diese Vorbereitung wird fortgesetzt, bis alle erreichbaren Zentren besucht wurden.

Der Code initialisiert einen Vektor adj, um die Infektionsliste des Diagramms darzustellen. Jede Vektordatei wird mit einem Mittelpunkt verglichen und jeder aufgezeichnete Wert enthält benachbarte Mittelpunkte. Eine BFS-Durchquerung wird von einem BFS-Job durchgeführt, der den Quell-Hub, die Anzahl der Hubs N, den durch den Hub verlaufenden Vektor vis, einen separaten dp und den Vektor v verwendet, der zum Verfolgen der zu besuchenden Hubs verwendet wird. Der bfsTraversal-Job initialisiert den verschwundenen Hub, löscht die Vektoren und ruft dann den BFS-Job auf, um die Traversierung durchzuführen.

Algorithmus

  • Erstellen Sie eine Infektionslistendarstellung des Diagramms.

  • Initialisieren Sie eine Zeile, um den Hub zu speichern, auf den zugegriffen werden soll.

  • Initialisieren Sie den verschwindenden Cluster, um verschwindende Knoten zu verfolgen.

  • Initialisieren Sie den Löschcluster, um vom Quell-Hub gelöschte Inhalte auf jedem Hub zu speichern. Setzen Sie das Trennzeichen des Quell-Hubs auf 0.

  • Stellen Sie den Quell-Hub in die Warteschlange und prüfen Sie, ob darauf zugegriffen wurde.

  • Obwohl die Pipeline nicht gereinigt werden kann, gehen Sie bitte wie folgt vor:

  • Entfernen Sie den Hub an der Spitze der Warteschlange. Gehen Sie für jeden Nachbar-Hub, der aus der Warteschlange entfernt und noch nicht durchlaufen wurde, wie folgt vor: Stellen Sie den Nachbar-Hub in die Warteschlange. Markieren Sie benachbarte Hubs als besucht. Die Löschung des Nachbar-Hubs wurde aktualisiert, um die Löschung des Hubs aus der Warteschlange zu entfernen (ebenfalls 1).

  • Wiederholen Sie Schritt 6, bis die Zeile leer ist.

  • Nachdem die BFS-Durchquerung abgeschlossen ist, enthält ein separater Cluster die Intervalle vom Quellknoten zu allen anderen Zentren im Diagramm.

  • (Optional) Sie können auch den übergeordneten Hub jedes Hubs in einem BFS-Traversal verfolgen, um auf einfachste Weise vom Quell-Hub zu allen anderen Hubs zu gelangen.

Beispiel

#include <iostream>
#include <queue>
#include <unordered_set>
using namespace std;

void bfsTraversal(int adjacencyList[][2], int numVertices, int source) {
   bool visited[numVertices + 1] = {false};
   int distances[numVertices + 1] = {0};

   queue<int> vertices;
   vertices.push(source);
   visited[source] = true;

   while (!vertices.empty()) {
      int node = vertices.front();
      cout << node << ", ";
      vertices.pop();

      for (int i = 0; i < 2; i++) {
         int next = adjacencyList[node][i];
            
         if (!visited[next]) {
            vertices.push(next);
            distances[next] = distances[node] + 1;
            visited[next] = true;
         }
      }
   }
}

int main() {
    int adjacencyList[][2] = {{0, 0}, {1, 2}, {3, 4}, {0, 0}, {0, 0}};
    int numVertices = 4;
    int source = 2;

    bfsTraversal(adjacencyList, numVertices, source);

    return 0;
}
Nach dem Login kopieren

Ausgabe

2,3,4,0
Nach dem Login kopieren

Beispiel

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

void bfsTraversal(vector<vector<int>>& adjacencyList, int N, int source) {
    vector<bool> visited(N + 1, false);
    vector<int> distances(N + 1, 0);
    vector<int> vertices;

    vertices.push_back(source);
    visited[source] = true;

    int curr = 0;
    while (curr < vertices.size()) {
        int node = vertices[curr];
        cout << node << ", ";

        for (int i = 0; i < adjacencyList[node].size(); i++) {
            int next = adjacencyList[node][i];

            if (!visited[next]) {
                vertices.push_back(next);
                distances[next] = distances[node] + 1;
                visited[next] = true;
            }
        }

        curr++;
    }

    cout << "\nDistances from source " << source << ":\n";
    for (int i = 1; i <= N; i++) {
        cout << "Node " << i << ": " << distances[i] << endl;
    }
}

int main() {
    int N = 8;
    vector<vector<int>> adjacencyList(N + 1);
    adjacencyList[0] = {1, 2};
    adjacencyList[1] = {2};
    adjacencyList[2] = {0, 3};
    adjacencyList[3] = {3};
    adjacencyList[4] = {5};
    adjacencyList[5] = {6, 7};
    adjacencyList[6] = {};
    adjacencyList[7] = {};
    adjacencyList[8] = {};

    int source = 5;

    bfsTraversal(adjacencyList, N, source);

    return 0;
}
Nach dem Login kopieren

Ausgabe

5, 6, 7, 
Distances from source 5:
Node 1: 0
Node 2: 0
Node 3: 0
Node 4: 0
Node 5: 0
Node 6: 1
Node 7: 1
Node 8: 0
Nach dem Login kopieren

Fazit

In diesem Artikel werden Berechnungen der Breitensuche (BFS) ohne Verwendung von Zeileninformationsstrukturen erläutert. BFS-Berechnungen werden normalerweise verwendet, um ausgehend von einem bestimmten Quellzentrum Schritt für Schritt durch ein Diagramm zu navigieren. Typischerweise wird eine Route zum Speichern von Hubs verwendet, zu denen man reisen möchte. Unabhängig davon untersucht dieser Artikel einen alternativen Ansatz, der einfache Listen oder Cluster verwendet, um die nächste Ebene von Hubs zu speichern.

Diese selektive Verwendung vervollständigt das umfassende Studium von Diagrammen. In diesem Artikel werden die Schritte der BFS-Berechnung nachgezeichnet, z. B. die Initialisierung von Infektionsdatensätzen, die Verwaltung von Go-to- und Separation-Clustern sowie die Verwendung von Kreisen zur Hervorhebung zentraler Ebenen. Es enthält außerdem C-Code-Anweisungen, die die BFS-Durchquerung veranschaulichen, ohne eine einzige Zeile zu verwenden. Der Code untersucht das Diagramm genau, druckt die BFS-Traversalpermutation und berechnet die Entfernung vom Quell-Hub zu allen anderen Knoten. Insgesamt liefert dieser Artikel eine klare Erklärung und praktikablen Einsatz von BFS-Berechnungen ohne die Verwendung von Linien und demonstriert einen alternativen Ansatz für die Navigation in Diagrammen in einer Breitenorientierung.

Das obige ist der detaillierte Inhalt vonBei der Breitensuche werden keine Warteschlangen 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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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 entfernen Sie Nachrichten und Trendinhalte aus der Windows 11-Suche So entfernen Sie Nachrichten und Trendinhalte aus der Windows 11-Suche Oct 16, 2023 pm 08:13 PM

Wenn Sie in Windows 11 auf das Suchfeld klicken, wird die Suchoberfläche automatisch erweitert. Es zeigt links eine Liste der zuletzt verwendeten Programme und rechts Webinhalte an. Dort zeigt Microsoft Neuigkeiten und Trendinhalte an. Der heutige Check bewirbt Bings neue Bildgenerierungsfunktion DALL-E3, das Angebot „Chat Dragons with Bing“, weitere Informationen zu Drachen, Top-News aus dem Web-Bereich, Spielempfehlungen und den Trending Search-Bereich. Die gesamte Liste der Elemente ist unabhängig von Ihrer Aktivität auf Ihrem Computer. Während einige Benutzer die Möglichkeit, Nachrichten anzuzeigen, zu schätzen wissen, ist all dies anderswo in Hülle und Fülle verfügbar. Andere können es direkt oder indirekt als Verkaufsförderung oder sogar als Werbung einstufen. Microsoft nutzt Schnittstellen, um eigene Inhalte zu bewerben,

So suchen Sie nach Benutzern in Xianyu So suchen Sie nach Benutzern in Xianyu Feb 24, 2024 am 11:25 AM

Wie sucht Xianyu nach Benutzern? In der Software Xianyu können wir die Benutzer, mit denen wir kommunizieren möchten, direkt in der Software finden. Aber ich weiß nicht, wie ich nach Benutzern suchen soll. Sehen Sie es sich nach der Suche einfach unter den Benutzern an. Als nächstes gibt der Herausgeber den Benutzern eine Einführung in die Suche nach Benutzern. Wenn Sie interessiert sind, schauen Sie vorbei! Wie suche ich nach Benutzern in Xianyu? Antwort: Details zu den Benutzern nach der Suche anzeigen: 1. Geben Sie die Software ein und klicken Sie auf das Suchfeld. 2. Geben Sie den Benutzernamen ein und klicken Sie auf Suchen. 3. Wählen Sie dann im Suchfeld [Benutzer] aus, um den entsprechenden Benutzer zu finden.

So verwenden Sie die erweiterte Baidu-Suche So verwenden Sie die erweiterte Baidu-Suche Feb 22, 2024 am 11:09 AM

So verwenden Sie die erweiterte Suche von Baidu: Die Baidu-Suchmaschine ist derzeit eine der am häufigsten verwendeten Suchmaschinen in China. Sie bietet zahlreiche Suchfunktionen, darunter die erweiterte Suche. Die erweiterte Suche kann Benutzern helfen, genauer nach den benötigten Informationen zu suchen und die Sucheffizienz zu verbessern. Wie nutzt man also die erweiterte Baidu-Suche? Der erste Schritt besteht darin, die Startseite der Baidu-Suchmaschine zu öffnen. Zuerst müssen wir die offizielle Website von Baidu öffnen, nämlich www.baidu.com. Dies ist der Eingang zur Baidu-Suche. Klicken Sie im zweiten Schritt auf die Schaltfläche Erweiterte Suche. Auf der rechten Seite des Baidu-Suchfelds befindet sich

Die WPS-Tabelle kann die gesuchten Daten nicht finden. Bitte überprüfen Sie den Speicherort der Suchoption Die WPS-Tabelle kann die gesuchten Daten nicht finden. Bitte überprüfen Sie den Speicherort der Suchoption Mar 19, 2024 pm 10:13 PM

In der von Intelligenz dominierten Ära ist auch Bürosoftware populär geworden, und WPS-Formulare werden aufgrund ihrer Flexibilität von der Mehrheit der Büroangestellten übernommen. Bei der Arbeit müssen wir nicht nur das einfache Erstellen von Formularen und die Texteingabe erlernen, sondern auch mehr operative Fähigkeiten beherrschen, um die Aufgaben in der tatsächlichen Arbeit erledigen zu können. Berichte mit Daten und die Verwendung von Formularen sind bequemer, klarer und genauer. Die Lektion, die wir Ihnen heute bringen, ist: Die WPS-Tabelle kann die von Ihnen gesuchten Daten nicht finden. Warum überprüfen Sie bitte den Speicherort der Suchoption? 1. Wählen Sie zunächst die Excel-Tabelle aus und doppelklicken Sie, um sie zu öffnen. Wählen Sie dann in dieser Schnittstelle alle Zellen aus. 2. Klicken Sie dann in dieser Benutzeroberfläche in der oberen Symbolleiste unter „Datei“ auf die Option „Bearbeiten“. 3. Zweitens klicken Sie in dieser Benutzeroberfläche auf „

Wie durchsuche ich ein Verzeichnis mit einer bestimmten Dateierweiterung in Java? Wie durchsuche ich ein Verzeichnis mit einer bestimmten Dateierweiterung in Java? Aug 31, 2023 am 08:13 AM

Das folgende Beispiel druckt Dateien in einem Verzeichnis basierend auf ihrer Erweiterung – Beispiel importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.stream. Stream; publicclassDemo{ publicstaticvoidmain(String[]args)throwsIOException{&nbsp

So suchen Sie auf Mobilgeräten nach Geschäften Taobao So suchen Sie nach Geschäftsnamen So suchen Sie auf Mobilgeräten nach Geschäften Taobao So suchen Sie nach Geschäftsnamen Mar 13, 2024 am 11:00 AM

Die mobile Taobao-App-Software bietet viele gute Produkte, die Sie jederzeit und überall kaufen können. Der Preis für jedes Produkt ist völlig klar, sodass Sie bequemer einkaufen können. Sie können nach Belieben suchen und einkaufen. Fügen Sie Ihre persönliche Lieferadresse und Kontaktnummer hinzu, um die Kontaktaufnahme mit Ihnen zu erleichtern und die neuesten Logistiktrends in Echtzeit zu überprüfen Benutzer verwenden es zum ersten Mal. Wenn Sie nicht wissen, wie man nach Produkten sucht, müssen Sie natürlich nur Schlüsselwörter in die Suchleiste eingeben, um alle Produktergebnisse zu finden Der Herausgeber stellt mobilen Taobao-Benutzern detaillierte Online-Methoden für die Suche nach Geschäftsnamen zur Verfügung. 1. Öffnen Sie zunächst die Taobao-App auf Ihrem Mobiltelefon.

Wie verwende ich PHP-Funktionen zum Suchen und Filtern von Daten? Wie verwende ich PHP-Funktionen zum Suchen und Filtern von Daten? Jul 24, 2023 am 08:01 AM

Wie verwende ich PHP-Funktionen zum Suchen und Filtern von Daten? Bei der Entwicklung mit PHP ist es häufig erforderlich, Daten zu suchen und zu filtern. PHP bietet eine Fülle von Funktionen und Methoden, die uns bei der Durchführung dieser Vorgänge unterstützen. In diesem Artikel werden einige häufig verwendete PHP-Funktionen und -Techniken vorgestellt, die Ihnen beim effizienten Suchen und Filtern von Daten helfen. String-Suche Häufig verwendete String-Suchfunktionen in PHP sind strpos() und strstr(). strpos() wird verwendet, um die Position eines bestimmten Teilstrings in einem String zu finden. Wenn er existiert, wird er zurückgegeben

So verwenden Sie den Hash-Suchalgorithmus in C++ So verwenden Sie den Hash-Suchalgorithmus in C++ Sep 19, 2023 pm 02:49 PM

Verwendung des Hash-Suchalgorithmus in C++ Der Hash-Suchalgorithmus ist eine effiziente Such- und Speichertechnologie. Er wandelt Schlüsselwörter über eine Hash-Funktion in einen Index fester Länge um und verwendet diesen Index dann in der Datenstruktursuche. In C++ können wir Hash-Suchalgorithmen implementieren, indem wir Hash-Container und Hash-Funktionen aus der Standardbibliothek verwenden. In diesem Artikel wird die Verwendung des Hash-Suchalgorithmus in C++ vorgestellt und spezifische Codebeispiele bereitgestellt. Einführung in Header-Dateien und Namespaces Zunächst vor der Verwendung des Hash-Suchalgorithmus in C++

See all articles