Недавно я изучал алгоритмы кратчайшего пути для всех пар, такие как алгоритм Флойда-Уоршалла и Джонсона, и заметил, что эти алгоритмы дают правильные решения, даже когда граф содержит ребра с отрицательным весом (но не циклы с отрицательным весом). Для сравнения, алгоритм Дейкстры (который является кратчайшим путем с одним источником) не работает для ребер с отрицательным весом. Что заставляет алгоритмы кратчайшего пути для всех пар работать с отрицательными весами?
2 ответа
Алгоритм поиска всех пар кратчайших путей Флойда Уоршалла работает для графов с отрицательными весами ребер, потому что правильность алгоритма не зависит от неотрицательности веса ребер, в то время как правильность алгоритма Дейкстры основана на этом факте.
Правильность алгоритма Дейкстры:
У нас есть 2 набора вершин на каждом шаге алгоритма. Набор A состоит из вершин, к которым мы вычислили кратчайшие пути. Набор B состоит из оставшихся вершин.
Индуктивная гипотеза : на каждом этапе мы будем предполагать, что все предыдущие итерации верны.
Индуктивный шаг : когда мы добавляем вершину V к множеству A и устанавливаем расстояние равным dist [V], мы должны доказать, что это расстояние является оптимальным. Если это не оптимально, то к вершине V должен существовать другой путь меньшей длины.
Предположим, что через некоторую вершину X из множества B проходит другой путь.
Теперь, поскольку dist[V] <= dist[X]
, следовательно, любой другой путь к V будет иметь длину как минимум dist [V], если только граф не имеет отрицательной длины ребер.
Правильность алгоритма Флойда Уоршалла: Любой путь от вершины S к вершине T будет проходить через любую другую вершину U графа. Таким образом, кратчайший путь от S до T может быть вычислен как
min (кратчайший_путь (от S до U) + кратчайший_путь (от U до T)) для всех вершин U в графе.
Как видите, нет зависимости от неотрицательности ребер графа, если подвызовы правильно вычисляют пути. И подвызовы правильно вычисляют пути, если базовые случаи были правильно инициализированы.
Алгоритм Дейкстры не работает для ребра с отрицательным весом, потому что он основан на жадной стратегии (предположении), что после добавления вершины v к множеству S, d [v] содержит минимально возможное расстояние.
Но если последняя вершина в Q была добавлена к S и у нее есть исходящие ребра с отрицательным весом. Влияние отрицательных краев на расстояние не учитывается.
Однако алгоритм всех пар кратчайших путей будет фиксировать эти обновления.
Похожие вопросы
Связанные вопросы
Новые вопросы
algorithm
Алгоритм - это последовательность четко определенных шагов, которые определяют абстрактное решение проблемы. Используйте этот тег, если ваша проблема связана с дизайном алгоритма.