我对Johnson算法的有用性感到困惑。我认为这个问题对于这个领域有知识的人来说可能听起来很愚蠢,但我无法理解它。根据维基百科,Johnson算法使用Bellman-Ford算法将边的权重转换为非负权重,然后使用Dijkstra算法找到最短路径。但是Bellman-Ford算法也是一种寻找最短路径的算法。为什么我们不能直接使用从Bellman-Ford算法得到的最短路径呢?
贝尔曼-福德算法用于查找单个顶点(源)到所有其他顶点的最短路径,而约翰逊算法用于查找所有对最短路径。如果您需要C语言中约翰逊算法的实现,请告诉我。