Qual é o menor valor de n tal que um algoritmo cujo tempo de execução é 100n² funciona
mais rápido que um algoritmo cujo tempo de execução é 2
n na mesma máquina?
Para determinar o menor valor de n para o qual o algoritmo de tempo de execução 100n² é mais rápido do que o algoritmo de tempo de execução 2n, podemos igualar as expressões e resolver para n.
Isto é, 100n² = 2n.
Dividindo ambos os lados da equação por n, obtemos:
100n = 2
n = 2 / 100
n = 0,02
Portanto, o menor valor de n para o qual o algoritmo de tempo de execução 100n² é mais rápido do que o algoritmo de tempo de execução 2n é n = 0,02. Para valores de n menores que 0,02, o algoritmo de tempo de execução 2n seria mais rápido, enquanto para valores de n maiores que 0,02, o algoritmo de tempo de execução 100n² seria mais rápido.
Para determinar o menor valor de nn onde o algoritmo com tempo de execução 100n2100n^2 é mais rápido que o algoritmo com tempo de execução 2n2^n, devemos resolver a inequação:
100n2<2n100n^2 < 2^n
Para valores pequenos de nn, podemos testar diretamente:
nn | 100n2100n^2 | 2n2^n |
---|---|---|
11 | 100100 | 22 |
22 | 400400 | 44 |
33 | 900900 | 88 |
44 | 16001600 | 1616 |
55 | 25002500 | 3232 |
66 | 36003600 | 6464 |
77 | 49004900 | 128128 |
88 | 64006400 | 256256 |
Observe que 100n2>2n100n^2 > 2^n para valores pequenos de nn.
Os valores crescem exponencialmente para 2n2^n, então é esperado que a partir de algum ponto nn, 2n2^n ultrapasse 100n2100n^2.
Usando cálculo: Para resolver aproximadamente, tomamos logaritmos de ambos os lados:
log?(100n2)<log?(2n)\log(100n^2) < \log(2^n)
Expandindo:
log?(100)+2log?(n)<nlog?(2)\log(100) + 2\log(n) < n\log(2)
Aproximação:
Portanto, o menor valor de nn tal que 100n2<2n100n^2 < 2^n é:
n=15n = 15