В настоящее время я читаю введение в алгоритмы и пришел по алгоритму Джонсона, который зависит от того, чтобы убедиться, что все пути положительны.
алгоритм зависит от нахождения новой весовой функции (w '), которая является положительной для всех ребер и сохраняет правильность соотношений кратчайших путей.
Это достигается путем вычисления значений h (s), h (d), которые будут добавлены к исходному значению w.
Мой вопрос: почему бы просто не найти наименьшее w в графе и добавить его ко всем ребрам? это удовлетворит оба условия и потребует меньшего количества вычислений.
Ответы:
Добавление веса к каждому ребру добавляет больший вес длинным путям, чем коротким. (Длинный в смысле наличия множества ребер.)
Например, предположим, что у ребра с наименьшей стоимостью есть вес- 2 и есть два пути от a до б : один ребро веса 3 и путь с двумя ребрами, каждый из которых имеет вес 1 . Двухгранная дорожка имеет наименьший вес. Однако, если вы добавите 2 к каждому ребру, путь с одним ребром имеет вес 5 а путь с двумя ребрами теперь имеет вес 6 , поэтому вы получите неправильный ответ.
источник
Увеличение веса каждого ребра на одинаковую величину не обязательно увеличивает каждый путь на одинаковую величину расстояния. Скорее, увеличение путей часто непропорционально, что зависит от того, сколько ребер имеет путь.
источник