Se O (log n) vs O (n) é exponencial, o que é O (1) vs O (n)?
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)?
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(log⁡n)O(n)O(n)nn lognlog⁡nf(n)=2nf(n)=2nf(logn)=2logn=nf(log⁡n)=2log⁡n=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 .nn 11nn11fff(1)f(1)nnn→∞n→∞11nn
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.