Оба могут использоваться для поиска кратчайшего пути из одного источника. BFS вбегает O(E+V)
, а Дейкстра вбегает O((V+E)*log(V))
.
Кроме того, я видел, как Дейкстра очень часто используется в протоколах маршрутизации.
Таким образом, зачем использовать алгоритм Дейкстры, если BFS может делать то же самое быстрее?
источник
Если вы рассматриваете туристические веб-сайты, они используют алгоритм Дейкстры из-за весов (расстояний) на узлах.
Если вы будете учитывать одинаковое расстояние между всеми узлами, то BFS - лучший выбор.
Например, рассмотрим
A -> (B, C) -> (F)
с весами реберA->B
= 10,A->C
= 20,B->F
=C->F
= 5.Здесь, если мы применим BFS, ответ будет ABF или ACF, поскольку оба являются кратчайшими путями (относительно количества ребер), но если мы применим Dijstra, ответ будет ABF только потому, что он учитывает веса на соединенных дорожка.
источник
Алгоритм Дейкстры
Источник: https://cs.stanford.edu/people/abisee/gs.pdf
источник
С точки зрения реализации, алгоритм Дейкстры может быть реализован так же , как BFS путем замены
queue
сpriority queue
.Источник
источник