5
코드 세그먼트를 작성하여 그래프에서 가장 긴 경로를 결정했습니다. 다음은 코드입니다. 하지만 중간에 재귀 적 방법이 있기 때문에 계산상의 복잡성을 얻는 방법을 모르겠습니다. 가장 긴 경로를 찾는 것이 NP 완료된 문제이므로 O(n!)
또는 O(2^n)
과 같지만 실제로 어떻게 결정할 수 있습니까? n
노드의 수를 나타내며, m
이 방문하지 않은 노드의 수를 나타낸다 (당신이 longestPath
m
번 호출하기 때문에, 그리고 방문 테스트 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
많이 감사합니다. 그 말이 더 합리적입니다. 초기 O (n)은 메인 코드에서 우리가 가지고있는 불쌍한 루프 때문입니까? – nirandi
또한 각 노드마다 방문 할 최대 노드 수는 n-1이므로 T (n, n-1)을 취해야한다고 생각합니다. – nirandi