La recherche en largeur n'utilise pas de files d'attente
Breadth First, Look (BFS) est un calcul de traversée de graphique utilisé pour étudier le centre en mouvement en largeur dans un graphique. L'utilisation normale de BFS utilise la structure d'informations de ligne pour suivre les hubs entrants. Quoi qu’il en soit, il est concevable d’exploiter d’autres structures d’informations pour effectuer des BFS sans utiliser de câbles explicites.
Une autre façon d'implémenter BFS sans câbles consiste à utiliser deux clusters ou enregistrements : un pour le hub du niveau actuel étudié et un pour le hub du niveau suivant à étudier. Initialement, la liste de niveaux actuelle contient le centre source.
Le calcul met d'abord en évidence la liste de niveaux actuelle et va à chaque hub. Pour chaque hub traversé, ses hubs adjacents sont inspectés. Si un hub adjacent n'est pas visité, il est marqué comme visité et ajouté à la liste des autres niveaux. Le handle continuera jusqu'à ce que tous les hubs de la liste de niveaux actuelle aient été transmis.
Une fois la liste de niveaux actuelle entièrement parcourue, le calcul continue vers une autre liste de niveaux et hache à nouveau le chemin vers le hub et accède à la liste de niveaux suivante. Cette préparation se poursuit jusqu'à ce qu'il n'y ait plus de nœuds non visités.
Méthode à utiliser
Approche axée sur la largeur d'abord
Approche axée sur la largeur d'abord
L'algorithme BFS part du hub source, étudie ses voisins et est plus récemment passé à un autre niveau de voisins. Utilisez la structure d’informations de ligne pour suivre les hubs que vous visitez. À chaque cycle, le calcul visite un hub, le marque comme terminé et met en file d'attente les hubs adjacents non visités. Cette préparation se poursuivra jusqu'à ce que tous les centres accessibles aient été visités.
Le code initialise un vecteur adj pour représenter la liste infectieuse du graphique. Chaque fichier de vecteurs est comparé à un centre et chaque valeur enregistrée contient des centres adjacents. Un parcours BFS est effectué par une tâche BFS, qui prend le hub source, le nombre de hubs N, le vecteur vis passant par le hub, un dp séparé et le vecteur v utilisé pour garder une trace des hubs à visiter. Le travail bfsTraversal initialise le hub disparu et supprime les vecteurs, puis appelle le travail BFS pour effectuer le parcours.
Algorithme
Créez une représentation de liste d'infections du graphique.
Initialisez une ligne pour stocker le hub auquel accéder.
Initialisez le cluster en voie de disparition pour suivre les nœuds qui disparaissent.
Initialisez le cluster de suppression pour stocker le contenu supprimé du hub source sur chaque hub. Définissez le délimiteur du hub source sur 0.
Mettez le hub source en file d'attente et vérifiez s'il a été consulté.
Bien que le pipeline ne puisse pas être purifié, veuillez procéder comme suit :
Supprimez le hub en tête de file d'attente. Pour chaque hub voisin qui a été retiré de la file d'attente et non encore traversé, procédez comme suit : Mettez le hub voisin en file d'attente. Marquez les hubs adjacents comme visités. Suppression du hub voisin mis à jour pour supprimer la suppression du hub de la file d'attente (également 1).
Répétez l'étape 6 jusqu'à ce que la ligne soit vide.
Une fois le parcours BFS terminé, un cluster distinct contiendra les intervalles allant du nœud source à tous les autres centres du graphique.
(Facultatif) Vous pouvez également suivre le hub parent de chaque hub dans une traversée BFS pour passer du hub source à tous les autres hubs de la manière la plus simple.
Exemple
#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; }
Sortie
2,3,4,0
Exemple
#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; }
Sortie
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
Conclusion
Cet article explique les calculs de recherche en largeur d'abord (BFS) sans utiliser de structures d'informations sur les lignes. Les calculs BFS sont généralement utilisés pour parcourir un graphique étape par étape à partir d'un centre source donné. En règle générale, un itinéraire est utilisé pour stocker les hubs vers lesquels voyager. Quoi qu’il en soit, cet article examine une approche alternative qui utilise des listes ou des clusters de base pour stocker le niveau suivant de hubs.
Cette utilisation sélective complète l'étude en profondeur des graphiques. Cet article retrace les étapes du calcul BFS, telles que l'initialisation des enregistrements infectieux, la gestion des clusters de référence et de séparation et l'utilisation de cercles pour mettre l'accent sur les niveaux centraux. Il fournit également des instructions en code C illustrant le parcours BFS sans utiliser une seule ligne. Le code étudie avec précision le graphique, imprime la permutation de traversée BFS et calcule la distance entre le hub source et tous les autres nœuds. Dans l'ensemble, cet article fournit une explication claire et une utilisation réalisable des calculs BFS sans utiliser de lignes, démontrant une approche alternative pour naviguer dans les graphiques en largeur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Lorsque vous cliquez sur le champ de recherche dans Windows 11, l'interface de recherche se développe automatiquement. Il affiche une liste des programmes récents à gauche et du contenu Web à droite. Microsoft y affiche des actualités et du contenu tendance. Le chèque d'aujourd'hui fait la promotion de la nouvelle fonctionnalité de génération d'images DALL-E3 de Bing, de l'offre « Chat Dragons with Bing », de plus d'informations sur les dragons, des principales actualités de la section Web, des recommandations de jeux et de la section Recherche de tendances. La liste complète des éléments est indépendante de votre activité sur votre ordinateur. Bien que certains utilisateurs puissent apprécier la possibilité de consulter les actualités, tout cela est abondamment disponible ailleurs. D'autres peuvent directement ou indirectement le classer comme promotion ou même publicité. Microsoft utilise des interfaces pour promouvoir son propre contenu,

Comment Xianyu recherche-t-il des utilisateurs ? Dans le logiciel Xianyu, nous pouvons trouver directement les utilisateurs avec lesquels nous souhaitons communiquer dans le logiciel. Mais je ne sais pas comment rechercher des utilisateurs. Visualisez-le simplement parmi les utilisateurs après la recherche. Vient ensuite l'introduction que l'éditeur propose aux utilisateurs sur la façon de rechercher des utilisateurs. Si vous êtes intéressé, venez jeter un œil ! Comment rechercher des utilisateurs dans Xianyu ? Réponse : Afficher les détails parmi les utilisateurs recherchés Introduction : 1. Entrez le logiciel et cliquez sur la zone de recherche. 2. Entrez le nom d'utilisateur et cliquez sur Rechercher. 3. Sélectionnez ensuite [Utilisateur] sous la zone de recherche pour trouver l'utilisateur correspondant.

Comment utiliser la recherche avancée Baidu Le moteur de recherche Baidu est actuellement l'un des moteurs de recherche les plus utilisés en Chine. Il offre une multitude de fonctions de recherche, dont la recherche avancée. La recherche avancée peut aider les utilisateurs à rechercher les informations dont ils ont besoin avec plus de précision et à améliorer l'efficacité de la recherche. Alors, comment utiliser la recherche avancée Baidu ? La première étape consiste à ouvrir la page d’accueil du moteur de recherche Baidu. Tout d’abord, nous devons ouvrir le site officiel de Baidu, qui est www.baidu.com. C'est l'entrée de la recherche Baidu. Dans la deuxième étape, cliquez sur le bouton Recherche avancée. Sur le côté droit du champ de recherche Baidu, il y a

À l'ère dominée par l'intelligence, les logiciels de bureautique sont également devenus populaires et les formulaires Wps sont adoptés par la majorité des employés de bureau en raison de leur flexibilité. Au travail, nous devons non seulement apprendre à créer des formulaires simples et à saisir du texte, mais également à maîtriser des compétences plus opérationnelles afin d'accomplir les tâches du travail réel. Les rapports contenant des données et l'utilisation de formulaires sont plus pratiques, clairs et précis. La leçon que nous vous apportons aujourd'hui est la suivante : la table WPS ne trouve pas les données que vous recherchez. Pourquoi veuillez vérifier l'emplacement de l'option de recherche ? 1. Sélectionnez d'abord le tableau Excel et double-cliquez pour l'ouvrir. Ensuite dans cette interface, sélectionnez toutes les cellules. 2. Ensuite, dans cette interface, cliquez sur l'option « Modifier » dans « Fichier » dans la barre d'outils supérieure. 3. Deuxièmement, dans cette interface, cliquez sur «

L'exemple suivant imprime les fichiers dans un répertoire en fonction de leur extension - Exemple importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.stream. Stream ; publicclassDemo{ publicstaticvoidmain(String[]args)throwsIOException{ 

Le logiciel de l'application mobile Taobao propose de nombreux bons produits. Vous pouvez les acheter à tout moment et n'importe où, et tout est authentique. Il n'y a aucune opération compliquée, ce qui vous permet de faire des achats plus pratiques. Vous pouvez rechercher et acheter librement à votre guise. Les sections de produits des différentes catégories sont toutes ouvertes. Ajoutez votre adresse de livraison personnelle et votre numéro de contact pour permettre à l'entreprise de messagerie de vous contacter, et vérifiez les dernières tendances logistiques en temps réel. les utilisateurs l'utilisent pour la première fois. Si vous ne savez pas comment rechercher des produits, il vous suffit bien sûr de saisir des mots-clés dans la barre de recherche pour trouver tous les résultats des produits. Vous ne pouvez pas arrêter d'acheter librement. L'éditeur fournira des méthodes en ligne détaillées permettant aux utilisateurs mobiles de Taobao de rechercher des noms de magasins. 1. Ouvrez d'abord l'application Taobao sur votre téléphone mobile,

Comment utiliser les fonctions PHP pour rechercher et filtrer des données ? Dans le processus de développement avec PHP, il est souvent nécessaire de rechercher et de filtrer les données. PHP fournit une multitude de fonctions et de méthodes pour nous aider à réaliser ces opérations. Cet article présentera certaines fonctions et techniques PHP couramment utilisées pour vous aider à rechercher et filtrer efficacement les données. Recherche de chaîne Les fonctions de recherche de chaîne couramment utilisées en PHP sont strpos() et strstr(). strpos() est utilisé pour trouver la position d'une certaine sous-chaîne dans une chaîne. Si elle existe, elle renvoie.

Comment utiliser l'algorithme de recherche de hachage en C++ L'algorithme de recherche de hachage est une technologie de recherche et de stockage efficace. Il convertit les mots-clés en un index de longueur fixe via une fonction de hachage, puis utilise cet index dans la structure de données Search. En C++, nous pouvons implémenter des algorithmes de recherche de hachage en utilisant des conteneurs de hachage et des fonctions de hachage de la bibliothèque standard. Cet article explique comment utiliser l'algorithme de recherche de hachage en C++ et fournit des exemples de code spécifiques. Présentation des fichiers d'en-tête et des espaces de noms Tout d'abord, avant d'utiliser l'algorithme de recherche de hachage en C++
