- Fundamentos de ProgramaçãoEstruturas de DadosEstrutura de Dados: Fila
- Fundamentos de ProgramaçãoGrafosBFS: Busca em Largura
- Fundamentos de ProgramaçãoGrafosTeoria dos Grafos
O pseudocódigo abaixo é uma forma simplificada de um algoritmo de busca breadth-first de um grafo direcionado. O procedimento bfs(N,Adj) recebe como entradas o inteiro N e a matriz NxN Adj, significando, respectivamente, o total de vértices do grafo, sendo estes numerados de 1 até N, e a matriz de adjacência. Se Adj(u,v) = 1, existe um arco direcionado que liga o vértice u ao vértice v. O procedimento preenche os vetores cor e !$ pi !$, indexados de 1 até N. Durante o procedimento de busca, utiliza-se a fila Q, do tipo FIFO (First-In-First-Out). O procedimento ENQUEUE(Q,u) insere o elemento u ao final da fila Q e o procedimento u !$ ightarrow !$ DEQUEUE(Q) remove o elemento u do início da fila Q.
bfs(N,Adj)
Para u de 1 até N faça
cor[u] !$ ightarrow !$ branco;
!$ pi !$ [u] !$ ightarrow !$ 0;
Fim-Para
cor[1] !$ ightarrow !$ 0;
Q !$ ightarrow !$ !$ varnothing !$;
ENQUEUE(Q,1);
Enquanto Q !$ e !$ !$ varnothing !$ faça
u !$ ightarrow !$ DEQUEUE(Q);
Para v de 1 até N faça
Se Adj(u,v) = 1 e cor[v] = branco faça
ENQUEUE(Q,v);
cor[v] !$ ightarrow !$ cinza;
!$ pi !$ [v] !$ ightarrow !$ u;
Fim-Se
Fim-Para
cor[u] !$ ightarrow !$ preto;
Fim-Enquanto
Fim
O resultado do vetor !$ pi !$ após a aplicação do procedimento bfs, com entradas !$ { egin {bmatrix} 0 ,, 1 ,, 1 ,, 0 \ 0 ,, 0 ,, 1 ,, 0 \ 0 ,, 0 ,, 0 ,, 1 \ 1 ,, 1 ,, 0 ,, 0 end {bmatrix}} !$, é