从 MST 中删除节点:重新连接 Kruskal

Delete node from MST: Reconnect with Kruskal

我有一个 MST,需要删除一个节点。我知道在 O(log^4(n)) 中有一个算法,但由于 MST 包含少于 50 个节点和 2500 条边,并且我已经对边进行了排序,我想给我们一个更基本的解决方案:我创建一个联合每个连接的组件和 运行 Kruskal 在它们上重新连接。

我的理由是这应该可行,因为我们有一个 MST,并在删除节点后通过最便宜的方式重新连接它。

但是,我没有找到任何可以证实这有效的东西,所以我想在这里仔细检查一下:

生成的树是否是剩余节点和边之间的最小生成树?

它工作正常,但速度不如 O(log^4(n))

它有效的证明很简单:使用 Kruskal 算法,选择一条边当且仅当其端点不通过仅通过 cheaper/earlier 条边的任何路径连接。

删除顶点及其边不会创建任何新路径(它只会删除路径),因此如果您再次 运行 整个算法,之前选择的任何边仍会被选中。