5
我写了一个代码段来确定图中最长的路径。以下是代码。但由于中间递归方法,我不知道如何获得计算复杂度。由于找到最长的路径是一个NP完整的问题,我认为它是像O(n!)
或O(2^n)
,但我怎么能真正确定它?用递归方法计算最长路径算法的复杂度
public static int longestPath(int A) {
int k;
int dist2=0;
int max=0;
visited[A] = true;
for (k = 1; k <= V; ++k) {
if(!visited[k]){
dist2= length[A][k]+longestPath(k);
if(dist2>max){
max=dist2;
}
}
}
visited[A]=false;
return(max);
}
我得到的想法。但是,请你解释一下你的胃口!里面大O. – nirandi 2010-12-14 14:22:15
非常感谢。这更有意义。最初的O(n)是由于我们在主代码中的foor循环吗? – nirandi 2010-12-14 15:44:30
而且我认为,因为对于每个节点,要访问的节点的最大数量是n-1,我认为我们应该采取T(n,n-1)。 – nirandi 2010-12-14 16:17:52