我正在研究有向图中的最短路径。有许多有效的算法可以找到网络中的最短路径,例如dijkstra或bellman-ford。但如果图表是动态的呢?通过说动态我的意思是我们可以在程序执行期间插入边。我试图找到一种有效的算法,用于在插入边e后更新从顶点v到每个其他顶点u的最短路径,而无需再次在新图中运行最短路径算法。我怎样才能做到这一点?我和我的教授讨论了这个问题中给出的方法Link。它最初在初始图上运行floyd warshall。然后,当在顶点u和顶点v之间添加边时,我们执行以下操作: 对于每对节点 x 和 y ,检查 d(x,u)+ c(u,v)+ d(v,y),这个可以在 O(n ^ 2)中完成,因为您要比较每对节点。 // d(x,y)是最初由Floyd Warshall算法计算的顶点x和顶点之间的距离。
我怀疑的是,我们可以优化上述步骤,以便我们不必检查所有对吗?我们能做得更好吗?如果是,那么方法是什么?如果不是,我们必须检查所有配对的证据是什么?
我绘制了一些图表并且直观地认为我们必须检查所有对,我们不能做得更好,但任何证据都会有所帮助。