我想找到“最小生成树”,给定集合A的边必须在“最小生成树”中(因此它不是真正的最小生成树,但是给定A,它的最小和为重量)。因此,“最小生成树”必定包含A的所有边。我对Prim的算法做了一些修改,可以在下面找到。然后,我想查找该算法的运行时间,但是,在查找运行时间以检查两组集合的交集是否为空时,我遇到了麻烦。 有人可以帮我吗?那么,总运行时间将是多少?我已经将每个步骤的运行时间都放在了该步骤的旁边,除了“?”。
注释说明: δ(W)= {{v,w}∈E:w∈W,v∈V \ W}对于W⊂V
algorithm:
1. T = ∅, W = {v} for some v ∈ V O(1)
2. While W ≠ V n iterations
If (A ∩ δ(W) ≠ ∅) do ?
Take e = {v,w} ∈ (A ∩ δ(W)) O(1)
T = T ∪ {e} O(1)
W = W ∪ {v,w } O(1)
Else
Find e = {v,w } ∈ δ(W) s.t. ce ≤ cf ∀ f ∈ δ(W) O(m)
T = T ∪ {e} O(1)
W = W ∪ {v,w } O(1)
End while