De acordo com esta página , o algoritmo de Dijkstra é apenas BFS com uma fila de prioridade. É realmente assim tão simples? Eu acho que não.
algorithms
graphs
shortest-path
Barry Fruitman
fonte
fonte
Respostas:
Você pode implementar o algoritmo de Dijkstra como BFS com uma fila de prioridade (embora não seja a única implementação).
O algoritmo de Dijkstra se baseia na propriedade de que o caminho mais curto de a também é o caminho mais curto para qualquer um dos vértices ao longo do caminho. É exatamente isso que o BFS faz.ts t
Ou em outra perspectiva: como o algoritmo de Dijkstra se comportaria se todos os pesos fossem 1? Exatamente como o BFS.
fonte
Aqui está uma idéia do livro "Algoritmos (Seção 4.4)", de Dasgupta et al:
Ele se comporta exatamente da mesma forma que o BFS. Nós elaboramos isso a partir de dois pontos principais.
Em "relaxamento".
Para o algoritmo Dijkstra no gráfico geral ponderado, o relaxamento é
Em "fila de prioridade".
Quando o algoritmo Dijkstra é executado em gráfico não ponderado, a qualquer momento, a fila de prioridade contém no máximo dois valores distintos (distância). Portanto, uma fila FIFO de BFS é suficiente.
fonte