J'ai écrit un segment de code pour déterminer le chemin le plus long dans un graphe. Voici le code. Mais je ne sais pas comment obtenir la complexité de calcul en raison de la méthode récursive au milieu. Puisque trouver le chemin le plus long est un problème NP complet je suppose que c'est quelque chose comme O(n!)
ou O(2^n)
, mais comment puis-je réellement le déterminer?Complexité de calcul d'un algorithme de chemin le plus long avec une méthode récursive
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);
}
Je reçois l'idée. Mais pouvez-vous s'il vous plaît expliquer comment vous allez n! à l'intérieur grand O. – nirandi
merci beaucoup. Cela a plus de sens. Le O (n) initial est dû à la boucle du foor que nous avons dans le code principal, n'est-ce pas? – nirandi
Et puis je pense que puisque pour chaque nœud le nombre maximum de nœuds à visiter est n-1 je pense que nous devrions prendre T (n, n-1). – nirandi