这里我有两个连接的无向图
G1 = [V ; E1] and G2 =[V ; E2]
在同一组顶点V上。并假设E1和E2中的边缘具有不同的颜色。
设w(e)为边e ∈ E1 ∪ E2
的权重。
我想在那些在每组E1和E2中至少有一个边缘的生成树中找到最小权重生成树(MSF)。在这种情况下,如何为此找到合适的算法?我被困在这里整整一夜。
答案 0 :(得分:1)
考虑两条边e1∈E1,e2∈E2。它们在 V 中连接2到4个不同的顶点。如果它们连接3个或4个顶点,假设您首先收缩 e1 连接的顶点(与Kruskal's algorithm中的每个步骤相同),那么 e2 连接的顶点,然后在结果图上运行任何minimum spanning tree algorithm。然后结果是包含 e1 和 e2 的MST。
通过循环遍历所有e1∈E1,e2∈E2(它们不能完全连接相同的两个顶点),您可以找到总MST,并找到最轻的解决方案。可以从Kruskal's algorithm
中轻松修改正确性证明实际上,您可以提高效率,因为 E1 中最轻的边缘或 E2 中最轻的边缘必须在某些MST中使用。假设 E1 中最轻的边缘,比如 e'1 ,不使用,并考虑与 e'1同意的剪切。 MST必须包含连接切割的一些 e≠e'1 。显然,如果e∈E1,则可以使用 e'1 代替 e 。但是,如果e∈E2,并且 e 不能使用,那么 e 比 e'1 。但是,在这种情况下,重复 E2 的参数,会使 E2 中最轻的边缘成为MST的一部分。
因此,只有 E1 的最亮边缘以及 E2 中的任何边缘,或 E2 中最轻的边缘以及任何边缘上面提到的前两次收缩必须考虑 E1 。
复杂度为Θ(| E1 + E2 | f(V,E1 + E2)),其中 f 是MST算法的复杂性。