Costo computazionale asintotico di un algoritmo

TheBeefEater
Ciao a tutti, vi propongo questo quesito:

Se un algoritmo ha costo $ O(n^3) $ , raddoppiando la dimensione dei dati, di quanto aumenta il costo?


Il fatto è che non capisco cosa si intenda per "dimensione dei dati", ovvero se è riferito alla loro dimensione "fisica" oppure se intende raddoppiare i dati in ingresso, quindi 2n.

Nell'ultimo caso, ovvero il raddoppio dell'input, il costo dell'algoritmo sarebbe sempre $ O(n^3) $ ? visto che è dipendente da n, il raddoppio dei dati non cambierebbe il costo asintotico, o no? oppure diventa $ O(2n^3) $? boh! :rolleyes:

grazie in anticipo!

Risposte
hamming_burst
Se non ci sono specifiche migliori (sul problema), quello che hai affermato corrisponde al vero.
Cioè $n$ indica i dati numerabili in input all'algoritmo (non al problema).

Per costo asintotico, la limitazione non cambia rimane sempre $O(n^3)$, quello che cambia sono le constanti (nascoste).
ma se conosci la teoria, se $g(n)$ è la funzione corrispondente all'algoritmo, $g(n) in O(n^3)$ e da definizione: $EEc>0, AAn>=m | g(n) <= cn^3$ in questo caso mettiamo che $c=1$.
Se i dati raddoppiano: viene $g(2n) in O(8n^3)$ in questo caso $c=8$

In parole povere, se i dati raddoppiano, l'algoritmo sarà "più lento" di un fattore lineare $8$.

Se hai dubbi chiedi pure :-)

TheBeefEater
Grazie mille ham_burst! chiaro e preciso!

:D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.