有关地下爆炸的最新消息让我对以下问题感到好奇。假设我们有一个带权的无向图,其中的节点有时会被删除。问题是在清除这些删除之后快速重新计算所有节点对之间的最短路径。如何在线删除节点时重新计算所有对最短路径?
通过对Floyd-Warshall algorithm的简单修改,我们可以计算所有配对之间的最短路径。这些路径可能存储在一个表中,其中shortest[i][j]
包含i
和j
(或NULL
值,如果没有路径)之间最短路径上的下一个节点的索引。该算法需要O(n³)时间来建立表格,并且每个查询shortest(i,j)
需要O(1)。不幸的是,我们应该在每次移除后重新运行此算法。
另一种选择是在每个查询上运行图搜索。这样每次移除都需要零时间来更新辅助结构(因为没有),但每个查询都需要O(E)时间。
当图的节点被删除时,什么算法可以用来“平衡”所有对最短路径问题的查询和更新时间?