Resolvendo usando o teorema do mestre

8

Introduction to Algorithms , 3rd edition (p.95) tem um exemplo de como resolver a recorrência

T(n)=3T(n4)+nlog(n)

aplicando o Teorema Mestre.

Estou muito confuso com a forma como é feito. Então, primeiro passo é comparar com .a=3,b=4,f(n)=nlog(n)
nregistrobuma=nregistro43=O(n0,793)f(n)

Não tenho idéia de como eles compararam isso. O livro explica:

f(n)=Ω(nregistro43+ϵ) , onde , o caso 3 se aplica se pudermos mostrar que a condição de regularidade é válida paraϵ0,2f(n).

Seguido por:

Para n suficientemente grande, temos o seguinte:umaf(nb)=3(n4)registro(n5)(34)nregistron=cf(n) for c=34.

De onde veio ?3(n4)

nova impressão
fonte

Respostas:

11

Se nossa recorrência assumir a forma , para usar o "terceiro caso" do método Master, devemos ter o seguinte:T(n)=umaT(n/b)+f(n)

f(n)=Ω(nregistrobuma+ϵ) para alguns e se para alguma constante e todos suficientemente grandes , entãoϵ>0 0umaf(n/b)cf(n)c<1 1nT(n)=Θ(f(n))

Nossa recorrência é definida como

T(n)=3T(n/4)+nregistron.

Por definição, temos .a=3,b=4,f(n)=nlogn

Agora precisamos mostrar que é polinomialmente maior que . Essa é a parte " " acima. Definir consegue isso. A razão é que e .f(n)nlogbaf(n)=Ω(nlogba+ϵ)ϵ0.2log430.793f(n)=Ω(n0.793+ϵ)

Nos resta mostrar que satisfaz a condição de regularidade. Essa é a " para alguma parte constante e todas as partes suficientemente grandes ".f(n)af(n/b)cf(n)c<1n

Simplesmente inserimos nossos valores de para obter:Tudo o que fizemos foi pegar o " " em e conectar " ".a,b

af(n/b)=3(n/4)log(n/4).
nf(n)n/4

Para facilitar a visualização, deixe e observe que . Trocando com , temos onde .k=n/4af(k)=aklogkkn/4

3(n/4)log(n/4)(3/4)nlogn=cf(n)
c=3/4

Isso termina nossos requisitos necessários e temos que .T(n)=Θ(nlogn)

Nicholas Mancuso
fonte
11
Obrigado pela resposta detalhada. Então, é polinomialmente que ? Provavelmente eu não entendi o significado de "polinomialmente"n0,793n1 1registron
newprint
11
O polinômio nesse caso é . n1 1-0,793=n0,217
JeffE
@newprint Polinomialmente maior significa apenas que a diferença entre os dois é pelo menos uma potência (possivelmente fracionária) de , e não uma função menor, como . Especificamente, é exatamente a condição para o "terceiro caso", que . É esse fator extra que o torna polinomialmente maior. E, como JeffE apontou, neste caso, . n(registron)f(n)=Ω(nregistrobnnϵ)nϵϵ=.217
Joe
Poderíamos ter escolhido ? Tanto quanto eu sei que já é , por que precisamos adicionar ? ϵ=0,00000001f(n)Ω(n0,793)0,2
Yos
O Omega grande não é um limite inferior no tempo de execução, de modo que deveria ser "assintotocialmente igual ou maior que" em vez de "é polinomialmente maior que .."?
mLstudent33