@NightFantom

Почему алгоритм Дейкстры корректен?

Всем привет. Ребята, я что-то не догоняю корректность алгоритма Дейкстры. Есть такой граф:
009a58ebe9f343439b7ed8e5d07af5aa.png

После выполнения алгоритма, мы получим, что кратчайшее расстояние до второй вершины равно 10. Хотя кратчайший путь равен 2. Как так?
  • Вопрос задан
  • 711 просмотров
Пригласить эксперта
Ответы на вопрос 2
На первой итерации вес вершины 1 равен 0. От нее идем к соседям. До 3 вершины вес равен 1. До 2 вершины вес равен 10. Больше к 1 вершине не идем, она с минимальным весом. Следующая оставшаяся с минимальным из соседей - это 3. Выбираем её. Путь только в одну сторону - к 2 - и вес равен 2 (суммируется предыдущий вес). Раньше дотуда был вес 10, но так как наш новый вес меньше, заменяем на меньший. Выбираем вершину 2, а от нее уже некуда идти.

Итого кратчайший путь до вершины 2 составляет 2 и идет через соседа 3 (если бы мы запоминали это во время итераций). По ребру с весом 10 вообще ничего не пойдет в данном случае.
Ответ написан
@throughtheether
human after all
После выполнения алгоритма, мы получим, что кратчайшее расстояние до второй вершины равно 10.
Вот здесь непонятно, поясните вашу мысль.

Изначально (стартуем из вершины 1) у вас вершина 1 имеет ассоциированное число (длину пути, d[1]) 0, она же находится во множестве посещенных вершин. Длина пути до других вершин - бесконечность.
Для всех ребер, соединяющих множества посещенных и непосещенных вершин (т.е. для ребер 1-2 и 1-3) рассмотрим суммы d[u]+w(u,v), где d[u]-длина кратчайшего пути до вершины u, w(u,v) - вес (длина) соответствующего ребра. Минимальная сумма наблюдается для ребра 1-3, соответствующего пути 1,3. Добавляем 3 в посещенные.
Снова, для всех ребер, соединяющих множества посещенных и непосещенных вершин (т.е. для ребер 1-2, 3-2) рассматриваем соответствующие суммы (10 и 2), выбираем минимальную, т.е. добавляем вершину 2 в путь (и во множество посещенных вершин), имеющий вид 1,3,2. Так как непосещенных вершин не осталось, завершаем работу алгоритма.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы