[Algoritmi] individuare algoritmo divide et impera
Ciao ragazzi, qualcuno potrebbe aiutarmi con il seguente esercizio?
Progettare un algoritmo basato sulla tecnica divide et impera il cui costo in tempo sia definito dalla relazione di ricorrenza
$ g(n)={ ( 1\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad n<=1 ),( 4g(n/2)+Theta (n^2logn)\quad\quad n > 1 ):} $
Non riesco a capire quale comando utilizzare per ottenere $ Theta (n^2logn) $
Personalmente ho iniziato nel seguente modo:
Grazie!
Progettare un algoritmo basato sulla tecnica divide et impera il cui costo in tempo sia definito dalla relazione di ricorrenza
$ g(n)={ ( 1\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad n<=1 ),( 4g(n/2)+Theta (n^2logn)\quad\quad n > 1 ):} $
Non riesco a capire quale comando utilizzare per ottenere $ Theta (n^2logn) $
Personalmente ho iniziato nel seguente modo:
int pippo(int*a, int i, int f){ if(n <= 1) return 1; else{ int m=(i+f)/2; ... } }
Grazie!
Risposte
Farei una cosa tipo questo:
void function(unsigned int n) { if (n > 1) { function(n/2); function(n/2); function(n/2); function(n/2); for (int i=0; i<n; i++) for (int j=0; j<n; j++) for (int k=n; k>0; k >>= 1) { // un po' di codice qui } } }