这里是我简要实施的代码。 for循环中的两个内容应该具有O(n2) where n=vertices
的复杂性。我无法弄清楚外部for循环的整体时间复杂度。我认为它会O( E * n2) where E is the number of edges and n is the number of vertices
。
int vertices;
for(int Edges = 0; Edges < vertices-1 ; Edge++)
{
for (int i=0; i< vertices; i++)
for (int j=0; j<vertices; j++)
{
// TASKS
}
}
此代码用于prim算法。如果你愿意,我可以发布整个代码。谢谢:))
答案 0 :(得分:2)
稀释!!!它的典型特征是什么!
在你的内部循环中,你有一个名为i&amp;的变量。 j,所以你很容易理解复杂性。
只是添加了EDGE
变量,与其他2变量完全不同,你就会感到困惑!检查迭代次数!!!
外循环将运行VERTICES-1
次迭代。
因此,复杂度=(VERTICES-1)*(VERTICES)*(VERTICES)=(VERTICES ^ 3) - (VERTICES ^ 2)。
程序的复杂性将是O(顶点^ 3)或O(n ^ 3)其中n =顶点...
答案 1 :(得分:1)
Sigma表示法使事情变得清晰: