Algorithm 普里姆和克鲁斯卡尔';s算法复杂度
给定一个带权的无向连通图。w:E->{1,2,3,4,5,6,7}-意味着只可能有7个权重。 我需要用O(n+m)中的Prim算法和O(m*a(m,n))中的Kruskal算法找到一个生成树Algorithm 普里姆和克鲁斯卡尔';s算法复杂度,algorithm,minimum-spanning-tree,prims-algorithm,kruskals-algorithm,Algorithm,Minimum Spanning Tree,Prims Algorithm,Kruskals Algorithm,给定一个带权的无向连通图。w:E->{1,2,3,4,5,6,7}-意味着只可能有7个权重。 我需要用O(n+m)中的Prim算法和O(m*a(m,n))中的Kruskal算法找到一个生成树 我不知道该怎么做,真的需要一些关于体重如何帮助我的指导。据我所知,回答家庭作业并不流行,但这可能对其他人有用,而不仅仅是你;) Prim: Prim是一种寻找最小生成树(MST)的算法,就像Kruskal一样。 可视化算法的一个简单方法是在一张纸上画出图形。 然后在选定的所有节点上创建一条可移动线(剪切)。
我不知道该怎么做,真的需要一些关于体重如何帮助我的指导。据我所知,回答家庭作业并不流行,但这可能对其他人有用,而不仅仅是你;) Prim: Prim是一种寻找最小生成树(MST)的算法,就像Kruskal一样。 可视化算法的一个简单方法是在一张纸上画出图形。 然后在选定的所有节点上创建一条可移动线(剪切)。在下面的示例中,集合A将是切割内的节点。然后选择贯穿切割的最小边,即从线内侧的节点到线外侧的节点。始终选择权重最低的边。添加新节点后,移动剪切,使其包含新添加的节点。然后重复此操作,直到所有节点都在剪切范围内 该算法的简短总结如下:
希望这有帮助 据我所知,回答家庭作业并不流行,但这可能对你以外的其他人有用;) Prim: Prim是一种寻找最小生成树(MST)的算法,就像Kruskal一样。 可视化算法的一个简单方法是在一张纸上画出图形。 然后在选定的所有节点上创建一条可移动线(剪切)。在下面的示例中,集合A将是切割内的节点。然后选择贯穿切割的最小边,即从线内侧的节点到线外侧的节点。始终选择权重最低的边。添加新节点后,移动剪切,使其包含新添加的节点。然后重复此操作,直到所有节点都在剪切范围内 该算法的简短总结如下:
希望这有帮助 可以更快地排序边权重 在Kruskal算法中,您不需要O(M lgm)排序,您只需要使用计数排序(或任何其他O(M)算法)。所以最后的复杂度是O(M)用于排序,O(Ma(M))用于联合查找阶段。总的来说是O(Ma(m))
对于Prim算法的情况。您不需要使用heap,您需要7个列表/队列/数组/任何东西(具有恒定的插入和检索时间),每个权重对应一个。然后,当您寻找最便宜的传出边缘时,您会检查这些列表中是否有一个是非空的(从最便宜的列表中),并使用该边缘。因为7是一个常数,所以整个算法在O(M)时间内运行。您可以更快地对边权重排序 在Kruskal算法中,不需要O(mlgm)sor