Ich habe ein Codesegment geschrieben, um den längsten Pfad in einem Diagramm zu bestimmen. Folgendes ist der Code. Aber ich weiß nicht, wie ich die rechenintensive Methode durch die rekursive Methode in der Mitte erreichen kann. Da das Finden des längsten Pfades ein NP-vollständiges Problem ist, nehme ich an, dass es etwas wie O(n!)
oder O(2^n)
ist, aber wie kann ich es tatsächlich feststellen?Berechnungskomplexität eines Algorithmus für den längsten Pfad mit einer rekursiven Methode
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);
}
ich die Idee zu bekommen. Aber kannst du bitte erklären, wie du das nottest! innen groß O. – nirandi
vielen Dank. das macht mehr Sinn. Der Anfang O (n) ist wegen der Foor-Schleife, die wir im Hauptcode haben, richtig? – nirandi
Und auch ich denke, da für jeden Knoten die maximale Anzahl der zu besuchenden Knoten n-1 ist, denke ich, wir sollten T (n, n-1) nehmen. – nirandi