Se O (log n) vs O (n) é exponencial, o que é O (1) vs O (n)?

7

Se alguém se refere ao uso O(log n)de um O(n)algoritmo em vez de um algoritmo como uma aceleração exponencial, como se referiria à aceleração obtida usando um O(1)algoritmo versus um O(n)?

user695652
fonte

Respostas:

4

Não há nome para isso, mas o mais próximo seria a aceleração "infinita". é considerado uma aceleração exponencial sobre , porque é exponencial em : se usarmos a função exponencial , obtemos .O(logn)O(n)n lognf(n)=2nf(logn)=2logn=n

No entanto, não é nada em : não há como recuperar de , não importa a rapidez com que a função que assumimos cresce, sempre será uma constante (e nunca será igual a ). Como , se torna infinitamente menor que .n 1n1ff(1)nn1n

Tom van der Zanden
fonte
-1

Sua confusão parece estar relacionada ao significado técnico da palavra "exponencial".
Como a definição é dada em http://www.learnersdictionary.com , é definida como:

Crescimento exponencial é literalmente crescimento que se torna cada vez mais rápido à medida que continua. No uso comum, no entanto, exponencial significa simplesmente "muito rápido" quando usado com palavras como crescimento e aumento.


Agora, vamos considerar um exemplo, em que n = 256 (uma potência de 2 por uma questão de simplicidade). Se n = 256, então \ log_2 n = 8. Essa é uma aceleração "exponencial", devido à função de log.
No que diz respeito a O (1), você precisa perceber que \ log_n n = 1 em geral. Com isso dito, O (1) também será uma aceleração "exponencial" ideal.
Espero que isso esclareça as coisas.

Syed Ali Hamza
fonte