Алгоритм Джонсона должен действительно возвращать те же пути, которые вы получите с Флойд-Варшаллом - если вы этого не видите, это, вероятно, означает, что в вашей реализации где-то есть ошибка.
Вы правы в том, что алгоритм Джонсона повторно взвешивает ребра графа, но делает это довольно умным способом.В частности, в новом графе, в то время как стоимость каждого пути в новом графе может отличаться от первоначального графа, относительные затраты путей в новом графе одинаковыкак в исходном графике.В этом смысле, любые пути, возвращающиеся в качестве кратчайшего пути в новом графе, обязательно будут также кратчайшими путями из вашего исходного графа. стоимость этих путей в новом графике, тем не менее, не будет соответствовать вашему исходному графику, и поэтому в качестве шага постобработки в алгоритме Джонсона вы должны настроить расходы, произведенные для инвертирования эффектаизменение весов.
Не видя код, который вы запускаете, трудно сказать, что конкретно пошло не так.Возможно, вам повезет больше, если вы зададите дополнительный вопрос с некоторым конкретным кодом, конкретным тестовым примером, который вы используете, конкретными результатами, которые вы получаете, и почему вы считаете, что они неверны.