Algorithme de recherche en largeur d'abord (BFS) avec EXEMPLE

โšก Rรฉsumรฉ intelligent

La recherche en largeur (BFS) est un algorithme qui parcourt un graphe niveau par niveau, en visitant tous les voisins d'un nล“ud avant de descendre plus profondรฉment. Il utilise une file FIFO et trouve le chemin le plus court dans les graphes non pondรฉrรฉs sans boucle infinie.

  • (I.e. Niveau-Ordre : Le parcours en largeur (BFS) visite chaque nล“ud ร  la profondeur actuelle avant de passer au niveau suivant.
  • (I.e. Systรจme de file d'attente : Une file d'attente FIFO conserve les nล“uds visitรฉs afin que les voisins soient traitรฉs dans l'ordre.
  • (I.e. Chemin le plus court : Dans les graphes non pondรฉrรฉs, BFS trouve le chemin le plus court en un minimum d'itรฉrations.
  • โœ… Pas de boucles : Le marquage des nล“uds visitรฉs empรชche le parcours en largeur (BFS) de se bloquer dans une boucle infinie.
  • ๐ŸŒ Applications : BFS alimente les robots d'exploration Web, les rรฉseaux P2P, la navigation et la diffusion rรฉseau.

Algorithme de recherche en largeur (BFS) avec exemple

Qu'est-ce que l'algorithme BFS (recherche en largeur d'abord) ?

La recherche en largeur (BFS) est un algorithme utilisรฉ pour explorer des donnรฉes graphiques, parcourir un arbre ou explorer des structures. BFS signifie ยซ recherche en largeur ยป.

L'algorithme visite et marque efficacement tous les nล“uds clรฉs d'un graphique de maniรจre prรฉcise dans le sens de l'รฉtendue. Cet algorithme sรฉlectionne un seul nล“ud (point initial ou source) dans un graphe puis visite tous les nล“uds adjacents au nล“ud sรฉlectionnรฉ. N'oubliez pas que BFS accรจde ร  ces nล“uds un par un.

Une fois que l'algorithme visite et marque le nล“ud de dรฉpart, il se dรฉplace vers les nล“uds non visitรฉs les plus proches et les analyse. Une fois visitรฉs, tous les nล“uds sont marquรฉs. Ces itรฉrations se poursuivent jusqu'ร  ce que tous les nล“uds du graphe aient รฉtรฉ visitรฉs et marquรฉs avec succรจs.

Qu'est-ce que les parcours graphiques ?

Un parcours de graphique est une mรฉthodologie couramment utilisรฉe pour localiser la position du sommet dans le graphique. Il s'agit d'un algorithme de recherche avancรฉ qui peut analyser le graphique avec rapiditรฉ et prรฉcision tout en marquant la sรฉquence des sommets visitรฉs. Ce processus permet de visiter rapidement chaque nล“ud d'un graphique sans รชtre enfermรฉ dans une boucle infinie.

L'architecture de l'algorithme BFS

Archiconfiguration de l'algorithme BFS

  1. Dans les diffรฉrents niveaux de donnรฉes, vous pouvez dรฉsigner n'importe quel nล“ud comme nล“ud de dรฉpart ou nล“ud initial pour commencer le parcours. L'algorithme de parcours en largeur (BFS) visitera ce nล“ud, le marquera comme visitรฉ et l'ajoutera ร  la file d'attente.
  2. Le parcours en largeur (BFS) va maintenant visiter les nล“uds les plus proches et non visitรฉs, puis les marquer. Ces valeurs sont รฉgalement ajoutรฉes ร  la file d'attente. La file d'attente fonctionne selon le principe suivant : Modรจle FIFO.
  3. De la mรชme maniรจre, les nล“uds les plus proches et non visitรฉs restants sur le graphe sont analysรฉs, marquรฉs et ajoutรฉs ร  la file d'attente. Ces รฉlรฉments sont retirรฉs de la file d'attente au fur et ร  mesure de leur rรฉception et affichรฉs comme rรฉsultat.

Pourquoi avons-nous besoin de lโ€™algorithme BFS ?

Il existe de nombreuses raisons d'utiliser l'algorithme BFS pour la recherche dans vos donnรฉes. Voici quelques-uns des aspects les plus importants qui font de cet algorithme le choix idรฉal :

  • BFS est utile pour analyser les nล“uds dโ€™un graphique et construire le chemin le plus court pour les parcourir.
  • BFS peut parcourir un graphique en le plus petit nombre d'itรฉrations.
  • L'architecture de l'algorithme BFS est simple et robuste.
  • Le rรฉsultat de lโ€™algorithme BFS prรฉsente un haut niveau de prรฉcision par rapport ร  dโ€™autres algorithmes.
  • Les itรฉrations BFS sont transparentes et il n'y a aucune possibilitรฉ que cet algorithme se retrouve pris dans un problรจme de boucle infinie.

Comment fonctionne lโ€™algorithme BFS ?

Le parcours graphique nรฉcessite que l'algorithme visite, vรฉrifie et/ou mette ร  jour chaque nล“ud non visitรฉ dans une structure arborescente. Les parcours de graphique sont classรฉs selon l'ordre dans lequel ils visitent les nล“uds du graphique.

L'algorithme BFS dรฉmarre l'opรฉration ร  partir du premier nล“ud ou nล“ud de dรฉpart d'un graphique et le parcourt minutieusement. Une fois qu'il traverse avec succรจs le nล“ud initial, le prochain sommet non parcouru du graphique est visitรฉ et marquรฉ.

On peut donc affirmer que tous les nล“uds adjacents au sommet courant sont visitรฉs et parcourus lors de la premiรจre itรฉration. Un systรจme de file d'attente simple est utilisรฉ pour implรฉmenter l'algorithme de parcours en largeur (BFS), et il comprend les รฉtapes suivantes :

ร‰tape 1)

Fonctionnement de l'algorithme BFS

Chaque sommet ou nล“ud du graphique est connu. Par exemple, vous pouvez marquer le nล“ud comme V.

ร‰tape 2)

Fonctionnement de l'algorithme BFS

Si le sommet V n'est pas accรฉdรฉ, ajoutez-le ร  la file d'attente BFS.

ร‰tape 3)

Fonctionnement de l'algorithme BFS

Lancez la recherche BFS et, une fois terminรฉe, marquez le sommet V comme visitรฉ.

ร‰tape 4)

Fonctionnement de l'algorithme BFS

La file d'attente BFS n'est toujours pas vide, supprimez donc le sommet V du graphe de la file d'attente.

ร‰tape 5)

Fonctionnement de l'algorithme BFS

Rรฉcupรฉrez tous les sommets restants du graphe qui sont adjacents au sommet V.

ร‰tape 6)

Fonctionnement de l'algorithme BFS

Pour chaque sommet adjacent, disons V1, s'il n'a pas encore รฉtรฉ visitรฉ, ajoutez V1 ร  la file d'attente BFS.

ร‰tape 7)

Fonctionnement de l'algorithme BFS

BFS visitera V1, le marquera comme visitรฉ et le supprimera de la file d'attente.

Exemple d'algorithme BFS

ร‰tape 1)

Exemple d'algorithme BFS

Vous avez un graphique de sept nombres allant de 0 ร  6.

ร‰tape 2)

Exemple d'algorithme BFS

0 ou zรฉro a รฉtรฉ marquรฉ comme nล“ud racine.

ร‰tape 3)

Exemple d'algorithme BFS

0 est visitรฉ, marquรฉ et insรฉrรฉ dans la structure de donnรฉes de la file d'attente.

ร‰tape 4)

Exemple d'algorithme BFS

Les nล“uds adjacents ร  0 restants et non visitรฉs sont visitรฉs, marquรฉs et insรฉrรฉs dans la file d'attente.

ร‰tape 5)

Exemple d'algorithme BFS

Les itรฉrations de parcours sont rรฉpรฉtรฉes jusqu'ร  ce que tous les nล“uds soient visitรฉs.

Rรจgles de l'algorithme BFS

Voici les rรจgles importantes pour l'utilisation de l'algorithme BFS :

  • Une file d'attente (FIFO โ€“ Premier entrรฉ, premier sorti) Structure de donnรฉes est utilisรฉ par BFS.
  • Vous dรฉsignez n'importe quel nล“ud du graphe comme racine et vous commencez ร  parcourir les donnรฉes ร  partir de ce nล“ud.
  • Le parcours en largeur (BFS) parcourt tous les nล“uds du graphe et omet les รฉlรฉments manquants.ping les une fois terminรฉs.
  • BFS visite un nล“ud adjacent non visitรฉ, le marque comme terminรฉ et l'insรจre dans une file d'attente.
  • Elle supprime le sommet prรฉcรฉdent de la file d'attente si aucun sommet adjacent n'est trouvรฉ.
  • L'algorithme BFS itรจre jusqu'ร  ce que tous les sommets du graphe soient parcourus avec succรจs et marquรฉs comme terminรฉs.
  • Il n'y a aucune boucle provoquรฉe par BFS lors du parcours des donnรฉes depuis n'importe quel nล“ud.

Applications de l'algorithme BFS

Jetons un coup d'ล“il ร  certaines des applications rรฉelles dans lesquelles la mise en ล“uvre d'un algorithme BFS peut รชtre trรจs efficace.

  • Graphiques non pondรฉrรฉs : L'algorithme BFS peut facilement crรฉer le chemin le plus court et un arbre couvrant minimal pour visiter tous les sommets du graphe dans les plus brefs dรฉlais et avec une grande prรฉcision.
  • Rรฉseaux P2P : L'algorithme BFS peut รชtre utilisรฉ pour localiser tous les nล“uds les plus proches ou voisins dans un rรฉseau pair ร  pair. Cela permet de trouver les donnรฉes recherchรฉes plus rapidement.
  • Robots d'exploration Web : Les moteurs de recherche ou les robots d'exploration Web peuvent facilement crรฉer plusieurs niveaux d'index en utilisant BFS. L'implรฉmentation de BFS commence ร  partir de la source, qui est la page Web, puis visite tous les liens de cette source.
  • Systรจmes de navigation : BFS peut aider ร  trouver tous les emplacements voisins ร  partir de lโ€™emplacement principal ou source.
  • Diffusion en rรฉseau : Un paquet diffusรฉ est guidรฉ par l'algorithme BFS pour trouver et atteindre tous les nล“uds pour lesquels il possรจde l'adresse.

FAQ

En intelligence artificielle, l'algorithme BFS explore les รฉtats de jeu, les configurations de puzzles et les cartes pour trouver la solution la plus courte lorsque chaque dรฉplacement a le mรชme coรปt. Il garantit le nombre minimal d'รฉtapes, mais peut consommer beaucoup de mรฉmoire sur les grands graphes.

Oui. Les assistants IA peuvent รฉcrire des programmes en parcours en largeur (BFS). Python, Java, C++ On utilise une file d'attente et un ensemble visitรฉ ร  partir d'une description simple. Il est conseillรฉ de tester cette mรฉthode sur des graphes d'exemple, car les cas particuliers, comme les nล“uds dรฉconnectรฉs, sont faciles ร  manquer.

Le parcours en largeur (BFS) explore un graphe niveau par niveau ร  l'aide d'une file d'attente et trouve le chemin le plus court dans les graphes non pondรฉrรฉs. Le parcours en profondeur (DFS) explore chaque branche aussi profondรฉment que possible ร  l'aide d'une pile ou de la rรฉcursivitรฉ avant de revenir en arriรจre.tracRoi.

L'algorithme BFS s'exรฉcute en temps O(V + E), oรน V est le nombre de sommets et E le nombre d'arรชtes, car chaque sommet et chaque arรชte est examinรฉ une seule fois. Sa complexitรฉ spatiale est O(V) pour la file d'attente et l'ensemble visitรฉ.

Rรฉsumez cet article avec :