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