Recorrência


8

Nota: isto é das notas de JeffE's Algorithms on Recorrences, página 5.

(1) Então, definimos a recorrênciaT(n)=nT(n)+nsem nenhum estojo de base. Agora entendo que, para a maioria das recorrências, já que estamos procurando limites assintóticos, o caso base não importa. Mas, neste caso, nem vejo onde poderíamos definir o caso base. Existe algum número que é garantido que atingimos, pois continuamos criando raízes quadradas a partir de qualquer número inteiroT(n)=a para n<b, para alguns reais a, b?

(2) Na página 7, Erickson entende que o número de camadas na árvore de recursão L satisfarán2L=2. De onde isso vem? Eu não faço ideia. Vejo que o número de folhas na árvore deve somar(n)(n)=n, mas não tenho ideia para onde ir a partir daí.

Qualquer ajuda é apreciada!

Notas que estou vendo: http://jeffe.cs.illinois.edu/teaching/algorithms/notes/99-recurrences.pdf

Respostas:


7

Você realmente deveria estar fazendo uma terceira pergunta: o que acontece se nnão é um quadrado perfeito. A resposta a esta pergunta é que a recorrência real deve terT(n) ou T(n) ao invés de T(n), embora na análise consideraremos apenas entradas que são quadrados "recursivos".

Em relação à sua primeira pergunta, pode haver mais de um caso base. Por exemplo, talvezT(n)=1 para todos n100. Você está garantido que acabará atingindo esse gabinete base. Nesse caso, como na maioria dos casos, a forma exata do caso base não afeta os grandes assintóticos Theta (mas afeta a constante oculta).

Finalmente, com relação à sua segunda pergunta, suponha que seu caso base especifique T(n) para nC. A árvore de recursão (que é uma interpretação específica de alguns recursos da recorrência) tem a seguinte forma:

  • A raiz é uma instância de tamanho n.
  • A raiz tem n filhos que são instâncias de tamanho n.
  • Cada nó na profundidade 1 possui n=n1/4 filhos que são instâncias de tamanho n=n1/8.
  • De um modo mais geral, um nó em profundidade d é uma instância de tamanho n1/2d. Você pode provar isso por indução, verificando o casod=0 (Onde n1/2d=n) e cálculo n1/2d=n1/2d+1.

A recursão termina quando a instância tem tamanho no máximo C, e isso acontece quando n1/2dC. No momento em que isso acontece, temosn1/2d1>C (assumindo n>C), e entao C<n1/2dC. Tomando o logaritmo,12logC<logn2d<logC e entao logn2d=Θ(1)implicando 2d=Θ(logn). Nos podemos concluir quedloglogn. Este é o número de camadas na árvore. Jeff usaC=2, que é como ele obtém sua fórmula específica.


4

Respondendo à sua primeira pergunta. Como alternativa ao uso do limite superior e do limite inferior para obter um caso base, uma opção é que você possa assumir a forma den.

Tomemos, por exemplo, a recursão da fusão:

T(n)=2cT(n2)+cn

Claramente, a maioria nnão será dividido uniformemente em números inteiros. É então comum assumir quen é da forma:

n=2kkN

Isso implica que todo n é um poder positivo de 2, resolvendo assim nosso caso base sempre para 1. Alternativamente, poderíamos fazer o caso basec ao invés de 1 assumindo n é da forma:

n=c2kkN,cN+

Podemos aplicar isso à nossa recorrência:

T(n)=nT(n)+n

Presumir n é da forma:

n=c2kkN,cN+
Então o caso base sempre será resolvido para uma constante c.

Agora, se você puder provar isso sob essa suposição, poderá fazer uma prova para nvalores que não possuem esse formulário. Uma abordagem seria tentar limitá-la à próxima mais alta (ou mais baixa)nque faz ter essa forma.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.