Pergunta

Estou tentando resolver esta recorrência

T (n)= 3 T (n / 2) + n lg n ..

Cheguei à solução de que ele pertence ao caso 2 do teorema de mestre, uma vez que n lg n é O (n ^ 2)

mas depois de consultar o manual da solução, percebi esta solução que eles têm

insira a descrição da imagem aqui

A solução diz que n lg n= O (n ^ (lg 3 - e)) para e entre 0 e 0,58

então isso significa que n lg n é O (n) .. está certo?Estou perdendo alguma coisa aqui?

Não é nlgn O (n ^ 2)?

Foi útil?

Solução

Isso explicará as coisas melhor insira a descrição da imagem aqui

Outras dicas

n*log(n) não é O(n^2).É conhecido como quase linear e cresce muito mais lentamente do que O(n^2).Na verdade, n*log(n) é menor que polinomial.

Em outras palavras:

O(n*log(n)) < O(n^k)

onde k > 1

No seu exemplo:

3*T(2n) -> O(n^1.585)

Uma vez que O(n^1.585) é polinomial e domina O(n*log(n)), o último termo diminui, então a complexidade final é apenas O(n^1.585).

n lg3 não é O (n).Ele supera O (n) ... Na verdade, qualquer expoente em n maior que 1 resulta em um tempo assintoticamente mais longo do que O (n).Uma vez que lg (3) é cerca de 1,58, contanto que você subtraia menos de 0,58 do expoente, ele é assintoticamente maior que O (n).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top