Selon cette page , l'algorithme de Dijkstra est simplement BFS avec une file d'attente prioritaire. Est-ce vraiment aussi simple que cela? Je crois que non.
algorithms
graphs
shortest-path
Barry Fruitman
la source
la source
Réponses:
Vous pouvez implémenter l'algorithme de Dijkstra en tant que BFS avec une file d'attente prioritaire (bien que ce ne soit pas la seule implémentation).
L'algorithme de Dijkstra repose sur la propriété que le chemin le plus court de à t est également le chemin le plus court vers l'un des sommets le long du chemin. C'est exactement ce que fait BFS.s t
Ou dans une autre perspective: comment se comporterait l'algorithme de Dijkstra si tous les poids étaient 1? Exactement comme BFS.
la source
Voici une idée tirée du livre «Algorithms (Section 4.4)» de Dasgupta et al:
Il se comporte exactement de la même manière que BFS. Nous élaborons cela à partir de deux points principaux.
Sur la "détente".
Pour l'algorithme de Dijkstra sur un graphe général pondéré, la relaxation est
Sur "file d'attente prioritaire".
Lorsque l'algorithme de Dijkstra est exécuté sur un graphique non pondéré, à tout moment, la file d'attente prioritaire contient au plus deux valeurs distinctes (distance). Par conséquent, une file d'attente FIFO de BFS suffit.
la source