2017-04-30 3 views
0

Je cours en ligne sur les algorithmes et j'ai eu le quiz suivant. Je me suis trompé et j'essaie de comprendre la raison de la réponse.Complexité de l'algorithme et grande notation O

Lequel des éléments suivants est O (n^3)?

a) 11n + 151 + 100 gn
b) 1/3 n^2
c) 25 000 n^3
d) Toutes ces réponses.

La bonne réponse est (d) tout ce qui précède. La raison en est que la notation Big-O ne fournit que la limite supérieure du taux de croissance de la fonction lorsque n devient grand.

Je ne sais pas pourquoi la réponse n'est pas (c). Par exemple, la borne supérieure de (b) est inférieure à n^3.

+1

Si quelque chose est O (n^2), il est aussi O (n^3). – Lee

+2

La limite supérieure ne signifie pas nécessairement la limite * la plus stricte *. – SomeWittyUsername

+0

Il n'y a pas de limite supérieure. Il y a beaucoup de limites supérieures. La notation Big-O spécifie ** une ** limite supérieure. Une notation associée fournit * la limite supérieure *, mais ce n'est pas la notation Big-O. –

Répondre

3

La raison est que formellement, la notation grand-O est un asymptotique limite supérieure.

Donc 1/3*n^2 est O(n^2), mais il est également O(n^3) et également O(2^n).

Alors que dans la conversion de tous les jours sur la complexité O(...) est utilisé comme un tight (à la fois supérieure et inférieure), la notation thêta, ou Θ(...) est le terme techniquement correct pour cela.

Pour plus d'informations voir What is the difference between Θ(n) and O(n)?