Tôi đã viết một đoạn mã để xác định đường đi dài nhất trong biểu đồ. Sau đây là mã. Nhưng tôi không biết làm thế nào để có được sự phức tạp tính toán trong nó vì phương pháp đệ quy ở giữa. Vì việc tìm con đường dài nhất là một vấn đề hoàn chỉnh NP, tôi cho rằng đó là một cái gì đó như O(n!)
hoặc O(2^n)
, nhưng làm cách nào để tôi có thể xác định nó?Tính phức tạp tính toán của một thuật toán đường dẫn dài nhất witn một phương pháp đệ quy
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);
}
Tôi nhận được ý tưởng. Nhưng bạn có thể vui lòng giải thích làm thế nào bạn có được n! bên trong lớn O. – nirandi
cảm ơn rất nhiều. Điều đó có ý nghĩa hơn. O ban đầu (n) là do vòng lặp foor chúng ta có trong mã chính phải không? – nirandi
Và tôi cũng nghĩ rằng đối với mỗi nút, số lượng nút tối đa sẽ được truy cập là n-1 tôi nghĩ chúng ta nên lấy T (n, n-1). – nirandi