[!NOTE] Algoritmo de busca em largura
O algoritmo de busca em largura, ou busca em largura, é um método para explorar um grafo visitando todos os seus vértices e arestas de forma sistemática.
O algoritmo começa em um vértice raiz arbitrário e visita todos os vértices que estão a uma distância de 1 da raiz, depois todos aqueles que estão a uma distância de 2, e assim por diante, até que todos os vértices alcançáveis tenham sido visitados. O algoritmo usa uma fila para armazenar os vértices que ainda precisam ser visitados e marca cada vértice com um número de ordem quando é descoberto. O algoritmo termina quando a fila está vazia.
![[Breadth-First-Search-Algorithm.gif]]
O pseudo-algoritmo abaixo mostra a execução deste algoritmo
```python
procedure BFS(G, root) is
let Q be a queue
label root as explored
Q.enqueue(root)
while Q is not empty do
v := Q.dequeue()
if v is the goal then
return v
for all edges from v to w in G.adjacentEdges(v) do
if w is not labeled as explored then
label w as explored
w.parent := v
Q.enqueue(w)
```
**:: Referência ::**
# Implementations
- - [[Algoritmo de busca em largura em Python]]