Notação L
A notação L é uma notação assintótica análoga à notação Big O (Grande O), denotada como para uma variável limitada tendendo ao infinito. Assim como a notação Big O, ela é geralmente usada para transmitir de forma aproximada a taxa de crescimento de uma função, como a complexidade computacional de um algoritmo específico.
Definição
É definida como
onde c é uma constante positiva, e é uma constante .
A notação L é usada principalmente na teoria dos números computacional, para expressar a complexidade de algoritmos para problemas difíceis da teoria dos números, por exemplo, crivos para fatoração de inteiros e métodos para resolver logaritmos discretos. O benefício desta notação é que ela simplifica a análise desses algoritmos. O termo expressa o termo dominante, e o termo cuida de tudo o que é menor. Quando é 0, então
é uma função polilogarítmica (uma função polinomial de ln n);
Quando é 1, então
é uma função exponencial completa de ln n (e, portanto, polinomial em n).
Se estiver entre 0 e 1, a função é subexponencial de ln n (e superpolinomial).
Exemplos
Muitos algoritmos de fatoração de inteiros de propósito geral têm complexidades de tempo subexponenciais. O melhor é o crivo de campo numérico geral, que tem um tempo de execução esperado de
para . O melhor algoritmo desse tipo antes do crivo de campo numérico era o crivo quadrático [en], que tem tempo de execução
o terceiro método de fatoração mais rápido conhecido: fatoração por curva elíptica de Lenstra [en], que tem tempo de execução
Para o problema do logaritmo discreto de curva elíptica, o algoritmo de propósito geral mais rápido é o algoritmo passo de bebê, passo de gigante [en], que tem um tempo de execução da ordem da raiz quadrada da ordem do grupo n. Em notação L, isso seria
A existência do teste de primalidade AKS, que é executado em tempo polinomial, significa que a complexidade de tempo para o teste de primalidade é conhecida por ser no máximo
onde c foi provado ser no máximo 6.[1]
História
A notação L foi definida em várias formas ao longo da literatura. O primeiro uso veio de Carl Pomerance em seu artigo "Analysis and comparison of some integer factoring algorithms".[2] Esta forma tinha apenas o parâmetro : o na fórmula era para os algoritmos que ele estava analisando. Pomerance vinha usando a letra (ou minúscula ) neste e em artigos anteriores para fórmulas que envolviam muitos logaritmos.
A fórmula acima, envolvendo dois parâmetros, foi introduzida por Arjen Lenstra [en] e Hendrik Lenstra em seu artigo sobre "Algorithms in Number Theory".[3] Foi introduzida em sua análise de um algoritmo de logaritmo discreto de Don Coppersmith. Esta é a forma mais comumente usada na literatura hoje.
O Handbook of Applied Cryptography (Manual de Criptografia Aplicada) define a notação L com um Big O () em torno da fórmula apresentada neste artigo.[4] Esta não é a definição padrão. O Big O sugeriria que o tempo de execução é um limite superior. No entanto, para os algoritmos de fatoração de inteiros e logaritmo discreto para os quais a notação L é comumente usada, o tempo de execução não é um limite superior, então esta definição não é a preferida.
Referências
- ↑ Hendrik W. Lenstra Jr. and Carl Pomerance, "Primality testing with Gaussian periods", preprint, 2011, http://www.math.dartmouth.edu/~carlp/aks041411.pdf.
- ↑ Carl Pomerance, "Analysis and comparison of some integer factoring algorithms", In Mathematisch Centrum Computational Methods in Number Theory, Part 1, pp. 89-139, 1982, http://www.math.dartmouth.edu/~carlp/PDF/analysiscomparison.pdf
- ↑ Arjen K. Lenstra and Hendrik W. Lenstra, Jr, "Algorithms in Number Theory", in Handbook of Theoretical Computer Science (vol. A): Algorithms and Complexity, 1991.
- ↑ Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone. Handbook of Applied Cryptography. CRC Press, 1996. ISBN 0-8493-8523-7. http://www.cacr.math.uwaterloo.ca/hac/.