Diferença entre BFS e DFS

BFS vs DFS

A Primeira Pesquisa por Largura (também conhecida como BFS) é um método de pesquisa usado para ampliar todos os nós de um gráfico específico. Ele realiza essa tarefa pesquisando todas as soluções para examinar e expandir esses nós (ou uma combinação de seqüências). Como tal, um BFS não usa um algoritmo heurístico (ou um algoritmo que procura uma solução através de vários cenários). Após a obtenção de todos os nós, eles são adicionados a uma fila conhecida como fila Primeiro a entrar, Primeiro a sair. Os nós que não foram explorados são 'armazenados' em um contêiner marcado como 'aberto'; uma vez explorados, são transportados para um contêiner marcado como 'fechado'.

A pesquisa de profundidade inicial (também conhecida como DFS) é um método de pesquisa que penetra mais fundo em um nó filho de uma pesquisa até que uma meta seja atingida (ou até que exista um nó sem outras permutações ou 'filhos'). Depois que um objetivo é encontrado, a pesquisa retorna para um nó anterior que foi com uma solução, repetindo o processo até que todos os nós tenham sido pesquisados ​​com êxito. Como tal, os nós continuam sendo deixados de lado para futuras explorações - isso é chamado de implementação não recursiva.

Os recursos do BFS são complexidade de espaço e tempo, integridade, prova de integridade e otimização. A complexidade do espaço refere-se à proporção do número de nós no nível mais profundo de uma pesquisa. A complexidade de tempo refere-se à quantidade real de 'tempo' usado para considerar todos os caminhos que um nó seguirá em uma pesquisa. A completude é, essencialmente, uma pesquisa que encontra uma solução em um gráfico, independentemente de que tipo de gráfico seja. A prova da completude é o nível mais raso no qual uma meta é encontrada em um nó a uma profundidade definida. Finalmente, a otimização refere-se a um BFS que não é ponderado - ou seja, um gráfico usado para o custo unitário da etapa.

Um DFS é a saída mais natural usando uma árvore de abrangência - que é uma árvore composta de todos os vértices e algumas arestas de um gráfico não direcionado. Nesta formação, o gráfico é dividido em três classes: Bordas avançadas, apontando de um nó para um nó filho; bordas traseiras, apontando de um nó para um nó anterior; e bordas cruzadas, que não executam nenhum desses.

Resumo:

1. Um BFS pesquisa todas as soluções em um gráfico para expandir seus nós; um DFS toca profundamente em um nó filho até que uma meta seja atingida.

2. Os recursos de um BFS são complexidade de espaço e tempo, integridade, prova de integridade e otimização; a saída mais natural para um DFS é uma árvore de abrangência com três classes: arestas dianteiras, arestas traseiras e arestas cruzadas.