← Все вопросы

Алгоритм Дейкстры в двух словах — когда он вообще нужен?

Задан 4 месяца назад481 просмотров3 ответа
12

Знаю BFS для поиска кратчайшего пути. Зачем тогда Дейкстра? В каких задачах BFS не справится и нужен именно он? Без вывода формул, просто суть.

3 ответа

21
✓ Принятый ответ — помог автору

Короткая суть: BFS находит кратчайший путь, когда все рёбра «весят» одинаково (одно ребро = один шаг). Как только у рёбер появляются разные веса (расстояния, время, цена), BFS уже не годится — он считает количество рёбер, а не сумму весов.

Дейкстра — это как раз поиск кратчайшего пути во взвешенном графе с неотрицательными весами. Он жадно на каждом шаге берёт ближайшую ещё не обработанную вершину (обычно через очередь с приоритетом / кучу) и обновляет расстояния до соседей.

Границы применимости: веса должны быть неотрицательными. Если есть отрицательные рёбра — Дейкстра ломается, там нужен Беллман–Форд.

Сергей Галанов В Python кучу удобно брать из heapq для очереди с приоритетом. · 4 месяца назад
10

Когда у рёбер разные веса. Для равных весов хватает BFS, веса разные — Дейкстра.

6

Когда у рёбер разные веса.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект