Algoritmos de Pesquisa em Grafos: DFS e BFS
Classificado em Computação
Escrito em em
português com um tamanho de 2,68 KB
Algoritmos de Pesquisa em Grafos
O acesso (e atualização, inserção e/ou eliminação) às ligações não é tão fácil. Contudo, o desenho do algoritmo que não necessita deste acesso é fácil, sendo normalmente utilizado para visitar todos os vértices (e respetivas utilizações) e proceder, eventualmente, às alterações necessárias.
Grafos (Pesquisa)
Um algoritmo de pesquisa de um grafo tem de assegurar que todos os seus vértices são visitados. Como o grafo é uma estrutura bidimensional, temos duas possibilidades de pesquisa: Depth First Search (DFS) - pesquisa por profundidade e Breadth First Search (BFS) - pesquisa em largura.
Depth First Search (DFS)
- Tenta sempre ir mais fundo.
- Explora todas as ligações dos vértices do grafo, constituída a partir das ligações de um vértice v.
- Se permanecerem vértices por visitar, recomeça a processar utilizando um desses vértices.
Pior caso (com listas de adjacência): O(|E| + |V|), uma vez que todos os vértices e ligações serão utilizados no pior dos cenários.
Pior caso (com matrizes de adjacência): O(|V|2), uma vez que se torna necessário percorrer toda a matriz.
Uma alternativa à implementação recursiva, a pesquisa pode ser executada de forma repetitiva usando uma pilha. A pesquisa DepthFirstSearchStack invoca a pesquisa respetiva com pilha para todos os vértices que ainda não foram visitados e tem como parâmetro de saída a sequência de vértices criada durante a travessia em profundidade repetitiva.
Breadth First Search (BFS)
- Explora uniformemente a partir de um vértice de partida.
- Visita todos os vértices adjacentes ao vértice de partida, estabelecendo deste modo um conjunto de vértices.
- Utiliza cada elemento deste conjunto como ponto de partida.
Pior caso (listas de adjacência): O(|E| + |V|)
Grafos: Caminho Mais Curto (com BFS)
A árvore de pesquisa, resultado do método de pesquisa na amplitude (Breadth First Search - BFS), pode ser utilizada na determinação de caminhos mais curtos:
- Caminho mais curto de um vértice V para um vértice N: o procedimento de pesquisa é interrompido quando se visita N.
- Caminho mais curto a partir de um vértice V: a árvore resultado do procedimento de pesquisa contém os caminhos mais curtos.
- Caminhos mais curtos de todos os pares de vértices: pede-se o método para todos os vértices do grafo.