Respostas:
Usando a transformação rápida de Fourier, as multiplicações nos números de bits de podem ser feitas no tempo (onde o til significa que estamos ignorando os fatores polilogarítmicos). Ao quadrado repetido, podemos calcular com multiplicações, e cada multiplicação envolve nenhum número maior que , que possui aproximadamente bits. Portanto, a quantidade total de tempo necessária é .˜ O ( k ) n n 2 O ( log n ) n n 2 n 2 log 2 n ˜ O ( n 2 ( log n ) 2 ) = ˜ O ( n 2 )
Editado em resposta a comentários O tempo para calcular pode ser decomposto no tempo necessário para calcular f 1 ( n ) = n 2 e no tempo necessário para executar n f 1 ( n ) . Assumirei que multiplicar um número de m bits por um número de n bits leva exatamente m n tempo pelo método do livro escolar; adições, etc. são de tempo constante. Como resultado, a computação n 2 leva o log 2tempo.
Suponha que usamos exponenciação binária para calcular . A exponenciação binária realiza dois tipos de operações na computação de : quadratura do produto atual e multiplicação do produto atual por n , dependendo se o bit atual na expansão binária de n 2 é 0 ou 1. No pior caso, n 2 é uma potência de dois, de modo que a exponenciação binária esquadria repetidamente seu produto atual até chegar à resposta. Observe que n 2 tem m ′ = ⌈ 2 log 2 ( n ) ⌉f ( n )bits, de modo que o número desses quadrados seja . Este é o caso que analisamos mais adiante.
O primeiro quadrado leva tempo, resultando em um produto o 1 = 2 log 2 ( n ) -bit. O segundo quadrado recebe dois números de 1 o bit e é executado em t 2 = o 2 1 vez, resultando em um produto de o 2 = 2 o 1 bits. Continuando, a i- ésima etapa leva t i = 4 i - 1 logtempo e emite umoi=2ilog2(N)produto de bits. Esse processo para nam-ésima etapa; como resultado, leva tempo
.
Quando o custo quadrático inicial é incluído, achamos que precisamos de tempo no máximo
Nota