/ / Qual procedimento podemos usar para exploração de labirinto BFS ou DFS - algoritmo, complexidade de tempo, pesquisa em profundidade, pesquisa em largura primeiro, labirinto

Qual procedimento podemos usar para a exploração do labirinto BFS ou DFS - algoritmo, complexidade de tempo, pesquisa de primeira profundidade, pesquisa de primeira linha, labirinto

Eu sei que podemos usar o DFS para a exploração do labirinto.Mas acho que também podemos usar o BFS para a exploração do labirinto. Estou um pouco confuso aqui porque a maioria dos livros e artigos que li usava DFS para esse problema. O que eu acho é que o Melhor caso a complexidade de tempo do DFS será melhor em comparação com o BFS. Mas Média e Pior Caso a complexidade do tempo será a mesma para BFS e DFS e é por isso que preferimos DFS em vez de BFS. Estou certo ou estou tendo algum equívoco

Respostas:

7 para resposta № 1

Eles têm tempo de execução semelhante, mas qualquer um pode superar o outro em qualquer problema, simplesmente devido à ordem em que as células são visitadas.

Em termos de uso de espaço, o BFS usará, em média, mais memória para arvores, mas para gráficos mais gerais, em certos casos, pode usar significativamente Menos memória.

Para labirintos especificamente (se definirmos um labirinto como havendo apenas uma maneira de chegar a uma célula do ponto de partida sem retrocesso, o que significa que é essencialmente uma árvore), O BFS geralmente usa mais memória, já que precisaremos manter vários caminhos na memória ao mesmo tempo, onde o DFS só precisa manter o controle de um único caminho a qualquer momento.

Para grades mais gerais, é muito menos óbvioqual será o melhor em termos de memória, especialmente quando consideramos como rastreamos as células que visitamos até agora para evitar visitas repetidas às células.

Se você não estiver preocupado com a memória, você pode escolher qualquer um. Se você estiver bastante confortável com a recursão, o DFS deve ser mais fácil de implementar.

No entanto, se você está procurando o caminho mais curto para alguma célula dada em uma grade geral, use BFS (ou UMA*), pois isso garante encontrar o caminho mais curto, onde o DFS não (você ainda pode usar em um labirinto onde há apenas um único caminho para qualquer célula).


11 para resposta № 2

Estou bastante surpreso que ninguém tenha mencionado até agora sobre a diferença nos resultados fornecidos por DFS e BFS.

A principal diferença entre esses dois algoritmos é que BFS retorna o caminho mais curto e DFS retorna apenas um caminho.

Então, se você deseja obter o caminho mais curto, use BFS, caso contrário, considere outros prós e contras (memória etc.)


0 para resposta № 3

Ambos devem ser equivalentes. O DFS é mais usado porque é um pouco mais fácil de implementar.