Я написал сегмент кода, чтобы определить самый длинный путь в графе. Ниже приведен код. Но я не знаю, как вычислить сложность в нем из-за рекурсивного метода в середине. Поскольку найти самый длинный путь - это полная 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
спасибо большое. это имеет больше смысла. Начальный O (n) связан с замкнутым циклом, который мы имеем в главном коде справа? – nirandi
А также я думаю, что для каждого узла максимальное количество узлов, которые нужно посетить, - n-1, я думаю, что мы должны взять T (n, n-1). – nirandi