2013-02-24 16 views
6

voglio calcolare la complessità theta di questo ciclo for nidificato:analisi asintotica di tre cicli for annidati

for (int i = 0; i < n; i++) { 
     for (int j = 0; j < i; j++) { 
      for (int k = 0; k < j; k++) { 
       // statement 

io direi che è n^3, ma non credo che questo è corretto, perché ogni ciclo for non va da 1 a n. Ho fatto alcuni test:

n = 5 -> 10

10 -> 120

30 -> 4060

50 -> 19600

Così deve essere compreso tra n^2 e n^3. Ho provato la formula di sommatoria e così via, ma i miei risultati sono troppo alti. Anche se di n^2 log (n), ma è anche sbagliato ...

risposta

3

È O(N^3). La formula esatta è (N*(N+1)*(N+2))/6

+1

Ti dispiace che spiega come arrivare a questo? – Aaron

+0

@Aaron Ho chiesto a Wolfram Alpha (vedi il link nella risposta), è buono per questo tipo di calcoli. – dasblinkenlight

+0

Sì, l'ho visto, ma voglio capire perché è quella formula. – Aaron

4

Utilizzando Sigma notazione è un passo efficiente metodologia passo:

Problemi correlati