在循环中应用 Kruskal 算法的最坏情况时间复杂度是多少?

What is the worst case time complexity of applying Kruskal algorithm in a loop?

这是我的一段伪代码,用于在给定图形 G:

的情况下查找每个强连接组件 (SCC) 的 MST
Number of SCC, K <- apply Kosaraju's algorithm on Graph G O(V + E)

Loop through K components:
 each K components <- apply Kruskal's algorithm

据我了解,Kruskal 算法 运行 在 O(E log V) 时间内。

但是,我不确定循环的最坏情况下的时间复杂度。我的想法是,最坏的情况会发生在 K = 1 时。因此,大 O 时间复杂度只是 O(E log V)。

不知道我的想法对不对,有什么根据。

是的,直觉上你节省了一次比较边缘的成本 具有另一个边缘的组件。形式上,f(V, E) ↦ E log V 是凸函数 函数,所以 f(V1, E1) + f(V2, E2) ≤ f(V1 + V2, E1 + E2),这意味着处理多个 单独的组件永远不会超过一起处理它们。的 当然,如您所见,可能只有一个组件,在这种情况下 没有积蓄了。