Escribí un segmento de código para determinar la ruta más larga en un gráfico. A continuación está el código. Pero no sé cómo obtener la complejidad computacional en él debido al método recursivo en el medio. Como encontrar el camino más largo es un problema completo de NP, supongo que es algo así como O(n!)
o O(2^n)
, pero ¿cómo puedo determinarlo?Complejidad computacional de un algoritmo de ruta más larga con un método recursivo
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);
}
que estoy haciendo a la idea. Pero ¿puedes explicar cómo obtuviste la n? dentro de grande O. – nirandi
muchas gracias. eso tiene más sentido. La O (n) inicial se debe al ciclo foor que tenemos en el código principal ¿no? – nirandi
Y también creo que dado que para cada nodo, la cantidad máxima de nodos que se visitarán es n-1, creo que deberíamos tomar T (n, n-1). – nirandi