Notação L

​A notação L é uma notação assintótica análoga à notação O grande, denotada como L n [ α , c ] {\displaystyle L_{n}[\alpha ,c]} para uma variável limitada n {\displaystyle n} tendendo ao infinito. Como a notação O grande, geralmente é usada para transmitir aproximadamente a complexidade computacional de um algoritmo específico.

Definição

Ela está definida como

L n [ α , c ] = e ( c + o ( 1 ) ) ( ln n ) α ( ln ln n ) 1 α {\displaystyle L_{n}[\alpha ,c]=e^{(c+o(1))(\ln n)^{\alpha }(\ln \ln n)^{1-\alpha }}} onde c é uma constante positiva e α {\displaystyle \alpha } é uma constante 0 α 1 {\displaystyle 0\leq \alpha \leq 1} .

A notação L é usada principalmente na teoria computacional dos números, para expressar a complexidade de algoritmos para problemas difíceis da teoria dos números, por ex. peneiras para fatoração de inteiros e métodos para resolver logaritmos discretos. O benefício dessa notação é que ela simplifica a análise desses algoritmos.

e c ( ln n ) α ( ln ln n ) 1 α {\displaystyle e^{c(\ln n)^{\alpha }(\ln \ln n)^{1-\alpha }}} expressa o termo dominante, e e o ( 1 ) ( ln n ) α ( ln ln n ) 1 α {\displaystyle e^{o(1)(\ln n)^{\alpha }(\ln \ln n)^{1-\alpha }}} cuida de tudo menor.

Quando α {\displaystyle \alpha } ​0, então

L n [ α , c ] = L n [ 0 , c ] = e ( c + o ( 1 ) ) ln ln n = ( ln n ) c + o ( 1 ) {\displaystyle L_{n}[\alpha ,c]=L_{n}[0,c]=e^{(c+o(1))\ln \ln n}=(\ln n)^{c+o(1)}\,}

é uma função polinomial de ln n;

Quando α {\displaystyle \alpha } é 1, então

L n [ α , c ] = L n [ 1 , c ] = e ( c + o ( 1 ) ) ln n = n c + o ( 1 ) {\displaystyle L_{n}[\alpha ,c]=L_{n}[1,c]=e^{(c+o(1))\ln n}=n^{c+o(1)}\,}

é uma função totalmente exponencial de ln n (e, portanto, polinomial em n).

Se α {\displaystyle \alpha } 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 temporais subexponenciais. O melhor é a peneira de campo de número geral, que tem um tempo de execução esperado de

L n [ 1 / 3 , c ] = e ( c + o ( 1 ) ) ( ln n ) 1 / 3 ( ln ln n ) 2 / 3 {\displaystyle L_{n}[1/3,c]=e^{(c+o(1))(\ln n)^{1/3}(\ln \ln n)^{2/3}}}

para c = ( 64 / 9 ) 1 / 3 1 , 923 {\displaystyle c=(64/9)^{1/3}\approx 1,923} . O melhor algoritmo antes da peneira de campo numérico era a peneira quadrática que tem tempo de execução

L n [ 1 / 2 , 1 ] = e ( 1 + o ( 1 ) ) ( ln n ) 1 / 2 ( ln ln n ) 1 / 2 . {\displaystyle L_{n}[1/2,1]=e^{(1+o(1))(\ln n)^{1/2}(\ln \ln n)^{1/2}}.\,}

Para o problema de logaritmo discreto de curva elíptica, o algoritmo de propósito geral mais rápido é o algoritmo passo de bebê passo gigante, que tem um tempo de execução na ordem da raiz quadrada da ordem n. Em notação L, isso seria

L n [ 1 , 1 / 2 ] = n 1 / 2 + o ( 1 ) . {\displaystyle L_{n}[1,1/2]=n^{1/2+o(1)}.\,}

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 como sendo no máximo

L n [ 0 , c ] = ( ln n ) c + o ( 1 ) {\displaystyle L_{n}[0,c]=(\ln n)^{c+o(1)}\,}

onde c foi provado ser no máximo 6.[1]

História

A notação L foi definida de várias formas na literatura. O primeiro uso dela veio de Carl Pomerance em seu artigo "Análise e comparação de alguns algoritmos de fatoração de inteiros".[2] Esta forma tinha apenas o parâmetro c {\displaystyle c} : o α {\displaystyle \alpha } na fórmula era 1 / 2 {\displaystyle 1/2} para os algoritmos que ele estava analisando. Pomerance estava usando a letra L {\displaystyle L} (ou minúscula l {\displaystyle l} ) neste trabalho e em trabalhos anteriores para fórmulas que envolviam muitos logaritmos.

A fórmula acima envolvendo dois parâmetros foi introduzida por Arjen Lenstra e Hendrik Lenstra em seu artigo sobre "algoritmos na teoria dos números".[3] Foi introduzido na análise de um algoritmo de logaritmo discreto de Coppersmith. Esta é a forma mais comumente usada na literatura hoje.

O manual de criptografia aplicada define a notação L com um O {\displaystyle O} grande em torno da fórmula apresentada neste artigo.[4] Esta não é a definição padrão. O O {\displaystyle O} grande sugere que o tempo de execução é um limite superior. No entanto, para os algoritmos de fatoração de inteiros e logaritmos discretos para os quais a notação L é comumente usada, o tempo de execução não é um limite superior, portanto, essa definição não é preferida.

Referências

  1. Hendrik W. Lenstra Jr. e Carl Pomerance, "Teste de primalidade com períodos gaussianoss", preprint, 2011, http://www.math.dartmouth.edu/~carlp/aks041411.pdf.
  2. Carl Pomerance, "Análise e comparação de alguns algoritmos de fatoração inteira", em métodos computacionais na teoria dos números mathematisch centrum, parte 1, páginas 89 à 139, 1982, http://www.math.dartmouth.edu/~carlp/PDF/analysiscomparison.pdf (em inglês).
  3. Arjen K. Lenstra e Hendrik W. Lenstra, Jr, "Algoritmos na teoria dos números", no manual de ciência da computação teórica (volume A): Algoritmos e complexidade, 1991 (em inglês).
  4. Alfred J. Menezes, Paul C. van Oorschot e Scott A. Vanstone. Manual de criptografia aplicada. CRC Press, 1996. ISBN 0-8493-8523-7. http://www.cacr.math.uwaterloo.ca/hac/ (em inglês).