Algorithme de recherche en largeur d'abord : aperçu, importance et applications

Publié: 2020-12-23

Les graphiques sont tout autour de nous. Un graphe peut être considéré comme un réseau interconnecté de nœuds et d'arêtes. Vos amis sur Facebook, vos connexions sur LinkedIn ou vos abonnés Twitter/Instagram constituent votre graphe social. De même, si vous souhaitez vous rendre d'un point A à un point B, vous pouvez le faire via plusieurs itinéraires, visualisables sur Google Maps.

L'ensemble de ces multiples options d'itinéraire d'un point A à un point B constitue également un graphe. Les graphes font partie des structures de données les plus courantes que nous rencontrons dans le monde universitaire et dans le monde réel, car ils sont si omniprésents. Et l'une des opérations les plus fréquentes pouvant être effectuées sur un graphe est le parcours de graphe.

Qu'est-ce que le parcours de graphe ?

Graph Traversal est une méthode permettant de visiter chaque nœud d'un graphe exactement une fois avec rapidité et précision. Il s'agit d'un algorithme de recherche graphique avancé qui vous permet d'imprimer la séquence des nœuds visités sans vous faire prendre dans une boucle infinie. Il existe de nombreux algorithmes de parcours de graphes tels que Depth-First Search , Breadth-First Search , Djikstra's Algorithm , A-Star Algorithm , etc.

Cet article va plonger profondément dans l' algorithme Breadth First Search ou BFS.

Structure du graphique

Avant de jeter un coup d'œil détaillé sous le capot de BFS, familiarisons-nous avec certaines terminologies graphiques à l'aide du graphique ci-dessus :

Nœud racine – Le nœud où vous démarrez le processus de traversée. Pour simplifier, nous pouvons considérer A comme le nœud racine.

Niveaux – Un niveau est une collection de tous les nœuds qui sont équidistants du nœud racine. Donc, si nous considérons que le nœud A est au niveau 0, les nœuds B et C sont au niveau 1, tandis que les nœuds D, E et F sont au niveau 2. Une heuristique simple pour déterminer le numéro de niveau d'un nœud consiste à compter le nombre d'arêtes entre ledit nœud et le nœud racine. Notez que cela ne fonctionne que si vous définissez le nœud racine comme étant au niveau 0.

Nœud parent - Le nœud parent d'un nœud est celui qui se trouve un niveau au-dessus de lui et qui lui est adjacent. Il peut être considéré comme le nœud d'où provient ledit nœud. A est le nœud parent de B et C.

Nœuds enfants / enfants - Nœuds qui bifurquent et sont adjacents à un nœud parent. B et C sont des nœuds enfants de A

Lire : Top 10 des techniques de visualisation de données

Qu'est-ce que la recherche en largeur d'abord ?

BFS est un algorithme de parcours de graphe pour explorer efficacement un arbre ou un graphe. L'algorithme commence par un nœud initial (nœud racine), puis explore tous les nœuds adjacents, en largeur d'abord, par opposition à la profondeur d'abord, qui descend d'une branche particulière jusqu'à tous les nœuds de cette branche. sont visités. En termes simples, il parcourt le graphe par niveau, ne descendant pas d'un niveau tant que tous les nœuds de ce niveau ne sont pas visités et marqués.

Il fonctionne selon le principe du premier entré, premier sorti (FIFO) et est mis en œuvre à l'aide d'une structure de données de file d'attente. Une fois qu'un nœud est visité, il est inséré dans une file d'attente. Ensuite, il est enregistré et tous ses nœuds enfants sont insérés dans la file d'attente. Ce processus se poursuit jusqu'à ce que tous les nœuds du graphique soient visités et enregistrés.

Examinons les opérations de file d'attente détaillées pour l'algorithme BFS pour le graphique ci-dessus :

() - désigne la file d'attente

[] - indique la sortie imprimée

  1. Insérer A dans la file d'attente (a)
  2. Imprimer A, insérer B et C dans la file d'attente (cb)[a]
  3. Imprimer B, insérer ses nœuds enfants D et E dans la file d'attente (edc)[ba]
  4. Imprimer C, insérer son nœud enfant F dans la file d'attente (fed)[cba]
  5. Imprimer D, insérez son nœud enfant dans la file d'attente. Il n'y en a pas. (fe)[dcba]
  6. Imprimer E, dont le nœud enfant F a déjà été inséré dans la file d'attente. (f)[edcba]
  7. Imprimer F. [fedcba]

Ce qui rend l'algorithme BFS important

Il existe une myriade de raisons de déployer BFS comme méthode de recherche rapide dans de vastes ensembles de données. Certaines des principales caractéristiques qui en font le choix préféré des développeurs et des ingénieurs de données sont :

  • BFS peut explorer efficacement tous les nœuds du graphique et trouver le chemin le plus court possible pour tous les explorer.
  • Le nombre d'itérations nécessaires pour parcourir l'ensemble du graphe est inférieur à celui des autres algorithmes de recherche.
  • Puisqu'il est implémenté à l'aide d'une file d'attente, son architecture est robuste, fiable et élégante.
  • Comparé à d'autres algorithmes, la sortie de BFS est exacte et sans erreur.
  • Les itérations BFS se déroulent sans problème, sans courir le risque d'être pris dans une boucle infinie.

Checkout : Projets de visualisation de données que vous pouvez répliquer

Applications de l'algorithme BFS

En raison de sa simplicité et de sa facilité de configuration, l'algorithme BFS a été largement utilisé dans diverses situations clés du monde réel. Examinons quelques applications importantes :

Moteurs de recherche Crawlers Essayez d'imaginer un monde sans Google ni Bing. Vous ne pouvez pas. Les moteurs de recherche sont les piliers d'Internet. Et l'algorithme BFS est l'épine dorsale des moteurs de recherche. C'est le principal algorithme utilisé pour indexer les pages Web. L'algorithme commence son parcours à partir de la page source (nœud racine), puis suit tous les liens de cette page source de manière étendue. Chaque page Web peut être considérée comme un nœud indépendant dans le graphique.

Traversées de graphes non pondérés - BFS peut identifier le chemin le plus court et l'arbre couvrant minimum dans un graphe non pondéré. Trouver l'itinéraire le plus court consiste simplement à trouver un chemin avec le moins d'arêtes, pour lequel BFS est parfaitement adapté. Il peut faire le travail en visitant le moins de nœuds.

Navigation GPS - BFS exploite les systèmes GPS pour faire apparaître tous les emplacements voisins possibles à partir de votre point de départ, vous aidant à naviguer du point A au point B de manière transparente.

Diffusion - Le réseau de diffusion utilise des paquets comme unités pour transporter des signaux et des données. L'algorithme BFS oriente ces paquets pour qu'ils se dirigent vers tous les nœuds du réseau qu'ils sont censés atteindre.

Réseaux P2P - Les torrents ou autres réseaux de partage de fichiers reposent sur la communication P2P. BFS fonctionne très bien pour trouver les nœuds les plus proches afin que le transfert de données puisse se faire plus rapidement.

A lire également : Avantages de la visualisation des données

Conclusion

Ergo, l' algorithme Breadth First Search est l'un des algorithmes les plus importants de l'Internet moderne. Espérons que ce blog servira de point de départ pratique dans vos explorations d'algorithmes de recherche.

Nous vous recommandons de choisir le diplôme PG en science des données proposé par l'IIIT Bangalore hébergé sur upGrad car ici, vous pouvez obtenir vos questions 1-1 avec les instructeurs du cours. Il ne se concentre pas uniquement sur l'apprentissage théorique, mais accorde de l'importance aux connaissances pratiques, qui sont essentielles pour préparer les apprenants à faire face à des projets du monde réel et vous fournir le premier certificat indien NASSCOM, qui vous aide à obtenir des emplois bien rémunérés en science des données.

Quels sont les inconvénients de l'utilisation de l'algorithme de recherche en largeur ?

BFS a l'inconvénient d'être une recherche "aveugle", ce qui signifie que lorsque l'espace de recherche est grand, les performances de recherche seront inférieures aux autres recherches heuristiques. Pour que le premier algorithme de recherche binaire fonctionne correctement, tous les sommets associés doivent être enregistrés en mémoire, ce qui signifie qu'il utilise plus de mémoire. Un autre inconvénient est qu'il a des chemins étendus, même si tous les chemins vers une cible ont presque la même profondeur de recherche.

En quoi l'algorithme BFS est-il différent de l'algorithme DFS ?

BFS utilise beaucoup de mémoire, en particulier lorsque le facteur de ramification de l'arbre est élevé. DFS, d'autre part, peut prendre beaucoup de temps pour visiter des nœuds supplémentaires à proximité si la profondeur de l'arbre est grande, mais sa complexité spatiale est moindre. BFS fonctionne bien lorsqu'il s'agit de trouver des sommets proches de la source spécifiée. Lorsqu'il existe des solutions qui ne sont pas disponibles à partir de la source, l'utilisation de DFS est préférable. Le retour en arrière est essentiel dans DFS, contrairement à BFS. BFS traverse en fonction du niveau de l'arbre, tandis que DFS traverse en fonction de la profondeur de l'arbre.

Comment fonctionne l'algorithme A-Star ?

L'algorithme A-Star est une méthode de recherche de chemin qui trouve le chemin le plus court entre les états de début et de fin. Il est utilisé à diverses fins, y compris les cartes, où il aide à trouver la distance la plus courte entre une source (état initial) et une destination (état final) (état final). Comme la méthode Dijkstra, l'algorithme de recherche A-Star crée l'arbre de chemin le moins cher du nœud de départ au nœud de destination.