Time complexity 了解何时对最小生成树使用Prim或Kruskal

Time complexity 了解何时对最小生成树使用Prim或Kruskal,time-complexity,graph-theory,minimum-spanning-tree,kruskals-algorithm,prims-algorithm,Time Complexity,Graph Theory,Minimum Spanning Tree,Kruskals Algorithm,Prims Algorithm,我试图将普里姆或克鲁斯卡尔的算法应用于某些情况。我知道当图是稠密图时会使用Prim,例如:对于E=OV^2的稠密树,优先队列为无序数组的邻接矩阵是好的。当图是稀疏图时使用Kruskal,例如:作为具有快速排序的邻接列表,其中E=OV。我不确定的是两者之间的关系。例如,一个边数适中的图 E = O(V log V) 这是Prim还是Kruskal?我认为它可能是其中之一,因为Prim-OE-log V和Kruskal-OE-log E具有相似的时间复杂性。由于每个算法的性质,对于边数适中的图,应

我试图将普里姆或克鲁斯卡尔的算法应用于某些情况。我知道当图是稠密图时会使用Prim,例如:对于E=OV^2的稠密树,优先队列为无序数组的邻接矩阵是好的。当图是稀疏图时使用Kruskal,例如:作为具有快速排序的邻接列表,其中E=OV。我不确定的是两者之间的关系。例如,一个边数适中的图

E = O(V log V)

这是Prim还是Kruskal?我认为它可能是其中之一,因为Prim-OE-log V和Kruskal-OE-log E具有相似的时间复杂性。

由于每个算法的性质,对于边数适中的图,应该使用Kruskal算法。Prim的算法在具有多条边的图中运行得更快,因为它只比较每个循环中有限数量的边,而Kruskal的算法首先对列表中的所有边进行排序,然后再次检查这些边是否是最小生成树MST的一部分。因此,在您的问题中,虽然两种算法的运行时间相似,但在您决定两种算法时,图中的边数应该是主要的组成部分。与顶点相比,边更多,请使用Prim,否则,请使用Kruskal。

Prim的算法在具有比顶点更多边的真正稠密图时速度更快。Kruskal在稀疏图中表现得更好。因为prim的算法总是将一个新顶点连接到一个已经访问过的旧顶点,所以每个阶段都是一棵树。Kruskal允许新到新和旧到旧的连接,因此这可能导致创建一个电路,算法必须每次检查它们。所以Kruskal的复杂度比Prim大,所以它取决于边数和顶点数的比值