2017-12-10 4 views
-1

eine Erklärung für exponentielle Zeitkomplexität des rekursiven Binomialkoeffizient in T (n)rekursive Kombination zeit Komplexität Analyse

int C(int n, int k){ 
    if(n==k || k==0)return 1; 
    return C(n-1, k) + C(n-1, k-1); 
} 
+1

Sie addieren '1's, die durch die Stopp-Klausel erzeugt werden, bis zu etwas, das' O (n^min {k, nk}) 'ist, also benötigen Sie' Omega (n^{k, nk}) '-Summierungen . – amit

Antwort

0

T(a,b) die Anzahl der Male sein Lassen Sie funktionieren C(a,b) wird in der rekursiven Aufrufstruktur von C(n,k) genannt . Da C(a,b) von C(a+1,b) und C(a+1,b+1) aufgerufen wird (jedes Mal, wenn einer dieser 2 aufgerufen wird) erhalten wir T(a,b)=T(a+1,b)+T(a+1,b+1). Dies ist die Pascal's triangle formula: T s in der letzten Stufe der rekursiven Aufrufstruktur bildet die n ten Ebene des Dreiecks Pascal, und ist somit exponential mit n (Sperrung der Grenzfälle zB k=1 oder k=n, so beispielsweise k=n/2.).

Sie können Ihren Algorithmus O(n*k) Zeit machen, wenn Sie cache the results.