Я знаю, что опаздываю на эту вечеринку, но я просто наткнулся на вопрос, потому что я просто спрашивал себя об этом.
Для лучшего понимания я хотел бы отметить, что первый шаг ДжонсонаАлгоритм фактически создает новый граф .Это достигается путем умного использования алгоритма Беллмана-Форда для преобразования исходного графа (который может иметь отрицательные ребра) в другой (но эквивалентный) граф, который не имеет отрицательных ребер.Этот новый граф теперь безопасен для использования с алгоритмом Дейкстры.Затем алгоритм Дейкстры используется для эффективного вычисления «кратчайших путей из всех пар», о которых упоминают два других ответа.
Хорошее объяснение можно найти здесь: http://www.geeksforgeeks.org/johnsons-algorithm/