Costo algoritmo ricorsivo
Buongiorno, qualcuno mi sa aiutare con il seguente esercizio?
Determinare l'ordine di grandezza del costo in tempo in termini di operazioni aritmetiche della seguente funzione:
dire che l'algoritmo ha tempo d'esecuzione definito da
$ T(n)={ ( O(1)\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad n<= 3 ) ,( 3T(n/2)+O(1)\quad\quad n>= 333 ),( T(n-3)+O(1)\quad ):} $
è corretto?
Grazie mile!
Determinare l'ordine di grandezza del costo in tempo in termini di operazioni aritmetiche della seguente funzione:
int pippo(int n){ int i; if (n <= 3) return 1; else if(n > 333) i = n/2; return 3*pippo(i)+pippo(i)+pippo(i)+n*i; } else return pippo(n-3)+9; }
dire che l'algoritmo ha tempo d'esecuzione definito da
$ T(n)={ ( O(1)\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad n<= 3 ) ,( 3T(n/2)+O(1)\quad\quad n>= 333 ),( T(n-3)+O(1)\quad ):} $
è corretto?
Grazie mile!
Risposte
La condizione \(n \ge 333\) dovrebbe essere \(n > 333\) in base al codice della funzione, ma mi sembra per il resto corretto.
EDIT: Suppongo sia tuttavia in qualche modo richiesto di risolvere tale equazione di ricorrenza. Qualche idea su come procedere?
EDIT: Suppongo sia tuttavia in qualche modo richiesto di risolvere tale equazione di ricorrenza. Qualche idea su come procedere?
Grazie mille, a questo punto risolverei l'equazione di ricorrenza con il teorema dell'esperto!