Complexidade da computação

10

Qual é a complexidade da computação ?nn2,nN

Rafael
fonte
2
O que você tentou? Qual máquina e modelo de custo você assume?
Raphael

Respostas:

12

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 )kO~(k)nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)

Micah
fonte
3

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 2f(n)=nn2f1(n)=n2nf1(n)mnmnn2tempo.log22(n)

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 )f(n)f(n)nn2n2n2m=2log2(n)bits, de modo que o número desses quadrados seja . Este é o caso que analisamos mais adiante.m=m1

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 logt1=log22(n)o1=2log2(n)o1t2=o12o2=2o1itempo e emite umoi=2ilog2(N)produto de bits. Esse processo para nam-ésima etapa; como resultado, leva tempoti=4i1log22noi=2ilog2(n)m

. Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n

Quando o custo quadrático inicial é incluído, achamos que precisamos de tempo no máximo

Texp+log22n

Nota

  • Omiti alguns pisos e tetos nos cálculos, esperando que eles não afetassem materialmente a resposta.
  • Omiti deliberadamente uma análise baseada em em favor de um limite superior exato, apenas para ser rigoroso. O
  • O raciocínio acima também deixa claro por que minha análise anterior foi falha. O notação foi utilizado de uma forma solta rápido-e-e-lo convenientemente omitido constantes de modo que, por exemplo, Σ t i mágica tornou-se O ( log n ) . OtiO(logn)
  • As multiplicações podem ser sempre aceleradas pela FFT e outros métodos.
PKG
fonte
11
Como você obteve a complexidade para o cálculo de n 2 ? O(1)n2
4
Eu vou dizer que a multiplicação de dois números de bits leva tempo O ( log n ) em vez de tempo O ( 1 ) , você precisa entender isso também no custo da exponenciação binária. nO(logn)O(1)
27612 Mark Dominus
2
n2log2nn2log2nO(logn)
Ponto justo, eu vou tomar nota
PKG
11
@ Thomasmasndrews: Isso depende da máquina e do modelo de custo. Não é incomum assumir um modelo de RAM com custo constante para adições.
Raphael